Używam terminatora 0.96 jako emulatora terminala. Jak sprawić, by działał w tle i sprawiał, że pojawiał się / znikał jak fałszywy terminal (tj. Za pomocą klawisza skrótu).
Używam terminatora 0.96 jako emulatora terminala. Jak sprawić, by działał w tle i sprawiał, że pojawiał się / znikał jak fałszywy terminal (tj. Za pomocą klawisza skrótu).
Odpowiedzi:
Próbowałem zrobić to samo (będąc fanem zarówno guake'a, jak i terminatora). Oto, co wymyśliłem (dostosowana wersja odpowiedzi desqua na to pytanie ):
Aby uruchomić aplikację lub wyświetlić jej okno, jeśli jest już uruchomione, lub zminimalizować, jeśli jest ono skoncentrowane
1) Zainstaluj wmctrl & xdotool lub w terminalu:sudo apt-get install wmctrl xdotool
2) Utwórz skrypt:
I wklej to:
#!/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) Utwórz skrót klawiaturowy:
Otwórz ustawienia klawiatury i utwórz niestandardowy skrót za pomocą polecenia: /home/<user>/bin/launch_focus_min.sh terminator
(~ / bin nie będzie działać)
przypisz to polecenie do Shift + Escape (lub dowolnego skrótu klawiaturowego użytego do guake).
#!/bin/bash
Najłatwiejszym sposobem na to byłoby użycie xdotool
i użycie windowunmap/windowmap
polecenia, aby ukryć / odkryć żądaną klasę okien. (To podejście nie zostało wspomniane w innych wspomnianych odpowiedziach xdotool
.) Rozwiązanie będzie działać dobrze na wszystkich komputerach, niezależnie od używanego przez nich menedżera okien. Jak zauważa strona ,
W terminologii X11 mapowanie okna oznacza, że jest ono widoczne na ekranie.
Odmapowanie okna spowoduje odwrotność i ukryje okno. Niestety nie ma przełącznika xdotool
do przełączania między stanami map / unmap, ale dwie potrzebne komendy znajdują się poniżej. Pierwszy ukrywa okno:
xdotool search --class terminator windowunmap %@
a drugi odwraca efekt:
xdotool search --class terminator windowmap %@
Pamiętaj, że jeśli okno jest już zminimalizowane, windowunmap
polecenie zakończy się niepowodzeniem.
Aby uzyskać więcej informacji, zobacz man xdotool
strony Ubuntu online i moją odpowiedź na to powiązane pytanie .
Wybierając zestaw preferencji w Terminatorze, możesz sprawić, by działał prawie podobnie do Guake'a.
Szczegółowe wyjaśnienie znajduje się w następującym artykule.
http://www.webupd8.org/2011/07/install-terminator-with-built-in-quake.html
Radzę ci wykonać wszystkie czynności opisane w tym artykule, aby uzyskać pożądane wyniki. Ominąłem kilka kroków, myśląc, że nie były one konieczne, ale w rzeczywistości były potrzebne do przezwyciężenia niektórych błędów.
Najprostszym rozwiązaniem byłoby zablokowanie Terminatora w programie uruchamiającym i użycie skrótów udostępnianych przez Ubuntu.
Możesz uruchomić dowolną aplikację zablokowaną w programie uruchamiającym za pomocą skrótu programu uruchamiającego:
Super + 1 do 9
Aby wyświetlić pełną listę gotowych dostępnych skrótów, przytrzymaj klawisz Super .
Napisałem skrypt, aby podnieść i zminimalizować terminal gnome z byobu w Linuksie mint, ponieważ guake ma dziwne wyniki na konsoli. Następnie dodałem go do skrótów w sekcji klawiatura administratora -> skróty.
skrypt o nazwie 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}
Byobu to tutaj tylko nazwa okna.