Fluxbox — пробуждение

Истинная свобода — самоограничение. © АниMатрица

Любая оконная среда есть средство запуска софта, эффективность и качество WM (или DE) определяется в первую очередь возможностями комфортной работы с соответствующими приложениями. Конечно, тут всё зависит от личных предпочтений, поэтому, нижеследующее есть исключительно ИМХО автора.

Навигация и ЛВС

Ну с консолью все ясно — лучше МС (Midnight Commander) не найти. А вот с графикой... Ну не нравятся мне однопанельные менеджеры типа thunar, а из двух панельных заслуживает внимания только krusader, но как и любое KDE приложение, запуск его во fluxbox происходит неторопливо и неповоротливо.

Собственно есть ещё Double Commander и BeeSoft Commander (список велик!) но их приходится долго и упорно настраивать, добиваясь приемлемого внешнего вида и функционала. А krusader умеет всё "из коробки".

Решением стало пересборка krusader 2.0 из исходников с оптимизацией под конкретный процессор. Фрагмент сборочного скрипта:

SLKCFLAGS="-O3 -march=presscott -mtune=presscott"
  cmake       -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS"       -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" 

Создание пакетов в OC MOPS Linux рассматривалось в статье «Слакварное ./configure» , поверьте функционал и удобство krusader (кроме всего прочего поддерерживаются протоколы ftp: smb: lan:) вас не разочаруют! Теперь имеем существенное ускорение времени загрузки и выполнения файловых операций. К тому же — данная программа умеет запускаться в лотке и может быть настроена на запуск только одной копии приложения (смотрите настройки!).

Из многочисленных фич и хинтов существующих для mc и его графического собрата, приведу один — но забойный! Сколько раз видел как люди заходят в папку (~100 файлов и начинают тупо скроллить пока не найдут нужный... Расслабьтесь. Нажмите Ctrl + s (для mc) и наберите первую букву имени нужного файла, дело пойдёт веселее! А в krusader достаточно просто зайти в папку и сразу же ввести нужную букву с клавиатуры, доки рулез!

В ~/.fluxbox/startup пишем:

krusader &

Чтобы избежать дублирования экземпляров программ лучше оформить так

pgrep krusader >> /dev/null || krusader &

В ~/.fluxbox/menu:

[exec] (krusader) {krusader}

В ~/.fluxbox/keys:

Mod4 K :Exec krusader

Получаем, krusader стартующий в трее (вместе с fluxbox) и вызываем его на рабочий стол либо мышью (через меню, а во fluxbox меню вызывается щелчком по любому месту десктопа), либо через клавиатурное сочетания, (в нашем случае WIN + K) Быстро, красиво, удобно!

Интернет и почта

Лично я использую сразу несколько браузеров. В ЛВС это firefox. Пересборка и тут даёт неплохие результаты но поскольку прога «тяжёлая» (размер исходников ~ 50MB), то это на любителя.

Команда ниже позволит несколько ускорить работу браузера:

for f in ~/.mozilla/firefox/*/*.sqlite; do
  sqlite3 $f 'VACUUM; REINDEX;';
done

Если скачать расширение Firetray и стартовать в лотке, то будет совсем хорошо. Тоже самое я делаю с почтовым клиентом Thunderbird. Методика старта при загрузке и назначения клавиатурных сочетаний — аналогично. В интернет в использую оперу, исходники этой замечательной программы, увы, недоступны. Добавить огоньку можно запуская её командой - opera -nomail, если конечно вы не используете встроенный в этот браузер почтовым клиент.

Дополнительно отметим, что fluxbox умеет группировать окна, а также запускать их на заданном рабочем столе, с нужными размерами и расположением. Это задаётся через ~/.fluxbox/apps:

[group]
  [app] (name=thunderbird) (class=Thunderbird)
  [app] (name=opera) (class=Opera) 
  [app] (name=firefox) (class=Firefox)
  [Dimensions]  {1168 994}
  [Position]    (UPPERLEFT) {0 0}
  [Deco]    {NORMAL}
  [Close]   {yes}
  [Alpha]   {255 201}
[end]

Теперь оба браузера (и почтовый клиент), будут группироваться в единый таб, что достаточно удобно. Переключение между табами можно задать своё (~/.fluxbox/keys)

Мультимедиа

С аудио приложениями всё прекрасно, есть консольный mocp, или гламурный qmmp, на который существует огромное количество скинов. А вот с видео... Попытка посмотреть некий DVD-DL диск имеющий 93 (sic!) главы закончилась неудачей. Перепробовал всё имеющиеся в системе плееры, безрезультатно. Изумленный я написал на форум MOPSа , где меня первым делом спросили как называется кино, (дабы не покупать его), а также высказали предположение, что причиной является именно большое кол-во глав.

А чего этот же диск на этом же железе в ОС Windows нормально воспроизводится — Патрег его знает! Добро б на DVD-DL выходили бы только избранные места из переписки Клаудии Собчак и Вишнавантана Тимати, так там же и нужные вещи бывают! Стало ясно , что надо брать дело в свои руки.

Решением стал vlc 0.9.8a (любимый ранее кафеин разочаровал задумчивым стартом, иные видеопроигрыватели также не глянулись (dvd-dl никто из них так и не показал))

Вы думаете я решил не маяться с пересборкой и просто скачал готовый пакет с репы MOPSa? Да, но скачанный от туда плеер мало что не воспроизводил звук с *.VOD, на показывал HD видео, он еще и крашился от малейшего изменения настроек.

Изумленный я скачал его из реп Slackware 12, но лучше не стало. Короче, я его пересобрал, пришлось разобраться с дюжиной кодеков, кое что собрать с нуля, или просто пресобрать что посвежее. Зато теперь имею прогу которая показывает все что у меня есть, стартует быстро, работает качественно, fluxbox-way, что ещё скажешь.

Монтирование носителей

Вообще-то я долго считал, что hal мне не нужен, и монтировал носители, собственными скриптами. Увы прогресс не стоит на месте, мало того, что появились mp3 плееры, usb-HDD и usb-DVD. В обшем я наивно считал , что hal и d-bus мне помогут , ага . Во первых оказалось, что hal монтирует носители, руководствуясь не заданными мной правилами (*.fdi) а неизвестно чем , во вторых что он не умеет монтировать NTFS … Собственно проблема (добавить hal свои опции монтирования) уже известна вот здесь предлагается и решение. Но увы, чем-то мне оно не понравилось. Недолгие поиски привели к использованию демона halevt, его особенности

  • Монтирует как и в иксах так и в консоли
  • Может быть настроен отдельно для каждого пользователя.
  • Позволяет задать опции, точки монтирования, выполняемые перед (после ,вместо) монтированием действия и много чего еще.

Фрагмент конфига /usr/local/etc/halevt.xml:

<halevt:Device match="&MOUNTABLE; &amp;hal.volume.fstype=vfat">       
  <halevt:OnInit exec="halevt-mount -u $hal.udi$ -o quiet , -o flush"/>
  <halevt:Insertion exec="halevt-mount -u $hal.udi$ -o quiet , -o flush"/>
</halevt:Device>
<halevt:Device match="MOUNTABLE" hal.volume.fstype=ntfs-3g">
  <halevt:OnInit exec="halevt-mount -u $hal.udi$ -o quiet"/>
  <halevt:Insertion exec="halevt-mount -u $hal.udi$ -o quiet"/>
</halevt:Device>

Нетрудно приделать и отображение сообщений о присоединенных устойствах :

<halevt:Device match="hal.block.device &amp; hal.block.is_volume = true &amp; hal.volume.mount_point">
  <halevt:Property name="hal.volume.is_mounted">
  <halevt:Action value="true" exec="halevt-mount -s"/>
  <halevt:Action value="true" exec="notify-send -i &quot;/usr/share/icons/oxygen/48x48/devices/media-optical-audio.png&quot; &quot;$hal.volume.fstype$ &quot;&quot;$hal.volume.fsversion$&quot;&quot; USB диск смонтирован в&quot; $hal.volume.mount_point$;"/> 
  </halevt:Property>
</halevt:Device>

А также выпоняемые с устройством действия :

<halevt:Device match="hal.volume.disc.is_videodvd = true">
  <halevt:Insertion exec="vlc dvd:///dev/sr0"/>
</halevt:Device> 

Меня напрягало, что в Windows (да в Linux если использовать thunar) попытка отмонтировать занятое устройство вызыват сообщение "Устройство занято попробуйте позже", но без указания конкретного приложения, занявшего девайс. Нижеследующий скрипт решает эту проблему:

#!/bin/sh
# Халевт записывает устройства ( и добавляет записи о точках монтирования в  ~/.halevt-mount/uditab ,
# поскольку (от)монтирование
# может быть выполнено не только халевт но и другими средствами 
# (например из консоли), полезно "синхронизировать базу"
halevt-mount -s
# Эта конструкция встретится дважды - оформим как функцию .
pro()
{
  grep "media" ~/.halevt-mount/uditab | cut -d: -f 2-  > ~/.halevt-mount/ze
}

pro

# получим адрес (/dev/XXX) устройства
if [ -e ~/.halevt-mount/uditab ]; then
  if [ -s ~/.halevt-mount/ze ]; then
    halevt-umount -a
    # Если устройство существует - отмонтируем - если нет - известим юзера
    sleep 1.5
    pro
    if [ -s ~/.halevt-mount/ze ]; then
      st=$(cat ~/.halevt-mount/ze  | cut -d : -f 1)
      ss=$(lsof $st  | cut -d " " -f -2)
      # Выясняем кто занял устройство
      notify-send "Устройство занято приложением"  " <b>$ss</b> попробуйте позже "
    else
      st=$(cut -d : -f 2  ~/.halevt-mount/uditab)
      notify-send "Можно извлечь" "  <b>$st</b> из компа "
    fi
  else
    notify-send "Смнотированных дисков нет!"
  fi
else
     notify-send "Флеш диски не найдены "
fi     

Tеперь присоединение флешки сопровождается сообщением от том, какую фс она использует, куда она смонтирована, при этом вызывается mc (показывая имеющиеся файлы), при отмонтировании также выводится сообщение об успехе операции, или уведомление, что такое то приложение мешает сделать это. Лепота!

Напомню что приведённый скрипт также можно повесить на горячую клавишу или приписать в меню ( для удобства вызова). Ситуация с NTFS также решена уже , соответствующие правила hal можно взять например здесь.

Игры

Ну какой же русский не любит быстрой езды? Описания запуска под wine Need For Speed и GtiRasing оставим более продвинутым камрадам :-P заметим только , что наилучшая производительность и стабильность достигается при запуске игр в отдельной сессии Х-ов например так

В ~/.fluxbox/menu пишем:

[exec]   (GTI Racing) {startx /home/den/Скрипты/Script/GtiRacing -- :1}

cd /home/den/.wine/drive_c/'Program Files'/'GTI Racing'
wine GTIRacing.exe

Напоследок скажу - из многих WM и DE перепробованых мною, fluxbox оказался самым простым и удобным. Ну не знаю почему авторы некотрых из них (не будем тыкать пальцем) так любят интерфейс WIN 95, мне он кажется просто неудачным. Не понимаю и моды писать конфиги в xml или (Сохрани Создатель!) в виде win подобного реестра...

Кстати, в других оконных средах мне так и не удалось запускать в при старте 14 (А я совершенно не вижу почему бы благородному дону...) разных программ, и чтоб ничего не глючило и не тормозило. А во fluxbox я еще и 2 копии ChessMaster 9000 запускаю, + почту + музыку + все что взбредёт в голову. Повторить же этот подвиг под каким нибуть awesome до сей поры не удавалась , увы. Fluxbox для меня сочетание молненосной быстроты и невообразимой мощи, кажется нечего лучшего просто нет ...

Продолжение вероятно