Допиливаем openbox (часть 2)

akorop
Так это ж одна из самых приятных фишек openbox - что на хоткеи можно навешать вызовы меню. Любых меню, а не только главного.
Всё верно, но есть несколько "но". Во-первых, дюжина наработанных за несколько лет менюшек mygtkmenu, которые содержат подборки часто используемого софта и переделывать которые нет ни времени, ни желания. Кроме того, (и это во-вторых) синтаксис mygtkmenu проще и удобнее, чем в xml в меню Openbox. Хотя и предоставляет меньше возможностей. В-третьих, переносимость (я на этот момент указал сразу же). Мне неизвестны возможности меню Openbox указать расположение конфига. А в mygtkmenu такая возможность есть, что делает эту менюшку менее функциональным (а всегда ли нужна богатая функциональность меню?), но более гибким и переносимым. Ну, и наконец, возвращаясь к первому: нечто уже есть и работает, а новое заманчиво, но требует времени на настройку. Одни выберут первое, другие — второе.

akorop
В новом openbox_eui (2015.03.31-1) реализовно Ваше пожелание относительно исключения из списка окон по признаку skip_taskbar независимо от минимизированности. Это в rc.xml в секции theme ключ strictSkipTaskbar - надо установить в "yes". Он есть в примере, вложенном в пакет.
Замечательно! Но пока у меня никаких изменений. Openbox_eui обновил, добавил 'yes' в функцию strictSkipTaskbar. Всё осталось, как было. Может быть, проблемы с темой?
  <theme>
    <strictSkipTaskbar>yes</strictSkipTaskbar>
    <name>Onyx</name>
    <titleLayout>NLSDIMC</titleLayout>
    <!--
      available characters are NDSLIMC, each can occur at most once.
      N: window icon
      L: window label (AKA title).
      I: iconify
      M: maximize
      C: close
      S: shade (roll up/down)
      D: omnipresent (on all desktops).
  -->
    <keepBorder>yes</keepBorder>
    <animateIconify>no</animateIconify>
    <font place="ActiveWindow">
      <name>Sans</name>
      <size>8</size>
      <!-- font size in points -->
      <weight>Bold</weight>
      <!-- 'bold' or 'normal' -->
      <slant>Normal</slant>
      <!-- 'italic' or 'normal' -->
    </font>
    <font place="InactiveWindow">
      <name>sans</name>
      <size>8</size>
      <!-- font size in points -->
      <weight>bold</weight>
      <!-- 'bold' or 'normal' -->
      <slant>normal</slant>
      <!-- 'italic' or 'normal' -->
    </font>
    <TopMenuKbdGroup>0</TopMenuKbdGroup>
    <font place="MenuHeader">
      <name>Sans</name>
      <size>9</size>
      <!-- font size in points -->
      <weight>Normal</weight>
      <!-- 'bold' or 'normal' -->
      <slant>Normal</slant>
      <!-- 'italic' or 'normal' -->
    </font>
    <font place="MenuItem">
      <name>Sans</name>
      <size>10</size>
      <!-- font size in points -->
      <weight>Normal</weight>
      <!-- 'bold' or 'normal' -->
      <slant>Normal</slant>
      <!-- 'italic' or 'normal' -->
    </font>
    <font place="ActiveOnScreenDisplay">
      <name/>
    </font>
    <font place="InactiveOnScreenDisplay">
      <name>Sans</name>
      <size>8</size>
      <weight/>
      <slant/>
    </font>
  </theme>
Кстати, почему-то перестало работать переключение раскладки на английский при вызове меню.
konstantinov-ms
Openbox_eui обновил, добавил 'yes' в функцию strictSkipTaskbar. Всё осталось, как было. Может быть, проблемы с темой?
Странно. Вот сейчас обновил openbox_eui честно через packer (а не локально) и вписал начало настроек темы из Вашего конфига. Удаление из списка работает как для видимых, так и для минимизированных окон. Флажок я ставил так. Через wmctrl узнавал id нужного окна, а потом
 wmctrl -i -a 0x0420000a -b add,skip_taskbar
А Вы после обновления не забыли сделать рестарт openbox?
akorop
А Вы после обновления не забыли сделать рестарт openbox?
Да, конечно. И на десктопе, и на ноутбуке. Результат нулевой.
konstantinov-ms
Результат нулевой.
Тогда можно подробнее?
  1. Не запутались ли мы, о чём идёт речь (по-моему, о том, что флаг skip_taskbar действует на видимые окна и не действует на минимизированны). То есть, например, окно с таким флажком отсутствует в списке Alt-Tab, если оно видимо, и присутствует, если невидимо. Так?
  2. Как Вы устанавливаете флажок skip_taskbar?
  3. Как Вы минимизируете окно?
akorop
о чём идёт речь (по-моему, о том, что флаг skip_taskbar действует на видимые окна и не действует на минимизированны). То есть, например, окно с таким флажком отсутствует в списке Alt-Tab, если оно видимо, и присутствует, если невидимо. Так?
Именно так.

akorop
Как Вы устанавливаете флажок skip_taskbar?
В настройках openbox:
rc.xml:
    <application name="mytetra">
      <desktop>all</desktop>
      <layer>above</layer>
      <skip_pager>yes</skip_pager>
      <skip_taskbar>yes</skip_taskbar>
    </application>
akorop
Как Вы минимизируете окно?
Тут, в общем-то, без разницы. На хоткеи повешены примерно такие команды:

    <keybind key="W-r">
      <action name="Execute">
        <execute>app-and-toggle-by-title 'MyTetra' 'mytetra'</execute>
      </action>
    </keybind>
Содержание скрипта 'app-and-toggle-by-title':
#!/bin/bash
APP_ID=`wmctrl -pl | grep "$1" | awk '{print $1}'`
if [ "$APP_ID" != "" ];
then
    wmctrl -ir $APP_ID -b toggle,hidden
else
    $2
fi
Одним хоткеем (в данном случае 'W-r') запускаем программу, минимизируем её и разворачиваем. Но разницы особой нет: если мышкой свернуть окно (I в <titleLayout>NLSDIMC</titleLayout> — Iconify), то результат точно такой же — в списке Alt-Tab и в client-list-combined-menu программа (вернее, её окно) всё равно отображается.
P.S. А что случилось с переключением раскладки на английский при вызове меню? Было довольно удобно.
konstantinov-ms
результат точно такой же — в списке Alt-Tab и в client-list-combined-menu программа (вернее, её окно) всё равно отображается.
Очень странно. Сейчас я для эксперимента сделал хоткей с Вашим скриптом и Вашим (с точностью до программы) определением приложения - всё работает, как должно. То есть окно в списках не отображается, даже если оно минимизировано. Для верности сделал полную переустановку, то есть
  • установил openbox из репозитария (когда предложили снести openbox_eui, согласился);
  • перегрузился на всякий случай;
  • убедился, что все красоты пропали, и что тестовое окно в видимом состоянии не отображается в списках, а в минимизированном - отображается;
  • установил openbox_eui 2015.03.31-1 (когда предложили снести openbox, согласился). На сей раз устанавливал через yaourt -S, а не через packer -S, как я обычно делаю;
  • рестартовал openbox;
  • убедился, что всё работает, как надо.
konstantinov-ms
P.S. А что случилось с переключением раскладки на английский при вызове меню? Было довольно удобно.
А ничего не случилось. Переключается, как и раньше.

Такое впечатление, что у нас интернеты разные. Или что-то разное в системах, но что - у меня даже идей нет. А надо бы разобраться...
akorop
Или что-то разное в системах
Возможно. Системе уже больше шести лет. И в первые пару лет я любил поковыряться в ней. А что там было наковыряно и какие костыли подставлены, уж и не вспомню. Попробую создать нового пользователя и проверить, как работает openbox.
konstantinov-ms
Попробую создать нового пользователя и проверить, как работает openbox.
Вряд ли поможет. И вряд ли процесс этих выяснений интересен другим. Поэтому у меня такое предложение: сформированный Вами двоичный пакет пришлите мне для изучения на e-mail из PKGBUILD, и дальше продолжим почтой или чем-то более оперативным. А тут закругляемся пока.
akorop
Поэтому у меня такое предложение: сформированный Вами двоичный пакет пришлите мне для изучения на e-mail из PKGBUILD, и дальше продолжим почтой или чем-то более оперативным. А тут закругляемся пока.
Ok. Чуть позже пришлю.
konstantinov-ms
У меня есть с десяток приложений, которым указано отображаться на всех рабочих столах и поверх всех окон. Вызываются они хоткеями. Чтобы они не путались под ногами, они скипнуты и из пейджера, и из таскбара. Однако в client-list-combined-menu они всё-равно отображаются. На каждом рабочем столе!
Возможно, не совсем в тему, но недавно по подсказке из мэйллиста я сделал себе такую пару хоткеев: Win-Down минимизирует активное окно, а Win-Up вызывает диалог PreviousWindow, но весьма специфический: во-первых, в нём показаны окна от всех рабочих столов, и во-вторых, выбранное окно вытягивается не на свой, а на текущий рабочий стол. Назначение - работа как раз с такого сорта приложениями. Минимизированные окна выводятся в конце списка, курсор становится тоже в конец списка, так что для быстрого восстановления - то, что нужно. Восстановил, посмотрел, опять минимизировал.
Мне это оказалось очень удобно, но у меня такого рода приложений гораздо меньше.
Реализовано это чисто штатными средствами, нормально работает в непатченном openbox.
    <keybind key="W-Down">
      <action name="Iconify"/>
    </keybind>

    <keybind key="W-Up">
      <action name="PreviousWindow">
        <allDesktops>yes</allDesktops>
        <finalactions>
          <action name="If">
            <query target="default">
              <iconified> yes </iconified>
            </query>
            <then>
              <action name="SendToDesktop"><to>current</to></action>
            </then>
          </action>
          <action name="Focus"/>
          <action name="Raise"/>
          <action name="Unshade"/>
        </finalactions>
      </action>
    </keybind>
 
Зарегистрироваться или войдите чтобы оставить сообщение.