Installer Guake, le terminal déroulant, avec un module customConfig

Guake est un terminal qui descend du haut de l'écran quand on appuie sur une touche, et qui remonte quand on rappuie. On l'oublie, il ne prend pas de place dans la barre des tâches, et il est là en une fraction de seconde. Sur GLF OS il demande un petit réglage supplémentaire, parce que son raccourci interne ne fonctionne pas sous Wayland. Voici le fichier complet.

:information_source: Remarque
Cet article fait partie d'une série sur les modules à importer dans customConfig. Si vous n'avez jamais édité ces fichiers, lisez d'abord Ajouter vos programmes et Configuration personnalisée.


Ce que vous obtenez

  • Guake installé et démarré automatiquement avec votre session ;
  • la touche F12 qui fait apparaître et disparaître le terminal, sous Wayland comme sous X11 ;
  • un raccourci posé par le système, donc identique pour tous les comptes de la machine.

Le fichier

Créez /etc/nixos/customConfig/guake.nix :

{ pkgs, ... }:

{
  environment.systemPackages = [
    pkgs.guake
  ];

  programs.dconf.enable = true;
  programs.dconf.profiles.user.databases = [
    {
      settings = {
        "org/gnome/settings-daemon/plugins/media-keys" = {
          custom-keybindings = [
            "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/guake/"
          ];
        };
        "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/guake" = {
          name = "Guake Toggle";
          command = "guake -t";
          binding = "F12";
        };
      };
    }
  ];
}

Pourquoi ce détour par dconf

C'est la partie intéressante, et elle explique une bonne part des surprises que l'on rencontre avec les applications de ce genre.

Guake sait normalement gérer son raccourci tout seul. Il utilise pour cela la bibliothèque keybinder3, qui demande au serveur X de lui signaler une combinaison de touches, même quand la fenêtre n'a pas le focus. Sous X11, cela fonctionne. Sous Wayland, c'est interdit par construction : une application n'a pas le droit d'écouter le clavier destiné aux autres, sinon n'importe quel programme pourrait enregistrer ce que vous tapez. Le raccourci interne de Guake reste donc silencieux, sans message d'erreur, ce qui laisse perplexe.

La parade consiste à confier le raccourci au bureau lui-même. GNOME Shell, qui est le compositeur Wayland, a tous les droits sur le clavier. On lui demande donc d'exécuter guake -t sur F12, exactement comme si vous aviez créé un raccourci personnalisé dans les Paramètres.

Ce raccourci se range dans dconf, la base de réglages de GNOME. programs.dconf.profiles.user.databases écrit une base système que les comptes utilisateurs héritent. L'intérêt par rapport à un clic dans les Paramètres : le réglage est décrit dans votre configuration, il survit à une réinstallation et s'applique à tous les comptes.

Il y a deux entrées parce que GNOME fonctionne ainsi : la première déclare la liste des raccourcis personnalisés actifs, la seconde décrit le raccourci lui-même. Oublier la première est l'erreur classique, et le raccourci ne se déclenche jamais.

:information_source: Remarque
programs.dconf.enable = true; est déjà posé ailleurs sur GLF OS. Le redéclarer ne pose aucun problème : c'est un booléen mis à la même valeur, NixOS n'y voit pas de conflit.

Le démarrage automatique, lui, n'a rien demandé : il est fourni par le fichier .desktop du paquet, que GNOME lit tout seul.


Activer le module

Dans /etc/nixos/customConfig/default.nix :

{
  imports = [ ./guake.nix ];

  environment.systemPackages = [
  # Add your stable apps here (exemple: pkgs.btop)

Puis :

glf-update

Un raccourci de session ne s'applique qu'à l'ouverture suivante : déconnectez-vous et reconnectez-vous, puis appuyez sur F12.


Les options que vous pouvez changer

  • La touche. Remplacez "F12" par ce qui vous arrange. Les noms suivent la convention GTK : "<Super>quoteleft" pour Super et la touche au-dessus de Tab, "<Ctrl>grave", "<Alt>space". Les majuscules et les chevrons comptent.
  • La commande. guake -t bascule l'affichage, guake --show ne fait qu'afficher, guake --hide ne fait que masquer, et guake -e "htop" exécute une commande dans l'onglet courant. Vous pouvez créer plusieurs raccourcis sur ce modèle, en changeant le nom du chemin custom-keybindings/guake et en l'ajoutant à la liste.
  • Le reste des réglages (hauteur, largeur, transparence, police, écran d'affichage, nombre d'onglets au démarrage) se fait dans les préférences de Guake, qui les enregistre dans votre dossier personnel. Inutile de les déclarer dans Nix, sauf si vous tenez à les reproduire à l'identique sur plusieurs machines.
  • Sur KDE Plasma, ce bloc dconf ne s'appliquera pas, puisqu'il parle à GNOME. Regardez du côté de pkgs.kdePackages.yakuake, qui fait exactement la même chose et s'intègre aux raccourcis de Plasma.
  • Sans application séparée. L'extension GNOME gnomeExtensions.ddterm offre un terminal déroulant intégré au bureau, avec un rendu plus cohérent sous Wayland.

En cas de problème

  • F12 ne fait rien. Vérifiez d'abord que la session a été rouverte. Ensuite, regardez si le réglage est bien arrivé :
    dconf read /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings
    
    La liste doit contenir le chemin custom-keybindings/guake/, avec sa barre oblique finale.
  • Un réglage personnel prend le dessus. Si vous aviez déjà créé des raccourcis à la main, votre base utilisateur peut masquer celle du système. Remettez la clé à son défaut :
    dconf reset /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings
    
  • F12 est déjà pris. Certains navigateurs et environnements de développement s'en servent pour leurs outils. Choisissez une autre combinaison, <Super>quoteleft est un bon candidat car peu d'applications l'utilisent.
  • Guake s'ouvre sur le mauvais écran en configuration multi-écrans : c'est un réglage de l'application, section Général, choix de l'écran d'affichage.

Voir aussi