Я не предполагаю, что это встроено в систему, но действительно ли возможно сделать это без слишком большого количества стычки?
Скажите, что я открываю определенную программу с горячей клавишей, и когда я нажимаю ту горячую клавишу снова, окно программы выявлено.
Я хочу сделать это на Ubuntu 9.04.
Возможно, с D-шиной? Какие-либо эксперты?
Обновление: вот то, что я закончил с тем, в случае, если это помогает кому-то:
#!/bin/bash
if [ -f "/tmp/myterm.pid" ]; then
WID=`cat /tmp/myterm.pid`
xdotool windowactivate $WID
if [ "$?" != "0" ]; then
WID=""
fi
else
WID=`xdotool search --title "UNIQUE TITLE" | head -1`
fi
if [ "$WID" == "" ]; then
/usr/bin/gnome-terminal --window-with-profile=MYPROFILE "$@"
WID=`xdotool search --title "UNIQUE TITLE" | head -1`
echo $WID > /tmp/myterm.pid
else
xdotool windowactivate $WID
fi
Конечно, это может быть упрощено, но я нет bash
человек выдающихся способностей. Кроме того, чтобы мой пример работал, я создал пользовательский профиль в Терминале, который применяет уникальный заголовок к окну, таким образом, это может быть найдено позже. Возможности бесконечны!
wmctrl
программа, что Вы ищете (sudo apt-get install wmctrl
). Можно использовать wmctrl -a "AppTitle"
команда для выявления приложения. wmctrl -l
перечислит все доступные окна, таким образом, должно быть легко записать сценарий оболочки, который проверяет, выполняет ли Ваша программа и или запускает его или выявляет его. Затем можно просто связать это с сочетанием клавиш.
Сначала сохраните следующий сценарий где-нибудь, я буду использовать /home/jtb/code/bringToFront
. Требуется два аргумента, первое - то, что Вы ввели бы на терминале для запуска программы, второй является подстрока заголовка окна программы. Если не будет никакой постоянной уникальной строки в заголовке затем, то необходимо будет сделать немного больше работы для нахождения окна программы.
#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then
wmctrl -a "$2"
else
$1 &
fi
Со сценарием в Вашем текущем каталоге, выполненном chmod +x bringToFront
сделать исполняемый файл сценария. Затем удостоверьтесь, что это работает; для запущения/фокусирования Firefox, Вы могли работать ./bringToFront firefox "Mozilla Firefox"
.
Теперь мы должны связать сочетание клавиш. Выполненный gconf-editor
и переместитесь по структуре папок налево к /apps/metacity/keybinding_commands
.
Дважды щелкните по первому command
с пустым значением, вероятно command_1
. Введите полный путь к сценарию и обеспечьте эти два параметра, например. /home/jtb/code/bringToFront firefox Firefox
.
От панели слева, выбрать global_keybindings
, следующая папка. Найдите run
запись, соответствующая команде, Вы просто определили, вероятно run_command_1
. Дважды щелкните по нему и введите сочетание клавиш, которое Вы хотите использовать. Поместите модификаторы в угловые скобки, например. <Ctrl><Alt>F
.
Теперь Управление + Высокий звук + F выявит Ваше окно Firefox или запустит его, если это не будет уже работать.
спасибо за это. Я использую измененную версию его для создания сценария ярлыка окна, который также поддерживает циклическое повторение через несколько экземпляров. Если Вам интересно:
http://somanov.wordpress.com/2009/12/02/window-shortcuts-for-linux-desktops/
аплодисменты :)