« Awesome » : différence entre les versions
(Ajout de la catégorie "GNU-Linux_et_Unix") |
|||
(13 versions intermédiaires par 9 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{nav|Installation}} | |||
'''awesome''' est « un [http://fr.wikipedia.org/wiki/Gestionnaire_de_fen%C3%AAtres gestionnaire de fenêtres] libre fonctionnant au dessus de X Window System, sur les machines de type UNIX. Son objectif est de rester très léger et de proposer plusieurs dispositions des fenêtres (maximisation, flottante, placées automatiquement comme dans Ion). » Pour plus de détails, consultez l'[http://fr.wikipedia.org/wiki/Awesome_%28logiciel%29 article de wikipédia]. | |||
== Adaptation d'awesome au bépo == | |||
awesome utilise les touches {{t|H}}, {{t|J}}, {{t|K}}, {{t|L}} pour le déplacement et la modification de la taille des fenêtres. Sur un clavier [[*erty]], ces touches correspondent à une demi-rangée et leur position doit être retranscrite sur un clavier bépo ({{t|C}}, {{t|T}}, {{t|S}}, {{t|R}}), d'où un changement [http://fr.wikipedia.org/wiki/Bijection bijectif] des touches : | |||
* H -> C | * H -> C | ||
* J -> T | * J -> T | ||
Ligne 7 : | Ligne 10 : | ||
* L -> R | * L -> R | ||
Malheureusement | Malheureusement, {{t|C}}, {{t|T}}, {{t|R}} sont déjà utilisées pour faire d'autres choses sur awesome, on va donc les réassigner à des emplacements libres : | ||
* C -> X (pour avoir la même place physique et pouvoir fermer une fenêtre à une seule main) | * C -> X (pour avoir la même place physique et pouvoir fermer une fenêtre à une seule main) | ||
* T -> J (c'est le même changement que dans vim et vimperator) | * T -> J (c'est le même changement que dans [[vim]] et [[vimperator]]) | ||
* R -> H (pas vraiment de logique…) | * R -> H (pas vraiment de logique…) | ||
awesome utilise aussi les chiffres pour changer de bureau. C'est très pratique en *erty, mais nous n'avons pas les chiffres en accès direct sur la disposition bépo ! La FAQ française donne une solution pour contourner le problème. | |||
== | == Configuration pour awesome 3.1 == | ||
Sous archlinux le fichier de configuration est | Sous archlinux, le fichier de configuration est {{c|~/.config/awesome/rc.lua}}. C'est un emplacement relativement standard, mais si vous ne trouvez pas le fichier, faites un : | ||
<source lang="bash"> | |||
locate rc.lua | |||
</source> | |||
Dans le script proposé, vous trouverez '''en gras''' nos modifications par rapport à une version standard de ce fichier de configuration pour la partie ''Key bindings''. '''Attention''' : ce qui suit n'est pas le fichier de configuration complet, mais juste la partie ''Key bindings'' à remplacer ! | |||
<source lang="lua"> | |||
-- {{{ Key bindings | |||
-- Bind keyboard digits | |||
-- Compute the maximum number of digit we need, limited to 9 keynumber = 0 | |||
for s = 1, screen.count() do | |||
keynumber = math.min(9, math.max(#tags[s], keynumber)); | |||
end | |||
'''local bepo_numkeys = {''' | |||
'''[0]="asterisk", "quotedbl", "guillemotleft", "guillemotright", "parenleft", "parenright", "at", "plus", "minus", "slash"''' | |||
'''}''' | |||
for i = 1, keynumber do | |||
keybinding({ modkey }, '''bepo_numkeys[i]''', | |||
function () | |||
local screen = mouse.screen | |||
if tags[screen][i] then | |||
awful.tag.viewonly(tags[screen][i]) | |||
end | |||
end):add() | |||
keybinding({ modkey, "Control" }, '''bepo_numkeys[i]''', | |||
function () | |||
local screen = mouse.screen | |||
if tags[screen][i] then | |||
tags[screen][i].selected = not tags[screen][i].selected | |||
end | |||
end):add() | |||
keybinding({ modkey, "Shift" }, '''bepo_numkeys[i]''', | |||
function () | |||
if client.focus then | |||
if tags[client.focus.screen][i] then | |||
awful.client.movetotag(tags[client.focus.screen][i]) | |||
end | |||
end | |||
end):add() | |||
keybinding({ modkey, "Control", "Shift" }, '''bepo_numkeys[i]''', | |||
function () | |||
if client.focus then | |||
if tags[client.focus.screen][i] then | |||
awful.client.toggletag(tags[client.focus.screen][i]) | |||
end | |||
end | |||
end):add() | |||
end | |||
keybinding({ modkey }, "Left", awful.tag.viewprev):add() | |||
keybinding({ modkey }, "Right", awful.tag.viewnext):add() | |||
keybinding({ modkey }, "Escape", awful.tag.history.restore):add() | |||
-- Standard program | |||
keybinding({ modkey }, "Return", function () awful.util.spawn(terminal) end):add() | |||
keybinding({ modkey, "Control" }, "'''h'''", function () | |||
mypromptbox[mouse.screen].text = | |||
awful.util.escape(awful.util.restart()) | |||
end):add() | |||
keybinding({ modkey, "Shift" }, "q", awesome.quit):add() | |||
-- Client manipulation | |||
keybinding({ modkey }, "m", awful.client.maximize):add() | |||
keybinding({ modkey }, "f", function () if client.focus then client.focus.fullscreen = not client.focus.fullscreen end end):add() | |||
keybinding({ modkey, "Shift" }, '''"x"''', function () if client.focus then client.focus:kill() end end):add() | |||
keybinding({ modkey }, '''"t"''', function () awful.client.focus.byidx(1); if client.focus then client.focus:raise() end end):add() | |||
keybinding({ modkey }, '''"s"''', function () awful.client.focus.byidx(-1); if client.focus then client.focus:raise() end end):add() | |||
keybinding({ modkey, "Shift" }, '''"t"''', function () awful.client.swap.byidx(1) end):add() | |||
keybinding({ modkey, "Shift" }, '''"s"''', function () awful.client.swap.byidx(-1) end):add() | |||
keybinding({ modkey, "Control" }, '''"t"''', function () awful.screen.focus(1) end):add() | |||
keybinding({ modkey, "Control" }, '''"s"''', function () awful.screen.focus(-1) end):add() | |||
keybinding({ modkey, "Control" }, "space", awful.client.togglefloating):add() | |||
keybinding({ modkey, "Control" }, "Return", function () if client.focus then client.focus:swap(awful.client.getmaster()) end end):add() | |||
keybinding({ modkey }, "o", awful.client.movetoscreen):add() | |||
keybinding({ modkey }, "Tab", awful.client.focus.history.previous):add() | |||
keybinding({ modkey }, "u", awful.client.urgent.jumpto):add() | |||
keybinding({ modkey, "Shift" }, '''"h"''', function () if client.focus then client.focus:redraw() end end):add() | |||
-- Layout manipulation | |||
keybinding({ modkey }, '''"r"''', function () awful.tag.incmwfact(0.05) end):add() | |||
keybinding({ modkey }, '''"c"''', function () awful.tag.incmwfact(-0.05) end):add() | |||
keybinding({ modkey, "Shift" }, '''"c"''', function () awful.tag.incnmaster(1) end):add() | |||
keybinding({ modkey, "Shift" }, '''"r"''', function () awful.tag.incnmaster(-1) end):add() | |||
keybinding({ modkey, "Control" }, '''"c"''', function () awful.tag.incncol(1) end):add() | |||
keybinding({ modkey, "Control" }, '''"r"''', function () awful.tag.incncol(-1) end):add() | |||
keybinding({ modkey }, "space", function () awful.layout.inc(layouts, 1) end):add() | |||
keybinding({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end):add() | |||
-- Prompt | |||
keybinding({ modkey }, "F1", function () | |||
awful.prompt.run({ prompt = "Run: " }, mypromptbox[mouse.screen], awful.util.spawn, awful.completion.bash, | |||
awful.util.getdir("cache") .. "/history") | |||
end):add() | |||
keybinding({ modkey }, "F4", function () | |||
awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox[mouse.screen], awful.util.eval, awful.prompt.bash, | |||
awful.util.getdir("cache") .. "/history_eval") | |||
end):add() | |||
keybinding({ modkey, "Ctrl" }, "i", function () | |||
local s = mouse.screen | |||
if mypromptbox[s].text then | |||
mypromptbox[s].text = nil | |||
elseif client.focus then | |||
mypromptbox[s].text = nil | |||
if client.focus.class then | |||
mypromptbox[s].text = "Class: " .. client.focus.class .. " " | |||
end | |||
if client.focus.instance then | |||
mypromptbox[s].text = mypromptbox[s].text .. "Instance: ".. client.focus.instance .. " " | |||
end | |||
if client.focus.role then | |||
mypromptbox[s].text = mypromptbox[s].text .. "Role: ".. client.focus.role | |||
end | |||
end | |||
end):add() | |||
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them | |||
keybinding({ modkey }, '''"j"''', awful.client.togglemarked):add() | |||
for i = 1, keynumber do | |||
keybinding({ modkey, "Shift" }, "F" .. i, | |||
function () | |||
local screen = mouse.screen | |||
if tags[screen][i] then | |||
for k, c in pairs(awful.client.getmarked()) do | |||
awful.client.movetotag(tags[screen][i], c) | |||
end | |||
end | |||
end):add() | |||
end | |||
-- }}} | |||
</source> | |||
== | == Liens == | ||
* [http://awesome.naquadah.org/wiki/ | * [http://awesome.naquadah.org/wiki/Main_Page Le wiki officiel d'awesome] | ||
* [http://awesome.naquadah.org/wiki/ | * [http://awesome.naquadah.org/wiki/FAQ/fr La FAQ française] | ||
[[Catégorie:GNU-Linux_et_Unix]] |
Dernière version du 27 mars 2023 à 14:24
awesome est « un gestionnaire de fenêtres libre fonctionnant au dessus de X Window System, sur les machines de type UNIX. Son objectif est de rester très léger et de proposer plusieurs dispositions des fenêtres (maximisation, flottante, placées automatiquement comme dans Ion). » Pour plus de détails, consultez l'article de wikipédia.
Adaptation d'awesome au bépo
awesome utilise les touches clavier bépoH, clavier bépoJ, clavier bépoK, clavier bépoL pour le déplacement et la modification de la taille des fenêtres. Sur un clavier *erty, ces touches correspondent à une demi-rangée et leur position doit être retranscrite sur un clavier bépo (clavier bépoC, clavier bépoT, clavier bépoS, clavier bépoR), d'où un changement bijectif des touches :
- H -> C
- J -> T
- K -> S
- L -> R
Malheureusement, clavier bépoC, clavier bépoT, clavier bépoR sont déjà utilisées pour faire d'autres choses sur awesome, on va donc les réassigner à des emplacements libres :
- C -> X (pour avoir la même place physique et pouvoir fermer une fenêtre à une seule main)
- T -> J (c'est le même changement que dans vim et vimperator)
- R -> H (pas vraiment de logique…)
awesome utilise aussi les chiffres pour changer de bureau. C'est très pratique en *erty, mais nous n'avons pas les chiffres en accès direct sur la disposition bépo ! La FAQ française donne une solution pour contourner le problème.
Configuration pour awesome 3.1
Sous archlinux, le fichier de configuration est ~/.config/awesome/rc.lua
. C'est un emplacement relativement standard, mais si vous ne trouvez pas le fichier, faites un :
locate rc.lua
Dans le script proposé, vous trouverez en gras nos modifications par rapport à une version standard de ce fichier de configuration pour la partie Key bindings. Attention : ce qui suit n'est pas le fichier de configuration complet, mais juste la partie Key bindings à remplacer !
-- {{{ Key bindings
-- Bind keyboard digits
-- Compute the maximum number of digit we need, limited to 9 keynumber = 0
for s = 1, screen.count() do
keynumber = math.min(9, math.max(#tags[s], keynumber));
end
'''local bepo_numkeys = {'''
'''[0]="asterisk", "quotedbl", "guillemotleft", "guillemotright", "parenleft", "parenright", "at", "plus", "minus", "slash"'''
'''}'''
for i = 1, keynumber do
keybinding({ modkey }, '''bepo_numkeys[i]''',
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end):add()
keybinding({ modkey, "Control" }, '''bepo_numkeys[i]''',
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end):add()
keybinding({ modkey, "Shift" }, '''bepo_numkeys[i]''',
function ()
if client.focus then
if tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end
end):add()
keybinding({ modkey, "Control", "Shift" }, '''bepo_numkeys[i]''',
function ()
if client.focus then
if tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end
end):add()
end
keybinding({ modkey }, "Left", awful.tag.viewprev):add()
keybinding({ modkey }, "Right", awful.tag.viewnext):add()
keybinding({ modkey }, "Escape", awful.tag.history.restore):add()
-- Standard program
keybinding({ modkey }, "Return", function () awful.util.spawn(terminal) end):add()
keybinding({ modkey, "Control" }, "'''h'''", function ()
mypromptbox[mouse.screen].text =
awful.util.escape(awful.util.restart())
end):add()
keybinding({ modkey, "Shift" }, "q", awesome.quit):add()
-- Client manipulation
keybinding({ modkey }, "m", awful.client.maximize):add()
keybinding({ modkey }, "f", function () if client.focus then client.focus.fullscreen = not client.focus.fullscreen end end):add()
keybinding({ modkey, "Shift" }, '''"x"''', function () if client.focus then client.focus:kill() end end):add()
keybinding({ modkey }, '''"t"''', function () awful.client.focus.byidx(1); if client.focus then client.focus:raise() end end):add()
keybinding({ modkey }, '''"s"''', function () awful.client.focus.byidx(-1); if client.focus then client.focus:raise() end end):add()
keybinding({ modkey, "Shift" }, '''"t"''', function () awful.client.swap.byidx(1) end):add()
keybinding({ modkey, "Shift" }, '''"s"''', function () awful.client.swap.byidx(-1) end):add()
keybinding({ modkey, "Control" }, '''"t"''', function () awful.screen.focus(1) end):add()
keybinding({ modkey, "Control" }, '''"s"''', function () awful.screen.focus(-1) end):add()
keybinding({ modkey, "Control" }, "space", awful.client.togglefloating):add()
keybinding({ modkey, "Control" }, "Return", function () if client.focus then client.focus:swap(awful.client.getmaster()) end end):add()
keybinding({ modkey }, "o", awful.client.movetoscreen):add()
keybinding({ modkey }, "Tab", awful.client.focus.history.previous):add()
keybinding({ modkey }, "u", awful.client.urgent.jumpto):add()
keybinding({ modkey, "Shift" }, '''"h"''', function () if client.focus then client.focus:redraw() end end):add()
-- Layout manipulation
keybinding({ modkey }, '''"r"''', function () awful.tag.incmwfact(0.05) end):add()
keybinding({ modkey }, '''"c"''', function () awful.tag.incmwfact(-0.05) end):add()
keybinding({ modkey, "Shift" }, '''"c"''', function () awful.tag.incnmaster(1) end):add()
keybinding({ modkey, "Shift" }, '''"r"''', function () awful.tag.incnmaster(-1) end):add()
keybinding({ modkey, "Control" }, '''"c"''', function () awful.tag.incncol(1) end):add()
keybinding({ modkey, "Control" }, '''"r"''', function () awful.tag.incncol(-1) end):add()
keybinding({ modkey }, "space", function () awful.layout.inc(layouts, 1) end):add()
keybinding({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end):add()
-- Prompt
keybinding({ modkey }, "F1", function ()
awful.prompt.run({ prompt = "Run: " }, mypromptbox[mouse.screen], awful.util.spawn, awful.completion.bash,
awful.util.getdir("cache") .. "/history")
end):add()
keybinding({ modkey }, "F4", function ()
awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox[mouse.screen], awful.util.eval, awful.prompt.bash,
awful.util.getdir("cache") .. "/history_eval")
end):add()
keybinding({ modkey, "Ctrl" }, "i", function ()
local s = mouse.screen
if mypromptbox[s].text then
mypromptbox[s].text = nil
elseif client.focus then
mypromptbox[s].text = nil
if client.focus.class then
mypromptbox[s].text = "Class: " .. client.focus.class .. " "
end
if client.focus.instance then
mypromptbox[s].text = mypromptbox[s].text .. "Instance: ".. client.focus.instance .. " "
end
if client.focus.role then
mypromptbox[s].text = mypromptbox[s].text .. "Role: ".. client.focus.role
end
end
end):add()
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
keybinding({ modkey }, '''"j"''', awful.client.togglemarked):add()
for i = 1, keynumber do
keybinding({ modkey, "Shift" }, "F" .. i,
function ()
local screen = mouse.screen
if tags[screen][i] then
for k, c in pairs(awful.client.getmarked()) do
awful.client.movetotag(tags[screen][i], c)
end
end
end):add()
end
-- }}}