|
Программирование
On-line приложения
Почитать
Web-сервер Apache
Печать и форматирование
MySQL
Разные рецепты
Сборка/установка
Справки
Философия
Мой опыт
Скачать
Программы на Tcl/Tk (GUI)
Программы на Python/Tk (GUI)
Программы (CLI)
Help
Хобби
Фракталы
on-line
Язык для рисования фракталов
Гиперкуб
Теория относительности
Ампуллярии
Преподавание
Студенту/абитуриенту
Мой опыт
Автора!
|
Сборка evilwmevilwm — лучший оконный менеджерЗа десять лет использования X Window System я перепробовал множество оконных менеджеров. Под какими-то работал годами, какие-то просто попробовал на один зуб. И общее направление моей «эволюции» практически всегда шло к упрощению оформления рабочего стола. В конце концов, я фактически сделал свой собственный оконный менеджер. Сделан он из evilwm 0.99.25 (http://www.6809.org.uk/evilwm/). Привожу здесь две модификации: простую, и «продвинутую». Замечания относительно версии 1.0.0В июне 2007 года вышел evilwm 1.0.0. Я подготовил для него набор патчей, соответстующий «продвинутой» версии (см. ниже). evilwm-1.0.0.patch.tgz Патчи для простой модификации evilwmПатч для файла events.c: 128c128 < case KEY_LOWER: case KEY_ALTLOWER: --- > case KEY_LOWER: 130a131,133 > case KEY_RAISE: > XRaiseWindow(dpy, c->parent); > break; 139a143,145 > case KEY_MAXHEIG: > maximise_client(c, MAXIMISE_HORZ); > break; 141c147 < case KEY_FIX: --- > case KEY_FIX: case KEY_FIXA: 164,165d169 < case Button2: < sweep(c); break; 166a171,172 > sweep(c); break; > case Button2: Для файла keymap.h: 3a4,12 > /* девять цифровых кнопок -- движения и информация > альт-цифровая -- размер > право/лево -- переключение десктопов > вверх/вниз -- вверх/вниз > PgUp/PgDn -- растянуть вертикально/горизонтально > ins -- приклеить > end -- во весь экран > */ > 6,23c15,32 < #define KEY_TOPLEFT XK_y < #define KEY_TOPRIGHT XK_u < #define KEY_BOTTOMLEFT XK_b < #define KEY_BOTTOMRIGHT XK_n < #define KEY_LEFT XK_h < #define KEY_RIGHT XK_l < #define KEY_DOWN XK_j < #define KEY_UP XK_k < #define KEY_LOWER XK_Insert < #define KEY_ALTLOWER XK_KP_Insert < #define KEY_INFO XK_i < #define KEY_MAXVERT XK_equal < #define KEY_MAX XK_x < #ifdef VWM < # define KEY_FIX XK_f < # define KEY_PREVDESK XK_Left < # define KEY_NEXTDESK XK_Right < #endif --- > #define KEY_TOPLEFT XK_KP_Home > #define KEY_TOPRIGHT XK_KP_Page_Up > #define KEY_BOTTOMLEFT XK_KP_End > #define KEY_BOTTOMRIGHT XK_KP_Page_Down > #define KEY_LEFT XK_KP_Left > #define KEY_RIGHT XK_KP_Right > #define KEY_DOWN XK_KP_Down > #define KEY_UP XK_KP_Up > #define KEY_FIX XK_Insert > #define KEY_FIXA XK_KP_Insert > #define KEY_LOWER XK_Down > #define KEY_INFO XK_KP_Begin > #define KEY_RAISE XK_Up > #define KEY_MAX XK_End > #define KEY_MAXVERT XK_Page_Up > #define KEY_MAXHEIG XK_Page_Down > #define KEY_PREVDESK XK_Left > #define KEY_NEXTDESK XK_Right Для файла screen.c: 454c454,455 < KEY_LOWER, KEY_ALTLOWER, KEY_INFO, KEY_MAXVERT, KEY_MAX, --- > KEY_LOWER, KEY_RAISE, KEY_INFO, > KEY_MAX, KEY_MAXVERT, KEY_MAXHEIG, 456c457 < KEY_FIX, KEY_PREVDESK, KEY_NEXTDESK, --- > KEY_FIX, KEY_FIXA, KEY_PREVDESK, KEY_NEXTDESK, Накладываем патчи, и собираем.
Для запуска прописываем в /home/a/bin/evilwm \ -mask1 mod4 \ -mask2 mod4 \ -altmask alt \ -snap 10 \ -fg \#999900 -bg \#000000 -fc \#000000 & # ..другие команды После этого основной управляющей кнопкой становится кнопка с логотипом-окошком. Буду называть её win. Управление с клавиатуры (пользователям SithWM сочетания клавиш будут знакомы):
Используя клавиши на цифровой клавиатуре можно выполнить дополнительные операции:
Мышь:
Получается очень удобный оконный менеджер, которому не хватает только панели для запуска приложений (см. ниже). «Продвинутый» evilwmПоследний год я пользуюсь более «продвинутой» модификацией evilwm. Полный набор патчей можно забрать единым архивом evilwm-0.99.25.patch.tgz. Они накладываются сразу на несколько файлов одной командой: patch <evilwm-0.99.25.patch После этого, как всегда: make; make install Продвинутая версия отличается тем, что в ней 36 виртуальных
столов, они привязаны ко всем цифрам и ко всем буквам латинского
алфавита (удобно держать, скажем на столе «M» — почтового клиента,
на столе «W» — vnc-клиента с открытым Windows и так далее).
Стрелки переключают рабочие столы в том порядке, в каком расположены
клавиши на клавиатуре (если вам это не подходит, поправьте
массив Кроме того, на клавишу еnter запускается не xterm, а evilwm-xterm. Это может быть скрипт, который запустит для вас что угодно. Простая и удобная панелькаЯ написал вот такую простенькую панель на Tcl/Tk: #!/bin/sh
# the next line restarts using wish \
exec wish8.4 "$0" "$@"
set menu { {
{#ffffff} xterm xterm
{#8888ff} mc {xterm -e mc}
} {
{#ffff00} gimp gimp
{#999999} xmms xmms
} {
{#9999ff} FF firefox
{#9999ff} mail thunderbird
} }
set font {-*-verdana-bold-r-*-*-9-*-*-*-*-*-*-r}
proc next_time_step {} {
global time
set time [clock format [clock seconds] -format {%H:%M}]
after 1000 next_time_step
}
proc hide_all {} {
global bottons
foreach {n p} [eval concat $bottons] { grid forget $n }
}
proc show_panel {btn} {
global bottons
foreach {n p} [lindex $bottons $btn] {
grid $n -column $p -row 0 -sticky news
}
}
proc click {b} {
raise .
hide_all
show_panel $b
}
proc execute {cmd} {
if {[catch "exec $cmd {&}" err]} {
tk_messageBox -default ok -icon error -message $err \
-title error -type ok
}
}
proc menu2bottons {menu} {
global font
set bottons {}
set c 0
foreach {m} $menu {
set i 1
set b {}
foreach {clr lab cmd} $m {
set n [label .u$c -text $lab -fg $clr -bg {#000000} -font $font \
-padx 2 -pady 0 -anchor w -borderwidth 1 -relief raised]
bind $n <Button-1> [list execute $cmd]
lappend b $n $i
incr i
incr c
}
lappend bottons $b
}
return $bottons
}
set bottons [menu2bottons $menu]
set time {00:00}
set n [label .l -textvariable time -fg {#999999} -bg #000000 -font $font \
-padx 2 -pady 0 -anchor w -borderwidth 1 -relief raised]
bind $n <Button-1> {click 0}
bind $n <Button-2> {click 1}
bind $n <Button-3> {click 2}
grid $n -sticky news -column 0 -row 0
bind . <Control-q> {exit}
bind . <FocusOut> {hide_all}
wm title . {ctrl-panel}
wm transient .
wm resizable . 0 0
next_time_stepВ нераскрытом состоянии это просто кнопка с часами. При нажатии на кнопку, выезжает панель с кнопками для запуска различных приложений. На каждую из трёх кнопок мыши можно «повесить» своё меню. Меню настраиваются прямо в коде панели в первых строках. Формат очевиден: указывается цвет надписи, надпись на кнопке и приложение, ассоциированное с кнопкой. Обратите внимание на переменную Когда панель теряет фокус ввода — меню автоматически убирается. |
|
|
|