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

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

#1 02-04-2015 11:51:51

penthium2
Modérateur

tmux + wmctrl + terminator + openbox = Bonheur :D

Tmux est un mutiplexeur de terminaux comme screen mais a mes yeux un peu plus évolué, et surtout scriptable.

L'installation est traditionnelle via votre gestionnaire de paquets.


A) Quelques raccourcis bien pratique :


1)Racourcit de base pour la gestion des fenetres ( onglets ):
<Ctrl> + <b> suivi de <c> : Créer un nouveau terminal dans la session tmux active
<Ctrl> + <b> suivi de <n> : Switcher entre les différents terminaux de la session
<Ctrl> + <b> suivi de <d> : Se détacher de la session tmux
<Ctrl> + <b> suivi de <w> : Affiche la liste des terminaux disponibles
<Ctrl> + <b> suivi de <t> : Afficher l’heure dans un terminal

2)Commandes dans un Split:
<Ctrl> + <b> suivi de <«> : Split vertical du terminal courant en deux + ouverture d’un terminal dans le nouveau panel
<Ctrl> + <b> suivi de <%> : Split horizontal du terminal courant en deux + ouverture d’un terminal dans le nouveau panel
<Ctrl> + <b> suivi de <o> : Switcher entre les terminaux splittés
<Ctrl> + <b> suivi de <espace> : Changer l’organisation visuelle des terminaux splittés
<Ctrl> + <b> suivi de <Alt> + (flèches directionnelles) : Reduire, agrandir fenêtre du split
<Ctrl> + <b> suivi de <!> : Convertir un split en terminal seul
<Ctrl> + <b> suivi de <q> : Afficher les numéros des terminaux splittés
<Ctrl> + <b> puis saisissez :join : permet de joindre un terminal seul dans un split


B) Votre tmux est hautement configurable

le fichier de conf de tmux est à placer dans votre home : ~/.tmux.conf
voila le mien :

#Utilisation de crtl-w plutot que crtl-b ( c'est plus facile )
unbind C-b
set -g prefix C-w
bind C-a send-prefix
#navigation entre les fefètre avec ctrl les flèche : ( adieu ctrl-w n )
bind-key -n C-right next
bind-key -n C-left prev
#####
#On change les raccourcis pour faire du split vertical et horizontal
##On utilise la touche "|" (pipe) pour faire un split vertical
bind | split-window -h
##Et la touche "-" pour faire un split horizontal
bind - split-window -v
#####
# setting varié :
set-option -g status-utf8 on
set-window-option -g utf8 on
set -g default-terminal "screen-256color"
set -g history-limit 1000
setw -g window-status-current-bg blue
setw -g monitor-activity on
set -g visual-activity on
setw -g automatic-rename on

#On met les panneaux non actif en gris
set -g pane-border-fg colour244
set -g pane-border-bg default
# 
#On met le panneau actif en rouge
set -g pane-active-border-fg colour124
set -g pane-active-border-bg default
#  
#On met la barre de status en gris
set -g status-interval 60
set -g status-left-length 30
set -g status-left '#[fg=black](#S) #(whoami)@#H#[default]'
set -g status-fg colour235
set -g status-bg colour250
set -g status-attr dim
#   
# On surligne les fenêtres actives dans la barre de status en gris foncés
set-window-option -g window-status-current-fg colour15
set-window-option -g window-status-current-bg colour-0

C) Et la cerise sur le gateau :

Un petit srcipt maison qui permet de lancer un ternimal avec tmux, voir lancer une application dans un tmux ( comme weechat ).
L'interet de ce script est que :

si vous avec par exemple weechat de lancer et que vous fermer la fentre du terminal en relancant le script il se positione directement dans votre fenetre de weechat
Si vous avez 2 fentre d'ouvert ( l'un en shell, l'autre en weechat ) le script trouvera la bonne fenetre tmux et l'ouvrira.

voila ce script : que j'ai placé ici : ~/.tmux/tmuxperr.sh ( son emplacement est important pour openbox big_smile )


#!/bin/bash
#########################################################################
#DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#Version 2, December 2004
#
#Copyright (C) 2015 Frédéric THOUIN
#Everyone is permitted to copy and distribute verbatim or modified
#copies of this license document, and changing it is allowed as long
#as the name is changed.
#
#DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
#
#0. You just DO WHAT THE FUCK YOU WANT TO.
#########################################################################
## Tmux Under Terminator : Version 0.9
#########################################################################
## Dependence : 
##      terminator
##      tmux
##      wmctrl
#########################################################################       
## Usage :
## tmuxperr.sh <sessionnane> <application>
## to launch a shell just put "bash" on application argument
#########################################################################

## Variable definition :
WINDOW_NAME="Viperr TMUX Terminal"
TERM_EXIST=$(wmctrl -l|grep "$WINDOW_NAME")
#############################################
## Test syntax :
if [[ -z $1 ||-z $2 ]]; then
    echo "Please give a session name"
    echo -e "\nExample : ./terminux.sh Viperr application"
    exit 0
fi
#############################################
## start point : 
# test if a terminal exist with your given name :
if [ -z "$TERM_EXIST" ]
#NO 
then
        # test if TMUX session exist :
        if [[ -z $(tmux list-session) ]]
            then
                # test if application argument is bash ( no session exist )
                if [[ "$2" = "bash" ]] 
                    then
                        # yes : launch new Tmux session under your shell :
                        terminator  -T "$WINDOW_NAME" -e "tmux -2 new-session -A -D -s $1" &
                    else
                        # no : launch your application under tmux :
                        terminator -T "$WINDOW_NAME"  -e "tmux -2 new-session -A -D -n $2 -s $1 $2 " &
                fi
            else
                # test if application argument is bash ( session exist )
                if [[ "$2" = "bash" ]]
                    then
                        # yes : test if window for your shell exist : 
                        if [[ -n $(tmux list-window -a -F '#{window_name}' | sed -n "/$LOGNAME/ s/\(.*\)@.*$/\1/p") ]]
                            then
                            #Yes : launch terminator and attach your shell windows ( if your have multi shell windows, this script attche only the first found )
                                terminator -T "$WINDOW_NAME" -e "tmux -2 attach -d -t $(tmux list-window  -a -F '#{window_name}|#{window_index}.#{pane_index}' | sed -n '/'$LOGNAME'/s/^.*|\(.*\)$/\1/p' | head -1) " &
                        
                            else
                                #No : Launch terminator with new shell window
                                terminator -T "$WINDOW_NAME" -e "tmux -2 attach-session \; new-window" &
                        fi
                    else
                        #No : test if window for your application exist : 
                        appli=$(tmux list-window -a -F '#{window_name}' | grep -i "$2"| cut -d " " -f 1)
                        if [[ -n  $appli ]]
                            then
                                #Yes : launch terminator and attach your application
                                terminator -T "$WINDOW_NAME" -e "tmux -2 attach -d -t $1:$appli" &

                            else
                                #No : Launch terminator with new window for your application
                                terminator -T "$WINDOW_NAME" -e "tmux -2 attach-session \; new-window $2" &
                        fi
                fi
        fi
#YES 
else
    # test if application argument is bash ( terminal open )
    if [[ "$2" = "bash" ]]
        then
            #yes : test if a shell windows exist : 
            if [[ "$LOGNAME" = $(tmux list-window -a -F '#{window_name}' | sed -n "/$LOGNAME/ s/\(.*\)@.*$/\1/p") ]]
                then
                    #yes : Select the First shell window
                    tmux -2 select-window -t "$1:$(tmux list-window -a -F '#{window_name}' | grep "$LOGNAME")"
                else
                    #No : Start new shell window
                    tmux -2 new-window -t "$1"
            fi

        else
            # NO : test if your application windows exist : 
            if [[ -n  $(tmux list-window -a -F '#{window_name}' | grep -i "$2") ]]
                then
                    #yes : Select your application window
                    tmux -2 select-window -t "$1:$(tmux list-window -a -F '#{window_name}' | grep -i "$2")"
                else
                    #no : Start new window for your application 
                    tmux -2 new-window -t "$1" -n "$2" "$2"
            fi
    fi
fi
#Focus on your terminal
wmctrl -a "$WINDOW_NAME"

D) Enfin on passe a l'intégration dans openbox :

Dans votre menu vous pouvez donc ajouter ceci pour le terminal :

		<item label="Terminal">
			<action name="Execute">
				<execute>~/.tmux/tmuxperr.sh Viperr bash</execute>
			</action>
		</item>

Et pour weechat par exemple ( ou tout autre application en cli :

		<item label="weechat">
			<action name="Execute">
				<execute>~/.tmux/tmuxperr.sh Viperr weechat</execute>
			</action>
		</item>

Enfin si vous avez un key binding dans votre openbox pour lancer votre terminal il faudra le modifier dans votre rc.xml
        Exemple chez moi la touche "Windows+t" nous donne :

    <keybind key="W-t">
      <action name="Execute">
        <startupnotify>
          <enabled>true</enabled>
          <name>Terminal</name>
        </startupnotify>
        <command>/home/fthouin/.tmux/tmuxperr.sh Viperr bash</command>
      </action>
    </keybind>

Have fun !!


source :
http://denisrosenkranz.com/tuto-personn … iguration/
http://gerard.geekandfree.org/blog/2010 … rminaux-1/
http://gerard.geekandfree.org/blog/2011 … -partie-2/
http://tmux.sourceforge.net/
Channel irc : irc.freenode.net chan #tmux

Dernière modification par penthium2 (02-04-2015 12:12:05)


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

Hors ligne

#2 02-04-2015 12:06:06

azgarech
Crazy one

Re : tmux + wmctrl + terminator + openbox = Bonheur :D

Tip Top merci !!


Security is always excessive until it’s not enough. — Robbie Sinclair

Hors ligne

#3 02-04-2015 14:17:36

Balam
Archey - KDEiste

Re : tmux + wmctrl + terminator + openbox = Bonheur :D

me restera juste a adapter pour le menu KDE ^^ merci Viperr


config 1: AMD FX 4100 Black Edition / 8 Go DDR3 / 2.5 To / Nvidia GeForce GT220 1Go
laptop : DELL Inspiron 15" serie 7000 / i7-4510U / 16Go DDR3 / 1To hybrid (8Go) / intel HD 4000 + NVidia GT 750M / dualboot : W8.1 + archlinux
config 2: AMD FX 8350 Black Edition / 32 Go DDR3 / 500 Go Velociraptor + 2 To / Nvidia GeForce GTX660 2Go
Distro: Arch Linux / Desktop: KDE

Hors ligne

#4 02-04-2015 18:17:01

ZeR0-@bSoLu
Membre

Re : tmux + wmctrl + terminator + openbox = Bonheur :D

Merci du post viperr big_smile fatality combo tongue


Mess With The Bests
Die Like The Rest

Hors ligne

#5 02-04-2015 20:26:47

Valentin
Membre

Re : tmux + wmctrl + terminator + openbox = Bonheur :D

J'ai fais un paquet Debian pour les intéressés : https://valentinovd.sollidi.us/repo/vov … -1_all.deb

Hors ligne

#6 02-04-2015 20:36:14

penthium2
Modérateur

Re : tmux + wmctrl + terminator + openbox = Bonheur :D

GG et mille merci valentin, en cas d'updat edu script je le posterais ici bas


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

Hors ligne

#7 04-04-2015 02:50:26

Cabsud
Membre

Re : tmux + wmctrl + terminator + openbox = Bonheur :D

Merci viperr !
Faudra que je m'y remette à tmux mais en changeant ce satané raccourci emac <ctrl+b> en <ctrl+a> à la screen (pas pratique du tout sinon) .
D'ailleurs chez Debian il me semble qu'il y a une panoplie de config type à disposition dans le paquet d'origine.

Hors ligne

#8 04-04-2015 08:24:50

penthium2
Modérateur

Re : tmux + wmctrl + terminator + openbox = Bonheur :D

et il existe tmuxinator ! faut que je le regarde de plus pret big_smile


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

Hors ligne

#9 04-04-2015 14:05:49

Cabsud
Membre

Re : tmux + wmctrl + terminator + openbox = Bonheur :D

Je ne connaissais pas du tout cette bestiole tmuxinator, ça en fait des choses à voir ... ^^

Hors ligne

#10 04-04-2015 19:42:59

penthium2
Modérateur

Re : tmux + wmctrl + terminator + openbox = Bonheur :D

vive  dnf search tmux big_smile

=============================== Non spécifié, correspond à : tmux ===============================
tmux.x86_64 : A terminal multiplexer
tmux-powerline.noarch : Powerline for tmux
tmuxinator-doc.noarch : Documentation for tmuxinator
tmuxinator.noarch : Create and manage complex tmux sessions easily

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

Hors ligne

#11 04-04-2015 19:48:54

Cabsud
Membre

Re : tmux + wmctrl + terminator + openbox = Bonheur :D

Décidement Fedora offre toujours des surprises, mais j'ai changé de crèmerie ces derniers mois on verra plus tard wink

Hors ligne

Pied de page des forums