From e7b3bd7b5beaa32a9b5e0c28df6a7802c35fcec6 Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Sun, 3 Jan 2021 14:35:06 +0530 Subject: Making XMonad better again --- archive/awesome/rc.lua | 569 ------------------------------------------------- 1 file changed, 569 deletions(-) delete mode 100755 archive/awesome/rc.lua (limited to 'archive/awesome/rc.lua') diff --git a/archive/awesome/rc.lua b/archive/awesome/rc.lua deleted file mode 100755 index 3436c68a..00000000 --- a/archive/awesome/rc.lua +++ /dev/null @@ -1,569 +0,0 @@ -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 menubar = require("menubar") - --- {{{ Error handling --- Check if awesome encountered an error during startup and fell back to --- another config (This code will only ever execute for the fallback config) -if awesome.startup_errors then - naughty.notify({ preset = naughty.config.presets.critical, - title = "WHO FUCKED UP rc.lua", - 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 = "Shit's fucked dude", - text = tostring(err) }) - in_error = false - end) -end --- }}} - --- actual config starts here --- Themes define colours, icons, font and wallpapers. -beautiful.init(gears.filesystem.get_configuration_dir() .. "theme.lua") - --- variable declarations -modkey = "Mod4" - --- app defaults -terminal = "st" -launcher = "run_dmenu" - --- terminal apps -editor = "nvim" -termFileManager = "ranger" -sysMonitor = "bashtop" --- terminal app commands -editor_cmd = terminal .. " -e " .. editor -termFileManager_cmd = terminal .. " -e " .. termFileManager -sysMonitor_cmd = terminal .. " -e " .. sysMonitor - --- gui apps -fileManager = "pcmanfm" -browser = "firefox" -emailClient = "thunderbird" - --- system commands -screenshot = "scrot /zt/Screenshots/Screenshot-%Y-%d-%m--%T.png" -screenLock = "betterlockscreen -l -t 'pee pee poo poo'" - --- volume commands -volumeUp = "pulseaudio-ctl up" -volumeDown = "pulseaudio-ctl down" -toggleMute = "pulseaudio-ctl mute" - --- Table of layouts to cover with awful.layout.inc, order matters. -awful.layout.layouts = { - awful.layout.suit.fair, - awful.layout.suit.spiral.dwindle, - awful.layout.suit.max, - awful.layout.suit.magnifier, - awful.layout.suit.floating, - awful.layout.suit.tile.left, - awful.layout.suit.fair.horizontal, --- awful.layout.suit.max.fullscreen, --- awful.layout.suit.corner.nw, --- awful.layout.suit.tile, --- awful.layout.suit.tile.bottom, --- awful.layout.suit.tile.top, --- awful.layout.suit.spiral, --- awful.layout.suit.corner.ne, --- awful.layout.suit.corner.sw, --- awful.layout.suit.corner.se, -} - --- Keyboard map indicator and switcher -mykeyboardlayout = awful.widget.keyboardlayout() - --- {{{ 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)) - -local function set_wallpaper(s) - -- Wallpaper - if beautiful.wallpaper then - local wallpaper = beautiful.wallpaper - -- If wallpaper is a function, call it with the screen - if type(wallpaper) == "function" then - wallpaper = wallpaper(s) - end - gears.wallpaper.maximized(wallpaper, s, true) - end -end - --- Re-set wallpaper when a screen's geometry changes (e.g. different resolution) -screen.connect_signal("property::geometry", set_wallpaper) - -awful.screen.connect_for_each_screen(function(s) - -- Wallpaper --- set_wallpaper(s) - - -- Each screen has its own tag table. - awful.tag({ "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" }, 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.minimizedcurrenttags, - buttons = tasklist_buttons - } - - s.showcurrenttag = awful.widget.tasklist { - screen = s, - filter = awful.widget.tasklist.filter.focused, - buttons = tasklist_buttons - } - - -- Create the wibox - s.mywibox = awful.wibar({ position = "bottom", screen = s }) - - -- Add widgets to the wibox - s.mywibox:setup { - layout = wibox.layout.align.horizontal, - { -- Left widgets - layout = wibox.layout.fixed.horizontal, - mylauncher, - wibox.widget.systray(), - s.mytaglist, - s.mypromptbox, - }, - { -- Middle widgets - layout = wibox.layout.flex.horizontal, - s.showcurrenttag, - }, --- { -- minimized tasks --- layout = wibox.layout.fixed.horizontal, --- s.mytasklist, --- }, - { -- Right widgets - layout = wibox.layout.fixed.horizontal, - s.mytasklist, - mykeyboardlayout, - mytextclock, - s.mylayoutbox, - }, - } -end) --- }}} - --- {{{ Mouse bindings -root.buttons(gears.table.join( - awful.button({ }, 3, function() sh("nitrogen") end), - awful.button({ }, 5, awful.tag.viewnext), - awful.button({ }, 4, awful.tag.viewprev) -)) --- }}} - --- my custom keybindings to spawn --- apps or execute scripts and shit -myKeys = gears.table.join( - awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end), - awful.key({ modkey, }, "p", function () awful.spawn(launcher) end), - awful.key({ modkey, }, "q", function () awful.spawn(screenLock) end), - awful.key({ modkey, "Shift" }, "Return", function () awful.spawn(screenshot) end), - - -- gui apps - awful.key({ modkey, }, "i", function () awful.spawn(browser) end), - awful.key({ modkey, }, "s", function () awful.spawn(fileManager) end), - awful.key({ modkey, }, "w", function () awful.spawn("nitrogen") end), - awful.key({ modkey, }, "y", function () awful.spawn("gimp") end), - awful.key({ modkey, }, "e", function () awful.spawn(emailClient) end), - - -- terminal apps - awful.key({ modkey, }, "r", function () awful.spawn(termFileManager_cmd) end), - awful.key({ modkey, }, "a", function () awful.spawn(sysMonitor_cmd) end), - awful.key({ modkey, "Shift", }, "w", function () awful.spawn("nitrogen --restore") end), - - -- volume controls - awful.key({ "Mod1", }, "j", function () awful.spawn(volumeDown) end), - awful.key({ "Mod1", }, "k", function () awful.spawn(volumeUp) end), - awful.key({ "Mod1", }, "m", function () awful.spawn(toggleMute) end), - awful.key({ "Mod1", }, "n", function () awful.spawn("pavucontrol") end) -) - --- for window navigation with hjkl --- i.e vim movement keys -vimNavKeys = gears.table.join( - awful.key({ modkey, }, "j", function () awful.client.focus.bydirection("down") - if client.focus then client.focus:raise() end - end), - awful.key({ modkey, }, "k", function () awful.client.focus.bydirection("up") - if client.focus then client.focus:raise() end - end), - awful.key({ modkey, }, "h", function () awful.client.focus.bydirection("left") - if client.focus then client.focus:raise() end - end), - awful.key({ modkey, }, "l", function () awful.client.focus.bydirection("right") - if client.focus then client.focus:raise() end - end) -) - --- for manipulating layout with hjkl --- i.e move windows with vim movement keys -vimLayoutKeys = gears.table.join( - awful.key({ modkey, "Shift", }, "h", function () awful.client.swap.bydirection("left") end), - awful.key({ modkey, "Shift", }, "j", function () awful.client.swap.bydirection("down") end), - awful.key({ modkey, "Shift", }, "k", function () awful.client.swap.bydirection("up") end), - awful.key({ modkey, "Shift", }, "l", function () awful.client.swap.bydirection("right") end) -) - -layoutKeys = gears.table.join( - -- cycle through layouts - awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end), - - -- I need these to resize window in magnifier layout - -- increase master width factor - awful.key({ modkey, }, "[", function () awful.tag.incmwfact( 0.05) end), - -- decrease master width factor - awful.key({ modkey, }, "]", function () awful.tag.incmwfact(-0.05) end) -) - --- keybindings to navigate b/w monitors --- I don't use them -multiMonitorNavKeys = gears.table.join( - -- focus next screen - awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end), - -- focus preious screen - awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end) -) - -tagKeys = gears.table.join( - -- cycle tabs using h and l - awful.key({ "Mod1", }, "h", awful.tag.viewprev), - awful.key({ "Mod1", }, "l", awful.tag.viewnext), - -- go back to last tag - awful.key({ "Mod1", }, "Tab", awful.tag.history.restore), - - -- view scrcpy tag - awful.key({ modkey, }, "o", function() awful.tag.viewtoggle(phoneTag) end), - - -- switch to extra tags - awful.key({ modkey, }, "-", function() awful.tag.viewonly(tag11) end), - awful.key({ modkey, }, "=", function() awful.tag.viewonly(tag12) end), - - -- view (copy) extra tags - awful.key({ "Mod1", }, "-", function() awful.tag.viewtoggle(tag11) end), - awful.key({ "Mod1", }, "=", function() awful.tag.viewtoggle(tag12) end), - - -- move client to extra tags - awful.key({ modkey, "Shift", }, "-", function() - if client.focus then - client.focus:move_to_tag(tag11) - end - end), - awful.key({ modkey, "Shift", }, "=", function() - if client.focus then - client.focus:move_to_tag(tag12) - end - end), - - -- toggle extra tags on client - awful.key({ "Mod1", "Shift", }, "-", function() - if client.focus then - client.focus:toggle_tag(tag11) - end - end), - awful.key({ "Mod1", "Shift", }, "=", function() - if client.focus then - client.focus:toggle_tag(tag12) - end - end), - - -- modify gaps - awful.key({ "Mod1", "Shift", }, "j", function() - beautiful.useless_gap = beautiful.useless_gap - 1 - end), - awful.key({ "Mod1", "Shift", }, "k", function() - beautiful.useless_gap = beautiful.useless_gap + 1 - end) -) - --- keybindings to handle clients --- i.e minimizing, maximizing, hiding, closing windows -clientkeys = gears.table.join( - -- kill client - awful.key({ "Mod1", }, "w", function (c) c:kill() end), - - -- toggle fulscreen - awful.key({ modkey, }, "f", function (c) - c.fullscreen = not c.fullscreen - c:raise() end), - - -- minimize focused client - awful.key({ modkey, }, "m", - function (c) c.minimized = true end), - -- unminimize clients - -- somehow this doesn't work if every - -- client on current tag is minimized - awful.key({ modkey, }, "g", - function () - local c = awful.client.restore() - -- Focus restored client - if c then - c:emit_signal( - "request::activate", "key.unminimize", {raise = true} - ) - end - end), - - -- float/unfloat window - awful.key({ modkey, }, "d", awful.client.floating.toggle), - -- keep window on top - awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end), - - -- (un)maximize client - awful.key({ modkey, }, "n", function (c) - c.maximized = not c.maximized - c:raise() end), - -- (un)maximize client vertically - awful.key({ modkey, }, "v", function (c) - c.maximized_vertical = not c.maximized_vertical - c:raise() end), - -- (un)maximize client horizontally - awful.key({ modkey, }, "b", function (c) - c.maximized_horizontal = not c.maximized_horizontal - c:raise() end), - - -- jump to urgent client - awful.key({ modkey, }, "u", awful.client.urgent.jumpto), - - -- focus previous client - awful.key({ modkey, }, "Tab", - function () - awful.client.focus.history.previous() - if client.focus then - client.focus:raise() - end - end), - - -- move client to master - awful.key({ "Mod1", }, "Return", function (c) c:swap(awful.client.getmaster()) end) -) - -awesomeKeys = gears.table.join( - awful.key({ modkey, "Control" }, "r", awesome.restart), - awful.key({ modkey, "Control" }, "q", awesome.quit) -) - -globalkeys = gears.table.join( - awesomeKeys, - vimNavKeys, - multiMonitorNavKeys, - vimLayoutKeys, - layoutKeys, - tagKeys, - myKeys -) - --- 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, 10 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), - -- Toggle tag display. - awful.key({ "Mod1" }, "#" .. i + 9, - function () - local screen = awful.screen.focused() - local tag = screen.tags[i] - if tag then - awful.tag.viewtoggle(tag) - end - end), - -- 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), - -- Toggle tag on focused client. - awful.key({ "Mod1", "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) - ) -end - --- extra tag functionality --- not packed inside a function --- because I'm bad at lua --- these variables need to be global - -tag11 = awful.tag.add("十一", { - screen = awful.screen.focused(), - layout = awful.layout.suit.floating, -}) -tag12 = awful.tag.add("十二", { - screen = awful.screen.focused(), - layout = awful.layout.suit.floating, -}) - --- this tag contains scrcpy -phoneTag = awful.tag.add("携帯", { - screen = awful.screen.focused(), - layout = awful.layout.suit.floating -}) - - - -clientbuttons = gears.table.join( - 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) - --- {{{ 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, - titlebars_enabled = false, - keys = clientkeys, - buttons = clientbuttons, - screen = awful.screen.preferred, - placement = awful.placement.no_overlap+awful.placement.no_offscreen - } - }, - - -- scrcpy properties - { rule = { name = "Motorola One Power" }, - properties = { - floating = true, - ontop = true, - screen = 1, - tag = phoneTag - },}, - - -- Set Firefox to always map on the tag named "2" on screen 1. - { rule = { class = "Firefox" }, - properties = { screen = 1, tag = "2" }, - }, -} --- }}} - --- {{{ 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) - --- 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) --- }}} - --- autostarts -awful.spawn.with_shell("autostart") -- cgit v1.2.3