LINUX.ORG.RU

Xfce: запуск приложений по горячим клавишам (как в семерочке максимальной)

 ,


1

2

Т.е. если приложение не запущено - запустить, если запущено - переключиться на него, а не запускать еще одну копию.
Как сделать в Xfce на генточке? Ну или может универсальный DE-независимый метод есть?
Я что-то не соображу как такое гуглить.

ps: А в толстых DE такое из коробки есть? В кедах, в гноме?

★★★★★
wmctrl -xF -a Navigator.Seamonkey || seamonkey

This argument specifies the window. By default it's interpreted as a string. The string is matched against the window titles and the first matching window is used. The matching isn't case sensitive and the string may appear in any position of the title.

The -x option may be used to interpret the argument as a string, which is matched against the window's class name (WM_CLASS property). Th first matching window is used. The matching isn't case sensitive and the string may appear in any position of the class name. So it's recommended to always use the -F option in conjunction with the -x option.

AITap ★★★★★
()
Ответ на: комментарий от AITap

Navigator.Seamonkey || seamonkey

ну несерьезно же.
можно узнать WindowID по CMD/PID, чтобы универсальненько было.

snoopcat ★★★★★
()
Ответ на: комментарий от AITap

seamonkey у меня нет, а с чем проверял - не работает.
Но теперь я хотя бы знаю в какую сторону гуглить.

Lavos ★★★★★
() автор топика
Ответ на: комментарий от snoopcat

Нагуглил скрипт с wmctrl - он работает только с приложениями, которые свой title не меняют, а с xfce4-terminal, abiword, ... не работает.
Печаль.

Lavos ★★★★★
() автор топика
Ответ на: комментарий от Lavos

Добавил ключик -x из поста AITap - так работает:

#!/bin/bash

if wmctrl -xl | grep -i --quiet "${1}"; then
    wmctrl -xa ${1}
else
    ${1}
fi

Lavos ★★★★★
() автор топика
Ответ на: комментарий от Lavos

Как минимум, у xfce4-terminal сохраняется WM_CLASS, что позволяет достать его при помощи wmctrl с опцией -x. Его можно посмотреть в третьей колонке вывода wmctrl -lx.

А так snoopcat прав, в общем случае придётся проверять, запущен ли процесс, при помощи pidof/pgrep, находить окно с таким _NET_WM_PID (если оно есть - _NET_WM_PID тоже не всегда работает) и активировать его.

AITap ★★★★★
()
Последнее исправление: AITap (всего исправлений: 1)

Насколько я помню, в Unity оно есть.

Gotf ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.