Comment implémenter la layout avec l'autostarting des applications dans le gestionnaire de windows i3?

Ceci est un suivi d'une question préalable sur la façon de démarrer automatiquement des applications sur des espaces de travail individuels avec le gestionnaire de windows i3 et ce qui peut et ne peut pas être fait dans le file de configuration ~/.i3/config .

Tout d'abord, la solution fournie basée sur la documentation Arch Linux et une mise à jour fournie par op où il pousse la logique plus loin:

 exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox' exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1' 

Il est également intéressant d' échanger sur l'utilisation de certains de ces éléments directement sur la command line sans duplication:

 i3-msg workspace 3; i3-msg exec firefox i3-msg workspace 9; i3-msg exec chromium 

Mais je n'ai jamais vu une configuration qui autostarts beaucoup de windows / applications dans chaque espace de travail selon une disposition verticale ou horizontale désirée. Mon but est de démarrer automatiquement cette configuration simple que j'utilise:

  _____ _____ ___________ ___________ | lx | lx | | |u_| | | | proportions: |_____|_____| | FF |lx| |spacefm | 1- 25% each |medit| lx | | |__| | | vlc | 2- 75/25 x 25/50/25 |_____|_____| |________|u_| |_____|_____| 3- 50/50 1 2 3 

Donc, ça commence par quelque chose comme ça dans le file de config :

 exec --no-startup-id i3-msg 'workspace 1; exec i3-sensible-terminal; layout toggle split; layout splitv; split vertical; exec i3-sensible-terminal; exec i3-sensible-terminal; exec i3-sensible-terminal; workspace 2; exec firefox; exec urxvt; exec i3-sensible-terminal; exec urxvt; workspace 3; exec spacefm; exec vlc' 

Mais comment dans le monde réalisez-vous le type de disposition et le découpage vert / horizontal que vous voulez? J'essaie, mais ce n'est pas clair comment vous «mélangez» l'exécution et la layout. La syntaxe semble idiosyncratique pour démarrer car vous exécutez i3-img dans la configuration de i3. Utilisez-vous split h (ou v) – layout split vexec layout split vfocus down (ou à droite) entre chaque appel exec ??

Pour un seul espace de travail, la configuration démarre toutes les applications verticalement ou horizontalement et je ne peux pas sembler influencer la layout – ou la dernière command split de la string décide si les windows sont ajoutées verticalement ou horizontalement. i3-msg ignore apparemment certaines parties de la command qui ne sont pas correctement formatées dans certains cas, donc c'est difficile à déboguer. Cela est encore aggravé par le fait que vous avez vraiment besoin de quitter X et startx à chaque fois pour vérifier les résultats, simplement rafraîchir la configuration avec mod+shift+R ne le coupera pas même si vous fermez tout sur chacun des espaces de travail.

Quelle est la bonne façon de configurer cela? Quelqu'un at-il une solution qui implémente quelque chose comme ça? La documentation est plutôt bonne, mais elle ne permet pas de voir un exemple détaillé qui mélange l'exécution et la layout sur plusieurs espaces de travail.

    Je crois que vous searchz la nouvelle fonctionnalité de layout introduite dans i3 v4.8 (2014-06-15). La documentation liée semble assez approfondie.

    Citant de la documentation:

    La sauvegarde / restauration de la layout vous permet de charger un file de layout JSON afin que vous puissiez disposer d'une layout de base pour commencer à travailler après avoir mis votre ordinateur sous tension. Les cas d'utilisation dynamics viennent aussi à l'esprit: si vous avez souvent besoin (mais pas toujours!) D'une disposition des terminaux avec des commands ping / traceroute pour diagnostiquer les problèmes réseau, vous pouvez facilement automatiser l'ouverture de ces windows.

    … et les notes de publication :

    tl; dr: exportez votre layout actuelle en tant que file JSON, chargez-la dans de nouvelles sessions i3, obtenez des windows de placeholder qui seront remplacées par les applications réelles une fois que vous les démarrez.


    1. Vous pouvez avoir besoin des packages perl-anyevent-i3 et perl-json-xs pour utiliser l'utilitaire i3-save-tree .