Ayao "Alqualos" Kuroyuki (ayao) wrote,
Ayao "Alqualos" Kuroyuki
ayao

FVWM

После долгих малоосмысленных действий наконец поставил себе FVWM ветки 2.5, нестабильной (на редкость стабильно работающей, однако).

Вот как это выглядит после входа:

Если очень присмотреться, можно увидеть в районе правого верхнего угла часы. Больше ничего не увидите, как ни смотрите. Отсюда мораль: место на экране используется по максимуму. Если над этим немного поразмыслить, то можно прийти к кощунственной мысли о том, что тут чего-то не хватает... Мысль, конечно, отчасти справедливая: не хватает таскбара. Что ж, придётся думать, зачем нам нужен таскбар и нужен ли он вообще.

На классическом таскбаре обычно располагаются в ряд следующие вещи: кнопка "Старт" (сатанистами обычно называемая "Пуск"), панель быстрого запуска, собственно таскбар, то есть панель задач, систрей (сатанистами называемый "областью системных уведомлений") и часы. Ну, часы и так есть. Давайте разберём остальное.

Вот что заменяет нам кнопку "Старт":

Вызывается это дело по историческим причинам сочетанием клавиш Ctrl+Esc, хотя в общем-то может вызываться любым другим сочетанием клавиш, а также мышиных кликов или жестов. Кроме того, оно же вызывается левым кликом по пустому рабочему столу. Мораль: кнопка "Старт" нам больше не нужна (если, конечно, мы в состоянии пользоваться клавиатурой - я в состоянии).

Панелью быстрого запуска я никогда практически не пользовался кроме как для запуска скринсейвера. Но это дело у меня уже давно вызывается Alt+`, так что тут даже думать не о чем.

Собственно таскбар заменяется вот чем:

Это дело выскакивает по Alt+Tab или по Ctrl+`. В первом случае оно ведёт себя примерно как в винде, исчезая после отпускания клавиши Alt. Во втором - более похоже на настоящий таскбар по вызову: никуда не пропадает до тех пор, пока кто-нибудь чего-нибудь не выберет либо кликом, либо нажатием клавиш 0-9, A-Z, что гораздо удобнее любого таскбара.

С систреем у меня вышла очень комическая история. Сначала я долго и упорно пытался найти ему замену, и ничего у меня не вышло. Затем я подумал о том, на кой он вообще нужен и понял, что главное его назначение - экономить место на таскбаре. Но поскольку таскбара как такового нет, а в этой его альтернативе места до фига (вертикальное расположение сказывается), то и экономить нечего. Остаётся, правда, второе назначение систрея, благодаря которому он и заслужил у сатанистов столь труднопроизносимое прозвище. Речь идёт о помещении в него каких-либо уведомлений. Но уведомления у меня все уже давно звуковые, так что нафиг. Хотя если очень хочется, то можно и подобие систрея где-нибудь рядом с часами сварганить, я думаю.

Итого получаем: максимум удобства и скоросте при минимальных затратах. Что касается затрат, кстати, то это дело загружается менее чем за секунду и занимает 7-8 мегабайт оперативной памяти. Что же касается удобства, то самое главное - практически любые функции можно исполнять как с помощью сочетаний клавиш, так и мышиными кликами или жестами. Также полностью настраивается внешний вид и поведение окон. К примеру, у меня окна Sylpheed, LogJam, Firefox, K3b и xterm автоматически максимизируются, а аська - занимает отведённое ей место.

Кроме того, решительно никаких проблем с русским и японским языками. Для отображения последнего в заголовке окна, правда, пришлось поставить шрифт Arial Unicode MS (по ходу дела списанный с 2000-х виндов ^_^).

В общем, всё это дело, как ни странно, работает и работает в точности так, как мне нужно. Заплатить за это пришлось вот этим:

ImagePath /usr/local/share/fvwm/images:$HOME/.fvwm
DefaultFont "xft:sans-serif:size=12:encoding=iso10646-1"

DestroyFunc StartFunction
AddToFunc StartFunction
+ I FvwmEvent

Key grave A M Exec exec xscreensaver-command -lock
Key F4 A M Close
Key Space A M Iconify
Key (xterm) N A CM Exec exec xterm
Key K A CM Exec exec change-kbd-layout

DestroyMenu "Start"
AddToMenu "Start"
+ "&Aзазерус%azazerus.png%" Exec exec azureus
+ "&Firefox%firefox.png%" Exec exec /usr/local/firefox/firefox
+ "&GQView%menu/image-viewer.xpm%" Exec exec gqview
+ "&K3b%/usr/local/kde/share/icons/crystalsvg/16x16/apps/k3b.png" Exec exec k3b
+ "L&icq%/usr/local/share/licq/qt-gui/icons.icq2/online.xpm" Exec exec licq
+ "Live&Journal%logjam.png" Exec exec logjam
+ "&Sylpheed%/usr/local/share/sylpheed/pixmaps/stuphead_app_icon.xpm%" Exec exec sylpheed
+ "&XMMS%/usr/local/kde/share/icons/crystalsvg/16x16/apps/xmms.png%" Exec exec xmms
+ "x&term%mini/window.xpm%" Exec exec xterm

Key Escape A C Popup "Start"
Mouse 1 R N Menu "Start"
Mouse 3 R N Menu MenuFvwmRoot

Stroke N74123 0 A M Close
Mouse 3 A M StrokeFunc

DestroyFunc DoubleIconify
AddToFunc DoubleIconify
+ D Iconify

Mouse 1 I N DoubleIconify

DeskTopSize 1x1
SnapAttraction 10 SameType Screen
Colorset 2 fg white, bg rgb:00/00/99
MenuStyle * Win
MenuStyle * TitleWarpOff
MenuStyle * ActiveColorset 2
Style * ClickToFocus
TitleStyle LeftJustified
TitleStyle -- Flat
BorderStyle -- Raised
Style * HandleWidth 4
Style * BorderWidth 4
Style * HilightColorset 2
Style * HilightBorderColorset 0
Style * DecorateTransient
Style * MiniIcon mini/window.xpm
Style xclock !Borders, !Handles, !Title, StaysOnTop, WindowListSkip, Sticky
Style licq Icon /usr/local/share/licq/qt-gui/icons.icq2/online.xpm
Style licq MiniIcon /usr/local/share/licq/qt-gui/icons.icq2/online.xpm
Style GQview MiniIcon menu/image-viewer.xpm
Style xmms !Borders, !Handles, !Title

DestroyFunc MyMaximize
AddToFunc MyMaximize
+ I ThisWindow (!Maximized) WindowStyle !Borders !Handles
+ I ThisWindow (Maximized) WindowStyle Borders Handles
+ I UpdateStyles
+ I Maximize
+ I Raise

DestroyFunc AutoMaximize
AddToFunc AutoMaximize
+ I ThisWindow (xterm) WindowStyle !Borders !Handles
+ I ThisWindow (Firefox-bin, "*Mozilla Firefox") WindowStyle !Borders !Handles
+ I ThisWindow (Sylpheed, "main_window|message_view") WindowStyle !Borders !Handles
+ I ThisWindow (licq, "MainWindow|*Message") WindowStyle !Borders !Handles
+ I ThisWindow (k3b, "*Kreator") WindowStyle !Borders !Handles
+ I ThisWindow (gqview) WindowStyle !Borders !Handles
+ I ThisWindow (logjam, "LogJam*|Friend*") WindowStyle !Borders !Handles
+ I UpdateStyles
+ I ThisWindow (xterm) Maximize
+ I ThisWindow (Firefox-bin, "*Mozilla Firefox") Maximize
+ I ThisWindow (Sylpheed, "main_window|message_view") Maximize
+ I ThisWindow (licq, "MainWindow") Move -0 +0
+ I ThisWindow (licq, "MainWindow") Maximize 0 100
+ I ThisWindow (licq, "*Message") Maximize
+ I ThisWindow (k3b, "*Kreator") Maximize
+ I ThisWindow (gqview) Maximize
+ I ThisWindow (logjam, "LogJam*|Friend*") Maximize
+ I Raise

*FvwmEvent: PassID
*FvwmEvent: add_window AutoMaximize

Style * MwmButtons
ButtonStyle 1 MiniIcon -- Flat
ButtonStyle 6 AllUp Pixmap button/win-window-iconify.xpm -- Flat
ButtonStyle 6 AllDown Pixmap button/win-window-iconify-pressed.xpm -- Flat
ButtonStyle All - Clear
ButtonStyle 4 - MwmDecorMax
ButtonStyle 4 AllUp Pixmap button/win-window-maximize.xpm -- Flat
ButtonStyle 4 AllDown Pixmap button/win-window-maximize-pressed.xpm -- Flat
ButtonStyle 4 ToggledActiveUp Pixmap button/win-window-restore.xpm -- Flat
ButtonStyle 4 ToggledActiveDown Pixmap button/win-window-restore-pressed.xpm -- Flat
ButtonStyle 4 ToggledInactive Pixmap button/win-window-restore.xpm -- Flat
ButtonStyle 2 AllUp Pixmap button/win-window-close.xpm -- Flat
ButtonStyle 2 AllDown Pixmap button/win-window-close-pressed.xpm -- Flat

DestroyFunc FuncFvwmRaiseLowerX
AddToFunc FuncFvwmRaiseLowerX
+ I Raise
+ M $0
+ D MyMaximize

Mouse 1         1       A       Nop
Mouse 1         2       A       Close
Mouse 2		2	A	All ($c) Close
Mouse 3         2       A       Destroy
Mouse 1         4       N       MyMaximize
Mouse 2         4       A       Maximize 0 100
Mouse 3         4       A       Maximize 100 0
Mouse 1		6    	A     	Iconify
Mouse 2		6    	A     	All ($c) Iconify On
Mouse 3         6       A       All ($c) WindowShade On

#------------------------------------------------------------------------------
# The famous Alt-tab binding
#------------------------------------------------------------------------------

DestroyFunc WindowListFunc
AddToFunc WindowListFunc
+ I Iconify off
+ I FlipFocus
+ I Raise

DestroyFunc my_dbltab2
AddToFunc   my_dbltab2
+ I WindowListFunc
DestroyFunc my_dbltab_prev
AddToFunc   my_dbltab_prev
+ I Prev my_dbltab2

Key Tab A M	WindowList Root c c CurrentAtEnd, NoGeometry, SelectOnRelease Alt_L my_dbltab_prev
Key grave A C	WindowList Root c c NoGeometry, SelectOnRelease, NoWarp, WarpOff


Теперь остаётся только иногда слегка подправлять этот файл по необходимости.

Пока заливал картинки, впечатлился междумордием ljplus.ru. "Ага", "Привет, мы тебя любим", "Вы уверены, что хотите удалить этот чудесный файл?", "У вас нет загруженных файлов в этой папке. Бывает. Однако, эту беду несложно исправить, загрузив файлы здесь" и всё такое...
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 7 comments