Compare commits
25
Commits
34f4d976a2
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1048c0f38f | ||
|
|
1922a414ac | ||
|
|
fd1cf0dbe7 | ||
|
|
fc417c51b3 | ||
|
|
20569cc058 | ||
|
|
e7ef2aece0 | ||
|
|
eb1fd1afb8 | ||
|
|
9dda262876 | ||
|
|
c2c5656cac | ||
|
|
a21a2fbd8a | ||
|
|
bad0afde9a | ||
|
|
c5926b669c | ||
|
|
cdbd3e7308 | ||
|
|
f7d3b6e288 | ||
|
|
b8fc830342 | ||
|
|
f27247fe9e | ||
|
|
c392ce7c9c | ||
|
|
89bb7c9509 | ||
|
|
4ca101620e | ||
|
|
d1496a2812 | ||
|
|
66d3b6d136 | ||
|
|
0a64655a1e | ||
|
|
755ca204e4 | ||
|
|
e0e7e616cb | ||
|
|
53ac490efc |
No files matched your search
@@ -0,0 +1,3 @@
|
||||
[default]
|
||||
region = us-east-1
|
||||
credential_process = /usr/bin/creddy get
|
||||
@@ -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
|
||||
# Without this, the default applies some tint to the monitor
|
||||
profile {
|
||||
time = 00:00
|
||||
time = 07:00
|
||||
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
|
||||
+18
-23
@@ -1,42 +1,37 @@
|
||||
[settings]
|
||||
idiomatic_version_file_enable_tools = ["ruby"]
|
||||
experimental = true
|
||||
|
||||
[settings.ruby]
|
||||
|
||||
[tools]
|
||||
chezmoi = "latest"
|
||||
cosign = "latest"
|
||||
"pipx:modgcli" = "latest"
|
||||
mold = "latest"
|
||||
node = "latest"
|
||||
rust = "latest"
|
||||
claude = "latest"
|
||||
codex = "latest"
|
||||
gh = "latest"
|
||||
node = "26.8.2"
|
||||
uv = "latest"
|
||||
yay = "latest"
|
||||
k9s = "latest"
|
||||
mold = "latest"
|
||||
rust = "latest"
|
||||
awscli = "latest"
|
||||
kubectl = "latest"
|
||||
difftastic = "latest"
|
||||
rg = "latest"
|
||||
duckdb = "latest"
|
||||
tokei = "latest"
|
||||
claude = "latest"
|
||||
"cargo:shikane" = "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"]
|
||||
version = "latest"
|
||||
api_url = "https://gitlab.modg.net/api/v4"
|
||||
bin = "setconf"
|
||||
minimum_release_age = "0s"
|
||||
|
||||
[tools."pipx:harlequin"]
|
||||
version = "latest"
|
||||
extras = "postgres,odbc"
|
||||
[settings.upgrade]
|
||||
auto_prune = false
|
||||
|
||||
[settings.python]
|
||||
uv_venv_auto = true
|
||||
|
||||
[settings.pipx]
|
||||
registry_url = "https://gitlab.modg.net/api/v4/groups/10/-/packages/pypi/simple/{}/"
|
||||
[env]
|
||||
_.path = "~/.local/bin"
|
||||
|
||||
@@ -45,24 +45,37 @@ BarWidget {
|
||||
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() {
|
||||
var ids = []
|
||||
var numbered = []
|
||||
var named = []
|
||||
var values = Hyprland.workspaces.values
|
||||
|
||||
for (var i = 0; i < values.length; i++) {
|
||||
var ws = values[i]
|
||||
if (ws.id <= 0 || ws.id > 10) 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 })
|
||||
return ids
|
||||
numbered.sort(function(left, right) { return left - right })
|
||||
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) {
|
||||
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)
|
||||
@@ -92,17 +105,22 @@ BarWidget {
|
||||
|
||||
id: button
|
||||
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.
|
||||
labelVisible: false
|
||||
opacity: occupied || focused ? 1 : 0.5
|
||||
horizontalMargin: 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
|
||||
onPressed: function() { root.focusWorkspace(modelData) }
|
||||
|
||||
Text {
|
||||
id: label
|
||||
anchors.centerIn: parent
|
||||
textFormat: Text.PlainText
|
||||
text: button.text
|
||||
@@ -110,7 +128,6 @@ BarWidget {
|
||||
font.family: button.fontFamily
|
||||
font.pixelSize: button.fontSize
|
||||
font.bold: button.focused
|
||||
font.underline: button.focused
|
||||
renderType: Text.NativeRendering
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
[Unit]
|
||||
Description=Shikane monitor manager
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/mise exec -- shikane
|
||||
ExecStart=/usr/bin/shikane
|
||||
|
||||
[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
|
||||
// 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": {
|
||||
"dock": "left",
|
||||
"tree_view": true
|
||||
},
|
||||
"agent": {
|
||||
"sidebar_side": "right",
|
||||
"dock": "right",
|
||||
"model_parameters": [],
|
||||
"default_profile": "write"
|
||||
},
|
||||
@@ -29,7 +44,7 @@
|
||||
"theme": {
|
||||
"mode": "system",
|
||||
"light": "One Light",
|
||||
"dark": "One Dark"
|
||||
"dark": "Omazed"
|
||||
},
|
||||
"languages": {
|
||||
"JSON": {
|
||||
@@ -44,7 +59,10 @@
|
||||
"Python": {
|
||||
"language_servers": [
|
||||
"ty",
|
||||
"!pyright",
|
||||
"!pylsp",
|
||||
"!basedpyright",
|
||||
"!ruff",
|
||||
"...",
|
||||
],
|
||||
},
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
# Ctrl-Backspace: delete previous 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
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
if omarchy-sudo-docker; then
|
||||
exec pkexec --keep-cwd env \
|
||||
DOCKER_CONFIG="$HOME/.docker" \
|
||||
PATH="/usr/local/bin:/usr/bin:$HOME/.local/bin" \
|
||||
XDG_RUNTIME_DIR="/run/user/$(id -u)" \
|
||||
/usr/bin/docker "$@"
|
||||
else
|
||||
exec /usr/bin/docker "$@"
|
||||
fi
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
#!/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 vulkan-radeon
|
||||
sudo pacman -R amdvlk
|
||||
sudo pacman -S dnsutils
|
||||
sudo pacman -S wget
|
||||
|
||||
yay msodbcsql17
|
||||
yay wayfreeze-git
|
||||
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
|
||||
@@ -0,0 +1,9 @@
|
||||
Host gitlab.modg.net
|
||||
User git
|
||||
|
||||
Host git.jfmonty2.com
|
||||
User git
|
||||
Port 2022
|
||||
|
||||
Host *
|
||||
IdentityAgent /run/user/1000/creddy-agent.sock
|
||||
Reference in new issue
Block a user