Записи с тэгом ‘HOWTO’

Управление рабочим столом с помощью Wii Remote

Вчера я стал счастливым обладателем игровой видеоприставки Nintendo Wii. Так как при этом я являюсь счастливым обладателем компьютера с Debian GNU/Linux, то мне конечно же захотелось сделать так же, как на этом видео-ролике :)

Вот что для этого необходимо:

  • Wii Remote (сама приставка не нужна!)
  • Debian GNU/Linux 4.0 (другой дистрибутив тоже подойдёт, но инструкции я привожу именно для Debian)
  • Две свечки (это такие штуки из воска, которые создают романтическую атмосферу). Они нужны в качестве источника IR излучения.

Нужно установить некоторые пакеты:

sudo aptitude bluez-utils python-bluez python-xlib
  1. Скачать “драйвер” для Wii Remote отсюда (есть SVN-репозитарий - https://svn.forthewiin.org/wmd/trunk). На самом деле это никакой не драйвер, т.к. с ядром он не взаимодействует. Это просто Python скрипт для обработки сигналов с Wii Remote
  2. “Пропатчить” файл /usr/share/python-support/python-xlib/Xlib/protocol/display.py (из пакета python-xlib). В нём нужно заменить:
    recv = self.socket.recv(4096)

    на

    recv = self.socket.recv(2048)

    Возможно, этот шаг можно пропустить. Я не знаю точно, для чего это нужно :)

  3. Выполнить команды:

    sudo modprobe uinput
    sudo chmod a+rwx /dev/input/uinput

    Без этого кнопки на Wiimote не работали.

  4. Теперь нужно определить адрес вашего Wiimote. Нажимаем одновременно кнопки 1 и 2 на Wiimote, при этом он на 30 секунд переходит в режим discovery. Выполняем команду:

    andrey@cornelius:~$ hcitool scan
    Scanning ...
            00:19:1D:73:30:69       Nintendo RVL-CNT-01
    

    Среди найденных устройств должен появится и Wiimote. В моём случае его адрес 00:19:1D:73:30:69

  5. Прописываем этот адрес в wmd/Config.py (параметр MY_WIIMOTE_ADDR)
  6. В том же файле отключаем ненужные модули:
    'DISABLE_PYLAB': 1,
    'DISABLE_PYGAME': 1,
    'DISABLE_PYOSD': 1,
  7. Зажигаем свечки :) и ставим их перед монитором на расстоянии 20-25 см. друг от друга
  8. Нажимаем одновременно кнопки 1 и 2 и запускаем WMD.py
  9. Если повезёт так же как мне, то будет работать :)
  10. Хвастаемся перед друзьями

Удачи!

Играем в приставочные игры под Linux

Лет десять назад (а может и больше), я с друзьями почти каждый день ходил к одному нашему однокласснику, у которого была игровая приставка Super Nintendo. Мы проводили часы пытаясь освоить многочисленные варианты combo-ударов в лучшем файтинге всех времён (по версии Cornelius Magazine) - Killer Instinct.

Оказывается, ощутить “инстинкт убийцы” можно и без помощи игровой консоли. Для этого нужно воспользоваться одной из приведённых ниже команд:

  • sudo ps -eo pid h | xargs kill -kill (не рекомендуется)
  • sudo aptitude install snes9x-x (рекомендуется)

Я воспользовался вторым вариантом и получил в своё распоряжение эмулятор игровой консоли Super Nintendo. Осталось только найти образ нужной игрушки (ROM). Для этого можно погуглить словом “rom”+название_игры. В случае с Killer Instinct нужный образ нашёлся очень быстро. Это оказался файл с расширением .smc размером ~4Mb.

Запускается игра так:

snes9x /path/to/rom

Gamepad

Чтобы полностью погрузится в приставочную атмосферу и я решил воспользовался USB Gamepad’ом фирмы Genius. Чтобы заставить его работать, я установил следущие пакеты:

sudo aptitude install joystick xserver-xorg-input-joystick

Теперь при подключении геймпада должно появиться устройство /dev/input/js0

Тут у меня возникла проблема: работали только кнопки, перемещение не работало. Поэтому я сделал следующее:

jscal /dev/input/js0

Эта программа попросила переместить джойстик в определённые положения по осям X/Y и таким образом откалибровала его (где при этом сохраняются настройки, я не понял). После этого перемещение заработало.

Чтобы играть с джойстиком, запускать игру нужно так:

snes9x -joydev1 /dev/input/js0 /path/to/rom

Второй джойстик можно подцепить через опцию -joydev2


Скриншот Killer Instinct

А вот и скриншот

Темы оформления GTK

На днях решил в очередной раз поменять тему оформления GTK на своём рабочем столе. Для этого отправился на www.gnome-look.org и www.xfce-look.org. Но там не нашёл ничего подходящего и решил попробовать сваять что-нибудь самостоятельно, используя одну из готовых тем. Ну и заодно разобраться более подробно, как вообще работает механизм тем оформления GTK, о чём сейчас вкратце расскажу.

В файле gtkrc (~/.themes/yourtheme/gtk-2.0/gtkrc) определяются стили, которые будут использоваться для отображения того или иного элемента. Описание стиля выглядит так:

style "name-of-style" [= "name-of-parent-style] {
 PROPERTY1 = VAL1
    PROPERTY2 = VAL2
    engine "name-of-engine" {
     ENGINE_PROPERTY1 = VAL3
     ENGINE_PROPERTY2 = VAL4
 }
}

Каждый стиль имеет имя ("name-of-style") и набор свойств (PROPERTY1,PROPERTY2). Свойства включают в себя определения цветов (напр. bg[SELECTED] = "#a3b8cc") и параметры элементов интерфеса (напр. GtkScrollbar::min_slider_length = 30). Также нужно, обратить внимание на свойства xthickness и ythickness, которые, если я правильно понимаю, аналогичны свойству padding в HTML.

Стиль может быть наследовать свойства другого стиля ("name-of-parent-style"). Кроме того, можно задать, какой движок GTK (см. ниже) нужно использован для этого стиля (engine "name-of-engine") и определить параметры этого движка (ENGINE_PROPERTY1, ENGINE_PROPERTY2)

Как правило, в сначала описывается стиль "theme-default", в котором определяются все основные параметры и движок, а оставшиеся стили наследуются от него.

Также необходимо указать к какому элементу какой стиль надо применить:

...
class "GtkWidget"      style "theme-default"
class "GtkButton"      style "theme-button"
class "GtkScale"       style "theme-range"
...

Движок темы (engine) определяет внешнид вид элементов интерфейса (widget), таких как кнопки, скроллбары, тулбары и т.д. Например в Ubuntu по умолчанию используется движок Ubuntulooks, а раньше использовался Clearlooks. Я использую движок под названием Murrine. Для этого движка существует утилита-конфигуратор под названием (угадайте с одного раза) Murrine Configurator. Это программка позволяет менять параметры движка в уже установленных темах (основанных на Murrine).

При создании темы очень полезна будет программка The Widget Factory - она представляет из себя окно, в котором собраны все (или почти все) GTK виджеты и позволяет менять тему офомление только внутри этого окна (то есть не затрагивая остальные программы).

Исчерпывающую информацию по созданию тем GTK можно найти здесь.

Напоследок маленькая плюшка для тех, кто использует Xfce. Добавьте в файл gtkrc следующий текст:

style "xfdesktop-icon-view" {
    XfdesktopIconView::label-alpha = 25

    base[NORMAL] = "#000000"
    base[SELECTED] = "#ffffff"
    base[ACTIVE] = "#ffffff"

    fg[NORMAL] = "#ffffff"
    fg[SELECTED] = "#ffffff"
    fg[ACTIVE] = "#ffffff"
}
widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"

и вы сможете управлять внешним видом подписей к значкам на рабочем столе.

← Обратно к настоящему