summaryrefslogtreecommitdiff
path: root/content/Informatique/2013-07-21-shifty.rst
blob: 82d92067b6ce8efd281262e63459da3fd48a22fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
.. -*- mode: rst -*-
.. -*-  coding: utf-8 -*-

====================
Astuces pour awesome
====================

:date: 2013-07-21
:tags: Libre, awesome
:summary: |summary|
:logo: /images/awesome/tiling.jpg

.. figure:: {filename}/images/awesome/tiling.jpg
    :figwidth: 150
    :figclass: floatleft
    :alt: Pavement

    Image : `Lauren Manning`_ (creativecommons_)

.. _creativecommons: http://creativecommons.org/licenses/by/2.0/
.. _Lauren Manning: http://www.flickr.com/photos/laurenmanning/2318922360/in/photostream/

|summary|

.. |summary| replace::
    Le WM awesome est majoritairement utilisé par des utilisateurs qui passent
    du temps à configurer leur bureau (ou qui n'ont pas peur de le faire) et
    peut être paramétré de bien des manières ; les recettes ne manquent pas sur
    le wiki. Voici ici quelques astuces issues de mon utilisation.

Intégration avec gnome
======================

Awesome est un gestionnaire de fenêtre et ne remplace pas un gestionnaire de
bureau et tous ses avantages : monter automatiquement les clefs usb branchées,
conserver le mot de passe ssh pour la session, etc.

Gnome permet de remplacer le gestionnaire par un autre, ce que nous allons
mettre à profit pour utiliser awesome à la place de celui proposé par défaut.
Vous pouvez donc échapper à l'affreux `Gnome Shell`_ et passer sous en
gestionnaire ergonomique…

Un guide est disponible sur le wiki_ et une fois configuré, vous n'avez plus
qu'à choisir gnome comme session de démarrage : awesome sera automatiquement
lancé et utilisé comme gestionnaire de fenêtre !

Il s'agit de la principale astuce car elle permet de lancer un nombre important
de services qui ne sont pas pris en charge par un simple gestionnaire de
fenêtre.

.. _Gnome Shell: https://fr.wikipedia.org/wiki/GNOME_Shell
.. _wiki: http://awesome.naquadah.org/wiki/Quickly_Setting_up_Awesome_with_Gnome/fr

.. image:: {filename}/images/awesome/menu.jpg
    :class: floatright
    :alt: Session menu

Gérer la session
================

Maintenant que awesome est lancé dans une session gnome, on peut lancer des
commandes DBUS sans difficultées : nous allons en profiter pour ajouter au menu
d'awesome la possiblité de gérer sa session. Le code suivant permet de
rajouter au menu sous menu « system » qui contiendra les actions « quit », 
« restart » et « halt » permetant d'éxécuter les commandes de déconnexion
directement :

.. code-block:: lua

    mysystemmemu = {
        {"quit", "dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.Logout uint32:1"},
        {"restart", 'dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart' },
        {"halt", 'dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop'},
    
    }

    mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
                                        []
                                        { "system", mysystemmemu }

Les commandes DBUS proviennent du `forum ubuntu`_ ; d'une manière générale,
DBUS permet de faire énormément de chose avec son système (note pour plus tard,
trouver un annuaire des commandes).

.. _forum ubuntu: http://forum.ubuntu-fr.org/viewtopic.php?pid=7615111#p7615111

Afficher le calendrier
======================

Par défaut, awesome affiche l'heure et la date dans la bare de menu, mais aucun
calendrier n'est disponible. Pour ceux qui ont besoin d'un simple calendrier et
non d'un agenda, je recommande gsimplecal_ qui se contente d'afficher le mois
en cours. On peut facilement modifier la configuration pour lancer
l'application dès que l'on clic sur la date : il suffit de modifier le textbox
déjà existant pour lui ajouter un évènement sur le clic de la souris :

.. code-block:: lua

    -- Create a textclock widget
    mytextclock = awful.widget.textclock({ align = "right" })
    mytextclock:buttons(awful.util.table.join(
        -- Launch on clic
        awful.button({ }, 1, function() awful.util.spawn_with_shell("gsimplecal") end
    ))


.. _gsimplecal: http://dmedvinsky.github.io/gsimplecal/

Utiliser les touches média
==========================

.. image:: {filename}/images/awesome/medias.png
    :class: floatleft
    :alt: Media keys

Vous avez peut-être des touches d'accès rapide sur votre clavier pour le mail,
lancer le navigateur web… Ce sont des touches médias, qui peuvent être
interceptées par le gestionnaire de fenêtre pour lancer les actions
appropriées. On va se servir de ces touches pour lancer les applications dont
nous avons besoin. 

Toutefois, j'ai rarement besoin d'avoir plus d'un client mail ou un navigateur
lancé. De même, je passe souvent d'une recherche sur le web à autre chose,
avant de retourner sur le navigateur. J'ai donc pris l'habitude de le garder
lancé et ouvert dans un onglet à part. Ce que je propose permet l'action
suivante : lorsque l'on appuie sur la touche « web » du clavier, on va demander
au gestionnaire de fenêtre d'afficher le `tag` dans lequel est tourne. Si ce
`tag` n'est pas présent sur le bureau : on va le créer, et lancer au passage le
navigateur, ainsi, on n'a pas besoin de savoir si l'application est lancée ou
non, c'est Awesome qui se charge de faire ça pour nous.

Il existe une extension permetant de gérer les tags et les applications
facilement : shifty_, elle vient se substituer au gestionnaire de tag
implémenté par défaut, et permet de faire beaucoup de choses très 
intéressante :

* lancer une application au démarrage d'un tag
* …

Dans la configuration de shifty, il faut déclarer ses tags ainsi :

.. code-block:: lua

    shifty.config.tags = {
        ["musique"] = { position = 100, icon = music_icon, spawn = "gmpc"},
        ["mail"] =    { position = 101, icon = mail_icon,  spawn = "icedove"},
        ["web"] =     { position = 102, icon = web_icon,   spawn = "iceweasel"},
    

Cela permet de lancer l'application désirée lors de la création du tag (s'il
n'est pas déjà affiché), puis dans la configuration générale d'awesome :

.. code-block:: lua

    globalkeys = awful.util.table.join(
        awful.key({         }, "XF86Calculator", function()  awful.tag.viewonly(shifty.getpos(100)) end ),
        awful.key({         }, "XF86Mail",       function()  awful.tag.viewonly(shifty.getpos(101)) end ),
        awful.key({         }, "XF86HomePage",   function()  awful.tag.viewonly(shifty.getpos(102)) end ),

Maintenant on demande à afficher le tag voulu en fonction de la touche clavier
préssée : si le tag existe, il sera affiché, sinon il sera non seulement créé,
mais l'application sera lancée : un bon moyen pour avoir toujours ses
applications préférées au bout des doigts !

.. _shifty: http://awesome.naquadah.org/wiki/Shifty/fr

Conclusion
==========

Awesome reste pour moi toujours aussi agréable à utiliser. Cela fait plus de
trois ans maintenant que je l'utilise, et je continue d'être ravi d'avoir un
système qui se contrôle au doigt et à l'œuil (au doigt surtout !). Pouvoir
configurer ses applications à sa guise peut paraître couteux et compliqué de
prime abord, mais permet d'avoir un système qui correspond à notre besoin : ça
n'est pas à nous de nous adapter à un outil, c'est à l'outil de s'adapter à
notre usage !