diff --git a/config/awesome/rc.lua b/config/awesome/rc.lua
deleted file mode 100644
index 8d3b331..0000000
--- a/config/awesome/rc.lua
+++ /dev/null
@@ -1,425 +0,0 @@
-pcall(require, "luarocks.loader")
-local gears = require("gears")
-local awful = require("awful")
-local naughty = require("naughty")
-local wibox = require("wibox")
-local beautiful = require("beautiful")
-local hotkeys_popup = require("awful.hotkeys_popup")
-local menubar = require("menubar")
-require("awful.autofocus")
-
--- Pick a random image from the folder on start/reload
-awful.spawn.with_shell("feh --bg-fill --randomize /home/jason/Pictures/Wallpapers/")
-
--- Global config
--- Alt. Use "Mod4" for the Super/Windows key.
-modkey = "Mod4"
-terminal = "alacritty"
-theChurch = "emacs"
-editor = os.getenv("EDITOR") or "nano"
-
--- Layouts: suit.tile = master column LEFT, stack column RIGHT.
-awful.layout.layouts = { awful.layout.suit.tile, awful.layout.suit.max }
-
--- Kill xfce4-notifyd on startup (with a short delay + retry, in case it
--- hasn't started yet at this point in the session)
-awful.spawn.easy_async_with_shell("pkill xfce4-notifyd", function() end)
-gears.timer.start_new(3, function()
- awful.spawn.easy_async_with_shell("pkill xfce4-notifyd", function() end)
- return false -- don't repeat
-end)
-
--- Error handling
-if awesome.startup_errors then
- naughty.notify({ preset = naughty.config.presets.critical, title = "Error during startup", text = awesome.startup_errors })
-end
-do
- local in_error = false
- awesome.connect_signal("debug::error", function(err)
- if in_error then return end
- in_error = true
- naughty.notify({ preset = naughty.config.presets.critical, title = "An error happened", text = tostring(err) })
- in_error = false
- end)
-end
-
--- ================================================
--- THEME
--- ================================================
-local colors = {
- background = "#111111",
- background_alt = "#1a1a1a",
- foreground = "#dcd7ba", -- kanagawa foreground
- accent = "#6a9589", -- black (bright) - muted gray, same role as old #6e6e6e
- accent_alt = "#7fb4ca", -- blue (normal) - crystalBlue
- red = "#e82424", -- red (bright) - samuraiRed, vivid
- green = "#98bb6c", -- green (bright) - springGreen
- yellow = "#e6c384", -- yellow (bright) - carpYellow
- disabled = "#6a9589", -- cyan (normal) - muted, low-contrast
- white = "#ffffff", -- white (normal) - dimmer than foreground
-}
-beautiful.wallpaper = nil
-beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua")
-beautiful.useless_gap = 8
-beautiful.gap_single_client = true
-beautiful.font = "JetBrainsMono Nerd Font 11"
-beautiful.border_width = 4
-beautiful.border_normal = colors.background_alt
-beautiful.border_focus = colors.accent
-beautiful.taglist_bg_focus = colors.accent
-beautiful.taglist_fg_focus = colors.background
-beautiful.taglist_fg_occupied = colors.accent
-beautiful.taglist_bg_occupied = colors.background
-beautiful.taglist_fg_empty = colors.white
-beautiful.taglist_bg_empty = colors.background
-beautiful.taglist_bg_urgent = colors.red
-beautiful.taglist_fg_urgent = colors.background
-beautiful.bg_systray = colors.background
-beautiful.systray_icon_spacing = 4
--- Notifications, styled to match the wibar/client theme
-naughty.config.defaults.position = "top_right"
-naughty.config.defaults.timeout = 5
-naughty.config.padding = 12
-naughty.config.defaults.margin = 12
-naughty.config.defaults.spacing = 8
-naughty.config.defaults.icon_size = 48
-naughty.config.defaults.border_width = 3
-naughty.config.defaults.font = "JetBrainsMono Nerd Font 12"
-naughty.config.defaults.shape = function(cr, w, h) gears.shape.rounded_rect(cr, w, h, 13) end
-naughty.config.presets.normal = {
- bg = colors.background, fg = colors.foreground, border_color = colors.accent,
- border_width = 3, font = "JetBrainsMono Nerd Font 12", timeout = 5,
-}
-naughty.config.presets.low = naughty.config.presets.normal
-naughty.config.presets.critical = {
- bg = colors.background, fg = colors.red, border_color = colors.red,
- border_width = 3, font = "JetBrainsMono Nerd Font 12", timeout = 0, -- stays until dismissed
-}
-
--- ================================================
--- WIDGETS
--- ================================================
-local widgets = {}
--- "ICON value" with ICON tinted accent, like polybar's *-prefix-foreground.
-function widgets.label(icon, val)
- return string.format("%s %s", colors.white, icon, val or "")
-end
--- A slim separator in the disabled color, like polybar's separator.
-function widgets.sep()
- local w = wibox.widget.textbox()
- w.markup = string.format(" ", colors.disabled)
- return w
-end
--- Wrap a widget in a small margin so bar modules aren't crammed together.
-function widgets.padded(w, left, right)
- return wibox.container.margin(w, left or 8, right or 8)
-end
--- Focused window title (polybar xwindow / %title%)
-function widgets.make_title()
- local t = wibox.widget.textbox()
- t.align = "center"
- local function update()
- local c = client.focus
- t.markup = c and string.format("%s", colors.white, gears.string.xml_escape(c.name or "")) or ""
- end
- client.connect_signal("focus", update)
- client.connect_signal("unfocus", update)
- client.connect_signal("property::name", update)
- return t
-end
--- CPU usage % (two top samples so the reading is accurate)
-function widgets.make_cpu()
- return awful.widget.watch(
- { "bash", "-c", [[LANG=C top -bn2 -d0.3 | grep -m2 '^%Cpu' | tail -1 | awk '{printf "%.0f", 100 - $8}']] },
- 3, function(w, out) w.markup = widgets.label("", out:gsub("%s+$", "") .. "%") end)
-end
--- Volume: click to mute, scroll to adjust, right-click for the mixer.
--- Keeps its own refresh() so button presses update instantly instead of
--- waiting on the polling timer.
-function widgets.make_vol()
- local w = wibox.widget.textbox()
- local vol_script = [[
- sink=$(LANG=C pactl get-default-sink 2>/dev/null)
- m=$(LANG=C pactl get-sink-mute "$sink" 2>/dev/null | grep -oE 'yes|no')
- v=$(LANG=C pactl get-sink-volume "$sink" 2>/dev/null | grep -oE '[0-9]+%' | head -n1)
- echo "$m $v"
- ]]
- local function shell_quote(s) return "'" .. s:gsub("'", "'\\''") .. "'" end
- local vol_cmd = "sh -c " .. shell_quote(vol_script)
- local function refresh()
- awful.spawn.easy_async_with_shell(vol_cmd, function(out)
- local muted, pct = out:match("(%a+)%s+(%d+)%%")
- if muted == nil and pct == nil then
- w.markup = string.format(" n/a", colors.disabled)
- return
- end
- muted = muted == "yes"
- pct = pct or "0"
- w.markup = muted and string.format("MUTE", colors.yellow) or widgets.label("", pct .. "%")
- end)
- end
- w:buttons(gears.table.join(
- awful.button({ }, 1, function() awful.spawn("/home/jason/.local/bin/audioswitch") end),
- awful.button({ }, 3, function() awful.spawn.easy_async_with_shell([[sh -c 'pactl set-sink-mute "$(pactl get-default-sink)" toggle']], function() refresh() end) end),
- awful.button({ }, 4, function() awful.spawn.easy_async_with_shell([[sh -c 'pactl set-sink-volume "$(pactl get-default-sink)" +2%']], function() refresh() end) end),
- awful.button({ }, 5, function() awful.spawn.easy_async_with_shell([[sh -c 'pactl set-sink-volume "$(pactl get-default-sink)" -2%']], function() refresh() end) end)
- ))
- gears.timer { timeout = 2, call_now = true, autostart = true, callback = refresh }
- return w
-end
--- Brightness: click to toggle between night (default gamma) and day (boosted).
-function widgets.make_brightness()
- local OUTPUT = "HDMI-A-0"
- local DAY_CMD = "xrandr --output " .. OUTPUT .. " --set CTM \"1.1,0,0,0,1.1,0,0,0,1.1\" --gamma 1.08:1.08:1.08"
- local NIGHT_CMD = "xrandr --output " .. OUTPUT .. " --set CTM \"1,0,0,0,1,0,0,0,1\" --gamma 1.0:1.0:1.0"
- local w = wibox.widget.textbox()
- local is_day = true
- local function render()
- local icon = is_day and "" or ""
- w.markup = string.format(
- "%s ",
- colors.white, icon
- )
- end
- local function apply(day)
- local cmd = day and DAY_CMD or NIGHT_CMD
- awful.spawn.easy_async_with_shell(cmd, function()
- is_day = day
- render()
- end)
- end
- w:buttons(gears.table.join(
- awful.button({ }, 1, function() apply(not is_day) end)
- ))
- apply(true)
- return w
-end
-
--- ================================================
--- KEYBINDS
--- ================================================
-local keys = {}
-keys.globalkeys = gears.table.join(
- awful.key({ modkey }, "s", hotkeys_popup.show_help, { description = "show help", group = "awesome" }),
- -- Directional focus (vim keys)
- awful.key({ modkey }, "h", function() awful.client.focus.bydirection("left") end, { description = "focus left", group = "client" }),
- awful.key({ modkey }, "j", function() awful.client.focus.bydirection("down") end, { description = "focus down", group = "client" }),
- awful.key({ modkey }, "k", function() awful.client.focus.bydirection("up") end, { description = "focus up", group = "client" }),
- awful.key({ modkey }, "l", function() awful.client.focus.bydirection("right") end, { description = "focus right", group = "client" }),
- -- Directional move (swap clients in the tiling layout)
- awful.key({ modkey, "Control" }, "h", function() awful.client.swap.bydirection("left") end, { description = "move left", group = "client" }),
- awful.key({ modkey, "Control" }, "j", function() awful.client.swap.bydirection("down") end, { description = "move down", group = "client" }),
- awful.key({ modkey, "Control" }, "k", function() awful.client.swap.bydirection("up") end, { description = "move up", group = "client" }),
- awful.key({ modkey, "Control" }, "l", function() awful.client.swap.bydirection("right") end, { description = "move right", group = "client" }),
- -- Resize the master/other split
- awful.key({ modkey, "Shift" }, "h", function() awful.tag.incmwfact(-0.05) end, { description = "shrink master", group = "layout" }),
- awful.key({ modkey, "Shift" }, "l", function() awful.tag.incmwfact( 0.05) end, { description = "grow master", group = "layout" }),
- -- Launching / layout
- awful.key({ modkey }, "Return", function() awful.spawn(theChurch) end, { description = "open the church of emacs", group = "launcher" }),
- awful.key({ modkey }, "t", function() awful.spawn(terminal) end, { description = "open alacritty", group = "launcher" }),
- awful.key({ modkey }, "e", function() awful.spawn("thunar") end, { description = "Filemanager", group = "system" }),
- awful.key({ modkey }, "w", function() awful.layout.inc(1) end, { description = "next layout", group = "layout" }),
- -- screenshooter
- awful.key({ modkey, "Control" }, "p", function() awful.spawn("xfce4-screenshooter") end, { description = "screenshot", group = "system" }),
- -- Alt tab current workspace windows
- awful.key({ modkey }, "Tab", function() awful.client.focus.byidx(1) end, { description = "cycle focus", group = "client" }),
- -- Media keys
- awful.key({ }, "XF86AudioRaiseVolume", function() awful.spawn.easy_async_with_shell([[sh -c 'pactl set-sink-volume "$(pactl get-default-sink)" +2%']]) end, { description = "volume up", group = "media" }),
- awful.key({ }, "XF86AudioLowerVolume", function() awful.spawn.easy_async_with_shell([[sh -c 'pactl set-sink-volume "$(pactl get-default-sink)" -2%']]) end, { description = "volume down", group = "media" }),
- awful.key({ }, "XF86AudioMute", function() awful.spawn.easy_async_with_shell([[sh -c 'pactl set-sink-mute "$(pactl get-default-sink)" toggle']]) end, { description = "toggle mute", group = "media" }),
- -- rofi menus
- awful.key({ modkey }, "space", function() awful.spawn("/home/jason/.local/bin/runrofi") end, { description = "application launcher", group = "launcher" }),
- awful.key({ modkey }, "`", function() awful.spawn("/home/jason/.local/bin/powermenu") end, { description = "power menu", group = "system" }),
- awful.key({ modkey }, "a", function() awful.spawn("/home/jason/.local/bin/audioswitch") end, { description = "audio output", group = "system" }),
- awful.key({ modkey }, "b", function () awful.spawn("/home/jason/.local/bin/bookmarks") end, {description = "bookmarks", group = "internet"}),
- -- Awesome control
- awful.key({ modkey, "Control" }, "r", awesome.restart, { description = "reload awesome", group = "awesome" })
-)
--- Workspace keys 1..5: Alt+N view, Alt+Shift+N move client to tag
-for i = 1, 5 do
- keys.globalkeys = gears.table.join(keys.globalkeys,
- 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" }),
- awful.key({ modkey, "Control" }, "#" .. 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" })
- )
-end
-keys.clientkeys = gears.table.join(
- awful.key({ modkey }, "q", function(c) c:kill() end, { description = "kill window", group = "client" }),
- awful.key({ modkey }, "f", function(c) c.fullscreen = not c.fullscreen; c:raise() end, { description = "toggle fullscreen", group = "client" }),
- -- awful.key({ modkey }, "m", function(c) c:swap(awful.client.getmaster()) end, { description = "make master", 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" }, "space", awful.client.floating.toggle, { description = "toggle floating", group = "client" })
-)
-keys.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)
-)
-root.keys(keys.globalkeys)
-
--- ================================================
--- BAR
--- ================================================
-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)
-)
-local function bar_setup()
- awful.screen.connect_for_each_screen(function(s)
- awful.tag({ "1", "2", "3", "4", "5" }, s, awful.layout.layouts[1])
- s.mypromptbox = awful.widget.prompt()
- 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)
- ))
- s.mytaglist = awful.widget.taglist {
- screen = s, filter = awful.widget.taglist.filter.all, buttons = taglist_buttons,
- style = { shape = function(cr, w, h) gears.shape.rounded_rect(cr, w, h, 4) end },
- layout = { spacing = 8, layout = wibox.layout.fixed.horizontal },
- widget_template = {
- { { id = "text_role", widget = wibox.widget.textbox }, left = 10, right = 10, top = 4, bottom = 4, widget = wibox.container.margin },
- id = "background_role", widget = wibox.container.background,
- },
- }
- -- Per-screen monitor widgets (created here so multi-monitor stays valid)
- local title = widgets.make_title()
- local vol = widgets.make_vol()
- local cpu = widgets.make_cpu()
- local brightness = widgets.make_brightness()
- local clock = wibox.widget.textclock("%Y-%m-%d %H:%M")
- local right = wibox.layout.fixed.horizontal()
- right.spacing = 16 -- one uniform gap between all right-hand modules
- right:add(wibox.widget.systray())
- right:add(vol)
- right:add(cpu)
- right:add(clock)
- right:add(brightness)
- s.mywibox = awful.wibar {
- position = "top", screen = s, height = 45, bg = colors.background, fg = colors.white,
- shape = function(cr, w, h) gears.shape.rounded_rect(cr, w, h, 0) end,
- }
- s.mywibox:setup {
- layout = wibox.container.margin, left = 8, right = 8, top = 10, bottom = 10,
- {
- layout = wibox.layout.align.horizontal,
- expand = "none", -- center widget is centered on the whole bar
- -- Left: layout indicator + workspaces
- {
- layout = wibox.layout.fixed.horizontal,
- widgets.padded(s.mylayoutbox, 8, 8),
- widgets.padded(s.mytaglist, 4, 4), s.mypromptbox,
- },
- -- Center: focused window title
- title,
- -- Right
- widgets.padded(right, 4, 12),
- }
- }
- end)
- -- Overlay for rofi launchers.
- -- Real dim colour; the overlay is created fully transparent so the
- -- startup prime (below) can run without ever showing on screen.
- local DIM_BG = "#00000099"
- local dim_overlay = wibox({
- visible = false,
- ontop = true,
- type = "splash",
- bg = "#00000000",
- })
- dim_overlay.name = "awesome_dim_overlay"
- awful.screen.connect_for_each_screen(function(s)
- dim_overlay.screen = s -- adjust if you want it per-screen vs spanning all
- end)
- -- span the primary screen's geometry (or loop over all screens if you use a multi-monitor dim)
- local function update_dim_geometry()
- local geo = screen.primary.geometry
- dim_overlay:geometry(geo)
- end
- update_dim_geometry()
- screen.connect_signal("property::geometry", update_dim_geometry)
- -- expose functions over awesome-client
- _G.show_dim = function() dim_overlay.visible = true end
- _G.hide_dim = function() dim_overlay.visible = false end
- -- Prime the overlay invisibly at startup. While it is fully
- -- transparent we map it once, so picom plays and finishes its one-time
- -- "open" animation now -- with alpha 00 there is nothing to see, so no
- -- flash. We then hide it and swap in the real dim colour. Every later
- -- show_dim() is a re-map ("show"), which picom doesn't animate, so the
- -- overlay simply appears: no startup flash, no grow.
- dim_overlay.visible = true
- gears.timer.start_new(1.0, function()
- dim_overlay.visible = false
- dim_overlay.bg = DIM_BG
- return false -- one-shot
- end)
-end
-bar_setup()
-
--- ================================================
--- WINDOW RULES
--- ================================================
-awful.rules.rules = {
- {
- rule = { },
- properties = {
- border_width = beautiful.border_width, border_color = beautiful.border_normal,
- focus = awful.client.focus.filter, raise = true,
- keys = keys.clientkeys, buttons = keys.clientbuttons,
- screen = awful.screen.preferred,
- placement = awful.placement.no_overlap + awful.placement.no_offscreen,
- }
- },
- {
- rule_any = {
- instance = { "pinentry" },
- class = { "Arandr", "Blueman-manager", "Gpick", "Pavucontrol" },
- name = { "Event Tester" },
- role = { "AlarmWindow", "pop-up" },
- },
- properties = { floating = true }
- },
- {
- rule = { name = "Sublime Terminal", },
- properties = { floating = false, },
- callback = function(c)
- awful.client.setslave(c)
- local t = c.first_tag
- if t then
- t.master_width_factor = 0.67
- end
- end,
- },
-}
-
--- ================================================
--- SIGNALS
--- ================================================
-client.connect_signal("manage", function(c)
- if awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then
- awful.placement.no_offscreen(c)
- end
- -- New windows open into the stack (to the right); first window becomes master.
- if not awesome.startup then awful.client.setslave(c) end
- -- 0 or ie 13 = corner radius
- c.shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, 0) end
-end)
-client.connect_signal("property::floating", function(c)
- if c.floating and c.type ~= "notification" then awful.placement.centered(c, { honor_workarea = true }) end
-end)
-client.connect_signal("manage", function(c)
- if c.floating and c.type ~= "notification" then awful.placement.centered(c, { honor_workarea = true }) end
-end)
--- Focus follows mouse (i3-like). Comment out for click-to-focus only.
-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)
diff --git a/config/picom/picom.conf b/config/picom/picom.conf
deleted file mode 100644
index 2217432..0000000
--- a/config/picom/picom.conf
+++ /dev/null
@@ -1,286 +0,0 @@
-#################################
-# Fading #
-#################################
-fading = false;
-fade-in-step = 0.04;
-fade-out-step = 0.04;
-#################################
-# Corners #
-#################################
-corner-radius = 5;
-
-#################################
-# FAST SNAPPY ANIMATIONS #
-#################################
-match = "window_type = 'normal'";
-animations = (
-
- {
-
- triggers = ["close"];
-
- opacity = {
-
- curve = "cubic-bezier(0,1,1,1)";
-
- duration = 0.3;
-
- start = "window-raw-opacity-before";
-
- end = 0;
-
- };
-
- blur-opacity = "opacity";
-
- shadow-opacity = "opacity";
-
-
-
- scale-x = {
-
- curve = "cubic-bezier(0,1.3,1,1)";
-
- duration = 0.3;
-
- start = 1;
-
- end = 0.6;
-
- };
-
- scale-y = "scale-x";
-
-
-
- offset-x = "(1 - scale-x) / 2 * window-width";
-
- offset-y = "(1 - scale-y) / 2 * window-height";
-
-
-
- shadow-scale-x = "scale-x";
-
- shadow-scale-y = "scale-y";
-
- shadow-offset-x = "offset-x";
-
- shadow-offset-y = "offset-y";
-
- },
-
-
-
-{
-
- triggers = ["open"];
-
- opacity = {
-
- curve = "cubic-bezier(0,1,1,1)";
-
- duration = 0.5;
-
- start = 0;
-
- end = "window-raw-opacity";
-
- };
-
- blur-opacity = "opacity";
-
- shadow-opacity = "opacity";
-
-
-
- scale-x = {
-
- curve = "cubic-bezier(0,1.3,1,1)";
-
- duration = 0.5;
-
- start = 0.6;
-
- end = 1;
-
- };
-
- scale-y = "scale-x";
-
-
-
- offset-x = "(1 - scale-x) / 2 * window-width";
-
- offset-y = "(1 - scale-y) / 2 * window-height";
-
-
-
- shadow-scale-x = "scale-x";
-
- shadow-scale-y = "scale-y";
-
- shadow-offset-x = "offset-x";
-
- shadow-offset-y = "offset-y";
-
-},
-
-
-
-{
-
- triggers = ["geometry"];
-
- scale-x = {
-
- curve = "cubic-bezier(0,0,0,1.28)";
-
- duration = 0.5;
-
- start = "window-width-before / window-width";
-
- end = 1;
-
- };
-
-
-
- scale-x-reverse = {
-
- curve = "cubic-bezier(0,0,0,1.28)";
-
- duration = 0.3;
-
- start = "window-width / window-width-before";
-
- end = 1;
-
- };
-
- scale-y = {
-
- curve = "cubic-bezier(0,0,0,1.28)";
-
- duration = 0.5;
-
- start = "window-height-before / window-height";
-
- end = 1;
-
- };
-
- scale-y-reverse = {
-
- curve = "cubic-bezier(0,0,0,1.28)";
-
- duration = 0.5;
-
- start = "window-height / window-height-before";
-
- end = 1;
-
- };
-
- offset-x = {
-
- curve = "cubic-bezier(0,0,0,1.28)";
-
- duration = 0.5;
-
- start = "window-x-before - window-x";
-
- end = 0;
-
- };
-
- offset-y = {
-
- curve = "cubic-bezier(0,0,0,1.28)";
-
- duration = 0.5;
-
- start = "window-y-before - window-y";
-
- end = 0;
-
- };
-
- shadow-scale-x = "scale-x";
-
- shadow-scale-y = "scale-y";
-
- shadow-offset-x = "offset-x";
-
- shadow-offset-y = "offset-y";
-
-},
-
-)
-#################################
-# General Settings #
-#################################
-backend = "glx";
-dithered-present = false;
-vsync = true;
-detect-rounded-corners = true;
-detect-client-opacity = true;
-detect-transient = true;
-use-damage = true;
-log-level = "warn";
-#################################
-# Window Rules #
-#################################
-rules: (
-# No rounded corners on dock and desktop
- {
- match = "window_type = 'dock' || window_type = 'desktop'";
- corner-radius = 0;
- },
- {
- match = "class_g = 'Rofi'";
- animations = (
- {
- triggers = ["open", "show"];
- opacity = {
- curve = "cubic-bezier(0, 1, 1, 1)";
- duration = 0.2;
- start = 0;
- end = "window-raw-opacity";
- };
- shadow-opacity = "opacity";
- scale-y = {
- curve = "cubic-bezier(0.2, 0, 0, 1)";
- duration = 0.2;
- start = 0.55;
- end = 1;
- };
- shadow-scale-y = "scale-y";
- },
- {
- triggers = ["close", "hide"];
- opacity = {
- curve = "cubic-bezier(0, 1, 1, 1)";
- duration = 0.15;
- start = "window-raw-opacity-before";
- end = 0;
- };
- shadow-opacity = "opacity";
- scale-y = {
- curve = "cubic-bezier(0.2, 0, 0, 1)";
- duration = 0.15;
- start = 1;
- end = 0.55;
- };
- shadow-scale-y = "scale-y";
- },
- );
- },
- {
- match = "window_type = 'splash' && name = 'awesome_dim_overlay'";
- animations = ();
- shadow = false;
- corner-radius = 0;
- fade = false;
- },
-)
-
diff --git a/config/rofi/config.rasi b/config/rofi/config.rasi
deleted file mode 100644
index 297f1bd..0000000
--- a/config/rofi/config.rasi
+++ /dev/null
@@ -1,125 +0,0 @@
-* {
- /* -- Palette, matches colors{} in awesome rc.lua -- */
- bg0: #111111; /* colors.background */
- bg1: #1a1a1a; /* colors.background_alt */
- fg0: #dcd7ba; /* colors.foreground */
- fg-selected: #ffffff; /* colors.white */
- accent: #6a9589; /* colors.accent */
- accent-alt: #727169; /* colors.accent_alt */
- red: #e82424; /* colors.red */
- disabled: #6a9589; /* colors.disabled */
- font: "JetBrainsMono Nerd Font 14";
- background-color: transparent;
- text-color: @fg0;
-}
-window {
- transparency: "real";
- /* Anchor top-center, right below the wibar. */
- location: north;
- anchor: north;
- y-offset: 48px;
- width: 32em;
- height: 26em; /* fixed — box size no longer changes with result count */
- background-color: @bg0;
- border: 3px;
- border-color: @accent;
- border-radius: -1px; /* matches gears.shape.rounded_rect radius in rc.lua */
- padding: 14px;
-}
-mainbox {
- children: [ inputbar, message, listview, mode-switcher ];
- spacing: 10px;
- background-color: transparent;
-}
-/* -- Search field -- */
-inputbar {
- children: [ prompt, entry ];
- spacing: 10px;
- background-color: @bg1;
- border-radius: 10px;
- padding: 10px 14px;
-}
-prompt {
- text-color: @accent-alt;
-}
-entry {
- placeholder: "Search";
- placeholder-color: @disabled;
- text-color: @fg0;
- cursor: text;
-}
-/* -- List/grid toggle icons, top-right (matches screenshot) -- */
-mode-switcher {
- /* flip to true if you use rofis built-in mode tabs */
- enabled: false;
-}
-/* -- Results -- */
-listview {
- lines: 8;
- columns: 1;
- spacing: 6px;
- scrollbar: false;
- background-color: transparent;
- /* box height stays locked, doesnt shrink/grow with result count */
- fixed-height: true;
- /* dont resize dynamically as you type either */
- dynamic: false;
-}
-/*
- * Rofi tracks row state as a combination of position (normal/alternate,
- * i.e. even/odd rows for banding) and status (normal/urgent/active/selected).
- * Each combination needs its own selector or a competing @theme import
- * (if you have one elsewhere in your rofi config) can still win on states
- * this file doesnt explicitly cover. Pinning all of them here.
- */
-element {
- padding: 10px 12px;
- border-radius: 10px;
- orientation: horizontal;
-}
-element normal.normal,
-element alternate.normal {
- background-color: @bg1;
- text-color: @fg0;
-}
-element normal.urgent,
-element alternate.urgent {
- background-color: @bg1;
- text-color: @red;
-}
-element normal.active,
-element alternate.active {
- background-color: @bg1;
- text-color: @accent-alt;
-}
-element selected.normal {
- background-color: @accent-alt;
- text-color: @fg-selected;
-}
-element selected.urgent {
- background-color: @red;
- text-color: @fg-selected;
-}
-element selected.active {
- background-color: @accent-alt;
- text-color: @bg0;
-}
-element-icon {
- size: 24px;
- padding: 0 12px 0 0;
- vertical-align: 0.5;
- background-color: transparent;
-}
-element-text {
- vertical-align: 0.5;
- text-color: inherit;
- background-color: transparent;
-}
-message {
- background-color: @bg1;
- border-radius: 10px;
- padding: 8px 12px;
-}
-textbox {
- text-color: @fg0;
-}
diff --git a/scripts/bin/audioswitch b/scripts/bin/audioswitch
deleted file mode 100755
index dc3614a..0000000
--- a/scripts/bin/audioswitch
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/env bash
-# rofi-audio-switch: pick a PulseAudio/PipeWire sink via rofi
-
-set -euo pipefail
-
-awesome-client 'show_dim()' >/dev/null 2>&1
-trap 'awesome-client "hide_dim()" >/dev/null 2>&1' EXIT
-
-# Get list of sinks: index, name, description
-mapfile -t sinks < <(pactl list sinks | awk -F': ' '
- /^Sink #/ { idx=$2 }
- /Name:/ { name=$2 }
- /Description:/ { desc=$2; print idx"\t"name"\t"desc }
-')
-
-if [ "${#sinks[@]}" -eq 0 ]; then
- notify-send "Audio Switch" "No sinks found"
- exit 1
-fi
-
-current_sink=$(pactl get-default-sink)
-
-# Build rofi menu: show description, mark current with a star
-menu=""
-for line in "${sinks[@]}"; do
- name=$(echo "$line" | cut -f2)
- desc=$(echo "$line" | cut -f3)
- if [ "$name" = "$current_sink" ]; then
- menu+="* $desc\n"
- else
- menu+=" $desc\n"
- fi
-done
-
-chosen=$(echo -e "$menu" | rofi -dmenu -i -p "Audio Output" -markup-rows \
- -theme-str 'listview { lines: 3; }' \
- -theme-str 'window { height: 220px; }')
-
-[ -z "$chosen" ] && exit 0
-
-# Strip the leading marker to match description text
-chosen_desc=$(echo "$chosen" | sed 's/^[* ] //')
-
-# Find matching sink name for that description
-target_name=""
-for line in "${sinks[@]}"; do
- desc=$(echo "$line" | cut -f3)
- if [ "$desc" = "$chosen_desc" ]; then
- target_name=$(echo "$line" | cut -f2)
- break
- fi
-done
-
-if [ -z "$target_name" ]; then
- notify-send "Audio Switch" "Could not resolve selection"
- exit 1
-fi
-
-# Set as default sink
-pactl set-default-sink "$target_name"
-
-# Move all currently running streams to the new sink
-mapfile -t inputs < <(pactl list short sink-inputs | cut -f1)
-for input in "${inputs[@]}"; do
- pactl move-sink-input "$input" "$target_name"
-done
-
-notify-send "Audio Switch" "Switched to: $chosen_desc"
diff --git a/scripts/bin/powermenu b/scripts/bin/powermenu
deleted file mode 100755
index fb1fa44..0000000
--- a/scripts/bin/powermenu
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env bash
-# rofi-power-menu: logout / restart / shutdown via rofi
-
-set -euo pipefail
-
-awesome-client 'show_dim()' >/dev/null 2>&1
-trap 'awesome-client "hide_dim()" >/dev/null 2>&1' EXIT
-
-options=" Logout\n Restart\n Shutdown"
-
-chosen=$(echo -e "$options" | rofi -dmenu -i -p "Power" -markup-rows \
- -theme-str 'listview { lines: 3; }' \
- -theme-str 'window { height: 240px; }')
-
-[ -z "$chosen" ] && exit 0
-
-case "$chosen" in
- *Logout*)
- loginctl terminate-session ${XDG_SESSION_ID-}
- ;;
- *Restart*)
- loginctl reboot
- ;;
- *Shutdown*)
- loginctl poweroff
- ;;
-esac
diff --git a/scripts/bin/runrofi b/scripts/bin/runrofi
deleted file mode 100755
index 7038376..0000000
--- a/scripts/bin/runrofi
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-awesome-client 'show_dim()'
-rofi -show drun "$@"
-awesome-client 'hide_dim()'