Jak sprawić, by emulator terminatora pojawiał się i znikał jak guake?

14

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).

Chirag
źródło
1
Odpowiedź @hashken czyni to naprawdę łatwym: webupd8.org/2011/07/install-terminator-with-built-in-quake.html
Brandon Bertelsen
askubuntu.com/questions/88705/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

17

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:

  • Utwórz plik gedit ~ / bin / launch_focus_min.sh

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
  • Spraw, by był wykonywalny: 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).

olds22
źródło
Próbowałem tego, ale wydaje mi się, że to nie działa.
Chirag,
To idealne rozwiązanie, Najlepsze z Guake z najlepszym z Terminatora, Dzięki.
wranvaud,
musiał zmienić „~ / bin / launch_focus_min.sh terminator” na „/ home / <user> /bin/launch_focus_min.sh terminator”, aby działał dla mnie
Vituel
Musiałem dodać shebang bash na początku pliku, aby działał poprawnie pod zsh:#!/bin/bash
sean_j_roberts
4

Najłatwiejszym sposobem na to byłoby użycie xdotooli użycie windowunmap/windowmappolecenia, 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 xdotooldo 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, windowunmappolecenie zakończy się niepowodzeniem.

Aby uzyskać więcej informacji, zobacz man xdotoolstrony Ubuntu online i moją odpowiedź na to powiązane pytanie .

Społeczność
źródło
2

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.

Hashken
źródło
0

yakuakePoleciłbym po prostu użyć terminala w tym samym stylu co guake na pulpicie kde.

Możesz go zainstalować, uruchamiając sudo apt-get install yakuake.

Alex L.
źródło
Nie można opuścić terminatora. Używam go od ostatnich 2 lat. Już prawie uzależniony. :)
Chirag,
0

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 .

Waqleh
źródło
0

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.

metanerd
źródło