fr/en

#

## noDE -- fluxbox -- doc

noDE aka no Desktop Environment ...
quelques informations à propos de fluxbox :
sources : doc 3hg team.

- présentation
- fluxbox sur nakeDeb
- configuration graphique
- configuration manuelle
  - applications lancées au démarrage
  - raccourcis clavier/souris
  - comportement automatique
  - configuration du menu
  - configuration du panel
  - configuration des décorations
- reset de la configuration
- liens

## présentation

Fluxbox est un gestionnaire de fenêtre extrêmement léger et rapide. Dans la lignée des *box, il peut à lui tout seul constituer un environnement de bureau très complet. Par ailleurs, il présente quelques avantages intéressants devant le plus connu openbox.

Quelques avantages non exhaustifs :

- Syntaxe de configuration simple et lisible (ce n'est pas du xml).
- Possibilité de configuration par de simples menus
- Tout est présent par défaut : barre des tâches, systray, horloge, menu.
- Raccourcis claviers facilement configurables
- Rapide
- Possibilité de regrouper les fenêtres en onglets, rendant la gestion des fenêtres plus pratique
- Lanceur de commande intégré (type gmrun) : Alt+f2
- Définitions de règles pour les fenêtres très complètes.
- Pseudo-transparence

Quelques inconvénients :

- Il n'y a pas la possibilité de définir une marge où les fenêtres ne pourront aller.
- Pas de pipemenus, mais des menus listant les répertoires avec possiblité de lancer une commande personnalisée.

## fluxbox sur nakeDeb

nakeDeb embarque une session préconfigurée de fluxbox qui répond à la documentation générale en y ajoutant quelques raccourcis clavier. dans ses fichiers de configuration, fluxbox ientifie les touches ainsi : "Mod1" = Alt, "Mod4" = Super (logo windows).

les menus :

- `Alt`+`d` : lancer rofi
- `Alt`+`p` : lancer le popmenu (un rofi stylisé)
- `Alt`+`F2` : lancer fbrun (l'invite de commande s'affiche au centre de votre écran)
- `Alt`+`m`, `Super`+`m` ou clic-droit sur le bureau : RootMenu (le menu principal de fluxbox également accessible depuis la première flêche du panel)

les applications :

- `Super`+`Enter` / `Alt`+`Enter` : lancer urxvt (terminal)
- `Super`+`r` : lancer ranger (CLI)
- `Shift`+`Super`+`r` : lancer pcmanfm (GUI)
- `Super`+`w` : lancer nakedbrowser (w3m par défaut)
- `Super`+`e` : lancer geany
- `Super`+`v` : lancer alsamixer
- `Super`+`z` : lancer le lecteur audio mocp (CLI)
- `Super`+`x` : lancer le client IRC
- `Super`+`f` : rechercher dans le système
- `Ctrl`+`Super`+`w` : sélectionner un fond d'écran

control :

- `Alt`+`Tab` : échanger le focus entre les fenêtres visibles
- `Ctrl`+`Alt` / `Super`+`←`/`→` : naviguer entre les espaces de travail
- `Alt`+`Shift`+`q` : fermer une fenêtre
- `Alt`+`f` : des/activer le plein-écran
- `Alt`+`Space` : ouvrir le menu de la fenêtre
- `Super`+`Shift`+`←`/`→` : envoyer la fenêtre sur l'espace de travail précédent/suivant
- `Super`+`l` : verrouiller l'écran
- `Super`+`Shift`+`e` : lancer le menu d'extinction nakedQuit
- `Ctrl`+`Alt`+`Backspace` : quitter fluxbox

un peu de tiling :

- `Ctrl`+`Super`+`h` : arrange les fenêtres horizontalement
- `Ctrl`+`Super`+`v` : arrange les fenêtres verticalement

la session fluxbox intègre également l'afficheur d'information conky. pour le configurer, direction le menu fluxbox > configuration > conky > éditer ou directement depuis son emplacement `~/.conkyrc`.

plus de détails à propos de conky avec votre `man conky`.

la session fluxbox profite aussi d'un petit programme codé par prx, le fluxbox-automenu, permettant de lister les applications installées (un genre de menu auto-généré comme celui que vous trouvez dans les autres DE) et de les afficher dans le menu principal de fluxbox.

## configuration graphique

Fluxbox permet une configuration fine depuis son menu : clic-droit sur le bureau > menu > configuration > fluxbox... les entrées sont explicites.
de la même façon, un clic-droit sur la barre de tâche vous permettra d'afficher son menu de configuration.

## configuration manuelle

Fluxbox peut être configuré via le menu accessible par un clic-droit sur le bureau. La barre des tâches peut être configurée de la même façon. Cependant, nous pouvons configurer fluxbox encore un peu plus.

### Démarrage automatique de programmes

Pour lancer des programmes automatiquement au démarrage de fluxbox, complétez le fichier `~/.fluxbox/startup`. Une seule règle : ne pas oublier d'ajouter un '&' après chaque commande, sauf la dernière "fluxbox".

un exemple de script startup :

    #!/bin/sh
    #
    # fluxbox startup-script:
    #
    # Lines starting with a '#' are ignored.

    # Change your keymap:
    #xmodmap "/home/human/.Xmodmap"

    # Applications you want to run with fluxbox.
    # MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&'' AT THE END.
    #
    # unclutter -idle 2 &
    # wmnd &
    # wmsmixer -w &
    # idesk &
    #
    # Debian-local change:
    #   - fbautostart has been added with a quick hack to check to see if it
    #     exists. If it does, we'll start it up by default.
    which fbautostart > /dev/null
    if [ $? -eq 0 ]; then
        fbautostart
    fi
    # read ~.Xresources file
    xrdb ~/.Xresources &

    # set ctrl_alt_bksp as session-killer
    setxkbmap -option terminate:ctrl_alt_bksp &

    # set startscreen
    if [ -e ~/.fehbg ]; then
        sh ~/.fehbg &
    else
        feh --bg-fill /usr/share/backgrounds/nakedeb.jpg &
    fi

    # fluxbox automenu by thuban
    sleep 3s && rm -f ~/.fluxbox/automenu/* && fluxbox-automenu \
        && fluxbox-update_configs &

    # authentification
    /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &

    # monitor
    sleep 7s && conky -c ~/.conkyrc &

    # And last but not least we start fluxbox.
    # Because it is the last app you have to run it with ''exec'' before it.
    exec fluxbox

    # or if you want to keep a log:
    # exec fluxbox -log "/home/$USER/.fluxbox/log"

### Raccourcis clavier et souris

Vous pouvez configurer des raccourcis clavier et souris dans le fichier `~/.fluxbox/keys`. La syntaxe est la suivante :

    Modificateur touche :commande [arguments...]

- Un modificateur est une touche spéciale, comme `Shift`, `Ctrl` ou `Alt` (Mod1). Pour en connaître la liste, lancez la commande `xmodmap -pm` dans un terminal. fluxbox accepte des modificateurs spéciaux, comme :
  - 'OnDesktop' lorsque le curseur est sur le bureau.
  - 'OnToolbar' lorsque le curseur est sur la barre des tâches.
  - 'OnWindow' lorsque le curseur est au-dessus d'une fenêtre.
  - 'OnTitlebar' lorsque le curseur est au-dessus la barre de titre d'une fenêtre.
  - 'OnTab' lorsque le curseur est sur un onglet
  - 'Double' lors d'un double clic.
- Le nom d'une touche peut être par exemple `a`, `b` ou `space`. Vous pouvez aussi utiliser un code, récupéré en lançant la commande `xev` dans un terminal, puis en appuyant sur la touche dont on souhaite connaître le code. Ce dernier apparaîtra dans votre terminal (exemple '38' ou '0xf3').
- Les commandes sont très nombreuses, comme déplacer une fenêtre sur un espace de travail, l'agrandir... Pour lancer une application, vous aurez besoin de la commande Exec : `Mod1 Shift L :Exec mpc next`

Sachez aussi que vous pouvez appliquer des conditions sur ces raccourcis, mais cet usage avancé, permettant de contrôler totalement votre environnement, nécessite une lecture du lien ci-dessous.

La liste des commandes est disponible ici ou depuis votre terminal `man fluxbox-keys`.

### Règles sur les fenêtres.

vous pouvez remplir ce fichier par le menu des fenêtres en spécifiant 'se souvenir...'. mais toutes les options ne sont pas accessibles depuis le menu. pour plus de configuration, il faut éditer le fichier `~/.fluxbox/apps`. la syntaxe est simple et quelques exemples vous seront donnés en fin de section :

    [app]/[group] (app-name) {count - optional}
        [Property1]  {value1}
        [Property2]  {value2}
        ...
    [end]

une application est identifiée grâce à la commande xprop et peut être déterminé par

- 'name' - nom de la fenêtre (première partie de WM_CLASS)
- 'class' - classe de la fenêtre (seconde partie de WM_CLASS)
- 'title' - titre de la fenêtre ( WM_NAME )
- 'role' - rôle de la fenêtre ( WM_WINDOW_ROLE )

l'option [app]...[end] détermine les propriétés d'une seule application.
cette section débute avec '[app] (pattern) {count}' avec 'pattern' qui peut être un ou plusieurs identifiants (voir la section 'pattern'). 'count' est optionnel et détermine le nombre maximum de fenêtres concernées par la règle. si il est omit, toutes les fenêtres répondant à 'pattern' seront concernées.
cette première ligne est suivie d'une série de propriétés (voir la section 'settings') et se termine par [end].

l'option [group]...[end] détermine les propriétés de plusieurs application pour les regrouper en onglets.
cette section débute avec '[group] (pattern) {count}' avec 'pattern' optionnel qui peut être un ou plusieurs identifiants (voir la section 'pattern'). 'count' est optionnel et détermine le nombre maximum de fenêtres concernées par la règle. si il est omit, toutes les fenêtres répondant à 'pattern' seront concernées.
cette première ligne est suivie d'autant de ligne [app] que d'applications que vous souhaitez grouper. cette section se termine par [end].

les settings sont les propriétés appliqués aux fenêtres répondant à 'pattern'
le format est simple '[setting] {value}'
voici la liste des 'settings' :

- [Workspace] {number}: ouverture de l'applications sur un bureau spécifique. le 'number' commence à 0
- [Jump] {bool}: se rendre au bureau spécifié, à utiliser avec [Workspace]
- [Head] {number}: écran d'ouverture de l'application
- [Layer] {number}: niveau de profondeur de la fenêtre.valeur 2-au-dessus du dock, 4-au niveau du dock, 6-au-dessus, 8-normal, 10-en-dessous, 12-sur le bureau.
- [Dimensions] {width height}: taille de la fenêtre avec hauteur largeur en pixels
- [Position] (anchor) {X Y}: placement de la fenêtre. 'anchor' est optionnel et peut être TopLeft, Left, BottomLeft, Top, Center, Bottom, TopRight, Right ou BottomRight pour déterminer le point de départ de {X Y}, en pixels. si 'anchor' est omit, {X Y} sont comptés à partir du coin supérieur gauche.
- [Deco] {value}: configure le type de décoration des fenêtres. les valeurs possibles :
  - NORMAL: décoration classique
  - NONE: pas de décorations, sauf en onglet
  - Border: simple bordure comme décoration
  - TINY: barre de titre avec un bouton 'iconifier'
  - TOOL: uniquement la barre de titre
- [Shaded] {bool}: la fenêtre est ouverte 'enroulée' sur la barre de titre
- [Tab] {bool}: la fenêtre a des onglets
- [FocusNewWindow] {bool}: le fenêtre prends le focus, ou pas
- [FocusHidden] {bool}: si true, la fenêtre n'apparait pas dans la liste des fenêtres du menu
- [IconHidden] {bool}: si true, la fenêtres n'apparait pas dans le boite à icone de la barre de tache
- [Hidden] {bool}: [FocusHidden]+[IconHidden]
- [Sticky] {bool}: visible sur tous les bureaux, ou pas
- [Minimized] {bool}: la fenêtre démarre minimisée
- [Maximized] {value}: la fenêtre apparait maximisée. 'value' peut être {yes} maximisée, {horz} maximisation horizontale, {vert} maximisation verticale ou {none} non maximisée.
- [Fullscreen] {bool}: fenêtre en plein écran, sans décorations
- [Close] {bool}: sauver les 'settings' lors de la fermeture de la fenêtre.
- [Alpha] {value [value]}: opacité de la fenêtre focus|unfocus entre 0 et 255(opaque).

les pattern sont les caractéristiques désignant les fenêtres.
une 'pattern' ressemble à ça:

    ([propertyname[!]=]regexp)

les propriétés successives sont placées entre ().
si 'propertyname' est omit, il est remplacé par 'name'.
'propertyname' n'est pas sensible à la casse, tandis que regexp l'est.
si vous spécifiez plusieurs regexp, le "AND" est implicite: toutes les 'pattern' doivent correspondre pour que la propriété s'applique.
on utilise '=' pour égal ou '!=' pour inégal.
les 'propertyname' acceptés par fluxbox:

- Name: expression, correspond à CLASSNAME (la première partie de WM_CLASS depuis xprop).
- Class: expression, correspond à CLASSCLASS (la seconde partie de WM_CLASS depuis xprop).
- Title: expression, correspond à WM_NAME depuis xprop).
- Role: expression, correspond à WM_WINDOW_ROLE depuis xprop(1)).
- Transient: yes/no, correspond à une fenêtre de transition (généralement une fenêtre popup).
- Maximized: yes/no, correspond à une fenêtre maximisée ou non.
- Minimized: yes/no, correspond à une fenêtre minimisée ou non.
- Shaded: yes/no, correspond à une fenêtre enroulée ou non.
- Stuck: yes/no, correspond à une fenêtre sticky (visible sur tous les bureaux) ou non.
- FocusHidden: yes/no, correspond à une fenêtre à laquelle on a demandé de ne pas apparaitre dans la liste des fenêtres, ou non.
- IconHidden: yes/no, correspond à une fenêtre à laquelle on a demandé de ne pas apparaitre dans la liste des icones, ou non.
- Urgent: yes/no, correspond à une fenêtre urgente.
- Workspace: un nombre, correspond au numéro du bureau dans lequel la fenêtre se trouve. les bureaux commencent à 0. vous pouvez utiliser [current] pour sélectionner les fenêtres du bureau actif.
- WorkspaceName: expression, correspond au nom du bureau dans lequel la fenêtre se trouve.
- Head: un nombre, correspond au numéro de l'écran sur lequel la fenêtre se trouve. vous pouvez utiliser [mouse] pour sélectionner les fenêtres sur l'écran où se trouve la souris.
- Layer: expression, correspond au nom du niveau de la fenre: AboveDock, Dock, Top, Normal, Bottom ou Desktop
- Screen: un nombre, correspond au numéro de l'écran actif.
- @XPROP: expression, correspond à toute expression issue de xprop.

exemples :

- afficher les deux premières fenêtres nommées *term ou *Term sur le bureau 1 :

      [app] (name=.*[tT]erm) {2}
          [Workspace]   {1}
      [end]

- affiche geany centré avec une taille spécifique, et ajuster cette valeur à la fermeture de l'application :

      [app] (name=geany)
          [Dimensions]  {1022 747}
          [Position]    (CENTER) {0 0}
          [Close]       {yes}
      [end]

- pour luakit, on se place d'abord sur le bureau 1 puis on lance l'application :

      [app] (name=luakit)
          [Workspace]   {1}
          [Jump]        {yes}
      [end]

- lancer toutes les sessions de aterm sans décorations de fenêtres :

      [app] (name=aterm)
          [Deco]        {NONE}
      [end]

- un groupe formé par les fenêtres de gimp s'ouvrent en derrière les autres fenêtres :

      [group]
          [app] (name=gimp) (role=gimp-dock)
          [app] (name=gimp) (role=gimp-toolbox)
          [Layer]       {4}
      [end]

- un terminal en fond d'écran :

      [app] (Title=urxvt-bg)
          [Layer]{12}
          [Deco]{NONE}
          [Maximized]{yes}
          [Hidden]{yes}
          [Sticky]{yes}
      [end]

  Afin que cela ne s'applique pas sur tous les terminaux que je lance, j'ai rajouté ceci au démarrage de la session pour toujours avoir un terminal en arrière plan, totalement transparent :
  `urxvt -T urxvt-bg -sh 100 &`

### Configurer le menu

Un menu déjà bien rempli est proposé par défaut sous debian. Cependant, vous pourriez souhaiter créer votre propre menu. Ici aussi, la syntaxe est des plus simple :

    [etiquette] (titre) {commande} <'icone'>

Vous pouvez donc créer des entrées pour lancer une commande, par exemple :

    [exec] (Internet) {firefox}

Vous pouvez aussi créer des sous-menus. Attention, dans ce cas, il faudra ensuite ajouter '[end]' :

    [submenu] (Capture d'écran)
        [exec] (... maintenant) {scrot -e 'mv $f ~/shots'}
        [exec] (... avec sélection) {scrot -s -e 'mv $f ~/shots'}
        [exec] (... dans 10s) {scrot -s -d 10 -e 'mv $f ~/shots'}
        [exec] (... dans 5s) {scrot -s -d 5 -e 'mv $f ~/shots'}
        [exec] (... puis upload) {~/bin/bin/sscrot}
    [end]

Il existe des sections particulières. En voici quelques unes, mais je vous invite à lire la section dédiée sur le site officiel :

- [separator] : ajoute une barre de séparation.
- [wallpaper] (répertoire) {commande} : malgré son nom, ce menu n'est pas forcément utile pour définir le fond d'écran. Il permet de lister les fichiers d'un répertoire, puis de lancer une commande sur le fichier choisi. Par exemple, dans un dossier contenant des notes diverses, afin de pouvoir les ouvrir avec gvim : `[wallpapers] (~/notes/) {gvim}`
- [workspaces] (Bureaux) : ajoute un menu de sélection des fenêtres sur tous les bureaux.

### Configurer la barre de tâches.

Afin de changer l'ordre des éléments présent dans la barre des tâches (choix du bureau, liste des fenêtres, horloge, systray), éditez le fichier

`~/.fluxbox/init`

Ensuite, modifiez à votre guise la ligne suivante :

    session.screen0.toolbar.tools:  prevworkspace, workspacename, nextworkspace, prevwindow, nextwindow, iconbar, systemtray, clock

Ce fichier contient de nombreuses options à modifier à souhait.
astuce : pour insérer un bouton de menu dans la barre de tâches, ajouter RootMenu dans la ligne de configuration de la toolbar.

### Les styles

Pour installer de nouveaux styles, placez-les dans `~/.fluxbox/styles`. Cependant, si vous ne voulez pas que le style impose certaines options, alors définissez les vôtres dans le fichier `~/.fluxbox/overlay`. Par exemple, pour choisir la police, ne pas appliquer de fond d'écran et choisir la taille de la barre :

    background: none
    *font: DejaVu Sans -9
    toolbar.height: 20

## reset de la configuration utilisateur

si vous avez modifié votre configuration et que vous souhaitez revenir à la configuration par défaut de Debian ou celle de nakeDeb, suivez ces méthodes.

revenir à la configuration Debian :
- sauvegardez votre configuration personnelle : `mv $HOME/.fluxbox $HOME/.fluxbox.back`
- redémarrez fluxbox depuis son menu minimal : clic-droit sur le bureau puis 'Redémarrer'

revenir à la configuration nakeDeb :
- sauvegardez votre configuration personnelle : `mv $HOME/.fluxbox $HOME/.fluxbox.back`
- copiez la configuration nakeDeb par défaut : `cp -R /etc/skel/.fluxbox $HOME/.fluxbox`
- nettoyez les fichiers inutiles : `rm $HOME/.fluxbox/menu-fr $HOME/.fluxbox/menu-en`
- redémarrez fluxbox depuis son menu : clic-droit sur le bureau puis 'Configuration > Fluxbox > Relancer'

les configurations par défaut sont situées dans `/etc/X11/fluxbox` pour Debian et dans `/etc/skel/.fluxbox` pour nakeDeb.

## liens

- Documentation debian-facile
- Site officiel

↑