-- 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") local cyclefocus = require("cyclefocus") -- Load Debian menu entries require("debian.menu") require("volume") require("battery") require("backup_status_widget") require("weasel-rules") require("countdown") -- require("revelation") -- {{{ 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, font and wallpapers. -- beautiful.init("/usr/share/awesome/themes/default/theme.lua") beautiful.init(awful.util.getdir("config") .. "/themes/weasel/theme.lua") -- This is used later as the default terminal and editor to run. terminal = "x-terminal-emulator" editor = os.getenv("EDITOR") or "editor" 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" modkey2 = "Mod3" -- Table of layouts to cover with awful.layout.inc, order matters. local layouts = { 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 -- awful.layout.suit.floating, } -- }}} -- {{{ 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 }, { "Debian", debian.menu.Debian_menu.Debian }, { "open terminal", terminal } } }) mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu }) -- Menubar configuration menubar.utils.terminal = terminal -- Set the terminal for applications that require it -- }}} -- {{{ Wibox -- Create a textclock widget mytextclock = wibox.widget.textclock(nil, 5) -- Create a wibox for each screen and add it local taglist_buttons = awful.util.table.join( awful.button({ }, 1, function(t) t:view_only() end ), awful.button({ modkey }, 1, function(t) if client.focus then client.focus:move_to_tag(t) end end), awful.button({ }, 3, awful.tag.viewtoggle), awful.button({ modkey }, 3, function(t) if client.focus then client.focus:toggle_tag(t) end end), awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end), awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end) ) local tasklist_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() and c.first_tag then c:tags()[1]:view_only() 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({ theme = { 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)) local function set_wallpaper(s) -- Wallpaper if beautiful.wallpaper then local wallpaper = beautiful.wallpaper -- If wallpaper is a function, call it with the screen if type(wallpaper) == "function" then wallpaper = wallpaper(s) end gears.wallpaper.maximized(wallpaper, s, true) end end awful.screen.connect_for_each_screen(function(s) set_wallpaper(s) awful.tag({ 1, 2, 3, 4, 5, "11", "12", "13", "14", "15", "21", "22", "23", "24", "25", "31", "32", "33", "34", "35" }, s, layouts[1]) -- Create a promptbox for each screen s.mypromptbox = awful.widget.prompt() -- Create an imagebox widget which will contains an icon indicating which layout we're using. -- We need one layoutbox per screen. s.mylayoutbox = awful.widget.layoutbox(s) s.mylayoutbox: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 s.mytaglist = awful.widget.taglist(s, awful.widget.taglist.filter.all, taglist_buttons) -- Create a tasklist widget s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.alltags, tasklist_buttons) -- Create the wibox s.mywibar = awful.wibar({ position = "bottom", screen = s }) -- Widgets that are aligned to the left local left_layout = wibox.layout.fixed.horizontal() --left_layout:add(mylauncher) left_layout:add(s.mytaglist) left_layout:add(s.mypromptbox) -- Widgets that are aligned to the right local right_layout = wibox.layout.fixed.horizontal() right_layout:add(wibox.widget.systray()) right_layout:add(battery_widget) right_layout:add(volume_widget) right_layout:add(countdown.widget) right_layout:add(countdown.checkbox) right_layout:add(backup_status_widget) right_layout:add(mytextclock) right_layout:add(s.mylayoutbox) -- 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(s.mytasklist) layout:set_right(right_layout) s.mywibar: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), --awful.key({ modkey }, "Tab", function(c) -- cyclefocus.cycle({modifier="Super_L"}) --end), ---- modkey+Shift+Tab: backwards --awful.key({ modkey, "Shift" }, "Tab", function(c) -- cyclefocus.cycle({modifier="Super_L"}) --end), -- Standard program -- awful.key({ modkey, }, "Return", function () awful.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, "Control" }, "space", function () local t = awful.screen.focused().selected_tag t.master_count = 1 t.column_count = 1 t.master_width_factor = 0.5 awful.layout.set(layouts[1]) end), awful.key({ modkey, }, "space", function () if awful.util.table.hasitem(layouts, awful.layout.get() ) then awful.layout.inc(layouts, 1) else awful.layout.set(layouts[1]) end end), --awful.key({ modkey, "Shift" }, "space", function () -- if awful.util.table.hasitem(layouts, awful.layout.get() ) then -- awful.layout.inc(layouts, -1) -- else -- awful.layout.set(layouts[1]) -- end -- end), -- awful.key({ modkey, "Control" }, "n", awful.client.restore), -- Prompt -- awful.key({ modkey }, "r", function () mypromptbox[mouse.screen]:run() end), awful.key({ modkey, "Shift" }, ";", function () awful.prompt.run({ prompt = "Run Lua code: " }, awful.screen.focused().mypromptbox.widget, awful.util.eval, nil, awful.util.getdir("cache") .. "/history_eval") end), -- weasel awful.key({ modkey }, "`", function () awful.screen.focused().mypromptbox:run() end), -- awful.key({ "Ctrl", "Mod1" }, "BackSpace", awesome.quit), awful.key({ modkey, }, "F1", function () awful.layout.set(awful.layout.suit.floating) end), awful.key({ modkey, }, "F2", function () awful.layout.set(awful.layout.suit.tile) end), awful.key({ modkey, }, "F3", function () awful.layout.set(awful.layout.suit.tile.bottom) end), awful.key({ modkey, }, "F4", function () awful.layout.set(awful.layout.suit.max) end), awful.key({ modkey, }, "F5", function () awful.layout.set(awful.layout.suit.fair) end), awful.key({ }, "XF86AudioRaiseVolume", function () awful.spawn("amixer -q -D default sset Master 5%+", false) end), awful.key({ }, "XF86AudioLowerVolume", function () awful.spawn("amixer -q -D default sset Master 5%-", false) end), awful.key({ "Shift" }, "XF86AudioRaiseVolume", function () awful.spawn("amixer -q -D default sset Master 1%+", false) end), awful.key({ "Shift" }, "XF86AudioLowerVolume", function () awful.spawn("amixer -q -D default sset Master 1%-", false) end), awful.key({ }, "XF86AudioMute", function () awful.spawn("amixer -q -D default sset Master toggle", false) end), awful.key({ }, "XF86Launch9", function () awful.spawn("bt-headset", false) end), awful.key({ modkey }, "x", function () awful.spawn.with_shell("urxvt") end), awful.key({ modkey, "Shift" }, "x", function () awful.spawn.with_shell("urxvt -title FURxvt") end), awful.key({ modkey, "Ctrl" }, "x", function () awful.spawn.with_shell("urxvt -xrm 'URxvt.perl-ext-common:default'") end), awful.key({ modkey }, "b", function () awful.spawn.with_shell("urxvt -e bash") end), awful.key({ modkey }, "m", function () awful.spawn.with_shell("xterm-mail") end), awful.key({ modkey, "Shift" }, "m", function () awful.spawn.with_shell("xterm-mail-cosy") end), awful.key({ modkey }, "i", function () awful.spawn.with_shell("xterm-irc") end), -- awful.key({ modkey }, "k", function () awful.spawn.with_shell("keepassx") end), awful.key({ modkey }, "c", function () awful.spawn.with_shell("ch") end), awful.key({ modkey }, "f", function () awful.spawn.with_shell("ff") end), awful.key({ modkey }, "s", function () awful.spawn.with_shell("signal") end), -- awful.key({ "Control", "Mod1"}, "End", function () awful.spawn.with_shell("xscreensaver-command -lock; sleep 1; systemctl suspend") end), --awful.key({ "Control", "Mod1"}, "l", function () awful.spawn.with_shell("xscreensaver-command -lock") end), -- awful.key({ "Control", "Mod1"}, "l", function () awful.spawn("xdg-screensaver lock") end), --KDE--awful.key({ "Control", "Mod1"}, "l", function () awful.spawn("loginctl lock-session") end), --KDE--awful.key({ "Control", "Mod1"}, "End", function () awful.spawn.with_shell("systemctl suspend -i; xdg-screensaver reset; loginctl unlock-session; xdg-screensaver reset") end), -- awful.key({ "Control", "Mod1"}, "End", function () awful.spawn.with_shell("xscreensaver-command -lock; sleep 1; systemctl suspend") end), -- awful.key({ "Control", "Mod1"}, "End", function () awful.spawn.with_shell("loginctl lock-session && systemctl suspend -i") end), -- awful.key({ "Shift", "Control", "Mod1"}, "End", function () awful.spawn.with_shell("loginctl lock-session && systemctl suspend -i") end), -- awful.key( {"Ctrl"}, "Tab", revelation), -- Menubar awful.key({ modkey }, "p", function() menubar.show() end) ) -- more weasel local function viewidx_no_wrap(num_cols, delta_rows, delta_cols, cl) local screen = awful.screen.focused() local cur = screen.selected_tag.index local cc = (cur-1) % num_cols local jump = delta_rows * num_cols + delta_cols if cc + delta_cols >= 0 and cc + delta_cols < num_cols and cur + jump > 0 and cur + jump <= #screen.tags then if cl then do_not_reset_focus = true end awful.tag.viewidx(jump) if cl then local newtag = awful.screen.focused().selected_tag cl:move_to_tag(newtag) end end end globalkeys = awful.util.table.join(globalkeys, awful.key({ modkey2, }, "Left" , function () viewidx_no_wrap (5, 0, -1, false) end ), awful.key({ modkey2, }, "Right", function () viewidx_no_wrap (5, 0, 1, false) end ), awful.key({ modkey2, }, "Up" , function () viewidx_no_wrap (5, -1, 0, false) end ), awful.key({ modkey2, }, "Down" , function () viewidx_no_wrap (5, 1, 0, false) end ) ) globalkeys = awful.util.table.join(globalkeys, awful.key({ modkey2, "Ctrl" }, "Left" , function () viewidx_no_wrap (5, 0, -1, client.focus) end ), awful.key({ modkey2, "Ctrl" }, "Right", function () viewidx_no_wrap (5, 0, 1, client.focus) end ), awful.key({ modkey2, "Ctrl" }, "Up" , function () viewidx_no_wrap (5, -1, 0, client.focus) end ), awful.key({ modkey2, "Ctrl" }, "Down" , function () viewidx_no_wrap (5, 1, 0, client.focus) end ) ) local tag_keys = { "1", "2", "3", "4", "5", "q", "w", "e", "r", "t", "a", "s", "d", "f", "g", "z", "x", "c", "v", "b"} local modkeytag = modkey2 -- local modkeytag = modkey for i = 1, #tag_keys do globalkeys = awful.util.table.join(globalkeys, -- View tag only. awful.key({ modkeytag }, tag_keys[i], function () local screen = awful.screen.focused() local tag = screen.tags[i] if tag then tag:view_only() end end), -- Move client to tag, and follow awful.key({ modkeytag, "Control" }, tag_keys[i], function () if client.focus then local tag = client.focus.screen.tags[i] if tag then client.focus:move_to_tag(tag) -- and follow tag:view_only() end end end), -- Move client to tag without following awful.key({ modkeytag, "Mod1", }, tag_keys[i], function () if client.focus then local tag = client.focus.screen.tags[i] if tag then client.focus:move_to_tag(tag) end end end), -- Toggle tag visbility awful.key({ modkeytag, "Shift" }, tag_keys[i], function () local screen = awful.screen.focused() local tag = screen.tags[i] if tag then awful.tag.viewtoggle(tag) end end), -- Toggle tag for client awful.key({ modkeytag, "Control", "Shift" }, tag_keys[i], function () if client.focus then local tag = client.focus.screen.tags[i] if tag then awful.client.toggletag(tag) end end end) ) end clientkeys = awful.util.table.join( -- awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end), -- awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end), awful.key({ modkey, "Shift" }, "space", function (c) awful.client.floating.toggle(c) if not c.floating then c.maximized_horizontal = false c.maximized_vertical = false c.maximized = false end end), awful.key({ modkey, }, "Return", function (c) c:swap(awful.client.getmaster()) end), awful.key({ modkey, }, "o", function (c) c:move_to_screen() end), -- awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end), -- weasel -- awful.key({ "Mod1" }, "q", function (c) awful.key({ modkey2 }, "`", function (c) if c.sticky then local screen = awful.screen.focused() local tag = awful.tag.selected(screen) client.focus:move_to_tag(tag) end c.sticky = not c.sticky end), --awful.key({ modkey, }, "c", -- function (c) -- c.maximized_horizontal = not c.maximized_horizontal -- c.maximized_vertical = not c.maximized_vertical -- end), --awful.key({ modkey2, }, "m", -- function (c) -- c.maximized_horizontal = not c.maximized_horizontal -- c.maximized_vertical = not c.maximized_vertical -- end), awful.key({ modkey, }, "e", function (c) c.fullscreen = not c.fullscreen end), awful.key({ modkey, }, "r", function (c) awful.titlebar.toggle(c) end), awful.key({ modkey, }, "q", function (c) c.maximized_horizontal = not c.maximized_horizontal end), awful.key({ modkey, }, "a", function (c) c.maximized_vertical = not c.maximized_vertical end), awful.key({ modkey, }, "z", function (c) if c.maximized_vertical then c.maximized_horizontal = false c.maximized_vertical = false -- if not c.floating then -- c.ontop = false --end else c.maximized_horizontal = true c.maximized_vertical = true --if not c.floating then -- c.ontop = true --end c:raise() end end), awful.key({ modkey, }, "w", function (c) -- local drawable, size = awful.titlebar(c) -- if size == 0 then -- c.border_width = 0 -- else -- c.border_width = beautiful.border_width -- end if c.border_width == 0 then c.border_width = beautiful.border_width else c.border_width = 0 end awful.titlebar.toggle(c) -- then awful.titlebar.remove(c) -- if c.titlebar then awful.titlebar.remove(c) -- else setup_titlebar(c) -- end end), -- This must be a clientkeys mapping to have source_c available in the callback. cyclefocus.key({ modkey }, "Tab", { -- cycle_filters as a function callback: -- cycle_filters = { function (c, source_c) return c.screen == source_c.screen end }, -- cycle_filters from the default filters: --cycle_filters = { cyclefocus.filters.same_screen, cyclefocus.filters.common_tag }, cycle_filters = { cyclefocus.filters.same_screen }, modifier="Super_L", keys = {'Tab', 'ISO_Left_Tab'} -- default, could be left out }), -- awful.key({ "Mod1" }, "Up" , function (c) c:raise() end), -- awful.key({ "Mod1" }, "Down" , function (c) c:lower() end), -- awful.key({ modkey }, ";" , function (c) c:raise() end), -- awful.key({ modkey }, "/" , function (c) c:lower() end), awful.key({ modkey }, "Up" , function (c) c:raise() end), awful.key({ modkey }, "Down" , function (c) c.ontop = false c:lower() end), awful.key({ modkey, "Shift" }, "Up" , function (c) c.ontop = not c.ontop end), awful.key({ modkey }, "Escape", function (c) c:kill() 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) ) clientbuttons = awful.util.table.join( awful.button({ }, 1, function (c) client.focus = c -- c:raise() end), awful.button({ modkey }, 1, function (c) awful.mouse.client.move () c:raise() end), awful.button({ modkey }, 3, function (c) -- c.maximized_horizontal = false -- c.maximized_vertical = false -- XXX: set window size/geometry to current(maximized) size/geometry awful.mouse.client.resize () end) ) -- awful.button({ "Mod1" }, 1, awful.mouse.client.move), -- awful.button({ "Mod1" }, 3, awful.mouse.client.resize)) -- Set keys root.keys(globalkeys) -- }}} -- {{{ Rules -- Rules to apply to new clients (through the "manage" signal). 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, screen = awful.screen.preferred, placement = awful.placement.no_overlap+awful.placement.no_offscreen, raise = true, keys = clientkeys, buttons = clientbuttons } }, { rule = { class = "MPlayer" }, properties = { floating = true } }, { rule = { class = "pinentry" }, properties = { floating = true } }, { rule = { class = "gimp" }, properties = { floating = true } }, -- Set Firefox to always map on tags number 2 of screen 1. -- { rule = { class = "Firefox" }, -- properties = { tag = tags[1][2] } }, } -- }}} awful.rules.rules = awful.util.table.join(awful.rules.rules, get_weasel_rules()) function setup_titlebar(c) -- buttons for the titlebar local 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) ) -- Widgets that are aligned to the left local left_layout = wibox.layout.fixed.horizontal() left_layout:add(awful.titlebar.widget.iconwidget(c)) left_layout:buttons(buttons) -- 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 middle_layout = wibox.layout.flex.horizontal() local title = awful.titlebar.widget.titlewidget(c) title:set_align("center") middle_layout:add(title) middle_layout:buttons(buttons) -- Now bring it all together local layout = wibox.layout.align.horizontal() layout:set_left(left_layout) layout:set_right(right_layout) layout:set_middle(middle_layout) awful.titlebar(c):set_widget(layout) end -- {{{ 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) -- gears.debug.dump("in mouse::enter") 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 elseif not c.size_hints.user_position and not c.size_hints.program_position then -- Prevent clients from being unreachable after screen count change awful.placement.no_offscreen(c) end -- local titlebars_enabled = false local titlebars_enabled = true if titlebars_enabled and (c.type == "normal" or c.type == "dialog") then setup_titlebar(c) 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) -- focus the client under the mouse after changing to a new tag, unless we're bringing -- a focused client with us in viewidx_no_wrap() -- -- from/inspired by https://stackoverflow.com/a/30684548 do_not_reset_focus = false focus_timer = gears.timer( { timeout = 0.001, callback = function() -- gears.debug.dump(" in property::selected, timer function") local c = mouse.current_client if not (c == nil) then client.focus = c end focus_timer:stop() end }) tag.connect_signal( "property::selected", function (t) -- gears.debug.dump("in property::selected") if t.selected then -- gears.debug.dump(" in property::selected, t.selected") if not do_not_reset_focus then -- gears.debug.dump(" in property::selected, do_reset_focus") focus_timer:start() end do_not_reset_focus = false end end ) -- }}} client.connect_signal("manage", function(c) c.maximized = false c.maximized_horizontal = false c.maximized_vertical = false end) terminal = "urxvt" awful.spawn.with_shell("pkill -x -f nm-applet; nm-applet") awful.spawn.with_shell("pkill -x -f blueman-applet; blueman-applet") --awful.spawn.with_shell("pkill -x -f klipper; klipper") -- awful.spawn("xscreensaver -no-splash") --KDE--awful.spawn("X-screensaver") -- awful.spawn.with_shell("pkill -x -f clipit; clipit") -- awful.spawn.with_shell("pkill -x -f dnssec-trigger-panel; dnssec-trigger-panel") awful.spawn.with_shell("pkill -x -f 'alsa-volume-monitor hw:0'; alsa-volume-monitor hw:0") -- vim:set softtabstop=4:ts=4:shiftwidth=4:et=1: