Compare commits
28
Commits
524d024e7a
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
467ae5e678 | ||
|
|
45a612b227 | ||
|
|
b24b0dcba9 | ||
|
|
9b7e3507d8 | ||
|
|
657851bc02 | ||
|
|
015118d74a | ||
|
|
a73c80531b | ||
|
|
e9d4fd2851 | ||
|
|
c9bf4908e9 | ||
|
|
e9254d1270 | ||
|
|
b1da548292 | ||
|
|
0251bb0910 | ||
|
|
9401bbae24 | ||
|
|
ba12b042fc | ||
|
|
0a620e8439 | ||
|
|
aa898b212b | ||
|
|
3b40a50401 | ||
|
|
72f25cd766 | ||
|
|
d34141a273 | ||
|
|
df75a1e256 | ||
|
|
6c1cef141e | ||
|
|
0bcd72d516 | ||
|
|
cefbbbc575 | ||
|
|
20b2a45e60 | ||
|
|
bc302dbb16 | ||
|
|
2931ea0e18 | ||
|
|
151d02f532 | ||
|
|
7b211d37f5 |
@@ -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"
|
||||||
|
|||||||
+65
-147
@@ -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',
|
||||||
|
no_initial_focus = true,
|
||||||
|
stay_focused = false,
|
||||||
|
dim_around = true,
|
||||||
|
decorate = false,
|
||||||
match = {
|
match = {
|
||||||
class = '(krita)',
|
class = '^(krita)$',
|
||||||
|
modal = true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
-- Float Steam
|
|
||||||
-- hl.window_rule {
|
|
||||||
-- name = 'steam-float',
|
|
||||||
-- float = true,
|
|
||||||
-- no_initial_focus = true,
|
|
||||||
-- workspace = 'name:Gaming_1',
|
|
||||||
-- idle_inhibit = 'fullscreen',
|
|
||||||
-- match = {
|
|
||||||
-- class = 'steam',
|
|
||||||
-- },
|
|
||||||
-- }
|
|
||||||
-- hl.window_rule {
|
|
||||||
-- name = 'steam-app-center',
|
|
||||||
-- 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
@@ -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
@@ -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'
|
||||||
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ hl.env('XDG_SESSION_TYPE', 'wayland')
|
|||||||
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.env('WLR_DRM_DEVICES', '/dev/dri/card0:/dev/dri/card1')
|
-- hl.env('WLR_DRM_DEVICES', '/dev/dri/card0:/dev/dri/card1')
|
||||||
|
|
||||||
hl.config {
|
hl.config {
|
||||||
xwayland = {
|
xwayland = {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
@@ -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'
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
+103
-19
@@ -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
|
||||||
@@ -138,31 +138,115 @@ hl.config {
|
|||||||
}
|
}
|
||||||
|
|
||||||
-- 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
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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',
|
||||||
})
|
}
|
||||||
|
|
||||||
|
|||||||
+77
-55
@@ -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,51 +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 monitor = hl.get_active_monitor()
|
hl.on('monitor.focused', set_laptop_workspaces_to_monocle)
|
||||||
|
|
||||||
if monitor.description == 'BOE NE160QDM-NZ6' then
|
hl.on('config.reloaded', set_laptop_workspaces_to_monocle)
|
||||||
hl.workspace_rule { workspace = 'name:' .. tostring(workspace.name), layout = 'monocle' }
|
|
||||||
|
hl.on('window.open', function()
|
||||||
|
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
|
||||||
end)
|
end)
|
||||||
|
|
||||||
hl.on('config.reloaded', function()
|
hl.on('workspace.active', function()
|
||||||
local workspace = hl.get_active_workspace()
|
local monitors = hl.get_monitors()
|
||||||
if hl.get_active_special_workspace() then
|
local monitor_count = #monitors
|
||||||
workspace = hl.get_active_special_workspace()
|
|
||||||
end
|
|
||||||
if not workspace then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local monitor = hl.get_active_monitor()
|
local workspace = get_active_workspace()
|
||||||
|
|
||||||
if monitor.description == 'BOE NE160QDM-NZ6' then
|
if workspace and workspace.id > 0 then
|
||||||
hl.workspace_rule { workspace = 'name:' .. tostring(workspace.name), layout = 'monocle' }
|
for j = monitor_count, 1, -1 do
|
||||||
|
local monitor = monitors[j]
|
||||||
|
hl.dsp.focus { workspace = 'name:Home_' .. j }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|||||||
+1
-1
Submodule .config/nvim updated: 03e7f25047...d0225e35a0
@@ -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}
|
||||||
@@ -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,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
@@ -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,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,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,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:
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 ;;
|
||||||
|
|||||||
Reference in New Issue
Block a user