diff --git a/awesome/layout/grid.lua b/awesome/components/layout/grid.lua similarity index 100% rename from awesome/layout/grid.lua rename to awesome/components/layout/grid.lua diff --git a/awesome/components/screen.lua b/awesome/components/screen.lua index a5fdc85..edca00a 100644 --- a/awesome/components/screen.lua +++ b/awesome/components/screen.lua @@ -1,6 +1,6 @@ local awful = require("awful") local lain = require("lain") -local grid = require("layout.grid") +local grid = require("components.layout.grid") local quake = lain.util.quake({app="alacritty", followtag=true, argname = '--class %s', extra="--option=window.opacity=1.0 --option=\"colors.primary.background='#000d2b'\" -e tmux", height=0.3}) -- Import panels diff --git a/awesome/components/top-panel.lua b/awesome/components/top-panel.lua index c03430d..34bda92 100644 --- a/awesome/components/top-panel.lua +++ b/awesome/components/top-panel.lua @@ -8,14 +8,14 @@ local beautiful = require("beautiful") local wibox = require("wibox") local theme = require("theme") local lain = require("lain") -local tag_list = require("widgets.tag-list") -local layout_box = require("widgets.layout-box") -local battery_widget = require("widgets.battery-widget.battery") -local volume_widget = require("widgets.volume-widget.volume") +local tag_list = require("components.widgets.tag-list") +local layout_box = require("components.widgets.layout-box") +local battery_widget = require("components.widgets.battery-widget.battery") +local volume_widget = require("components.widgets.volume-widget.volume") local pl = require("utils.powerline") -- import widgets -local task_list = require("widgets.task-list") +local task_list = require("components.widgets.task-list") -- =================================================================== -- Custom Widgets diff --git a/awesome/widgets/battery-widget/README.md b/awesome/components/widgets/battery-widget/README.md similarity index 100% rename from awesome/widgets/battery-widget/README.md rename to awesome/components/widgets/battery-widget/README.md diff --git a/awesome/widgets/battery-widget/bat-wid-1.png b/awesome/components/widgets/battery-widget/bat-wid-1.png similarity index 100% rename from awesome/widgets/battery-widget/bat-wid-1.png rename to awesome/components/widgets/battery-widget/bat-wid-1.png diff --git a/awesome/widgets/battery-widget/bat-wid-2.png b/awesome/components/widgets/battery-widget/bat-wid-2.png similarity index 100% rename from awesome/widgets/battery-widget/bat-wid-2.png rename to awesome/components/widgets/battery-widget/bat-wid-2.png diff --git a/awesome/widgets/battery-widget/bat-wid-22.png b/awesome/components/widgets/battery-widget/bat-wid-22.png similarity index 100% rename from awesome/widgets/battery-widget/bat-wid-22.png rename to awesome/components/widgets/battery-widget/bat-wid-22.png diff --git a/awesome/widgets/battery-widget/bat-wid-3.png b/awesome/components/widgets/battery-widget/bat-wid-3.png similarity index 100% rename from awesome/widgets/battery-widget/bat-wid-3.png rename to awesome/components/widgets/battery-widget/bat-wid-3.png diff --git a/awesome/widgets/battery-widget/battery.lua b/awesome/components/widgets/battery-widget/battery.lua similarity index 100% rename from awesome/widgets/battery-widget/battery.lua rename to awesome/components/widgets/battery-widget/battery.lua diff --git a/awesome/widgets/battery-widget/spaceman.jpg b/awesome/components/widgets/battery-widget/spaceman.jpg similarity index 100% rename from awesome/widgets/battery-widget/spaceman.jpg rename to awesome/components/widgets/battery-widget/spaceman.jpg diff --git a/awesome/widgets/layout-box.lua b/awesome/components/widgets/layout-box.lua similarity index 100% rename from awesome/widgets/layout-box.lua rename to awesome/components/widgets/layout-box.lua diff --git a/awesome/widgets/tag-list.lua b/awesome/components/widgets/tag-list.lua similarity index 100% rename from awesome/widgets/tag-list.lua rename to awesome/components/widgets/tag-list.lua diff --git a/awesome/widgets/task-list.lua b/awesome/components/widgets/task-list.lua similarity index 99% rename from awesome/widgets/task-list.lua rename to awesome/components/widgets/task-list.lua index 3302ce2..5f01519 100644 --- a/awesome/widgets/task-list.lua +++ b/awesome/components/widgets/task-list.lua @@ -18,7 +18,7 @@ local theme = require("theme") local dpi = require('beautiful').xresources.apply_dpi local capi = {button = button} -local ICON_DIR = gears.filesystem.get_configuration_dir() .. "/icons/" +local ICON_DIR = gears.filesystem.get_configuration_dir() .. "/images/" -- define module table local task_list = {} diff --git a/awesome/widgets/volume-widget/README.md b/awesome/components/widgets/volume-widget/README.md similarity index 100% rename from awesome/widgets/volume-widget/README.md rename to awesome/components/widgets/volume-widget/README.md diff --git a/awesome/widgets/volume-widget/icons/audio-volume-high-symbolic.svg b/awesome/components/widgets/volume-widget/icons/audio-volume-high-symbolic.svg similarity index 100% rename from awesome/widgets/volume-widget/icons/audio-volume-high-symbolic.svg rename to awesome/components/widgets/volume-widget/icons/audio-volume-high-symbolic.svg diff --git a/awesome/widgets/volume-widget/icons/audio-volume-low-symbolic.svg b/awesome/components/widgets/volume-widget/icons/audio-volume-low-symbolic.svg similarity index 100% rename from awesome/widgets/volume-widget/icons/audio-volume-low-symbolic.svg rename to awesome/components/widgets/volume-widget/icons/audio-volume-low-symbolic.svg diff --git a/awesome/widgets/volume-widget/icons/audio-volume-medium-symbolic.svg b/awesome/components/widgets/volume-widget/icons/audio-volume-medium-symbolic.svg similarity index 100% rename from awesome/widgets/volume-widget/icons/audio-volume-medium-symbolic.svg rename to awesome/components/widgets/volume-widget/icons/audio-volume-medium-symbolic.svg diff --git a/awesome/widgets/volume-widget/icons/audio-volume-muted-symbolic.svg b/awesome/components/widgets/volume-widget/icons/audio-volume-muted-symbolic.svg similarity index 100% rename from awesome/widgets/volume-widget/icons/audio-volume-muted-symbolic.svg rename to awesome/components/widgets/volume-widget/icons/audio-volume-muted-symbolic.svg diff --git a/awesome/widgets/volume-widget/screenshots/variations.png b/awesome/components/widgets/volume-widget/screenshots/variations.png similarity index 100% rename from awesome/widgets/volume-widget/screenshots/variations.png rename to awesome/components/widgets/volume-widget/screenshots/variations.png diff --git a/awesome/widgets/volume-widget/screenshots/volume-sink-sources.png b/awesome/components/widgets/volume-widget/screenshots/volume-sink-sources.png similarity index 100% rename from awesome/widgets/volume-widget/screenshots/volume-sink-sources.png rename to awesome/components/widgets/volume-widget/screenshots/volume-sink-sources.png diff --git a/awesome/widgets/volume-widget/utils.lua b/awesome/components/widgets/volume-widget/utils.lua similarity index 100% rename from awesome/widgets/volume-widget/utils.lua rename to awesome/components/widgets/volume-widget/utils.lua diff --git a/awesome/widgets/volume-widget/volume-2.svg b/awesome/components/widgets/volume-widget/volume-2.svg similarity index 100% rename from awesome/widgets/volume-widget/volume-2.svg rename to awesome/components/widgets/volume-widget/volume-2.svg diff --git a/awesome/widgets/volume-widget/volume.lua b/awesome/components/widgets/volume-widget/volume.lua similarity index 93% rename from awesome/widgets/volume-widget/volume.lua rename to awesome/components/widgets/volume-widget/volume.lua index 662a6bc..510b235 100644 --- a/awesome/widgets/volume-widget/volume.lua +++ b/awesome/components/widgets/volume-widget/volume.lua @@ -13,7 +13,7 @@ local spawn = require("awful.spawn") local gears = require("gears") local beautiful = require("beautiful") local watch = require("awful.widget.watch") -local utils = require("widgets.volume-widget.utils") +local utils = require("components.widgets.volume-widget.utils") local LIST_DEVICES_CMD = [[sh -c "pacmd list-sinks; pacmd list-sources"]] @@ -24,11 +24,11 @@ local function TOG_VOLUME_CMD(device) return 'amixer -D ' .. device .. ' sset Ma local widget_types = { - icon_and_text = require("widgets.volume-widget.widgets.icon-and-text-widget"), - icon = require("widgets.volume-widget.widgets.icon-widget"), - arc = require("widgets.volume-widget.widgets.arc-widget"), - horizontal_bar = require("widgets.volume-widget.widgets.horizontal-bar-widget"), - vertical_bar = require("widgets.volume-widget.widgets.vertical-bar-widget") + icon_and_text = require("components.widgets.volume-widget.widgets.icon-and-text-widget"), + icon = require("components.widgets.volume-widget.widgets.icon-widget"), + arc = require("components.widgets.volume-widget.widgets.arc-widget"), + horizontal_bar = require("components.widgets.volume-widget.widgets.horizontal-bar-widget"), + vertical_bar = require("components.widgets.volume-widget.widgets.vertical-bar-widget") } local volume = {} diff --git a/awesome/widgets/volume-widget/widgets/arc-widget.lua b/awesome/components/widgets/volume-widget/widgets/arc-widget.lua similarity index 92% rename from awesome/widgets/volume-widget/widgets/arc-widget.lua rename to awesome/components/widgets/volume-widget/widgets/arc-widget.lua index 7ecef78..a9e6b1a 100644 --- a/awesome/widgets/volume-widget/widgets/arc-widget.lua +++ b/awesome/components/widgets/volume-widget/widgets/arc-widget.lua @@ -1,7 +1,7 @@ local wibox = require("wibox") local beautiful = require('beautiful') -local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/widgets/volume-widget/icons/' +local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/components/widgets/volume-widget/icons/' local widget = {} diff --git a/awesome/widgets/volume-widget/widgets/horizontal-bar-widget.lua b/awesome/components/widgets/volume-widget/widgets/horizontal-bar-widget.lua similarity index 94% rename from awesome/widgets/volume-widget/widgets/horizontal-bar-widget.lua rename to awesome/components/widgets/volume-widget/widgets/horizontal-bar-widget.lua index 1484f91..67a342b 100644 --- a/awesome/widgets/volume-widget/widgets/horizontal-bar-widget.lua +++ b/awesome/components/widgets/volume-widget/widgets/horizontal-bar-widget.lua @@ -2,7 +2,7 @@ local wibox = require("wibox") local beautiful = require('beautiful') local gears = require("gears") -local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/widgets/volume-widget/icons/' +local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/components/widgets/volume-widget/icons/' local widget = {} diff --git a/awesome/widgets/volume-widget/widgets/icon-and-text-widget.lua b/awesome/components/widgets/volume-widget/widgets/icon-and-text-widget.lua similarity index 94% rename from awesome/widgets/volume-widget/widgets/icon-and-text-widget.lua rename to awesome/components/widgets/volume-widget/widgets/icon-and-text-widget.lua index a37af77..2e5470a 100644 --- a/awesome/widgets/volume-widget/widgets/icon-and-text-widget.lua +++ b/awesome/components/widgets/volume-widget/widgets/icon-and-text-widget.lua @@ -3,7 +3,7 @@ local beautiful = require('beautiful') local widget = {} -local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/widgets/volume-widget/icons/' +local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/components/widgets/volume-widget/icons/' function widget.get_widget(widgets_args) local args = widgets_args or {} diff --git a/awesome/widgets/volume-widget/widgets/icon-widget.lua b/awesome/components/widgets/volume-widget/widgets/icon-widget.lua similarity index 93% rename from awesome/widgets/volume-widget/widgets/icon-widget.lua rename to awesome/components/widgets/volume-widget/widgets/icon-widget.lua index ddd52f2..f374f53 100644 --- a/awesome/widgets/volume-widget/widgets/icon-widget.lua +++ b/awesome/components/widgets/volume-widget/widgets/icon-widget.lua @@ -2,7 +2,7 @@ local wibox = require("wibox") local widget = {} -local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/widgets/volume-widget/icons/' +local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/components/widgets/volume-widget/icons/' function widget.get_widget(widgets_args) local args = widgets_args or {} diff --git a/awesome/widgets/volume-widget/widgets/vertical-bar-widget.lua b/awesome/components/widgets/volume-widget/widgets/vertical-bar-widget.lua similarity index 95% rename from awesome/widgets/volume-widget/widgets/vertical-bar-widget.lua rename to awesome/components/widgets/volume-widget/widgets/vertical-bar-widget.lua index acc60f2..9de45af 100644 --- a/awesome/widgets/volume-widget/widgets/vertical-bar-widget.lua +++ b/awesome/components/widgets/volume-widget/widgets/vertical-bar-widget.lua @@ -2,7 +2,7 @@ local wibox = require("wibox") local beautiful = require('beautiful') local gears = require("gears") -local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/widgets/volume-widget/icons/' +local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/components/widgets/volume-widget/icons/' local widget = {} diff --git a/awesome/icons/close.svg b/awesome/images/close.svg similarity index 100% rename from awesome/icons/close.svg rename to awesome/images/close.svg diff --git a/awesome/wallpaper/wallpaper.png b/awesome/images/wallpaper.png similarity index 100% rename from awesome/wallpaper/wallpaper.png rename to awesome/images/wallpaper.png diff --git a/awesome/keys.lua b/awesome/keys.lua index 0e04053..1afc72b 100644 --- a/awesome/keys.lua +++ b/awesome/keys.lua @@ -1,21 +1,8 @@ --- ██╗ ██╗███████╗██╗ ██╗███████╗ --- ██║ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝ --- █████╔╝ █████╗ ╚████╔╝ ███████╗ --- ██╔═██╗ ██╔══╝ ╚██╔╝ ╚════██║ --- ██║ ██╗███████╗ ██║ ███████║ --- ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝ - - --- =================================================================== --- Initialization --- =================================================================== - - local awful = require("awful") local gears = require("gears") local naughty = require("naughty") local beautiful = require("beautiful") -local volume_widget = require("widgets.volume-widget.volume") +local volume_widget = require("components.widgets.volume-widget.volume") local dpi = beautiful.xresources.apply_dpi local modkey = "Mod4" @@ -185,7 +172,7 @@ keys.globalkeys = gears.table.join( if c and c.class == "Alacritty" then awful.spawn(string.format(os.getenv("XDG_CONFIG_HOME") .. "/awesome/scripts/launch_alacritty.sh %d", c.pid)) else - awful.spawn(apps.terminal) + awful.spawn('bash -c "WINIT_X11_SCALE_FACTOR=1 alacritty"') end end, {description = "open a terminal", group = "launcher"} @@ -334,7 +321,7 @@ keys.globalkeys = gears.table.join( -- Screenshot on prtscn using scrot awful.key({}, "Print", function() - awful.spawn(apps.screenshot, false) + awful.spawn("scrot -e 'mv $f ~/Pictures/Screenshots/ 2>/dev/null'", false) end ), diff --git a/awesome/rc.lua b/awesome/rc.lua index 251bec1..cf4e55e 100644 --- a/awesome/rc.lua +++ b/awesome/rc.lua @@ -1,29 +1,19 @@ --- █████╗ ██╗ ██╗███████╗███████╗ ██████╗ ███╗ ███╗███████╗ --- ██╔══██╗██║ ██║██╔════╝██╔════╝██╔═══██╗████╗ ████║██╔════╝ --- ███████║██║ █╗ ██║█████╗ ███████╗██║ ██║██╔████╔██║█████╗ --- ██╔══██║██║███╗██║██╔══╝ ╚════██║██║ ██║██║╚██╔╝██║██╔══╝ --- ██║ ██║╚███╔███╔╝███████╗███████║╚██████╔╝██║ ╚═╝ ██║███████╗ --- ╚═╝ ╚═╝ ╚══╝╚══╝ ╚══════╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ - - -- Standard awesome libraries local gears = require("gears") local awful = require("awful") -local grid = require("layout.grid") -local mouse_utils = require("utils.mouse") --- =================================================================== --- User Configuration --- =================================================================== +-- Local imports +local grid = require("components.layout.grid") +-- Load components +require("components.notifications") +require("components.screen") +require("utils.signals") + +-- Autofocus a new client when previously focused one is closed +require("awful.autofocus") --- define default apps (global variable so other components can access it) -apps = { - terminal = 'bash -c "WINIT_X11_SCALE_FACTOR=1 alacritty"', - launcher = "/home/user/.toggle_rofi.sh", - screenshot = "scrot -e 'mv $f ~/Pictures/Screenshots/ 2>/dev/null'", -} -- List of apps to run on start-up local run_on_start_up = { @@ -32,15 +22,10 @@ local run_on_start_up = { "xcape -e \"Super_L=Super_L|XF86Launch5\" -t 5000", "xmodmap /home/user/.Xmodmap", os.getenv("XDG_CONFIG_HOME") .. "/awesome/scripts/setup_display.sh", - "feh --no-fehbg --bg-fill " .. gears.filesystem.get_configuration_dir() .. "/wallpaper/wallpaper.png", -- "/opt/power/powersave.sh", -- os.getenv("XDG_CONFIG_HOME") .. "/awesome/scripts/setup_display.sh" } --- =================================================================== --- Initialization --- =================================================================== - -- Define layouts awful.layout.layouts = { grid, @@ -54,9 +39,6 @@ awful.layout.layouts = { } --- Import notification appearance -require("components.notifications") -require("components.screen") -- Run all the apps listed in run_on_start_up for _, app in ipairs(run_on_start_up) do @@ -65,7 +47,7 @@ for _, app in ipairs(run_on_start_up) do if firstspace then findme = app:sub(0, firstspace - 1) end - -- pipe commands to bash to allow command to be shell agnostic + -- Run commands only if it's not already running. awful.spawn.with_shell(string.format("echo 'pgrep -u $USER -x %s > /dev/null || (%s)' | bash -", findme, app), false) end @@ -81,86 +63,3 @@ root.buttons(keys.desktopbuttons) -- Import rules local create_rules = require("rules").create awful.rules.rules = create_rules(keys.clientkeys, keys.clientbuttons) - --- =================================================================== --- Client Focusing --- =================================================================== - - --- Autofocus a new client when previously focused one is closed -require("awful.autofocus") - --- Focus clients under mouse -client.connect_signal("mouse::enter", function(c) - c:emit_signal("request::activate", "mouse_enter", {raise = false}) -end) - - --- Signal function to execute when a new client appears. -client.connect_signal("manage", function (c) - -- Set the window as a slave (put it at the end of others instead of setting it as 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 - - gears.timer.delayed_call(function() - local geometry = c:geometry() - local x = geometry.x + geometry.width/2 - local y = geometry.y + geometry.height/2 - mouse.coords({x = x, y = y}, true) - end) -end) - --- =================================================================== --- Screen Change Functions (ie multi monitor) --- =================================================================== - - --- Reload config when screen geometry changes -screen.connect_signal("property::geometry", awesome.restart) - - --- =================================================================== --- Garbage collection (allows for lower memory consumption) --- =================================================================== - - -collectgarbage("setpause", 110) -collectgarbage("setstepmul", 1000) - -client.connect_signal("property::maximized", function(focused) - local hide = focused.maximized or focused.fullscreen - for i, c in ipairs(client.get()) do - if not c.floating and c.screen == focused.screen and c.first_tag == focused.first_tag then - c.minimized = hide - end - end - - focused.minimized = false -end) - -client.connect_signal("unmanage", function(unmanaged) - if unmanaged.maximized then - for i, c in ipairs(client.get()) do - if not c.floating and c.screen == unmanaged.screen then - c.minimized = false - end - end - end -end) - -client.connect_signal("focus", function(c) - if #c.screen.clients > 1 then - c.border_color = beautiful.border_focus - end - gears.timer.delayed_call(mouse_utils.move_mouse_onto_focused_client) -end) - -client.connect_signal("unfocus", function(c) - c.border_color = beautiful.border_normal -end) diff --git a/awesome/utils/signals.lua b/awesome/utils/signals.lua new file mode 100644 index 0000000..b50b126 --- /dev/null +++ b/awesome/utils/signals.lua @@ -0,0 +1,72 @@ +local awful = require("awful") +local beautiful = require("beautiful") +local gears = require("gears") +local mouse_utils = require("utils.mouse") + +-- Focus clients under mouse +client.connect_signal("mouse::enter", function(c) + c:emit_signal("request::activate", "mouse_enter", {raise = false}) +end) + + +client.connect_signal("manage", function (c) + -- Set the window as a slave (put it at the end of others instead of setting it as 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 + + gears.timer.delayed_call(function() + local geometry = c:geometry() + local x = geometry.x + geometry.width/2 + local y = geometry.y + geometry.height/2 + mouse.coords({x = x, y = y}, true) + end) +end) + +-- Reload config when screen geometry changes +screen.connect_signal("property::geometry", awesome.restart) + + +-- =================================================================== +-- Garbage collection (allows for lower memory consumption) +-- =================================================================== + +collectgarbage("setpause", 110) +collectgarbage("setstepmul", 1000) + +client.connect_signal("property::maximized", function(focused) + local hide = focused.maximized or focused.fullscreen + for i, c in ipairs(client.get()) do + if not c.floating and c.screen == focused.screen and c.first_tag == focused.first_tag then + c.minimized = hide + end + end + + focused.minimized = false +end) + +client.connect_signal("unmanage", function(unmanaged) + if unmanaged.maximized then + for i, c in ipairs(client.get()) do + if not c.floating and c.screen == unmanaged.screen then + c.minimized = false + end + end + end +end) + +client.connect_signal("focus", function(c) + if #c.screen.clients > 1 then + c.border_color = beautiful.border_focus + end + gears.timer.delayed_call(mouse_utils.move_mouse_onto_focused_client) +end) + +client.connect_signal("unfocus", function(c) + c.border_color = beautiful.border_normal +end)