xmonad
Использование дополнительных кнопок клавиатуры в xmonad.
Имея клавиатуру с 28 дополнительными клавишами, захотелось их задействовать в xmonad.
Что есть:
Gentoo
dev-lang/ghc-6.10.4-r1 dev-haskell/x11-1.4.6.1 x11-wm/xmonad-0.9
Смотрим имеющиеся клавиши:
$ xev | grep keysymxev все клавиши показывает, xmonad о них не знает, однако в dev-haskell/x11 они
присутствуют, поэтому импортируем x11 в конфиг самостоятельно:
Перемещение указателя мышки в центр активного окна в xmonad
Нашел для себя удобным что бы при переключении в окно курсор мышки скакал в его центр.
Удобно если мышка используется по большей части для выделения текста Ж:-)
Делается это с помощью этого расширения.
Как по линке и написано достаточно добавить одну строчку, и исправить еще одну
import XMonad.Actions.UpdatePointer ... logHook = dynamicLog >> updatePointer (Relative 0.5 0.5)
xmonad + mplayer в полноэкранном режиме без рамки
Каждый новичек в xmonad сталкивается с такой проблемкой: mplayer в режиме full screen прорисовывается с рамками, что нежелательно для комфортного просмотра фильмов. Вот одно из возможных решений:
import XMonad.Layout.NoBorders ... myLayout = ewmhDesktopsLayout $ smartBorders $ avoidStruts (tall ||| Mirror tall ||| Full) where tall = Tall nmaster delta ratio nmaster = 1 ratio = 1/2 delta = 2/100 ... main = do din <- spawnPipe myStatusBar xmonad $ defaultConfig { ... -- hooks, layouts layoutHook = myLayout, manageHook = myManageHook, -- and here is a little Magic for using wmctrl logHook = ewmhDesktopsLogHook >> myLogHook din }
Украдено отсюда: http://haskell.org/haskellwiki/Xmonad/Frequently_asked_questions#Removing_the_borders_around_mplayer
xmonad + Dzen + Task List Menu
Простенькая переключалка между открытыми окнами в xmonad
- Сначала воспользуемся предыдущим советом, и сделаем поддержку wmctrl в xmonad
- Далее:
(echo "Task List"; wmctrl -l)| \ dzen2 -m -p -x $WHEREX -w $WIDTH -fg $FG -bg $BG -l 15 -fn $FONT \ -e 'button1=menuprint;button3=exit;entertitle=uncollapse;leaveslave=collapse' | \ awk '{system("wmctrl -s " $2)}'
После выполнения вышеприведенной команды в dzen статус баре появляется "Task List".
Меню открывается при наведении мышкой на "Task List".
Правая кнопка мышки убирает меню со статусбара.
Переменные WHEREX, WIDTH, FG, BG, FONT инициализировать по личным предпочтениям.
В атачменте мой скрипт, который, подвешанный на хоткей, будет работать как включатель/выключатель Task List меню.
P.S.
xmonad-0.7 + dynamicLogWithPP c поддержкой wmctrl
С нулевым знанием языка haskell, скитаясь по докам и форумам, методом проб и ошибок, долгое время никак не мог разместить dynamicLogWithPP с ewmhDesktopsLogHook в LogHook.
ewmhDesktopsLogHook требуетя для поддержки wmctrl.
Наконец-то, с помощью вышеупомятуго метода таки получилось:
Магия в этих строчках конфигурационного файла:
import XMonad.Hooks.EwmhDesktops ... myLayout = ewmhDesktopsLayout $ avoidStruts (tall ||| Mirror tall ||| Full) ... logHook = ewmhDesktopsLogHook >> myLogHook din ...
Весь конфиг в аттачменте.
В wmctrl на xmonad некоторые опции к сожалению нерабочие: например -a
Настройки xxkb для xmonad
Xxkb это легковесный и наиболее удобный перелючатель клавиатуры который я знаю Ж:-)
Вот собственно мой ~/.xxkbrc , который служил верой и правдой мне под fluxbox, и был немного адаптирован для xmonad.
Флажок xxkb в правом верхнем углу окна часто можно видеть на моих скриншотах. Например во fluxbox: раз, два , три . В xmonad: раз, два .
Основаня адаптация
! for non xmonad ! XXkb.controls.add_when_change: no XXkb.controls.add_when_change: yes
После чего xxkb вообще начал показывать свои иконки в xmonad Ж:-)
Так же изменено положение иконки на окнах, так как в xmonad у окон нет заголовков окон.
! for non xmonad !XXkb.button.geometry: 15x15-60+7 XXkb.button.geometry: 15x15-0+0
PS
Да у меня четыре расскладки клавиатуры Ж:-)
Перелючаются по CapsLock только две основные: английская (по умолчанию) и русская.
Но клацнув правой клавишей мышки по флажку на окне можно переключить еще украинскую и немецкую (под беларусским флажком Ж:-)
Для того что бы это все заработало нужно запустить
$ setxkbmap -layout 'us,ru,ua,de' -option 'grp:caps_toggle'или подправить соответствующую строчку в /etc/X11/xorg.conf
Конфиг будет работать и в случае если у вас только две или три расскладки клавиатуры.

