Awesome
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 petit et de proposer plusieurs dispositions des fenêtres (maximisation, flottante, placées automatiquement comme Ion).
L'article awesome sur wikipédia.
adaptation au bépo
Awesome utilise les touches HJKL pour se déplacer et modifier la taille des fenêtres. Ces touches ont une position physique important et on se doit de retranscrire le même comportement d'où un changement des touches :
- H -> C
- J -> T
- K -> S
- L -> R
Malheureusement CTR sont utilisés pour faire d'autres choses sur awesome, donc je vais les réassigner à des places 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 qwerty mais nous n'avons pas les chiffres en accès direct. J'ai utilisé la FAQ Française pour une solution.
configuration pour awesome 3.1
Sous archlinux le fichier de configuration est dans ~/.config/awesome/rc.lua
En gras vous avez mes changements opérés dans la partie Key bindings du fichier de configuration. ATTENTION, ceci n'est pas le fichier de configuration complet mais juste la partie Key bindings !
-- {{{ 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 -- }}}