You are not logged in.

#1 2014-07-10 20:41:04

nyddogghr
Member
Registered: 2013-05-12
Posts: 14

[Awesome] Titlebar not updating when switching desktops

Hi,

I haven't already seen this issue in the forum, so I post a new topic for it.

Since about 2 months (not sure of that), I've noticed that as said in the title the titlebar in awesome isn't refreshing as it should. When I switch desktop I still have the same titlebar unless :
- the title changes (change tab on chromium for instance)
- I click on my top left menu (shutdown,...)
- I minimize the window ; in this case, it changes, but not when I open it again
It is the same with the desktop icons : here's an example.
I'm on desktop 2, konsole open => titlebar "konsole", desktop 2 lightened on titlebar
Moving to desktop 1 with chromium => no changes
Changing tab (so changing window title) => comes back to normal

I've made a fresh install on another computer whith almost the same rc.lua, and it doesn't have this issue.
I've tried disabling widgets, commenting on my rc.lua... Unsuccessful.

So, does anyone have an idea ? I'm pretty sure I would the be the (almost) only one with this issue, but my problem is that I don't know how it appears ^^'

Here's my rc.lua :

-- Standard awesome library
local gears = require("gears")
local awful = require("awful")
awful.rules = require("awful.rules")
awful.autofocus = require("awful.autofocus")
-- Widget and layout library
local wibox = require("wibox")
-- Theme handling library
local beautiful = require("beautiful")
beautiful.init(awful.util.getdir("config") .. "/themes/perso/theme.lua")
-- Notification library
local naughty = require("naughty")
local menubar = require("menubar")
--local vicious = require("vicious")
local wi = require("wi")



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


-- This is used later as the default terminal and editor to run.
terminal = "konsole --hide-menubar"
--terminal = "urxvt"
editor = os.getenv("EDITOR") or "vim"
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.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
-- }}}


-- Menubar
menubar.utils.terminal = terminal

-- {{{ Startup Apps

function run_once(prg, args)
	if not prg then
		do return nil end
	end
	if not args then
		args=""
	end
	awful.util.spawn_with_shell('pgrep -f -u $USER -x ' .. prg .. ' || (' .. prg .. ' ' .. args ..')')
end
---[[
run_once("konsole --hide-menubar")
run_once("chromium")
run_once("skype")
run_once("thunderbird")
run_once("ario")
run_once("mpd")
run_once("nm-applet")


--}}}

-- {{{ Tags
-- Define a tag table which hold all screen tags.
tags = {
	names = { "Web" , "Term" , "Floating" ,"Office" , "Film" , "Misc" ,  "Music" , "Mail" , "IM"  },
	layout = { layouts[2] , layouts[2] , layouts[1] , layouts[2] , layouts[8] , layouts[2] , layouts[8] , layouts[2] , layouts[2] },
	}
for s = 1, screen.count() do
	-- Each screen has its own tag table.
	tags[s] = awful.tag(tags.names,s,tags.layout)
end
-- }}}


-- {{{ Naughty presets
naughty.config.defaults.timeout = 5
naughty.config.defaults.screen = 1
naughty.config.defaults.position = "top_right"
naughty.config.defaults.margin = 8
naughty.config.defaults.gap = 1
naughty.config.defaults.ontop = true
naughty.config.defaults.font = "Monaco 8"
naughty.config.defaults.icon = nil
naughty.config.defaults.icon_size = 32
naughty.config.defaults.fg = beautiful.fg_tooltip
naughty.config.defaults.bg = beautiful.bg_tooltip
naughty.config.defaults.border_color = beautiful.border_tooltip
naughty.config.defaults.border_width = 2
naughty.config.defaults.hover_timeout = nil

-- Menubar configuration
menubar.utils.terminal = terminal -- Set the terminal for applications that require it
menubar.show_categories = true  -- Change to false if you want only programs to appear in the menu
-- }}}


-- {{{ Menu
-- Create a laucher widget and a main menu
myawesomemenu = {
   { "Manual", terminal .. " -e man awesome" },
   { "Edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
   { "Restart", awesome.restart },
   { "Quit", awesome.quit }
}

sysmenu = { 	
	{ "Éteindre", function () awful.util.spawn_with_shell("mpc stop ; sleep 1 ; poweroff") end },
	{ "Redémarrer", function () awful.util.spawn_with_shell("mpc stop ; sleep 1 ; reboot") end}
}

mymainmenu = awful.menu({ items = { { "Awesome", myawesomemenu, beautiful.awesome_icon },
				    --{ "Menu", applicationsmenu.applicationsmenu()},
				    { "Système", sysmenu },
                                    { "Terminal", terminal }
                                  }
                        })

mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
                                     menu = mymainmenu })
-- }}}
-- Create a wibox for each screen and add it
mywibox = {}
mygraphbox = {}
mygraphbox2 = {}
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)

	--Volume control
	local spacers = require('widgets/spacers')
	local vol = require('widgets/vol')
	volume = vol:new(0, 'Master', { })
	volume.widget = wibox.layout.fixed.horizontal()
	volume.widget:add(spacers.lbracket) 
	volume.widget:add(volume.img) 
	volume.widget:add(volume.barm)
	volume.widget:add(spacers.space)
	volume.widget:add(spacers.rbracket)
	volume:update()
	volume.img:buttons(awful.util.table.join(
	awful.button({ }, 1,function() volume:toggle() end),

	awful.button({ }, 3, function () awful.util.spawn("urxvtc -e alsamixer", true) end),
	awful.button({ }, 4, function () volume:up() end),
	awful.button({ }, 5, function () volume:down() end)
	))

	volume.bar:buttons(awful.util.table.join(
	awful.button({ }, 1, function () volume:toggle() end),
	awful.button({ }, 3, function () awful.util.spawn("urxvtc -e alsamixer", true) end),
	awful.button({ }, 4, function () volume:up() end),
	awful.button({ }, 5,  function () volume:down() end)
	))

	--local usb = require('widgets/usbmount')
	local batwidget = require('widgets/battery')

	-- Calendar widget
	require('widgets/calendar2')
	mytextclock = awful.widget.textclock()
	mytextclock.border_width = 1
	mytextclock.border_color = beautiful.fg_normal 
	calendar2.addCalendarToWidget(mytextclock, "<span color='blue'>%s</span>")

	-- 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(usb.img)
	right_layout:add(pacicon)
	right_layout:add(pacwidget)
	right_layout:add(space)
	--right_layout:add(wifiicon)
	--right_layout:add(wifiinfo)
	--right_layout:add(volicon)
	right_layout:add(volume.widget)
	right_layout:add(baticon)
	right_layout:add(batpct)
	right_layout:add(space)
	--right_layout:add(weather)
	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)

	-- Graphbox
	mygraphbox[s] = awful.wibox({ position = "bottom", height = 12, screen = s, border_color = beautiful.border_widget, border_width = 1 })
	mygraphbox2[s] = awful.wibox({ position = "bottom2", height = 12, screen = s, border_color = beautiful.border_widget, border_width = 1})

	local left_graphbox = wibox.layout.fixed.horizontal()
	left_graphbox:add(space)
	left_graphbox:add(cpulabel)
	left_graphbox:add(cpugraph0)
	left_graphbox:add(cpupct0)
	left_graphbox:add(space)
	left_graphbox:add(cpugraph1)
	left_graphbox:add(cpupct1)
	left_graphbox:add(space)
	left_graphbox:add(cpugraph2)
	left_graphbox:add(cpupct2)
	left_graphbox:add(space)
	left_graphbox:add(cpugraph3)
	left_graphbox:add(cpupct3)
	left_graphbox:add(space)
	left_graphbox:add(cpu0temp)
	left_graphbox:add(space)
	left_graphbox:add(cpu1temp)
	left_graphbox:add(tab)
	left_graphbox:add(pipe)
	left_graphbox:add(tab)
	left_graphbox:add(memused)
	left_graphbox:add(membar)
	left_graphbox:add(mempct)
	left_graphbox:add(tab)
	left_graphbox:add(pipe)
	left_graphbox:add(tab)
	left_graphbox:add(txwidget)
	left_graphbox:add(upgraph)
	left_graphbox:add(upwidget)
	left_graphbox:add(space)
	left_graphbox:add(rxwidget)
	left_graphbox:add(downgraph)
	left_graphbox:add(downwidget)
	local left_graphbox2 = wibox.layout.fixed.horizontal()
	left_graphbox2:add(space)
	left_graphbox2:add(rootfsused)
	left_graphbox2:add(rootfsbar)
	left_graphbox2:add(rootfspct)
	left_graphbox2:add(space)
	left_graphbox2:add(winfsused)
	left_graphbox2:add(winfsbar)
	left_graphbox2:add(winfspct)
	left_graphbox2:add(space)
	left_graphbox2:add(ficfsused)
	left_graphbox2:add(ficfsbar)
	left_graphbox2:add(ficfspct)
	left_graphbox2:add(tab)
	left_graphbox2:add(pipe)
	left_graphbox2:add(tab)
	left_graphbox2:add(gputemp)
	left_graphbox2:add(tab)
	left_graphbox2:add(pipe)
	left_graphbox2:add(tab)
	left_graphbox2:add(hddtemp)
	left_graphbox2:add(tab)
	left_graphbox2:add(sda3io)
	left_graphbox2:add(sda5io)
	--local right_graphbox2 = wibox.layout.fixed.horizontal()
	--right_graphbox2:add(weather)

	local graphbox_layout = wibox.layout.align.horizontal()
	graphbox_layout:set_left(left_graphbox)
	local graphbox_layout2 = wibox.layout.align.horizontal()
	graphbox_layout2:set_left(left_graphbox2)
	--graphbox_layout2:set_right(right_graphbox2)

	mygraphbox[s]:set_widget(graphbox_layout)
	mygraphbox2[s]:set_widget(graphbox_layout2)
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, "Control"   }, "j", function () awful.client.swap.byidx(  1)    end),
awful.key({ modkey, "Control"   }, "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),

--Shutdown / reboot / suspend
awful.key({ }, "XF86PowerOff", function () awful.util.spawn_with_shell("poweroff") end),
awful.key({ modkey }, "XF86PowerOff", function () awful.util.spawn_with_shell("reboot") end),
--awful.key({ }, "XF86Sleep", function () awful.util.spawn_with_shell("sudo suspend") end),

--Multimedia keys
--awful.key({ }, 'XF86AudioRaiseVolume', function () awful.util.spawn_with_shell("ruby ~/volume.rb up") end),
--awful.key({ }, 'XF86AudioLowerVolume', function () awful.util.spawn_with_shell("ruby ~/volume.rb down") end),
--awful.key({ }, 'XF86AudioMute', function () awful.util.spawn_with_shell("ruby ~/volume.rb toggle") end),
awful.key({ }, 'XF86AudioRaiseVolume', function () volume:up() end),
awful.key({ }, 'XF86AudioLowerVolume', function () volume:down() end),
awful.key({ }, 'XF86AudioMute', function ()  volume:toggle() end),
awful.key({ }, 'XF86AudioPlay', function () awful.util.spawn_with_shell("mpc play") end),
awful.key({ }, 'XF86AudioStop', function () awful.util.spawn_with_shell("mpc stop") end),
awful.key({ }, 'XF86AudioNext', function () awful.util.spawn_with_shell("mpc next") end),
awful.key({ }, 'XF86AudioPrev', function () awful.util.spawn_with_shell("mpc prev") end),

--Screenshot
awful.key({ }, "Print", function() awful.util.spawn("ksnapshot") end),

--Raccourcis de lancement
awful.key({ modkey, "Shift"}, "g", function() awful.util.spawn("galculator") end),
--awful.key({ modkey, "Shift"}, "f", function() awful.util.spawn("firefox") end),
awful.key({ modkey, "Shift"}, "c", function() awful.util.spawn("chromium") end),
--awful.key({ modkey, "Shift"}, "d", function() awful.util.spawn("desmume") end),
awful.key({ modkey, "Shift"}, "n", function() awful.util.spawn("nautilus") end),
awful.key({ modkey, "Shift"}, "r", function() awful.util.spawn("grsync") end),
awful.key({ modkey, "Shift"}, "v", function() awful.util.spawn("virtualbox") end),
awful.key({ modkey, "Shift"}, "l", function() awful.util.spawn("libreoffice") end),
awful.key({ modkey, "Shift"}, "t", function() awful.util.spawn("nxclient") end),
--awful.key({ modkey, "Shift"}, "o", function() awful.util.spawn("korganizer") end),
awful.key({ modkey, "Shift"}, "s", function() awful.util.spawn("rapidsvn") end),
--awful.key({ modkey, "Shift"}, "x", function() awful.util.spawn("xchat") end),
awful.key({ modkey, "Shift"}, "a", function() awful.util.spawn("anki") end),
awful.key({ modkey, "Shift"}, "m", function() awful.util.spawn("mumble") end),
--awful.key({ modkey, "Shift"}, "d", function() awful.util.spawn("crawl-tiles") end),
--awful.key({ modkey, "Shift"}, "d", function() awful.util.spawn("wesnoth") end),
awful.key({ modkey, "Shift"}, "d", function() awful.util.spawn("dogecoin-qt") end),
awful.key({ modkey, "Shift"}, "p", function() awful.util.spawn("playonlinux") end),
awful.key({ modkey, "Shift"}, "p", function() awful.util.spawn("playonlinux") end),
awful.key({ modkey, "Shift"}, "i", function() awful.util.spawn("idea.sh") end),

--Gueux
awful.key({ }, 'XF86Launch4', function() awful.util.spawn_with_shell("libreoffice /media/Fichiers/Documents/Comptes.ods &") end),

--Slimlock
awful.key({ modkey, }, "F12", function() awful.util.spawn("xscreensaver-command --lock") end),

-- Menubar
awful.key({ modkey }, "r", function() menubar.show() end),

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


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


clientkeys = awful.util.table.join(
awful.key({ modkey, "Control" }, "f",      function (c) c.fullscreen = not c.fullscreen  end),
awful.key({ modkey,           }, "c",      function (c) c:kill()                         end),
awful.key({ modkey,           }, "f",      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,           }, "s",      function (c) c.sticky = not c.sticky            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 = {
	-- Search for this rule,
	keys = clientkeys,

	-- add the following two: 
	maximized_vertical   = false,
	maximized_horizontal = false,
	-- All clients will match this rule.
	{ rule = { },
	properties = { border_width = beautiful.border_width,
	border_color = beautiful.border_normal,
	focus = true,
	keys = clientkeys,
	buttons = clientbuttons } },
	{ rule = { class = "MPlayer" },
	properties = { floating = true } },
	{ rule = { class = "pinentry" },
	properties = { floating = true } },
	{ rule = { class = "Gimp" },
	properties = { floating = true } },
	{ rule = { class = "Galculator" },
	properties = { floating = true } },
	{ rule = { instance = "plugin-container" },
	properties = { floating = true } },
	{ rule = { class = "Gnuplot" },
	properties = { floating = true } },
	{ rule = { class = "Rhythmbox" }, properties = { tag = tags[1][7] } },
	{ rule = { class = "Ario" }, properties = { tag = tags[1][7] } },
	{ rule = { class = "Sakura" }, properties = { tag = tags[1][2] } },
	{ rule = { class = "Konsole" }, properties = { tag = tags[1][2] } },
	{ rule = { class = "XTerm" }, properties = { tag = tags[1][2] } },
	{ rule = { class = "URxvt" }, properties = { tag = tags[1][2] } },
	{ rule = { class = "Evince" }, properties = { tag = tags[1][4] } },
	{ rule = { class = "mupdf" }, properties = { tag = tags[1][4] } },
	{ rule = { class = "Thunderbird" }, properties = { tag = tags[1][8] } },
	{ rule = { class = "Vlc" }, properties = { tag = tags[1][5], switchtotag = true } },
	{ rule = { class = "Nautilus" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "Anki" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "Skype" }, properties = { tag = tags[1][9] } },
	{ rule = { class = "Firefox" }, properties = { tag = tags[1][1] } },
	{ rule = { class = "Xchat" }, properties = { tag = tags[1][1] } },
	{ rule = { class = "Chromium" }, properties = { tag = tags[1][1] }, floating = false },
	{ rule = { class = "Grsync" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "Rapidsvn" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "Doge*" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "libre*" }, properties = { tag = tags[1][4] } },
	{ rule = { class = "Libre*" }, properties = { tag = tags[1][4] } },
	{ rule = { class = "Eclipse*" }, properties = { tag = tags[1][4] } },
	{ rule = { class = "jetbrains*" }, properties = { tag = tags[1][4] } },
	{ rule = { class = "Winff" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "VirtualBox" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "SWT" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "Audacity" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "Desmume" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "Korganizer" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "Mumble" }, properties = { tag = tags[1][6] } },
	{ rule = { class = "crawl-tiles" }, properties = { tag = tags[1][3] } },
	{ rule = { class = "wesnoth" }, properties = { tag = tags[1][3] } },
	{ rule = { name = "PlayOnLinux" }, properties = { tag = tags[1][3] } },
}
-- }}}


function titlebar_create(c)
        -- 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)

	return layout
end
-- {{{ Signals
-- Signal function to execute when a new client appears.
client.connect_signal('manage', function (c, startup)
	-- Add a titlebar
	-- awful.titlebar.add(c, { modkey = modkey })

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

	c:connect_signal("property::floating", function(c)  if awful.client.floating.get(c) 
        then
               awful.titlebar(c):set_widget(titlebar_create(c)) 
        else
               awful.titlebar(c, {size = 0}) 
        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 = true
    if titlebars_enabled and c.type == "dialog" then --(c.type == "normal" or c.type == "dialog")  then
		layout = titlebar_create(c)
        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)
-- }}}

Thanks by advance

Last edited by nyddogghr (2014-07-10 20:41:57)

Offline

#2 2014-07-11 08:56:27

t0m5k1
Member
From: overthere
Registered: 2012-02-10
Posts: 326

Re: [Awesome] Titlebar not updating when switching desktops

what are the differences between the 2 rc.lua's ?
what are the differences between the 2 awesome instalations ?
what happens if both are exactly the same in all ways ?

These questions will hold the answers.


Aurora R10 (0TYR0X) - Ryzen 7 5800X - 16GB - RX6700XT 12GB - Hyprland (occasionally XFCE) - AOC Q27G3XMN 1440P
EFI Stub Boot
PROUD XLIBRE USER
Linux User: 401820  Steam-Reddit

Offline

#3 2014-07-11 20:30:49

nyddogghr
Member
Registered: 2013-05-12
Posts: 14

Re: [Awesome] Titlebar not updating when switching desktops

You're totally right.
I've already tried to find the differences, but not accurately enough. I'll do it again.

Also, I've noticed another strange thing : even with my rc.lua broken, I have this issue. I think that with a broken rc.lua the default one is used, so it may not come from my configuration. if it doesn't, I have no idea...

I'll check again the other install and will tell you if I have something (but not before tuesday)

[Edit]
I've tried with the default rc.lua, and I indeed still have this issue.

For now, I have a workaround : I just add a small titlebar to every window, as if they were floating (cf very end of my rc.lua posted above).

But if someone has any idea to really fix it, I would be happy big_smile

Last edited by nyddogghr (2014-07-12 10:17:31)

Offline

#4 2015-07-24 22:19:27

tuule_
Member
Registered: 2015-06-22
Posts: 5

Re: [Awesome] Titlebar not updating when switching desktops

Hi, I've found solution for this. It's not a fix, but it do work.
If you'll use composition manager everything gonna switch like a charm with animation (you can turn it off btw)
install cairo compositor from AUR, add this line to your rc.lua and simply restart the shell

 awful.util.spawn_with_shell("cairo-compmgr &")

wlc big_smile

I suggest you to use xcompmgr instead (launch is the same, no animations, -cF applies shadows to windows and it's more lightweight)

Last edited by tuule_ (2015-07-24 22:27:08)

Offline

Board footer

Powered by FluxBB