Skip to content

I3 Window Manager

Ou manager de fenêtres I3 pour les francophones.

Vous trouverez ici un certain nombre de "bon plans" pour faciliter votre vie avec I3WM.

Où changer la configuration

Le fichier de configuration de I3 se trouve ici:

~/.config/i3/config
Et en plus c'est du text, relativement compréhensible !

Tuer une application

Pour quiter une application, la pluspart du temps l'application propose un racourcis pour quitter:

  • Ctrl+Q
  • Alt+F4

Mais dans certains cas, l'application ne fourni pas de racourcis, comme I3 ne nous donne pas de petite croix cerclée de rouge, il faut alors tuer l'application. Attention à être dans le context de la bonne application!

Dans ce cas, utiliser Super+Shift+A; oui oui, A alors que la doc dit Q...

Et bien oui pauvres frenshies que nous somme, les touches sont celles d'un clavier QWERTY et pas AZERTY (au moins au moment où j'ecris ces lignes au moins). Sinon, vous pouvez aussi faire en sorte de lier le racourcis à la touche A qui donnera bien un kill avec la touche Q: facile non?

Microsoft Teams et ses notifications !

Pour résoudre le problèmes des notifications Microsoft Teams (au moins 3 types de notifications différentes quand même, et je ne sais toujours pas pourquoi...), il faut éditer votre fichier de configuration et ajouter les lignes suivantes:

# Teams notification fixup: allow floating windows
for_window [title="Notification Microsoft Teams" class="microsoft teams - preview"] floating enable
for_window [title="Notification Microsoft Teams" class="Microsoft Teams - Preview"] floating enable
for_window [title="Microsoft Teams Notification" class="microsoft teams - preview"] floating enable
for_window [title="Microsoft Teams Notification" class="Microsoft Teams - Preview"] floating enable

Deplacer un workspace sur un autre moniteur

Il est possible de deplacer tout un workspace d'un moniteur à l'autre en ajoutant ces bindings:

# move focused workspace between monitors
bindsym $mod+Ctrl+Shift+Right move workspace to output right
bindsym $mod+Ctrl+Shift+Left move workspace to output left

Biensur, il est aussi possible de deplacer vers les moniteurs du haut ou du bas si votre configuration le nécessite, mais aussi d'assigner un deplacement vers un moniteur donné.

Renommer les workspaces

Par défaut, les workspaces sont simplement numérotés. Il est possible de les renommer au format qu'on veut. Attention, il faut également utiliser ce nouveau nom dans toute commande appliquée sur un workspace renommé. Par exemple, par habitude, j'ouvre mon mailer dans le workspace 1. Je souhaite donc qu'il soit nommé : "1: Mail".

exec --no-startup-id i3-msg 'rename workspace 1 to "1: Mail"'

Pour accéder à ce workspace à travers le binding habituel Touche Meta + 1, il est important de surcharger ce binding avec le nouveau nom de workspace:

bindsym $mod+1 workspace 1: Mail
$mod a été associé à la touche de votre choix au début de votre fichier de configuration (touche windows dans cet exemple) : set $mod Mod4

Exécuter un programme automatiquement au démarrage

Il est possible d'exécuter automatiquement un ou plusieurs programmes, sur un workspace spécifique si on le souhaite, au démarrage du window manager:

# Open firefox in workspace 2: Web (previously renamed)
exec --no-startup-id i3-msg 'workspace 2: Web; exec firefox;'

Assigner un programme à un workspace

À défaut d'exécuter automatiquement un programme au démarrage du window manager, il est possible de faire en sorte qu'un programme soit automatiquement associé à un workspace. Par exemple, je souhaite que Skype soit automatiquement toujours sur le workspace 9:

assign [class="Skype"] 9

Un programme peut être défini par class ou title.

Changer la taille d'une fenêtre

Il faut activer le mode "Resize" et définir un binding pour agrandir ou rétrécir la fenêtre (hauteur et largeur). S'applique sur la fenêtre active.

# Binding to activate Resize mode
bindsym $mod+r mode "Resize"

# Define Resize mode
mode "Resize" {

        # same bindings, but for the arrow keys
        bindsym Left        resize shrink width 1 px or 1 ppt
        bindsym Down        resize grow height 1 px or 1 ppt
        bindsym Up          resize shrink height 1 px or 1 ppt
        bindsym Right       resize grow width 1 px or 1 ppt

        # back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
}

Styling de l'i3bar

À mettre dans :

bar { ... }

Couleurs

colors {
  # Background color
  background #000000

  # class              border     background    text
  focused_workspace    #353434    #e5e5e5       #000000
  active_workspace     #333333    #5f676a       #ffffff
  inactive_workspace   #333333    #222222       #888888
  urgent_workspace     #2f343a    #900000       #ffffff
}

i3status

status_command i3status --config ~/.i3status.conf | i3status-title-on-bar --color '#111'

i3status-title-on-bar permet d'afficher dans l'i3bar le titre de la fenêtre courante (https://github.com/rholder/i3status-title-on-bar)

Exemple de conf i3status :

general {
  colors = true
  interval = 1
  output_format = "i3bar"
  color_good = "#00FF00"
  color_degraded = "#FFFF00"
  color_bad = "#FF0000"
  color_separator = "#B3BEFF"
}

order += "volume master"
order += "disk /"
order += "wireless wlp2s0"
order += "ethernet _first_"
order += "battery 0"
order += "time"

wireless wlp2s0 {
  format_up = " : %ip (%quality at %essid)"
  format_down = " : "
}

ethernet _first_ {
  # if you use %speed, i3status requires root privileges
  format_up = " : %ip (%speed)"
  format_down = " : "
}

battery 0 {
  format_down = ""
  status_bat = " "
  status_chr = " "
  status_full = " "
  path = "/sys/class/power_supply/BAT%d/uevent"
  low_threshold = 15
  integer_battery_capacity = true
  last_full_capacity = true
  format = "%status %percentage %remaining"
}

time {
  format = " %d-%m-%Y   %H:%M:%S"
}

disk "/" {
  format = " %free"
}

volume master {
  format = "  %volume"
  format_muted = ""
  device = "default"
  mixer = "Master"
  mixer_idx = 0
}