diff --git a/lua/modules/swayosd.lua b/lua/modules/swayosd.lua new file mode 100644 index 0000000..699183f --- /dev/null +++ b/lua/modules/swayosd.lua @@ -0,0 +1,88 @@ +local settings = require("lua.lib.settings") +local systemd = require("lua.lib.systemd") +local utils = require("lua.lib.utils") +local bind = require("lua.lib.bind") +require("lua.lib.globals") +local M = {} + +local function start_swayosd() + if settings["systemd"] then + local unit = "swayosd.service" + local source = CONFIG_HOME .. "hypr/systemd/" .. unit + + if systemd.ensure_user_unit(unit, source) then + hl.exec_cmd("systemctl --user start swayosd") + else + hl.exec_cmd("swayosd-server") + end + else + hl.exec_cmd("swayosd-server") + end +end + +local function stop_swayosd() + if settings["systemd"] and utils.command_success("systemctl --user status swayosd") then + hl.exec_cmd("systemctl --user stop swayosd") + else + hl.exec_cmd("pkill -9 swayosd-server") + end +end + +M.autostart = { + start_swayosd, +} + +M.autostop = { + stop_swayosd, +} + +local function swayosd_client_cmd(args) + return hl.dsp.exec_cmd("swayosd-client " .. args) +end + +M.binds = { + function() + bind.key( + "XF86MonBrightnessUp", + swayosd_client_cmd("--brightness raise"), + "Increase brightness ", + { long_press = true, locked = true } + ) + bind.key( + "XF86MonBrightnessDown", + swayosd_client_cmd("--brightness lower"), + "Decrease brightness ", + { long_press = true, locked = true } + ) + bind.key( + "XF86AudioRaiseVolume", + swayosd_client_cmd("--output-volume raise"), + "Increase brightness ", + { long_press = true, locked = true } + ) + bind.key( + "XF86AudioLowerVolume", + swayosd_client_cmd("--output-volume lower"), + "Decrease brightness ", + { long_press = true, locked = true } + ) + bind.key( + "XF86AudioMute", + swayosd_client_cmd("--output-volume mute-toggle"), + "Toggle output mute", + { long_press = true, locked = true } + ) + bind.key( + "XF86AudioMicMute", + swayosd_client_cmd("--input-volume mute-toggle"), + "Toggle input mute", + { long_press = true, locked = true } + ) + bind.key("XF86AudioPlay", swayosd_client_cmd("--playerctl play-pause"), "Player play/pause", { locked = true }) + bind.key("XF86AudioPause", swayosd_client_cmd("--playerctl pause"), "Player pause", { locked = true }) + bind.key("XF86AudioNext", swayosd_client_cmd("--playerctl next"), "Player next", { locked = true }) + bind.key("XF86AudioPrev", swayosd_client_cmd("--playerctl prev"), "Player previous", { locked = true }) + end, +} + +return M diff --git a/systemd/swayosd.service b/systemd/swayosd.service new file mode 100644 index 0000000..86ffa23 --- /dev/null +++ b/systemd/swayosd.service @@ -0,0 +1,12 @@ +[Unit] +Description=SwayOSD +After=graphical-session.target +PartOf=graphical-session.target + +[Service] +Type=simple +ExecStart=/usr/bin/swayosd-server +Restart=on-failure +RestartSec=1 + +[Install]