8 сентября 2011 г.

SnapFly — меню из трея или в любом месте по клавише

Утилита, подобная описанной в прошлом посте — SnapFly. Исходники и deb-пакеты можно скачать со страницы проекта, а для ArchLinux есть пакет в AUR'е. Тоже открывает меню приложений либо по клавиатурному сочетанию, либо по щелчку на значке в трее. В чём-то лучше, в чём-то хуже.
Во-первых, внешний вид:

Для открытия категории, нужно по ней щёлкнуть (правда, это исправляется настройками), а для перемещения внутри категории часто необходимо проматывать список в небольшом окошке (а вот это существенное неудобство по сравнению с обычным выпадающем во весь рост меню).

Запуск программы осуществляется командой snapfly. При этом появляется значок в трее. А вот чтобы меню открывалось рядом с курсором, используется команда snapfly-show, причём сама программа при этом должна быть запущена, как я поняла.
То есть при желании использовать, в любом случае надо прописать snapfly в автозапуск (а иконку из трея, если не нужна, убирают другим образом), а вот на горячие клавиши привязывают именно snapfly-show.
Удачнее предыдущей эта программа за счёт большей возможности настройки. Причём подробно написан как man программы, так и комментарии в конфигурационном файле.
По-умолчанию файл конфигурации — ~/.config/snapfly/config. Можно написать и другой, и для запуска меню с прописаными там настройками использовать команду snapfly -c config_file.
Конфиг состоит из списка строк вида параметр=значение. Строки, начинающиеся с символа решётки #, не принимаются во внимание (закомментированы). В файле содержатся следующие параметры:

  • terminal — тут прописывается путь к эмулятору терминала, который предполагается использовать для запуска консольных программ
  • systray=true — отображение иконки в трее (то есть если предполагается открывать меню только по горячим клавишам, можно прописать false)
  • rounded=4 — скругление углов
  • menu_width=430 — ширина окна в пикселах
  • bg_color — цвет фона меню
  • border_color — цвет рамки меню
  • hide_list — список для исключения определённых пунктов (попадающих под прописанную категорию) из меню, например GNOME,KDE,LXDE,ROX,Old
  • category_click=true — переход по категориям осуществляется только при щелчке мыши, но при значении false категории будут открываться при зависании над ними курсора
  • favorites=false — отображение "избранных" приложений (браузер, почтовый клиент, эмулятор терминала), заданных в виде переменных среды
  • desktop_dirs — тут пишется список путей, по которым ищутся *.desktop-файлы, формирующие меню, если параметр не определён, то берётся список по-умолчанию (он изначально в файле прописан в закомментированной строчке)
Если в какой-либо строке будет ошибка, то она просто будет проигнорирована, а значение будет использовано дефолтное.

Кроме того, данная программа позволяет создавать в меню собственные категории, а также принудительно исключать определённые пункты из меню.
Пользовательские категории задаются в файле ~/.config/snapfly/usermenu. Синтаксис тоже очень простой и подсказка есть в самом файле.

@Название категории##/путь к файлу иконки для категории

Следующие строки описывают пункты внутри категории:
/путь к файлу запуска программы##/путь к иконке для программы##Название пункта##Описание пукта

Всё довольно просто, а так выглядит категория для windows-программ с двумя прописанными пунктами (вместо полного пути к иконке можно писать просто её название для корректного поведения при смене темы, например):
@Wine##wine
wine /home/opossum/.wine/drive_c/Program\ Files/World\ of\ Warcraft/Wow.exe -opengl##/home/opossum/.local/share/icons/hicolor/48x48/apps/0B22_Launcher.0.png##World of Warcraft##MMORPG World of Warcraft
wine /home/opossum/.wine/drive_c/Program\ Files\ \(x86\)/TagScanner/Tagscan.exe##/home/opossum/.local/share/icons/hicolor/48x48/apps/6A71_Tagscan.0.png##Tagscan##id3tags-editor


Что касается исключения определённых программ, то это делается с помощью файла или папки ~/.config/snapfly/blacklist. В случае, если это папка, туда просто можно копировать или создавать символьные ссылки на соответствующие *.desktop-файлы. А в файл вписываются их имена каждый на своей строчке.

Теперь что касается минусов (вроде программа и продвинутее чем xmenud, а претензий к ней больше):

  • Очень жаль, что нельзя изменить высоту меню (только с помощью создания пользовательских категорий), при том что ширина меняется. При этом сжать пункты меню тоже нельзя, а они довольно размашистые по высоте. Это всё к неудобству прокрутки длинного списка.
  • Странный параметр bg_color — он не меняет фон правого поля со списком программ или цвет вкладок с названиями категорий, он меняет то, что под ними — видно малюсенькие треугольнички в месте скругления плашек с категориями. Сомнительной полезности фича.
  • Не появляется иконка в трее, точнее появляется, но страшненькая, типа значок для не найденной иконки. На скриншотах она другая, поэтому, возможно, проблема исключительно у меня.
  • Очень неудобно реализовано добавление пунктов в пользовательские категории — очень жаль, что нельзя просто вписать список *.desktop-файлов, а не писать для каждого и файл запуска и иконку и название с описанием, ведь в файлах этих всё есть уже, они для этого и нужны.
  • Ну и наконец, самый на мой взгляд неприятный и серьёзный недочёт — некорректная работа с *.desktop-файлами: если программа находит два одноимённых файла в папках ~/.local/share/applications/ и в /usr/share/applications/, она помещает в меню их оба. Другие подобные программы в таком случае берут файл из домашней директории, а общий файл игнорируют, и, думаю, так и должно быть. Иначе смысл существования директории пользователя с тем же функционалом теряется.
А так программка хорошая. Я просто занудствую и привиредничаю, а если такие глупости не волнуют, то ей вполне хорошо пользоваться.


6 комментариев:

  1. А если запилить *.desktop файл с командой snapfly-show, и скормить лаунчеру tint2..

    ОтветитьУдалить
  2. гы, очень мило. Оно ухитряется появляться под окнами. Но быстрее, да.

    ОтветитьУдалить
  3. офигеть. у меня под окнами не получалось, правда.

    ОтветитьУдалить
  4. Debasher комментирует...
    А если запилить *.desktop файл с командой snapfly-show, и скормить лаунчеру tint2..
    cделал то же самое только с cardapio :)

    ОтветитьУдалить
  5. Вот сегодня только переустановился и вспомнил что тут есть много про меню и панели, пришел посмотреть и почитать. и тут осенило для openbox лучше меню на хот кеях чем

    <keybind key="W-1">
    <action name="ShowMenu"><menu>root-menu</menu></action>
    </keybind>
    <keybind key="W-2">
    <action name="ShowMenu"><menu>client-list-combined-menu</menu></action>
    </keybind>

    и не придумать.

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

    ОтветитьУдалить