diff --git a/awesome/constrain.lua b/awesome/constrain.lua index 0f6d8a4..93efa74 100644 --- a/awesome/constrain.lua +++ b/awesome/constrain.lua @@ -5,101 +5,105 @@ local root = client local naughty = require('naughty') local state = { - client = nil, - signals = {} + client = nil, + signals = {}, } local function notify(msg, keep) -- {{{1 - local timeout = 3 - if keep then timeout = 0 end + local timeout = 3 + if keep then + timeout = 0 + end - naughty.notify({ text = msg, timeout = timeout }) + naughty.notify({ text = msg, timeout = timeout }) end local function set_bounds() -- {{{1 - local c = state.client - state.x_min = c.x + 5 - state.x_max = c.x + c.width - 5 - state.y_min = c.y + 5 - state.y_max = c.y + c.height - 5 + local c = state.client + state.x_min = c.x + 5 + state.x_max = c.x + c.width - 5 + state.y_min = c.y + 5 + state.y_max = c.y + c.height - 5 end local function reposition() -- {{{1 - local pos = mouse.coords() - local new_pos = {} + local pos = mouse.coords() + local new_pos = {} - if pos.x > state.x_max then - new_pos.x = state.x_max - elseif pos.x < state.x_min then - new_pos.x = state.x_min - else - new_pos.x = pos.x - end + if pos.x > state.x_max then + new_pos.x = state.x_max + elseif pos.x < state.x_min then + new_pos.x = state.x_min + else + new_pos.x = pos.x + end - if pos.y > state.y_max then - new_pos.y = state.y_max - elseif pos.y < state.y_min then - new_pos.y = state.y_min - else - new_pos.y = pos.y - end - --new_pos.x = state.x_min + (state.x_max - state.x_min) / 2 - --new_pos.y = state.y_min + (state.y_max - state.y_min) / 2 + if pos.y > state.y_max then + new_pos.y = state.y_max + elseif pos.y < state.y_min then + new_pos.y = state.y_min + else + new_pos.y = pos.y + end + --new_pos.x = state.x_min + (state.x_max - state.x_min) / 2 + --new_pos.y = state.y_min + (state.y_max - state.y_min) / 2 - mouse.coords(new_pos, false) + mouse.coords(new_pos, false) end local function connect(signal, func) -- {{{1 - state.client:connect_signal(signal, func) - state.signals[signal] = func + state.client:connect_signal(signal, func) + state.signals[signal] = func end local function disconnect() -- {{{1 - for signal, func in pairs(state.signals) do - state.client:disconnect_signal(signal, func) - state.signals[signal] = nil - end + for signal, func in pairs(state.signals) do + state.client:disconnect_signal(signal, func) + state.signals[signal] = nil + end end local function release() -- {{{1 - disconnect() + disconnect() - root.disconnect_signal("mouse::move", reposition) - root.disconnect_signal("mouse::leave", reposition) + root.disconnect_signal('mouse::move', reposition) + root.disconnect_signal('mouse::leave', reposition) - notify("Mouse released") + notify('Mouse released') - state.client = nil + state.client = nil end local function constrain(c) -- {{{1 - state.client = c or mouse.current_client + state.client = c or mouse.current_client - if state.client == nil then return end + if state.client == nil then + return + end - set_bounds() + set_bounds() - notify("Constrainging mouse to " .. state.client.name) + notify('Constrainging mouse to ' .. state.client.name) - root.connect_signal("mouse::move", reposition) - root.connect_signal("mouse::leave", reposition) + root.connect_signal('mouse::move', reposition) + root.connect_signal('mouse::leave', reposition) - connect("mouse::move", reposition) - connect("mouse::leave", reposition) - connect("property::size", set_bounds) - connect("property::position", set_bounds) - connect("unmanage", release) + connect('mouse::move', reposition) + connect('mouse::leave', reposition) + connect('property::size', set_bounds) + connect('property::position', set_bounds) + connect('unmanage', release) end -- public interface -- {{{1 return { - constrain = constrain, - release = release, - toggle = function(c) - if state.client then - release() - else - constrain(c) - end - end + constrain = constrain, + release = release, + toggle = function(c) + if state.client then + release() + else + constrain(c) + end + end, } diff --git a/awesome/rc.lua b/awesome/rc.lua index 6ce91ac..5bb95a3 100644 --- a/awesome/rc.lua +++ b/awesome/rc.lua @@ -1,30 +1,25 @@ ---[[ - - Awesome WM configuration template - github.com/lcpz - ---]] - -- {{{ Required libraries -- If LuaRocks is installed, make sure that packages installed through it are -- found (e.g. lgi). If LuaRocks is not installed, do nothing. -pcall(require, "luarocks.loader") +pcall(require, 'luarocks.loader') -local gears = require("gears") -local awful = require("awful") - require("awful.autofocus") -local wibox = require("wibox") -local beautiful = require("beautiful") -local naughty = require("naughty") -local lain = require("lain") +local gears = require('gears') +local awful = require('awful') + +require('awful.autofocus') + +local wibox = require('wibox') +local beautiful = require('beautiful') +local naughty = require('naughty') +local lain = require('lain') --local menubar = require("menubar") -local freedesktop = require("freedesktop") -local hotkeys_popup = require("awful.hotkeys_popup") - require("awful.hotkeys_popup.keys") -local constrain = require("constrain") +local freedesktop = require('freedesktop') +local hotkeys_popup = require('awful.hotkeys_popup') +require('awful.hotkeys_popup.keys') +local constrain = require('constrain') -local mytable = awful.util.table or gears.table -- 4.{0,1} compatibility +local mytable = awful.util.table or gears.table -- 4.{0,1} compatibility -- }}} @@ -33,30 +28,32 @@ local mytable = awful.util.table or gears.table -- 4.{0,1} compatibility -- 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 - } + 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 + local in_error = false - awesome.connect_signal("debug::error", function (err) - if in_error then return end + awesome.connect_signal('debug::error', function(err) + if in_error then + return + end - in_error = true + in_error = true - naughty.notify { - preset = naughty.config.presets.critical, - title = "Oops, an error happened!", - text = tostring(err) - } + naughty.notify({ + preset = naughty.config.presets.critical, + title = 'Oops, an error happened!', + text = tostring(err), + }) - in_error = false - end) + in_error = false + end) end -- }}} @@ -68,7 +65,8 @@ end for _, cmd in ipairs(cmd_arr) do awful.spawn.with_shell(string.format("pgrep -u $USER -fx '%s' > /dev/null || (%s)", cmd, cmd)) end -end ]]-- +end ]] +-- -- run_once({ "urxvtd", "unclutter -root" }) -- comma-separated entries @@ -78,82 +76,94 @@ awful.spawn.with_shell( 'if (xrdb -query | grep -q "^awesome\\.started:\\s*true$"); then exit; fi;' .. 'xrdb -merge <<< "awesome.started:true";' .. -- list each of your autostart commands, followed by ; inside single quotes, followed by .. - 'dex --environment Awesome - --autostart --search-paths "$XDG_CONFIG_DIRS/autostart:$XDG_CONFIG_HOME/autostart"' -- https://github.com/jceb/dex + 'dex --environment Awesome --autostart --search-paths "$XDG_CONFIG_DIRS/autostart:$XDG_CONFIG_HOME/autostart"' -- https://github.com/jceb/dex ) --]] -- }}} -- {{{ Variable definitions -local modkey = "Mod4" -local altkey = "Mod1" -local terminal = "kitty" -local vi_focus = false -- vi-like client focus https://github.com/lcpz/awesome-copycats/issues/275 --- cycle with only the previously focused client or all https://github.com/lcpz/awesome-copycats/issues/274 -local cycle_prev = true -local editor = "nvim" +local modkey = 'Mod4' +local altkey = 'Mod1' +local terminal = 'kitty' +local vi_focus = false -- vi-like client focus https://github.com/lcpz/awesome-copycats/issues/275 +local cycle_prev = true -- cycle with only the previously focused client or all https://github.com/lcpz/awesome-copycats/issues/274 +local editor = 'nvim' awful.util.terminal = terminal -awful.util.tagnames = { "1", "2", "3", "4", "5" } +awful.util.tagnames = { '1', '2', '3', '4', '5' } awful.layout.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.corner.nw, - awful.layout.suit.floating, - -- awful.layout.suit.corner.ne, - -- awful.layout.suit.corner.sw, - -- awful.layout.suit.corner.se, + 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.corner.nw, + awful.layout.suit.floating, + -- awful.layout.suit.corner.ne, + -- awful.layout.suit.corner.sw, + -- awful.layout.suit.corner.se, } -lain.layout.termfair.nmaster = 3 -lain.layout.termfair.ncol = 1 -lain.layout.termfair.center.nmaster = 3 -lain.layout.termfair.center.ncol = 1 -lain.layout.cascade.tile.offset_x = 2 -lain.layout.cascade.tile.offset_y = 32 +lain.layout.termfair.nmaster = 3 +lain.layout.termfair.ncol = 1 +lain.layout.termfair.center.nmaster = 3 +lain.layout.termfair.center.ncol = 1 +lain.layout.cascade.tile.offset_x = 2 +lain.layout.cascade.tile.offset_y = 32 lain.layout.cascade.tile.extra_padding = 5 -lain.layout.cascade.tile.nmaster = 5 -lain.layout.cascade.tile.ncol = 2 +lain.layout.cascade.tile.nmaster = 5 +lain.layout.cascade.tile.ncol = 2 awful.util.taglist_buttons = mytable.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) + 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) ) awful.util.tasklist_buttons = mytable.join( - awful.button({ }, 1, function(c) - if c == client.focus then - c.minimized = true - else - c:emit_signal("request::activate", "tasklist", { raise = true }) - end - end), - awful.button({ }, 3, function() - awful.menu.client_list({ theme = { width = 250 } }) - end), - awful.button({ }, 4, function() awful.client.focus.byidx(1) end), - awful.button({ }, 5, function() awful.client.focus.byidx(-1) end) + awful.button({}, 1, function(c) + if c == client.focus then + c.minimized = true + else + c:emit_signal('request::activate', 'tasklist', { raise = true }) + end + end), + awful.button({}, 3, function() + awful.menu.client_list({ theme = { width = 250 } }) + end), + awful.button({}, 4, function() + awful.client.focus.byidx(1) + end), + awful.button({}, 5, function() + awful.client.focus.byidx(-1) + end) ) -beautiful.init(os.getenv("HOME") .. "/.config/awesome/theme.lua") +beautiful.init(os.getenv('HOME') .. '/.config/awesome/theme.lua') -- }}} @@ -161,23 +171,33 @@ beautiful.init(os.getenv("HOME") .. "/.config/awesome/theme.lua") -- Create a launcher widget and a main menu local myawesomemenu = { - { "Hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end }, - { "Manual", string.format("%s -e man awesome", terminal) }, - { "Edit config", string.format("%s -e %s %s", terminal, editor, awesome.conffile) }, - { "Restart", awesome.restart }, - { "Quit", function() awesome.quit() end }, + { + 'Hotkeys', + function() + hotkeys_popup.show_help(nil, awful.screen.focused()) + end, + }, + { 'Manual', string.format('%s -e man awesome', terminal) }, + { 'Edit config', string.format('%s -e %s %s', terminal, editor, awesome.conffile) }, + { 'Restart', awesome.restart }, + { + 'Quit', + function() + awesome.quit() + end, + }, } -awful.util.mymainmenu = freedesktop.menu.build { - before = { - { "Awesome", myawesomemenu, beautiful.awesome_icon }, - -- other triads can be put here - }, - after = { - { "Open terminal", terminal }, - -- other triads can be put here - } -} +awful.util.mymainmenu = freedesktop.menu.build({ + before = { + { 'Awesome', myawesomemenu, beautiful.awesome_icon }, + -- other triads can be put here + }, + after = { + { 'Open terminal', terminal }, + -- other triads can be put here + }, +}) -- Hide the menu when the mouse leaves it --[[ @@ -205,41 +225,45 @@ end) -- {{{ Screen -- Re-set wallpaper when a screen's geometry changes (e.g. different resolution) -screen.connect_signal("property::geometry", function(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 +screen.connect_signal('property::geometry', function(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) -- No borders when rearranging only 1 non-floating or maximized client -screen.connect_signal("arrange", function (s) - local only_one = #s.tiled_clients == 1 - for _, c in pairs(s.clients) do - if only_one and not c.floating or c.maximized or c.fullscreen then - c.border_width = 0 - else - c.border_width = beautiful.border_width - end - end +screen.connect_signal('arrange', function(s) + local only_one = #s.tiled_clients == 1 + for _, c in pairs(s.clients) do + if only_one and not c.floating or c.maximized or c.fullscreen then + c.border_width = 0 + else + c.border_width = beautiful.border_width + end + end end) -- Create a wibox for each screen and add it -awful.screen.connect_for_each_screen(function(s) beautiful.at_screen_connect(s) end) +awful.screen.connect_for_each_screen(function(s) + beautiful.at_screen_connect(s) +end) -- }}} -- {{{ Mouse bindings root.buttons(mytable.join( - awful.button({ }, 3, function () awful.util.mymainmenu:toggle() end), - awful.button({ }, 4, awful.tag.viewnext), - awful.button({ }, 5, awful.tag.viewprev) + awful.button({}, 3, function() + awful.util.mymainmenu:toggle() + end), + awful.button({}, 4, awful.tag.viewnext), + awful.button({}, 5, awful.tag.viewprev) )) -- }}} @@ -247,189 +271,199 @@ root.buttons(mytable.join( -- {{{ Key bindings globalkeys = mytable.join( - -- Destroy all notifications - awful.key({ "Control", }, "space", function() naughty.destroy_all_notifications() end, - {description = "destroy all notifications", group = "hotkeys"}), + -- Destroy all notifications + awful.key({ 'Control' }, 'space', function() + naughty.destroy_all_notifications() + end, { description = 'destroy all notifications', group = 'hotkeys' }), - -- Take a screenshot - awful.key({ modkey, altkey }, "p", function() awful.spawn("flameshot gui") end, - {description = "take a screenshot", group = "hotkeys"}), + -- Take a screenshot + awful.key({ modkey, altkey }, 'p', function() + awful.spawn('flameshot gui') + end, { description = 'take a screenshot', group = 'hotkeys' }), - -- X screen locker - awful.key({ modkey, altkey, "Control" }, "l", function () - os.execute(os.getenv("HOME") .. "/.config/awesome/scripts/lock.sh") - end, - {description = "lock screen", group = "hotkeys"}), + -- X screen locker + awful.key({ modkey, altkey, 'Control' }, 'l', function() + os.execute(os.getenv('HOME') .. '/.config/awesome/scripts/lock.sh') + end, { description = 'lock screen', group = 'hotkeys' }), - -- Show help - awful.key({ modkey, }, "s", hotkeys_popup.show_help, - {description="show help", group="awesome"}), + -- Show help + awful.key({ modkey }, 's', hotkeys_popup.show_help, { description = 'show help', group = 'awesome' }), - -- Tag browsing - awful.key({ modkey, }, "Left", awful.tag.viewprev, - {description = "view previous", group = "tag"}), - awful.key({ modkey, }, "Right", awful.tag.viewnext, - {description = "view next", group = "tag"}), - awful.key({ modkey, }, "Escape", awful.tag.history.restore, - {description = "go back", group = "tag"}), + -- Tag browsing + awful.key({ modkey }, 'Left', awful.tag.viewprev, { description = 'view previous', group = 'tag' }), + awful.key({ modkey }, 'Right', awful.tag.viewnext, { description = 'view next', group = 'tag' }), + awful.key({ modkey }, 'Escape', awful.tag.history.restore, { description = 'go back', group = 'tag' }), - -- Non-empty tag browsing - awful.key({ altkey }, "Left", function () lain.util.tag_view_nonempty(-1) end, - {description = "view previous nonempty", group = "tag"}), - awful.key({ altkey }, "Right", function () lain.util.tag_view_nonempty(1) end, - {description = "view previous nonempty", group = "tag"}), + -- Non-empty tag browsing + awful.key({ altkey }, 'Left', function() + lain.util.tag_view_nonempty(-1) + end, { description = 'view previous nonempty', group = 'tag' }), + awful.key({ altkey }, 'Right', function() + lain.util.tag_view_nonempty(1) + end, { description = 'view previous nonempty', group = 'tag' }), - -- Default client focus - awful.key({ altkey, }, "j", - function () - awful.client.focus.byidx( 1) - end, - {description = "focus next by index", group = "client"} - ), - awful.key({ altkey, }, "k", - function () - awful.client.focus.byidx(-1) - end, - {description = "focus previous by index", group = "client"} - ), + -- Default client focus + awful.key({ altkey }, 'j', function() + awful.client.focus.byidx(1) + end, { description = 'focus next by index', group = 'client' }), + awful.key({ altkey }, 'k', function() + awful.client.focus.byidx(-1) + end, { description = 'focus previous by index', group = 'client' }), - -- By-direction client focus - awful.key({ modkey }, "j", - function() - awful.client.focus.global_bydirection("down") - if client.focus then client.focus:raise() end - end, - {description = "focus down", group = "client"}), - awful.key({ modkey }, "k", - function() - awful.client.focus.global_bydirection("up") - if client.focus then client.focus:raise() end - end, - {description = "focus up", group = "client"}), - awful.key({ modkey }, "h", - function() - awful.client.focus.global_bydirection("left") - if client.focus then client.focus:raise() end - end, - {description = "focus left", group = "client"}), - awful.key({ modkey }, "l", - function() - awful.client.focus.global_bydirection("right") - if client.focus then client.focus:raise() end - end, - {description = "focus right", group = "client"}), + -- By-direction client focus + awful.key({ modkey }, 'j', function() + awful.client.focus.global_bydirection('down') + if client.focus then + client.focus:raise() + end + end, { description = 'focus down', group = 'client' }), + awful.key({ modkey }, 'k', function() + awful.client.focus.global_bydirection('up') + if client.focus then + client.focus:raise() + end + end, { description = 'focus up', group = 'client' }), + awful.key({ modkey }, 'h', function() + awful.client.focus.global_bydirection('left') + if client.focus then + client.focus:raise() + end + end, { description = 'focus left', group = 'client' }), + awful.key({ modkey }, 'l', function() + awful.client.focus.global_bydirection('right') + if client.focus then + client.focus:raise() + end + end, { description = 'focus right', group = 'client' }), - -- Menu - awful.key({ modkey, }, "w", function () awful.util.mymainmenu:show() end, - {description = "show main menu", group = "awesome"}), + -- Menu + awful.key({ modkey }, 'w', function() + awful.util.mymainmenu:show() + end, { description = 'show main menu', group = 'awesome' }), - -- Layout manipulation - awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end, - {description = "swap with next client by index", group = "client"}), - awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end, - {description = "swap with previous client by index", group = "client"}), - awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end, - {description = "focus the next screen", group = "screen"}), - awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end, - {description = "focus the previous screen", group = "screen"}), - awful.key({ modkey, }, "u", awful.client.urgent.jumpto, - {description = "jump to urgent client", group = "client"}), - awful.key({ modkey, }, "Tab", - function () - if cycle_prev then - awful.client.focus.history.previous() - else - awful.client.focus.byidx(-1) - end - if client.focus then - client.focus:raise() - end - end, - {description = "cycle with previous/go back", group = "client"}), + -- Layout manipulation + awful.key({ modkey, 'Shift' }, 'j', function() + awful.client.swap.byidx(1) + end, { description = 'swap with next client by index', group = 'client' }), + awful.key({ modkey, 'Shift' }, 'k', function() + awful.client.swap.byidx(-1) + end, { description = 'swap with previous client by index', group = 'client' }), + awful.key({ modkey, 'Control' }, 'j', function() + awful.screen.focus_relative(1) + end, { description = 'focus the next screen', group = 'screen' }), + awful.key({ modkey, 'Control' }, 'k', function() + awful.screen.focus_relative(-1) + end, { description = 'focus the previous screen', group = 'screen' }), + awful.key({ modkey }, 'u', awful.client.urgent.jumpto, { description = 'jump to urgent client', group = 'client' }), + awful.key({ modkey }, 'Tab', function() + if cycle_prev then + awful.client.focus.history.previous() + else + awful.client.focus.byidx(-1) + end + if client.focus then + client.focus:raise() + end + end, { description = 'cycle with previous/go back', group = 'client' }), - -- Show/hide wibox - awful.key({ modkey }, "b", function () - for s in screen do - s.mywibox.visible = not s.mywibox.visible - if s.mybottomwibox then - s.mybottomwibox.visible = not s.mybottomwibox.visible - end - end - end, - {description = "toggle wibox", group = "awesome"}), + -- Show/hide wibox + awful.key({ modkey }, 'b', function() + for s in screen do + s.mywibox.visible = not s.mywibox.visible + if s.mybottomwibox then + s.mybottomwibox.visible = not s.mybottomwibox.visible + end + end + end, { description = 'toggle wibox', group = 'awesome' }), - -- On-the-fly useless gaps change - awful.key({ altkey, "Control" }, "+", function () lain.util.useless_gaps_resize(1) end, - {description = "increment useless gaps", group = "tag"}), - awful.key({ altkey, "Control" }, "-", function () lain.util.useless_gaps_resize(-1) end, - {description = "decrement useless gaps", group = "tag"}), + -- On-the-fly useless gaps change + awful.key({ altkey, 'Control' }, '+', function() + lain.util.useless_gaps_resize(1) + end, { description = 'increment useless gaps', group = 'tag' }), + awful.key({ altkey, 'Control' }, '-', function() + lain.util.useless_gaps_resize(-1) + end, { description = 'decrement useless gaps', group = 'tag' }), - -- Dynamic tagging - awful.key({ modkey, "Shift" }, "n", function () lain.util.add_tag() end, - {description = "add new tag", group = "tag"}), - awful.key({ modkey, "Shift" }, "r", function () lain.util.rename_tag() end, - {description = "rename tag", group = "tag"}), - awful.key({ modkey, "Shift" }, "Left", function () lain.util.move_tag(-1) end, - {description = "move tag to the left", group = "tag"}), - awful.key({ modkey, "Shift" }, "Right", function () lain.util.move_tag(1) end, - {description = "move tag to the right", group = "tag"}), - awful.key({ modkey, "Shift" }, "d", function () lain.util.delete_tag() end, - {description = "delete tag", group = "tag"}), + -- Dynamic tagging + awful.key({ modkey, 'Shift' }, 'n', function() + lain.util.add_tag() + end, { description = 'add new tag', group = 'tag' }), + awful.key({ modkey, 'Shift' }, 'r', function() + lain.util.rename_tag() + end, { description = 'rename tag', group = 'tag' }), + awful.key({ modkey, 'Shift' }, 'Left', function() + lain.util.move_tag(-1) + end, { description = 'move tag to the left', group = 'tag' }), + awful.key({ modkey, 'Shift' }, 'Right', function() + lain.util.move_tag(1) + end, { description = 'move tag to the right', group = 'tag' }), + awful.key({ modkey, 'Shift' }, 'd', function() + lain.util.delete_tag() + end, { description = 'delete tag', group = 'tag' }), - -- Standard program - awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end, - {description = "open a terminal", group = "launcher"}), - awful.key({ modkey, "Control" }, "r", awesome.restart, - {description = "reload awesome", group = "awesome"}), - awful.key({ modkey, "Shift" }, "q", awesome.quit, - {description = "quit awesome", group = "awesome"}), + -- Standard program + awful.key({ modkey }, 'Return', function() + awful.spawn(terminal) + end, { description = 'open a terminal', group = 'launcher' }), + awful.key({ modkey, 'Control' }, 'r', awesome.restart, { description = 'reload awesome', group = 'awesome' }), + awful.key({ modkey, 'Shift' }, 'q', awesome.quit, { description = 'quit awesome', group = 'awesome' }), - awful.key({ modkey, altkey }, "l", function () awful.tag.incmwfact( 0.05) end, - {description = "increase master width factor", group = "layout"}), - awful.key({ modkey, altkey }, "h", function () awful.tag.incmwfact(-0.05) end, - {description = "decrease master width factor", group = "layout"}), - awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end, - {description = "increase the number of master clients", group = "layout"}), - awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end, - {description = "decrease the number of master clients", group = "layout"}), - awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end, - {description = "increase the number of columns", group = "layout"}), - awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end, - {description = "decrease the number of columns", group = "layout"}), - awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end, - {description = "select next", group = "layout"}), - awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end, - {description = "select previous", group = "layout"}), + awful.key({ modkey, altkey }, 'l', function() + awful.tag.incmwfact(0.05) + end, { description = 'increase master width factor', group = 'layout' }), + awful.key({ modkey, altkey }, 'h', function() + awful.tag.incmwfact(-0.05) + end, { description = 'decrease master width factor', group = 'layout' }), + awful.key({ modkey, 'Shift' }, 'h', function() + awful.tag.incnmaster(1, nil, true) + end, { description = 'increase the number of master clients', group = 'layout' }), + awful.key({ modkey, 'Shift' }, 'l', function() + awful.tag.incnmaster(-1, nil, true) + end, { description = 'decrease the number of master clients', group = 'layout' }), + awful.key({ modkey, 'Control' }, 'h', function() + awful.tag.incncol(1, nil, true) + end, { description = 'increase the number of columns', group = 'layout' }), + awful.key({ modkey, 'Control' }, 'l', function() + awful.tag.incncol(-1, nil, true) + end, { description = 'decrease the number of columns', group = 'layout' }), + awful.key({ modkey }, 'space', function() + awful.layout.inc(1) + end, { description = 'select next', group = 'layout' }), + awful.key({ modkey, 'Shift' }, 'space', function() + awful.layout.inc(-1) + end, { description = 'select previous', group = 'layout' }), - awful.key({ modkey, "Control" }, "n", function () - local c = awful.client.restore() - -- Focus restored client - if c then - c:emit_signal("request::activate", "key.unminimize", {raise = true}) - end - end, {description = "restore minimized", group = "client"}), + awful.key({ modkey, 'Control' }, 'n', function() + local c = awful.client.restore() + -- Focus restored client + if c then + c:emit_signal('request::activate', 'key.unminimize', { raise = true }) + end + end, { description = 'restore minimized', group = 'client' }), - -- Dropdown application - awful.key({ modkey, }, "q", function () awful.screen.focused().quake:toggle() end, - {description = "dropdown application", group = "launcher"}), + -- Dropdown application + awful.key({ modkey }, 'q', function() + awful.screen.focused().quake:toggle() + end, { description = 'dropdown application', group = 'launcher' }), - -- Widgets popups - --[[ awful.key({ altkey, }, "c", function () if beautiful.cal then beautiful.cal.show(7) end end, + -- Widgets popups + --[[ awful.key({ altkey, }, "c", function () if beautiful.cal then beautiful.cal.show(7) end end, {description = "show calendar", group = "widgets"}), awful.key({ altkey, }, "h", function () if beautiful.fs then beautiful.fs.show(7) end end, {description = "show filesystem", group = "widgets"}), awful.key({ altkey, }, "w", function () if beautiful.weather then beautiful.weather.show(7) end end, {description = "show weather", group = "widgets"}), - ]]-- + ]] + -- - -- Screen brightness - --awful.key({ }, "XF86MonBrightnessUp", function () os.execute("xbacklight -inc 10") end, - -- {description = "+10%", group = "hotkeys"}), - --awful.key({ }, "XF86MonBrightnessDown", function () os.execute("xbacklight -dec 10") end, - -- {description = "-10%", group = "hotkeys"}), + -- Screen brightness + --awful.key({ }, "XF86MonBrightnessUp", function () os.execute("xbacklight -inc 10") end, + -- {description = "+10%", group = "hotkeys"}), + --awful.key({ }, "XF86MonBrightnessDown", function () os.execute("xbacklight -dec 10") end, + -- {description = "-10%", group = "hotkeys"}), - -- ALSA volume control - --[[ + -- ALSA volume control + --[[ awful.key({ altkey }, "Up", function () os.execute(string.format("amixer -q set %s 1%%+", beautiful.volume.channel)) @@ -444,9 +478,7 @@ globalkeys = mytable.join( {description = "volume down", group = "hotkeys"}), awful.key({ altkey }, "m", function () - os.execute(string.format("amixer -q set %s toggle", - beautiful.volume.togglechannel or beautiful.volume.channel) - ) + os.execute(string.format("amixer -q set %s toggle", beautiful.volume.togglechannel or beautiful.volume.channel)) beautiful.volume.update() end, {description = "toggle mute", group = "hotkeys"}), @@ -462,10 +494,11 @@ globalkeys = mytable.join( beautiful.volume.update() end, {description = "volume 0%", group = "hotkeys"}), - ]]-- + ]] + -- - -- MPD control - --[[ + -- MPD control + --[[ awful.key({ altkey, "Control" }, "Up", function () os.execute("mpc toggle") @@ -503,177 +536,168 @@ globalkeys = mytable.join( naughty.notify(common) end, {description = "mpc on/off", group = "widgets"}), - ]]-- + ]] + -- - -- Copy primary to clipboard (terminals to gtk) - --awful.key({ modkey }, "c", function () awful.spawn.with_shell("xsel | xsel -i -b") end, - -- {description = "copy terminal to gtk", group = "hotkeys"}), - -- Copy clipboard to primary (gtk to terminals) - --awful.key({ modkey }, "v", function () awful.spawn.with_shell("xsel -b | xsel") end, - -- {description = "copy gtk to terminal", group = "hotkeys"}), + -- Copy primary to clipboard (terminals to gtk) + --awful.key({ modkey }, "c", function () awful.spawn.with_shell("xsel | xsel -i -b") end, + -- {description = "copy terminal to gtk", group = "hotkeys"}), + -- Copy clipboard to primary (gtk to terminals) + --awful.key({ modkey }, "v", function () awful.spawn.with_shell("xsel -b | xsel") end, + -- {description = "copy gtk to terminal", group = "hotkeys"}), - -- User programs - --awful.key({ modkey }, "q", function () awful.spawn(browser) end, - -- {description = "run browser", group = "launcher"}), + -- User programs + --awful.key({ modkey }, "q", function () awful.spawn(browser) end, + -- {description = "run browser", group = "launcher"}), - -- Default - --[[ Menubar + -- Default + --[[ Menubar awful.key({ modkey }, "p", function() menubar.show() end, {description = "show the menubar", group = "launcher"}), --]] - --[[ dmenu + --[[ dmenu awful.key({ modkey }, "x", function () os.execute(string.format("dmenu_run -i -fn 'Monospace' -nb '%s' -nf '%s' -sb '%s' -sf '%s'", beautiful.bg_normal, beautiful.fg_normal, beautiful.bg_focus, beautiful.fg_focus)) end, {description = "show dmenu", group = "launcher"}), --]] - -- alternatively use rofi, a dmenu-like application with more features - -- check https://github.com/DaveDavenport/rofi for more details - -- rofi - awful.key({ modkey }, "y", function () os.execute("rofi -show drun -theme fancy") end, - {description = "show rofi", group = "launcher"}), - awful.key({ modkey, "Shift" }, "y", function () os.execute("rofi -show ssh -theme fancy") end, - {description = "show rofi", group = "launcher"}), - awful.key({ modkey, "Control" }, "y", function () os.execute("rofi -show window -theme fancy") end, - {description = "show rofi", group = "launcher"}), + -- alternatively use rofi, a dmenu-like application with more features + -- check https://github.com/DaveDavenport/rofi for more details + -- rofi + awful.key({ modkey }, 'y', function() + os.execute('rofi -show drun -theme fancy') + end, { description = 'show rofi', group = 'launcher' }), + awful.key({ modkey, 'Shift' }, 'y', function() + os.execute('rofi -show ssh -theme fancy') + end, { description = 'show rofi', group = 'launcher' }), + awful.key({ modkey, 'Control' }, 'y', function() + os.execute('rofi -show window -theme fancy') + end, { description = 'show rofi', group = 'launcher' }), - -- Prompt - awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() end, - {description = "run prompt", group = "launcher"}), + -- Prompt + awful.key({ modkey }, 'r', function() + awful.screen.focused().mypromptbox:run() + end, { description = 'run prompt', group = 'launcher' }), - awful.key({ modkey }, "x", - function () - awful.prompt.run { - prompt = "Run Lua code: ", - textbox = awful.screen.focused().mypromptbox.widget, - exe_callback = awful.util.eval, - history_path = awful.util.get_cache_dir() .. "/history_eval" - } - end, - {description = "lua execute prompt", group = "awesome"}) - --]] + awful.key({ modkey }, 'x', function() + awful.prompt.run({ + prompt = 'Run Lua code: ', + textbox = awful.screen.focused().mypromptbox.widget, + exe_callback = awful.util.eval, + history_path = awful.util.get_cache_dir() .. '/history_eval', + }) + end, { description = 'lua execute prompt', group = 'awesome' }) + --]] ) clientkeys = mytable.join( - awful.key({ altkey, "Shift" }, "m", lain.util.magnify_client, - {description = "magnify client", group = "client"}), - awful.key({ modkey, }, "f", - function (c) - c.fullscreen = not c.fullscreen - c:raise() - end, - {description = "toggle fullscreen", group = "client"}), - awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end, - {description = "close", group = "client"}), - awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle , - {description = "toggle floating", group = "client"}), - awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end, - {description = "move to master", group = "client"}), - awful.key({ modkey, }, "o", function (c) c:move_to_screen() end, - {description = "move to screen", group = "client"}), - awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end, - {description = "toggle keep on top", group = "client"}), - 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 , - {description = "minimize", group = "client"}), - awful.key({ modkey, }, "m", - function (c) - c.maximized = not c.maximized - c:raise() - end , - {description = "(un)maximize", group = "client"}), - awful.key({ modkey, "Control" }, "m", - function (c) - c.maximized_vertical = not c.maximized_vertical - c:raise() - end , - {description = "(un)maximize vertically", group = "client"}), - awful.key({ modkey, "Shift" }, "m", - function (c) - c.maximized_horizontal = not c.maximized_horizontal - c:raise() - end , - {description = "(un)maximize horizontally", group = "client"}), - -- Show/hide titlebar - awful.key({ modkey, "Control" }, "s", function (c) - awful.titlebar.toggle(c) - c:raise() - end, - {description = "toggle titlebar", group = "client"}), - -- Toggle constrain mouse to window - awful.key({ modkey, "Control" }, "F10", function (c) - constrain.toggle(c) - end, - {description = "toggle mouse constrain", group = "client"}) + awful.key({ altkey, 'Shift' }, 'm', lain.util.magnify_client, { description = 'magnify client', group = 'client' }), + awful.key({ modkey }, 'f', function(c) + c.fullscreen = not c.fullscreen + c:raise() + end, { description = 'toggle fullscreen', group = 'client' }), + awful.key({ modkey, 'Shift' }, 'c', function(c) + c:kill() + end, { description = 'close', group = 'client' }), + awful.key( + { modkey, 'Control' }, + 'space', + awful.client.floating.toggle, + { description = 'toggle floating', group = 'client' } + ), + awful.key({ modkey, 'Control' }, 'Return', function(c) + c:swap(awful.client.getmaster()) + end, { description = 'move to master', group = 'client' }), + awful.key({ modkey }, 'o', function(c) + c:move_to_screen() + end, { description = 'move to screen', group = 'client' }), + awful.key({ modkey }, 't', function(c) + c.ontop = not c.ontop + end, { description = 'toggle keep on top', group = 'client' }), + 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, { description = 'minimize', group = 'client' }), + awful.key({ modkey }, 'm', function(c) + c.maximized = not c.maximized + c:raise() + end, { description = '(un)maximize', group = 'client' }), + awful.key({ modkey, 'Control' }, 'm', function(c) + c.maximized_vertical = not c.maximized_vertical + c:raise() + end, { description = '(un)maximize vertically', group = 'client' }), + awful.key({ modkey, 'Shift' }, 'm', function(c) + c.maximized_horizontal = not c.maximized_horizontal + c:raise() + end, { description = '(un)maximize horizontally', group = 'client' }), + -- Show/hide titlebar + awful.key({ modkey, 'Control' }, 's', function(c) + awful.titlebar.toggle(c) + c:raise() + end, { description = 'toggle titlebar', group = 'client' }), + -- Toggle constrain mouse to window + awful.key({ modkey, 'Control' }, 'F10', function(c) + constrain.toggle(c) + end, { description = 'toggle mouse constrain', group = 'client' }) ) -- Bind all key numbers to tags. -- Be careful: we use keycodes to make it work on any keyboard layout. -- This should map on the top row of your keyboard, usually 1 to 9. for i = 1, 9 do - globalkeys = mytable.join(globalkeys, - -- View tag only. - awful.key({ modkey }, "#" .. i + 9, - function () - local screen = awful.screen.focused() - local tag = screen.tags[i] - if tag then - tag:view_only() - end - end, - {description = "view tag #"..i, group = "tag"}), - -- Toggle tag display. - awful.key({ modkey, "Control" }, "#" .. i + 9, - function () - local screen = awful.screen.focused() - local tag = screen.tags[i] - if tag then - awful.tag.viewtoggle(tag) - end - end, - {description = "toggle tag #" .. i, group = "tag"}), - -- Move client to tag. - awful.key({ modkey, "Shift" }, "#" .. i + 9, - function () - if client.focus then - local tag = client.focus.screen.tags[i] - if tag then - client.focus:move_to_tag(tag) - end - end - end, - {description = "move focused client to tag #"..i, group = "tag"}), - -- Toggle tag on focused client. - awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, - function () - if client.focus then - local tag = client.focus.screen.tags[i] - if tag then - client.focus:toggle_tag(tag) - end - end - end, - {description = "toggle focused client on tag #" .. i, group = "tag"}) - ) + globalkeys = mytable.join( + globalkeys, + -- View tag only. + awful.key({ modkey }, '#' .. i + 9, function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + tag:view_only() + end + end, { description = 'view tag #' .. i, group = 'tag' }), + -- Toggle tag display. + awful.key({ modkey, 'Control' }, '#' .. i + 9, function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + awful.tag.viewtoggle(tag) + end + end, { description = 'toggle tag #' .. i, group = 'tag' }), + -- Move client to tag. + awful.key({ modkey, 'Shift' }, '#' .. i + 9, function() + if client.focus then + local tag = client.focus.screen.tags[i] + if tag then + client.focus:move_to_tag(tag) + end + end + end, { description = 'move focused client to tag #' .. i, group = 'tag' }), + -- Toggle tag on focused client. + awful.key({ modkey, 'Control', 'Shift' }, '#' .. i + 9, function() + if client.focus then + local tag = client.focus.screen.tags[i] + if tag then + client.focus:toggle_tag(tag) + end + end + end, { description = 'toggle focused client on tag #' .. i, group = 'tag' }) + ) end clientbuttons = mytable.join( - awful.button({ }, 1, function (c) - c:emit_signal("request::activate", "mouse_click", {raise = true}) - end), - awful.button({ modkey }, 1, function (c) - c:emit_signal("request::activate", "mouse_click", {raise = true}) - awful.mouse.client.move(c) - end), - awful.button({ modkey }, 3, function (c) - c:emit_signal("request::activate", "mouse_click", {raise = true}) - awful.mouse.client.resize(c) - end) + awful.button({}, 1, function(c) + c:emit_signal('request::activate', 'mouse_click', { raise = true }) + end), + awful.button({ modkey }, 1, function(c) + c:emit_signal('request::activate', 'mouse_click', { raise = true }) + awful.mouse.client.move(c) + end), + awful.button({ modkey }, 3, function(c) + c:emit_signal('request::activate', 'mouse_click', { raise = true }) + awful.mouse.client.resize(c) + end) ) -- Set keys @@ -685,67 +709,73 @@ root.keys(globalkeys) -- 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, - callback = awful.client.setslave, - focus = awful.client.focus.filter, - raise = true, - keys = clientkeys, - buttons = clientbuttons, - screen = awful.screen.preferred, - placement = awful.placement.no_overlap+awful.placement.no_offscreen, - size_hints_honor = false - } - }, + -- All clients will match this rule. + { + rule = {}, + properties = { + border_width = beautiful.border_width, + border_color = beautiful.border_normal, + callback = awful.client.setslave, + focus = awful.client.focus.filter, + raise = true, + keys = clientkeys, + buttons = clientbuttons, + screen = awful.screen.preferred, + placement = awful.placement.no_overlap + awful.placement.no_offscreen, + size_hints_honor = false, + }, + }, - -- Floating clients. - { rule_any = { - instance = { - "DTA", -- Firefox addon DownThemAll. - "copyq", -- Includes session name in class. - "pinentry", - }, - class = { - "Arandr", - "Blueman-manager", - "Gpick", - "Kruler", - "MessageWin", -- kalarm. - "Sxiv", - "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size. - "Wpa_gui", - "veromix", - "xtightvncviewer"}, + -- Floating clients. + { + rule_any = { + instance = { + 'DTA', -- Firefox addon DownThemAll. + 'copyq', -- Includes session name in class. + 'pinentry', + }, + class = { + 'Arandr', + 'Blueman-manager', + 'Gpick', + 'Kruler', + 'MessageWin', -- kalarm. + 'Sxiv', + 'Tor Browser', -- Needs a fixed window size to avoid fingerprinting by screen size. + 'Wpa_gui', + 'veromix', + 'xtightvncviewer', + }, - -- Note that the name property shown in xprop might be set slightly after creation of the client - -- and the name shown there might not match defined rules here. - name = { - "Event Tester", -- xev. - }, - role = { - "AlarmWindow", -- Thunderbird's calendar. - "ConfigManager", -- Thunderbird's about:config. - "pop-up", -- e.g. Google Chrome's (detached) Developer Tools. - } - }, properties = { floating = true }}, + -- Note that the name property shown in xprop might be set slightly after creation of the client + -- and the name shown there might not match defined rules here. + name = { + 'Event Tester', -- xev. + }, + role = { + 'AlarmWindow', -- Thunderbird's calendar. + 'ConfigManager', -- Thunderbird's about:config. + 'pop-up', -- e.g. Google Chrome's (detached) Developer Tools. + }, + }, + properties = { floating = true }, + }, -{ rule_any = { class = {"firefox", "factorio"} }, - properties = { opacity = 1, maximized = false, floating = false } }, + { + rule_any = { class = { 'firefox', 'factorio' } }, + properties = { opacity = 1, maximized = false, floating = false }, + }, - -- Add titlebars to normal clients and dialogs - { rule_any = {type = { "normal", "dialog" } - }, properties = { titlebars_enabled = true } - }, - { - rule = { class = "mpv" }, - properties = { fullscreen = true } - } + -- Add titlebars to normal clients and dialogs + { rule_any = { type = { 'normal', 'dialog' } }, properties = { titlebars_enabled = true } }, + { + rule = { class = 'mpv' }, + properties = { fullscreen = true }, + }, - -- Set Firefox to always map on the tag named "2" on screen 1. - -- { rule = { class = "Firefox" }, - -- properties = { screen = 1, tag = "2" } }, + -- Set Firefox to always map on the tag named "2" on screen 1. + -- { rule = { class = "Firefox" }, + -- properties = { screen = 1, tag = "2" } }, } -- }}} @@ -753,76 +783,78 @@ awful.rules.rules = { -- {{{ Signals -- Signal function to execute when a new client appears. -client.connect_signal("manage", function (c) - -- Set the windows at the slave, - -- i.e. put it at the end of others instead of setting it master. - -- if not awesome.startup then awful.client.setslave(c) end +client.connect_signal('manage', function(c) + -- Set the windows at the slave, + -- i.e. put it at the end of others instead of setting it master. + -- if not awesome.startup then awful.client.setslave(c) end - if awesome.startup - and not c.size_hints.user_position - and not c.size_hints.program_position then - -- Prevent clients from being unreachable after screen count changes. - awful.placement.no_offscreen(c) - end + if awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then + -- Prevent clients from being unreachable after screen count changes. + awful.placement.no_offscreen(c) + end end) -- Add a titlebar if titlebars_enabled is set to true in the rules. -client.connect_signal("request::titlebars", function(c) - -- Custom - if beautiful.titlebar_fun then - beautiful.titlebar_fun(c) - return - end +client.connect_signal('request::titlebars', function(c) + -- Custom + if beautiful.titlebar_fun then + beautiful.titlebar_fun(c) + return + end - -- Default - -- buttons for the titlebar - local buttons = mytable.join( - awful.button({ }, 1, function() - c:emit_signal("request::activate", "titlebar", {raise = true}) - awful.mouse.client.move(c) - end), - awful.button({ }, 2, function() - --c:emit_signal("request::activate", "titlebar", {raise = true}) - awesome.kill(c.pid, awesome.unix_signal["SIGTERM"]) - end), - awful.button({ }, 3, function() - c:emit_signal("request::activate", "titlebar", {raise = true}) - awful.mouse.client.resize(c) - end) - ) + -- Default + -- buttons for the titlebar + local buttons = mytable.join( + awful.button({}, 1, function() + c:emit_signal('request::activate', 'titlebar', { raise = true }) + awful.mouse.client.move(c) + end), + awful.button({}, 2, function() + --c:emit_signal("request::activate", "titlebar", {raise = true}) + awesome.kill(c.pid, awesome.unix_signal['SIGTERM']) + end), + awful.button({}, 3, function() + c:emit_signal('request::activate', 'titlebar', { raise = true }) + awful.mouse.client.resize(c) + end) + ) - awful.titlebar(c, { size = 16 }) : setup { - { -- Left - awful.titlebar.widget.iconwidget(c), - buttons = buttons, - layout = wibox.layout.fixed.horizontal - }, - { -- Middle - { -- Title - align = "center", - widget = awful.titlebar.widget.titlewidget(c) - }, - buttons = buttons, - layout = wibox.layout.flex.horizontal - }, - { -- Right - awful.titlebar.widget.floatingbutton (c), - awful.titlebar.widget.maximizedbutton(c), - awful.titlebar.widget.stickybutton (c), - awful.titlebar.widget.ontopbutton (c), - awful.titlebar.widget.closebutton (c), - layout = wibox.layout.fixed.horizontal() - }, - layout = wibox.layout.align.horizontal - } + awful.titlebar(c, { size = 16 }):setup({ + { -- Left + awful.titlebar.widget.iconwidget(c), + buttons = buttons, + layout = wibox.layout.fixed.horizontal, + }, + { -- Middle + { -- Title + align = 'center', + widget = awful.titlebar.widget.titlewidget(c), + }, + buttons = buttons, + layout = wibox.layout.flex.horizontal, + }, + { -- Right + awful.titlebar.widget.floatingbutton(c), + awful.titlebar.widget.maximizedbutton(c), + awful.titlebar.widget.stickybutton(c), + awful.titlebar.widget.ontopbutton(c), + awful.titlebar.widget.closebutton(c), + layout = wibox.layout.fixed.horizontal(), + }, + layout = wibox.layout.align.horizontal, + }) end) -- Enable sloppy focus, so that focus follows mouse. -client.connect_signal("mouse::enter", function(c) - c:emit_signal("request::activate", "mouse_enter", {raise = vi_focus}) +client.connect_signal('mouse::enter', function(c) + c:emit_signal('request::activate', 'mouse_enter', { raise = vi_focus }) 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) +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) -- }}} diff --git a/awesome/stylua.toml b/awesome/stylua.toml new file mode 100644 index 0000000..361f1af --- /dev/null +++ b/awesome/stylua.toml @@ -0,0 +1,2 @@ +quote_style = "AutoPreferSingle" + diff --git a/awesome/theme.lua b/awesome/theme.lua index 6cb17ba..5ee395a 100644 --- a/awesome/theme.lua +++ b/awesome/theme.lua @@ -5,136 +5,142 @@ --]] -local gears = require("gears") -local lain = require("lain") -local awful = require("awful") -local wibox = require("wibox") -local dpi = require("beautiful.xresources").apply_dpi +local gears = require('gears') +local lain = require('lain') +local awful = require('awful') +local wibox = require('wibox') +local dpi = require('beautiful.xresources').apply_dpi local os = os local my_table = awful.util.table or gears.table -- 4.{0,1} compatibility -local theme = {} -theme.confdir = os.getenv("HOME") .. "/.config/awesome/" -theme.wallpaper = os.getenv("HOME") .. "/.config/awesome/wall.png" -theme.font = "Terminus 8" -theme.menu_bg_normal = "#000000" -theme.menu_bg_focus = "#000000" -theme.bg_normal = "#000000" -theme.bg_focus = "#000000" -theme.bg_urgent = "#000000" -theme.fg_normal = "#aaaaaa" -theme.fg_focus = "#ff8c00" -theme.fg_urgent = "#af1d18" -theme.fg_minimize = "#ffffff" -theme.border_width = dpi(1) -theme.border_normal = "#1c2022" -theme.border_focus = "#606060" -theme.border_marked = "#3ca4d8" -theme.menu_border_width = 0 -theme.menu_width = dpi(130) -theme.menu_submenu_icon = theme.confdir .. "/icons/submenu.png" -theme.menu_fg_normal = "#aaaaaa" -theme.menu_fg_focus = "#ff8c00" -theme.menu_bg_normal = "#050505dd" -theme.menu_bg_focus = "#050505dd" -theme.widget_temp = theme.confdir .. "/icons/temp.png" -theme.widget_uptime = theme.confdir .. "/icons/ac.png" -theme.widget_cpu = theme.confdir .. "/icons/cpu.png" -theme.widget_weather = theme.confdir .. "/icons/dish.png" -theme.widget_fs = theme.confdir .. "/icons/fs.png" -theme.widget_mem = theme.confdir .. "/icons/mem.png" -theme.widget_note = theme.confdir .. "/icons/note.png" -theme.widget_note_on = theme.confdir .. "/icons/note_on.png" -theme.widget_netdown = theme.confdir .. "/icons/net_down.png" -theme.widget_netup = theme.confdir .. "/icons/net_up.png" -theme.widget_mail = theme.confdir .. "/icons/mail.png" -theme.widget_batt = theme.confdir .. "/icons/bat.png" -theme.widget_clock = theme.confdir .. "/icons/clock.png" -theme.widget_vol = theme.confdir .. "/icons/spkr.png" -theme.taglist_squares_sel = theme.confdir .. "/icons/square_a.png" -theme.taglist_squares_unsel = theme.confdir .. "/icons/square_b.png" -theme.tasklist_plain_task_name = true -theme.tasklist_disable_icon = true -theme.useless_gap = 0 -theme.layout_tile = theme.confdir .. "/icons/tile.png" -theme.layout_tilegaps = theme.confdir .. "/icons/tilegaps.png" -theme.layout_tileleft = theme.confdir .. "/icons/tileleft.png" -theme.layout_tilebottom = theme.confdir .. "/icons/tilebottom.png" -theme.layout_tiletop = theme.confdir .. "/icons/tiletop.png" -theme.layout_fairv = theme.confdir .. "/icons/fairv.png" -theme.layout_fairh = theme.confdir .. "/icons/fairh.png" -theme.layout_spiral = theme.confdir .. "/icons/spiral.png" -theme.layout_dwindle = theme.confdir .. "/icons/dwindle.png" -theme.layout_max = theme.confdir .. "/icons/max.png" -theme.layout_fullscreen = theme.confdir .. "/icons/fullscreen.png" -theme.layout_magnifier = theme.confdir .. "/icons/magnifier.png" -theme.layout_floating = theme.confdir .. "/icons/floating.png" -theme.titlebar_close_button_normal = theme.confdir .. "/icons/titlebar/close_normal.png" -theme.titlebar_close_button_focus = theme.confdir .. "/icons/titlebar/close_focus.png" -theme.titlebar_minimize_button_normal = theme.confdir .. "/icons/titlebar/minimize_normal.png" -theme.titlebar_minimize_button_focus = theme.confdir .. "/icons/titlebar/minimize_focus.png" -theme.titlebar_ontop_button_normal_inactive = theme.confdir .. "/icons/titlebar/ontop_normal_inactive.png" -theme.titlebar_ontop_button_focus_inactive = theme.confdir .. "/icons/titlebar/ontop_focus_inactive.png" -theme.titlebar_ontop_button_normal_active = theme.confdir .. "/icons/titlebar/ontop_normal_active.png" -theme.titlebar_ontop_button_focus_active = theme.confdir .. "/icons/titlebar/ontop_focus_active.png" -theme.titlebar_sticky_button_normal_inactive = theme.confdir .. "/icons/titlebar/sticky_normal_inactive.png" -theme.titlebar_sticky_button_focus_inactive = theme.confdir .. "/icons/titlebar/sticky_focus_inactive.png" -theme.titlebar_sticky_button_normal_active = theme.confdir .. "/icons/titlebar/sticky_normal_active.png" -theme.titlebar_sticky_button_focus_active = theme.confdir .. "/icons/titlebar/sticky_focus_active.png" -theme.titlebar_floating_button_normal_inactive = theme.confdir .. "/icons/titlebar/floating_normal_inactive.png" -theme.titlebar_floating_button_focus_inactive = theme.confdir .. "/icons/titlebar/floating_focus_inactive.png" -theme.titlebar_floating_button_normal_active = theme.confdir .. "/icons/titlebar/floating_normal_active.png" -theme.titlebar_floating_button_focus_active = theme.confdir .. "/icons/titlebar/floating_focus_active.png" -theme.titlebar_maximized_button_normal_inactive = theme.confdir .. "/icons/titlebar/maximized_normal_inactive.png" -theme.titlebar_maximized_button_focus_inactive = theme.confdir .. "/icons/titlebar/maximized_focus_inactive.png" -theme.titlebar_maximized_button_normal_active = theme.confdir .. "/icons/titlebar/maximized_normal_active.png" -theme.titlebar_maximized_button_focus_active = theme.confdir .. "/icons/titlebar/maximized_focus_active.png" +local theme = {} +theme.confdir = os.getenv('HOME') .. '/.config/awesome/' +theme.wallpaper = os.getenv('HOME') .. '/.config/awesome/wall.png' +theme.font = 'Terminus 8' +theme.menu_bg_normal = '#000000' +theme.menu_bg_focus = '#000000' +theme.bg_normal = '#000000' +theme.bg_focus = '#000000' +theme.bg_urgent = '#000000' +theme.fg_normal = '#aaaaaa' +theme.fg_focus = '#ff8c00' +theme.fg_urgent = '#af1d18' +theme.fg_minimize = '#ffffff' +theme.border_width = dpi(1) +theme.border_normal = '#1c2022' +theme.border_focus = '#606060' +theme.border_marked = '#3ca4d8' +theme.menu_border_width = 0 +theme.menu_width = dpi(130) +theme.menu_submenu_icon = theme.confdir .. '/icons/submenu.png' +theme.menu_fg_normal = '#aaaaaa' +theme.menu_fg_focus = '#ff8c00' +theme.menu_bg_normal = '#050505dd' +theme.menu_bg_focus = '#050505dd' +theme.widget_temp = theme.confdir .. '/icons/temp.png' +theme.widget_uptime = theme.confdir .. '/icons/ac.png' +theme.widget_cpu = theme.confdir .. '/icons/cpu.png' +theme.widget_weather = theme.confdir .. '/icons/dish.png' +theme.widget_fs = theme.confdir .. '/icons/fs.png' +theme.widget_mem = theme.confdir .. '/icons/mem.png' +theme.widget_note = theme.confdir .. '/icons/note.png' +theme.widget_note_on = theme.confdir .. '/icons/note_on.png' +theme.widget_netdown = theme.confdir .. '/icons/net_down.png' +theme.widget_netup = theme.confdir .. '/icons/net_up.png' +theme.widget_mail = theme.confdir .. '/icons/mail.png' +theme.widget_batt = theme.confdir .. '/icons/bat.png' +theme.widget_clock = theme.confdir .. '/icons/clock.png' +theme.widget_vol = theme.confdir .. '/icons/spkr.png' +theme.taglist_squares_sel = theme.confdir .. '/icons/square_a.png' +theme.taglist_squares_unsel = theme.confdir .. '/icons/square_b.png' +theme.tasklist_plain_task_name = true +theme.tasklist_disable_icon = true +theme.useless_gap = 0 +theme.layout_tile = theme.confdir .. '/icons/tile.png' +theme.layout_tilegaps = theme.confdir .. '/icons/tilegaps.png' +theme.layout_tileleft = theme.confdir .. '/icons/tileleft.png' +theme.layout_tilebottom = theme.confdir .. '/icons/tilebottom.png' +theme.layout_tiletop = theme.confdir .. '/icons/tiletop.png' +theme.layout_fairv = theme.confdir .. '/icons/fairv.png' +theme.layout_fairh = theme.confdir .. '/icons/fairh.png' +theme.layout_spiral = theme.confdir .. '/icons/spiral.png' +theme.layout_dwindle = theme.confdir .. '/icons/dwindle.png' +theme.layout_max = theme.confdir .. '/icons/max.png' +theme.layout_fullscreen = theme.confdir .. '/icons/fullscreen.png' +theme.layout_magnifier = theme.confdir .. '/icons/magnifier.png' +theme.layout_floating = theme.confdir .. '/icons/floating.png' +theme.titlebar_close_button_normal = theme.confdir .. '/icons/titlebar/close_normal.png' +theme.titlebar_close_button_focus = theme.confdir .. '/icons/titlebar/close_focus.png' +theme.titlebar_minimize_button_normal = theme.confdir .. '/icons/titlebar/minimize_normal.png' +theme.titlebar_minimize_button_focus = theme.confdir .. '/icons/titlebar/minimize_focus.png' +theme.titlebar_ontop_button_normal_inactive = theme.confdir .. '/icons/titlebar/ontop_normal_inactive.png' +theme.titlebar_ontop_button_focus_inactive = theme.confdir .. '/icons/titlebar/ontop_focus_inactive.png' +theme.titlebar_ontop_button_normal_active = theme.confdir .. '/icons/titlebar/ontop_normal_active.png' +theme.titlebar_ontop_button_focus_active = theme.confdir .. '/icons/titlebar/ontop_focus_active.png' +theme.titlebar_sticky_button_normal_inactive = theme.confdir .. '/icons/titlebar/sticky_normal_inactive.png' +theme.titlebar_sticky_button_focus_inactive = theme.confdir .. '/icons/titlebar/sticky_focus_inactive.png' +theme.titlebar_sticky_button_normal_active = theme.confdir .. '/icons/titlebar/sticky_normal_active.png' +theme.titlebar_sticky_button_focus_active = theme.confdir .. '/icons/titlebar/sticky_focus_active.png' +theme.titlebar_floating_button_normal_inactive = theme.confdir .. '/icons/titlebar/floating_normal_inactive.png' +theme.titlebar_floating_button_focus_inactive = theme.confdir .. '/icons/titlebar/floating_focus_inactive.png' +theme.titlebar_floating_button_normal_active = theme.confdir .. '/icons/titlebar/floating_normal_active.png' +theme.titlebar_floating_button_focus_active = theme.confdir .. '/icons/titlebar/floating_focus_active.png' +theme.titlebar_maximized_button_normal_inactive = theme.confdir .. '/icons/titlebar/maximized_normal_inactive.png' +theme.titlebar_maximized_button_focus_inactive = theme.confdir .. '/icons/titlebar/maximized_focus_inactive.png' +theme.titlebar_maximized_button_normal_active = theme.confdir .. '/icons/titlebar/maximized_normal_active.png' +theme.titlebar_maximized_button_focus_active = theme.confdir .. '/icons/titlebar/maximized_focus_active.png' local markup = lain.util.markup -- Textclock -os.setlocale(os.getenv("LANG")) -- to localize the clock +os.setlocale(os.getenv('LANG')) -- to localize the clock local clockicon = wibox.widget.imagebox(theme.widget_clock) -local mytextclock = wibox.widget.textclock( - markup("#7788af", "%A %d %B ") .. markup("#ab7367", ">") .. markup("#de5e1e", " %H:%M ") -) +local mytextclock = + wibox.widget.textclock(markup('#7788af', '%A %d %B ') .. markup('#ab7367', '>') .. markup('#de5e1e', ' %H:%M ')) mytextclock.font = theme.font -- Calendar theme.cal = lain.widget.cal({ - attach_to = { mytextclock }, - notification_preset = { - font = "Monospace 10", - fg = theme.fg_normal, - bg = theme.bg_normal - } + attach_to = { mytextclock }, + notification_preset = { + font = 'Monospace 10', + fg = theme.fg_normal, + bg = theme.bg_normal, + }, }) -- / fs local fsicon = wibox.widget.imagebox(theme.widget_fs) theme.fs = lain.widget.fs({ - notification_preset = { font = "Monospace 10", fg = theme.fg_normal }, - settings = function() - -- luacheck: max line length 150, globals widget fs_now - widget:set_markup(markup.fontfg(theme.font, "#80d9d8", - fs_now["/"].percentage .. "% (" .. string.format("%.3f", fs_now["/"].free) .. " " .. fs_now["/"].units .. " left)") - ) - end + notification_preset = { font = 'Monospace 10', fg = theme.fg_normal }, + settings = function() + -- luacheck: max line length 150, globals widget fs_now + widget:set_markup( + markup.fontfg( + theme.font, + '#80d9d8', + fs_now['/'].percentage + .. '% (' + .. string.format('%.3f', fs_now['/'].free) + .. ' ' + .. fs_now['/'].units + .. ' left)' + ) + ) + end, }) -theme.fs.widget:buttons(gears.table.join( - awful.button({}, 1, function() - awful.spawn("Thunar") - end) -)) +theme.fs.widget:buttons(gears.table.join(awful.button({}, 1, function() + awful.spawn('Thunar') +end))) -- CPU local cpuicon = wibox.widget.imagebox(theme.widget_cpu) local cpu = lain.widget.cpu({ - settings = function() - -- luacheck: globals widget cpu_now - widget:set_markup(markup.fontfg(theme.font, "#e33a6e", cpu_now.usage .. "% ")) - end + settings = function() + -- luacheck: globals widget cpu_now + widget:set_markup(markup.fontfg(theme.font, '#e33a6e', cpu_now.usage .. '% ')) + end, }) -- Coretemp @@ -143,7 +149,8 @@ local temp = lain.widget.temp({ settings = function() widget:set_markup(markup.fontfg(theme.font, "#f1af5f", coretemp_now .. "°C ")) end -})]]-- +})]] +-- -- Battery --[[local baticon = wibox.widget.imagebox(theme.widget_batt) @@ -157,29 +164,30 @@ local bat = lain.widget.bat({ widget:set_markup(markup.fontfg(theme.font, theme.fg_normal, perc .. " ")) end -})]]-- +})]] +-- -- ALSA volume local volicon = wibox.widget.imagebox(theme.widget_vol) theme.volume = lain.widget.alsa({ - settings = function() - -- luacheck: globals widget volume_now - if volume_now.status == "off" then - volume_now.level = volume_now.level .. "M" - end + settings = function() + -- luacheck: globals widget volume_now + if volume_now.status == 'off' then + volume_now.level = volume_now.level .. 'M' + end - widget:set_markup(markup.fontfg(theme.font, "#7493d2", volume_now.level .. "% ")) - end + widget:set_markup(markup.fontfg(theme.font, '#7493d2', volume_now.level .. '% ')) + end, }) theme.volume.widget:buttons(awful.util.table.join( - awful.button({}, 4, function() - os.execute(string.format("%s set %s 1%%+", theme.volume.cmd, theme.volume.channel)) - theme.volume.update() - end), - awful.button({}, 5, function() - os.execute(string.format("%s set %s 1%%-", theme.volume.cmd, theme.volume.channel)) - theme.volume.update() - end) + awful.button({}, 4, function() + os.execute(string.format('%s set %s 1%%+', theme.volume.cmd, theme.volume.channel)) + theme.volume.update() + end), + awful.button({}, 5, function() + os.execute(string.format('%s set %s 1%%-', theme.volume.cmd, theme.volume.channel)) + theme.volume.update() + end) )) -- Net @@ -187,20 +195,20 @@ local netdownicon = wibox.widget.imagebox(theme.widget_netdown) local netdowninfo = wibox.widget.textbox() local netupicon = wibox.widget.imagebox(theme.widget_netup) local netupinfo = lain.widget.net({ - settings = function() - -- luacheck: globals widget net_now - widget:set_markup(markup.fontfg(theme.font, "#e54c62", net_now.sent .. " ")) - netdowninfo:set_markup(markup.fontfg(theme.font, "#87af5f", net_now.received .. " ")) - end + settings = function() + -- luacheck: globals widget net_now + widget:set_markup(markup.fontfg(theme.font, '#e54c62', net_now.sent .. ' ')) + netdowninfo:set_markup(markup.fontfg(theme.font, '#87af5f', net_now.received .. ' ')) + end, }) -- MEM local memicon = wibox.widget.imagebox(theme.widget_mem) local memory = lain.widget.mem({ - settings = function() - -- luacheck: globals widget mem_now - widget:set_markup(markup.fontfg(theme.font, "#e0da37", mem_now.used .. "M ")) - end + settings = function() + -- luacheck: globals widget mem_now + widget:set_markup(markup.fontfg(theme.font, '#e0da37', mem_now.used .. 'M ')) + end, }) -- MPD @@ -231,84 +239,95 @@ theme.mpd = lain.widget.mpd({ widget:set_markup(markup.fontfg(theme.font, "#e54c62", artist) .. markup.fontfg(theme.font, "#b2b2b2", title)) end }) -]]-- +]] +-- function theme.at_screen_connect(s) - -- Quake application - s.quake = lain.util.quake({ app = awful.util.terminal }) + -- Quake application + s.quake = lain.util.quake({ app = awful.util.terminal }) - -- If wallpaper is a function, call it with the screen - local wallpaper = theme.wallpaper - if type(wallpaper) == "function" then - wallpaper = wallpaper(s) - end - gears.wallpaper.maximized(wallpaper, s, true) + -- If wallpaper is a function, call it with the screen + local wallpaper = theme.wallpaper + if type(wallpaper) == 'function' then + wallpaper = wallpaper(s) + end + gears.wallpaper.maximized(wallpaper, s, true) - -- Tags - awful.tag(awful.util.tagnames, s, awful.layout.layouts[1]) + -- Tags + awful.tag(awful.util.tagnames, s, awful.layout.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(my_table.join( - awful.button({}, 1, function () awful.layout.inc( 1) end), - awful.button({}, 2, function () awful.layout.set( awful.layout.layouts[1] ) end), - awful.button({}, 3, function () awful.layout.inc(-1) end), - awful.button({}, 4, function () awful.layout.inc( 1) end), - awful.button({}, 5, function () awful.layout.inc(-1) end))) - -- Create a taglist widget - s.mytaglist = awful.widget.taglist(s, awful.widget.taglist.filter.all, awful.util.taglist_buttons) + -- 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(my_table.join( + awful.button({}, 1, function() + awful.layout.inc(1) + end), + awful.button({}, 2, function() + awful.layout.set(awful.layout.layouts[1]) + end), + awful.button({}, 3, function() + awful.layout.inc(-1) + end), + awful.button({}, 4, function() + awful.layout.inc(1) + end), + awful.button({}, 5, function() + awful.layout.inc(-1) + end) + )) + -- Create a taglist widget + s.mytaglist = awful.widget.taglist(s, awful.widget.taglist.filter.all, awful.util.taglist_buttons) - -- Create a tasklist widget - s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, awful.util.tasklist_buttons) + -- Create a tasklist widget + s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, awful.util.tasklist_buttons) - -- Create the wibox - s.mywibox = awful.wibar( - { position = "top", screen = s, height = dpi(19), bg = theme.bg_normal, fg = theme.fg_normal } - ) + -- Create the wibox + s.mywibox = + awful.wibar({ position = 'top', screen = s, height = dpi(19), bg = theme.bg_normal, fg = theme.fg_normal }) - -- Add widgets to the wibox - s.mywibox:setup { - layout = wibox.layout.align.horizontal, - { -- Left widgets - layout = wibox.layout.fixed.horizontal, - s.mylayoutbox, - s.mytaglist, - s.mypromptbox, - --mpdicon, - --theme.mpd.widget, - }, - --s.mytasklist, -- Middle widget - nil, - { -- Right widgets - layout = wibox.layout.fixed.horizontal, - wibox.widget.systray(), - --mailicon, - --theme.mail.widget, - netdownicon, - netdowninfo, - netupicon, - netupinfo.widget, - volicon, - theme.volume.widget, - memicon, - memory.widget, - cpuicon, - cpu.widget, - fsicon, - theme.fs.widget, - --weathericon, - --theme.weather.widget, - --tempicon, - --temp.widget, - --baticon, - --bat.widget, - clockicon, - mytextclock, - }, - } + -- Add widgets to the wibox + s.mywibox:setup({ + layout = wibox.layout.align.horizontal, + { -- Left widgets + layout = wibox.layout.fixed.horizontal, + s.mylayoutbox, + s.mytaglist, + s.mypromptbox, + --mpdicon, + --theme.mpd.widget, + }, + --s.mytasklist, -- Middle widget + nil, + { -- Right widgets + layout = wibox.layout.fixed.horizontal, + wibox.widget.systray(), + --mailicon, + --theme.mail.widget, + netdownicon, + netdowninfo, + netupicon, + netupinfo.widget, + volicon, + theme.volume.widget, + memicon, + memory.widget, + cpuicon, + cpu.widget, + fsicon, + theme.fs.widget, + --weathericon, + --theme.weather.widget, + --tempicon, + --temp.widget, + --baticon, + --bat.widget, + clockicon, + mytextclock, + }, + }) end return theme