Compare commits

...
31 Commits
Author SHA1 Message Date
chris 467ae5e678 Testing 2026-10-04 11:06:32 +01:00
chris 45a612b227 Add rbw config 2026-10-02 14:24:34 +01:00
chris b24b0dcba9 Better git alias 2026-09-30 17:25:03 +01:00
chris 9b7e3507d8 Refactoring 2026-09-30 17:03:12 +01:00
chris 657851bc02 Move windows to existing monitors 2026-09-29 17:15:31 +01:00
chris 015118d74a Update opacity 2026-09-29 15:46:15 +01:00
chris a73c80531b Fix keybinds 2026-09-27 18:45:57 +01:00
chris e9d4fd2851 Hyprland improvements 2026-09-27 17:06:16 +01:00
chris c9bf4908e9 Finally figuring out dispatch 2026-09-26 22:45:43 +01:00
chris e9254d1270 Cleaning up 2026-09-26 22:39:15 +01:00
chris b1da548292 Trying to fix suspend issue 2026-09-19 21:10:48 +01:00
chris 0251bb0910 Fixing display 2026-09-14 18:57:20 +01:00
chris 9401bbae24 Comment out dev vars 2026-09-13 21:28:36 +01:00
chris ba12b042fc Update env 2026-09-13 21:04:18 +01:00
chris 0a620e8439 Fix suspend 2026-09-13 14:28:12 +01:00
chris aa898b212b Nvim changes 2026-09-12 19:45:18 +01:00
chris 3b40a50401 Neovim 2026-09-11 18:23:55 +01:00
chris 72f25cd766 Hypr 2026-09-10 00:02:11 +01:00
chris d34141a273 Update clock 2026-09-08 21:05:52 +01:00
chris df75a1e256 Fix 2026-09-07 17:56:47 +01:00
chris 6c1cef141e Fixes 2026-09-07 17:54:40 +01:00
chris 0bcd72d516 Update neovim 2026-09-02 20:21:23 +01:00
chris cefbbbc575 Refactoring 2026-09-02 14:30:16 +01:00
chris 20b2a45e60 fix 2026-09-02 11:07:37 +01:00
chris bc302dbb16 Update background scripts 2026-09-01 22:09:11 +01:00
chris 2931ea0e18 Fix 2026-08-31 22:05:09 +01:00
chris 151d02f532 Configuring hyprland 2026-08-25 22:26:26 +01:00
chris 7b211d37f5 Comment out hyprsunset 2026-08-23 22:23:03 +01:00
chris 524d024e7a Fixes 2026-08-17 19:41:51 +01:00
chris 8ce68821bc GPU fixes 2026-08-16 18:50:55 +01:00
chris dc1837723b gpu config 2026-08-16 17:40:11 +01:00
26 changed files with 978 additions and 531 deletions
+2 -1
View File
@@ -1,6 +1,7 @@
column_width = 160 column_width = 80
line_endings = "Unix" line_endings = "Unix"
indent_type = "Spaces" indent_type = "Spaces"
indent_width = 4 indent_width = 4
quote_style = "AutoPreferSingle" quote_style = "AutoPreferSingle"
call_parentheses = "None" call_parentheses = "None"
collapse_simple_statement = "Never"
+64 -146
View File
@@ -1,83 +1,78 @@
-- Browser types -- Browser types
hl.window_rule { local function add_tag_to_matching_class(class, tag)
name = 'chromium-browser-tags', hl.window_rule {
tag = '+chromium-based-browser', tag = '+' .. tag,
match = { match = {
class = '((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)', class = class,
}, },
} }
hl.window_rule { end
name = 'firefox-tags',
tag = '+firefox-based-browser',
match = {
class = '([fF]irefox|zen|librewolf)',
},
}
hl.window_rule { local function add_tag_to_matching_tag(match_tag, tag)
name = 'chromium-browser-opacity-tags', hl.window_rule {
tag = '-default-opacity', tag = '+' .. tag,
match = { match = {
tag = 'chromium-based-browser', tag = match_tag,
}, },
} }
hl.window_rule { end
name = 'firefox-browser-opacity-tags',
tag = '-default-opacity', local function remove_tag_from_matching_class(class, tag)
match = { hl.window_rule {
tag = 'firefox-based-browser', tag = '-' .. tag,
}, match = {
} class = class,
},
}
end
local function remove_tag_from_matching_tag(match_tag, tag)
hl.window_rule {
tag = '-' .. tag,
match = {
tag = match_tag,
},
}
end
add_tag_to_matching_class(
'((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)',
'chromium-based-browser'
)
add_tag_to_matching_class('([fF]irefox|zen|librewolf)', 'firefox-based-browser')
remove_tag_from_matching_tag('chromium-based-browser', 'default-opacity')
remove_tag_from_matching_tag('firefox-based-browser', 'default-opacity')
-- 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 { remove_tag_from_matching_class(
name = 'video-apps-no-browser-tag', '(chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default)',
tag = '-chromium-based-browser', 'chromium-based-browser'
match = { )
class = '(chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default)', remove_tag_from_matching_class(
}, '(chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default)',
} 'default-opacity'
hl.window_rule { )
name = 'video-apps-no-opacity-tag',
tag = '-default-opacity',
match = {
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',
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', opacity = '1.0 0.8',
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', opacity = '1.0 0.8',
opacity = '1.0 0.97',
match = { match = {
tag = 'firefox-based-browser', tag = 'firefox-based-browser',
}, },
} }
hl.window_rule {
name = 'geforce-now',
idle_inhibit = 'fullscreen',
match = {
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',
@@ -88,8 +83,6 @@ hl.layer_rule {
-- 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',
tag = '+jetbrains-splash',
center = true, center = true,
no_focus = true, no_focus = true,
border_size = 0, border_size = 0,
@@ -102,7 +95,6 @@ hl.window_rule {
-- Center popups/find windows -- Center popups/find windows
hl.window_rule { hl.window_rule {
name = 'jetbrains-popups',
center = true, center = true,
stay_focused = true, stay_focused = true,
border_size = 0, border_size = 0,
@@ -172,43 +164,9 @@ hl.window_rule {
tag = 'pip', tag = 'pip',
}, },
} }
-- Retroarch
hl.window_rule {
name = 'retroarch-fullscreen',
fullscreen = true,
workspace = 'name:Gaming_1',
tag = '-default-opacity',
opacity = '1 1',
idle_inhibit = 'fullscreen',
match = {
class = 'com.libretro.RetroArch',
},
}
-- Scratchpad apps
hl.window_rule {
name = 'spotify-scratchpad',
workspace = 'special:music',
match = {
class = 'Spotify|psysonic',
},
}
hl.window_rule {
name = 'comms-scratchpad',
workspace = 'special:comms',
match = {
class = '^(chrome-discord.com__channels_@me-Default|chrome-web.whatsapp.com__-Default|signal)$',
},
}
hl.window_rule {
name = 'superproductivity-scratchpad',
workspace = 'special:prod',
match = {
class = '^(superproductivity|org.station.notes)$',
},
}
-- Float Nextcloud -- Float Nextcloud
hl.window_rule { hl.window_rule {
name = 'nextcloud-float',
float = true, float = true,
match = { match = {
class = 'com.nextcloud.desktopclient.nextcloud', class = 'com.nextcloud.desktopclient.nextcloud',
@@ -216,33 +174,18 @@ hl.window_rule {
} }
-- Position drawing -- Position drawing
hl.window_rule { hl.window_rule {
name = 'krita-drawing',
workspace = 'name:Art_1',
tag = '-default-opacity', tag = '-default-opacity',
opacity = '1 1', opacity = '1 1',
match = {
class = '(krita)',
},
}
-- Float Steam
hl.window_rule {
name = 'steam-float',
float = true,
no_initial_focus = true, no_initial_focus = true,
workspace = 'name:Gaming_1', stay_focused = false,
idle_inhibit = 'fullscreen', dim_around = true,
decorate = false,
match = { match = {
class = 'steam', class = '^(krita)$',
}, modal = true,
}
hl.window_rule {
name = 'steam-app-size',
center = true,
match = {
class = 'steam',
title = 'Steam',
}, },
} }
hl.window_rule { hl.window_rule {
name = 'steam-opacity', name = 'steam-opacity',
tag = '-default-opacity', tag = '-default-opacity',
@@ -259,28 +202,11 @@ hl.window_rule {
title = 'Friends List', title = 'Friends List',
}, },
} }
-- Float Lunar Client
hl.window_rule {
name = 'atlauncher-float',
float = true,
workspace = 'name:Gaming_1',
center = true,
size = { 1100, 700 },
tag = '-default-opacity',
opacity = '1 1',
idle_inhibit = 'fullscreen',
match = {
class = 'atlauncher',
},
}
-- Floating windows -- Floating windows
hl.window_rule { add_tag_to_matching_class(
name = 'floating-window-tags', '(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)',
tag = '+floating-window', 'floating-window'
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)',
},
}
hl.window_rule { hl.window_rule {
name = 'floating-dialog-tags', name = 'floating-dialog-tags',
tag = '+floating-window', tag = '+floating-window',
@@ -342,14 +268,6 @@ hl.window_rule {
tag = 'noidle', tag = 'noidle',
}, },
} }
-- Prevent Telegram from stealing focus on new messages
hl.window_rule {
name = 'telegram-no-focus-steal',
focus_on_activate = false,
match = {
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',
+66 -10
View File
@@ -1,13 +1,69 @@
hl.on('hyprland.start', function() hl.on('hyprland.start', function()
hl.exec_cmd 'uwsm-app -- hypridle' exec 'uwsm-app -- hypridle'
hl.exec_cmd 'uwsm-app -- mako' exec 'uwsm-app -- mako'
hl.exec_cmd 'uwsm-app -- hyprsunset' exec 'uwsm-app -- fcitx5 --disable notificationitem'
hl.exec_cmd 'uwsm-app -- fcitx5 --disable notificationitem' exec 'nextcloud'
hl.exec_cmd 'uwsm-app -- Enpass -minimize' exec '/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1'
hl.exec_cmd 'uwsm-app -- steam' exec 'dbus-update-activation-environment --systemd --all'
hl.exec_cmd 'nextcloud' exec 'station-bg-set'
hl.exec_cmd 'station-bg-random' -- hl.dispatch(
hl.exec_cmd '/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1' -- dispatch_exec(
hl.exec_cmd 'dbus-update-activation-environment --systemd --all' -- 'station-launch-tui btop',
-- { move = { workspace = 'special:monitor' } }
-- )
-- )
local monitors = hl.get_monitors()
for j = #monitors, 1, -1 do
local monitor = monitors[j]
hl.dispatch(hl.dsp.focus { workspace = 'name:Home_' .. j })
end
end) end)
hl.on('config.reloaded', function()
toggle_laptop_monitor()
-- exec(
-- 'station-launch-tui btop',
-- { move = { workspace = 'special:monitor' } }
-- )
end)
local events = {
'config.props_refreshed',
'config.reloaded',
'hyprland.shutdown',
'hyprland.start',
'keybinds.submap',
'layer.closed',
'layer.opened',
'monitor.added',
'monitor.focused',
'monitor.layout_changed',
'monitor.removed',
'screenshare.state',
'window.active',
'window.class',
'window.close',
'window.destroy',
'window.fullscreen',
'window.kill',
'window.move_to_workspace',
'window.open',
'window.open_early',
'window.pin',
'window.urgent',
'workspace.active',
'workspace.created',
'workspace.move_to_monitor',
'workspace.removed',
'workspace.special_active',
}
for _, event in ipairs(events) do
hl.on(event, function(data)
notify('event: ' .. event, 5000)
end)
end
+416 -168
View File
@@ -1,69 +1,130 @@
require 'helpers'
-- ========================== -- ==========================
-- 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 shortcut = hl.dsp.send_shortcut
local function bind(key, cmd, desc, opts)
opts = opts or {}
opts.desc = desc
hl.bind(key, cmd, opts)
end
local function bindl(key, cmd, desc, opts)
opts = opts or {}
opts.locked = true
bind(key, cmd, desc, opts)
end
local function bindlr(key, cmd, desc, opts)
opts = opts or {}
opts.repeating = true
bindl(key, cmd, desc, opts)
end
local function notify(text)
hl.notification.create { text = text, duration = 2000 }
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(
bindlr('XF86AudioRaiseVolume', exec(osdclient .. ' --output-volume raise'), 'Volume up') 'XF86AudioRaiseVolume',
bindlr('XF86AudioLowerVolume', exec(osdclient .. ' --output-volume lower'), 'Volume down') dispatch_exec(osdclient .. ' --output-volume raise'),
bindlr('XF86AudioMute', exec(osdclient .. ' --output-volume mute-toggle'), 'Mute') 'Volume up'
bindlr('XF86AudioMicMute', exec(osdclient .. ' --input-volume mute-toggle'), 'Mute microphone') )
bindlr('XF86MonBrightnessUp', exec 'station-brightness-display +5%', 'Brightness up') bindlr(
bindlr('XF86MonBrightnessDown', exec 'station-brightness-display 5%-', 'Brightness down') 'XF86AudioRaiseVolume',
bindlr('XF86KbdBrightnessUp', exec 'station-brightness-keyboard up', 'Keyboard brightness up') dispatch_exec(osdclient .. ' --output-volume raise'),
bindlr('XF86KbdBrightnessDown', exec 'station-brightness-keyboard down', 'Keyboard brightness down') 'Volume up'
bindl('XF86KbdLightOnOff', exec 'station-brightness-keyboard cycle', 'Keyboard backlight cycle') )
bindlr(
'XF86AudioLowerVolume',
dispatch_exec(osdclient .. ' --output-volume lower'),
'Volume down'
)
bindlr(
'XF86AudioMute',
dispatch_exec(osdclient .. ' --output-volume mute-toggle'),
'Mute'
)
bindlr(
'XF86AudioMicMute',
dispatch_exec(osdclient .. ' --input-volume mute-toggle'),
'Mute microphone'
)
bindlr(
'XF86MonBrightnessUp',
dispatch_exec 'station-brightness-display +5%',
'Brightness up'
)
bindlr(
'XF86MonBrightnessDown',
dispatch_exec 'station-brightness-display 5%-',
'Brightness down'
)
bindlr(
'XF86KbdBrightnessUp',
dispatch_exec 'station-brightness-keyboard up',
'Keyboard brightness up'
)
bindlr(
'XF86KbdBrightnessDown',
dispatch_exec 'station-brightness-keyboard down',
'Keyboard brightness down'
)
bindl(
'XF86KbdLightOnOff',
dispatch_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(
bindlr('ALT + XF86AudioLowerVolume', exec '$osdclient --output-volume -1', 'Volume down precise') 'ALT + XF86AudioRaiseVolume',
bindlr('ALT + XF86MonBrightnessUp', exec 'station-brightness-display +1%', 'Brightness up precise') dispatch_exec '$osdclient --output-volume +1',
bindlr('ALT + XF86MonBrightnessDown', exec 'station-brightness-display 1%-', 'Brightness down precise') 'Volume up precise'
)
bindlr(
'ALT + XF86AudioLowerVolume',
dispatch_exec '$osdclient --output-volume -1',
'Volume down precise'
)
bindlr(
'ALT + XF86MonBrightnessUp',
dispatch_exec 'station-brightness-display +1%',
'Brightness up precise'
)
bindlr(
'ALT + XF86MonBrightnessDown',
dispatch_exec 'station-brightness-display 1%-',
'Brightness down precise'
)
-- Requires playerctl -- Requires playerctl
bindl('XF86AudioNext', exec(osdclient .. ' --playerctl next'), 'Next track') bindl(
bindl('XF86AudioPause', exec(osdclient .. ' --playerctl play-pause'), 'Pause') 'XF86AudioNext',
bindl('XF86AudioPlay', exec(osdclient .. ' --playerctl play-pause'), 'Play') dispatch_exec(osdclient .. ' --playerctl next'),
bindl('XF86AudioPrev', exec(osdclient .. ' --playerctl previous'), 'Previous track') 'Next track'
)
bindl(
'XF86AudioPause',
dispatch_exec(osdclient .. ' --playerctl play-pause'),
'Pause'
)
bindl(
'XF86AudioPlay',
dispatch_exec(osdclient .. ' --playerctl play-pause'),
'Play'
)
bindl(
'XF86AudioPrev',
dispatch_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',
dispatch_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',
dispatch_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')
@@ -113,23 +174,14 @@ bind('SUPER + CTRL + L', function()
end end
end end
hl.workspace_rule { workspace = 'name:' .. tostring(workspace.name), layout = next_layout } hl.workspace_rule {
workspace = 'name:' .. tostring(workspace.name),
layout = next_layout,
}
notify('󱂬 Workspace layout set to ' .. next_layout) notify('󱂬 Workspace layout set to ' .. next_layout)
end, 'Toggle workspace layout') end, 'Toggle workspace layout')
local get_current_layout = function()
local workspace = hl.get_active_workspace()
if hl.get_active_special_workspace() then
workspace = hl.get_active_special_workspace()
end
if not workspace then
return 'dwindle'
end
return workspace.tiled_layout
end
-- Move focus with SUPER + arrow keys -- Move focus with SUPER + arrow keys
bind('SUPER + H', function() bind('SUPER + H', function()
if get_current_layout() == 'monocle' then if get_current_layout() == 'monocle' then
@@ -159,94 +211,158 @@ bind('SUPER + J', function()
hl.dispatch(hl.dsp.focus { direction = 'down' }) hl.dispatch(hl.dsp.focus { direction = 'down' })
end end
end, 'Move window focus down') end, 'Move window focus down')
bind('SUPER + SHIFT + H', hl.dsp.window.move { direction = 'left' }, 'Move window left') bind(
bind('SUPER + SHIFT + L', hl.dsp.window.move { direction = 'right' }, 'Move window right') 'SUPER + SHIFT + H',
bind('SUPER + SHIFT + K', hl.dsp.window.move { direction = 'up' }, 'Move window up') hl.dsp.window.move { direction = 'left' },
bind('SUPER + SHIFT + J', hl.dsp.window.move { direction = 'down' }, 'Move window down') 'Move window left'
)
-- Control scratchpad bind(
bind('SUPER + S', hl.dsp.workspace.toggle_special 'scratchpad', 'Toggle scratchpad') 'SUPER + SHIFT + L',
bind('SUPER + ALT + S', hl.dsp.window.move { workspace = 'special:scratchpad' }, 'Move window to scratchpad') hl.dsp.window.move { direction = 'right' },
bind('SUPER + N', function() 'Move window right'
hl.dispatch(hl.dsp.workspace.toggle_special 'prod') )
local windows = hl.get_windows { workspace = 'special:prod' } bind(
if #windows == 0 then 'SUPER + SHIFT + K',
hl.exec_cmd 'station-launch-or-focus ^superProductivity$ "uwsm-app -- super-productivity"' hl.dsp.window.move { direction = 'up' },
hl.exec_cmd 'uwsm-app -- xdg-terminal-exec --app-id=org.station.notes nvim ~/Notes' 'Move window up'
end )
end, 'Toggle productivity workspace') bind(
bind('SUPER + M', function() 'SUPER + SHIFT + J',
hl.dispatch(hl.dsp.workspace.toggle_special 'music') hl.dsp.window.move { direction = 'down' },
local windows = hl.get_windows { workspace = 'special:music' } 'Move window down'
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 { tiled = true, next = true }, 'Cycle to next window') bind(
bind('SUPER + SHIFT + TAB', hl.dsp.window.cycle_next { tiled = true, next = false }, 'Cycle to prev window') 'SUPER + TAB',
hl.dsp.window.cycle_next { tiled = true, next = true },
'Cycle to next window'
)
bind(
'SUPER + SHIFT + TAB',
hl.dsp.window.cycle_next { tiled = true, 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(
bind('SUPER + code:21', hl.dsp.window.resize { x = 100, y = 0 }, 'Shrink window left') 'SUPER + code:20',
bind('SUPER + SHIFT + code:20', hl.dsp.window.resize { x = 0, y = -100 }, 'Shrink window up') hl.dsp.window.resize { x = -100, y = 0 },
bind('SUPER + SHIFT + code:21', hl.dsp.window.resize { x = 0, y = 100 }, 'Expand window down') 'Expand 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: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(
bind('SUPER + bracketright', hl.dsp.group.next(), 'Move to next window in the group') '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'
)
-- 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(
bind('SUPER + SHIFT + bracketright', hl.dsp.group.move_window { direction = 'right' }, 'Move window right in group') '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'
)
-- 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(
bind('SUPER + CTRL + bracketright', hl.dsp.window.move { out_of_group = 'right' }, 'Move window out of group right') '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'
)
-- 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('SUPER + SHIFT + CTRL + bracketleft', hl.dsp.window.move { into_or_create_group = 'left' }, 'Move window into group left') bind(
bind('SUPER + SHIFT + CTRL + bracketright', hl.dsp.window.move { into_or_create_group = 'right' }, 'Move window into group right') 'SUPER + SHIFT + CTRL + bracketleft',
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', dispatch_exec 'station-launch-walker', 'Launch apps')
bind('SUPER + CTRL + E', exec 'station-launch-walker -m symbols', 'Emoji picker') bind(
bind('SUPER + CTRL + C', exec 'station-menu capture', 'Capture menu') 'SUPER + CTRL + E',
bind('SUPER + CTRL + O', exec 'station-menu toggle', 'Toggle menu') dispatch_exec 'station-launch-walker -m symbols',
bind('SUPER + ALT + SPACE', exec 'station-menu', 'Station menu') 'Emoji picker'
bind('SUPER + ESCAPE', exec 'station-menu system', 'System menu') )
bindl('XF86PowerOff', exec 'station-menu system', 'Power menu') bind('SUPER + CTRL + C', dispatch_exec 'station-menu capture', 'Capture menu')
bind('SUPER + K', exec 'station-menu-keybindings', 'Show key bindings') bind('SUPER + CTRL + O', dispatch_exec 'station-menu toggle', 'Toggle menu')
bind('XF86Calculator', exec 'gnome-calculator', 'Calculator') bind('SUPER + ALT + SPACE', dispatch_exec 'station-menu', 'Station menu')
bind('SUPER + ESCAPE', dispatch_exec 'station-menu system', 'System menu')
bindl('XF86PowerOff', dispatch_exec 'station-menu system', 'Power menu')
bind('SUPER + K', dispatch_exec 'station-menu-keybindings', 'Show key bindings')
bind('XF86Calculator', dispatch_exec 'gnome-calculator', 'Calculator')
-- Aesthetics -- Aesthetics
bind('SUPER + SHIFT + SPACE', exec 'station-toggle-waybar', 'Toggle top bar') bind(
bind('SUPER + CTRL + SPACE', exec 'station-menu background', 'Theme background menu') 'SUPER + SHIFT + SPACE',
-- bind("SUPER SHIFT CTRL + SPACE", exec("station-menu theme"), "Theme menu") dispatch_exec 'station-toggle-waybar',
bind('SUPER + BACKSPACE', exec 'hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r \'.address\')" opaque toggle', 'Toggle window transparency') 'Toggle top bar'
)
bind(
'SUPER + CTRL + SPACE',
dispatch_exec 'station-menu background',
'Theme background menu'
)
-- bind("SUPER SHIFT CTRL + SPACE", dispatch_exec("station-menu theme"), "Theme menu")
bind(
'SUPER + BACKSPACE',
dispatch_exec 'hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r \'.address\')" opaque toggle',
'Toggle window transparency'
)
bind('SUPER + SHIFT + BACKSPACE', function() bind('SUPER + SHIFT + BACKSPACE', function()
local gaps = hl.get_config 'general.gaps_out' local gaps = hl.get_config 'general.gaps_out'
if gaps.top == 0 then if gaps.top == 0 then
@@ -269,78 +385,210 @@ bind('SUPER + SHIFT + BACKSPACE', function()
end, 'Toggle window gaps') end, 'Toggle window gaps')
-- Notifications -- Notifications
bind('SUPER + COMMA', exec 'makoctl dismiss', 'Dismiss last notification') bind(
bind('SUPER + SHIFT + COMMA', exec 'makoctl dismiss --all', 'Dismiss all notifications') 'SUPER + COMMA',
bind('SUPER + CTRL + COMMA', exec 'station-toggle-notification-silencing', 'Toggle silencing notifications') dispatch_exec 'makoctl dismiss',
bind('SUPER + ALT + COMMA', exec 'makoctl invoke', 'Invoke last notification') 'Dismiss last notification'
bind('SUPER + SHIFT + ALT + COMMA', exec 'makoctl restore', 'Restore last notification') )
bind(
'SUPER + SHIFT + COMMA',
dispatch_exec 'makoctl dismiss --all',
'Dismiss all notifications'
)
bind(
'SUPER + CTRL + COMMA',
dispatch_exec 'station-toggle-notification-silencing',
'Toggle silencing notifications'
)
bind(
'SUPER + ALT + COMMA',
dispatch_exec 'makoctl invoke',
'Invoke last notification'
)
bind(
'SUPER + SHIFT + ALT + COMMA',
dispatch_exec 'makoctl restore',
'Restore last notification'
)
-- Toggles -- Toggles
bind('SUPER + CTRL + I', exec 'station-toggle-idle', 'Toggle locking on idle') bind(
bind('SUPER + CTRL + N', exec 'station-toggle-nightlight', 'Toggle nightlight') 'SUPER + CTRL + I',
dispatch_exec 'station-toggle-idle',
'Toggle locking on idle'
)
bind(
'SUPER + CTRL + N',
dispatch_exec 'station-toggle-nightlight',
'Toggle nightlight'
)
-- Captures -- Captures
bind('PRINT', exec 'station-cmd-screenshot', 'Screenshot') bind('PRINT', dispatch_exec 'station-cmd-screenshot', 'Screenshot')
bind('ALT + PRINT', exec 'station-menu screenrecord', 'Screenrecording') bind(
bind('SUPER + PRINT', exec 'pkill hyprpicker || hyprpicker -a', 'Color picker') 'ALT + PRINT',
dispatch_exec 'station-menu screenrecord',
'Screenrecording'
)
bind(
'SUPER + PRINT',
dispatch_exec 'pkill hyprpicker || hyprpicker -a',
'Color picker'
)
-- File sharing -- File sharing
-- bind("SUPER CTRL + S", exec("station-menu share"), "Share") -- bind("SUPER CTRL + S", dispatch_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(
bind('SUPER + CTRL + ALT + B', exec 'notify-send "󰁹 Battery is at $(station-battery-remaining)%"', 'Show battery remaining') 'SUPER + CTRL + ALT + T',
dispatch_exec 'notify " $(date +"%A %H:%M — %d %B W%V %Y")"',
'Show time'
)
bind(
'SUPER + CTRL + ALT + B',
dispatch_exec 'notify-send "󰁹 Battery is at $(station-battery-remaining)%"',
'Show battery remaining'
)
bind('SUPER + CTRL + ALT + W', function() 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', dispatch_exec 'station-launch-audio', 'Audio controls')
bind('SUPER + CTRL + B', exec 'station-launch-bluetooth', 'Bluetooth controls') bind(
bind('SUPER + CTRL + W', exec 'station-launch-wifi', 'Wifi controls') 'SUPER + CTRL + B',
bind('SUPER + CTRL + T', exec 'station-launch-tui btop', 'Activity') dispatch_exec 'station-launch-bluetooth',
'Bluetooth controls'
)
bind('SUPER + CTRL + W', dispatch_exec 'station-launch-wifi', 'Wifi controls')
bind('SUPER + CTRL + T', dispatch_exec 'station-launch-tui btop', 'Activity')
-- Dictation -- Dictation
-- bind("SUPER CTRL + X", exec("voxtype record toggle"), "Toggle dictation") -- bind("SUPER CTRL + X", dispatch_exec("voxtype record toggle"), "Toggle dictation")
-- Zoom -- Zoom
bind('SUPER + CTRL + Z', exec "hyprctl keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '.float + 1')", 'Zoom in') bind(
bind('SUPER + CTRL + ALT + Z', exec 'hyprctl keyword cursor:zoom_factor 1', 'Reset zoom') 'SUPER + CTRL + Z',
dispatch_exec "hyprctl keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '.float + 1')",
'Zoom in'
)
bind(
'SUPER + CTRL + ALT + Z',
dispatch_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", dispatch_exec("station-lock-screen"), "Lock system")
-- ========================== -- ==========================
-- Applications -- Applications
-- ========================== -- ==========================
bind('SUPER + RETURN', exec 'uwsm-app -- xdg-terminal-exec', 'Terminal') bind(
bind('SUPER + ALT + RETURN', exec 'uwsm-app -- xdg-terminal-exec --dir="$(station-cmd-terminal-cwd)" tmux new', 'Tmux') 'SUPER + RETURN',
bind('SUPER + SHIFT + F', exec 'uwsm-app -- nautilus --new-window', 'File manager') dispatch_exec 'uwsm-app -- xdg-terminal-exec',
bind('SUPER + ALT + SHIFT + F', exec 'uwsm-app -- nautilus --new-window "$(station-cmd-terminal-cwd)"', 'File manager (cwd)') 'Terminal'
bind('SUPER + SHIFT + B', exec 'station-launch-browser', 'Browser') )
bind('SUPER + SHIFT + ALT + B', exec 'station-launch-browser --private', 'Browser (private)') bind(
bind('SUPER + SHIFT + S', exec 'station-launch-or-focus spotify', 'Spotify') 'SUPER + ALT + RETURN',
bind('SUPER + SHIFT + M', exec 'station-launch-or-focus psysonic', 'Music') dispatch_exec 'uwsm-app -- xdg-terminal-exec --dir="$(station-cmd-terminal-cwd)" tmux new',
-- bind("SUPER SHIFT + D", exec("station-launch-tui lazydocker"), "Docker") 'Tmux'
bind('SUPER + SHIFT + G', exec 'station-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"', 'Signal') )
bind('SUPER + SHIFT + D', exec 'station-launch-or-focus ^chrome-discord.com__channels_@me-Default$ "uwsm-app -- discord"', 'Discord') bind(
bind('SUPER + SHIFT + W', exec 'station-launch-or-focus ^chrome-web.whatsapp.com__-Default$ "uwsm-app -- whatsapp"', 'Whatsapp') 'SUPER + SHIFT + F',
bind('SUPER + SHIFT + P', exec 'station-launch-or-focus ^superProductivity$ "uwsm-app -- super-productivity"', 'Super Productivity') dispatch_exec 'uwsm-app -- nautilus --new-window',
bind('SUPER + SHIFT + N', exec 'uwsm-app -- xdg-terminal-exec --app-id=org.station.notes nvim ~/Tower/Documents/Notes', 'Editor') 'File manager'
-- bind("SUPER SHIFT + W", exec("uwsm-app -- typora --enable-wayland-ime"), "Typora") )
bind('SUPER + SHIFT + SLASH', exec 'Enpass showassistant', 'Passwords') bind(
bind('SUPER + SHIFT + E', exec 'station-launch-or-focus mailspring', 'Email') 'SUPER + ALT + SHIFT + F',
dispatch_exec 'uwsm-app -- nautilus --new-window "$(station-cmd-terminal-cwd)"',
'File manager (cwd)'
)
bind('SUPER + SHIFT + B', dispatch_exec 'station-launch-browser', 'Browser')
bind(
'SUPER + SHIFT + ALT + B',
dispatch_exec 'station-launch-browser --private',
'Browser (private)'
)
bind(
'SUPER + SHIFT + S',
dispatch_exec 'station-launch-or-focus spotify',
'Spotify'
)
bind(
'SUPER + SHIFT + M',
dispatch_exec 'station-launch-or-focus psysonic',
'Music'
)
-- bind("SUPER SHIFT + D", dispatch_exec("station-launch-tui lazydocker"), "Docker")
bind(
'SUPER + SHIFT + G',
dispatch_exec 'station-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"',
'Signal'
)
bind(
'SUPER + SHIFT + D',
dispatch_exec 'station-launch-or-focus ^chrome-discord.com__channels_@me-Default$ "uwsm-app -- discord"',
'Discord'
)
bind(
'SUPER + SHIFT + W',
dispatch_exec 'station-launch-or-focus ^chrome-web.whatsapp.com__-Default$ "uwsm-app -- whatsapp"',
'Whatsapp'
)
bind(
'SUPER + SHIFT + P',
dispatch_exec 'station-launch-or-focus ^superProductivity$ "uwsm-app -- super-productivity"',
'Super Productivity'
)
bind(
'SUPER + SHIFT + N',
dispatch_exec 'uwsm-app -- xdg-terminal-exec --app-id=org.station.notes nvim ~/Tower/Documents/Notes',
'Editor'
)
-- bind("SUPER SHIFT + W", dispatch_exec("uwsm-app -- typora --enable-wayland-ime"), "Typora")
bind('SUPER + SHIFT + SLASH', dispatch_exec 'Enpass showassistant', 'Passwords')
bind(
'SUPER + SHIFT + E',
dispatch_exec 'station-launch-or-focus mailspring',
'Email'
)
bind('SUPER + SHIFT + A', exec 'station-launch-webapp "https://gemini.google.com/app"', 'ChatGPT') bind(
bind('SUPER + SHIFT + C', exec 'station-launch-webapp "https://tower.scarif.space/apps/calendar"', 'Calendar') 'SUPER + SHIFT + A',
bind('SUPER + SHIFT + Y', exec 'station-launch-or-focus-webapp "YouTube" "https://youtube.com/"', 'YouTube') dispatch_exec 'station-launch-webapp "https://gemini.google.com/app"',
bind('SUPER + SHIFT + ALT + G', exec 'station-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"', 'WhatsApp') 'ChatGPT'
bind('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(
-- bind("SUPER SHIFT + X", exec("station-launch-webapp "https://x.com/""), "X") 'SUPER + SHIFT + C',
-- bind("SUPER SHIFT ALT + X", exec("station-launch-webapp "https://x.com/compose/post""), "X Post") dispatch_exec 'station-launch-webapp "https://tower.scarif.space/apps/calendar"',
'Calendar'
)
bind(
'SUPER + SHIFT + Y',
dispatch_exec 'station-launch-or-focus-webapp "YouTube" "https://youtube.com/"',
'YouTube'
)
bind(
'SUPER + SHIFT + ALT + G',
dispatch_exec 'station-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"',
'WhatsApp'
)
bind(
'SUPER + SHIFT + CTRL + G',
dispatch_exec 'station-launch-or-focus-webapp "Google Maps" "https://maps.google.com"',
'Google Maps'
)
-- bind("SUPER SHIFT + P", dispatch_exec("station-launch-or-focus-webapp "Google Photos" "https://photos.google.com/""), "Google Photos")
-- bind("SUPER SHIFT + X", dispatch_exec("station-launch-webapp "https://x.com/""), "X")
-- bind("SUPER SHIFT ALT + X", dispatch_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',
dispatch_exec 'ghostty -e ssh scarif',
'SSH to scarif'
)
+20 -17
View File
@@ -1,33 +1,36 @@
-- Cursor size -- Cursor size
hl.env("XCURSOR_SIZE", "24") hl.env('XCURSOR_SIZE', '24')
hl.env("HYPRCURSOR_SIZE", "24") hl.env('HYPRCURSOR_SIZE', '24')
-- Force all apps to use Wayland -- Force all apps to use Wayland
hl.env("GDK_BACKEND", "wayland,x11,*") hl.env('GDK_BACKEND', 'wayland,x11,*')
hl.env("QT_QPA_PLATFORM", "wayland;xcb") hl.env('QT_QPA_PLATFORM', 'wayland;xcb')
hl.env("QT_STYLE_OVERRIDE", "kvantum") hl.env('QT_STYLE_OVERRIDE', 'kvantum')
hl.env("SDL_VIDEODRIVER", "wayland,x11") hl.env('SDL_VIDEODRIVER', 'wayland,x11')
hl.env("MOZ_ENABLE_WAYLAND", "1") hl.env('MOZ_ENABLE_WAYLAND', '1')
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "wayland") hl.env('ELECTRON_OZONE_PLATFORM_HINT', 'wayland')
hl.env("OZONE_PLATFORM", "wayland") hl.env('OZONE_PLATFORM', 'wayland')
hl.env("XDG_SESSION_TYPE", "wayland") hl.env('XDG_SESSION_TYPE', 'wayland')
-- Allow better support for screen sharing (Google Meet, Discord, etc) -- Allow better support for screen sharing (Google Meet, Discord, etc)
hl.env("XDG_CURRENT_DESKTOP", "Hyprland") hl.env('XDG_CURRENT_DESKTOP', 'Hyprland')
hl.env("XDG_SESSION_DESKTOP", "Hyprland") hl.env('XDG_SESSION_DESKTOP', 'Hyprland')
hl.config({ -- hl.env('WLR_DRM_DEVICES', '/dev/dri/card0:/dev/dri/card1')
hl.config {
xwayland = { xwayland = {
force_zero_scaling = true, force_zero_scaling = true,
}, },
}) }
-- Use XCompose file -- Use XCompose file
hl.env("XCOMPOSEFILE", "~/.config/xcompose") hl.env('XCOMPOSEFILE', '~/.config/xcompose')
-- Don't show update on first launch -- Don't show update on first launch
hl.config({ hl.config {
ecosystem = { ecosystem = {
no_update_news = true, no_update_news = true,
}, },
}) }
+82
View File
@@ -0,0 +1,82 @@
DEFAULT_LAYOUT = 'master'
LAPTOP_MONITOR_NAME = 'BOE NE160QDM-NZ6'
LEFT_MONITOR_NAME = 'Samsung Electric Company LU28R55 HNMN500475'
RIGHT_MONITOR_NAME = 'Samsung Electric Company LU28R55 HNMN500462'
dispatch_exec = hl.dsp.exec_cmd
exec = hl.exec_cmd
shortcut = hl.dsp.send_shortcut
function bind(key, cmd, desc, opts)
opts = opts or {}
opts.desc = desc
hl.bind(key, cmd, opts)
end
function bindl(key, cmd, desc, opts)
opts = opts or {}
opts.locked = true
bind(key, cmd, desc, opts)
end
function bindlr(key, cmd, desc, opts)
opts = opts or {}
opts.repeating = true
bindl(key, cmd, desc, opts)
end
function notify(text, duration)
hl.notification.create { text = text, duration = duration or 2000 }
end
function is_lid_closed()
local file = io.open('/proc/acpi/button/lid/LID0/state', 'r')
if not file then
file = io.open('/proc/acpi/button/lid/LID/state', 'r')
end
if file then
local state = file:read '*a'
file:close()
return string.find(state, 'closed') ~= nil
end
return false
end
function toggle_laptop_monitor()
hl.monitor {
output = 'desc:BOE NE160QDM-NZ6',
disabled = is_lid_closed(),
}
end
function get_current_layout()
local workspace = hl.get_active_workspace()
if hl.get_active_special_workspace() then
workspace = hl.get_active_special_workspace()
end
if not workspace then
return 'master'
end
return workspace.tiled_layout
end
function get_active_workspace()
local workspace = hl.get_active_workspace()
if hl.get_active_special_workspace() then
workspace = hl.get_active_special_workspace()
end
return workspace
end
function is_laptop_screen_focused()
local monitor = hl.get_active_monitor()
return monitor and monitor.description == LAPTOP_MONITOR_NAME
end
+11 -8
View File
@@ -1,8 +1,11 @@
require("autostart") require 'helpers'
require("workspaces") require 'autostart'
require("bindings") require 'workspaces'
require("envs") require 'bindings'
require("looknfeel") require 'envs'
require("input") require 'looknfeel'
require("windows") require 'input'
require("monitors") require 'windows'
require 'monitors'
require 'scratchpad'
-25
View File
@@ -1,25 +0,0 @@
# Makes hyprsunset do nothing to the screen by default
# Without this, the default applies some tint to the monitor
profile {
time = 07:00
identity = true
}
# and use the following:
profile {
time = 20:00
temperature = 4000
gamma = 0.5
}
profile {
time = 21:00
temperature = 3000
gamma = 0.4
}
profile {
time = 22:00
temperature = 2000
gamma = 0.3
}
+9 -8
View File
@@ -1,12 +1,12 @@
-- https://wiki.hyprland.org/Configuring/Variables/#input -- https://wiki.hyprland.org/Configuring/Variables/#input
hl.config({ hl.config {
input = { input = {
-- Use multiple keyboard layouts and switch between them with Left Alt + Right Alt -- Use multiple keyboard layouts and switch between them with Left Alt + Right Alt
kb_layout = "gb,ro", kb_layout = 'gb,ro',
-- Use a specific keyboard variant if needed (e.g. intl for international keyboards) -- Use a specific keyboard variant if needed (e.g. intl for international keyboards)
-- kb_variant = "intl", -- kb_variant = "intl",
-- kb_model = -- kb_model =
kb_options = "compose:caps", kb_options = 'caps:ctrl_modifier,caps:escape',
-- kb_rules = -- kb_rules =
-- Change speed of keyboard repeat -- Change speed of keyboard repeat
@@ -61,16 +61,16 @@ hl.config({
key_press_enables_dpms = true, -- key press will trigger wake key_press_enables_dpms = true, -- key press will trigger wake
mouse_move_enables_dpms = true, -- mouse move will trigger wake mouse_move_enables_dpms = true, -- mouse move will trigger wake
}, },
}) }
-- Scroll nicely in the terminal -- Scroll nicely in the terminal
hl.window_rule({ hl.window_rule {
name = "Scroll nicely in the terminal", name = 'Scroll nicely in the terminal',
match = { match = {
class = "com.mitchellh.ghostty", class = 'com.mitchellh.ghostty',
}, },
scroll_mouse = 1.5, scroll_mouse = 1.5,
}) }
-- Enable touchpad gestures for changing workspaces -- Enable touchpad gestures for changing workspaces
-- See https://wiki.hyprland.org/Configuring/Gestures/ -- See https://wiki.hyprland.org/Configuring/Gestures/
@@ -94,3 +94,4 @@ hl.window_rule({
-- active_area_position = { 0.0, (tablet_size.height - new_tablet_height) / 2 }, -- active_area_position = { 0.0, (tablet_size.height - new_tablet_height) / 2 },
-- }) -- })
-- end -- end
+107 -19
View File
@@ -25,8 +25,7 @@ hl.config {
-- Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on -- Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false, allow_tearing = false,
-- layout = scrolling, # Change to niri-like side-scrolling layout layout = DEFAULT_LAYOUT,
layout = 'dwindle',
}, },
-- https://wiki.hyprland.org/Configuring/Variables/#decoration -- https://wiki.hyprland.org/Configuring/Variables/#decoration
@@ -119,6 +118,7 @@ hl.config {
cursor = { cursor = {
hide_on_key_press = true, hide_on_key_press = true,
warp_on_change_workspace = 1, warp_on_change_workspace = 1,
no_hardware_cursors = 1,
}, },
-- Auto toggle scratchpad on switching workspace from scratchpad -- Auto toggle scratchpad on switching workspace from scratchpad
@@ -131,34 +131,122 @@ hl.config {
-- Avoid overly wide single-window layouts on wide screens -- Avoid overly wide single-window layouts on wide screens
-- single_window_aspect_ratio = 1 1, -- single_window_aspect_ratio = 1 1,
}, },
render = {
direct_scanout = false,
},
} }
-- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/ -- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/
hl.curve('easeOutQuint', { type = 'bezier', points = { { 0.23, 1 }, { 0.32, 1 } } }) hl.curve(
hl.curve('easeInOutCubic', { type = 'bezier', points = { { 0.65, 0.05 }, { 0.36, 1 } } }) 'easeOutQuint',
{ type = 'bezier', points = { { 0.23, 1 }, { 0.32, 1 } } }
)
hl.curve(
'easeInOutCubic',
{ type = 'bezier', points = { { 0.65, 0.05 }, { 0.36, 1 } } }
)
hl.curve('linear', { type = 'bezier', points = { { 0, 0 }, { 1, 1 } } }) hl.curve('linear', { type = 'bezier', points = { { 0, 0 }, { 1, 1 } } })
hl.curve('almostLinear', { type = 'bezier', points = { { 0.5, 0.5 }, { 0.75, 1 } } }) hl.curve(
'almostLinear',
{ type = 'bezier', points = { { 0.5, 0.5 }, { 0.75, 1 } } }
)
hl.curve('quick', { type = 'bezier', points = { { 0.15, 0 }, { 0.1, 1 } } }) hl.curve('quick', { type = 'bezier', points = { { 0.15, 0 }, { 0.1, 1 } } })
-- Default springs -- Default springs
hl.curve('easy', { type = 'spring', mass = 1, stiffness = 71.2633, dampening = 15.8273644 }) hl.curve(
'easy',
{ type = 'spring', mass = 1, stiffness = 71.2633, dampening = 15.8273644 }
)
hl.animation { leaf = 'global', enabled = true, speed = 10, bezier = 'default' } hl.animation { leaf = 'global', enabled = true, speed = 10, bezier = 'default' }
hl.animation { leaf = 'border', enabled = true, speed = 5.39, bezier = 'easeOutQuint' } hl.animation {
leaf = 'border',
enabled = true,
speed = 5.39,
bezier = 'easeOutQuint',
}
hl.animation { leaf = 'windows', enabled = true, speed = 4.79, spring = 'easy' } hl.animation { leaf = 'windows', enabled = true, speed = 4.79, spring = 'easy' }
hl.animation { leaf = 'windowsIn', enabled = true, speed = 4.1, spring = 'easy', style = 'popin 87%' } hl.animation {
hl.animation { leaf = 'windowsOut', enabled = true, speed = 1.49, bezier = 'linear', style = 'popin 87%' } leaf = 'windowsIn',
hl.animation { leaf = 'fadeIn', enabled = true, speed = 1.73, bezier = 'almostLinear' } enabled = true,
hl.animation { leaf = 'fadeOut', enabled = true, speed = 1.46, bezier = 'almostLinear' } speed = 4.1,
spring = 'easy',
style = 'popin 87%',
}
hl.animation {
leaf = 'windowsOut',
enabled = true,
speed = 1.49,
bezier = 'linear',
style = 'popin 87%',
}
hl.animation {
leaf = 'fadeIn',
enabled = true,
speed = 1.73,
bezier = 'almostLinear',
}
hl.animation {
leaf = 'fadeOut',
enabled = true,
speed = 1.46,
bezier = 'almostLinear',
}
hl.animation { leaf = 'fade', enabled = true, speed = 3.03, bezier = 'quick' } hl.animation { leaf = 'fade', enabled = true, speed = 3.03, bezier = 'quick' }
hl.animation { leaf = 'layers', enabled = true, speed = 3.81, bezier = 'easeOutQuint' } hl.animation {
hl.animation { leaf = 'layersIn', enabled = true, speed = 4, bezier = 'easeOutQuint', style = 'fade' } leaf = 'layers',
hl.animation { leaf = 'layersOut', enabled = true, speed = 1.5, bezier = 'linear', style = 'fade' } enabled = true,
hl.animation { leaf = 'fadeLayersIn', enabled = true, speed = 1.79, bezier = 'almostLinear' } speed = 3.81,
hl.animation { leaf = 'fadeLayersOut', enabled = true, speed = 1.39, bezier = 'almostLinear' } bezier = 'easeOutQuint',
hl.animation { leaf = 'workspaces', enabled = true, speed = 1.94, bezier = 'almostLinear', style = 'fade' } }
hl.animation { leaf = 'workspacesIn', enabled = true, speed = 1.21, bezier = 'almostLinear', style = 'fade' } hl.animation {
hl.animation { leaf = 'workspacesOut', enabled = true, speed = 1.94, bezier = 'almostLinear', style = 'fade' } leaf = 'layersIn',
enabled = true,
speed = 4,
bezier = 'easeOutQuint',
style = 'fade',
}
hl.animation {
leaf = 'layersOut',
enabled = true,
speed = 1.5,
bezier = 'linear',
style = 'fade',
}
hl.animation {
leaf = 'fadeLayersIn',
enabled = true,
speed = 1.79,
bezier = 'almostLinear',
}
hl.animation {
leaf = 'fadeLayersOut',
enabled = true,
speed = 1.39,
bezier = 'almostLinear',
}
hl.animation {
leaf = 'workspaces',
enabled = true,
speed = 1.94,
bezier = 'almostLinear',
style = 'fade',
}
hl.animation {
leaf = 'workspacesIn',
enabled = true,
speed = 1.21,
bezier = 'almostLinear',
style = 'fade',
}
hl.animation {
leaf = 'workspacesOut',
enabled = true,
speed = 1.94,
bezier = 'almostLinear',
style = 'fade',
}
hl.animation { leaf = 'zoomFactor', enabled = true, speed = 7, bezier = 'quick' } hl.animation { leaf = 'zoomFactor', enabled = true, speed = 7, bezier = 'quick' }
-- Style Gum confirm to match terminal theme -- Style Gum confirm to match terminal theme
+5 -28
View File
@@ -2,19 +2,19 @@
-- List current monitors and resolutions possible: hyprctl monitors -- List current monitors and resolutions possible: hyprctl monitors
hl.monitor { hl.monitor {
output = 'desc:Samsung Electric Company LU28R55 HNMN500475', output = 'desc:' .. LEFT_MONITOR_NAME,
mode = '3840x2160', mode = '3840x2160@30',
position = '0x0', position = '0x0',
scale = 1.5, scale = 1.5,
} }
hl.monitor { hl.monitor {
output = 'desc:Samsung Electric Company LU28R55 HNMN500462', output = 'desc:' .. RIGHT_MONITOR_NAME,
mode = '3840x2160', mode = '3840x2160@30',
position = '2560x0', position = '2560x0',
scale = 1.5, scale = 1.5,
} }
hl.monitor { hl.monitor {
output = 'desc:BOE NE160QDM-NZ6', output = 'desc:' .. LAPTOP_MONITOR_NAME,
mode = '2560x1600', mode = '2560x1600',
position = '5120x720', position = '5120x720',
scale = 'auto', scale = 'auto',
@@ -22,26 +22,3 @@ hl.monitor {
hl.monitor { output = '', mode = 'preferred', position = 'auto', scale = 1 } hl.monitor { output = '', mode = 'preferred', position = 'auto', scale = 1 }
local function is_lid_closed()
local file = io.open('/proc/acpi/button/lid/LID0/state', 'r')
if not file then
file = io.open('/proc/acpi/button/lid/LID/state', 'r')
end
if file then
local state = file:read '*a'
file:close()
return string.find(state, 'closed') ~= nil
end
return false
end
if is_lid_closed() then
hl.monitor {
output = 'desc:BOE NE160QDM-NZ6',
disabled = true,
}
end
+60
View File
@@ -0,0 +1,60 @@
-- Scratchpad apps
hl.window_rule {
workspace = 'special:music',
match = {
class = 'Spotify|psysonic',
},
}
hl.window_rule {
workspace = 'special:comms',
match = {
class = '^(chrome-discord.com__channels_@me-Default|chrome-web.whatsapp.com__-Default|signal)$',
},
}
hl.window_rule {
workspace = 'special:prod',
match = {
class = '^(superproductivity|org.station.notes)$',
},
}
-- Control 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 + N', function()
hl.dispatch(hl.dsp.workspace.toggle_special 'prod')
local windows = hl.get_windows { workspace = 'special:prod' }
if #windows == 0 then
exec 'station-launch-or-focus ^superProductivity$ "uwsm-app -- super-productivity"'
exec 'uwsm-app -- xdg-terminal-exec --app-id=org.station.notes nvim ~/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
exec 'station-launch-or-focus spotify'
exec '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
exec 'station-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"'
exec 'station-launch-or-focus ^chrome-web.whatsapp.com__-Default$ "station-launch-webapp https://web.whatsapp.com"'
exec 'station-launch-or-focus ^chrome-discord.com__channels_@me-Default$ "station-launch-webapp https://discord.com/channels/@me"'
end
end, 'Toggle comms workspace')
bind('SUPER + X', function()
hl.dispatch(hl.dsp.workspace.toggle_special 'monitor')
end, 'Toggle monitor workspace')
+17 -16
View File
@@ -1,31 +1,32 @@
-- See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -- See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
-- Tag all windows for default opacity (apps can override with -default-opacity tag) -- Tag all windows for default opacity (apps can override with -default-opacity tag)
hl.window_rule({ hl.window_rule {
name = "default-opacity", name = 'default-opacity',
tag = "+default-opacity", tag = '+default-opacity',
match = { class = ".*" }, match = { class = '.*' },
}) }
-- Fix some dragging issues with XWayland -- Fix some dragging issues with XWayland
hl.window_rule({ hl.window_rule {
name = "xwayland-dragging", name = 'xwayland-dragging',
match = { match = {
class = "^$", class = '^$',
title = "^$", title = '^$',
xwayland = true, xwayland = true,
float = true, float = true,
fullscreen = false, fullscreen = false,
pin = false, pin = false,
}, },
no_focus = true, no_focus = true,
}) }
-- App-specific tweaks (may remove default-opacity tag) -- App-specific tweaks (may remove default-opacity tag)
require("apps") require 'apps'
-- Apply default opacity after apps have had a chance to opt out -- Apply default opacity after apps have had a chance to opt out
hl.window_rule({ hl.window_rule {
name = "apply-opacity", name = 'apply-opacity',
match = { tag = "default-opacity" }, match = { tag = 'default-opacity' },
opacity = "0.97 0.9", opacity = '0.97 0.8',
}) }
+81 -45
View File
@@ -7,24 +7,22 @@ local workspace_map = {
} }
local function setup_monitors() local function setup_monitors()
toggle_laptop_monitor()
local monitors = hl.get_monitors() local monitors = hl.get_monitors()
local monitor_count = #monitors local monitor_count = #monitors
-- Move active window to a workspace with SUPER + SHIFT + [1-5]
for i = 1, #workspace_map do for i = 1, #workspace_map do
for j = monitor_count, 1, -1 do for j = monitor_count, 1, -1 do
local monitor = monitors[j] local monitor = monitors[j]
-- local workspace_id = "name:" .. workspace_map[i] .. "_" .. j
local workspace_id = (i - 1) * monitor_count + j
local workspace_name = workspace_map[i] .. '_' .. j local workspace_name = workspace_map[i] .. '_' .. j
hl.workspace_rule { hl.workspace_rule {
-- workspace = (i - 1) * monitor_count + j,
-- default_name = workspace_name,
workspace = 'name:' .. workspace_name, workspace = 'name:' .. workspace_name,
monitor = monitor.name, monitor = monitor.name,
default = i == 1, default = i == 1,
} }
-- Move to a workspace with SUPER + [1-5]
hl.bind( hl.bind(
'SUPER + code:1' .. (i - 1), 'SUPER + code:1' .. (i - 1),
hl.dsp.focus { workspace = 'name:' .. workspace_name }, hl.dsp.focus { workspace = 'name:' .. workspace_name },
@@ -32,24 +30,50 @@ local function setup_monitors()
) )
end end
-- Move active window to a workspace with SUPER + SHIFT + [1-5]
hl.bind('SUPER + SHIFT + code:1' .. (i - 1), function() hl.bind('SUPER + SHIFT + code:1' .. (i - 1), function()
notify('Moving', 2000)
local active_window = hl.get_active_window() local active_window = hl.get_active_window()
local active_workspace = active_window.workspace if active_window then
local active_workspace_name = active_workspace.name local active_workspace = active_window.workspace
local monitor_suffix = active_workspace_name:match '_(%d+)$' or '1' if active_workspace then
local new_workspace = 'name:' .. workspace_map[i] .. '_' .. monitor_suffix local active_workspace_name = active_workspace.name
-- local new_workspace = (i - 1) * monitor_count + active_workspace.id local monitor_suffix = active_workspace_name:match '_(%d+)$'
hl.dispatch(hl.dsp.window.move { workspace = new_workspace, window = active_window, follow = false }) or '1'
end, { description = 'Move window to workspace ' .. workspace_map[i] }) local new_workspace = 'name:'
.. workspace_map[i]
.. '_'
.. monitor_suffix
hl.dispatch(hl.dsp.window.move {
workspace = new_workspace,
window = active_window,
follow = false,
})
end
end
end, {
description = 'Move window to workspace ' .. workspace_map[i],
})
end end
-- A hack to move to the Home workspace when Hyprland first loads -- When removing a monitor move all windows to existing monitors
for j = monitor_count, 1, -1 do local windows = hl.get_windows()
if hl.get_workspaces()[j].id > 0 and monitor_count == 2 then for i = 1, #windows do
hl.dispatch(hl.dsp.focus { workspace = 'name:Home_' .. j }) local window = windows[i]
end if window and window.workspace then
for k, window in pairs(hl.get_windows { workspace = j }) do local workspace_name = window.workspace.name
hl.dispatch(hl.dsp.window.move { window = window, workspace = 'name:Home_1', follow = true }) local monitor_suffix = workspace_name:match '_(%d+)$' or '0'
if tonumber(monitor_suffix) > monitor_count then
local new_workspace = 'name:'
.. workspace_name:match '^%w+'
.. '_1'
hl.dispatch(hl.dsp.window.move {
workspace = new_workspace,
window = window,
follow = false,
})
end
end end
end end
end end
@@ -61,37 +85,49 @@ hl.on('config.reloaded', setup_monitors)
hl.bind('switch:off:Lid Switch', setup_monitors) hl.bind('switch:off:Lid Switch', setup_monitors)
hl.bind('switch:on:Lid Switch', setup_monitors) hl.bind('switch:on:Lid Switch', setup_monitors)
hl.bind('switch:off:Lid Switch', function() local function set_laptop_workspaces_to_monocle()
hl.monitor { local workspaces = hl.get_workspaces()
output = 'desc:BOE NE160QDM-NZ6',
disabled = false,
}
setup_monitors()
end)
hl.bind('switch:on:Lid Switch', function() for i = 1, #workspaces do
hl.monitor { local workspace = workspaces[i]
output = 'desc:BOE NE160QDM-NZ6', if
disabled = true, not workspace.special
} and workspace.monitor
setup_monitors() and workspace.monitor.description == LAPTOP_MONITOR_NAME
end) then
hl.workspace_rule {
hl.on('monitor.focused', function() workspace = 'name:' .. tostring(workspace.name),
local workspace = hl.get_active_workspace() layout = 'monocle',
if hl.get_active_special_workspace() then }
workspace = hl.get_active_special_workspace() end
end
if not workspace then
return
end end
end
local layout = workspace.tiled_layout hl.on('monitor.focused', set_laptop_workspaces_to_monocle)
local monitor = hl.get_active_monitor() hl.on('config.reloaded', set_laptop_workspaces_to_monocle)
if monitor.description == 'BOE NE160QDM-NZ6' then hl.on('window.open', function()
hl.workspace_rule { workspace = 'name:' .. tostring(workspace.name), layout = 'monocle' } local windows = hl.get_windows()
for i = 1, #windows do
local win = windows[i]
if win.workspace.id > 0 then
hl.dispatch(hl.dsp.window.move { workspace = 'name:Home_1' })
end
end
end)
hl.on('workspace.active', function()
local monitors = hl.get_monitors()
local monitor_count = #monitors
local workspace = get_active_workspace()
if workspace and workspace.id > 0 then
for j = monitor_count, 1, -1 do
local monitor = monitors[j]
hl.dsp.focus { workspace = 'name:Home_' .. j }
end
end end
end) end)
+1
View File
@@ -0,0 +1 @@
{"email":"stofflees@gmail.com","sso_id":null,"base_url":"https://vault.scarif.space","identity_url":null,"ui_url":null,"notifications_url":null,"lock_timeout":3600,"sync_interval":3600,"pinentry":"pinentry","client_cert_path":null}
+2
View File
@@ -193,8 +193,10 @@ alias \
g="git" \ g="git" \
ga="git add" \ ga="git add" \
dga="dgit add -f" \ dga="dgit add -f" \
dgA="dgit add -A" \
dgc="dgit commit" \ dgc="dgit commit" \
dgcm="dgit commit -m" \ dgcm="dgit commit -m" \
dgcam="dgit commit -a -m" \
dgs="dgit status" \ dgs="dgit status" \
dgd="dgit diff" \ dgd="dgit diff" \
dgdc="dgit diff --cached" \ dgdc="dgit diff --cached" \
+1 -1
View File
@@ -1,6 +1,6 @@
cac ${XDG_CACHE_HOME:-$HOME/.cache} cac ${XDG_CACHE_HOME:-$HOME/.cache}
cf ${XDG_CONFIG_HOME:-$HOME/.config} cf ${XDG_CONFIG_HOME:-$HOME/.config}
nv ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua nv ${XDG_CONFIG_HOME:-$HOME/.config}/nvim
hy ${XDG_CONFIG_HOME:-$HOME/.config}/hypr hy ${XDG_CONFIG_HOME:-$HOME/.config}/hypr
nx ${XDG_CONFIG_HOME:-$HOME/.config}/nixos nx ${XDG_CONFIG_HOME:-$HOME/.config}/nixos
D ${XDG_DOWNLOAD_DIR:-$HOME/Downloads} D ${XDG_DOWNLOAD_DIR:-$HOME/Downloads}
+11 -13
View File
@@ -37,20 +37,16 @@ export WGETRC="${XDG_CONFIG_HOME:-$HOME/.config}/wget/wgetrc"
export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/shell/inputrc" export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/shell/inputrc"
export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh" export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh"
export WINEPREFIX="${XDG_DATA_HOME:-$HOME/.local/share}/wineprefixes/default" export WINEPREFIX="${XDG_DATA_HOME:-$HOME/.local/share}/wineprefixes/default"
export KODI_DATA="${XDG_DATA_HOME:-$HOME/.local/share}/kodi"
export PASSWORD_STORE_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/password-store" export PASSWORD_STORE_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/password-store"
export TMUX_TMPDIR="$XDG_RUNTIME_DIR" export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
# export ANDROID_SDK_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/android" # export CARGO_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/cargo"
export CARGO_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/cargo" # export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go"
export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go"
export ANSIBLE_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/ansible/ansible.cfg" export ANSIBLE_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/ansible/ansible.cfg"
export UNISON="${XDG_DATA_HOME:-$HOME/.local/share}/unison" export UNISON="${XDG_DATA_HOME:-$HOME/.local/share}/unison"
export HISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/history" export HISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/history"
export WEECHAT_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/weechat" export WEECHAT_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/weechat"
export MBSYNCRC="${XDG_CONFIG_HOME:-$HOME/.config}/mbsync/config" export MBSYNCRC="${XDG_CONFIG_HOME:-$HOME/.config}/mbsync/config"
export ELECTRUMDIR="${XDG_DATA_HOME:-$HOME/.local/share}/electrum" export ELECTRUMDIR="${XDG_DATA_HOME:-$HOME/.local/share}/electrum"
export ANDROID_AVD_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/android/avd"
export ANDROID_USER_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/android"
export CODEX_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/codex" export CODEX_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/codex"
export XCOMPOSEFILE="${XDG_CONFIG_HOME:-$HOME/.config}/xcompose" export XCOMPOSEFILE="${XDG_CONFIG_HOME:-$HOME/.config}/xcompose"
export GEMINI_CLI_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" export GEMINI_CLI_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
@@ -80,16 +76,18 @@ export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme.
# export QT_AUTO_SCREEN_SCALE_FACTOR=1 # export QT_AUTO_SCREEN_SCALE_FACTOR=1
# export QT_SCREEN_SCALE_FACTORS=2 # export QT_SCREEN_SCALE_FACTORS=2
export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads. export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads.
export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm # export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
# Development variables # Development variables
export ANDROID_SDK_ROOT="$HOME/.local/share/android/Sdk" # export ANDROID_USER_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/android"
export ANDROID_HOME="$ANDROID_SDK_ROOT" # export ANDROID_HOME="$ANDROID_USER_HOME/Sdk"
export ANDROID_USER_HOME="$HOME/.local/share/android" # export ANDROID_SDK_ROOT="$ANDROID_HOME"
export GRADLE_USER_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/gradle" # export ANDROID_AVD_HOME="$ANDROID_USER_HOME/avd"
# export GRADLE_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/gradle"
# export GRADLE_USER_HOME="$GRADLE_HOME"
export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/cmdline-tools/bin:$ANDROID_HOME/platform-tools:$ANDROID_AVD_HOME:$ANDROID_HOME/emulator:$XDG_DATA_HOME/cargo/bin" # export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/cmdline-tools/bin:$ANDROID_HOME/platform-tools:$ANDROID_AVD_HOME:$ANDROID_HOME/emulator:$XDG_DATA_HOME/cargo/bin"
export PATH="$HOME/development/flutter/bin:$PATH" # export PATH="$HOME/development/flutter/bin:$PATH"
# Get pretty colours for ls # Get pretty colours for ls
#. /usr/share/LS_COLORS/dircolors.sh #. /usr/share/LS_COLORS/dircolors.sh
+1 -1
View File
@@ -1,7 +1,7 @@
# vim: filetype=sh # vim: filetype=sh
alias cac="cd /home/chris/.cache && ls" \ alias cac="cd /home/chris/.cache && ls" \
cf="cd /home/chris/.config && ls" \ cf="cd /home/chris/.config && ls" \
nv="cd /home/chris/.config/nvim/lua && ls" \ nv="cd /home/chris/.config/nvim && ls" \
hy="cd /home/chris/.config/hypr && ls" \ hy="cd /home/chris/.config/hypr && ls" \
nx="cd /home/chris/.config/nixos && ls" \ nx="cd /home/chris/.config/nixos && ls" \
D="cd /home/chris/Downloads && ls" \ D="cd /home/chris/Downloads && ls" \
+1 -1
View File
@@ -1,6 +1,6 @@
hash -d cac=/home/chris/.cache hash -d cac=/home/chris/.cache
hash -d cf=/home/chris/.config hash -d cf=/home/chris/.config
hash -d nv=/home/chris/.config/nvim/lua hash -d nv=/home/chris/.config/nvim
hash -d hy=/home/chris/.config/hypr hash -d hy=/home/chris/.config/hypr
hash -d nx=/home/chris/.config/nixos hash -d nx=/home/chris/.config/nixos
hash -d D=/home/chris/Downloads hash -d D=/home/chris/Downloads
+2 -2
View File
@@ -2,8 +2,8 @@ name: runcats
root: ~/Code/Sites/runcats/ root: ~/Code/Sites/runcats/
on_project_start: on_project_start:
- go-task up - go-task up
- $BROWSER http://dev.runcats.test:8001 &> /dev/null & - $BROWSER http://dev.runcats.test:8001 &> /dev/null
- $BROWSER http://mail.runcats.test &> /dev/null & - $BROWSER http://mail.runcats.test &> /dev/null
on_project_exit: go-task down on_project_exit: go-task down
startup_window: editor startup_window: editor
windows: windows:
+6 -6
View File
@@ -30,12 +30,12 @@
"Art_2": "", "Art_2": "",
"Gaming_2": "", "Gaming_2": "",
"Writing_2": "󱚍", "Writing_2": "󱚍",
"Home_3": "",
"Dev_3": "",
"Art_3": "",
"Gaming_3": "",
"Writing_3": "󱚍",
}, },
"persistent-workspaces": {
"eDP-1": ["Home_1", "Dev_1", "Art_1", "Gaming_1", "Writing_1"],
"DP-1": ["Home_1", "Dev_1", "Art_1", "Gaming_1", "Writing_1"],
"DP-2": ["Home_2", "Dev_2", "Art_2", "Gaming_2", "Writing_2"],
}
}, },
"custom/station": { "custom/station": {
"format": "<span font='station'>\ueb6a</span>", "format": "<span font='station'>\ueb6a</span>",
@@ -51,7 +51,7 @@
"on-click-right": "ghostty" "on-click-right": "ghostty"
}, },
"clock": { "clock": {
"format": "{:L%A %H:%M}", "format": "{:L%a %b %d %H:%M}",
"format-alt": "{:L%d %B W%V %Y}", "format-alt": "{:L%d %B W%V %Y}",
"tooltip": false, "tooltip": false,
"on-click-right": "station-launch-floating-terminal-with-presentation station-tz-select" "on-click-right": "station-launch-floating-terminal-with-presentation station-tz-select"
+5 -5
View File
@@ -1,11 +1,11 @@
#!/bin/sh #!/bin/sh
case $BLOCK_BUTTON in case $BLOCK_BUTTON in
1) notify-send "This Month" "$(cal --color=always | sed "s/..7m/<b><span color=\"red\">/;s/..27m/<\/span><\/b>/")" && notify-send "Appointments" "$(calcurse -d3)" ;; 1) notify-send "This Month" "$(cal --color=always | sed "s/..7m/<b><span color=\"red\">/;s/..27m/<\/span><\/b>/")" && notify-send "Appointments" "$(calcurse -d3)" ;;
2) setsid -f "$TERMINAL" -e calcurse ;; 2) setsid -f "$TERMINAL" -e calcurse ;;
3) notify-send "📅 Time/date module" "\- Left click to show upcoming appointments for the next three days via \`calcurse -d3\` and show the month via \`cal\` 3) notify-send "📅 Time/date module" "\- Left click to show upcoming appointments for the next three days via \`calcurse -d3\` and show the month via \`cal\`
- Middle click opens calcurse if installed" ;; - Middle click opens calcurse if installed" ;;
6) "$TERMINAL" -e "$EDITOR" "$0" ;; 6) "$TERMINAL" -e "$EDITOR" "$0" ;;
esac esac
date "+%b %d %I:%M%p" date "+%b %d %I:%M%p"
+6 -9
View File
@@ -2,16 +2,13 @@
# Sets the specified image as the current background # Sets the specified image as the current background
if [[ -z $1 ]]; then
echo "Usage: station-bg-set <path-to-image>" >&2
exit 1
fi
BACKGROUND="$1" BACKGROUND="$1"
CURRENT_BACKGROUND_LINK="$HOME/.local/state/station/background" CURRENT_BACKGROUND_LINK="$HOME/.local/state/station/background"
# Create symlink to the new background if [[ -f $BACKGROUND ]]; then
ln -nsf "$BACKGROUND" "$CURRENT_BACKGROUND_LINK" # Create symlink to the new background
ln -nsf "$BACKGROUND" "$CURRENT_BACKGROUND_LINK"
fi
wal -i "$CURRENT_BACKGROUND_LINK" wal -i "$CURRENT_BACKGROUND_LINK"
@@ -20,8 +17,8 @@ pkill -x swaybg
if [[ $(hyprctl monitors -j | jq 'length') -eq 2 ]]; then if [[ $(hyprctl monitors -j | jq 'length') -eq 2 ]]; then
station-bg-split "$CURRENT_BACKGROUND_LINK" "/tmp/bg" station-bg-split "$CURRENT_BACKGROUND_LINK" "/tmp/bg"
first_mon=$(hyprctl monitors -j | jq -r '.[0].name') first_mon=$(hyprctl monitors -j | jq -r 'map(select(.x == 0)) | .[0].name')
second_mon=$(hyprctl monitors -j | jq -r '.[1].name') second_mon=$(hyprctl monitors -j | jq -r 'map(select(.x > 0)) | .[0].name')
setsid uwsm-app -- swaybg -o "$first_mon" -i /tmp/bg/background_left -m fill >/dev/null 2>&1 & setsid uwsm-app -- swaybg -o "$first_mon" -i /tmp/bg/background_left -m fill >/dev/null 2>&1 &
setsid uwsm-app -- swaybg -o "$second_mon" -i /tmp/bg/background_right -m fill >/dev/null 2>&1 & setsid uwsm-app -- swaybg -o "$second_mon" -i /tmp/bg/background_right -m fill >/dev/null 2>&1 &
else else
+1 -1
View File
@@ -241,7 +241,7 @@ show_system_menu() {
case $(menu "System" "$options") in case $(menu "System" "$options") in
*Screensaver*) station-launch-screensaver force ;; *Screensaver*) station-launch-screensaver force ;;
*Lock*) station-lock-screen ;; *Lock*) station-lock-screen ;;
*Suspend*) hyprctl dispatch 'hl.dsp.dpms({ action = "disable" })' && systemctl suspend ;; *Suspend*) systemctl suspend ;;
*Hibernate*) systemctl hibernate ;; *Hibernate*) systemctl hibernate ;;
*Logout*) station-system-logout ;; *Logout*) station-system-logout ;;
*Restart*) station-system-reboot ;; *Restart*) station-system-reboot ;;