Как сделать так, чтобы эмулятор терминатора появлялся и исчезал как guake?
Я использую терминатор 0,96 в качестве эмулятора терминала. Как я могу заставить его работать в фоновом режиме и заставить его появляться / исчезать, как терминал guake (то есть с помощью сочетания клавиш).
7 ответов
Я пытался сделать то же самое (будучи поклонником как гуге, так и терминатора). Вот что я придумал (индивидуальная версия desgua на этот вопрос):
Запустить приложение или показать его окно, если оно уже запущено, или свернуть, если оно сфокусировано.
1) Установите wmctrl & xdotool или в терминал: sudo apt-get install wmctrl xdotool
2) Сделать скрипт:
- Сделайте файл gedit ~/bin/launch_focus_min.sh
И вставьте это:
#!/bin/bash
#
# This script does this:
# launch an app if it isn't launched yet,
# focus the app if it is launched but not focused,
# minimize the app if it is focused.
#
# by desgua - 2012/04/29
# modified by olds22 - 2012/09/16
# - customized to accept a parameter
# - made special exception to get it working with terminator
# First let's check if the needed tools are installed:
tool1=$(which xdotool)
tool2=$(which wmctrl)
if [ -z $tool1 ]; then
echo "Xdotool is needed, do you want to install it now? [Y/n]"
read a
if [[ $a == "Y" || $a == "y" || $a = "" ]]; then
sudo apt-get install xdotool
else
echo "Exiting then..."
exit 1
fi
fi
if [ -z $tool2 ]; then
echo "Wmctrl is needed, do you want to install it now? [Y/n]"
read a
if [[ $a == "Y" || $a == "y" || $a = "" ]]; then
sudo apt-get install wmctrl
else
echo "Exiting then..."
exit 1
fi
fi
# check if we're trying to use an app that needs a special process name
# (because it runs multiple processes and/or under a different name)
app=$1
if [[ $app == terminator ]]; then
process_name=usr/bin/terminator
else
process_name=$app
fi
# Check if the app is running (in this case $process_name)
#pid=$(pidof $process_name) # pidof didn't work for terminator
pid=$(pgrep -f $process_name)
# If it isn't launched, then launch
if [ -z $pid ]; then
$app
else
# If it is launched then check if it is focused
foc=$(xdotool getactivewindow getwindowpid)
if [[ $pid == $foc ]]; then
# if it is focused, then minimize
xdotool getactivewindow windowminimize
else
# if it isn't focused then get focus
wmctrl -x -R $app
fi
fi
exit 0
- Сделайте его исполняемым:
chmod +x ~/bin/launch_focus_min.sh
3) Сделайте сочетание клавиш:
Откройте настройки клавиатуры и создайте собственный ярлык с помощью команды:
/home/<user>/bin/launch_focus_min.sh terminator
(~ / bin не будет работать)назначьте эту команду на Shift+Escape (или любую другую комбинацию клавиш, которую вы использовали для guake).
Самый простой способ сделать это - использовать xdotool
и использовать windowunmap/windowmap
Команда, чтобы скрыть / показать нужный класс окон. (Этот подход не упоминался в других ответах, которые упоминают xdotool
.) Решение будет хорошо работать на всех рабочих столах, независимо от того, какой оконный менеджер они используют. Как отмечает руководство,
В терминологии X11 отображение окна означает его отображение на экране.
Таким образом, отключение окна сделает противоположность и скроет окно. К сожалению, нет переключателя для использования с xdotool
переключаться между отображением / отменой отображения состояний, но две нужные вам команды приведены ниже. Первый скрывает окно:
xdotool search --class terminator windowunmap %@
а вторая меняет эффект:
xdotool search --class terminator windowmap %@
Обратите внимание, что если окно уже свернуто, windowunmap
Команда будет неудачной.
Для получения дополнительной информации см. man xdotool
, страницы Ubuntu онлайн, и мой ответ на этот связанный вопрос.
Выбрав набор настроек в Terminator, вы можете заставить его работать почти так же, как Guake.
Обратитесь к следующей статье для подробного объяснения.
http://www.webupd8.org/2011/07/install-terminator-with-built-in-quake.html
Я бы посоветовал вам выполнить все шаги в статье, чтобы получить желаемые результаты. Я пропустил несколько шагов, думая, что они не были необходимы, но на самом деле были необходимы, чтобы преодолеть некоторые ошибки.
Принятый ответ не полностью сработал для меня.
pgrep -f terminal // this does not give pid of renning terminator
Я настраиваю это с помощью
pid=`ps aux | grep terminator | awk '{print $2}'`
в строке 54
Я бы порекомендовал просто использовать yakuake
терминал в том же стиле, что и guake для рабочего стола kde.
Вы можете установить его, запустив sudo apt-get install yakuake
,
Я написал скрипт для поднятия и минимизации терминала gnome с помощью byobu в linux mint, потому что в guake есть странные проблемы с консолью. Затем я добавил его в список сочетаний клавиш в разделе "Клавиатура администратора".
скрипт с именем guake-toggling-for-gnome-terminal.sh:
#!/usr/bin/env bash
if ! pgrep -x "gnome-terminal" > /dev/null
then
gnome-terminal --app-id us.kirkland.terminals.byobu -e byobu
fi
byobuVisible=$(xdotool search --onlyvisible byobu)
byobuNotVisible=$(xdotool search byobu)
xdotool windowminimize ${byobuVisible}
xdotool windowraise ${byobuNotVisible}
Бёбу - это просто имя окна.
Ну, самое простое решение - просто заблокировать Terminator для запуска и использовать ярлыки, которые предоставляет Ubuntu.
Вы можете запустить любое приложение, которое заблокировано для запуска, используя ярлык запуска:
Супер + 1 до 9
Для получения полного списка готовых доступных ярлыков удерживайте клавишу Super.