[Awesome] Question sur le focus du client.

Xorg, Compiz, KDE / Gnome / Xfce / Fluxbox / e17 / fvwm ... GDM/KDM/XDM...
Répondre
NoX
newbie
Messages : 7
Inscription : mer. 07 déc. 2011, 19:26

[Awesome] Question sur le focus du client.

Message par NoX »

Bonjour,

je découvre Awesome depuis maintenant quelque temps, et suis enchanté par les possibilités de ce WM,
Néanmoins j'ai une question,
j'ai remarqué que lorsque j'utilise la souris sur la barre d'état (statusbar) pour changer de tag sans utiliser le clavier, je perd la possibilité d'utiliser la souris sur tous les clients, l'autofocus du client ne se fait plus.

Le clavier fonctionne, je peux continuer à travailler sans problème,
le WM reste fonctionnel et les clients ne crashent pas donc c'est pas bien méchant, mais ça m'oblige à redémarrer Awesome pour récupérer la souris.

Pensez-vous qu'il s'agit d'un comportement normal que l'on peut modifier dans le rc.lua ou s'agit-il d'un autre soucis.


merci

++
Dernière modification par NoX le mer. 27 févr. 2013, 13:11, modifié 2 fois.
Avatar de l’utilisateur
GuilouV
Elfe
Messages : 539
Inscription : jeu. 25 nov. 2010, 15:34

Re: [Awesome] Question sur le focus du client.

Message par GuilouV »

Salut,

Utilisant awesome depuis pas mal de temps maintenant et n'ayant jamais rencontré ce problème je dirai qu'il doit s'agir d'une erreur dans ton rc.lua. L'as-tu modifié avant que ce souci n'apparaisse? As-tu le souci avec le rc.lua de base?
Sinon quelle version de awesome utilises-tu?
[ Vaio S (VJS131X0211B) ]==[ Arch64 i3 Bépo ]==[ KISS spirit ]
NoX
newbie
Messages : 7
Inscription : mer. 07 déc. 2011, 19:26

Re: [Awesome] Question sur le focus du client.

Message par NoX »

Bonsoir,

oui j'ai modifié mon rc.lua très légèrement (nom des tags, layouts, wallpaper...)du coup j'ai essayé de faire un backup du rc.lua d'origine en suivant ton conseil, et j'arrive à recréer le même problème immédiatement avec le rc.lua d'origine et chromium comme client.
La souris est toujours active, car je peux toujours masquer un client en cliquant sur son nom dans la bar de status, mais impossible d’interagir avec la souris et le client, je peux aussi toujours faire apparaître le menu Awesome avec un clic droit n'importe ou sur l'écran ou switcher d'un tag à l'autre par exemple.

J'utilise la version du dépot community, j’hésite à compiler la version git dispo sur le AUR et ajouter l'option indiquée sur la page "debugging" du wiki d'Awesome pour essayer d'avoir plus d'infos sur ce qu'il se passe exactement, surtout que je peux recréer le segfault immédiatement.

J'utilise également Awesome sur un petit notebook samsung et je n'ai jamais eu non plus ce genre de soucis, j'avais déjà à l'époque voulu installer la version 3.4 sur ma workstation, mais je m’étais frotté au même soucis et j'avais laisser tomber pour passer sur quelque chose de plus simple à débugger en cas de soucis (spectrwm).

Je vois maintenant que j'ai toujours exactement le même problème sur la version 3.5.2, je vais gratter un peu côté débugging pour voir ...
Avatar de l’utilisateur
GuilouV
Elfe
Messages : 539
Inscription : jeu. 25 nov. 2010, 15:34

Re: [Awesome] Question sur le focus du client.

Message par GuilouV »

Lorsque tu changes de tag tu as les clients du tag demandé qui s'affiche ou tu restes bloqué avec le client du tag "buggé"? Juste pour savoir si on peut penser à une erreur d'affichage plutôt qu'à un souci de awesome pur.

Malheureusement je n'ai pas plus d'idées pour le moment.

PS: j'en profite pour te poser une question à mon tour :P Quelle commande gère ton wallpaper sous awesome car je n'ai pas réussi en suivant le wiki et je me suis retourné sur un lancement via le .xinitrc
[ Vaio S (VJS131X0211B) ]==[ Arch64 i3 Bépo ]==[ KISS spirit ]
Avatar de l’utilisateur
vlamy
yeomen
Messages : 268
Inscription : ven. 20 juil. 2012, 15:19
Localisation : Grenoble

Re: [Awesome] Question sur le focus du client.

Message par vlamy »

Salut !
Bon choix pour Awesome :)
NoX a écrit : J'utilise la version du dépot community, j’hésite à compiler la version git dispo sur le AUR et ajouter l'option indiquée sur la page "debugging" du wiki d'Awesome pour essayer d'avoir plus d'infos sur ce qu'il se passe exactement, surtout que je peux recréer le segfault immédiatement.
Tu as un segfault? Tu peux nous en dire plus?
Sinon, il y a d'autres possibilités pour ton bug.
Personnellement j'ai désactive le "sloppy focus" qui buggait un peu (enfin quand je dis bug, c'est que je n'arrivais pas à me faire à son comportement et de mémoire, j'avais un peu la même sensation que toi). Si tu nous donnes ton rc.lua je peux te donner le diff qui te permettras de le désactiver.
GuilouV a écrit : PS: j'en profite pour te poser une question à mon tour :P Quelle commande gère ton wallpaper sous awesome car je n'ai pas réussi en suivant le wiki et je me suis retourné sur un lancement via le .xinitrc
En début de rc.lua :

Code : Tout sélectionner

awful.util.spawn_with_shell("feh --bg-center ~/Images/wallpaper/wall.jpg &")
A adapter avec le tool que tu souhaites utiliser pour afficher le fond d'écran.
Mais si tu n'as aucune idée : "feh" ça le fait :D
Avatar de l’utilisateur
GuilouV
Elfe
Messages : 539
Inscription : jeu. 25 nov. 2010, 15:34

Re: [Awesome] Question sur le focus du client.

Message par GuilouV »

Merci vlamy. J'étais resté à l'utilisation d'une commande dans le fichier de conf du thème (qui ne fonctionne plus sur cette version), voilà qui est plus propre.
[ Vaio S (VJS131X0211B) ]==[ Arch64 i3 Bépo ]==[ KISS spirit ]
Avatar de l’utilisateur
vlamy
yeomen
Messages : 268
Inscription : ven. 20 juil. 2012, 15:19
Localisation : Grenoble

Re: [Awesome] Question sur le focus du client.

Message par vlamy »

GuilouV a écrit :Merci vlamy. J'étais resté à l'utilisation d'une commande dans le fichier de conf du thème (qui ne fonctionne plus sur cette version), voilà qui est plus propre.
L'avantage avec les logiciels très configurables, voir plutôt très scriptables, comme awesome, c'est qu'il y a souvent plusieurs façons de faire la même chose (comme lancer le gestionnaire de fond d'écran par exemple). Ca compense le fait que l'API évolue super rapidement on va dire :)
NoX
newbie
Messages : 7
Inscription : mer. 07 déc. 2011, 19:26

Re: [Awesome] Question sur le focus du client.

Message par NoX »

Lorsque tu changes de tag tu as les clients du tag demandé qui s'affiche ou tu restes bloqué avec le client du tag "buggé"?
Je récupère bien le ou les clients du tag demandé, mais je ne toujours pas les piloter avec la souris, j'ai aussi toujours les effets de fondu de mon "compositeur" cairo en l'occurence lors de l'apparition du client, donc l'affichage me semblerait ok mais je peux me tromper.

Pour le papier peint j'ai créer un nouveau fichier de configuration de mon thème perso et j'ai changer le chemin du papier peint.
Tu as un segfault? Tu peux nous en dire plus?
Non pas exactement j'ai parlé trop vite, mais comme je fait très peu d'actions pour obtenir le bug, lancement du WM avec xinit puis ouverture d'un client et enfin un clique dans la barre de status je me dis que je pourrais avoir une liste simple de ce qu'il se passe avec les possibilités de debugg aprés comme le WM ne crash pas vraiment je ne sais pas si ça fonctionnerais.


Voila mon rc.lua

Code : Tout sélectionner

-- Standard awesome library
local gears = require("gears")
local awful = require("awful")
awful.rules = require("awful.rules")
require("awful.autofocus")
-- Widget and layout library
local wibox = require("wibox")
-- Theme handling library
local beautiful = require("beautiful")
-- Notification library
local naughty = require("naughty")
local menubar = require("menubar")
 -- launch the Cairo Composite Manager
 awful.util.spawn_with_shell("cairo-compmgr &")

-- {{{ Error handling
-- Check if awesome encountered an error during startup and fell back to
-- another config (This code will only ever execute for the fallback config)
if awesome.startup_errors then
    naughty.notify({ preset = naughty.config.presets.critical,
                     title = "Oops, there were errors during startup!",
                     text = awesome.startup_errors })
end

-- Handle runtime errors after startup
do
    local in_error = false
    awesome.connect_signal("debug::error", function (err)
        -- Make sure we don't go into an endless error loop
        if in_error then return end
        in_error = true

        naughty.notify({ preset = naughty.config.presets.critical,
                         title = "Oops, an error happened!",
                         text = err })
        in_error = false
    end)
end
-- }}}

-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
beautiful.init("/usr/share/awesome/themes/nox_theme/theme.lua")

-- This is used later as the default terminal and editor to run.
terminal = "urxvt"
editor = os.getenv("vim") or "nano"
editor_cmd = terminal .. " -e " .. editor

-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"

-- Table of layouts to cover with awful.layout.inc, order matters.
local layouts =
{
    awful.layout.suit.floating,
    awful.layout.suit.tile,
    awful.layout.suit.tile.left,
    awful.layout.suit.tile.bottom,
    awful.layout.suit.tile.top,
    awful.layout.suit.fair,
    awful.layout.suit.fair.horizontal,
    awful.layout.suit.spiral,
    awful.layout.suit.spiral.dwindle,
    awful.layout.suit.max,
--    awful.layout.suit.max.fullscreen,
--    awful.layout.suit.magnifier
}
-- }}}

-- {{{ Wallpaper
if beautiful.wallpaper then
    for s = 1, screen.count() do
        gears.wallpaper.maximized(beautiful.wallpaper, s, true)
    end
end
-- }}}

-- {{{ Tags
  tags = {
   names  = { "www", "work", "code", "jabb", "vid", "torr", "music", "misc", },
   layout = { layouts[10], layouts[2], layouts[2], layouts[10], layouts[1], layouts[10], layouts[10], layouts[1]
}}
for s = 1, screen.count() do
	tags[s] = awful.tag(tags.names, s, tags.layout)
end
-- }}}

-- {{{ Menu
-- Create a laucher widget and a main menu
myawesomemenu = {
   { "manual", terminal .. " -e man awesome" },
   { "edit config", editor_cmd .. " " .. awesome.conffile },
   { "restart", awesome.restart },
   { "quit", awesome.quit }
}

mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
                                    { "open terminal", terminal }
                                  }
                        })

mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
                                     menu = mymainmenu })

-- Menubar configuration
menubar.utils.terminal = urxvt -- Set the terminal for applications that require it
-- }}}

-- {{{ Wibox
-- Create a textclock widget
mytextclock = awful.widget.textclock()

-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = awful.util.table.join(
                    awful.button({ }, 1, awful.tag.viewonly),
                    awful.button({ modkey }, 1, awful.client.movetotag),
                    awful.button({ }, 3, awful.tag.viewtoggle),
                    awful.button({ modkey }, 3, awful.client.toggletag),
                    awful.button({ }, 4, function(t) awful.tag.viewnext(awful.tag.getscreen(t)) end),
                    awful.button({ }, 5, function(t) awful.tag.viewprev(awful.tag.getscreen(t)) end)
                    )
mytasklist = {}
mytasklist.buttons = awful.util.table.join(
                     awful.button({ }, 1, function (c)
                                              if c == client.focus then
                                                  c.minimized = true
                                              else
                                                  -- Without this, the following
                                                  -- :isvisible() makes no sense
                                                  c.minimized = false
                                                  if not c:isvisible() then
                                                      awful.tag.viewonly(c:tags()[1])
                                                  end
                                                  -- This will also un-minimize
                                                  -- the client, if needed
                                                  client.focus = c
                                                  c:raise()
                                              end
                                          end),
                     awful.button({ }, 3, function ()
                                              if instance then
                                                  instance:hide()
                                                  instance = nil
                                              else
                                                  instance = awful.menu.clients({ width=250 })
                                              end
                                          end),
                     awful.button({ }, 4, function ()
                                              awful.client.focus.byidx(1)
                                              if client.focus then client.focus:raise() end
                                          end),
                     awful.button({ }, 5, function ()
                                              awful.client.focus.byidx(-1)
                                              if client.focus then client.focus:raise() end
                                          end))

for s = 1, screen.count() do
    -- Create a promptbox for each screen
    mypromptbox[s] = awful.widget.prompt()
    -- Create an imagebox widget which will contains an icon indicating which layout we're using.
    -- We need one layoutbox per screen.
    mylayoutbox[s] = awful.widget.layoutbox(s)
    mylayoutbox[s]:buttons(awful.util.table.join(
                           awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),
                           awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),
                           awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),
                           awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)))
    -- Create a taglist widget
    mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.filter.all, mytaglist.buttons)

    -- Create a tasklist widget
    mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)

    -- Create the wibox
    mywibox[s] = awful.wibox({ position = "top", screen = s })

    -- Widgets that are aligned to the left
    local left_layout = wibox.layout.fixed.horizontal()
    left_layout:add(mylauncher)
    left_layout:add(mytaglist[s])
    left_layout:add(mypromptbox[s])

    -- Widgets that are aligned to the right
    local right_layout = wibox.layout.fixed.horizontal()
    if s == 1 then right_layout:add(wibox.widget.systray()) end
    right_layout:add(mytextclock)
    right_layout:add(mylayoutbox[s])

    -- Now bring it all together (with the tasklist in the middle)
    local layout = wibox.layout.align.horizontal()
    layout:set_left(left_layout)
    layout:set_middle(mytasklist[s])
    layout:set_right(right_layout)

    mywibox[s]:set_widget(layout)
end
-- }}}

-- {{{ Mouse bindings
root.buttons(awful.util.table.join(
    awful.button({ }, 3, function () mymainmenu:toggle() end),
    awful.button({ }, 4, awful.tag.viewnext),
    awful.button({ }, 5, awful.tag.viewprev)
))
-- }}}

-- {{{ Key bindings
globalkeys = awful.util.table.join(
    awful.key({ modkey,           }, "Left",   awful.tag.viewprev       ),
    awful.key({ modkey,           }, "Right",  awful.tag.viewnext       ),
    awful.key({ modkey,           }, "Escape", awful.tag.history.restore),

    awful.key({ modkey,           }, "j",
        function ()
            awful.client.focus.byidx( 1)
            if client.focus then client.focus:raise() end
        end),
    awful.key({ modkey,           }, "k",
        function ()
            awful.client.focus.byidx(-1)
            if client.focus then client.focus:raise() end
        end),
    awful.key({ modkey,           }, "w", function () mymainmenu:show() end),

    -- Layout manipulation
    awful.key({ modkey, "Shift"   }, "j", function () awful.client.swap.byidx(  1)    end),
    awful.key({ modkey, "Shift"   }, "k", function () awful.client.swap.byidx( -1)    end),
    awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end),
    awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end),
    awful.key({ modkey,           }, "u", awful.client.urgent.jumpto),
    awful.key({ modkey,           }, "Tab",
        function ()
            awful.client.focus.history.previous()
            if client.focus then
                client.focus:raise()
            end
        end),

    -- Standard program
    awful.key({ modkey,           }, "Return", function () awful.util.spawn(terminal) end),
    awful.key({ modkey, "Control" }, "r", awesome.restart),
    awful.key({ modkey, "Shift"   }, "q", awesome.quit),

    awful.key({ modkey,           }, "l",     function () awful.tag.incmwfact( 0.05)    end),
    awful.key({ modkey,           }, "h",     function () awful.tag.incmwfact(-0.05)    end),
    awful.key({ modkey, "Shift"   }, "h",     function () awful.tag.incnmaster( 1)      end),
    awful.key({ modkey, "Shift"   }, "l",     function () awful.tag.incnmaster(-1)      end),
    awful.key({ modkey, "Control" }, "h",     function () awful.tag.incncol( 1)         end),
    awful.key({ modkey, "Control" }, "l",     function () awful.tag.incncol(-1)         end),
    awful.key({ modkey,           }, "space", function () awful.layout.inc(layouts,  1) end),
    awful.key({ modkey, "Shift"   }, "space", function () awful.layout.inc(layouts, -1) end),

    awful.key({ modkey, "Control" }, "n", awful.client.restore),

    -- Prompt
    awful.key({ modkey },            "r",     function () mypromptbox[mouse.screen]:run() end),

    awful.key({ modkey, "Shift"   }, "r",
              function ()
                  awful.prompt.run({ prompt = "Run Lua code: " },
                  mypromptbox[mouse.screen].widget,
                  awful.util.eval, nil,
                  awful.util.getdir("cache") .. "/history_eval")
              end),
    -- Menubar
    awful.key({ modkey }, "p", function() menubar.show() end)
)

clientkeys = awful.util.table.join(
    awful.key({ modkey,           }, "f",      function (c) c.fullscreen = not c.fullscreen  end),
    awful.key({ modkey,		  }, "x",      function (c) c:kill()                         end),
    awful.key({ modkey, "Control" }, "space",  awful.client.floating.toggle                     ),
    awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
    awful.key({ modkey,           }, "o",      awful.client.movetoscreen                        ),
    awful.key({ modkey,           }, "t",      function (c) c.ontop = not c.ontop            end),
    awful.key({ modkey,           }, "n",
        function (c)
            -- The client currently has the input focus, so it cannot be
            -- minimized, since minimized clients can't have the focus.
            c.minimized = true
        end),
    awful.key({ modkey,           }, "m",
        function (c)
            c.maximized_horizontal = not c.maximized_horizontal
            c.maximized_vertical   = not c.maximized_vertical
        end)
)

-- 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

-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it works on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, keynumber do
    globalkeys = awful.util.table.join(globalkeys,
        awful.key({ modkey }, "#" .. i + 9,
                  function ()
                        local screen = mouse.screen
                        if tags[screen][i] then
                            awful.tag.viewonly(tags[screen][i])
                        end
                  end),
        awful.key({ modkey, "Control" }, "#" .. i + 9,
                  function ()
                      local screen = mouse.screen
                      if tags[screen][i] then
                          awful.tag.viewtoggle(tags[screen][i])
                      end
                  end),
        awful.key({ modkey, "Shift" }, "#" .. i + 9,
                  function ()
                      if client.focus and tags[client.focus.screen][i] then
                          awful.client.movetotag(tags[client.focus.screen][i])
                      end
                  end),
        awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
                  function ()
                      if client.focus and tags[client.focus.screen][i] then
                          awful.client.toggletag(tags[client.focus.screen][i])
                      end
                  end))
end

clientbuttons = awful.util.table.join(
    awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
    awful.button({ modkey }, 1, awful.mouse.client.move),
    awful.button({ modkey }, 3, awful.mouse.client.resize))

-- Set keys
root.keys(globalkeys)
-- }}}
Avatar de l’utilisateur
GuilouV
Elfe
Messages : 539
Inscription : jeu. 25 nov. 2010, 15:34

Re: [Awesome] Question sur le focus du client.

Message par GuilouV »

A la fin de ton rc.lua il manque les lignes qui gèrent le sloppy focus comparé au mien.
Voici ce que j'ai si tu veux essayer de l'ajouter à ton fichier pour tester:

Code : Tout sélectionner

-- {{{ Signals
-- Signal function to execute when a new client appears.
client.connect_signal("manage", function (c, startup)
    -- Enable sloppy focus
    c:connect_signal("mouse::enter", function(c)
        if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
            and awful.client.focus.filter(c) then
            client.focus = c
        end
    end)

    if not startup then
        -- Set the windows at the slave,
        -- i.e. put it at the end of others instead of setting it master.
        -- awful.client.setslave(c)

        -- Put windows in a smart way, only if they does not set an initial position.
        if not c.size_hints.user_position and not c.size_hints.program_position then
            awful.placement.no_overlap(c)
            awful.placement.no_offscreen(c)
        end
    end
[ Vaio S (VJS131X0211B) ]==[ Arch64 i3 Bépo ]==[ KISS spirit ]
Avatar de l’utilisateur
vlamy
yeomen
Messages : 268
Inscription : ven. 20 juil. 2012, 15:19
Localisation : Grenoble

Re: [Awesome] Question sur le focus du client.

Message par vlamy »

NoX a écrit : Je récupère bien le ou les clients du tag demandé, mais je ne toujours pas les piloter avec la souris, j'ai aussi toujours les effets de fondu de mon "compositeur" cairo en l'occurence lors de l'apparition du client, donc l'affichage me semblerait ok mais je peux me tromper.
Alors question bête, mais as tu essayé sans compositeur?

Sinon ton rc.lua est incomplet, il manque toute la partie qui gère les signaux (essentielle au bon fonctionnement du focus notamment). Est-ce un oubli de ta part ou est-ce que cette partie manque vraiment dans ta config?

J'ai une partie différente de celle de GuilouV (j'ai notamment rajouté une coloration des bordures pour reconnaître plus facilement le client qui a le focus), alors je te donnes la mienne (au cas où), dans laquelle le sloppy focus est désactivé. Il y a les commentaires qui vont bien, mais si tu veux plus d'infos, tu n'as qu'à demander.

Code : Tout sélectionner

-- {{{ Signals
-- Signal function to execute when a new client appears.
client.connect_signal("manage", function (c, startup)
				   -- Enable sloppy focus
				   --c:connect_signal("mouse::enter", function(c)
				--				       if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
				--				       and awful.client.focus.filter(c) then
				--					  client.focus = c
				--				       end
				--				 end)

				   if not startup then
				      -- Set the windows at the slave,
				      -- i.e. put it at the end of others instead of setting it master.
				      awful.client.setslave(c)

				      -- Put windows in a smart way, only if they does not set an initial position.
				      if not c.size_hints.user_position and not c.size_hints.program_position then
					 awful.placement.no_overlap(c)
					 awful.placement.no_offscreen(c)
				      end
				   end

				   local titlebars_enabled = false
				   if titlebars_enabled and (c.type == "normal" or c.type == "dialog") then
				      -- Widgets that are aligned to the left
				      local left_layout = wibox.layout.fixed.horizontal()
				      left_layout:add(awful.titlebar.widget.iconwidget(c))

				      -- Widgets that are aligned to the right
				      local right_layout = wibox.layout.fixed.horizontal()
				      right_layout:add(awful.titlebar.widget.floatingbutton(c))
				      right_layout:add(awful.titlebar.widget.maximizedbutton(c))
				      right_layout:add(awful.titlebar.widget.stickybutton(c))
				      right_layout:add(awful.titlebar.widget.ontopbutton(c))
				      right_layout:add(awful.titlebar.widget.closebutton(c))

				      -- The title goes in the middle
				      local title = awful.titlebar.widget.titlewidget(c)
				      title:buttons(awful.util.table.join(
						       awful.button({ }, 1, function()
									       client.focus = c
									       c:raise()
									       awful.mouse.client.move(c)
									 end),
						       awful.button({ }, 3, function()
									       client.focus = c
									       c:raise()
									       awful.mouse.client.resize(c)
									 end)
						 ))

				      -- Now bring it all together
				      local layout = wibox.layout.align.horizontal()
				      layout:set_left(left_layout)
				      layout:set_right(right_layout)
				      layout:set_middle(title)

				      awful.titlebar(c):set_widget(layout)
				   end
			     end)

client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- }}}
NoX
newbie
Messages : 7
Inscription : mer. 07 déc. 2011, 19:26

Re: [Awesome] Question sur le focus du client.

Message par NoX »

Bonjour,

j'ai essayer sans compositeur et toujours le même problème.

Je ne sais pas pourquoi la partie signal ne s'est pas copiée dans mon précédent post, j'avais pourtant fait attention à bien mettre mon rc.lua en entier :oops:

Bref j'ai essayer ce que vous m'avez dit, j'ai d'abord changer la partie signal avec le code de GuilouV, mais je n'arrivait pas à enlever une petite erreur de syntaxe qui pourtant n'apparaissait pas dans vim et qui gênait awesome. <
Du coup j'ai essayer le code Vlamy et la comme par magie le soucis semble avoir disparu (du moins je n'arrive plus à le faire apparaître immédiatement)
Je viens de faire une bonne minute de cliques divers et toujours rien. :D

Ça serait donc uniquement le sloppy focus qu'il faut désactiver ? C'est la seul différence que je trouve entre les parties signal de vos rc.lua et le mien.
J'ai essayer de chercher un peu plus d'info sur cette fonction sloppy focus, mais même dans la doc de l'API lua je n'arrive pas à trouver grand chose.

En tout cas un grand merci pour l'astuce, si j'avais su à l'époque j'aurais posté la question plus tôt et j'aurais gagner du temps au lieu de passer sur un autre WM

D’ailleurs ça m'a enlevé un autre soucis qui devait surement être imputable à cette fonction, même en ayant le contrôle de la souris dans le browser, je ne pouvais pas sélectionner une entrée dans un menu déroulant et j’étais obliger d'utilise le clavier aussi.

Bref un double merci :bravo:
je met résolu dans le titre du topic
Avatar de l’utilisateur
vlamy
yeomen
Messages : 268
Inscription : ven. 20 juil. 2012, 15:19
Localisation : Grenoble

Re: [Awesome] Question sur le focus du client. (résolu)

Message par vlamy »

NoX a écrit : Ça serait donc uniquement le sloppy focus qu'il faut désactiver ? C'est la seul différence que je trouve entre les parties signal de vos rc.lua et le mien.
J'ai essayer de chercher un peu plus d'info sur cette fonction sloppy focus, mais même dans la doc de l'API lua je n'arrive pas à trouver grand chose.
Ben en fait je n'ai pas lancé ça au hasard, le sloppy focus pose de vrais problèmes à certains et pas à d'autres (par exemple si je l'active je ne penses pas avoir le même bug que toi sur Chrome). A l'époque où j'avais modifié ça j'avais trouvé 2/3 explications. Et là, impossible de remettre la main dessus, c'est pour ça que je ne m'avançais que timidement, mais à priori cela confirme mon intuition. A creuser quand même :)
NoX
newbie
Messages : 7
Inscription : mer. 07 déc. 2011, 19:26

Re: [Awesome] Question sur le focus du client. (résolu)

Message par NoX »

Bonsoir,

j'ai peut être parlé un peu vite car après quelques heures de bon fonctionnement le problème réapparaît parfois de manière aléatoire.
C'est étrange car il avait disparu directement après désactivé le paramètre en question.
Avatar de l’utilisateur
vlamy
yeomen
Messages : 268
Inscription : ven. 20 juil. 2012, 15:19
Localisation : Grenoble

Re: [Awesome] Question sur le focus du client. (résolu)

Message par vlamy »

Ha, ben intuitivement je dirais que ça doit être lié au focus quand même, si la désactivation du sloppy améliore.

Sinon une question supplémentaire : tu utilises un ou plusieurs écrans?

Dans le dernier cas, il peut y avoir quelques détails à ajuster. Dans le cas mono-écran, il faudrait que tu affines un peu ton diagnostic, afin qu'on essaie de reproduire le bug/comportement que tu décris. En particulier, je ne suis pas sûr de tout comprendre. Tu perds la souris (hors zone sticky (menu + barre supérieure)) lorsque tu passes d'un tag à un autre via la souris. Et récupères-tu la souris lorsque tu reviens sur le tag initial?

En fait on dirait que le focus de ta souris est associé à un tag spécifique (qui peut d'ailleurs ne pas être affiché). Bref, un peu plus de précision et ton rc.lua complet et on devrait pouvoir faire quelque chose :)
NoX
newbie
Messages : 7
Inscription : mer. 07 déc. 2011, 19:26

Re: [Awesome] Question sur le focus du client. (résolu)

Message par NoX »

Salut,

J'utilise un seul écran.

Une définition précise du bug :

Je lance le WM avec xinit et j'ouvre un client sur le premier tag, chromium par exemple. Jusque là aucun problème, je peux utiliser le browser avec la souris.
Maintenant je clique sur la statusbar pour changer de tag, changer mon layout ou modifier une client dans la zone de notification, à ce moment la je perd la possibilité d'utiliser ma souris sur n'importe quel client de n'importe quel tag.

Les clients sont toujours contrôlables au clavier, la souris n'est active que sur la status bar, je peux toujours changer mon tag ou le layout.
Je suis obligé de redémarrer le WM pour récupérer la souris. Je ne la récupère jamais sinon, même en revenant sur le tag initial ou que je ferme et relance le client.



Voila mon rc.lua qui est normalement entier cette fois-ci

Code : Tout sélectionner

-- Standard awesome library
local gears = require("gears")
local awful = require("awful")
awful.rules = require("awful.rules")
require("awful.autofocus")
-- Widget and layout library
local wibox = require("wibox")
-- Theme handling library
local beautiful = require("beautiful")
-- Notification library
local naughty = require("naughty")
local menubar = require("menubar")

					
-- {{{ Error handling
-- Check if awesome encountered an error during startup and fell back to
-- another config (This code will only ever execute for the fallback config)
if awesome.startup_errors then
    naughty.notify({ preset = naughty.config.presets.critical,
                     title = "Oops, there were errors during startup!",
                     text = awesome.startup_errors })
end

-- Handle runtime errors after startup
do
    local in_error = false
    awesome.connect_signal("debug::error", function (err)
        -- Make sure we don't go into an endless error loop
        if in_error then return end
        in_error = true

        naughty.notify({ preset = naughty.config.presets.critical,
                         title = "Oops, an error happened!",
                         text = err })
        in_error = false
    end)
end
-- }}}

-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
beautiful.init("/usr/share/awesome/themes/nox_theme/theme.lua")

-- This is used later as the default terminal and editor to run.
terminal = "urxvt"
editor = os.getenv("vim") or "nano"
editor_cmd = terminal .. " -e " .. editor

-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"

-- Table of layouts to cover with awful.layout.inc, order matters.
local layouts =
{
    awful.layout.suit.floating,
    awful.layout.suit.tile,
    awful.layout.suit.tile.left,
    awful.layout.suit.tile.bottom,
    awful.layout.suit.tile.top,
    awful.layout.suit.fair,
    awful.layout.suit.fair.horizontal,
    awful.layout.suit.spiral,
    awful.layout.suit.spiral.dwindle,
    awful.layout.suit.max,
--    awful.layout.suit.max.fullscreen,
--    awful.layout.suit.magnifier
}
-- }}}

-- {{{ Wallpaper
if beautiful.wallpaper then
    for s = 1, screen.count() do
        gears.wallpaper.maximized(beautiful.wallpaper, s, true)
    end
end
-- }}}

-- {{{ Tags
  tags = {
   names  = { "www", "work", "code", "jabb", "vid", "torr", "music", "misc", },
   layout = { layouts[10], layouts[2], layouts[2], layouts[10], layouts[1], layouts[10], layouts[10], layouts[1]
}}
for s = 1, screen.count() do
	tags[s] = awful.tag(tags.names, s, tags.layout)
end
-- }}}

-- {{{ Menu
-- Create a laucher widget and a main menu
myawesomemenu = {
   { "manual", terminal .. " -e man awesome" },
   { "edit config", editor_cmd .. " " .. awesome.conffile },
   { "restart", awesome.restart },
   { "quit", awesome.quit }
}

mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
                                    { "open terminal", terminal }
                                  }
                        })

mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
                                     menu = mymainmenu })

-- Menubar configuration
menubar.utils.terminal = urxvt -- Set the terminal for applications that require it
-- }}}

-- {{{ Wibox
-- Create a textclock widget
mytextclock = awful.widget.textclock()

-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = awful.util.table.join(
                    awful.button({ }, 1, awful.tag.viewonly),
                    awful.button({ modkey }, 1, awful.client.movetotag),
                    awful.button({ }, 3, awful.tag.viewtoggle),
                    awful.button({ modkey }, 3, awful.client.toggletag),
                    awful.button({ }, 4, function(t) awful.tag.viewnext(awful.tag.getscreen(t)) end),
                    awful.button({ }, 5, function(t) awful.tag.viewprev(awful.tag.getscreen(t)) end)
                    )
mytasklist = {}
mytasklist.buttons = awful.util.table.join(
                     awful.button({ }, 1, function (c)
                                              if c == client.focus then
                                                  c.minimized = true
                                              else
                                                  -- Without this, the following
                                                  -- :isvisible() makes no sense
                                                  c.minimized = false
                                                  if not c:isvisible() then
                                                      awful.tag.viewonly(c:tags()[1])
                                                  end
                                                  -- This will also un-minimize
                                                  -- the client, if needed
                                                  client.focus = c
                                                  c:raise()
                                              end
                                          end),
                     awful.button({ }, 3, function ()
                                              if instance then
                                                  instance:hide()
                                                  instance = nil
                                              else
                                                  instance = awful.menu.clients({ width=250 })
                                              end
                                          end),
                     awful.button({ }, 4, function ()
                                              awful.client.focus.byidx(1)
                                              if client.focus then client.focus:raise() end
                                          end),
                     awful.button({ }, 5, function ()
                                              awful.client.focus.byidx(-1)
                                              if client.focus then client.focus:raise() end
                                          end))

for s = 1, screen.count() do
    -- Create a promptbox for each screen
    mypromptbox[s] = awful.widget.prompt()
    -- Create an imagebox widget which will contains an icon indicating which layout we're using.
    -- We need one layoutbox per screen.
    mylayoutbox[s] = awful.widget.layoutbox(s)
    mylayoutbox[s]:buttons(awful.util.table.join(
                           awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),
                           awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),
                           awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),
                           awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)))
    -- Create a taglist widget
    mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.filter.all, mytaglist.buttons)

    -- Create a tasklist widget
    mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)

    -- Create the wibox
    mywibox[s] = awful.wibox({ position = "top", screen = s })

    -- Widgets that are aligned to the left
    local left_layout = wibox.layout.fixed.horizontal()
    left_layout:add(mylauncher)
    left_layout:add(mytaglist[s])
    left_layout:add(mypromptbox[s])

    -- Widgets that are aligned to the right
    local right_layout = wibox.layout.fixed.horizontal()
    if s == 1 then right_layout:add(wibox.widget.systray()) end
    right_layout:add(mytextclock)
    right_layout:add(mylayoutbox[s])

    -- Now bring it all together (with the tasklist in the middle)
    local layout = wibox.layout.align.horizontal()
    layout:set_left(left_layout)
    layout:set_middle(mytasklist[s])
    layout:set_right(right_layout)

    mywibox[s]:set_widget(layout)
end
-- }}}

-- {{{ Mouse bindings
root.buttons(awful.util.table.join(
    awful.button({ }, 3, function () mymainmenu:toggle() end),
    awful.button({ }, 4, awful.tag.viewnext),
    awful.button({ }, 5, awful.tag.viewprev)
))
-- }}}

-- {{{ Key bindings
globalkeys = awful.util.table.join(
    awful.key({ modkey,           }, "Left",   awful.tag.viewprev       ),
    awful.key({ modkey,           }, "Right",  awful.tag.viewnext       ),
    awful.key({ modkey,           }, "Escape", awful.tag.history.restore),

    awful.key({ modkey,           }, "j",
        function ()
            awful.client.focus.byidx( 1)
            if client.focus then client.focus:raise() end
        end),
    awful.key({ modkey,           }, "k",
        function ()
            awful.client.focus.byidx(-1)
            if client.focus then client.focus:raise() end
        end),
    awful.key({ modkey,           }, "w", function () mymainmenu:show() end),

    -- Layout manipulation
    awful.key({ modkey, "Shift"   }, "j", function () awful.client.swap.byidx(  1)    end),
    awful.key({ modkey, "Shift"   }, "k", function () awful.client.swap.byidx( -1)    end),
    awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end),
    awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end),
    awful.key({ modkey,           }, "u", awful.client.urgent.jumpto),
    awful.key({ modkey,           }, "Tab",
        function ()
            awful.client.focus.history.previous()
            if client.focus then
                client.focus:raise()
            end
        end),

    -- Standard program
    awful.key({ modkey,           }, "Return", function () awful.util.spawn(terminal) end),
    awful.key({ modkey, "Control" }, "r", awesome.restart),
    awful.key({ modkey, "Shift"   }, "q", awesome.quit),

    awful.key({ modkey,           }, "l",     function () awful.tag.incmwfact( 0.05)    end),
    awful.key({ modkey,           }, "h",     function () awful.tag.incmwfact(-0.05)    end),
    awful.key({ modkey, "Shift"   }, "h",     function () awful.tag.incnmaster( 1)      end),
    awful.key({ modkey, "Shift"   }, "l",     function () awful.tag.incnmaster(-1)      end),
    awful.key({ modkey, "Control" }, "h",     function () awful.tag.incncol( 1)         end),
    awful.key({ modkey, "Control" }, "l",     function () awful.tag.incncol(-1)         end),
    awful.key({ modkey,           }, "space", function () awful.layout.inc(layouts,  1) end),
    awful.key({ modkey, "Shift"   }, "space", function () awful.layout.inc(layouts, -1) end),

    awful.key({ modkey, "Control" }, "n", awful.client.restore),

    -- Prompt
    awful.key({ modkey },            "r",     function () mypromptbox[mouse.screen]:run() end),

    awful.key({ modkey, "Shift"   }, "r",
              function ()
                  awful.prompt.run({ prompt = "Run Lua code: " },
                  mypromptbox[mouse.screen].widget,
                  awful.util.eval, nil,
                  awful.util.getdir("cache") .. "/history_eval")
              end),
    -- Menubar
    awful.key({ modkey }, "p", function() menubar.show() end)
)

clientkeys = awful.util.table.join(
    awful.key({ modkey,           }, "f",      function (c) c.fullscreen = not c.fullscreen  end),
    awful.key({ modkey,		  }, "x",      function (c) c:kill()                         end),
    awful.key({ modkey, "Control" }, "space",  awful.client.floating.toggle                     ),
    awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
    awful.key({ modkey,           }, "o",      awful.client.movetoscreen                        ),
    awful.key({ modkey,           }, "t",      function (c) c.ontop = not c.ontop            end),
    awful.key({ modkey,           }, "n",
        function (c)
            -- The client currently has the input focus, so it cannot be
            -- minimized, since minimized clients can't have the focus.
            c.minimized = true
        end),
    awful.key({ modkey,           }, "m",
        function (c)
            c.maximized_horizontal = not c.maximized_horizontal
            c.maximized_vertical   = not c.maximized_vertical
        end)
)

-- 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

-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it works on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, keynumber do
    globalkeys = awful.util.table.join(globalkeys,
        awful.key({ modkey }, "#" .. i + 9,
                  function ()
                        local screen = mouse.screen
                        if tags[screen][i] then
                            awful.tag.viewonly(tags[screen][i])
                        end
                  end),
        awful.key({ modkey, "Control" }, "#" .. i + 9,
                  function ()
                      local screen = mouse.screen
                      if tags[screen][i] then
                          awful.tag.viewtoggle(tags[screen][i])
                      end
                  end),
        awful.key({ modkey, "Shift" }, "#" .. i + 9,
                  function ()
                      if client.focus and tags[client.focus.screen][i] then
                          awful.client.movetotag(tags[client.focus.screen][i])
                      end
                  end),
        awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
                  function ()
                      if client.focus and tags[client.focus.screen][i] then
                          awful.client.toggletag(tags[client.focus.screen][i])
                      end
                  end))
end

clientbuttons = awful.util.table.join(
    awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
    awful.button({ modkey }, 1, awful.mouse.client.move),
    awful.button({ modkey }, 3, awful.mouse.client.resize))

-- Set keys
root.keys(globalkeys)
-- }}}

-- {{{ Rules
awful.rules.rules = {
    -- All clients will match this rule.
    { rule = { },
      properties = { border_width = beautiful.border_width,
                     border_color = beautiful.border_normal,
                     focus = awful.client.focus.filter,
                     keys = clientkeys,
                     buttons = clientbuttons } },
    {rule = {class = "URxvt"}, 
      properties = {opacity = 0.8} }
}
-- }}}

-- {{{ Signals
-- Signal function to execute when a new client appears.
client.connect_signal("manage", function (c, startup)
            --    Enable sloppy focus
            --	  c:connect_signal("mouse::enter", function(c)
            --                   if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
            --                   and awful.client.focus.filter(c) then
            --                 client.focus = c
            --                   end
            --             end)

               if not startup then
                  -- Set the windows at the slave,
                  -- i.e. put it at the end of others instead of setting it master.
                  awful.client.setslave(c)

                  -- Put windows in a smart way, only if they does not set an initial position.
                  if not c.size_hints.user_position and not c.size_hints.program_position then
                awful.placement.no_overlap(c)
                awful.placement.no_offscreen(c)
                  end
               end

               local titlebars_enabled = false
               if titlebars_enabled and (c.type == "normal" or c.type == "dialog") then
                  -- Widgets that are aligned to the left
                  local left_layout = wibox.layout.fixed.horizontal()
                  left_layout:add(awful.titlebar.widget.iconwidget(c))

                  -- Widgets that are aligned to the right
                  local right_layout = wibox.layout.fixed.horizontal()
                  right_layout:add(awful.titlebar.widget.floatingbutton(c))
                  right_layout:add(awful.titlebar.widget.maximizedbutton(c))
                  right_layout:add(awful.titlebar.widget.stickybutton(c))
                  right_layout:add(awful.titlebar.widget.ontopbutton(c))
                  right_layout:add(awful.titlebar.widget.closebutton(c))

                  -- The title goes in the middle
                  local title = awful.titlebar.widget.titlewidget(c)
                  title:buttons(awful.util.table.join(
                         awful.button({ }, 1, function()
                                  client.focus = c
                                  c:raise()
                                  awful.mouse.client.move(c)
                            end),
                         awful.button({ }, 3, function()
                                  client.focus = c
                                  c:raise()
                                  awful.mouse.client.resize(c)
                            end)
                   ))

                  -- Now bring it all together
                  local layout = wibox.layout.align.horizontal()
                  layout:set_left(left_layout)
                  layout:set_right(right_layout)
                  layout:set_middle(title)

                  awful.titlebar(c):set_widget(layout)
               end
              end)

client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- }}}
Avatar de l’utilisateur
vlamy
yeomen
Messages : 268
Inscription : ven. 20 juil. 2012, 15:19
Localisation : Grenoble

Re: [Awesome] Question sur le focus du client.

Message par vlamy »

Salut, je teste ton rc.lua, mais il me faudrait ton theme aussi si possible.
NoX
newbie
Messages : 7
Inscription : mer. 07 déc. 2011, 19:26

Re: [Awesome] Question sur le focus du client.

Message par NoX »

Bonjour,

voila mon theme :

Code : Tout sélectionner

---------------------------
-- Default awesome theme --
---------------------------

theme = {}

theme.font          = "sans 8"

theme.bg_normal     = "#222222"
theme.bg_focus      = "#535d6c"
theme.bg_urgent     = "#ff0000"
theme.bg_minimize   = "#444444"
theme.bg_systray    = theme.bg_normal

theme.fg_normal     = "#aaaaaa"
theme.fg_focus      = "#ffffff"
theme.fg_urgent     = "#ffffff"
theme.fg_minimize   = "#ffffff"

theme.border_width  = 1
theme.border_normal = "#000000"
theme.border_focus  = "#535d6c"
theme.border_marked = "#91231c"

-- There are other variable sets
-- overriding the default one when
-- defined, the sets are:
-- [taglist|tasklist]_[bg|fg]_[focus|urgent]
-- titlebar_[bg|fg]_[normal|focus]
-- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color]
-- mouse_finder_[color|timeout|animate_timeout|radius|factor]
-- Example:
--theme.taglist_bg_focus = "#ff0000"

-- Display the taglist squares
theme.taglist_squares_sel   = "/usr/share/awesome/themes/default/taglist/squarefw.png"
theme.taglist_squares_unsel = "/usr/share/awesome/themes/default/taglist/squarew.png"

-- Variables set for theming the menu:
-- menu_[bg|fg]_[normal|focus]
-- menu_[border_color|border_width]
theme.menu_submenu_icon = "/usr/share/awesome/themes/default/submenu.png"
theme.menu_height = 15
theme.menu_width  = 100

-- You can add as many variables as
-- you wish and access them by using
-- beautiful.variable in your rc.lua
--theme.bg_widget = "#cc0000"

-- Define the image to load
theme.titlebar_close_button_normal = "/usr/share/awesome/themes/default/titlebar/close_normal.png"
theme.titlebar_close_button_focus  = "/usr/share/awesome/themes/default/titlebar/close_focus.png"

theme.titlebar_ontop_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/ontop_normal_inactive.png"
theme.titlebar_ontop_button_focus_inactive  = "/usr/share/awesome/themes/default/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_active = "/usr/share/awesome/themes/default/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_active  = "/usr/share/awesome/themes/default/titlebar/ontop_focus_active.png"

theme.titlebar_sticky_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/sticky_normal_inactive.png"
theme.titlebar_sticky_button_focus_inactive  = "/usr/share/awesome/themes/default/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_active = "/usr/share/awesome/themes/default/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_active  = "/usr/share/awesome/themes/default/titlebar/sticky_focus_active.png"

theme.titlebar_floating_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/floating_normal_inactive.png"
theme.titlebar_floating_button_focus_inactive  = "/usr/share/awesome/themes/default/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_active = "/usr/share/awesome/themes/default/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_active  = "/usr/share/awesome/themes/default/titlebar/floating_focus_active.png"

theme.titlebar_maximized_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/maximized_normal_inactive.png"
theme.titlebar_maximized_button_focus_inactive  = "/usr/share/awesome/themes/default/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_active = "/usr/share/awesome/themes/default/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_active  = "/usr/share/awesome/themes/default/titlebar/maximized_focus_active.png"

theme.wallpaper = "/usr/share/awesome/themes/nox_theme/wallpaper-26282.jpg"

-- You can use your own layout icons like this:
theme.layout_fairh = "/usr/share/awesome/themes/default/layouts/fairhw.png"
theme.layout_fairv = "/usr/share/awesome/themes/default/layouts/fairvw.png"
theme.layout_floating  = "/usr/share/awesome/themes/default/layouts/floatingw.png"
theme.layout_magnifier = "/usr/share/awesome/themes/default/layouts/magnifierw.png"
theme.layout_max = "/usr/share/awesome/themes/default/layouts/maxw.png"
theme.layout_fullscreen = "/usr/share/awesome/themes/default/layouts/fullscreenw.png"
theme.layout_tilebottom = "/usr/share/awesome/themes/default/layouts/tilebottomw.png"
theme.layout_tileleft   = "/usr/share/awesome/themes/default/layouts/tileleftw.png"
theme.layout_tile = "/usr/share/awesome/themes/default/layouts/tilew.png"
theme.layout_tiletop = "/usr/share/awesome/themes/default/layouts/tiletopw.png"
theme.layout_spiral  = "/usr/share/awesome/themes/default/layouts/spiralw.png"
theme.layout_dwindle = "/usr/share/awesome/themes/default/layouts/dwindlew.png"

theme.awesome_icon = "/usr/share/awesome/icons/archlinux-icon256.png"

-- Define the icon theme for application icons. If not set then the icons 
-- from /usr/share/icons and /usr/share/icons/hicolor will be used.
theme.icon_theme = nil

return theme
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
Penses-tu que le soucis puisse provenir du hardware ou des périphériques ? J'ai une souris Cyborg et je sais que la compatibilité Linux n'est pas sa première priorité.
Répondre