This commit is contained in:
2026-07-21 22:04:54 +01:00
parent dcd46eafb9
commit d07b2e5079
6 changed files with 392 additions and 387 deletions
+6
View File
@@ -0,0 +1,6 @@
column_width = 160
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 4
quote_style = "AutoPreferSingle"
call_parentheses = "None"
+224 -223
View File
@@ -1,387 +1,388 @@
-- Browser types -- Browser types
hl.window_rule({ hl.window_rule {
name = "chromium-browser-tags", name = 'chromium-browser-tags',
tag = "+chromium-based-browser", tag = '+chromium-based-browser',
match = { match = {
class = "((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)", class = '((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "firefox-tags", name = 'firefox-tags',
tag = "+firefox-based-browser", tag = '+firefox-based-browser',
match = { match = {
class = "([fF]irefox|zen|librewolf)", class = '([fF]irefox|zen|librewolf)',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "chromium-browser-opacity-tags", name = 'chromium-browser-opacity-tags',
tag = "-default-opacity", tag = '-default-opacity',
match = { match = {
tag = "chromium-based-browser", tag = 'chromium-based-browser',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "firefox-browser-opacity-tags", name = 'firefox-browser-opacity-tags',
tag = "-default-opacity", tag = '-default-opacity',
match = { match = {
tag = "firefox-based-browser", tag = 'firefox-based-browser',
}, },
}) }
-- Video apps: remove chromium browser tag so they don't get opacity applied -- Video apps: remove chromium browser tag so they don't get opacity applied
hl.window_rule({ hl.window_rule {
name = "video-apps-no-browser-tag", name = 'video-apps-no-browser-tag',
tag = "-chromium-based-browser", tag = '-chromium-based-browser',
match = { match = {
class = "(chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default)", class = '(chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default)',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "video-apps-no-opacity-tag", name = 'video-apps-no-opacity-tag',
tag = "-default-opacity", tag = '-default-opacity',
match = { match = {
class = "(chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default)", class = '(chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default)',
}, },
}) }
-- Force chromium-based browsers into a tile to deal with --app bug -- Force chromium-based browsers into a tile to deal with --app bug
hl.window_rule({ hl.window_rule {
name = "chromium-tile", name = 'chromium-tile',
tile = true, tile = true,
match = { match = {
tag = "chromium-based-browser", tag = 'chromium-based-browser',
}, },
}) }
-- Only a subtle opacity change, but not for video sites -- Only a subtle opacity change, but not for video sites
hl.window_rule({ hl.window_rule {
name = "chromium-browser-subtle-opacity", name = 'chromium-browser-subtle-opacity',
opacity = "1.0 0.97", opacity = '1.0 0.97',
match = { match = {
tag = "chromium-based-browser", tag = 'chromium-based-browser',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "firefox-browser-subtle-opacity", name = 'firefox-browser-subtle-opacity',
opacity = "1.0 0.97", opacity = '1.0 0.97',
match = { match = {
tag = "firefox-based-browser", tag = 'firefox-based-browser',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "geforce-now", name = 'geforce-now',
idle_inhibit = "fullscreen", idle_inhibit = 'fullscreen',
match = { match = {
class = "GeForceNOW", class = 'GeForceNOW',
}, },
}) }
-- Remove 1px border around hyprshot screenshots -- Remove 1px border around hyprshot screenshots
hl.layer_rule({ hl.layer_rule {
name = "no-anim-for-selection", name = 'no-anim-for-selection',
match = { namespace = "selection" }, match = { namespace = 'selection' },
no_anim = true, no_anim = true,
}) }
-- Jetbrains -- Jetbrains
-- Fix splash screen showing in weird places and prevent annoying focus takeovers -- Fix splash screen showing in weird places and prevent annoying focus takeovers
hl.window_rule({ hl.window_rule {
name = "jetbrains-splash", name = 'jetbrains-splash',
tag = "+jetbrains-splash", tag = '+jetbrains-splash',
center = true, center = true,
no_focus = true, no_focus = true,
border_size = 0, border_size = 0,
match = { match = {
class = "^(jetbrains-.*)$", class = '^(jetbrains-.*)$',
title = "^(splash)$", title = '^(splash)$',
float = true, float = true,
}, },
}) }
-- Center popups/find windows -- Center popups/find windows
hl.window_rule({ hl.window_rule {
name = "jetbrains-popups", name = 'jetbrains-popups',
center = true, center = true,
stay_focused = true, stay_focused = true,
border_size = 0, border_size = 0,
min_size = { "(monitor_w*0.5)", "(monitor_h*0.5)" }, min_size = { '(monitor_w*0.5)', '(monitor_h*0.5)' },
tag = "+jetbrains", tag = '+jetbrains',
match = { match = {
class = "^(jetbrains-.*)$", class = '^(jetbrains-.*)$',
title = "^()$", title = '^()$',
float = true, float = true,
}, },
}) }
-- Disable window flicker when autocomplete or tooltips appear -- Disable window flicker when autocomplete or tooltips appear
hl.window_rule({ hl.window_rule {
name = "jetbrains-tooltip", name = 'jetbrains-tooltip',
no_initial_focus = true, no_initial_focus = true,
match = { match = {
class = "^(jetbrains-.*)$", class = '^(jetbrains-.*)$',
title = "^(win.*)$", title = '^(win.*)$',
float = true, float = true,
}, },
}) }
-- Disable mouse focus -- Disable mouse focus
hl.window_rule({ hl.window_rule {
name = "jetbrains-no-follow-mouse", name = 'jetbrains-no-follow-mouse',
no_follow_mouse = true, no_follow_mouse = true,
match = { match = {
class = "^(jetbrains-.*)$", class = '^(jetbrains-.*)$',
}, },
}) }
-- Keep enpass focused -- Keep enpass focused
hl.window_rule({ hl.window_rule {
name = "enpass-assistant", name = 'enpass-assistant',
stay_focused = true, stay_focused = true,
center = true, center = true,
match = { match = {
class = "^(Enpass)$", class = '^(Enpass)$',
title = "^(Enpass Assistant)$", title = '^(Enpass Assistant)$',
}, },
}) }
-- Float LocalSend and fzf file picker -- Float LocalSend and fzf file picker
hl.window_rule({ hl.window_rule {
name = "localsend-float", name = 'localsend-float',
float = true, float = true,
center = true, center = true,
match = { match = {
class = "(localsend|Share|fzf-file-picker)", class = '(localsend|Share|fzf-file-picker)',
}, },
}) }
-- Picture-in-picture overlays -- Picture-in-picture overlays
hl.window_rule({ hl.window_rule {
name = "pip-overlay", name = 'pip-overlay',
tag = "+pip", tag = '+pip',
match = { match = {
title = "(Picture.?in.?[Pp]icture)", title = '(Picture.?in.?[Pp]icture)',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "pip-overlay", name = 'pip-overlay',
tag = "-default-opacity", tag = '-default-opacity',
float = true, float = true,
pin = true, pin = true,
size = { 600, 338 }, size = { 600, 338 },
keep_aspect_ratio = true, keep_aspect_ratio = true,
border_size = 0, border_size = 0,
opacity = "1 1", opacity = '1 1',
match = { match = {
tag = "pip", tag = 'pip',
}, },
}) }
-- Retroarch -- Retroarch
hl.window_rule({ hl.window_rule {
name = "retroarch-fullscreen", name = 'retroarch-fullscreen',
fullscreen = true, fullscreen = true,
workspace = "name:Gaming_1", workspace = 'name:Gaming_1',
tag = "-default-opacity", tag = '-default-opacity',
opacity = "1 1", opacity = '1 1',
idle_inhibit = "fullscreen", idle_inhibit = 'fullscreen',
match = { match = {
class = "com.libretro.RetroArch", class = 'com.libretro.RetroArch',
}, },
}) }
-- Scratchpad apps -- Scratchpad apps
hl.window_rule({ hl.window_rule {
name = "spotify-scratchpad", name = 'spotify-scratchpad',
workspace = "special:scratchpad", workspace = 'special:music',
match = { match = {
class = "Spotify", class = 'Spotify|psysonic',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "signal-scratchpad", name = 'comms-scratchpad',
workspace = "special:scratchpad", workspace = 'special:comms',
match = { match = {
class = "signal", class = '^(chrome-discord.com__channels_@me-Default|chrome-web.whatsapp.com__-Default|signal)$',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "discord-scratchpad", name = 'superproductivity-scratchpad',
workspace = "special:scratchpad", workspace = 'special:prod',
match = { match = {
class = "^(chrome-discord.com__channels_@me-Default)$", class = '^(superproductivity|org.station.notes)$',
}, },
}) }
-- Float Nextcloud -- Float Nextcloud
hl.window_rule({ hl.window_rule {
name = "nextcloud-float", name = 'nextcloud-float',
float = true, float = true,
match = { match = {
class = "com.nextcloud.desktopclient.nextcloud", class = 'com.nextcloud.desktopclient.nextcloud',
}, },
}) }
-- Position drawing -- Position drawing
hl.window_rule({ hl.window_rule {
name = "krita-drawing", name = 'krita-drawing',
workspace = "name:Art_1", workspace = 'name:Art_1',
tag = "-default-opacity", tag = '-default-opacity',
opacity = "1 1", opacity = '1 1',
match = { match = {
class = "(krita)", class = '(krita)',
}, },
}) }
-- Float Steam -- Float Steam
hl.window_rule({ hl.window_rule {
name = "steam-float", name = 'steam-float',
float = true, float = true,
no_initial_focus = true, no_initial_focus = true,
workspace = "name:Gaming_1", workspace = 'name:Gaming_1',
idle_inhibit = "fullscreen", idle_inhibit = 'fullscreen',
match = { match = {
class = "steam", class = 'steam',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "steam-app-size", name = 'steam-app-size',
center = true, center = true,
match = { match = {
class = "steam", class = 'steam',
title = "Steam", title = 'Steam',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "steam-opacity", name = 'steam-opacity',
tag = "-default-opacity", tag = '-default-opacity',
opacity = "1 1", opacity = '1 1',
match = { match = {
class = "steam.*", class = 'steam.*',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "steam-friends-size", name = 'steam-friends-size',
size = { 460, 800 }, size = { 460, 800 },
match = { match = {
class = "steam", class = 'steam',
title = "Friends List", title = 'Friends List',
}, },
}) }
-- Float Lunar Client -- Float Lunar Client
hl.window_rule({ hl.window_rule {
name = "atlauncher-float", name = 'atlauncher-float',
float = true, float = true,
workspace = "name:Gaming_1", workspace = 'name:Gaming_1',
center = true, center = true,
size = { 1100, 700 }, size = { 1100, 700 },
tag = "-default-opacity", tag = '-default-opacity',
opacity = "1 1", opacity = '1 1',
idle_inhibit = "fullscreen", idle_inhibit = 'fullscreen',
match = { match = {
class = "atlauncher", class = 'atlauncher',
}, },
}) }
-- Floating windows -- Floating windows
hl.window_rule({ hl.window_rule {
name = "floating-window-tags", name = 'floating-window-tags',
tag = "+floating-window", tag = '+floating-window',
match = { match = {
class = "(org.station.bluetui|org.station.impala|org.station.wiremix|org.station.btop|org.station.terminal|org.station.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Station|About|TUI.float|imv|mpv)", class = '(org.station.bluetui|org.station.impala|org.station.wiremix|org.station.btop|org.station.terminal|org.station.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Station|About|TUI.float|imv|mpv)',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "floating-dialog-tags", name = 'floating-dialog-tags',
tag = "+floating-window", tag = '+floating-window',
match = { match = {
class = "(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus)", class = '(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus)',
title = "^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)", title = '^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "floating-window-tags", name = 'floating-window-tags',
tag = "+floating-window", tag = '+floating-window',
float = true, float = true,
center = true, center = true,
size = { 875, 600 }, size = { 875, 600 },
match = { match = {
tag = "floating-window", tag = 'floating-window',
}, },
}) }
-- Calculator float -- Calculator float
hl.window_rule({ hl.window_rule {
name = "calculator-float", name = 'calculator-float',
float = true, float = true,
match = { match = {
class = "org.gnome.Calculator", class = 'org.gnome.Calculator',
}, },
}) }
-- Fullscreen screensaver -- Fullscreen screensaver
hl.window_rule({ hl.window_rule {
name = "screensaver-fullscreen", name = 'screensaver-fullscreen',
fullscreen = true, fullscreen = true,
float = true, float = true,
animation = "slide", animation = 'slide',
match = { match = {
class = "org.station.screensaver", class = 'org.station.screensaver',
}, },
}) }
-- No transparency on media windows -- No transparency on media windows
hl.window_rule({ hl.window_rule {
name = "media-no-opacity", name = 'media-no-opacity',
tag = "-default-opacity", tag = '-default-opacity',
opacity = "1 1", opacity = '1 1',
match = { match = {
class = "^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$", class = '^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$',
}, },
}) }
-- Popped window rounding -- Popped window rounding
hl.window_rule({ hl.window_rule {
name = "popped-window-rounding", name = 'popped-window-rounding',
rounding = 8, rounding = 8,
match = { match = {
tag = "pop", tag = 'pop',
}, },
}) }
-- Prevent idle while open -- Prevent idle while open
hl.window_rule({ hl.window_rule {
name = "idle-inhibit-apps", name = 'idle-inhibit-apps',
idle_inhibit = "always", idle_inhibit = 'always',
match = { match = {
tag = "noidle", tag = 'noidle',
}, },
}) }
-- Prevent Telegram from stealing focus on new messages -- Prevent Telegram from stealing focus on new messages
hl.window_rule({ hl.window_rule {
name = "telegram-no-focus-steal", name = 'telegram-no-focus-steal',
focus_on_activate = false, focus_on_activate = false,
match = { match = {
class = "org.telegram.desktop", class = 'org.telegram.desktop',
}, },
}) }
-- Define terminal tag to style them uniformly -- Define terminal tag to style them uniformly
hl.window_rule({ hl.window_rule {
name = "terminal-tags", name = 'terminal-tags',
tag = "+terminal", tag = '+terminal',
match = { match = {
class = "(Alacritty|kitty|com.mitchellh.ghostty)", class = '(Alacritty|kitty|com.mitchellh.ghostty)',
}, },
}) }
hl.window_rule({ hl.window_rule {
name = "terminal-opacity-tags", name = 'terminal-opacity-tags',
tag = "-default-opacity", tag = '-default-opacity',
opacity = "0.97 0.9", opacity = '0.97 0.9',
match = { match = {
tag = "terminal", tag = 'terminal',
}, },
}) }
-- Application-specific animation -- Application-specific animation
hl.layer_rule({ hl.layer_rule {
name = "walker-no-anim", name = 'walker-no-anim',
no_anim = true, no_anim = true,
match = { namespace = "walker" }, match = { namespace = 'walker' },
}) }
-- Webcam overlay for screen recording -- Webcam overlay for screen recording
hl.window_rule({ hl.window_rule {
name = "webcam-overlay", name = 'webcam-overlay',
float = true, float = true,
pin = true, pin = true,
no_initial_focus = true, no_initial_focus = true,
no_dim = true, no_dim = true,
size = { 320, 180 }, size = { 320, 180 },
move = { "(monitor_w-360)", "(monitor_h-220)" }, move = { '(monitor_w-360)', '(monitor_h-220)' },
match = { match = {
title = "WebcamOverlay", title = 'WebcamOverlay',
}, },
}) }
+159 -162
View File
@@ -2,7 +2,7 @@
-- Media -- Media
-- ========================== -- ==========================
-- Only display the OSD on the currently focused monitor -- Only display the OSD on the currently focused monitor
local osdclient = "swayosd-client --monitor \"$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')\"" local osdclient = 'swayosd-client --monitor "$(hyprctl monitors -j | jq -r \'.[] | select(.focused == true).name\')"'
local exec = hl.dsp.exec_cmd local exec = hl.dsp.exec_cmd
local shortcut = hl.dsp.send_shortcut local shortcut = hl.dsp.send_shortcut
@@ -26,80 +26,80 @@ local function bindlr(key, cmd, desc, opts)
end end
local function notify(text) local function notify(text)
hl.notification.create({ text = text, duration = 2000 }) hl.notification.create { text = text, duration = 2000 }
end end
-- Laptop multimedia keys for volume and LCD brightness (with OSD) -- Laptop multimedia keys for volume and LCD brightness (with OSD)
bindlr("XF86AudioRaiseVolume", exec(osdclient .. " --output-volume raise"), "Volume up") bindlr('XF86AudioRaiseVolume', exec(osdclient .. ' --output-volume raise'), 'Volume up')
bindlr("XF86AudioRaiseVolume", exec(osdclient .. " --output-volume raise"), "Volume up") bindlr('XF86AudioRaiseVolume', exec(osdclient .. ' --output-volume raise'), 'Volume up')
bindlr("XF86AudioLowerVolume", exec(osdclient .. " --output-volume lower"), "Volume down") bindlr('XF86AudioLowerVolume', exec(osdclient .. ' --output-volume lower'), 'Volume down')
bindlr("XF86AudioMute", exec(osdclient .. " --output-volume mute-toggle"), "Mute") bindlr('XF86AudioMute', exec(osdclient .. ' --output-volume mute-toggle'), 'Mute')
bindlr("XF86AudioMicMute", exec(osdclient .. " --input-volume mute-toggle"), "Mute microphone") bindlr('XF86AudioMicMute', exec(osdclient .. ' --input-volume mute-toggle'), 'Mute microphone')
bindlr("XF86MonBrightnessUp", exec("station-brightness-display +5%"), "Brightness up") bindlr('XF86MonBrightnessUp', exec 'station-brightness-display +5%', 'Brightness up')
bindlr("XF86MonBrightnessDown", exec("station-brightness-display 5%-"), "Brightness down") bindlr('XF86MonBrightnessDown', exec 'station-brightness-display 5%-', 'Brightness down')
bindlr("XF86KbdBrightnessUp", exec("station-brightness-keyboard up"), "Keyboard brightness up") bindlr('XF86KbdBrightnessUp', exec 'station-brightness-keyboard up', 'Keyboard brightness up')
bindlr("XF86KbdBrightnessDown", exec("station-brightness-keyboard down"), "Keyboard brightness down") bindlr('XF86KbdBrightnessDown', exec 'station-brightness-keyboard down', 'Keyboard brightness down')
bindl("XF86KbdLightOnOff", exec("station-brightness-keyboard cycle"), "Keyboard backlight cycle") bindl('XF86KbdLightOnOff', exec 'station-brightness-keyboard cycle', 'Keyboard backlight cycle')
-- Precise 1% multimedia adjustments with Alt modifier -- Precise 1% multimedia adjustments with Alt modifier
bindlr("ALT + XF86AudioRaiseVolume", exec("$osdclient --output-volume +1"), "Volume up precise") bindlr('ALT + XF86AudioRaiseVolume', exec '$osdclient --output-volume +1', 'Volume up precise')
bindlr("ALT + XF86AudioLowerVolume", exec("$osdclient --output-volume -1"), "Volume down precise") bindlr('ALT + XF86AudioLowerVolume', exec '$osdclient --output-volume -1', 'Volume down precise')
bindlr("ALT + XF86MonBrightnessUp", exec("station-brightness-display +1%"), "Brightness up precise") bindlr('ALT + XF86MonBrightnessUp', exec 'station-brightness-display +1%', 'Brightness up precise')
bindlr("ALT + XF86MonBrightnessDown", exec("station-brightness-display 1%-"), "Brightness down precise") bindlr('ALT + XF86MonBrightnessDown', exec 'station-brightness-display 1%-', 'Brightness down precise')
-- Requires playerctl -- Requires playerctl
bindl("XF86AudioNext", exec(osdclient .. " --playerctl next"), "Next track") bindl('XF86AudioNext', exec(osdclient .. ' --playerctl next'), 'Next track')
bindl("XF86AudioPause", exec(osdclient .. " --playerctl play-pause"), "Pause") bindl('XF86AudioPause', exec(osdclient .. ' --playerctl play-pause'), 'Pause')
bindl("XF86AudioPlay", exec(osdclient .. " --playerctl play-pause"), "Play") bindl('XF86AudioPlay', exec(osdclient .. ' --playerctl play-pause'), 'Play')
bindl("XF86AudioPrev", exec(osdclient .. " --playerctl previous"), "Previous track") bindl('XF86AudioPrev', exec(osdclient .. ' --playerctl previous'), 'Previous track')
-- Switch audio output with Super + Mute -- Switch audio output with Super + Mute
bindl("SUPER + XF86AudioMute", exec("station-cmd-audio-switch"), "Switch audio output") bindl('SUPER + XF86AudioMute', exec 'station-cmd-audio-switch', 'Switch audio output')
-- ========================== -- ==========================
-- Copy & Paste -- Copy & Paste
-- ========================== -- ==========================
bind("SUPER + C", shortcut({ mods = "CTRL", key = "Insert" }), "Universal copy") bind('SUPER + C', shortcut { mods = 'CTRL', key = 'Insert' }, 'Universal copy')
bind("SUPER + V", shortcut({ mods = "SHIFT", key = "Insert" }), "Universal paste") bind('SUPER + V', shortcut { mods = 'SHIFT', key = 'Insert' }, 'Universal paste')
bind("SUPER + X", shortcut({ mods = "CRTL", key = "X" }), "Universal cut") bind('SUPER + X', shortcut { mods = 'CRTL', key = 'X' }, 'Universal cut')
bind("SUPER + A", shortcut({ mods = "CTRL", key = "A" }), "Universal cut") bind('SUPER + A', shortcut { mods = 'CTRL', key = 'A' }, 'Universal cut')
bind("SUPER + CTRL + V", exec("station-launch-walker -m clipboard"), "Clipboard manager") bind('SUPER + CTRL + V', exec 'station-launch-walker -m clipboard', 'Clipboard manager')
-- Close windows -- Close windows
bind("SUPER + Q", hl.dsp.window.close(), "Close window") bind('SUPER + Q', hl.dsp.window.close(), 'Close window')
-- ========================== -- ==========================
-- Tiling -- Tiling
-- ========================== -- ==========================
bind("SUPER + P", hl.dsp.window.pseudo()--[[# dwindle]], "Pseudo window") bind('SUPER + P', hl.dsp.window.pseudo()--[[# dwindle]], 'Pseudo window')
bind("SUPER + F", hl.dsp.window.fullscreen(0), "Full screen") bind('SUPER + F', hl.dsp.window.fullscreen(0), 'Full screen')
bind("SUPER + CTRL + F", hl.dsp.window.fullscreen(1), "Full width") bind('SUPER + CTRL + F', hl.dsp.window.fullscreen(1), 'Full width')
bind("SUPER + T", function() bind('SUPER + T', function()
local width = 1300 local width = 1300
local height = 900 local height = 900
local pinned = hl.get_active_window().pinned local pinned = hl.get_active_window().pinned
if pinned then if pinned then
hl.dispatch(hl.dsp.window.pin()) hl.dispatch(hl.dsp.window.pin())
hl.dispatch(hl.dsp.window.float({ action = "toggle" })) hl.dispatch(hl.dsp.window.float { action = 'toggle' })
hl.dispatch(hl.dsp.window.tag({ tag = "-pop" })) hl.dispatch(hl.dsp.window.tag { tag = '-pop' })
else else
hl.dispatch(hl.dsp.window.float({ action = "toggle" })) hl.dispatch(hl.dsp.window.float { action = 'toggle' })
hl.dispatch(hl.dsp.window.resize({ x = width, y = height })) hl.dispatch(hl.dsp.window.resize { x = width, y = height })
hl.dispatch(hl.dsp.window.center()) hl.dispatch(hl.dsp.window.center())
hl.dispatch(hl.dsp.window.pin()) hl.dispatch(hl.dsp.window.pin())
hl.dispatch(hl.dsp.window.alter_zorder({ mode = "top" })) hl.dispatch(hl.dsp.window.alter_zorder { mode = 'top' })
hl.dispatch(hl.dsp.window.tag({ tag = "+pop" })) hl.dispatch(hl.dsp.window.tag { tag = '+pop' })
end end
end, "Pop window out (float & pin)") end, 'Pop window out (float & pin)')
bind("SUPER + CTRL + L", function() bind('SUPER + CTRL + L', function()
local layouts = { "dwindle", "scrolling", "monocle", "master" } local layouts = { 'dwindle', 'scrolling', 'monocle', 'master' }
local workspace = hl.get_active_workspace() local workspace = hl.get_active_workspace()
if hl.get_active_special_workspace() then if hl.get_active_special_workspace() then
workspace = hl.get_active_special_workspace() workspace = hl.get_active_special_workspace()
end end
local next_layout = "dwindle" local next_layout = 'dwindle'
if not workspace then if not workspace then
return return
@@ -114,162 +114,167 @@ bind("SUPER + CTRL + L", function()
end end
if workspace.special then if workspace.special then
hl.workspace_rule({ workspace = tostring(workspace.name), layout = next_layout }) hl.workspace_rule { workspace = tostring(workspace.name), layout = next_layout }
else else
hl.workspace_rule({ workspace = tostring(workspace.id), layout = next_layout }) hl.workspace_rule { workspace = tostring(workspace.id), layout = next_layout }
end end
notify("󱂬 Workspace layout set to " .. next_layout) notify('󱂬 Workspace layout set to ' .. next_layout)
end, "Toggle workspace layout") end, 'Toggle workspace layout')
-- Move focus with SUPER + arrow keys -- Move focus with SUPER + arrow keys
bind("SUPER + H", hl.dsp.focus({ direction = "left" }), "Move window focus left") bind('SUPER + H', hl.dsp.focus { direction = 'left' }, 'Move window focus left')
bind("SUPER + L", hl.dsp.focus({ direction = "right" }), "Move window focus right") bind('SUPER + L', hl.dsp.focus { direction = 'right' }, 'Move window focus right')
bind("SUPER + K", hl.dsp.focus({ direction = "up" }), "Move window focus up") bind('SUPER + K', hl.dsp.focus { direction = 'up' }, 'Move window focus up')
bind("SUPER + J", hl.dsp.focus({ direction = "down" }), "Move window focus down") bind('SUPER + J', hl.dsp.focus { direction = 'down' }, 'Move window focus down')
bind("SUPER + SHIFT + H", hl.dsp.window.move({ direction = "left" }), "Move window left") bind('SUPER + SHIFT + H', hl.dsp.window.move { direction = 'left' }, 'Move window left')
bind("SUPER + SHIFT + L", hl.dsp.window.move({ direction = "right" }), "Move window right") bind('SUPER + SHIFT + L', hl.dsp.window.move { direction = 'right' }, 'Move window right')
bind("SUPER + SHIFT + K", hl.dsp.window.move({ direction = "up" }), "Move window up") bind('SUPER + SHIFT + K', hl.dsp.window.move { direction = 'up' }, 'Move window up')
bind("SUPER + SHIFT + J", hl.dsp.window.move({ direction = "down" }), "Move window down") bind('SUPER + SHIFT + J', hl.dsp.window.move { direction = 'down' }, 'Move window down')
-- Control scratchpad -- Control scratchpad
bind("SUPER + S", hl.dsp.workspace.toggle_special("scratchpad"), "Toggle scratchpad") bind('SUPER + S', hl.dsp.workspace.toggle_special 'scratchpad', 'Toggle scratchpad')
bind("SUPER + ALT + S", hl.dsp.window.move({ workspace = "special:scratchpad" }), "Move window to scratchpad") bind('SUPER + ALT + S', hl.dsp.window.move { workspace = 'special:scratchpad' }, 'Move window to scratchpad')
bind('SUPER + N', function()
hl.dispatch(hl.dsp.workspace.toggle_special 'prod')
local windows = hl.get_windows { workspace = 'special:prod' }
if #windows == 0 then
hl.exec_cmd 'station-launch-or-focus ^superProductivity$ "uwsm-app -- super-productivity"'
hl.exec_cmd 'uwsm-app -- xdg-terminal-exec --app-id=org.station.notes nvim ~/Tower/Documents/Notes'
end
end, 'Toggle productivity workspace')
bind('SUPER + M', function()
hl.dispatch(hl.dsp.workspace.toggle_special 'music')
local windows = hl.get_windows { workspace = 'special:music' }
if #windows == 0 then
hl.exec_cmd 'station-launch-or-focus spotify'
hl.exec_cmd 'station-launch-or-focus psysonic'
end
end, 'Toggle music workspace')
bind('SUPER + D', function()
hl.dispatch(hl.dsp.workspace.toggle_special 'comms')
local windows = hl.get_windows { workspace = 'special:comms' }
if #windows == 0 then
hl.exec_cmd 'station-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"'
hl.exec_cmd 'station-launch-or-focus ^chrome-web.whatsapp.com__-Default$ "station-launch-webapp https://web.whatsapp.com"'
hl.exec_cmd 'station-launch-or-focus ^chrome-discord.com__channels_@me-Default$ "station-launch-webapp https://discord.com/channels/@me"'
end
end, 'Toggle comms workspace')
-- Cycle through applications on active workspace -- Cycle through applications on active workspace
bind("SUPER + TAB", hl.dsp.window.cycle_next({ next = true }), "Cycle to next window") bind('SUPER + TAB', hl.dsp.window.cycle_next { next = true }, 'Cycle to next window')
bind("SUPER + SHIFT + TAB", hl.dsp.window.cycle_next({ next = false }), "Cycle to prev window") bind('SUPER + SHIFT + TAB', hl.dsp.window.cycle_next { next = false }, 'Cycle to prev window')
-- bind("SUPER + TAB", /*bringactivetotop*/, "Reveal active window on top") -- bind("SUPER + TAB", /*bringactivetotop*/, "Reveal active window on top")
-- bind("SUPER SHIFT + TAB", /*bringactivetotop*/, "Reveal active window on top") -- bind("SUPER SHIFT + TAB", /*bringactivetotop*/, "Reveal active window on top")
-- Resize active window -- Resize active window
bind("SUPER + code:20", hl.dsp.window.resize({ x = -100, y = 0 }), "Expand window left") bind('SUPER + code:20', hl.dsp.window.resize { x = -100, y = 0 }, 'Expand window left')
bind("SUPER + code:21", hl.dsp.window.resize({ x = 100, y = 0 }), "Shrink window left") bind('SUPER + code:21', hl.dsp.window.resize { x = 100, y = 0 }, 'Shrink window left')
bind("SUPER + SHIFT + code:20", hl.dsp.window.resize({ x = 0, y = -100 }), "Shrink window up") bind('SUPER + SHIFT + code:20', hl.dsp.window.resize { x = 0, y = -100 }, 'Shrink window up')
bind("SUPER + SHIFT + code:21", hl.dsp.window.resize({ x = 0, y = 100 }), "Expand window down") bind('SUPER + SHIFT + code:21', hl.dsp.window.resize { x = 0, y = 100 }, 'Expand window down')
-- Move/resize windows with mainMod + LMB/RMB and dragging -- Move/resize windows with mainMod + LMB/RMB and dragging
bind("SUPER + mouse:272", hl.dsp.window.drag(), "Move window", { mouse = true }) bind('SUPER + mouse:272', hl.dsp.window.drag(), 'Move window', { mouse = true })
bind("SUPER + mouse:273", hl.dsp.window.resize(), "Resize window", { mouse = true }) bind('SUPER + mouse:273', hl.dsp.window.resize(), 'Resize window', { mouse = true })
-- Toggle current window to be a group or stack in other window manager lingo -- Toggle current window to be a group or stack in other window manager lingo
bind("SUPER + G", hl.dsp.group.toggle(), "Toggle window to a group") bind('SUPER + G', hl.dsp.group.toggle(), 'Toggle window to a group')
-- Move to the next tab group window -- Move to the next tab group window
bind("SUPER + bracketleft", hl.dsp.group.prev(), "Move to previous window in the group") bind('SUPER + bracketleft', hl.dsp.group.prev(), 'Move to previous window in the group')
bind("SUPER + bracketright", hl.dsp.group.next(), "Move to next window in the group") bind('SUPER + bracketright', hl.dsp.group.next(), 'Move to next window in the group')
-- Move current window in the tab group -- Move current window in the tab group
bind("SUPER + SHIFT + bracketleft", hl.dsp.group.move_window({ direction = "left" }), "Move window left in group") bind('SUPER + SHIFT + bracketleft', hl.dsp.group.move_window { direction = 'left' }, 'Move window left in group')
bind("SUPER + SHIFT + bracketright", hl.dsp.group.move_window({ direction = "right" }), "Move window right in group") bind('SUPER + SHIFT + bracketright', hl.dsp.group.move_window { direction = 'right' }, 'Move window right in group')
-- Move current window out of the tab group -- Move current window out of the tab group
bind("SUPER + CTRL + bracketleft", hl.dsp.window.move({ out_of_group = "left" }), "Move window out of group left") bind('SUPER + CTRL + bracketleft', hl.dsp.window.move { out_of_group = 'left' }, 'Move window out of group left')
bind("SUPER + CTRL + bracketright", hl.dsp.window.move({ out_of_group = "right" }), "Move window out of group right") bind('SUPER + CTRL + bracketright', hl.dsp.window.move { out_of_group = 'right' }, 'Move window out of group right')
-- Move current window into an existing tab group or create a new one -- Move current window into an existing tab group or create a new one
bind( bind('SUPER + SHIFT + CTRL + bracketleft', hl.dsp.window.move { into_or_create_group = 'left' }, 'Move window into group left')
"SUPER + SHIFT + CTRL + bracketleft", bind('SUPER + SHIFT + CTRL + bracketright', hl.dsp.window.move { into_or_create_group = 'right' }, 'Move window into group right')
hl.dsp.window.move({ into_or_create_group = "left" }),
"Move window into group left"
)
bind(
"SUPER + SHIFT + CTRL + bracketright",
hl.dsp.window.move({ into_or_create_group = "right" }),
"Move window into group right"
)
-- ========================== -- ==========================
-- Utilities -- Utilities
-- ========================== -- ==========================
-- Menus -- Menus
bind("SUPER + SPACE", exec("station-launch-walker"), "Launch apps") bind('SUPER + SPACE', exec 'station-launch-walker', 'Launch apps')
bind("SUPER + CTRL + E", exec("station-launch-walker -m symbols"), "Emoji picker") bind('SUPER + CTRL + E', exec 'station-launch-walker -m symbols', 'Emoji picker')
bind("SUPER + CTRL + C", exec("station-menu capture"), "Capture menu") bind('SUPER + CTRL + C', exec 'station-menu capture', 'Capture menu')
bind("SUPER + CTRL + O", exec("station-menu toggle"), "Toggle menu") bind('SUPER + CTRL + O', exec 'station-menu toggle', 'Toggle menu')
bind("SUPER + ALT + SPACE", exec("station-menu"), "Station menu") bind('SUPER + ALT + SPACE', exec 'station-menu', 'Station menu')
bind("SUPER + ESCAPE", exec("station-menu system"), "System menu") bind('SUPER + ESCAPE', exec 'station-menu system', 'System menu')
bindl("XF86PowerOff", exec("station-menu system"), "Power menu") bindl('XF86PowerOff', exec 'station-menu system', 'Power menu')
bind("SUPER + K", exec("station-menu-keybindings"), "Show key bindings") bind('SUPER + K', exec 'station-menu-keybindings', 'Show key bindings')
bind("XF86Calculator", exec("gnome-calculator"), "Calculator") bind('XF86Calculator', exec 'gnome-calculator', 'Calculator')
-- Aesthetics -- Aesthetics
bind("SUPER + SHIFT + SPACE", exec("station-toggle-waybar"), "Toggle top bar") bind('SUPER + SHIFT + SPACE', exec 'station-toggle-waybar', 'Toggle top bar')
bind("SUPER + CTRL + SPACE", exec("station-menu background"), "Theme background menu") bind('SUPER + CTRL + SPACE', exec 'station-menu background', 'Theme background menu')
-- bind("SUPER SHIFT CTRL + SPACE", exec("station-menu theme"), "Theme menu") -- bind("SUPER SHIFT CTRL + SPACE", exec("station-menu theme"), "Theme menu")
bind( bind('SUPER + BACKSPACE', exec 'hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r \'.address\')" opaque toggle', 'Toggle window transparency')
"SUPER + BACKSPACE", bind('SUPER + SHIFT + BACKSPACE', function()
exec("hyprctl dispatch setprop \"address:$(hyprctl activewindow -j | jq -r '.address')\" opaque toggle"), local gaps = hl.get_config 'general.gaps_out'
"Toggle window transparency"
)
bind("SUPER + SHIFT + BACKSPACE", function()
local gaps = hl.get_config("general.gaps_out")
if gaps.top == 0 then if gaps.top == 0 then
hl.config({ hl.config {
general = { general = {
gaps_out = 10, gaps_out = 10,
gaps_in = 5, gaps_in = 5,
border_size = 2, border_size = 2,
}, },
}) }
else else
hl.config({ hl.config {
general = { general = {
gaps_out = 0, gaps_out = 0,
gaps_in = 0, gaps_in = 0,
border_size = 0, border_size = 0,
}, },
}) }
end end
end, "Toggle window gaps") end, 'Toggle window gaps')
-- Notifications -- Notifications
bind("SUPER + COMMA", exec("makoctl dismiss"), "Dismiss last notification") bind('SUPER + COMMA', exec 'makoctl dismiss', 'Dismiss last notification')
bind("SUPER + SHIFT + COMMA", exec("makoctl dismiss --all"), "Dismiss all notifications") bind('SUPER + SHIFT + COMMA', exec 'makoctl dismiss --all', 'Dismiss all notifications')
bind("SUPER + CTRL + COMMA", exec("station-toggle-notification-silencing"), "Toggle silencing notifications") bind('SUPER + CTRL + COMMA', exec 'station-toggle-notification-silencing', 'Toggle silencing notifications')
bind("SUPER + ALT + COMMA", exec("makoctl invoke"), "Invoke last notification") bind('SUPER + ALT + COMMA', exec 'makoctl invoke', 'Invoke last notification')
bind("SUPER + SHIFT + ALT + COMMA", exec("makoctl restore"), "Restore last notification") bind('SUPER + SHIFT + ALT + COMMA', exec 'makoctl restore', 'Restore last notification')
-- Toggles -- Toggles
bind("SUPER + CTRL + I", exec("station-toggle-idle"), "Toggle locking on idle") bind('SUPER + CTRL + I', exec 'station-toggle-idle', 'Toggle locking on idle')
bind("SUPER + CTRL + N", exec("station-toggle-nightlight"), "Toggle nightlight") bind('SUPER + CTRL + N', exec 'station-toggle-nightlight', 'Toggle nightlight')
-- Captures -- Captures
bind("PRINT", exec("station-cmd-screenshot"), "Screenshot") bind('PRINT', exec 'station-cmd-screenshot', 'Screenshot')
bind("ALT + PRINT", exec("station-menu screenrecord"), "Screenrecording") bind('ALT + PRINT', exec 'station-menu screenrecord', 'Screenrecording')
bind("SUPER + PRINT", exec("pkill hyprpicker || hyprpicker -a"), "Color picker") bind('SUPER + PRINT', exec 'pkill hyprpicker || hyprpicker -a', 'Color picker')
-- File sharing -- File sharing
-- bind("SUPER CTRL + S", exec("station-menu share"), "Share") -- bind("SUPER CTRL + S", exec("station-menu share"), "Share")
-- Waybar-less information -- Waybar-less information
bind("SUPER + CTRL + ALT + T", exec('notify " $(date +"%A %H:%M — %d %B W%V %Y")"'), "Show time") bind('SUPER + CTRL + ALT + T', exec 'notify " $(date +"%A %H:%M — %d %B W%V %Y")"', 'Show time')
bind( bind('SUPER + CTRL + ALT + B', exec 'notify-send "󰁹 Battery is at $(station-battery-remaining)%"', 'Show battery remaining')
"SUPER + CTRL + ALT + B", bind('SUPER + CTRL + ALT + W', function()
exec('notify-send "󰁹 Battery is at $(station-battery-remaining)%"'),
"Show battery remaining"
)
bind("SUPER + CTRL + ALT + W", function()
local window = hl.get_active_window() local window = hl.get_active_window()
notify("Window: " .. window.title .. "\nClass: " .. window.class) notify('Window: ' .. window.title .. '\nClass: ' .. window.class)
end, "Show active window name and class") end, 'Show active window name and class')
-- Control panels -- Control panels
bind("SUPER + CTRL + A", exec("station-launch-audio"), "Audio controls") bind('SUPER + CTRL + A', exec 'station-launch-audio', 'Audio controls')
bind("SUPER + CTRL + B", exec("station-launch-bluetooth"), "Bluetooth controls") bind('SUPER + CTRL + B', exec 'station-launch-bluetooth', 'Bluetooth controls')
bind("SUPER + CTRL + W", exec("station-launch-wifi"), "Wifi controls") bind('SUPER + CTRL + W', exec 'station-launch-wifi', 'Wifi controls')
bind("SUPER + CTRL + T", exec("station-launch-tui btop"), "Activity") bind('SUPER + CTRL + T', exec 'station-launch-tui btop', 'Activity')
-- Dictation -- Dictation
-- bind("SUPER CTRL + X", exec("voxtype record toggle"), "Toggle dictation") -- bind("SUPER CTRL + X", exec("voxtype record toggle"), "Toggle dictation")
-- Zoom -- Zoom
bind( bind('SUPER + CTRL + Z', exec "hyprctl keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '.float + 1')", 'Zoom in')
"SUPER + CTRL + Z", bind('SUPER + CTRL + ALT + Z', exec 'hyprctl keyword cursor:zoom_factor 1', 'Reset zoom')
exec("hyprctl keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '.float + 1')"),
"Zoom in"
)
bind("SUPER + CTRL + ALT + Z", exec("hyprctl keyword cursor:zoom_factor 1"), "Reset zoom")
-- Lock system -- Lock system
-- bind("SUPER CTRL + L", exec("station-lock-screen"), "Lock system") -- bind("SUPER CTRL + L", exec("station-lock-screen"), "Lock system")
@@ -277,41 +282,33 @@ bind("SUPER + CTRL + ALT + Z", exec("hyprctl keyword cursor:zoom_factor 1"), "Re
-- ========================== -- ==========================
-- Applications -- Applications
-- ========================== -- ==========================
bind("SUPER + RETURN", exec("uwsm-app -- xdg-terminal-exec"), "Terminal") bind('SUPER + RETURN', exec 'uwsm-app -- xdg-terminal-exec', 'Terminal')
bind("SUPER + ALT + RETURN", exec('uwsm-app -- xdg-terminal-exec --dir="$(station-cmd-terminal-cwd)" tmux new'), "Tmux") bind('SUPER + ALT + RETURN', exec 'uwsm-app -- xdg-terminal-exec --dir="$(station-cmd-terminal-cwd)" tmux new', 'Tmux')
bind("SUPER + SHIFT + F", exec("uwsm-app -- nautilus --new-window"), "File manager") bind('SUPER + SHIFT + F', exec 'uwsm-app -- nautilus --new-window', 'File manager')
bind( bind('SUPER + ALT + SHIFT + F', exec 'uwsm-app -- nautilus --new-window "$(station-cmd-terminal-cwd)"', 'File manager (cwd)')
"SUPER + ALT + SHIFT + F", bind('SUPER + SHIFT + B', exec 'station-launch-browser', 'Browser')
exec('uwsm-app -- nautilus --new-window "$(station-cmd-terminal-cwd)"'), bind('SUPER + SHIFT + ALT + B', exec 'station-launch-browser --private', 'Browser (private)')
"File manager (cwd)" bind('SUPER + SHIFT + S', exec 'station-launch-or-focus spotify', 'Spotify')
) bind('SUPER + SHIFT + M', exec 'station-launch-or-focus psysonic', 'Music')
bind("SUPER + SHIFT + B", exec("/home/chris/.local/bin/station-launch-browser"), "Browser")
bind("SUPER + SHIFT + ALT + B", exec("station-launch-browser --private"), "Browser (private)")
bind("SUPER + SHIFT + M", exec("station-launch-or-focus spotify"), "Music")
bind("SUPER + SHIFT + N", exec("station-launch-editor"), "Editor")
-- bind("SUPER SHIFT + D", exec("station-launch-tui lazydocker"), "Docker") -- bind("SUPER SHIFT + D", exec("station-launch-tui lazydocker"), "Docker")
bind("SUPER + SHIFT + G", exec('station-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"'), "Signal") bind('SUPER + SHIFT + G', exec 'station-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"', 'Signal')
bind( bind('SUPER + SHIFT + D', exec 'station-launch-or-focus ^chrome-discord.com__channels_@me-Default$ "uwsm-app -- discord"', 'Discord')
"SUPER + SHIFT + O", bind('SUPER + SHIFT + W', exec 'station-launch-or-focus ^chrome-web.whatsapp.com__-Default$ "uwsm-app -- whatsapp"', 'Whatsapp')
exec('station-launch-or-focus ^obsidian$ "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"'), bind('SUPER + SHIFT + P', exec 'station-launch-or-focus ^superProductivity$ "uwsm-app -- super-productivity"', 'Super Productivity')
"Obsidian" bind('SUPER + SHIFT + N', exec 'uwsm-app -- xdg-terminal-exec --app-id=org.station.notes nvim ~/Tower/Documents/Notes', 'Editor')
)
-- bind("SUPER SHIFT + W", exec("uwsm-app -- typora --enable-wayland-ime"), "Typora") -- bind("SUPER SHIFT + W", exec("uwsm-app -- typora --enable-wayland-ime"), "Typora")
bind("SUPER + SHIFT + SLASH", exec("Enpass showassistant"), "Passwords") bind('SUPER + SHIFT + SLASH', exec 'Enpass showassistant', 'Passwords')
bind("SUPER + SHIFT + E", exec("station-launch-or-focus mailspring"), "Email") bind('SUPER + SHIFT + E', exec 'station-launch-or-focus mailspring', 'Email')
bind("SUPER + SHIFT + A", exec('station-launch-webapp "https://gemini.google.com/app"'), "ChatGPT") bind('SUPER + SHIFT + A', exec 'station-launch-webapp "https://gemini.google.com/app"', 'ChatGPT')
bind("SUPER + SHIFT + C", exec('station-launch-webapp "https://tower.scarif.space/apps/calendar"'), "Calendar") bind('SUPER + SHIFT + C', exec 'station-launch-webapp "https://tower.scarif.space/apps/calendar"', 'Calendar')
bind("SUPER + SHIFT + Y", exec('station-launch-or-focus-webapp "YouTube" "https://youtube.com/"'), "YouTube") bind('SUPER + SHIFT + Y', exec 'station-launch-or-focus-webapp "YouTube" "https://youtube.com/"', 'YouTube')
bind("SUPER + SHIFT + ALT + G", exec('station-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"'), "WhatsApp") bind('SUPER + SHIFT + ALT + G', exec 'station-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"', 'WhatsApp')
bind( bind('SUPER + SHIFT + CTRL + G', exec 'station-launch-or-focus-webapp "Google Maps" "https://maps.google.com"', 'Google Maps')
"SUPER + SHIFT + CTRL + G",
exec('station-launch-or-focus-webapp "Google Maps" "https://maps.google.com"'),
"Google Maps"
)
-- bind("SUPER SHIFT + P", exec("station-launch-or-focus-webapp "Google Photos" "https://photos.google.com/""), "Google Photos") -- bind("SUPER SHIFT + P", exec("station-launch-or-focus-webapp "Google Photos" "https://photos.google.com/""), "Google Photos")
-- bind("SUPER SHIFT + X", exec("station-launch-webapp "https://x.com/""), "X") -- bind("SUPER SHIFT + X", exec("station-launch-webapp "https://x.com/""), "X")
-- bind("SUPER SHIFT ALT + X", exec("station-launch-webapp "https://x.com/compose/post""), "X Post") -- bind("SUPER SHIFT ALT + X", exec("station-launch-webapp "https://x.com/compose/post""), "X Post")
-- Add extra bindings -- Add extra bindings
bind("SUPER + SHIFT + R", exec("ghostty -e ssh scarif"), "SSH to scarif") bind('SUPER + SHIFT + R', exec 'ghostty -e ssh scarif', 'SSH to scarif')
@@ -3,6 +3,7 @@ Version=1.0
Name=Discord Name=Discord
Comment=Discord Comment=Discord
Exec=station-launch-webapp https://discord.com/channels/@me Exec=station-launch-webapp https://discord.com/channels/@me
Exec=station-launch-or-focus ^chrome-discord.com__channels_@me-Default$ "station-launch-webapp https://discord.com/channels/@me"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=/home/chris/.local/share/applications/icons/Discord.png Icon=/home/chris/.local/share/applications/icons/Discord.png
+1 -1
View File
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=WhatsApp Name=WhatsApp
Comment=WhatsApp Comment=WhatsApp
Exec=station-launch-webapp https://web.whatsapp.com Exec=station-launch-or-focus ^chrome-web.whatsapp.com__-Default$ "station-launch-webapp https://web.whatsapp.com"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=/home/chris/.local/share/applications/icons/WhatsApp Icon=/home/chris/.local/share/applications/icons/WhatsApp