local browser = "kitty --class \"custom-browserprofiles\" --name \"Select browser profile\" --hold custom-browserprofiles" local editor = "nvim" local file = "dolphin" local mod = "SUPER" local notes = "kitty --class \"custom-obsidianvaults\" --name \"Select Obsidian vault\" --hold custom-obsidianvaults" local term = "kitty" local function close_or_move_special() local window = hl.get_active_window() if not window then return end local class = window.class or window.initial_class if class == "Steam" or class == "custom-pomodoro" then hl.dispatch(hl.dsp.window.move({ workspace = "special" })) else hl.dispatch(hl.dsp.window.close({ window = window })) end end local function close_other_windows() local active = hl.get_active_window() local workspace = hl.get_active_workspace() if not active or not workspace then return end for _, window in pairs(hl.get_windows()) do if window.workspace and window.workspace.id == workspace.id and window.address ~= active.address then hl.dispatch(hl.dsp.window.close({ window = window })) end end end local wallpapers_enabled = true local wallpapers = { [1] = "WALLPAPER1/PATH/PLACEHOLDER", [2] = "WALLPAPER2/PATH/PLACEHOLDER", [3] = "WALLPAPER3/PATH/PLACEHOLDER", [4] = "WALLPAPER4/PATH/PLACEHOLDER", [5] = "WALLPAPER5/PATH/PLACEHOLDER", [6] = "WALLPAPER1/PATH/PLACEHOLDER", [7] = "WALLPAPER2/PATH/PLACEHOLDER", [8] = "WALLPAPER3/PATH/PLACEHOLDER", [9] = "WALLPAPER4/PATH/PLACEHOLDER", [10] = "WALLPAPER5/PATH/PLACEHOLDER", } local function set_wallpaper(workspace) if not wallpapers_enabled then return end local wallpaper = wallpapers[workspace.id] if wallpaper then hl.exec_cmd("awww img -t none " .. wallpaper) end end hl.on("workspace.active", set_wallpaper) local performance_mode = false local saved_brightness = nil local function get_brightness() local handle = io.popen("brightnessctl get 2>/dev/null") if not handle then return nil end local value = handle:read("*a") handle:close() if not value then return nil end value = value:gsub("%s+$", "") return tonumber(value) end local function set_performance_mode() if performance_mode then hl.monitor({ output = "eDP-1", mode = "2560x1600@165", position = "0x0", scale = 1, }) hl.exec_cmd("pkill swaync || true") hl.exec_cmd("pkill waybar || true") hl.exec_cmd("caelestia shell -d") if saved_brightness then hl.exec_cmd("brightnessctl set " .. saved_brightness) end saved_brightness = nil wallpapers_enabled = true performance_mode = false hl.exec_cmd("hyprctl reload") local workspace = hl.get_active_workspace() if workspace then set_wallpaper(workspace) end hl.notification.create({ text = "Battery Saver", subtext = "Disabled", timeout = 3000, }) return end -- Save current brightness. saved_brightness = get_brightness() -- Lower refresh rate. hl.monitor({ output = "eDP-1", mode = "2560x1600@60", position = "0x0", scale = 1, }) -- Stop heavy UI components. hl.exec_cmd("pkill -f caelestia-shell || true") hl.exec_cmd("pkill -f caelestia || true") -- Start lightweight notification daemon. hl.exec_cmd("pkill swaync || true") hl.exec_cmd("swaync") -- Start lightweight status bar. hl.exec_cmd("pkill waybar || true") hl.exec_cmd("waybar") -- Disable expensive Hyprland effects. hl.config({ animations = { enabled = false, }, decoration = { shadow = { enabled = false, }, blur = { enabled = false, }, rounding = 0, fullscreen_opacity = 1, active_opacity = 1, inactive_opacity = 1, }, general = { gaps_in = 0, gaps_out = 0, border_size = 1, }, misc = { vfr = 1, }, }) -- Lower brightness. hl.exec_cmd("brightnessctl set 5%") -- Disable workspace wallpaper switching. wallpapers_enabled = false performance_mode = true hl.notification.create({ text = "Battery Saver", subtext = "Enabled", timeout = 3000, }) end hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } }) hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.1 }, { 0.1, 1.1 } } }) hl.curve("winOut", { type = "bezier", points = { { 0.3, -0.3 }, { 0, 1 } } }) hl.curve("liner", { type = "bezier", points = { { 1, 1 }, { 1, 1 } } }) hl.animation({ leaf = "windows", enabled = true, speed = 6, bezier = "wind", style = "slide", }) hl.animation({ leaf = "windowsIn", enabled = true, speed = 6, bezier = "winIn", style = "slide", }) hl.animation({ leaf = "windowsOut", enabled = true, speed = 5, bezier = "winOut", style = "slide", }) hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "wind", style = "slide", }) hl.animation({ leaf = "border", enabled = true, speed = 1, bezier = "liner", }) hl.animation({ leaf = "borderangle", enabled = true, speed = 30, bezier = "liner", style = "loop", }) hl.animation({ leaf = "fade", enabled = true, speed = 10, bezier = "default", }) hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "wind", }) hl.bind(mod .. " + W", hl.dsp.window.float({ action = "toggle" })) hl.bind(mod .. " + G", hl.dsp.group.toggle()) hl.bind("ALT + Return", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" })) hl.bind(mod .. " + Left", hl.dsp.focus({ direction = "left" })) hl.bind(mod .. " + Right", hl.dsp.focus({ direction = "right" })) hl.bind(mod .. " + CTRL + D", hl.dsp.layout("swapcol r")) hl.bind(mod .. " + CTRL + A", hl.dsp.layout("swapcol l")) hl.bind(mod .. " + Up", hl.dsp.focus({ direction = "up" })) hl.bind(mod .. " + Down", hl.dsp.focus({ direction = "down" })) hl.bind("ALT + Tab", hl.dsp.focus({ direction = "down" })) hl.bind(mod .. " + 1", hl.dsp.focus({ workspace = 1 })) hl.bind(mod .. " + 2", hl.dsp.focus({ workspace = 2 })) hl.bind(mod .. " + 3", hl.dsp.focus({ workspace = 3 })) hl.bind(mod .. " + 4", hl.dsp.focus({ workspace = 4 })) hl.bind(mod .. " + 5", hl.dsp.focus({ workspace = 5 })) hl.bind(mod .. " + 6", hl.dsp.focus({ workspace = 6 })) hl.bind(mod .. " + 7", hl.dsp.focus({ workspace = 7 })) hl.bind(mod .. " + 8", hl.dsp.focus({ workspace = 8 })) hl.bind(mod .. " + 9", hl.dsp.focus({ workspace = 9 })) hl.bind(mod .. " + 0", hl.dsp.focus({ workspace = 10 })) hl.bind(mod .. " + CTRL + Right", hl.dsp.focus({ workspace = "r+1" })) hl.bind(mod .. " + CTRL + Left", hl.dsp.focus({ workspace = "r-1" })) hl.bind(mod .. " + CTRL + Down", hl.dsp.focus({ workspace = "empty" })) hl.bind(mod .. " + SHIFT + 1", hl.dsp.window.move({ workspace = 1 })) hl.bind(mod .. " + SHIFT + 2", hl.dsp.window.move({ workspace = 2 })) hl.bind(mod .. " + SHIFT + 3", hl.dsp.window.move({ workspace = 3 })) hl.bind(mod .. " + SHIFT + 4", hl.dsp.window.move({ workspace = 4 })) hl.bind(mod .. " + SHIFT + 5", hl.dsp.window.move({ workspace = 5 })) hl.bind(mod .. " + SHIFT + 6", hl.dsp.window.move({ workspace = 6 })) hl.bind(mod .. " + SHIFT + 7", hl.dsp.window.move({ workspace = 7 })) hl.bind(mod .. " + SHIFT + 8", hl.dsp.window.move({ workspace = 8 })) hl.bind(mod .. " + SHIFT + 9", hl.dsp.window.move({ workspace = 9 })) hl.bind(mod .. " + SHIFT + 0", hl.dsp.window.move({ workspace = 10 })) hl.bind(mod .. " + CTRL + ALT + Right", hl.dsp.window.move({ workspace = "r+1" })) hl.bind(mod .." + CTRL + ALT + Left", hl.dsp.window.move({ workspace = "r-1" })) hl.bind(mod .. " + Backspace", hl.dsp.exec_cmd("caelestia shell drawers toggle session")) hl.bind(mod .. " + SHIFT + CTRL + Left", hl.dsp.window.move({ direction = "l" })) hl.bind(mod .. " + SHIFT + CTRL + Right", hl.dsp.window.move({ direction = "r" })) hl.bind(mod .. " + SHIFT + CTRL + Up", hl.dsp.window.move({ direction = "u" })) hl.bind(mod .. " + SHIFT + CTRL + Down", hl.dsp.window.move({ direction = "d" })) hl.bind(mod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" })) hl.bind(mod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" })) hl.bind(mod .. " + V", hl.dsp.exec_cmd("cliphist list | rofi -dmenu| cliphist decode | wl-copy")) hl.bind(mod .. " + B", hl.dsp.exec_cmd("hyprkeys -bkr | rofi -dmenu")) hl.bind(mod .. " + S", hl.dsp.workspace.toggle_special("")) hl.bind(mod .. " + ALT + S", hl.dsp.window.move({ workspace = "special" })) hl.bind(mod .. " + A", hl.dsp.layout("move -col")) hl.bind(mod .. " + D", hl.dsp.layout("move +col")) hl.bind(mod .. " + T", hl.dsp.exec_cmd(term)) hl.bind(mod .. " + E", hl.dsp.exec_cmd(file)) hl.bind(mod .. " + F", hl.dsp.exec_cmd(browser)) hl.bind(mod .. " + N", hl.dsp.exec_cmd("kitty --hold --class \"custom-vpn-picker\" --name \"Select vpn option\" custom-vpn-picker")) hl.bind(mod .. " + SHIFT + A", hl.dsp.exec_cmd("caelestia shell drawers toggle launcher")) hl.bind(mod .. " + Q", close_or_move_special) local function toggle_sidebar() if performance_mode then hl.exec_cmd("swaync-client -t") else hl.exec_cmd("caelestia shell drawers toggle sidebar") end end hl.bind("CTRL + ALT + W", toggle_sidebar) hl.bind(mod .. " + L", hl.dsp.exec_cmd("caelestia shell lock lock")) hl.bind("F11", hl.dsp.exec_cmd("caelestia screenshot")) hl.bind(mod .. " + SHIFT + S", hl.dsp.exec_cmd("caelestia shell picker open")) hl.bind(mod .. " + CTRL + 6", close_other_windows) hl.bind("CTRL + ALT + 7", set_performance_mode) hl.bind("CTRL + ALT + 1", hl.dsp.exec_cmd("caelestia shell drawers toggle sidebar")) hl.bind(mod .. " + CTRL + 4", hl.dsp.exec_cmd("caelestia shell notifs toggleDnd")) hl.bind(mod .. " + CTRL + 3", hl.dsp.exec_cmd("pavucontrol")) hl.bind("CTRL + SHIFT + ALT + 0", hl.dsp.exec_cmd("kitty --hold --class \"custom-changeAudioOutput\" --name \"Select audio output\" zsh -c \"custom-changeAudioOutput\"")) hl.bind(mod .. " + CTRL + 5", hl.dsp.exec_cmd("gnome-characters")) hl.bind("CTRL + ALT + 8", hl.dsp.exec_cmd("hyprpicker | tee >(wl-copy) | cliphist store")) hl.bind("CTRL + ALT + 0", hl.dsp.exec_cmd("custom-tomato")) hl.bind("CTRL + ALT + 2", hl.dsp.exec_cmd("custom-bottom")) hl.bind("CTRL + ALT + 9", hl.dsp.exec_cmd("anki")) hl.bind(mod .. " + SHIFT + Right", hl.dsp.window.resize({ x = 30, y = 0, relative = true }), { repeating = true }) -- TODO: manual review on line 93 — resizeactive: expected 'X Y' or 'X% Y%', got "-30" -- hl.bind("SUPER + SHIFT + Left", hl.dsp.resizeactive(-30, 0), { repeating = true }) hl.bind(mod .. " + SHIFT + Up", hl.dsp.window.resize({ x = 0, y = -30, relative = true }), { repeating = true }) -- TODO: manual review on line 95 — resizeactive: expected 'X Y' or 'X% Y%', got "m 0 30" -- hl.bind("SUPER + SHIFT + Down", hl.dsp.resizeactive("m 0 30"), { repeating = true }) hl.bind("F2", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ -10%"), { locked = true, repeating = true }) hl.bind("F3", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ +10%"), { locked = true, repeating = true }) hl.bind("F7", hl.dsp.exec_cmd("brightnessctl s 10%-"), { locked = true, repeating = true }) hl.bind("F8", hl.dsp.exec_cmd("brightnessctl s +10%"), { locked = true, repeating = true }) hl.bind("F1", hl.dsp.exec_cmd("pactl set-sink-mute @DEFAULT_SINK@ toggle"), { locked = true }) hl.bind("F5", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) hl.bind("F4", hl.dsp.exec_cmd("playerctl previous"), { locked = true }) hl.bind("F6", hl.dsp.exec_cmd("playerctl next"), { locked = true }) hl.bind(mod .. " + mouse:272", hl.dsp.window.drag()) hl.bind(mod .. " + mouse:273", hl.dsp.window.resize()) hl.bind(mod .. " + Z", hl.dsp.window.drag()) hl.bind(mod .. " + X", hl.dsp.window.resize()) hl.env("XDG_CURRENT_DESKTOP", "Hyprland") hl.env("XDG_SESSION_TYPE", "wayland") hl.env("XDG_SESSION_DESKTOP", "Hyprland") hl.env("QT_QPA_PLATFORM", "wayland;xcb") hl.env("QT_QPAPLATFORMTHEME", "qt6ct") hl.env("QT_WAYLAND_DISABLE_WINDOWDECORATION", "1") hl.env("MOZ_ENABLE_WAYLAND", "1") hl.env("GDK_SCALE", "1") hl.gesture({ fingers = 3, direction = "horizontal", action = "scroll_move", }) hl.gesture({ fingers = 2, direction = "pinch", action = "cursor_zoom", mode = "live", }) --hl.layer_rule({ -- match = { namespace = "ignore_alpha 0" }, -- TODO: manual review — unmapped layer rule: "blur on" -- TODO: manual review — unmapped layer rule: "blur on" -- TODO: manual review — unmapped layer rule: "blur on" -- TODO: manual review — unmapped layer rule: "blur on" --}) --hl.layer_rule({ -- match = { namespace = "match:namespace logout_dialog" }, -- TODO: manual review — unmapped layer rule: "blur on" --) hl.monitor({ output = "eDP-1", mode = "highres@highrr", position = "0x0", scale = "1", }) hl.monitor({ output = "HDMI-A-1", mode = "highres2highrr", position = "auto-left", scale = "1", }) -- TODO: manual review — plugin section 'dynamic-cursors'. The new Lua API exposes plugins via hl.plugin.(...) — wire up per the plugin's docs. --[[ rotate { ... } shake { ... } enabled = true mode = rotate threshold = 2 ]] -- TODO: manual review — plugin section 'overview'. The new Lua API exposes plugins via hl.plugin.(...) — wire up per the plugin's docs. --[[ disableBlur = true disableGestures = true showEmptyWorkspace = true workspaceActiveBorder = rgb(ab7746) ]] hl.window_rule({ match = { class = "^(firefox)$", }, opacity = "0.90 0.90", }) hl.window_rule({ match = { class = "^(Brave-browser)$", }, opacity = "0.90 0.90", }) hl.window_rule({ match = { class = "^(code-oss)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(Code)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(code-url-handler)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(code-insiders-url-handler)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(kitty)$", }, opacity = "0.75 0.75", }) hl.window_rule({ match = { class = "^(org.kde.dolphin)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(org.kde.ark)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(nwg-look)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(qt5ct)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(qt6ct)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(kvantummanager)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(org.pulseaudio.pavucontrol)$", }, opacity = "0.80 0.70", float = true, }) hl.window_rule({ match = { class = "^(blueman-manager)$", }, opacity = "0.80 0.70", float = true, }) hl.window_rule({ match = { class = "^(nm-applet)$", }, opacity = "0.80 0.70", float = true, }) hl.window_rule({ match = { class = "^(nm-connection-editor)$", }, opacity = "0.80 0.70", float = true, }) hl.window_rule({ match = { class = "^(org.kde.polkit-kde-authentication-agent-1)$", }, opacity = "0.80 0.70", float = true, }) hl.window_rule({ match = { class = "^(polkit-gnome-authentication-agent-1)$", }, opacity = "0.80 0.70", }) hl.window_rule({ match = { class = "^(org.freedesktop.impl.portal.desktop.gtk)$", }, opacity = "0.80 0.70", }) hl.window_rule({ match = { class = "^(org.freedesktop.impl.portal.desktop.hyprland)$", }, opacity = "0.80 0.70", }) hl.window_rule({ match = { class = "^([Ss]team)$", }, opacity = "0.70 0.70", }) hl.window_rule({ match = { class = "^(steamwebhelper)$", }, opacity = "0.70 0.70", }) hl.window_rule({ match = { class = "^(Spotify)$", }, opacity = "0.70 0.70", }) hl.window_rule({ match = { initial_title = "^(Spotify Free)$", }, opacity = "0.70 0.70", }) hl.window_rule({ match = { class = "^(com.github.rafostar.Clapper)$", }, opacity = "0.90 0.90", float = true, }) hl.window_rule({ match = { class = "^(com.github.tchx84.Flatseal)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(hu.kramo.Cartridges)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(com.obsproject.Studio)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(gnome-boxes)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(discord)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(WebCord)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(ArmCord)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(app.drey.Warp)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(net.davidotek.pupgui2)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(yad)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(Signal)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(io.github.alainm23.planify)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(io.gitlab.theevilskeleton.Upscaler)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(com.github.unrud.VideoDownloader)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(io.gitlab.adhami3310.Impression)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(io.missioncenter.MissionCenter)$", }, opacity = "0.80 0.80", float = true, }) hl.window_rule({ match = { class = "^(io.github.flattool.Warehouse)$", }, opacity = "0.80 0.80", }) hl.window_rule({ match = { class = "^(org.kde.dolphin)$", title = "^(Progress Dialog — Dolphin)$", }, float = true, }) hl.window_rule({ match = { class = "^(org.kde.dolphin)$", title = "^(Copying — Dolphin)$", }, float = true, }) hl.window_rule({ match = { class = "^(firefox)$", title = "^(Picture-in-Picture)$", }, float = true, }) hl.window_rule({ match = { class = "^(firefox)$", title = "^(Library)$", }, float = true, }) hl.window_rule({ match = { class = "^(kitty)$", title = "^(top)$", }, float = true, }) hl.window_rule({ match = { class = "^(kitty)$", title = "^(btop)$", }, float = true, }) hl.window_rule({ match = { class = "^(kitty)$", title = "^(htop)$", }, float = true, }) hl.window_rule({ match = { class = "^(vlc)$", }, float = true, }) hl.window_rule({ match = { class = "^(eog)$", }, float = true, }) hl.window_rule({ match = { class = "^(custom-browserprofiles)$", }, float = true, size = "400 225", }) hl.window_rule({ match = { class = "^(custom-vpn-picker)$", }, float = true, size = "350 250", }) hl.window_rule({ match = { class = "^(custom-changeAudioOutput)$", }, float = true, size = "1050 200", }) hl.window_rule({ match = { class = "^(custom-obsidianvaults)$", }, float = true, size = "400 175", }) hl.window_rule({ match = { initial_class = "^(custom-pomodoro)$", }, float = true, size = "600 600", }) hl.window_rule({ match = { initial_class = "^(custom-bottom)$", }, float = true, size = "1500 800", }) hl.workspace_rule({ workspace = "1", layout = "master", }) hl.workspace_rule({ workspace = "2", layout = "scrolling", }) hl.workspace_rule({ workspace = "special", layout = "scrolling", }) -- TODO: manual review — top-level key 'splash = true' has no enclosing section hl.config({ animations = { enabled = true, }, decoration = { blur = { enabled = true, ignore_opacity = true, new_optimizations = true, passes = 2, size = 4, special = true, }, dim_special = 0.300000, rounding = 18, }, dwindle = { preserve_split = true, }, general = { border_size = 4, col = { active_border = { colors = { "rgba(ca6702ff)", "rgba(ecd3a0ff)" }, angle = 45 }, inactive_border = { colors = { "rgba(f1dca7d9)", "rgba(ffe1a8d9)" }, angle = 45 }, }, gaps_in = 5, gaps_out = 15, layout = "dwindle", resize_on_border = true, }, group = { col = { border_active = { colors = { "rgba(ca6702ff)", "rgba(ecd3a0ff)" }, angle = 45 }, border_inactive = { colors = { "rgba(f1dca7d9)", "rgba(ffe1a8d9)" }, angle = 45 }, border_locked_active = { colors = { "rgba(ca6702ff)", "rgba(ecd3a0ff)" }, angle = 45 }, border_locked_inactive = { colors = { "rgba(f1dca7d9)", "rgba(ffe1a8d9)" }, angle = 45 }, }, }, input = { kb_layout = "ch", follow_mouse = 1, force_no_accel = 1, sensitivity = 0, }, misc = { force_default_wallpaper = 0, vrr = 0, }, scrolling = { column_width = 0.450000, }, xwayland = { force_zero_scaling = true, }, }) hl.on("hyprland.start", function() hl.exec_cmd("/nix/store/8kih8alkk4qzgjchg5501r1c3a8a71aw-dbus-1.16.2/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target") hl.exec_cmd("source /run/agenix/ntfy && nixpkgs-notifier listen") hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP") hl.exec_cmd("dbus-update-activation-environment --systemd --all") hl.exec_cmd("systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP") hl.exec_cmd("systemctl --user start xdg-desktop-portal-wlr.service") hl.exec_cmd("blueman-applet") hl.exec_cmd("udiskie --no-automount --smart-tray") hl.exec_cmd("nm-applet --indicator") hl.exec_cmd("rm -rf ~/.cache/cliphist/ && wl-paste --type text --watch cliphist store & wl-paste --type image --watch cliphist store") -- hl.exec_cmd("custom-batterynotify") -- hl.exec_cmd("custom-batterywarning") hl.exec_cmd("awww img WALLPAPER/PATH/PLACEHOLDER") hl.exec_cmd("awww-daemon") hl.exec_cmd("custom-checkKdrive && custom-mountkdrive") hl.exec_cmd("custom-gitnotify") hl.exec_cmd("sleep 4 & caelestia-shell") hl.exec_cmd("sleep 20 && ngcp pull --automatic") end) -- host specific config require("host")