i3 est un gestionnaire de fenêtre par pavage. Son but est de fournir un code et une configuration clairs, bien documentés, faciles à maintenir et à utiliser.
Il gère bien entendu les moniteurs multiples ainsi que l'encodage UTF-8.
Son but est d'être léger tout en étant moderne et extrêmement personnalisable.
Il fonctionne selon une logique d'arborescence:
Vous travailler au sein d'un espace de travail. Au démarrage, un seul est actif par défaut. Les autres se créeront au fur et à mesure que vous les “peuplerez” en ouvrant des fenêtres en leur sein. Un espace de travail qui n'accueille aucune fenêtre est “détruit”.
Une fenêtre seule représente un container. Vous pouvez ajouter des fenêtres à ce container en le divisant (horizontalement ou verticalement (voir ci-après dans le fichier de configuration en exemple)).
Ainsi nous avons:
**espace de travail** | |_container 1 | |_fenêtre seule (donc fenêtre=container) | |_container 2 | |_fenêtre "iceweasel" | |_fenêtre "terminal"
Le but de ce tutoriel est de présenter i3 et ses utilitaires et de permettre à l'utilisateur de le mettre sur pied rapidement.
Pour en savoir plus, je vous recommande vivement la lecture du très bon guide pour i3: http://i3wm.org/docs/userguide.html
i3 est disponible dans les dépôts. Pour l'installer:
apt-get install i3
Ce meta-paquet installera plusieurs binaires:
Le démarrage peut-être différent selon le gestionnaire de connexion que vous utilisez (gdm3, kdm, slim,…). Toutefois i3, lors de son installation depuis les dépôts est configuré automatiquement en tant que'un des gestionnaires de fenêtres du système et sera donc disponible au login.
Si cela n'était pas le cas, vous pouvez définir cela grâce à la commande:
update-alternatives --install /usr/bin/x-window-manager x-window-manager /usr/bin/i3 20
Globalement la configuration de i3 est très bien documentée et claire. Elle est donc accessible aux utilisateurs souhaitant bidouiller leur configuration facilement.
Lors du premier lancement d'i3, un petit assistant vous demandera la touche de modification que vous souhaitez utiliser (Alt par défaut mais beaucoup préféreront la touche ⊞ Win). Il en découle le paramétrage du fichier de configuration
~/.i3/config
pour votre clavier (azerty).
Et c'est au sein de ce fichier que tout se paramètre! Plutôt que de passer en revue les différentes sections, je vous propose mon fichier de configuration commenté (et en français s'il vous plait ):
# Ce fichier a été auto-généré par i3-config-wiazrd(1). Il ne sera pas écrasé, vous pouvez donc le modifier à votre guise. # # Si vous devez changer de configuration de clavier (azerty <=> qwerty), effacez ce fichier et relancez: # i3-config-wizard(1). # # i3 config file (v4) # # Merci de lire http://i3wm.org/docs/userguide.html pour l'ensemble des paramètres possibles! # # Définition de Mod4 (touche Super ou Windows) en tant que modificateur principal: set $mod Mod4 # Définition de Alt en tant que modificateur secondaire (pour mes raccourcis): set $alt Mod1 # police des titres de fenêtres. ISO 10646 = Unicode font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 # Utilisation de la souris+$mod pour déplacer les fenêtres flottantes: floating_modifier $mod # ouvrir un terminal bindsym $mod+Return exec i3-sensible-terminal # fermer (tuer) la fenêtre ayant le focus: bindsym $mod+Shift+Q kill # démarrer le lanceur de menu 'dmenu' (paquet suckless-tools) bindsym $mod+d exec dmenu_run # déplacer le focus entre les fenêtres avec jklm: bindsym $mod+j focus left bindsym $mod+k focus down bindsym $mod+l focus up bindsym $mod+m focus right # ou avec les touches fléchées: bindsym $mod+Left focus left bindsym $mod+Down focus down bindsym $mod+Up focus up bindsym $mod+Right focus right # déplacer la fenêtre active avec jklm: bindsym $mod+Shift+J move left bindsym $mod+Shift+K move down bindsym $mod+Shift+L move up bindsym $mod+Shift+M move right # ou avec les touches fléchées: bindsym $mod+Shift+Left move left bindsym $mod+Shift+Down move down bindsym $mod+Shift+Up move up bindsym $mod+Shift+Right move right # diviser horizontalement (ex: mod+h suivi de mod+Entrée crée un nouveau terminal à côté du premier) bindsym $mod+h split h # diviser verticalement (ex: mod+v suivi de mod+Entrée crée un nouveau terminal sous le premier) bindsym $mod+v split v # mise en plein écran de la fenêtre active: bindsym $mod+f fullscreen # changer le mode d'affichage des containers: # stacked: fenêtres maximisées, barres de titre des fenetres ouvertes empilées, # tabbed: fenêtres maximisées, barres de titre des fenetres ouvertes les unes à côtés des autres, comme des onglets, # default: tiling (pavage). bindsym $mod+s layout stacking bindsym $mod+z layout tabbed bindsym $mod+e layout default # alterner l'affichage de la fenêtre active entre flottant et tiling: bindsym $mod+Shift+space floating toggle # alterner le focus entre les fenêtres en tiling et celle(s) flottante(s) : bindsym $mod+space focus mode_toggle # donner le focus au container père: bindsym $mod+q focus parent # donner le focus au container fils: # bindsym $mod+d focus child # se déplacer entre espaces de travail: bindsym $mod+ampersand workspace 1 bindsym $mod+eacute workspace 2 bindsym $mod+quotedbl workspace 3 bindsym $mod+apostrophe workspace 4 bindsym $mod+parenleft workspace 5 bindsym $mod+minus workspace 6 bindsym $mod+egrave workspace 7 bindsym $mod+underscore workspace 8 bindsym $mod+ccedilla workspace 9 bindsym $mod+agrave workspace 10 # déplacer la fenêtre active vers un espace de travail: bindsym $mod+Shift+ampersand move container to workspace 1 bindsym $mod+Shift+eacute move container to workspace 2 bindsym $mod+Shift+quotedbl move container to workspace 3 bindsym $mod+Shift+apostrophe move container to workspace 4 bindsym $mod+Shift+5 move container to workspace 5 bindsym $mod+Shift+6 move container to workspace 6 bindsym $mod+Shift+7 move container to workspace 7 bindsym $mod+Shift+8 move container to workspace 8 bindsym $mod+Shift+9 move container to workspace 9 bindsym $mod+Shift+0 move container to workspace 10 # recharger la configuration d'i3 (relecture du présent fichier, ne nécessite pas de redémarrage d'i3): bindsym $mod+Shift+C reload # redémarrer i3 sur place (conserve la session et l'organisation actuelle, peut être utiliser pour une mise à jour d'i3) bindsym $mod+Shift+R restart # quitter i3 (met fin à votre session X): bindsym $mod+Shift+E exit # redimensionner la fenêtre (la souris peut aussi être utilisée): mode "resize" { # Ces raccourcis fonctionnent dès l'entrée en mode "resize" # j pour réduire la largeur de 10 # m pour agrandir la largeur de 10 # k pour agrandir la hauteur de 10 # l pour réduire la hauteur de 10 bindsym j resize shrink width 10 px or 10 ppt bindsym k resize grow height 10 px or 10 ppt bindsym l resize shrink height 10 px or 10 ppt bindsym m resize grow width 10 px or 10 ppt # idem mais avec les touches fléchées bindsym 113 resize shrink width 10 px or 10 ppt bindsym 116 resize grow height 10 px or 10 ppt bindsym 111 resize shrink height 10 px or 10 ppt bindsym 114 resize grow width 10 px or 10 ppt # Entrée ou Echap pour revenir en mode normal bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+r mode "resize" # i3bar permet l'affichage des espaces de travail (si i3status est disponible, des infos systèmes sont affichées) bar { # démarrer i3status dans i3bar status_command i3status # position de la barre (top | bottom) position top # le system-tray reste sur l'écran principal tray_output primary # définition des couleurs des noms d'espaces de travail dans i3bar: colors { # <bordure> <arrière plan> <texte> focused_workspace #FF00FF #111111 #00FF00 # définition de la couleur de police de i3status: statusline #EEEEEE } } ############################################## ## Début de ma configuration personnalisée: ## ############################################## # Le focus ne suit pas la souris (évite le coup de paume sur le touchpad) focus_follows_mouse no # Lors du passage à un workspace, retaper le raccourci de ce workspace ramène à celui dont je viens workspace_auto_back_and_forth yes # Comportement des nouveaux containers (tabbed | stack | default ie tiled) workspace_layout default # Bordure des nouvelles fenêtres (normal | none | 1pixel | pixel n) # fenêtres normales: new_window 1pixel # fenêtres flottantes: new_float normal # Assignation des logiciels à un espace: assign [class="Iceweasel"] 1 assign [class="Geany"] 3 # Applicationx à démarrer avec i3 (ce sont des exemples persos, vous mettez bien ce que vous voulez ;): exec /usr/bin/nm-applet exec /usr/bin/volumeicon exec sh /home/user/.screenlayout/i3.sh exec /usr/bin/feh --bg-scale Images/Wallpapers/i3-blanc.png # Modification des couleurs de la fenêtre ayant le focus: # class bordure fond texte indicateur client.focused #FF00FF #111111 #00FF00 #FF00FF # Il est possible de définir des raccourcis d'applications de 2 façons: # bindsym renvoie au symbole de la touche (ça peut être aléatoire selon la disposition du clavier); # bindcode renvoie au code de la touche obtenu via l'utilitaire de test d'évenements xev", # c'est donc une méthode préférable pour les touches particulières: # Définition des raccourcis d'applications (avec bindsym) #bindsym $mod+$alt+g exec gimp bindsym $mod+$alt+m exec icedove bindsym $mod+$alt+i exec iceweasel bindsym $mod+$alt+z exec sakura -x mocp bindsym $mod+$alt+r exec sakura -x ranger bindsym $mod+$alt+e exec sakura -x emacs bindsym $mod+$alt+a exec xfe bindsym $mod+p exec sh /home/sogal/.script/dmenu.sh bindsym $alt+p exec sh /home/sogal/.script/dossier.sh # Définition des raccourcis d'applications (avec bindcode) bindcode 122 exec amixer -q set Master 5dB- unmute bindcode 123 exec amixer -q set Master 5dB+ unmute bindcode 78 exec i3lock #bindcode 220 exec sakura -x finch #bindcode 173 exec mocp --previous #bindcode 172 exec mocp --next bindcode 172 exec mocp --toggle-pause bindcode 107 exec scrot bindcode Control+$alt+119 exec sh /home/sogal/.script/arret.sh # Raccourcis des mouvements entre espaces grâce aux touches fléchées bindsym $mod+$alt+Left workspace prev bindsym $mod+$alt+Right workspace next # Raccourci pour alterner entre les modes de bordures (normale, 1 pixel ou aucune) bindsym $mod+b border toggle
Voilà, nous avons fait le tour du fichier de configuration, des paramètres présents par défaut et ceux que vous pouvez rajouter.
Voici quelques captures des différents modes d'affichage (je n'ai capturé que les barres de titre):
Mode par defaut avec 3 fenêtres:
Mode par onglet (Mod+Z):
Mode empilé (stack) (Ctrl+S):
Les modes permettent de redéfinir ponctuellement la configuration de son espace de travail comme par exemple le mappage du clavier. Ici, on définit un mode Commande qui permet de lancer ses logiciels favoris.
mode "Commande" { bindsym f exec "/usr/bin/firefox"; mode "default" # [...] Et ainsi d suite bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+c mode "Commande"
De cette façon combinaison des touches meta + C+F va lancer firefox puis retourne au mode normal.
Nous allons utiliser les modes afin de switcher entres les workspaces. J'utilise les lettres alphabetiques pour definir mes workspaces. Pour ne pas interférer avec les raccourcis de base d'I3, nous créons un mode “$mode_workspace”. Une fois activé, le nombre de workspace est sans limite !!
# declaration des workspaces set $WSa a: Mais set $WSb b: VoitQui set $WSc c: Voila set $WSd d: InspecteurGadget! # definition du message affiché lors de l'activation du mode set $mode_workspace Special A-Z Workspaces | switch workspace (a - b - c - d) | move to Shift+(a - b - c - d) | # configuration du mode mode "$mode_workspace" { bindsym a workspace $WSa, mode "default" bindsym Shift+a move container to workspace a, mode "default" bindsym b workspace $WSb, mode "default" bindsym Shift+b move container to workspace b, mode "default" bindsym c workspace $WSc, mode "default" bindsym Shift+c move container to workspace c, mode "default" bindsym d workspace $WSd, mode "default" bindsym Shift+d move container to workspace d, mode "default" # back to normal: Enter or Escape bindsym Return mode "default" bindsym Escape mode "default" } on defini un raccourcis pour le mode bindsym $mod+Shift+ mode "$mode_workspace"
Voila; Enjoy ! ps: Attention, Veuillez bien vérifier les lettres des raccourcis pour ne pas casser votre configuration actuelle, 2 raccourcis ou information dupliquer entrainera une erreur lors du lancement d'i3.
Voyons maintenant comment personnaliser l'affichage de i3status. Tout ce fait via le fichier de configuration:
~/.i3status.conf
Pour avoir une base vous pouvez le copier depuis
/etc/i3status.conf
Il est composé de 3 parties:
C'est ici que vous pouvez définir la mise en couleur ou l'intervalle d'actualisation des informations.
general { colors = true interval = 5 }
Il s'agit de la liste des modules qui vont s'afficher et qui seront définis par la suite.
En déplaçant les lignes, vous modifiez l'ordre d'affichage des informations dans la i3bar.
Par défaut, tous les modules disponibles ne sont pas affichés. Vous en trouverez d'autres dans le man de i3status.
Exemple de module d'affichage du son:
volume master { format = "♪: %volume" device = "default" mixer = "Master" mixer_idx = 0 }
— Sogal 'Seb' Punx 28/11/2013 18:26
:e ~/.vim/syntax/i3.vim |read https://raw.githubusercontent.com/PotatoesMaster/i3-vim-syntax/master/syntax/i3.vim | w
Ajouter la ligne dans le fichier (et y supprimer les éventuelles lignes inode/directory
) :
inode/directory=caja.desktop
ou
inode/directory=Thunar.desktop
xdg-open .
polybar est une application qui permet de formater des données afin de les afficher dans une barre de statut.
polybar est utilisée dans la session i3wm sur nakeDeb mais vous pouvez l'activer sur un autre environnement.
Polybar