Rolinh

Rolinh' release

Un Menu Pour Awesome Permettant D'éteindre, Redémarrer, Mettre en Veille Et Hiberner

Une mini-astuce pour Awesome WM au menu du jour. Mini car vraiment simpliste mais qui peut néanmoins se révéler utile.

Le but: ajouter ceci au menu d’Awesome:

L’idée est d’utiliser consolekit et upower. Il faut donc évidemment que les paquets correspondant à ces programmes soient installé sur votre système. De plus, il faut également que l’utilisateur courant fasse partie du groupe power. La procédure consiste à créer 4 petits scripts shell qui seront appelés lors du clic sur le menu. Évidemment, on peut aussi s’arranger pour utiliser  une combinaison de touche qui appelle les scripts en complément mais je ne vais pas le détailler dans cet article.

On va commencer par créer un dossier nommé scripts dans le dossier de configuration d’Awesome (normalement ~/.config/awesome ):

cd $XDG_CONFIG_HOME/awesome && mkdir scripts && cd scripts

Ceci fait, on va maintenant y ajouter les 4 scripts en question. Celui pour l’hibernation:

echo '#!/bin/sh\ndbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate' > hibernate.sh

Celui pour le redémarrage:

echo '#!/bin/sh\ndbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart' > reboot.sh

Celui pour l’extinction:

echo '#!/bin/sh\ndbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop' > shutdown.sh

Et enfin celui pour la mise en veille:

echo '#!/bin/sh\ndbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend' > suspend.sh

Il ne faut pas oublier de rendre nos scripts exécutables:

chmod +x suspend.sh shutdown.sh hibernate.sh reboot.sh

Ceci fait, il faut éditer le rc.lua afin de le créer ce fameux menu. On va donc ajouter ceci, dans la section menu:

1
2
3
4
5
6
mysystemmenu = {
   { "shutdown", awful.util.getdir("config") .. "/scripts/shutdown.sh" },
   { "reboot", awful.util.getdir("config") .. "/scripts/reboot.sh" },
   { "suspend", awful.util.getdir("config") .. "/scripts/suspend.sh" },
   { "hibernate", awful.util.getdir("config") .. "/scripts/hibernate.sh" }
}

Et de l’ajouter dans le menu principal:

1
2
3
4
5
6
mymainmenu = awful.menu({ items = {
      { "awesome", myawesomemenu, beautiful.awesome_icon },
      { "system", mysystemmenu },
      { "open terminal", terminal },
  }
})

Au final, la section Menu devrait ressembler à quelque chose dans ce genre:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-- Create a launcher widget and a main menu
myawesomemenu = {
   { "manual", terminal .. " -e man -P /usr/bin/vimpager awesome" },
   { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
   { "restart", awesome.restart },
   { "quit", awesome.quit }
}
mysystemmenu = {
   { "shutdown", awful.util.getdir("config") .. "/scripts/shutdown.sh" },
   { "reboot", awful.util.getdir("config") .. "/scripts/reboot.sh" },
   { "suspend", awful.util.getdir("config") .. "/scripts/suspend.sh" },
   { "hibernate", awful.util.getdir("config") .. "/scripts/hibernate.sh" }
}
mymainmenu = awful.menu({ items = {
      { "awesome", myawesomemenu, beautiful.awesome_icon },
      { "system", mysystemmenu },
      { "open terminal", terminal },
    }
})
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
                                     menu = mymainmenu })

C’est tout. A vous d’adapter cela comme bon vous semble. ;–)