user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 24-04-2015 09:57:58

penthium2
Modérateur

[tuto] Avoir le comportement de guake avec terminator

Suite a une petite discution sur irc je me suis penché sur le faite d'avoir le même comportement de guake, mais avec terminator !

J'ai trouvé 2 méthodes !

La première simple et très efficace : C'est directement dans les settings de terminator
La deuxième avec un petit script et deux petites applications.

1) Directement avec les settings de Terminator :
             Avantage :
                 On n'a aucune application externe, pas de dépendance.
             Inconvénient :
                 Terminator doit être lancé obligatoirement avant d'exploité l'avantage de guake

            Paramétrage :
                  Aller dans les préférence de terminator, keybinding et rechercher la ligne :
                                              hide_windows              Toggle windows visibility           F12

                 J'ai affecté la touche F12 à terminator pour cacher/dé-cacher la fenêtre.

2) Le script externe :
             Avantage :
                 Si terminator n'est pas déjà lancé, le script lancera terminator.
             Inconvénient :
                 Deux très légères dépendances : xdotool et wmctrl.

             Installation :
                 Pour installer les dépendances il suffit de faire :
                        Pour Fedora :

dnf install xdotool wmctrl 

                        Pour Ubuntu :

sudo apt-get install xdotool wmctrl

                 Puis créer le fichier ~/bin/toggle_visibility.sh avec votre éditeur préférer ( vim est mon ami pour la vie ) avec ce contenu :

#!/bin/bash                 

#####################################################################################
################# Check for dependencies ( Fedora and Debian compatible) ####################
#####################################################################################
#Checking that all dependencies are met, since we cannot proceed without them.
declare -a DEPENDENCIES=("xdotool" "wmctrl");
declare -a MANAGERS=("dnf" "apt-get");

for DEPENDENCY in ${DEPENDENCIES[@]};
do
    echo -n "Checking if $DEPENDENCY is available";
    if hash $DEPENDENCY 2>/dev/null;
    then
        echo "- OK, Found";
    else
        echo "- ERROR, Not Found in $PATH";
        for MANAGER in ${MANAGERS[@]};
        do
            if hash $MANAGER 2>/dev/null;
            then
                echo -n "$DEPENDENCY is missing, would you like to try and install it via $MANAGER now? [Y/N] (default is Y): ";
                read ANSWER;
                if [[ "$ANSWER" == "Y" || "$ANSWER" == "y" || "$ANSWER" == "" ]];
                then
                    sudo "$MANAGER" install "$DEPENDENCY";
                else
                    echo "Terminating";
                    exit -1;
                fi
            fi
        done
    fi
done
#####################################################################################
################# Aplication ###########################################################
#####################################################################################
APPLICATION="$1";

#Checking if the application name provided by the user exists
if ! hash $APPLICATION 2>/dev/null;
then
    echo -e "$APPLICATION does not seem to be a valid executable\nTerminating";
    exit -2;
fi

#Checking if the application is running. We are using pgrep as various application are python scripts and we will not be able to find them using pidof. pgrep will look through the currently running processes and list the process IDs of all the processes that are called $APPLICATION.
PID=$(pgrep $APPLICATION);

#If the application is not running, we will try to launch it.
if [ -z $PID ];
then
  echo "$APPLICATION not running, launching it..";
    $APPLICATION;
else
    #Since the application has a live instance, we can proceed with the rest of the code.
    #We will get the PID of the application that is currently focused, if it is not the application we passed as parameter we will change the focus to that. In the other case, we will minimize the application.
  echo -n "$APPLICATION instance found - ";
    FOCUSED=$(xdotool getactivewindow getwindowpid);
    if [[ $PID == $FOCUSED ]];
    then
    echo "It was focused so we are minimizing it";
        #We minimize the active window which we know in this case that it is the application we passed as parameter.
        xdotool getactivewindow windowminimize;
    else
    echo "We are setting the focus on it";
        #We set the focus to the application we passed as parameter. If it is minimized it will be raised as well.
        wmctrl -x -R $APPLICATION;
    fi
fi

exit 0

Une chose interessante dans ce script est la première partie, elle donne une bonne méthode pour vérifier des dépendances de votre script, et les installer le cas échant. et ce que ce soit sur une débian ou une fedora. ( NICE ).
                 
Une foi créer il faut donner le droit d'exécution au fichier :

 chmod +x ~/bin/toggle_visibility.sh

Puis il faut attribué un racourcit clavier a votre script, n'utilisant que openbox, je ne vous indiquerais pas comment faire avec gnome, unity ou autre WM lourd Cthulhu

Editez le fichier : ~/.config/openbox/rc.xml et ajoutez :

<keybind key="A-F12">
      <action name="Execute">
        <command>~/bin/toggle_visibility.sh terminator</command>
      </action>
</keybind>

Dans mon cas j'ai attribué la combinaison de touche : alt-F12

On relance ensuite openbox, et le bonheur commence.

Conclusion :
Pourquoi expliqué les deux méthodes, car elle sont complémentaire a mes yeux.

La deuxième méthode est une bonne pratique pour lancer votre terminator, puisque le script permet de vérifier si terminator est lancé ou non, et si non il le lance.
La première est très utile une fois un terminator déjà présent dans les processus.

Source du script :
http://bytefreaks.net/gnulinux/bash/how … untu-14-10

Dernière modification par penthium2 (24-04-2015 10:00:32)


vi est mon ami pour la vie
Viperr
Ph'nglui nglw-nafh Cthulhu R'lyeh wgah-nagl fhtagn

Hors ligne

Pied de page des forums