Come faccio a far apparire e scomparire l'emulatore terminator come un falso?


14

Sto usando il terminatore 0.96 come emulatore di terminale. Come posso farlo funzionare in background e farlo apparire / scomparire come un terminale falso (cioè usando un tasto di scelta rapida).


1
La risposta di @hashken rende tutto molto semplice: webupd8.org/2011/07/install-terminator-with-built-in-quake.html
Brandon Bertelsen il

Risposte:


17

Stavo provando a fare la stessa cosa (essendo un fan sia di guake che di terminator). Ecco cosa mi è venuto in mente (una versione personalizzata della risposta di desqua a questa domanda ):

Avviare un'applicazione o mostrare la sua finestra se già avviata o minimizzare se è focalizzata

1) Installa wmctrl & xdotool o in un terminale:sudo apt-get install wmctrl xdotool

2) Crea una sceneggiatura:

  • Crea un file gedit ~ / bin / launch_focus_min.sh

E incolla questo:

#!/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
  • Renderlo eseguibile: chmod +x ~/bin/launch_focus_min.sh

3) Crea la scorciatoia da tastiera:

  • Apri le impostazioni della tastiera e crea uno shorcut personalizzato con il comando: /home/<user>/bin/launch_focus_min.sh terminator(~ / bin non funzionerà)

  • assegna questo comando a Shift + Escape (o qualsiasi scorciatoia da tastiera che hai usato per guake).


Ho provato questo, ma non sembra funzionare per me.
Chirag,

Questa è la soluzione perfetta, il meglio di Guake con il meglio di Terminator, grazie.
Wranvaud,

ho dovuto cambiare "~ / bin / launch_focus_min.sh terminator" in "/ home / <utente> /bin/launch_focus_min.sh terminator" perché funzionasse per me
Vituel

Ho dovuto aggiungere un bash shebang all'inizio del file per farlo funzionare correttamente sotto zsh:#!/bin/bash
sean_j_roberts

4

Il modo più semplice per farlo sarebbe usare xdotoole usare il windowunmap/windowmapcomando per nascondere / scoprire la classe di finestre desiderata. (Questo approccio non è stato menzionato nelle altre risposte che menzionano xdotool.) La soluzione funzionerà bene su tutti i desktop, indipendentemente dal gestore delle finestre che stanno utilizzando. Come osserva la pagina man ,

Nella terminologia X11, mappare una finestra significa renderla visibile sullo schermo.

Quindi, decomprimere una finestra farà il contrario e nasconderà la finestra. Sfortunatamente, non è disponibile alcun interruttore da utilizzare xdotoolper alternare gli stati mappa / non mappa, ma i due comandi necessari sono di seguito. Il primo nasconde la finestra:

xdotool search --class terminator windowunmap %@

e il secondo inverte l'effetto:

xdotool search --class terminator windowmap %@

Si noti che se la finestra è già ridotta a icona, il windowunmapcomando non avrà esito positivo.

Per ulteriori informazioni man xdotool, consultare le manpage di Ubuntu online e la mia risposta a questa domanda correlata .


2

Selezionando una serie di preferenze in Terminator, puoi farlo funzionare in modo simile a Guake.

Fare riferimento al seguente articolo per una spiegazione dettagliata.
http://www.webupd8.org/2011/07/install-terminator-with-built-in-quake.html

Ti consiglierei di seguire tutti i passaggi nell'articolo per ottenere i risultati desiderati. Ho saltato alcuni passi, pensando che non fossero necessari, ma che in realtà erano necessari per superare alcuni bug.


0

Consiglierei semplicemente di usare yakuakeun terminale nello stesso stile di guake per il desktop kde.

Puoi installarlo eseguendo sudo apt-get install yakuake.


Impossibile uscire dal terminatore. Lo sto usando da 2 anni. Ormai quasi dipendente da esso. :)
Chirag

0

Bene, la soluzione più semplice sarebbe quella di bloccare Terminator al launcher e usare le scorciatoie fornite da Ubuntu.

È possibile avviare qualsiasi applicazione bloccata all'avvio mediante il collegamento all'avvio:

Super + 1 a 9

Per un elenco completo delle scorciatoie già disponibili, tieni premuto il tasto Super .


0

Ho scritto una sceneggiatura per aumentare e minimizzare il terminale gnome con byobu in Linux Mint, perché Guake ha alcuni strani errori di output della console. Quindi l'ho aggiunto alle scorciatoie nella sezione della tastiera dell'amministratore-> shurtcuts.

script chiamato 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 è solo il nome della finestra qui.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.