Compare commits
19
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eb1fd1afb8 | ||
|
|
9dda262876 | ||
|
|
c2c5656cac | ||
|
|
a21a2fbd8a | ||
|
|
bad0afde9a | ||
|
|
c5926b669c | ||
|
|
cdbd3e7308 | ||
|
|
f7d3b6e288 | ||
|
|
b8fc830342 | ||
|
|
f27247fe9e | ||
|
|
c392ce7c9c | ||
|
|
89bb7c9509 | ||
|
|
4ca101620e | ||
|
|
d1496a2812 | ||
|
|
66d3b6d136 | ||
|
|
0a64655a1e | ||
|
|
755ca204e4 | ||
|
|
e0e7e616cb | ||
|
|
53ac490efc |
No files matched your search
@@ -1,24 +0,0 @@
|
|||||||
general.import = [ "~/.config/omarchy/current/theme/alacritty.toml" ]
|
|
||||||
|
|
||||||
[env]
|
|
||||||
TERM = "xterm-256color"
|
|
||||||
|
|
||||||
[font]
|
|
||||||
normal = { family = "CaskaydiaMono Nerd Font", style = "Regular" }
|
|
||||||
bold = { family = "CaskaydiaMono Nerd Font", style = "Bold" }
|
|
||||||
italic = { family = "CaskaydiaMono Nerd Font", style = "Italic" }
|
|
||||||
size = 10
|
|
||||||
|
|
||||||
[window]
|
|
||||||
padding.x = 14
|
|
||||||
padding.y = 14
|
|
||||||
decorations = "None"
|
|
||||||
|
|
||||||
[keyboard]
|
|
||||||
bindings = [
|
|
||||||
{ key = "F11", action = "ToggleFullscreen" },
|
|
||||||
{ key = "Insert", mods = "Shift", action = "Paste" },
|
|
||||||
{ key = "Insert", mods = "Control", action = "Copy" },
|
|
||||||
{ key = "Return", mods = "Shift", chars = "\u001B\r" }
|
|
||||||
]
|
|
||||||
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# Extra autostart processes
|
|
||||||
|
|
||||||
# assign workspaces to preferred monitors
|
|
||||||
exec = ~/.local/bin/assign-workspace-monitors
|
|
||||||
|
|
||||||
# autostart various apps in their own special workspaces
|
|
||||||
exec-once = [workspace special:slack silent] slack
|
|
||||||
exec-once = [workspace special:1password silent] 1password
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
-- Extra autostart processes.
|
||||||
|
-- o.launch_on_start("my-service")
|
||||||
|
|
||||||
|
hl.on("hyprland.start", function()
|
||||||
|
hl.exec_cmd(o.launch_webapp("https://app.slack.com/client"), { workspace = "special:slack silent" })
|
||||||
|
end)
|
||||||
|
o.launch_on_start("1password")
|
||||||
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
# Application bindings
|
|
||||||
$terminal = uwsm-app -- xdg-terminal-exec
|
|
||||||
$browser = omarchy-launch-browser
|
|
||||||
|
|
||||||
bindd = SUPER, return, Terminal, exec, $terminal --dir=$(omarchy-cmd-terminal-cwd)
|
|
||||||
bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window
|
|
||||||
bindd = SUPER, B, Browser, exec, $browser
|
|
||||||
bindd = SUPER SHIFT, B, Browser (private), exec, $browser --private
|
|
||||||
bindd = SUPER, M, Music, exec, omarchy-launch-or-focus spotify
|
|
||||||
bindd = SUPER, N, Notes, exec, heynote
|
|
||||||
bindd = SUPER, T, Activity, exec, omarchy-launch-tui btop
|
|
||||||
bindd = SUPER ALT, D, Docker, exec, omarchy-launch-tui lazydocker
|
|
||||||
|
|
||||||
# If your web app url contains #, type it as ## to prevent hyperland treat it as comments
|
|
||||||
bindd = SUPER, A, Claude, exec, omarchy-launch-webapp "https://claude.ai/new"
|
|
||||||
bindd = SUPER, E, Email, exec, omarchy-launch-webapp "https://mail.google.com/mail/u/0/"
|
|
||||||
bindd = SUPER, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/"
|
|
||||||
bindd = SUPER, G, GitLab, exec, omarchy-launch-webapp "https://gitlab.modg.net/"
|
|
||||||
bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations"
|
|
||||||
bindd = SUPER, O, modgoffice, exec, omarchy-launch-webapp "https://office.modg.org"
|
|
||||||
|
|
||||||
# lazy apps: Launch if not currently running, otherwise just switch to that app
|
|
||||||
bindd = SUPER, D, Open/focus DataGrip, exec, ~/.local/bin/lazy-app class:jetbrains-datagrip ~/.local/share/JetBrains/Toolbox/apps/datagrip/bin/datagrip
|
|
||||||
|
|
||||||
# omarchy uses swapwindow for these binds, but I prefer movewindow so that it can cross monitor boundaries
|
|
||||||
unbind = SUPER SHIFT, LEFT
|
|
||||||
unbind = SUPER SHIFT, RIGHT
|
|
||||||
unbind = SUPER SHIFT, UP
|
|
||||||
unbind = SUPER SHIFT, DOWN
|
|
||||||
bindd = SUPER SHIFT, left, Move window to the left, movewindow, l
|
|
||||||
bindd = SUPER SHIFT, right, Move window to the right, movewindow, r
|
|
||||||
bindd = SUPER SHIFT, up, Move window up, movewindow, u
|
|
||||||
bindd = SUPER SHIFT, down, Move window down, movewindow, d
|
|
||||||
|
|
||||||
bindd = SUPER ALT, left, Move current workspace to the left, movecurrentworkspacetomonitor, l
|
|
||||||
bindd = SUPER ALT, right, Move current workspace to the right, movecurrentworkspacetomonitor, r
|
|
||||||
bindd = SUPER ALT, up, Move current workspace up, movecurrentworkspacetomonitor, u
|
|
||||||
bindd = SUPER ALT, down, Move current workspace down, movecurrentworkspacetomonitor, d
|
|
||||||
|
|
||||||
# create a new workspace
|
|
||||||
bindd = SUPER, grave, Create a mew workspace, exec, ~/.local/bin/new-workspace
|
|
||||||
|
|
||||||
# keybinds for background apps
|
|
||||||
bindd = SUPER, S, Show/hide Slack, togglespecialworkspace, slack
|
|
||||||
bindd = SUPER, period, 1Password quick access, exec, 1password --quick-access
|
|
||||||
bindd = SUPER CTRL, period, Show/hide 1Password, togglespecialworkspace, 1password
|
|
||||||
bindd = SUPER, Z, Show Creddy, exec, creddy shortcut show-window
|
|
||||||
|
|
||||||
# I'm used to super+L to lock screen
|
|
||||||
bindd = SUPER, L, Lock screen, exec, omarchy-lock-screen
|
|
||||||
|
|
||||||
# I don't want ctrl+alt+delete to affect my "special" apps
|
|
||||||
unbind = CTRL ALT, DELETE
|
|
||||||
bindd = CTRL ALT, DELETE, Close all windows (except special), exec, ~/.local/bin/close-non-special-windows
|
|
||||||
|
|
||||||
# for WHATEVER reason, hyprland refuses to use the numeric symbols for keypad keys,
|
|
||||||
# so we have to use the navigation symbols instead
|
|
||||||
bindd = SUPER, KP_End, Switch to workspace 1, workspace, 1
|
|
||||||
bindd = SUPER, KP_Down, Switch to workspace 2, workspace, 2
|
|
||||||
bindd = SUPER, KP_Next, Switch to workspace 3, workspace, 3
|
|
||||||
bindd = SUPER, KP_Left, Switch to workspace 4, workspace, 4
|
|
||||||
bindd = SUPER, KP_Begin, Switch to workspace 5, workspace, 5
|
|
||||||
bindd = SUPER, KP_Right, Switch to workspace 6, workspace, 6
|
|
||||||
bindd = SUPER, KP_Home, Switch to workspace 7, workspace, 7
|
|
||||||
bindd = SUPER, KP_Up, Switch to workspace 8, workspace, 8
|
|
||||||
bindd = SUPER, KP_Prior, Switch to workspace 9, workspace, 9
|
|
||||||
|
|
||||||
# I miss notifications a lot
|
|
||||||
bindd = SUPER ALT, N, Toggle latest notification, exec, ~/.local/bin/toggle-last-notification
|
|
||||||
|
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
-- Keep only your personal keybinding overrides here. Add new bindings or
|
||||||
|
-- unbind defaults before replacing them.
|
||||||
|
|
||||||
|
-- See current bindings and descriptions:
|
||||||
|
-- omarchy menu keybindings --print
|
||||||
|
|
||||||
|
-- To disable every Omarchy default binding, set this in
|
||||||
|
-- ~/.config/hypr/hyprland.lua before require("default.hypr.omarchy"), then add
|
||||||
|
-- only the bindings you want below:
|
||||||
|
-- omarchy_default_bindings = false
|
||||||
|
|
||||||
|
-- To disable all preinstalled app/webapp bindings, set:
|
||||||
|
-- omarchy_preinstalled_bindings = false
|
||||||
|
|
||||||
|
-- Add a new binding.
|
||||||
|
-- o.bind("SUPER + SHIFT + R", "SSH", "alacritty -e ssh your-server")
|
||||||
|
|
||||||
|
-- Change an existing binding by unbinding it first, then binding the key again.
|
||||||
|
-- This example changes SUPER+SPACE from the launcher to the Omarchy root menu.
|
||||||
|
-- hl.unbind("SUPER + SPACE")
|
||||||
|
-- o.bind("SUPER + SPACE", "Omarchy menu", "omarchy-menu toggle root")
|
||||||
|
|
||||||
|
-- Disable a default binding without replacing it.
|
||||||
|
-- hl.unbind("SUPER + SHIFT + B")
|
||||||
|
|
||||||
|
-- Logitech MX Keys examples:
|
||||||
|
-- o.bind("SUPER + SHIFT + S", nil, "omarchy-capture-screenshot")
|
||||||
|
-- o.bind("SUPER + H", nil, "voxtype record toggle")
|
||||||
|
-- o.bind("SUPER + PERIOD", nil, "omarchy-shell shell toggle omarchy.emojis")
|
||||||
|
|
||||||
|
|
||||||
|
--- **********************
|
||||||
|
--- WINDOW MANAGEMENT
|
||||||
|
--- **********************
|
||||||
|
--- I prefer `move` over `swap` because it works closer to how I expect
|
||||||
|
hl.unbind("SUPER + SHIFT + LEFT")
|
||||||
|
hl.unbind("SUPER + SHIFT + RIGHT")
|
||||||
|
hl.unbind("SUPER + SHIFT + UP")
|
||||||
|
hl.unbind("SUPER + SHIFT + DOWN")
|
||||||
|
o.bind("SUPER + SHIFT + LEFT", "Move window to the left", hl.dsp.window.move({ direction = "l" }))
|
||||||
|
o.bind("SUPER + SHIFT + RIGHT", "Move window to the right", hl.dsp.window.move({ direction = "r" }))
|
||||||
|
o.bind("SUPER + SHIFT + UP", "Move window up", hl.dsp.window.move({ direction = "u" }))
|
||||||
|
o.bind("SUPER + SHIFT + DOWN", "Move window down", hl.dsp.window.move({ direction = "d" }))
|
||||||
|
|
||||||
|
-- these default to "Move window to group on <direction>"
|
||||||
|
hl.unbind("SUPER + ALT + LEFT")
|
||||||
|
hl.unbind("SUPER + ALT + RIGHT")
|
||||||
|
hl.unbind("SUPER + ALT + UP")
|
||||||
|
hl.unbind("SUPER + ALT + DOWN")
|
||||||
|
o.bind("SUPER + ALT + LEFT", "Move current workspace to the left", hl.dsp.workspace.move({ monitor = "l" }))
|
||||||
|
o.bind("SUPER + ALT + RIGHT", "Move current workspace to the right", hl.dsp.workspace.move({ monitor = "r" }))
|
||||||
|
o.bind("SUPER + ALT + UP", "Move current workspace up", hl.dsp.workspace.move({ monitor = "u" }))
|
||||||
|
o.bind("SUPER + ALT + DOWN", "Move current workspace down", hl.dsp.workspace.move({ monitor = "d" }))
|
||||||
|
|
||||||
|
-- for WHATEVER reason, hyprland refuses to use the numeric symbols for keypad keys,
|
||||||
|
-- so we have to use the navigation symbols instead
|
||||||
|
o.bind("SUPER + KP_End", "Switch to workspace 1", hl.dsp.focus({ workspace = "1" }))
|
||||||
|
o.bind("SUPER + KP_Down", "Switch to workspace 2", hl.dsp.focus({ workspace = "2" }))
|
||||||
|
o.bind("SUPER + KP_Next", "Switch to workspace 3", hl.dsp.focus({ workspace = "3" }))
|
||||||
|
o.bind("SUPER + KP_Left", "Switch to workspace 4", hl.dsp.focus({ workspace = "4" }))
|
||||||
|
o.bind("SUPER + KP_Begin", "Switch to workspace 5", hl.dsp.focus({ workspace = "5" }))
|
||||||
|
o.bind("SUPER + KP_Right", "Switch to workspace 6", hl.dsp.focus({ workspace = "6" }))
|
||||||
|
o.bind("SUPER + KP_Home", "Switch to workspace 7", hl.dsp.focus({ workspace = "7" }))
|
||||||
|
o.bind("SUPER + KP_Up", "Switch to workspace 8", hl.dsp.focus({ workspace = "8" }))
|
||||||
|
o.bind("SUPER + KP_Prior", "Switch to workspace 9", hl.dsp.focus({ workspace = "9" }))
|
||||||
|
|
||||||
|
-- find the numerically-next empty workspace and create it on the current monitor
|
||||||
|
o.bind("SUPER + grave", "Create a new workspace", function()
|
||||||
|
for i = 1, 100 do
|
||||||
|
local workspace = hl.get_workspace(i)
|
||||||
|
if not workspace then
|
||||||
|
hl.dispatch(hl.dsp.focus({ workspace = i }))
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- I don't fullscreen often, so it's fine if it's less reachable, and I want this for files
|
||||||
|
hl.unbind("SUPER + F")
|
||||||
|
o.bind("SUPER + F11", "Full screen", hl.dsp.window.fullscreen({ mode = "fullscreen" }))
|
||||||
|
|
||||||
|
-- I don't really use window grouping either
|
||||||
|
hl.unbind("SUPER + G")
|
||||||
|
o.bind("SUPER + CTRL + G", "Toggle window grouping", hl.dsp.group.toggle())
|
||||||
|
|
||||||
|
-- I don't want ctrl + alt + delete to affect my special windows
|
||||||
|
hl.unbind("CTRL + ALT + DELETE")
|
||||||
|
o.bind("CTRL + ALT + DELETE", "Close all windows", function()
|
||||||
|
for _, window in pairs(hl.get_windows()) do
|
||||||
|
if not window.workspace.special then
|
||||||
|
hl.dispatch(hl.dsp.window.close({ window = "address:" .. window.address }))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
hl.dispatch(hl.dsp.focus({ workspace = 2 }))
|
||||||
|
end)
|
||||||
|
|
||||||
|
--- **********************
|
||||||
|
--- APPLICATIONS
|
||||||
|
--- **********************
|
||||||
|
|
||||||
|
-- I don't use all the default apps, and I don't like the default super + shift prefix
|
||||||
|
-- so I unbind all default app keybinds (except terminal)
|
||||||
|
hl.unbind("SUPER + SHIFT + RETURN") -- Browser
|
||||||
|
hl.unbind("SUPER + SHIFT + F") -- File manager
|
||||||
|
hl.unbind("SUPER + ALT + SHIFT + F") -- File manager (cwd)
|
||||||
|
hl.unbind("SUPER + SHIFT + B") -- Browser
|
||||||
|
hl.unbind("SUPER + SHIFT + ALT + B") -- Browser (private)
|
||||||
|
hl.unbind("SUPER + SHIFT + N") -- Editor
|
||||||
|
hl.unbind("SUPER + ALT + RETURN") -- Tmux
|
||||||
|
hl.unbind("SUPER + CTRL + RETURN") -- Herdr
|
||||||
|
hl.unbind("SUPER + SHIFT + M") -- Music
|
||||||
|
hl.unbind("SUPER + SHIFT + ALT + M") -- Music TUI
|
||||||
|
hl.unbind("SUPER + SHIFT + D") -- Docker
|
||||||
|
hl.unbind("SUPER + SHIFT + G") -- Signal
|
||||||
|
hl.unbind("SUPER + SHIFT + O") -- Obsidian
|
||||||
|
hl.unbind("SUPER + SHIFT + W") -- Omawrite
|
||||||
|
hl.unbind("SUPER + SHIFT + SLASH") -- Passwords
|
||||||
|
hl.unbind("SUPER + SHIFT + A") -- ChatGPT
|
||||||
|
hl.unbind("SUPER + SHIFT + ALT + A") -- Grok
|
||||||
|
hl.unbind("SUPER + SHIFT + C") -- Calendar
|
||||||
|
hl.unbind("SUPER + SHIFT + E") -- Email
|
||||||
|
hl.unbind("SUPER + SHIFT + ALT + E") -- New email
|
||||||
|
hl.unbind("SUPER + SHIFT + Y") -- YouTube
|
||||||
|
hl.unbind("SUPER + SHIFT + ALT + G") -- WhatsApp
|
||||||
|
hl.unbind("SUPER + SHIFT + CTRL + G") -- Google Messages
|
||||||
|
hl.unbind("SUPER + SHIFT + P") -- Google Photos
|
||||||
|
hl.unbind("SUPER + SHIFT + S") -- Google Maps
|
||||||
|
hl.unbind("SUPER + SHIFT + X") -- X
|
||||||
|
hl.unbind("SUPER + SHIFT + ALT + X") -- X Post
|
||||||
|
|
||||||
|
o.bind("SUPER + B", "Browser", { omarchy = "browser" })
|
||||||
|
o.bind("SUPER + ALT + B", "Browser (private)", { omarchy = "browser --private" })
|
||||||
|
o.bind("SUPER + F", "File manager", { omarchy = "nautilus" })
|
||||||
|
o.bind("SUPER + N", "Notes", { launch = "heynote" })
|
||||||
|
o.bind("SUPER + D", "Launch or focus DataGrip", { launch = "datagrip", focus = "^jetbrains-datagrip$" })
|
||||||
|
|
||||||
|
-- persistent background(-ish) apps
|
||||||
|
hl.unbind("SUPER + S") -- defaults to "scratchpad"
|
||||||
|
o.bind("SUPER + S", "Slack", hl.dsp.workspace.toggle_special("slack"))
|
||||||
|
o.bind("SUPER + period", "1Password Quick Access", "1password --quick-access")
|
||||||
|
hl.unbind("SUPER + CTRL + period") -- defaults to "transcode"
|
||||||
|
o.bind("CTRL + SUPER + period", "1Password", hl.dsp.workspace.toggle_special("1password"))
|
||||||
|
o.bind("SUPER + Z", "Show Creddy", "creddy shortcut show-window")
|
||||||
|
|
||||||
|
-- I don't want to run most webapps as completely standalone windows,
|
||||||
|
-- but it is convenient to have hotkeys for some of them
|
||||||
|
o.bind("SUPER + A", "Claude", "omarchy-launch-browser https://claude.ai/new")
|
||||||
|
o.bind("SUPER + E", "Email", "omarchy-launch-browser https://mail.google.com/mail/u/0")
|
||||||
|
o.bind("SUPER + ALT + E", "Email (personal)", "omarchy-launch-browser https://mail.google.com/mail/u/1")
|
||||||
|
o.bind("SUPER + G", "GitLab", "omarchy-launch-browser https://gitlab.modg.net")
|
||||||
|
|
||||||
|
-- I want to be able to summon a new browser tab from wherever I am
|
||||||
|
o.bind("SUPER + I", "New browser tab", function()
|
||||||
|
-- Omarchy tags any properly-integrated browser with one of these tags
|
||||||
|
local browser = hl.get_window("tag:(chromium|firefox)-based-browser.*")
|
||||||
|
|
||||||
|
if browser then
|
||||||
|
local window = "address:" .. browser.address
|
||||||
|
hl.dispatch(hl.dsp.send_shortcut({ mods = "CTRL", key = "T", window = window }))
|
||||||
|
hl.dispatch(hl.dsp.focus({ window = window }))
|
||||||
|
else
|
||||||
|
hl.exec_cmd("omarchy-launch-browser")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# Extra env variables
|
|
||||||
# Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch)
|
|
||||||
# env = MY_GLOBAL_ENV,setting
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
general {
|
|
||||||
lock_cmd = omarchy-lock-screen # lock screen and 1password
|
|
||||||
before_sleep_cmd = loginctl lock-session # lock before suspend.
|
|
||||||
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
|
|
||||||
inhibit_sleep = 3 # wait until screen is locked
|
|
||||||
}
|
|
||||||
|
|
||||||
listener {
|
|
||||||
timeout = 150 # 2.5min
|
|
||||||
on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already)
|
|
||||||
}
|
|
||||||
|
|
||||||
listener {
|
|
||||||
timeout = 151 # 5min
|
|
||||||
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
|
||||||
}
|
|
||||||
|
|
||||||
listener {
|
|
||||||
timeout = 330 # 5.5min
|
|
||||||
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
|
|
||||||
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# Learn how to configure Hyprland: https://wiki.hyprland.org/Configuring/
|
|
||||||
|
|
||||||
# Use defaults Omarchy defaults (but don't edit these directly!)
|
|
||||||
source = ~/.local/share/omarchy/default/hypr/autostart.conf
|
|
||||||
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
|
|
||||||
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf
|
|
||||||
source = ~/.local/share/omarchy/default/hypr/bindings/utilities.conf
|
|
||||||
source = ~/.local/share/omarchy/default/hypr/envs.conf
|
|
||||||
source = ~/.local/share/omarchy/default/hypr/looknfeel.conf
|
|
||||||
source = ~/.local/share/omarchy/default/hypr/input.conf
|
|
||||||
source = ~/.local/share/omarchy/default/hypr/windows.conf
|
|
||||||
source = ~/.config/omarchy/current/theme/hyprland.conf
|
|
||||||
|
|
||||||
# Change your own setup in these files (and overwrite any settings from defaults!)
|
|
||||||
source = ~/.config/hypr/monitors.conf
|
|
||||||
source = ~/.config/hypr/input.conf
|
|
||||||
source = ~/.config/hypr/bindings.conf
|
|
||||||
source = ~/.config/hypr/envs.conf
|
|
||||||
source = ~/.config/hypr/looknfeel.conf
|
|
||||||
source = ~/.config/hypr/autostart.conf
|
|
||||||
source = ~/.config/hypr/windows.conf
|
|
||||||
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
-- Learn how to configure Hyprland: https://wiki.hypr.land/Configuring/Start/
|
||||||
|
|
||||||
|
-- Omarchy's bootstrap keeps path setup out of this user config.
|
||||||
|
dofile((os.getenv("OMARCHY_PATH") or "/usr/share/omarchy") .. "/default/hypr/bootstrap.lua")
|
||||||
|
|
||||||
|
-- Disable all Omarchy default bindings. Add your own in hypr/bindings.lua.
|
||||||
|
-- omarchy_default_bindings = false
|
||||||
|
--
|
||||||
|
-- Or disable only bindings for Omarchy's preinstalled apps/web apps while
|
||||||
|
-- keeping core window-manager bindings:
|
||||||
|
-- omarchy_preinstalled_bindings = false
|
||||||
|
|
||||||
|
-- Load Omarchy defaults.
|
||||||
|
require("default.hypr.omarchy")
|
||||||
|
|
||||||
|
-- Put your personal overrides in these files. They're loaded after Omarchy's
|
||||||
|
-- defaults so package updates can improve the defaults without rewriting your
|
||||||
|
-- ~/.config/hypr files.
|
||||||
|
require("hypr.monitors")
|
||||||
|
require("hypr.input")
|
||||||
|
require("hypr.bindings")
|
||||||
|
require("hypr.looknfeel")
|
||||||
|
require("hypr.autostart")
|
||||||
|
require("hypr.windows")
|
||||||
|
|
||||||
|
-- Toggle config flags dynamically.
|
||||||
|
require("default.hypr.toggles")
|
||||||
|
|
||||||
|
-- Add any other personal Hyprland configuration below.
|
||||||
|
-- o.window("qemu", { workspace = "5" })
|
||||||
@@ -1,6 +1,14 @@
|
|||||||
# Makes hyprsunset do nothing to the screen by default
|
# Makes hyprsunset do nothing to the screen by default
|
||||||
# Without this, the default applies some tint to the monitor
|
# Without this, the default applies some tint to the monitor
|
||||||
profile {
|
profile {
|
||||||
time = 00:00
|
time = 07:00
|
||||||
identity = true
|
identity = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# To enable auto switch to nightlight, add to your .config/hypr/autostart.lua:
|
||||||
|
# o.launch_on_start("hyprsunset")
|
||||||
|
# and use the following:
|
||||||
|
# profile {
|
||||||
|
# time = 20:00
|
||||||
|
# temperature = 4000
|
||||||
|
# }
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# Control your input devices
|
|
||||||
# See https://wiki.hypr.land/Configuring/Variables/#input
|
|
||||||
input {
|
|
||||||
# Use multiple keyboard layouts and switch between them with Left Alt + Right Alt
|
|
||||||
# kb_layout = us,dk,eu
|
|
||||||
kb_layout = us
|
|
||||||
kb_options = compose:ralt # ,grp:alts_toggle
|
|
||||||
|
|
||||||
# Change speed of keyboard repeat
|
|
||||||
repeat_rate = 40
|
|
||||||
repeat_delay = 600
|
|
||||||
|
|
||||||
# Increase sensitity for mouse/trackpack (default: 0)
|
|
||||||
sensitivity = -0.25
|
|
||||||
|
|
||||||
# enable numlock automatically
|
|
||||||
numlock_by_default = true
|
|
||||||
|
|
||||||
touchpad {
|
|
||||||
# Use natural (inverse) scrolling
|
|
||||||
natural_scroll = true
|
|
||||||
|
|
||||||
# Use two-finger clicks for right-click instead of lower-right corner
|
|
||||||
# clickfinger_behavior = true
|
|
||||||
|
|
||||||
# Control the speed of your scrolling
|
|
||||||
scroll_factor = 0.4
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Scroll faster in the terminal
|
|
||||||
windowrule = match:class (Alacritty|kitty), scroll_touchpad 1.5
|
|
||||||
windowrule = match:class com.mitchellh.ghostty, scroll_touchpad 0.2
|
|
||||||
|
|
||||||
device {
|
|
||||||
name = pixa3854:00-093a:0274-touchpad
|
|
||||||
sensitivity = 0.0
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
-- Keep only your personal input overrides here. Uncommented settings below
|
||||||
|
-- replace Omarchy's defaults.
|
||||||
|
|
||||||
|
-- Keyboard layout and options.
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Variables/#input
|
||||||
|
-- hl.config({
|
||||||
|
-- input = {
|
||||||
|
-- -- Use multiple keyboard layouts and switch between them with Left Alt + Right Alt.
|
||||||
|
-- kb_layout = "us,dk,eu",
|
||||||
|
-- kb_options = "compose:caps,shift:both_capslock_cancel,grp:alts_toggle",
|
||||||
|
--
|
||||||
|
-- -- Use a specific keyboard variant if needed (e.g. intl for international keyboards).
|
||||||
|
-- kb_variant = "intl",
|
||||||
|
--
|
||||||
|
-- -- Change speed of keyboard repeat.
|
||||||
|
-- repeat_rate = 40,
|
||||||
|
-- repeat_delay = 250,
|
||||||
|
--
|
||||||
|
-- -- Start with numlock on by default.
|
||||||
|
-- numlock_by_default = true,
|
||||||
|
--
|
||||||
|
-- -- Increase sensitivity for mouse/trackpad (default: 0).
|
||||||
|
-- sensitivity = 0.35,
|
||||||
|
--
|
||||||
|
-- -- Turn off mouse acceleration (default: adaptive).
|
||||||
|
-- accel_profile = "flat",
|
||||||
|
--
|
||||||
|
-- touchpad = {
|
||||||
|
-- -- Use natural (inverse) scrolling.
|
||||||
|
-- natural_scroll = true,
|
||||||
|
--
|
||||||
|
-- -- Use two-finger clicks for right-click instead of lower-right corner.
|
||||||
|
-- clickfinger_behavior = true,
|
||||||
|
--
|
||||||
|
-- -- Control the speed of your scrolling.
|
||||||
|
-- scroll_factor = 0.4,
|
||||||
|
--
|
||||||
|
-- -- Enable the touchpad while typing.
|
||||||
|
-- disable_while_typing = false,
|
||||||
|
--
|
||||||
|
-- -- Left-click-and-drag with three fingers.
|
||||||
|
-- drag_3fg = 1,
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- })
|
||||||
|
|
||||||
|
-- App-specific touchpad scroll speeds.
|
||||||
|
-- o.window("(Alacritty|kitty|foot)", { scroll_touchpad = 1.5 })
|
||||||
|
-- o.window("com.mitchellh.ghostty", { scroll_touchpad = 0.2 })
|
||||||
|
|
||||||
|
-- Enable touchpad gestures for changing workspaces.
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Gestures/
|
||||||
|
-- hl.gesture({ fingers = 3, direction = "horizontal", action = "workspace" })
|
||||||
|
|
||||||
|
-- Enable touchpad gestures for moving focus (helpful on scrolling layout).
|
||||||
|
-- hl.gesture({ fingers = 3, direction = "left", action = function() hl.dispatch(hl.dsp.focus({ direction = "l" })) end })
|
||||||
|
-- hl.gesture({ fingers = 3, direction = "right", action = function() hl.dispatch(hl.dsp.focus({ direction = "r" })) end })
|
||||||
|
|
||||||
|
|
||||||
|
-- disable the built-in capslock override because I actually use capslock for its original purpose
|
||||||
|
hl.config({
|
||||||
|
input = {
|
||||||
|
kb_options = "caps:capslock",
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
|
||||||
# List current monitors and resolutions possible: hyprctl monitors
|
|
||||||
# Format: monitor = [port], resolution, position, scale
|
|
||||||
# You must relaunch Hyprland after changing any envs (use Super+Esc, then Relaunch)
|
|
||||||
|
|
||||||
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
|
|
||||||
env = GDK_SCALE,1.5
|
|
||||||
monitor = , preferred, auto, auto
|
|
||||||
|
|
||||||
# Good compromise for 27" or 32" 4K monitors (but fractional!)
|
|
||||||
# env = GDK_SCALE,1.75
|
|
||||||
# monitor=,preferred,auto,1.666667
|
|
||||||
|
|
||||||
# Straight 1x setup for low-resolution displays like 1080p or 1440p
|
|
||||||
# env = GDK_SCALE,1
|
|
||||||
# monitor=,preferred,auto,1
|
|
||||||
|
|
||||||
# Example for Framework 13 w/ 6K XDR Apple display
|
|
||||||
# monitor = DP-5, 6016x3384@60, auto, 2
|
|
||||||
# monitor = eDP-1, 2880x1920@120, auto, 2
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# datagrip gets its own named workspace
|
|
||||||
windowrule = workspace name:DataGrip, match:class jetbrains-datagrip
|
|
||||||
|
|
||||||
# creddy gets some special treatment
|
|
||||||
# windowrule = workspace special:creddy, class:creddy
|
|
||||||
windowrule = float 1, match:class creddy
|
|
||||||
windowrule = size 800 600, match:class creddy
|
|
||||||
# this just gets ignored when monitor 2 isn't present, which is perfect
|
|
||||||
windowrule = monitor 1, match:class creddy
|
|
||||||
|
|
||||||
windowrule = workspace special:slack, match:class Slack
|
|
||||||
|
|
||||||
# excluding floating windows allows the unlock and quick-access popups to show in any workspace
|
|
||||||
windowrule = workspace special:1password, match:class 1Password, match:float 0
|
|
||||||
# quick-access popup doesn't resize automatically when its content changes
|
|
||||||
# windowrule = size 550 404, class:1Password, title:Quick.*
|
|
||||||
windowrule = persistent_size 1, match:class 1Password, match:title Quick.*
|
|
||||||
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
-- technically these are workspace rules, not window rules, sue me
|
||||||
|
hl.workspace_rule({ workspace = "1", monitor = "desc:Samsung Electric Company LS27A800U", default = true })
|
||||||
|
hl.workspace_rule({ workspace = "2", monitor = "desc:Seanix Technology Inc NX-EDG27X", default = true })
|
||||||
|
hl.workspace_rule({ workspace = "3", monitor = "desc:BOE 0x0BCA", default = true })
|
||||||
|
|
||||||
|
-- datagrip gets its own named workspace
|
||||||
|
o.window("jetbrains-datagrip", { workspace = "name:DataGrip" })
|
||||||
|
|
||||||
|
-- creddy gets some special treatment
|
||||||
|
-- this just gets ignored when monitor 1 isn't present, which is perfect
|
||||||
|
o.window("creddy", { float = true, size = { 800, 600 }, monitor = 1 })
|
||||||
|
|
||||||
|
o.window("chrome-app.slack.com__client-Default", { workspace = "special:slack" })
|
||||||
|
-- If Slack dies or gets killed, I can relaunch it simply by re-summoning the workspace
|
||||||
|
hl.workspace_rule({ workspace = "special:slack", on_created_empty = o.launch_webapp("https://app.slack.com/client") })
|
||||||
|
|
||||||
|
-- excluding floating windows allows the unlock and quick-access popups to show in any workspace
|
||||||
|
o.window({ class = "com.onepassword.OnePassword", float = false }, { workspace = "special:1password" })
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
workspace = 1, monitor:DP-11
|
|
||||||
workspace = 2, monitor:DP-12
|
|
||||||
workspace = 3, monitor:eDP-1
|
|
||||||
+16
-23
@@ -1,42 +1,35 @@
|
|||||||
[settings]
|
|
||||||
idiomatic_version_file_enable_tools = ["ruby"]
|
|
||||||
experimental = true
|
|
||||||
|
|
||||||
[settings.ruby]
|
|
||||||
|
|
||||||
[tools]
|
[tools]
|
||||||
chezmoi = "latest"
|
chezmoi = "latest"
|
||||||
cosign = "latest"
|
claude = "latest"
|
||||||
"pipx:modgcli" = "latest"
|
codex = "latest"
|
||||||
mold = "latest"
|
gh = "latest"
|
||||||
node = "latest"
|
node = "26.8.2"
|
||||||
rust = "latest"
|
|
||||||
uv = "latest"
|
uv = "latest"
|
||||||
yay = "latest"
|
mold = "latest"
|
||||||
k9s = "latest"
|
rust = "latest"
|
||||||
awscli = "latest"
|
awscli = "latest"
|
||||||
kubectl = "latest"
|
kubectl = "latest"
|
||||||
difftastic = "latest"
|
difftastic = "latest"
|
||||||
rg = "latest"
|
|
||||||
duckdb = "latest"
|
|
||||||
tokei = "latest"
|
tokei = "latest"
|
||||||
claude = "latest"
|
|
||||||
"cargo:shikane" = "latest"
|
|
||||||
xh = "latest"
|
xh = "latest"
|
||||||
"pipx:asciinema" = "latest"
|
"pypi:asciinema" = "latest"
|
||||||
|
|
||||||
|
[tools."pypi:modgcli"]
|
||||||
|
version = "latest"
|
||||||
|
registry_url = "https://gitlab.modg.net/api/v4/groups/10/-/packages/pypi/simple/{}/"
|
||||||
|
uvx_args = "--index https://gitlab.modg.net/api/v4/groups/10/-/packages/pypi/simple"
|
||||||
|
minimum_release_age = "0s"
|
||||||
|
|
||||||
[tools."gitlab:tools/setconf"]
|
[tools."gitlab:tools/setconf"]
|
||||||
version = "latest"
|
version = "latest"
|
||||||
api_url = "https://gitlab.modg.net/api/v4"
|
api_url = "https://gitlab.modg.net/api/v4"
|
||||||
bin = "setconf"
|
bin = "setconf"
|
||||||
|
minimum_release_age = "0s"
|
||||||
|
|
||||||
[tools."pipx:harlequin"]
|
[settings.upgrade]
|
||||||
version = "latest"
|
auto_prune = false
|
||||||
extras = "postgres,odbc"
|
|
||||||
|
|
||||||
[settings.python]
|
[settings.python]
|
||||||
uv_venv_auto = true
|
uv_venv_auto = true
|
||||||
|
|
||||||
[settings.pipx]
|
|
||||||
registry_url = "https://gitlab.modg.net/api/v4/groups/10/-/packages/pypi/simple/{}/"
|
|
||||||
|
|
||||||
@@ -45,24 +45,37 @@ BarWidget {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hyprland gives named workspaces negative ids, as it does special
|
||||||
|
// (scratchpad) workspaces; only the latter have a "special:" name.
|
||||||
|
function isNamed(ws) {
|
||||||
|
return ws !== null && ws.id < 0 && String(ws.name).indexOf("special") !== 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Numbered workspaces 1-10 in order, then named ones alphabetically.
|
||||||
function workspaceIds() {
|
function workspaceIds() {
|
||||||
var ids = []
|
var numbered = []
|
||||||
|
var named = []
|
||||||
var values = Hyprland.workspaces.values
|
var values = Hyprland.workspaces.values
|
||||||
|
|
||||||
for (var i = 0; i < values.length; i++) {
|
for (var i = 0; i < values.length; i++) {
|
||||||
var ws = values[i]
|
var ws = values[i]
|
||||||
if (ws.id <= 0 || ws.id > 10) continue
|
|
||||||
if (root.monitor && ws.monitor !== root.monitor) continue
|
if (root.monitor && ws.monitor !== root.monitor) continue
|
||||||
ids.push(ws.id)
|
if (ws.id > 0 && ws.id <= 10) numbered.push(ws.id)
|
||||||
|
else if (root.isNamed(ws)) named.push(ws)
|
||||||
}
|
}
|
||||||
|
|
||||||
ids.sort(function(left, right) { return left - right })
|
numbered.sort(function(left, right) { return left - right })
|
||||||
return ids
|
named.sort(function(left, right) { return String(left.name).localeCompare(String(right.name)) })
|
||||||
|
return numbered.concat(named.map(function(ws) { return ws.id }))
|
||||||
}
|
}
|
||||||
|
|
||||||
function focusWorkspace(id) {
|
function focusWorkspace(id) {
|
||||||
if (!root.bar) return
|
if (!root.bar) return
|
||||||
root.bar.run("hyprctl dispatch " + Util.shellQuote("hl.dsp.focus({ workspace = \"" + id + "\" })"))
|
var ws = root.workspaceById(id)
|
||||||
|
var target = root.isNamed(ws)
|
||||||
|
? "name:" + String(ws.name).replace(/\\/g, "\\\\").replace(/"/g, "\\\"")
|
||||||
|
: String(id)
|
||||||
|
root.bar.run("hyprctl dispatch " + Util.shellQuote("hl.dsp.focus({ workspace = \"" + target + "\" })"))
|
||||||
}
|
}
|
||||||
|
|
||||||
readonly property real trailingGap: root.vertical ? 0 : Style.spaceReal(1.5)
|
readonly property real trailingGap: root.vertical ? 0 : Style.spaceReal(1.5)
|
||||||
@@ -92,17 +105,22 @@ BarWidget {
|
|||||||
|
|
||||||
id: button
|
id: button
|
||||||
bar: root.bar
|
bar: root.bar
|
||||||
text: modelData === 10 ? "0" : String(modelData)
|
readonly property bool named: root.isNamed(workspace)
|
||||||
|
|
||||||
|
text: named ? String(workspace.name) : (modelData === 10 ? "0" : String(modelData))
|
||||||
// WidgetButton's own label can't be bolded, so draw our own instead.
|
// WidgetButton's own label can't be bolded, so draw our own instead.
|
||||||
labelVisible: false
|
labelVisible: false
|
||||||
opacity: occupied || focused ? 1 : 0.5
|
opacity: occupied || focused ? 1 : 0.5
|
||||||
horizontalMargin: 6
|
horizontalMargin: 6
|
||||||
verticalPadding: 6
|
verticalPadding: 6
|
||||||
fixedWidth: root.vertical ? root.barSize : Style.space(20)
|
// Numbers get a fixed slot; names get as much room as they need.
|
||||||
|
fixedWidth: root.vertical ? root.barSize
|
||||||
|
: (named ? Math.max(Style.space(20), label.implicitWidth + Style.space(12)) : Style.space(20))
|
||||||
fixedHeight: root.barSize
|
fixedHeight: root.barSize
|
||||||
onPressed: function() { root.focusWorkspace(modelData) }
|
onPressed: function() { root.focusWorkspace(modelData) }
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
|
id: label
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
textFormat: Text.PlainText
|
textFormat: Text.PlainText
|
||||||
text: button.text
|
text: button.text
|
||||||
@@ -110,7 +128,6 @@ BarWidget {
|
|||||||
font.family: button.fontFamily
|
font.family: button.fontFamily
|
||||||
font.pixelSize: button.fontSize
|
font.pixelSize: button.fontSize
|
||||||
font.bold: button.focused
|
font.bold: button.focused
|
||||||
font.underline: button.focused
|
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=Shikane monitor manager
|
Description=Shikane monitor manager
|
||||||
|
PartOf=graphical-session.target
|
||||||
After=graphical-session.target
|
After=graphical-session.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStart=/usr/bin/mise exec -- shikane
|
ExecStart=/usr/bin/shikane
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=graphical-session.target
|
||||||
|
|
||||||
@@ -1,139 +0,0 @@
|
|||||||
{
|
|
||||||
"reload_style_on_change": true,
|
|
||||||
"layer": "top",
|
|
||||||
"position": "top",
|
|
||||||
"spacing": 0,
|
|
||||||
"height": 26,
|
|
||||||
"modules-left": ["custom/omarchy", "hyprland/workspaces"],
|
|
||||||
"modules-center": ["clock", "custom/update", "custom/voxtype", "custom/screenrecording-indicator"],
|
|
||||||
"modules-right": [
|
|
||||||
"group/tray-expander",
|
|
||||||
"bluetooth",
|
|
||||||
"network",
|
|
||||||
"pulseaudio",
|
|
||||||
"cpu",
|
|
||||||
"battery"
|
|
||||||
],
|
|
||||||
"hyprland/workspaces": {
|
|
||||||
"on-click": "activate",
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"on-click": "activate",
|
|
||||||
"format": "{icon}",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"custom/omarchy": {
|
|
||||||
"format": "<span font='omarchy'>\ue900</span>",
|
|
||||||
"on-click": "omarchy-menu",
|
|
||||||
"on-click-right": "xdg-terminal-exec",
|
|
||||||
"tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space"
|
|
||||||
},
|
|
||||||
"custom/update": {
|
|
||||||
"format": "",
|
|
||||||
"exec": "omarchy-update-available",
|
|
||||||
"on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-update",
|
|
||||||
"tooltip-format": "Omarchy update available",
|
|
||||||
"signal": 7,
|
|
||||||
"interval": 21600
|
|
||||||
},
|
|
||||||
|
|
||||||
"cpu": {
|
|
||||||
"interval": 5,
|
|
||||||
"format": "",
|
|
||||||
"on-click": "omarchy-launch-or-focus-tui btop"
|
|
||||||
},
|
|
||||||
"clock": {
|
|
||||||
"format": "{:L%A %H:%M}",
|
|
||||||
"format-alt": "{:L%d %B W%V %Y}",
|
|
||||||
"tooltip": false,
|
|
||||||
"on-click-right": "omarchy-launch-floating-terminal-with-presentation omarchy-tz-select"
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"format-icons": ["", "", "", "", ""],
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-wifi": "{icon}",
|
|
||||||
"format-ethernet": "",
|
|
||||||
"format-disconnected": "",
|
|
||||||
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
|
||||||
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
|
||||||
"tooltip-format-disconnected": "Disconnected",
|
|
||||||
"interval": 3,
|
|
||||||
"spacing": 1,
|
|
||||||
"on-click": "omarchy-launch-wifi"
|
|
||||||
},
|
|
||||||
"battery": {
|
|
||||||
"format": "{capacity}% {icon}",
|
|
||||||
"format-discharging": "{icon}",
|
|
||||||
"format-charging": "{icon}",
|
|
||||||
"format-plugged": "",
|
|
||||||
"format-icons": {
|
|
||||||
"charging": ["", "", "", "", "", "", "", "", "", ""],
|
|
||||||
"default": ["", "", "", "", "", "", "", "", "", ""]
|
|
||||||
},
|
|
||||||
"format-full": "",
|
|
||||||
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
|
|
||||||
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
|
|
||||||
"interval": 5,
|
|
||||||
"on-click": "omarchy-menu power",
|
|
||||||
"states": {
|
|
||||||
"warning": 20,
|
|
||||||
"critical": 10
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"bluetooth": {
|
|
||||||
"format": "",
|
|
||||||
"format-disabled": "",
|
|
||||||
"format-off": "",
|
|
||||||
"format-connected": "",
|
|
||||||
"format-no-controller": "",
|
|
||||||
"tooltip-format": "Devices connected: {num_connections}",
|
|
||||||
"on-click": "omarchy-launch-bluetooth"
|
|
||||||
},
|
|
||||||
"pulseaudio": {
|
|
||||||
"format": "{icon}",
|
|
||||||
"on-click": "omarchy-launch-audio",
|
|
||||||
"on-click-right": "pamixer -t",
|
|
||||||
"tooltip-format": "Playing at {volume}%",
|
|
||||||
"scroll-step": 5,
|
|
||||||
"format-muted": "",
|
|
||||||
"format-icons": {
|
|
||||||
"headphone": "",
|
|
||||||
"default": ["", "", ""]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"group/tray-expander": {
|
|
||||||
"orientation": "inherit",
|
|
||||||
"drawer": {
|
|
||||||
"transition-duration": 600,
|
|
||||||
"children-class": "tray-group-item"
|
|
||||||
},
|
|
||||||
"modules": ["custom/expand-icon", "tray"]
|
|
||||||
},
|
|
||||||
"custom/expand-icon": {
|
|
||||||
"format": "",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
"custom/screenrecording-indicator": {
|
|
||||||
"on-click": "omarchy-cmd-screenrecord",
|
|
||||||
"exec": "$OMARCHY_PATH/default/waybar/indicators/screen-recording.sh",
|
|
||||||
"signal": 8,
|
|
||||||
"return-type": "json"
|
|
||||||
},
|
|
||||||
"custom/voxtype": {
|
|
||||||
"exec": "omarchy-voxtype-status",
|
|
||||||
"return-type": "json",
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"idle": "",
|
|
||||||
"recording": "",
|
|
||||||
"transcribing": ""
|
|
||||||
},
|
|
||||||
"tooltip": true,
|
|
||||||
"on-click-right": "omarchy-voxtype-config",
|
|
||||||
"on-click": "omarchy-voxtype-model"
|
|
||||||
},
|
|
||||||
"tray": {
|
|
||||||
"icon-size": 12,
|
|
||||||
"spacing": 17
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
@import "../omarchy/current/theme/waybar.css";
|
|
||||||
|
|
||||||
* {
|
|
||||||
background-color: @background;
|
|
||||||
/* color: @foreground; */
|
|
||||||
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
min-height: 0;
|
|
||||||
font-family: 'CaskaydiaMono Nerd Font';
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-left {
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-right {
|
|
||||||
margin-right: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
all: initial;
|
|
||||||
padding: 0 6px;
|
|
||||||
margin: 0 1.5px;
|
|
||||||
min-width: 9px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.empty {
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
color: #bfe28c;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cpu,
|
|
||||||
#battery,
|
|
||||||
#pulseaudio,
|
|
||||||
#custom-omarchy,
|
|
||||||
#custom-screenrecording-indicator,
|
|
||||||
#custom-update {
|
|
||||||
min-width: 12px;
|
|
||||||
margin: 0 7.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray {
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bluetooth {
|
|
||||||
margin-right: 17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#network {
|
|
||||||
margin-right: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-expand-icon {
|
|
||||||
margin-right: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip {
|
|
||||||
padding: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-update {
|
|
||||||
font-size: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hidden {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-screenrecording-indicator {
|
|
||||||
min-width: 12px;
|
|
||||||
margin-left: 5px;
|
|
||||||
font-size: 10px;
|
|
||||||
padding-bottom: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-screenrecording-indicator.active {
|
|
||||||
color: #a55555;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-voxtype {
|
|
||||||
min-width: 12px;
|
|
||||||
margin: 0 0 0 7.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-voxtype.recording {
|
|
||||||
color: #a55555;
|
|
||||||
}
|
|
||||||
@@ -7,10 +7,25 @@
|
|||||||
// custom settings, run `zed: open default settings` from the
|
// custom settings, run `zed: open default settings` from the
|
||||||
// command palette (cmd-shift-p / ctrl-shift-p)
|
// command palette (cmd-shift-p / ctrl-shift-p)
|
||||||
{
|
{
|
||||||
|
"cli_default_open_behavior": "new_window",
|
||||||
|
"icon_theme": {
|
||||||
|
"mode": "dark",
|
||||||
|
"light": "Zed (Default)",
|
||||||
|
"dark": "Zed (Default)"
|
||||||
|
},
|
||||||
|
"outline_panel": {
|
||||||
|
"dock": "left"
|
||||||
|
},
|
||||||
|
"project_panel": {
|
||||||
|
"dock": "left"
|
||||||
|
},
|
||||||
"git_panel": {
|
"git_panel": {
|
||||||
|
"dock": "left",
|
||||||
"tree_view": true
|
"tree_view": true
|
||||||
},
|
},
|
||||||
"agent": {
|
"agent": {
|
||||||
|
"sidebar_side": "right",
|
||||||
|
"dock": "right",
|
||||||
"model_parameters": [],
|
"model_parameters": [],
|
||||||
"default_profile": "write"
|
"default_profile": "write"
|
||||||
},
|
},
|
||||||
@@ -29,7 +44,7 @@
|
|||||||
"theme": {
|
"theme": {
|
||||||
"mode": "system",
|
"mode": "system",
|
||||||
"light": "One Light",
|
"light": "One Light",
|
||||||
"dark": "One Dark"
|
"dark": "Omazed"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"JSON": {
|
"JSON": {
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
# Ctrl-Backspace: delete previous word
|
# Ctrl-Backspace: delete previous word
|
||||||
"\C-H": backward-kill-word
|
"\C-H": backward-kill-word
|
||||||
|
|
||||||
# Ctrl-Delete: delete next word
|
|
||||||
"\e[3;5~": kill-word
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
import json
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
CONFIG = [
|
|
||||||
{'make': 'Samsung Electric Company', 'model': 'LS27A800U', 'position': 'left', 'workspace': 1},
|
|
||||||
{'make': 'Seanix Technology Inc', 'model': 'NX-EDG27X', 'position': 'center', 'workspace': 2},
|
|
||||||
{'make': 'BOE', 'model': '0x0BCA', 'position': 'right', 'workspace': 3},
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
p = subprocess.run(
|
|
||||||
['hyprctl', 'monitors', '-j'],
|
|
||||||
capture_output=True,
|
|
||||||
check=True,
|
|
||||||
encoding='utf-8'
|
|
||||||
)
|
|
||||||
monitors = json.loads(p.stdout)
|
|
||||||
# print('monitors:', monitors)
|
|
||||||
|
|
||||||
monitor_ids = {}
|
|
||||||
for mon in monitors:
|
|
||||||
for conf in CONFIG:
|
|
||||||
if conf['make'] == mon['make'] and conf['model'] == mon['model']:
|
|
||||||
monitor_ids[ conf['position'] ] = mon['id']
|
|
||||||
|
|
||||||
|
|
||||||
if len(monitor_ids) == len(CONFIG):
|
|
||||||
print('config matched, assigning:')
|
|
||||||
dispatches = []
|
|
||||||
for conf in CONFIG:
|
|
||||||
workspace = conf['workspace']
|
|
||||||
monitor_id = monitor_ids[ conf['position'] ]
|
|
||||||
# move workspace to desired monitor
|
|
||||||
dispatches.append(f"dispatch moveworkspacetomonitor {workspace} {monitor_id}")
|
|
||||||
# focus the workspace so that it's visible after moving
|
|
||||||
dispatches.append(f"workspace {workspace}")
|
|
||||||
cmd = ['hyprctl', '--batch', ' ; '.join(dispatches)]
|
|
||||||
print('\n'.join(cmd))
|
|
||||||
subprocess.run(cmd, check=True)
|
|
||||||
else:
|
|
||||||
print('config not matched')
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Close all open windows that aren't in special:* workspaces
|
|
||||||
hyprctl clients -j |
|
|
||||||
jq -r '.[] | select(.workspace.name | startswith("special:") | not) | .address' |
|
|
||||||
xargs -I{} hyprctl dispatch closewindow address:{}
|
|
||||||
|
|
||||||
# Move to first workspace
|
|
||||||
hyprctl dispatch workspace 1
|
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
sudo pacman -U https://git.jfmonty2.com/jfmonty2/creddy/releases/download/v0.6.5/creddy-0.6.5-1-x86_64.pkg.tar.zst
|
set -ex
|
||||||
|
|
||||||
|
wget -O /tmp/creddy.pkg.tar.zst \
|
||||||
|
https://git.jfmonty2.com/jfmonty2/creddy/releases/download/v0.6.5/creddy-0.6.5-1-x86_64.pkg.tar.zst
|
||||||
|
sudo pacman -U /tmp/creddy.pkg.tar.zst
|
||||||
|
|
||||||
sudo pacman -S unixodbc
|
sudo pacman -S unixodbc
|
||||||
sudo pacman -S vulkan-radeon
|
|
||||||
sudo pacman -R amdvlk
|
|
||||||
sudo pacman -S dnsutils
|
sudo pacman -S dnsutils
|
||||||
|
sudo pacman -S wget
|
||||||
|
|
||||||
yay msodbcsql17
|
yay msodbcsql17
|
||||||
yay wayfreeze-git
|
|
||||||
yay heynote-bin
|
yay heynote-bin
|
||||||
yay galendae
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
# generate ids from 1-100, remove the ids of existing workspaces, take the
|
|
||||||
# first of the remaining numbers and you have the first available workspace id
|
|
||||||
FIRST_AVAILABLE=$(hyprctl workspaces -j | jq '[range(1; 100)] - map(.id) | .[0]')
|
|
||||||
|
|
||||||
hyprctl dispatch workspace $FIRST_AVAILABLE
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [[ $(makoctl list) == '' ]]; then
|
|
||||||
makoctl restore
|
|
||||||
else
|
|
||||||
makoctl dismiss
|
|
||||||
fi
|
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/home/joe/.local/share/JetBrains/Toolbox/scripts/datagrip
|
||||||
@@ -1 +0,0 @@
|
|||||||
/usr/bin/zeditor
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Slack
|
||||||
|
Comment=Slack
|
||||||
|
Exec=omarchy-launch-webapp "https://app.slack.com/client"
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=slack
|
||||||
|
StartupNotify=true
|
||||||
Reference in new issue
Block a user