i3 (Français) - ArchWiki

Jump to content
From ArchWiki

État de la traduction: Cet article est la version francophone de i3. Date de la dernière traduction: 2023-01-12. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

Related articles

- Comparison of tiling window managers
- Window manager (Français)

i3 est un gestionnaire de fenêtres par pavage dynamique inspiré de wmii qui s'adresse principalement aux développeurs et aux utilisateurs avancés.

Les objectifs fixés pour i3 incluent une documentation claire, un support multi-moniteur approprié, une structure en arborescence pour les fenêtres, et différents modes comme dans Vim.

## Installation

i3 peut être installé avec le paquet i3-wm.

Un groupe de paquets i3 est également disponible. Il comprend le gestionnaire de fenêtres, un écran de verrouillage et deux programmes qui écrivent une ligne d'état dans i3bar via «stdout» (la sortie standard).

Note: i3-gaps (un fork de i3 avec des espaces entre les fenêtres et d'autres fonctionnalités) a récemment été fusionné dans i3-wm, et n'est donc plus disponible. Installez plutôt le paquet i3-wm.

## Démarrage

### Depuis le tty

Exécutez `i3` avec xinit.

### Gestionnaire d'affichage

i3-wm inclut `i3.desktop` comme Xsession qui démarre le gestionnaire de fenêtres. `i3-with-shmlog.desktop` active les journaux (utiles pour le débogage). i3-gnomeAUR intègre i3 dans GNOME.

## Utilisation

Consultez la documentation officielle pour plus d'informations, notamment le Guide de l'utilisateur d'i3.

### Raccourcis clavier

Dans i3, les commandes sont invoquées avec une touche modificatrice, désignée par `$mod`. Cette touche est `Alt` (Mod1) par défaut, avec `Super` (Mod4) comme alternative populaire. Super est la touche habituellement représentée sur un clavier par l'icône Windows, ou sur un clavier Apple par la touche Commande.

Consultez la carte de référence d'i3 et Utiliser i3 pour connaître les valeurs par défaut. Consultez les raccourcis clavier pour ajouter de nouveaux raccourcis.

Les utilisateurs de claviers non-Qwerty peuvent souhaiter contourner l'"assistant de configuration" comme décrit ci-dessous.

Si vous passez d'un gestionnaire de fenêtres ou d'un environnement de bureau à un autre, envisagez d'utiliser sxhkd ou un autre programme indépendant de l'environnement pour gérer les raccourcis. Plus d'informations peuvent être trouvées dans Keyboard shortcuts (Français)#Xorg et Wayland.

### Conteneurs et mises en page

i3 gère les fenêtres dans une structure arborescente, avec des conteneurs comme éléments de construction. Cette structure se ramifie avec des scissions horizontales ou verticales. Les conteneurs sont tuilés par défaut, mais peuvent être disposés en onglets or piles, ainsi que rendus flottants (comme pour les fenêtres de dialogue). Les fenêtres flottantes sont toujours au premier plan.

Consultez l'arborescence dans i3 et Les conteneurs et la structure de données de l'arborescence pour plus de détails.

### Lanceur d'application

i3 utilise dmenu comme lanceur d'applications, qui est lié par défaut à `$mod+d`. Comme il s'agit d'une dépendance optionnelle, dmenu doit d'abord être installé avant que cette fonctionnalité puisse être utilisée.

i3-wm contient i3-dmenu-desktop, une enveloppe Perl pour dmenu qui utilise les «desktop entries» pour créer une liste de toutes les applications installées. Alternativement, le paquet j4-dmenu-desktop-gitAUR peut être utilisé.

rofi est un remplacement populaire de dmenu et plus, qui peut lister les entrées du bureau.

#### KRunner comme lanceur d'applications dans KDE Plasma/i3

Il est possible de faire tourner i3 en même temps que KDE Plasma comme indiqué ici : KDE#Use a different window manager.

Lorsque Plasma est exécuté avec `KDEWM=/usr/bin/i3`, on peut définir KRunner comme lanceur d'application alternatif avec `$mod+d` en ajoutant ce qui suit à la configuration de i3 :

    ~/.config/i3/config

    set $menu --no-startup-id qdbus org.kde.krunner /App display
    bindsym $mod+d exec $menu

## Configuration

Consultez Configurer i3 pour plus de détails. Le reste de cet article suppose que le fichier de configuration i3 se trouve dans le dossier `~/.config/`.

### Assistant de configuration et dispositions alternatives de clavier

Lorsque i3 est lancé pour la première fois, il propose de lancer l'assistant de configuration i3-config-wizard. Cet outil crée `~/.config/i3/config` en réécrivant un fichier de configuration modèle dans `/etc/i3/config.keycodes`. Il apporte deux modifications au modèle par défaut :

1. il demande à l'utilisateur de choisir une clé modificatrice par défaut, qu'il ajoute au modèle en une seule ligne, comme `set $mod Mod1` ; et
2. il remplace toutes les lignes bindcode par des lignes bindsym correspondant à la disposition actuelle du clavier de l'utilisateur.

L'étape 2 est conçue pour s'assurer que les quatre raccourcis de navigation, `j`, `k`, `l` et `;` sur un clavier Qwerty, seront mappés à des keysyms qui ont le même emplacement, par exemple `h`, `t`, `n`, `s` sur un clavier Dvorak. L'effet secondaire de cette magie est que jusqu'à quinze autres symboles de touches peuvent être remappés de manière à rompre la mnémonique - de sorte que, pour un utilisateur de Dvorak, "redémarrer" est lié à `$mod1+p` au lieu de `$mod1+r`, "diviser horizontalement" est lié à `$mod1+d` au lieu de `$mod1+h`, et ainsi de suite.

Par conséquent, les utilisateurs d'autres dispositions de clavier qui veulent des raccourcis clavier simples, qui correspondent aux raccourcis données dans les tutoriels, peuvent préférer contourner l'"assistant de configuration". Pour ce faire, il suffit de copier `/etc/i3/config` dans `~/.config/i3/config`. (ou `~/.i3/config`), et de modifier ce fichier.

Notez qu'une configuration basée sur les codes de touches est également possible, par exemple pour les utilisateurs qui changent souvent de disposition de clavier, mais qui veulent que les raccourcis i3 restent les mêmes.

### Démarrage automatique

Ajouter une commande `exec` dans le fichier `~/.config/i3/config` pour executer une commande au démarrage. Par exemple :

    exec terminator

L'utilisation d'une commande `exec_always` à la place garantira que la commande est également exécutée chaque fois que i3 est redémarré.

Alternativement, vous pouvez utiliser XDG Autostart.

### i3bar

En plus d'afficher des informations sur l'espace de travail, i3bar peut agir comme une entrée pour i3status ou une alternative, comme celles mentionnées dans la section suivante. Par exemple :

    ~/.config/i3/config

    bar {
        output            LVDS1
        status_command    i3status
        position          top
        mode              hide
        workspace_buttons yes
        tray_output       none

        font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1

        colors {
            background #000000
            statusline #ffffff

            focused_workspace  #ffffff #285577
            active_workspace   #ffffff #333333
            inactive_workspace #888888 #222222
            urgent_workspace   #ffffff #900000
        }
    }

Consultez Configurer d'i3bar pour plus de détails.

#### Alternatives à i3bar

Certains utilisateurs peuvent préférer des panneaux tels que ceux fournis par les Environnements de bureau conventionnels. Cela peut être réalisé dans i3 en lançant l'application de panneau de son choix au démarrage.

Par exemple, pour utiliser le panneau Xfce (xfce4-panel), ajoutez la ligne suivante n'importe où dans `~/.config/i3/config` :

    exec --no-startup-id xfce4-panel --disable-wm-check

i3bar peut être désactivé en commentant la section `bar{ }` de `~/.config/i3/config`, ou en définissant un keybind pour activer la barre :

    ~/.config/i3/config

    # bar toggle, hide or show
    bindsym $mod+m bar mode toggle

Les remplacements indépendants de l'environnement de bureau sont listés ci-dessous :

- polybar — Un outil rapide et facile à utiliser pour créer des barres d'état.

  https://github.com/jaagr/polybar || polybar

- excalibar — Barre d'état légère mais personnalisable écrite en C.

  https://github.com/cylgom/excalibar || excalibar-gitAUR

### i3status

Copiez les fichiers de configuration par défaut dans le répertoire de l'utilisateur :

    $ cp /etc/i3status.conf ~/.config/i3status/config

Tous les plugins ne sont pas définis dans la configuration par défaut et certaines valeurs de configuration peuvent être invalides pour votre système, elles doivent donc être mises à jour en conséquence. Consultez i3status(1) pour plus de détails.

#### Remplacements de i3status

- conky — Moniteur système hautement extensible. Pour l'utilisation avec i3bar, consultez ce tutoriel.

  https://github.com/brndnmtthws/conky || conky

- i3blocks — Extensible via des scripts shell. Elle peut gérer les événements de clic, les interruptions et la définition des intervalles de rafraîchissement sur une base par bloc.

  https://github.com/vivien/i3blocks || i3blocks

- i3pystatus — Barre d'état Python 3 extensible avec de nombreux plugins et options de configuration par défaut.

  https://github.com/enkore/i3pystatus || i3pystatus-gitAUR

- j4status — Prestation d'une barre d'état, configurable via des plugins, et écrite en C. Des plugins supplémentaires sont fournis par j4status-plugins-gitAUR.

  https://sardemff7.github.io/j4status/ || j4status-gitAUR

- goi3bar — Remplacement d'i3status écrit en Go. Piloté par un fichier de configuration avec plusieurs plugins, des options de simultanéité et un support riche en plugins.

  https://github.com/denbeigh2000/goi3bar/ || goi3bar-gitAUR

- goblocks — Remplacement rapide et léger de i3status écrit en Go.

  https://github.com/davidscholberg/goblocks || goblocksAUR

- bumblebee-status — Générateur de barre d'état Python thématisable.

  https://github.com/tobi-wan-kenobi/bumblebee-status || bumblebee-statusAUR

- ty3status — Remplacement d'i3status écrit en Typescript. Construit avec un support de première classe pour les blocs javascript.

  https://github.com/mrkmg/ty3status || ty3status-gitAUR

- i3status-rust — Remplacement très efficace et riche en fonctionnalités écrit en Rust. Peut gérer les mises à jour push, les intervalles de mise à jour individuels, les thèmes et les événements de clic.

  https://github.com/greshake/i3status-rust || i3status-rust

- Barista — Barista est un remplacement d'i3status écrit en Go.

  https://github.com/soumya92/barista || not packaged? search in AUR

#### wrappers i3status

- i3cat — Un wrapper basé sur go qui peut concaténer des entrées provenant de plusieurs sources externes. Il peut gérer les événements de clic et transmettre les signaux spécifiés par l'utilisateur à ses sous-processus.

  https://vincent-petithory.github.io/i3cat/ || i3cat-gitAUR

- py3status — Un wrapper i3status extensible écrit en Python.

  https://github.com/ultrabug/py3status || py3status

- YaGoStatus — «Yet Another» remplacement d'i3status écrit en Go.

  https://github.com/burik666/yagostatus || yagostatus-gitAUR

#### Polices avec icônes dans la barre d'état

La prise en charge des polices iconiques est intégrée depuis i3 version 4.20.

- ttf-font-awesome — Icônes vectorielles évolutives qui peuvent être personnalisées avec CSS. Une aide mémoire indique le point Unicode pour chaque glyphe.

  https://fontawesome.com/ || ttf-font-awesome

- ttf-font-icons — Mélange sans chevauchement et de taille cohérente d'Awesome et d'Ionicons. Cela évite également un chevauchement mineur entre DejaVu Sans et Awesome.

  https://kageurufu.net/icons.pdf || ttf-font-iconsAUR.

- ttf-ionicons — La police d'icône premium pour Ionic Framework.

  https://ionicframework.com/docs/ionicons/ || ttf-ioniconsAUR.

Pour combiner des polices, définissez une séquence de repli dans votre fichier de configuration, en séparant les polices par `,` comme suit :

    ~/.config/i3/config

    bar {
      ...
      font pango:DejaVu Sans Mono, Icons 8
      ...
    }

Conformément à la syntaxe de pango, la taille de la police n'est spécifiée qu'une seule fois, à la fin de la liste des familles de polices séparées par des virgules. Le fait de définir une taille pour chaque police aurait pour effet d'ignorer toutes les polices sauf la dernière.

Ajoutez des icônes aux chaînes de format dans `~/.config/i3status/config` en utilisant les numéros d'unicode donnés dans les cheatsheets liés ci-dessus. La méthode de saisie varie selon les éditeurs de texte. Par exemple, pour insérer l'icône "cœur" (numéro unicode f004) :

- dans divers éditeurs de texte gui (par exemple gedit, Leafpad) et terminaux (par exemple GNOME Terminal, xfce4-terminal) : `Ctrl+Shift+u`, `f004`, `Enter`
- dans Emacs : `C-x`, `8`, `RET`, `f004`, `RET`
- dans Vim (en mode insertion) : `Ctrl+v`, `uf004`
- dans urxvt : en maintenant `Ctrl+Shift`, tapez `f004`.

### Émulateur de terminal

Par défaut, l'appui sur `$mod+Enter` lance le `i3-sensible-terminal` qui est un script qui invoque un terminal. Consultez i3-sensible-terminal(1) pour connaître l'ordre dans lequel les terminaux sont invoqués.

Pour lancer le terminal de votre choix, modifiez cette ligne dans `~/.config/i3/config` :

    bindsym $mod+Return exec i3-sensible-terminal

Vous pouvez également définir la variable d'environnement `$TERMINAL`.

### Désactiver le clic sur le titre

Ajoutez `bindsym button1 nop` pour ne pas sélectionner une fenêtre lorsque vous cliquez sur son cadre titre. Utile si votre disposition par défaut est à onglets et que vous cliquez sur les onglets de i3 au lieu de quelque chose dans une application.

## Trucs et astuces

### Sauter à la fenêtre ouverte

- quickswitch-i3 — Utilitaire Python permettant de passer rapidement aux fenêtres et de les localiser dans i3

  https://github.com/OliverUv/quickswitch-for-i3/ || quickswitch-i3AUR

- i3-wm-scripts — Recherche et accès aux fenêtres dont le nom correspond à une expression rationnelle

  https://github.com/yiuin/i3-wm-scripts || not packaged? search in AUR.

- rofi — Recherche et saut vers la fenêtre ouverte et le bloc-notes

  https://github.com/davatorium/rofi || rofi

- i3-easyfocus — Focus et sélection de fenêtres dans i3

  https://github.com/cornerman/i3-easyfocus || i3-easyfocus-gitAUR

- wmfocus — Focus et sélection de fenêtres dans i3 et autres gestionnaires de fenêtres

  https://github.com/svenstaro/wmfocus || wmfocus

- i3-cycle-focus — Fournit d'une fonctionnalité Alt-Tab pour i3

  https://github.com/acrisci/i3ipc-python/blob/master/examples/i3-cycle-focus.py || not packaged? search in AUR

- i3-winmotion — Focus et sélection des fenêtres visibles dans i3

  https://github.com/iiKoe/i3-winmotion || not packaged? search in AUR

### Sauter à la fenêtre urgente

Ajouter à `~/.config/i3/config` : [1]

    bindsym $mod+x [urgent=latest] focus

### Sauvegarde et restauration de la disposition de la fenêtre

À partir de la version 4.8, i3 peut sauvegarder et restaurer la disposition de l'espace de travail. Pour ce faire, les paquets suivants sont nécessaires : perl-anyevent-i3 et perl-json-xs.

Note: Cette section ne fournit qu'un tutoriel rapide sur la manière de sauvegarder la disposition actuelle des fenêtres d'un seul espace de travail et de la restaurer pour une utilisation ultérieure. Consultez la documentation officielle pour plus de détails.

#### Enregistrer la disposition actuelle des fenêtres d'un seul espace de travail

Pour enregistrer la disposition actuelle de la fenêtre, suivez les étapes suivantes :

1. Tout d'abord, exécutez diverses commandes pour ouvrir des fenêtres dans un espace de travail préféré et les redimensionner si nécessaire. Veillez à noter chaque commande exécutée pour chaque fenêtre.
2. Maintenant, dans un nouvel espace de travail, ouvrez un terminal et exécutez ce qui suit :

       $ i3-save-tree --workspace N > ~/.config/i3/workspace_N.json

   où N est le numéro de l'espace de travail préféré. Ceci enregistrera la disposition actuelle de l'espace de travail N dans le fichier `~/.config/i3/workspace_N.json`.
3. Le fichier nouvellement créé doit être édité. Ceci peut être fait automatiquement avec la commande suivante :

       $ sed -i 's|^\(\s*\)// "|\1"|g; /^\s*\/\//d' ~/.config/i3/workspace_N.json

#### Restaurer la disposition des fenêtres de l'espace de travail

Il y a deux façons de restaurer la disposition de l'espace de travail : en écrivant un script, ou en modifiant `~/.config/i3/config` pour charger automatiquement la disposition. Dans cette section, seul le premier cas sera considéré. Pour le second cas, reportez-vous à la documentation officielle.

Pour restaurer la mise en page sauvegardée dans la section précédente, écrivez un fichier nommé `load_layout.sh` avec le contenu suivant :

- Les lignes de départ :

    ~/load_layout.sh

    #!/bin/sh
    i3-msg "workspace M ; append_layout ~/.config/i3/workspace_N.json"

où M est le numéro de l'espace de travail dans lequel vous souhaitez charger la mise en page précédemment enregistrée et N est le nombre d'espaces de travail enregistrés dans la section précédente.

- Et les commandes utilisées dans la section précédente pour obtenir les fenêtres préférées, mais entre parenthèses et avec une esperluette ajoutée avant les dernières parenthèses.

Par exemple, si la disposition sauvegardée contient trois fenêtres `uxterm` :

    ~/load_layout.sh

    #!/bin/sh

    # Tout d'abord, nous ajoutons la présentation sauvegardée de l'espace de travail N à l'espace de travail M.
    i3-msg "workspace M ; append_layout ~/.config/i3/workspace_N.json"

    # Et enfin nous remplissons les conteneurs avec les programmes qu'ils contenaient
    (uxterm &)
    (uxterm &)
    (uxterm &)

Ensuite, définissez le fichier comme exécutable. Enfin, la mise en page de l'espace de travail N peut être chargée dans l'espace de travail M en exécutant le fichier

    $ ~/load_layout.sh

Astuce: L'ajout de `bindsym $mod+g exec ~/load_layout.sh` à `~/.config/i3/config` et le redémarrage de i3 liera Mod+g pour exécuter le script ci-dessus.
Note: Si le script ci-dessus ne fonctionne pas correctement, consultez la documentation officielle. Les sections swallows de `~/.config/i3/workspace_N.json` doivent être éditées manuellement.

### Conteneurs de bloc-notes

Par défaut, le bloc-note ne contient qu'une seule fenêtre. Cependant, les conteneurs peuvent également être transformés en bloc-notes.

Créez un nouveau conteneur (par exemple, `Mod+Enter`), divisez-le (`Mod+v`) et créez un autre conteneur. Donnez le focus au parent (`Mod+a`), divisez-le dans la direction opposée (`Mod+h`) et créez à nouveau un conteneur.

Mettez au point le premier conteneur (avec le parent au besoin), rendez la fenêtre flottante (`Mod+Shift+Space`) et déplacez-la vers le bloc-notes (`Mod+Shift+-`). Vous pouvez maintenant diviser les conteneurs selon vos préférences.

Note: Les conteneurs ne peuvent pas être redimensionnés individuellement dans les fenêtres flottantes. Redimensionnez les conteneurs avant de rendre les fenêtres flottantes.
Astuce: Lorsque vous n'utilisez que des applications de terminal, envisagez plutôt un multiplexeur tel que tmux.

Consultez aussi [2] for plusieurs bloc-notes.

### Économiseur d'écran et gestion de l'alimentation

Avec Power management#xss-lock vous pouvez enregistrer une application de verrouillage pour votre session i3. L'option `-time` avec xautolock verrouille l'écran après une période de temps donnée :

    xautolock -time 10 -locker "i3lock -i background_image.png" &.

Un fichier de service systemd peut être utilisé pour verrouiller l'écran avant que le système ne soit mis en veille ou en hibernation. Consultez Power management#Suspend/resume service files. Notez que i3lock exige que le type de service soit `forking`.

Consultez également DPMS.

Une autre option consiste à utiliser xidlehookAUR avec betterlockscreenAUR ou tout autre économiseur d'écran. xidlehook est un remplacement de xautolock écrit en Rust, mais avec quelques fonctionnalités supplémentaires. Cela inclut l'option de désactiver le verrouillage lorsque le son est en cours de lecture ou lorsque l'écran est en plein écran. L'option `--timer` est donnée en secondes :

    xidlehook --not-when-audio --not-when-fullscreen --timer 360 "betterlockscreen -l dim" "" &

### Arrêt, redémarrage, verrouillage d'écran

Les combinaisons de touches pour l'arrêt, le redémarrage et le verrouillage de l'écran peuvent être ajoutées à `~/.config/i3/config`. L'exemple ci-dessous suppose que vous avez installé polkit pour permettre aux utilisateurs non privilégiés d'exécuter les commandes gestion de la puissance.

    set $Locker i3lock && sleep 1

    set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
    mode "$mode_system" {
        bindsym l exec --no-startup-id $Locker, mode "default"
        bindsym e exec --no-startup-id i3-msg exit, mode "default"
        bindsym s exec --no-startup-id $Locker && systemctl suspend, mode "default"
        bindsym h exec --no-startup-id $Locker && systemctl hibernate, mode "default"
        bindsym r exec --no-startup-id systemctl reboot, mode "default"
        bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default"

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

    bindsym $mod+Pause mode "$mode_system"

Une fois terminé, une invite vous sera présentée à chaque fois que vous appuierez sur `$mod+pause`. Pour un comportement plus complexe, utilisez un script séparé, et faites-y référence dans le mode. [3]

Note:

- `sleep 1` ajoute un petit délai pour éviter les situations de concurrence avec suspend [4].
- L'argument `-i` pour `systemctl poweroff` provoque un arrêt même si d'autres utilisateurs sont connectés (ceci nécessite polkit) ou que logind le suppose (à tort). [5]

Pour une liste de verrouillages d'écran alternatifs, consultez List of applications/Security#Screen lockers.

### Avaler la fenêtre du terminal

De la même manière que dwm, i3 peut "avaler" la fenêtre actuelle du terminal avec la nouvelle fenêtre GUI lancée à partir de celle-ci. Ceci peut être fait par l'utilisation du paquet i3-swallow-gitAUR.

Par exemple, pour laisser la fenêtre de mpv avaler le terminal d'origine :

    $ swallow mpv video.mp4

Il est également possible de simuler l'avalement du terminal en utilisant un conteneur à onglets ou empilé afin de cacher la fenêtre du terminal lorsque vous ne l'utilisez pas. Cependant, cela présente l'inconvénient d'avoir toujours une liste de fenêtres en haut du conteneur.

### Gestion manuelle des affichages externes

Grâce à xrandr, il existe de nombreuses façons de gérer facilement les écrans des systèmes. L'exemple ci-dessous l'intègre dans le fichier de configuration i3, et se comporte comme la section Power Management ci-dessus.

Ici, un ordinateur portable avec des sorties VGA et HDMI utilisera une sélection de menu pour les activer/désactiver :

    ## Manual management of external displays
    # Set the shortcuts and what they do
    set $mode_display Ext Screen (v) VGA ON, (h) HDMI ON, (x) VGA OFF, (y) HDMI OFF
    mode "$mode_display" {
        bindsym v exec --no-startup-id xrandr --output VGA1 --auto --right-of LVDS1, mode "default"
        bindsym h exec --no-startup-id xrandr --output HDMI1 --auto --right-of LVDS1, mode "default"
        bindsym x exec --no-startup-id xrandr --output VGA1 --auto --off, mode "default"
        bindsym y exec --no-startup-id xrandr --output HDMI1 --auto --off, mode "default"

        # back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
    }
    # Declare here the shortcut to bring the display selection menu
    bindsym $mod+x mode "$mode_display"

Toute fenêtre encore ouverte dans un affichage désactivé reviendra automatiquement à l'affichage actif restant.

La manière la plus simple de déterminer les noms de vos périphériques est de brancher le périphérique que vous souhaitez utiliser et d'exécuter :

    $ xrandr --query

qui affichera les périphériques disponibles et reconnus, ainsi que leurs noms dans le système, afin de définir votre fichier de configuration de manière appropriée.

Consultez la page xrandr ou la page de manuel pour la liste complète des options disponibles, le guide de l'utilisateur d'i3 et/ou la FAQ de i3 sur reddit pour plus d'informations.

### Navigation par onglets ou empilés

Certains navigateurs web n'implémentent pas intentionnellement les onglets, car la gestion des onglets est considérée comme la tâche du gestionnaire de fenêtres, et non celle du navigateur.

Pour laisser i3 gérer votre navigateur sans onglet, dans cet exemple pour uzbl, ajoutez la ligne suivante à votre `~/.config/i3/config`

    for_window [class="Uzbl-core"] focus child, layout stacking, focus

Ceci est pour la navigation web empilée, ce qui signifie que les fenêtres seront affichées verticalement. L'avantage par rapport à la navigation par onglets est que les titres des fenêtres sont entièrement visibles, même si de nombreuses fenêtres de navigateur sont ouvertes.

Si vous préférez la navigation par onglets, avec les fenêtres dans le sens horizontal ("tabs"), utilisez

    for_window [class="Uzbl-core"] focus child, layout tabbed, focus

### Variables d'espace de travail

Comme les espaces de travail sont définis plusieurs fois dans i3, l'attribution de variables d'espace de travail peut être utile. Par exemple

    set $WS1 term
    set $WS2 web
    set $WS3 misc
    set $WS4 media
    set $WS5 code

Remplacez ensuite les noms des espaces de travail par les variables correspondantes :

    bindsym $mod+1 workspace $WS1
    ...
    bindsym $mod+Shift+1 déplace le conteneur vers l'espace de travail $WS1

Consultez Modifier le nom des espaces de travail pour plus d'informations.

### Traitement correct des boîtes de dialogue flottantes

Bien que les boîtes de dialogue doivent s'ouvrir en mode flottant par défaut [6], beaucoup s'ouvrent encore en pavage. Pour modifier ce comportement, vérifiez le `WM_WINDOW_ROLE` du dialogue avec xorg-xprop et ajoutez les règles correctes à `~/.i3/config` (en utilisant la syntaxe pcre) :

    for_window [window_role="pop-up"] floating enable
    for_window [window_role="task_dialog"] floating enable

Vous pouvez également utiliser des règles de titre et des expressions régulières :

    for_window [title="Preferences$"] floating enable

ou `WM_CLASS` :

    for_window [class="(?i)mplayer"] floating enable

### Vitesse de téléchargement et d'envoi du réseau dans la barre d'état

Vous pouvez adapter ce script de l'amont. Pour cela,

- renommez les deux cartes réseau en fonction de votre système (utilisez `ip addr`)
- Trouvez-les dans `/sys/devices` et remplacez-les de manière appropriée :

    $ find /sys/devices -name network_interface

Astuce: Utiliser `/sys/class/net/interface/statistics/` pour ne pas dépendre de l'emplacement PCI.

Maintenant, il suffit de sauvegarder le script dans un endroit approprié (par exemple `~/.config/i3`) et d'y faire pointer votre programme de status.

### Changement automatique de l'orientation horizontale/verticale de la fenêtre

Le paquet autotilingAUR peut être utilisé pour commuter automatiquement l'orientation horizontale/verticale de la fenêtre, ce qui donne un comportement similaire à la disposition en spirale de bspwm. Après l'installation, ajoutez ce qui suit à votre `~/.config/i3/config` et rechargez i3.

    exec_always --no-startup-id autotiling

## Dépannage

### Général

Dans de nombreux cas, les bogues sont corrigés dans les versions de développement i3-gitAUR et i3status-gitAUR, et upstream demandera de reproduire toute erreur avec cette version. [7] Consultez également Debugging/Getting traces#Compilation options.

### Une nouvelle installation n'affiche que du texte déformé

Assurez-vous que vous avez installé un jeu de polices TrueType après l'installation.

### Les boutons de la barre de message i3 ne fonctionnent pas

Les boutons tels que "Edit config" dans `i3-nagbar` appellent `i3-sensible-terminal`, donc assurez-vous que votre Émulateur de terminal est reconnu par i3.

### Retour à la ligne défectueux dans les terminaux en mosaïque

Les versions 4.3 et ultérieures de i3 ignorent les indications d'incrément de taille pour les fenêtres en mosaïque [8]. Cela peut provoquer un retour prématuré à la ligne dans les terminaux, parmi d'autres problèmes. Comme solution de contournement, rendez la fenêtre en question flottante, avant de la mettre en pavage à nouveau.

### Le curseur de la souris reste en mode d'attente

Lorsque vous lancez un script ou une application qui ne prend pas en charge les notifications de démarrage, le curseur de la souris reste en mode occupé/veille/horloge pendant 60 secondes.

Pour résoudre ce problème pour une application particulière, utilisez le paramètre `--no-startup-id`, par exemple :

    exec --no-startup-id ~/script
    bindsym $mod+d exec --no-startup-id dmenu_run

Pour désactiver cette animation de manière globale, consultez Cursor themes#Create links to missing cursors.

### Raccourcis clavier non réactifs

Certains outils tels que scrot peuvent ne pas fonctionner lorsqu'ils sont utilisés avec un raccourci clavier simple (exécutée après l'appui sur une touche). Dans ce cas, exécutez les commandes après le relâchement des touches avec l'argument `--release` [9] :

    bindsym --release Print exec --no-startup-id scrot
    bindsym --release Shift+Print exec --no-startup-id scrot -s

### Déchirement

i3 n'implémente pas correctement la double mise en mémoire tampon [10], ce qui peut provoquer des déchirures ou des scintillements. Consultez picom.

### Icônes de la barre d'état système non visibles

La directive `tray_output primary` peut nécessiter la définition d'une sortie primaire avec xrandr, la spécification explicite de la sortie ou la suppression pure et simple de cette directive. [11] Consultez Xrandr pour plus de détails. La configuration par défaut créée par i3-config-wizard n'ajoute plus cette directive à la configuration de i3 4.12.

### Espace de travail par défaut pour Spotify

Pour assigner un espace de travail par défaut pour les fenêtres Spotify, on ne peut pas utiliser la route standard avec `assign` et on doit plutôt utiliser une commande `for_window`, telle que

    ~/.config/i3/config

    ...
    for_window [class="Spotify"] move container to workspace $ws10

Pour s'assurer que `for_window` ne déplace pas la fenêtre si elle se trouve déjà dans `$ws10`, on peut utiliser `move --no-auto-back-and-forth`.

## Voir aussi

- Site officiel (en)
- Funtoo:I3 Tiling Window Manager
- Code source d'i3
- i3-extras - Collection de scripts et de patchs
- i3ipc-glib - Une bibliothèque pour les extensions i3
- i3ipc-ruby - Une bibliothèque améliorée pour les extensions i3 en Ruby
- j4tools - Outils non-officiels conçus pour fonctionner avec i3

Forum archlinux.org

- Sujet consacré à i3 (en)
- Captures d'écran de bureaux i3 et partage de configurations

Vidéos

- «screencast» de i3 window manager v4.1
- «screencasts» de i3 v4.1X

Categories:

- Tiling WMs (Français)
- Dynamic WMs (Français)

Hidden category:

- Pages with missing package links