Разъяснение по OpenBox

vasek
akorop, konstantinov-ms, подскажите команду для запуска ..... "голую", относительную, без привязки к WM и клавишам....
Посмотрел скрипт, проверил по частям ........ вроде все нормально...... Одно не могу сообразить — как запустить данный скрипт с приложением …....ну не варит сегодня голова …..
Закиньте этот скрипт в /usr/bin и поставьте бит исполнения. А потом (можно попробовать в терминале) запускайте по такой команде:
app-and-toggle-by-title 'заголовок окна' 'программа'
Заголовок окна можно узнать, введя в терминале команду:
wmctrl -l
Программа — это собственно исполняемый файл программы. Например:
app-and-toggle-by-title 'Chromium' 'chromium'
В первом случае ('Chromium') — это заголовок; во втором случае ('chromium') — сама программа. Более понятный (но, к сожалению, менее функциональный) пример:
app-and-toggle-by-title 'Без имени 1 - LibreOffice Writer' 'lowriter'
В первом случае wmctrl отображает новый созданный в LibreOffice Writer документ, во втором случае — исполняемый файл программы. Кстати, не обязательно вводить заголовок полностью. Если Вы введёте такую команду:
app-and-toggle-by-title 'LibreOffice Writer' 'lowriter'
,
то wmctrl перекинет Вас на любой открытый в Writer'e документ (вернее, не на любой, а на тот, который идёт первым в списке wmctrl -l). Если такового нет, то будет запущен lowriter. То же относится и к любой другой программе, например, chromium.
А дальше — дело фантазии. Можно навешать на хоткеи и пользоваться.
Есть другой вариант. Дело в том, что многие окна меняют свои заголовки, в зависимости от содержания. Например, программа gnome-search-tool в wmctrl отображается либо как "Поиск файлов", либо как название уже найденных файлов. В таком случае лучше использовать второй скрипт, который определяет содержимое по pid'у:
#!/bin/bash
PROCESSES=`pidof $1`
if [ "$PROCESSES" != "" ];
then
    for P_ID in $PROCESSES;
    do
	if [ "$3" == "" ];
	then
	    APP_ID=`wmctrl -pl | grep " $P_ID " | awk '{print $1}'`
        else
	    APP_ID=`wmctrl -pl | grep " $P_ID " | eval "grep $3" | awk '{print $1}'`
        fi

	if [ "$APP_ID" != "" ];
	then
	    wmctrl -ia $APP_ID
	    break
	fi
    done

    echo "Nothing found :("
else
    $2
fi
Этот скрипт либо запустить программу (если она не запущена), либо откроет окно этой программы, перебросив на тот рабочий стол, на котором она запущена. Более расширенный вариант:
#!/bin/bash
PROCESSES=`pidof $1`
if [ "$PROCESSES" != "" ];
then
    for P_ID in $PROCESSES;
    do
	if [ "$3" == "" ];
	then
	    APP_ID=`wmctrl -pl | grep " $P_ID " | awk '{print $1}'`
        else
	    APP_ID=`wmctrl -pl | grep " $P_ID " | eval "grep $3" | awk '{print $1}'`
        fi

	if [ "$APP_ID" != "" ];
	then
	    wmctrl -ir $APP_ID -b toggle,hidden
	    break
	fi
    done

    echo "Nothing found :("
else
    $2
fi
Он делает, соответственно, либо показывает/скрывает окно запущенной программы, либо запускает её. В таком случае можно вызывать gnome-search-tool командой:
app-and-toggle-by-pid 'gnome-search-tool' 'gnome-search-tool'
Можно подправить эти скрипты по образцу того, что сделал akorop со скриптом app-and-toggle-by-title.
vasek, работает так

app-and-toggle-by-title.sh Zim zim

Первое Zim для нахождения окна по заголовку, или его части, второе zim для запуска программы, если она не запущена. Пользуясь случаем, хочу поблагодарить всех причастных за полезный скрипт! :)
И, похоже, что то я делаю не так ....... ну нет у меня скрытия...... происходит открытие нового - пробовал и в DWM и в Gnome .....
$ pidof xterm
875 848 834 794 764
$ pidof xterm
1693 1679 1665 1638 875 848 834 794 764
PS...... вообщем, нужно все перепроверить.......возможно где то описался.....
Ошибки не исчезают с опытом - они просто умнеют
vasek
подскажите команду для запуска
См. выше, в последней строке жирным шрифтом.
konstantinov-ms
Использую как раз openbox_eui. Очень уж мне углы показались удобными (кстати, огромное Вам спасибо за такой тюнинг!).
Это не я, это Mikachu (Mikael Magnusson). Причём Mikachu - это не кто попало, а сам смотрящий openbox. Почему он не включает эту удобнейшую фишку в официальную ветку - не могу понять.
konstantinov-ms
Однако приложения не исчезают.
Очень странно. Вот сейчас проверил у себя - Sylpheed исчезает. Делал так.
openbox_eui 2015.03.31-1
    <keybind key="W-A-S">
      <action name="Execute">
        <command>app-and-toggle-by-title Sylpheed sylpheed</command>
      </action>
    </keybind>
...
    <application class="Sylpheed">
      <skip_pager>yes</skip_pager>
      <skip_taskbar>yes</skip_taskbar>
    </application>
Жму Alt-Win-S - Sylpheed запустился. В списках Alt-Tab и client-list-combined-menu его нет.
Жму ещё раз Alt-Win-S - Sylpheed спрятался. В списках его нет по-прежнему.
Выполняю wmctrl -r Sylpheed -b remove,skip_taskbar,skip_pager - окно на экране не появилось, но в списках появилось.
Вдогонку:забыл ещё одну строчку из rc.xml: <strictSkipTaskbar>yes</strictSkipTaskbar>
Вообщем и в DWM и в Gnome скрытия нет ......... происходит открытие нового......
PS......пробовал по-разному - и если строго следовать инструкциям, то просто нет скрытия, но новые при этом не открываются....
Эксперимент закончен ..... останусь при своих - вместо скрытия ...... будет закрытие....
Ошибки не исчезают с опытом - они просто умнеют
akorop, у меня, кстати, тоже не пропадает. Делаю так:

    <application class="Zim" name="zim">
      <skip_taskbar>yes</skip_taskbar>
      <skip_pager>yes</skip_pager>
      <strictSkipTaskbar>yes</strictSkipTaskbar>
    </application>

И когда zim минимизирован, он тоже появляется и в меню, которое по Alt-Tab, и которое на колесе мыши...
vasek
Эксперимент закончен ..... останусь при своих - вместо скрытия ...... будет закрытие....
А виртуальные рабочие столы есть? Если есть, то один из них можно использовать в качестве Сибири, куда ссылать тех, кого не хочется видеть, но и прибивать жалко.
Koluchka
akorop, у меня, кстати, тоже не пропадает
Установлен openbox_eui? Включён strictSkipTaskbar?
 
Зарегистрироваться или войдите чтобы оставить сообщение.