|
3 lat temu | |
---|---|---|
.. | ||
DT_readme.org | 3 lat temu | |
README.org | 3 lat temu | |
rc.lua | 3 lat temu | |
rc.lua_original | 3 lat temu |
execute this command for lain library git clone https://github.com/lcpz/lain.git ~/.config/awesome/lain
#+begin_src lua -- 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")
-- Standard awesome library local gears = require("gears") local awful = require("awful") 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 hotkeys_popup = require("awful.hotkeys_popup") -- Enable hotkeys help widget for VIM and other apps -- when client with a matching name is opened: require("awful.hotkeys_popup.keys")
-- Load Debian menu entries local debian = require("debian.menu") local has_fdo, freedesktop = pcall(require, "freedesktop") #+end_src #+begin_src lua -- {{{ 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 = tostring(err) }) in_error = false end) end -- }}} #+end_src It's nice to assign values to stuff that you will use more than once in the config. Setting values for things like font, terminal and editor means you only have to change the value here to make changes globally. #+BEGIN_SRC lua -- {{{ Variable definitions -- Themes define colours, icons, font and wallpapers. beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua")
-- This is used later as the default terminal and editor to run. terminal = "kitty" editor = os.getenv("EDITOR") or "nvim" editor_cmd = terminal .. " -e " .. editor editorgui = "emacsclient -a '' -c" browser1 = "palemoon" browser2 = "luakit" filemanager = "rox" mailclient = "kitty -e aerc" mediaplayer = "mpv" scrlocker = "slock"
-- 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" altkey = "Mod1"
-- Table of layouts to cover with awful.layout.inc, order matters. awful.layout.layouts = { -- awful.layout.suit.floating, awful.layout.suit.tile, -- awful.layout.suit.tile.left, -- awful.layout.suit.tile.bottom, -- awful.layout.suit.tile.top, -- awful.layout.suit.fair, -- awful.layout.suit.fair.horizontal, awful.layout.suit.spiral, -- awful.layout.suit.spiral.dwindle, awful.layout.suit.max, -- awful.layout.suit.max.fullscreen, awful.layout.suit.magnifier, awful.layout.suit.corner.nw, -- awful.layout.suit.corner.ne, -- awful.layout.suit.corner.sw, -- awful.layout.suit.corner.se, } -- }}} #+END_SRC #+begin_src lua -- {{{ Menu -- Create a launcher widget and a main menu myawesomemenu = { { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end }, { "manual", terminal .. " -e man awesome" }, { "edit config", editor_cmd .. " " .. awesome.conffile }, { "restart", awesome.restart }, { "quit", function() awesome.quit() end }, }
local menu_awesome = { "awesome", myawesomemenu, beautiful.awesome_icon } local menu_terminal = { "open terminal", terminal }
if has_fdo then mymainmenu = freedesktop.menu.build({ before = { menu_awesome }, after = { menu_terminal } }) else mymainmenu = awful.menu({ items = { menu_awesome, { "Debian", debian.menu.Debian_menu.Debian }, menu_terminal, } }) end
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu })
-- Menubar configuration menubar.utils.terminal = terminal -- Set the terminal for applications that require it -- }}}
-- Keyboard map indicator and switcher mykeyboardlayout = awful.widget.keyboardlayout() #+end_src #+begin_src lua -- {{{ Wibar -- Create a textclock widget mytextclock = wibox.widget.textclock()
-- Create a wibox for each screen and add it local taglist_buttons = gears.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 = gears.table.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.screen.connect_for_each_screen(function(s) -- Each screen has its own tag table. awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
-- Create a promptbox for each screen s.mypromptbox = awful.widget.prompt() -- Create an imagebox widget which will contain an icon indicating which layout we're using. -- We need one layoutbox per screen. s.mylayoutbox = awful.widget.layoutbox(s) s.mylayoutbox:buttons(gears.table.join( awful.button({ }, 1, function () awful.layout.inc( 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 { screen = s, filter = awful.widget.taglist.filter.all, buttons = taglist_buttons }
-- Create a tasklist widget s.mytasklist = awful.widget.tasklist { screen = s, filter = awful.widget.tasklist.filter.currenttags, buttons = tasklist_buttons }
-- Create the wibox s.mywibox = awful.wibar({ position = "top", screen = s })
-- Add widgets to the wibox s.mywibox:setup { layout = wibox.layout.align.horizontal, { -- Left widgets layout = wibox.layout.fixed.horizontal, mylauncher, s.mytaglist, s.mypromptbox, }, s.mytasklist, -- Middle widget { -- Right widgets layout = wibox.layout.fixed.horizontal, mykeyboardlayout, wibox.widget.systray(), mytextclock, s.mylayoutbox, }, } end) -- }}} #+end_src #+begin_src lua -- {{{ Mouse bindings root.buttons(gears.table.join( awful.button({ }, 3, function () mymainmenu:toggle() end), awful.button({ }, 4, awful.tag.viewnext), awful.button({ }, 5, awful.tag.viewprev) )) -- }}} #+end_src #+begin_src lua -- -- {{{ Key bindings -- globalkeys = gears.table.join( -- awful.key({ modkey, }, "s", hotkeys_popup.show_help, -- {description="show help", group="awesome"}), -- 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"}),
-- awful.key({ modkey, }, "j", -- function () -- awful.client.focus.byidx( 1) -- end, -- {description = "focus next by index", group = "client"} -- ), -- awful.key({ modkey, }, "k", -- function () -- awful.client.focus.byidx(-1) -- end, -- {description = "focus previous by index", group = "client"} -- ), -- awful.key({ modkey, }, "w", function () 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 () -- awful.client.focus.history.previous() -- if client.focus then -- client.focus:raise() -- end -- end, -- {description = "go back", group = "client"}),
-- -- 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, }, "l", function () awful.tag.incmwfact( 0.05) end, -- {description = "increase master width factor", group = "layout"}), -- awful.key({ modkey, }, "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"}),
-- -- 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"}), -- -- Menubar -- awful.key({ modkey }, "p", function() menubar.show() end, -- {description = "show the menubar", group = "launcher"}) -- )
-- clientkeys = gears.table.join( -- 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"}) -- )
-- -- 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 = gears.table.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 = gears.table.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) -- )
-- -- Set keys -- root.keys(globalkeys) -- -- }}} #+end_src
#+BEGIN_SRC lua globalkeys = gears.table.join( awful.key({ modkey, }, "/", hotkeys_popup.show_help, {description="show help", group="awesome"}), 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"}),
awful.key({ modkey, }, "j", function () awful.client.focus.byidx( 1) end, {description = "focus next by index", group = "client"} ), awful.key({ modkey, }, "k", function () awful.client.focus.byidx(-1) end, {description = "focus previous by index", group = "client"} ), awful.key({ modkey, }, "w", function () mymainmenu:show() end, {description = "show main menu", group = "awesome"}), #+END_SRC
#+BEGIN_SRC lua 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 () awful.client.focus.history.previous() if client.focus then client.focus:raise() end end, {description = "go back", group = "client"}), #+END_SRC #+begin_src lua awful.key({ modkey, "Shift" }, "Return", function () awful.spawn(terminal) end, {description = "open a terminal", group = "launcher"}), awful.key({ modkey, "Shift" }, "r", awesome.restart, {description = "reload awesome", group = "awesome"}), awful.key({ modkey, "Shift" }, "q", awesome.quit, {description = "quit awesome", group = "awesome"}),
awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end, {description = "increase master width factor", group = "layout"}), awful.key({ modkey, }, "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"}), #+end_src | Keybinding | Action | |------------+--------------| | a | pulsemixer | | d | stig | | t | tmux session | #+BEGIN_SRC lua awful.key({ altkey, "Control" }, "a", function () awful.util.spawn( terminal.." -e pulsemixer" ) end, {description = "ncpamixer" , group = "terminal apps" }), awful.key({ altkey, "Control" }, "d", function () awful.util.spawn( terminal.." -e stig" ) end, {description = "torrents" , group = "terminal apps" }), awful.key({ altkey, "Control" }, "t", function () awful.util.spawn( terminal.." -e tmux-session.sh" ) end, {description = "tmux session" , group = "terminal apps" }), #+END_SRC #+begin_src lua awful.key({ }, "Print", function () os.execute("screenshot.sh fullscreen") end, {description = "screenshot" , group = "terminal apps" }), -- awful.key({ modkey, "Control" }, "m", function () os.execute("screenshot.sh fullscreen") end, -- {description = "screenshot" , group = "terminal apps" }), awful.key({ modkey, "Control" }, "f", function () os.execute("screenshot.sh focused") end, {description = "screenshot" , group = "terminal apps" }), awful.key({ modkey, "Control" }, "s", function () os.execute("screenshot.sh selection") end, {description = "screenshot" , group = "terminal apps" }), awful.key({ modkey, "Control" }, "u", function () os.execute("screenshot.sh selection upload") end, {description = "screenshot" , group = "terminal apps" }), awful.key({ modkey, "Control" }, "c", function () os.execute("screenshot.sh clipboard") end, {description = "screenshot" , group = "terminal apps" }), awful.key({ modkey, "Control" }, "1", function () os.execute("screenshot.sh 16x9") end, {description = "screenshot" , group = "terminal apps" }), awful.key({ modkey, "Control" }, "4", function () os.execute("screenshot.sh 4x3") end, {description = "screenshot" , group = "terminal apps" }), #+end_src | Keybinding | Action | |------------+-------------| | e | emacs | | b | palemoon | | v | luaki | | f | rox | | g | steam | | y | freetube | | a | pavucontrol | #+BEGIN_SRC lua awful.key({ altkey, "Shift" }, "e", function () awful.util.spawn( editorgui ) end, {description = "gui text editor" , group = "gui apps" }), awful.key({ altkey, "Shift" }, "t", function () awful.util.spawn( "./Documents/ts3/ts3client_runscript.sh" ) end, {description = "gui text editor" , group = "gui apps" }), awful.key({ altkey, "Shift" }, "f", function () awful.util.spawn( filemanager ) end, {description = "file manager" , group = "gui apps" }), awful.key({ altkey, "Shift" }, "b", function () awful.util.spawn( browser1 ) end, {description = "palemoon web browser" , group = "gui apps" }), awful.key({ altkey, "Shift" }, "v", function () awful.util.spawn( browser2 ) end, {description = "luakit web browser" , group = "gui apps" }), awful.key({ altkey, "Shift" }, "g", function () awful.util.spawn( "steam" ) end, {description = "games" , group = "gui apps" }), awful.key({ altkey, "Shift" }, "y", function () awful.util.spawn( "freetube" ) end, {description = "youtube client" , group = "gui apps" }), awful.key({ altkey, "Shift" }, "a", function () awful.util.spawn( "pavucontrol" ) end, {description = "audio settings" , group = "gui apps" }), #+END_SRC
| Key | Action | |-----+-------------------------| | n | nitrogen next wallpaper | | s | redshift set night mode | | r | redshift reset | | F2 | cmus decreace volume | | F3 | cmus increace volume |
#+BEGIN_SRC lua awful.key({ altkey, }, "n", function () awful.util.spawn( "nitrogen --set-zoom-fill --random" ) end, {description = "ncpamixer" , group = "signal" }), awful.key({ altkey, }, "s", function () awful.util.spawn( "redshift -b 0.95 -O 5000K" ) end, {description = "set night mode" , group = "signal" }), awful.key({ altkey, }, "r", function () awful.util.spawn( "redshift -x" ) end, {description = "reset night mode" , group = "signal" }), awful.key({ altkey, }, "p", function () awful.util.spawn( "rofi -show drun -show-icons -sidebar-mode" ) end, {description = "reset night mode" , group = "signal" }), awful.key({ altkey, }, "F2", function () awful.util.spawn( "cmus-remote -v -2%" ) end, {description = "decrease song volume" , group = "music control" }), awful.key({ altkey, }, "F3", function () awful.util.spawn( "cmus-remote -v +2%" ) end, {description = "increase song volume" , group = "music control" }), #+END_SRC | Keybinding | Action | |----------------+------------------------| | XF86Tools | dunst show cover | | XF86AudioStop | cmus stop song | | XF86AudioPlay | cmus toggle play/pause | | XF86AudioPrev | cmus prev song | | XF86AudioNext | cmus next song | | XF86Calculator | rofi calculator | #+BEGIN_SRC lua awful.key({ }, "XF86AudioLowerVolume", function () os.execute("pactl set-sink-volume @DEFAULT_SINK@ -5%") end, {description = "audio", group = "function keys"}), awful.key({ }, "XF86AudioRaiseVolume", function () os.execute("pactl set-sink-volume @DEFAULT_SINK@ +1%") end, {description = "audio", group = "function keys"}), awful.key({ }, "XF86AudioMute", function () os.execute("pactl set-sink-mute @DEFAULT_SINK@ toggle") end, {description = "audio", group = "function keys"}), awful.key({ }, "XF86AudioMicMute", function () os.execute("pactl set-source-mute @DEFAULT_SINK@ toggle") end, {description = "audio", group = "function keys"}), awful.key({ }, "XF86Tools", function () os.execute("cmus-notify.sh") end, {description = "show coverart of song" , group = "music control" }), awful.key({ }, "XF86AudioStop", function () os.execute("cmus-remote -s") end, {description = "stop cmus" , group = "music control" }), awful.key({ }, "XF86AudioPrev", function () os.execute("cmus-remote -s") end, {description = "prev song" , group = "music control" }), awful.key({ }, "XF86AudioPlay", function () os.execute("cmus-remote -u") end, {description = "play/pause song" , group = "music control" }), awful.key({ }, "XF86AudioNext", function () os.execute("cmus-remote -n") end, {description = "next song" , group = "music control" }), awful.key({ }, "XF86MonBrightnessUp", function () os.execute("xbacklight -inc 1") end, {description = "+1%", group = "function keys"}), awful.key({ }, "XF86MonBrightnessDown", function () os.execute("xbacklight -dec 2") end, {description = "-2%", group = "function keys"}), awful.key({ }, "XF86Mail", function () awful.util.spawn(terminal .. " -e aerc") end, {description = "mail", group = "function keys"}), awful.key({ }, "XF86HomePage", function () awful.util.spawn("rox") end, {description = "file manager", group = "function keys"}), awful.key({ }, "XF86Explorer", function () awful.util.spawn(terminal .. " -e btop") end, {description = "process manager", group = "function keys"}), awful.key({ }, "XF86Calculator", function () awful.util.spawn("rofi -show calc -modi 'calc:qalc +u8 -nocurrencies'") end, {description = "rofi calculator", group = "function keys"}), #+END_SRC
#+BEGIN_SRC lua 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"}),
-- 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"}), -- Menubar awful.key({ modkey }, "p", function() menubar.show() end, {description = "show the menubar", group = "launcher"}) )
clientkeys = gears.table.join( awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen c:raise() end, {description = "toggle fullscreen", group = "client"}), awful.key({ modkey, }, "q", 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"}) )
-- 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 = gears.table.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 = gears.table.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) ) -- Set keys root.keys(globalkeys) #+END_SRC
Rules to apply to new clients (through the "manage" signal). #+BEGIN_SRC lua -- {{{ 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, raise = true, keys = clientkeys, buttons = clientbuttons, screen = awful.screen.preferred, placement = awful.placement.no_overlap+awful.placement.no_offscreen } },
-- 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", "Rox", "Rox-Filer", "Qalculate-gtk", "Lxappearance", "Pavucontrol", "Quodlibet", "Leafpad", "Xarchiver", "Steam", "SimpleScreenrecorder"},
-- 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. "ImageMagick", -- "Steam - News", -- "Friends List", }, role = { "AlarmWindow", -- Thunderbird's calendar. "ConfigManager", -- Thunderbird's about:config. "pop-up", -- e.g. Google Chrome's (detached) Developer Tools. "task_dialog", "About", } }, properties = { floating = true }},
-- Add titlebars to normal clients and dialogs { rule_any = {type = { "normal", "dialog" } }, properties = { titlebars_enabled = true } },
-- Set Firefox to always map on the tag named "2" on screen 1. -- { rule = { class = "Firefox" }, -- properties = { screen = 1, tag = "2" } },
-- TAG 2 { rule = { class = "Microsoft*" }, properties = { screen = 1, tag = "2" } },
-- TAG 4 { rule = { class = "Pale moon" }, properties = { screen = 1, tag = "4" } }, { rule = { class = "Luakit" }, properties = { screen = 1, tag = "4" } }, { rule = { class = "LibreWolf" }, properties = { screen = 1, tag = "4" } }, -- { rule = { class = "qutebrowser" }, -- properties = { screen = 1, tag = "4" } },
-- TAG 7 { rule = { class = "Steam" }, properties = { screen = 1, tag = "7" } }, { rule = { class = "Lutris" }, properties = { screen = 1, tag = "7" } },
-- TAG 8 { rule = { class = "TeamSpeak 3" }, properties = { screen = 1, tag = "8" } }, { rule = { class = "discord" }, properties = { screen = 1, tag = "8" } },
-- -- Set applications to be maximized at startup. -- -- find class or role via xprop command -- { rule = { class = editorgui }, -- properties = { maximized = true } },
{ rule = { class = "Gimp*", role = "gimp-image-window" }, properties = { maximized = true } },
-- { rule = { class = "inkscape" }, -- properties = { maximized = true } },
-- { rule = { class = mediaplayer }, -- properties = { maximized = true } },
} -- }}} #+END_SRC
#+begin_src lua -- {{{ 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
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) -- buttons for the titlebar local buttons = gears.table.join( awful.button({ }, 1, function() c:emit_signal("request::activate", "titlebar", {raise = true}) awful.mouse.client.move(c) end), awful.button({ }, 3, function() c:emit_signal("request::activate", "titlebar", {raise = true}) awful.mouse.client.resize(c) end) )
awful.titlebar(c) : 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 = false}) 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) -- }}} #+end_src #+BEGIN_SRC lua awful.spawn.with_shell("autostart.sh") awful.spawn.with_shell("tmux-session.sh") awful.spawn.with_shell("downloader.sh") #+END_SRC