Se faire une vraie maximisation

Se faire une vraie maximisation
Le 6 décembre, 2011 - 02:42 | Ulhume

Quelque chose de classique lorsque l'on travaille beaucoup avec vim/gVim/terminaux, c'est de maximiser les fenêtres de travail en permanence. Le soucis classique est cette maudite barre de titre qu'il faudrait aussi pouvoir virer, chose prévue dans bien peu de gestionnaires de fenêtres. Alors comme nous utilisons *nix, on se retrousse (légèrement) les manches et on fait cela nous-même.

Alors il y a effectivement des gestionnaires de fenêtre qui font cela en standard (les *box de tête il me semble). Mais depuis que j'ai basculé sur XFCE, XFWM4 me va très bien, pas envie de sortir la grosse artillerie juste pour ce genre de détails.

Ensuite, XFWM4 (mais aussi Metacity) dispose déjà d'un mode "kiosk" en passant par F11, mais le soucis est que ce mode va passer en plein écran et ainsi se placer sur le(s) panneau(x), ce qui n'est pas l'effet souhaité car je peux très bien vouloir plusieurs fenêtres maximisées sur le même moniteur et vouloir passer de l'un à l'autre.

L'approche est donc de maximiser de manière classique, mais aussi de supprimer le titre et les bordures de la fenêtre. Ce que l'on appelle en jargon "gestionnaire de fenêtre" les décorations.

La solution la plus simple que j'ai trouvé est d'écrire un petit programme python qui va

  1. Localiser la fenêtre active.
  2. Lire l'état de cette fenêtre et déterminer si elle est maximisée.
  3. Si elle n'est pas maximisée, le faire, puis supprimer les décorations.
  4. Si elle est maximisée, la restaurer dans son état de fenêre avec ses décorations.

L'utilitaire agira donc comme une bascule normal/plein écran.

#! /usr/bin/python
from gtk.gdk import *

# Récupération de l'état de la fenêtre courante
window = window_foreign_new(get_default_root_window().property_get("_NET_ACTIVE_WINDOW")[2][0])
state = window.property_get("_NET_WM_STATE")[2]
maximized='_NET_WM_STATE_MAXIMIZED_HORZ' in state and '_NET_WM_STATE_MAXIMIZED_VERT' in state

# traitement de la fenêtre courante
if maximized:
  window.unmaximize()                # on la restaure dans sa position
  window.set_decorations(DECOR_ALL)  # on rajoute les décorations
else:
  window.maximize()                  # on maximise
  window.set_decorations(0)          # et on enlève les décorations

# et on met à jour le tout...
window_process_all_updates()
toggle_maximized.pl

Une fois l'utilitaire saisi avec votre éditeur de texte favoris, il faut le rendre exécutable (chmod +x toggle_maximized.pl) et vérifier que vous avez bien python (je doute du contraire) et les librairies PyGtk (c'est souvent le cas aussi, sinon, apt-get).

Ensuite, vous allez devoir associer cet utilitaire avec une combinaison de touches de votre choix (ex. Alt-F11). Sous XFCE, cela se fait très simplement en allant dans la configuration du clavier.

Et après, ben reste plus qu'à tester, par exemple avec gVim, en lançant l'application et en utilisant le raccourcis créé. Si ça coince, testez la commande en console, cela doit la maximiser directement ou vous renvoyer une erreur le cas échéant.

Vus : 1097
Publié par Artisan Numérique : 100