Compare commits

..
122 Commits
Author SHA1 Message Date
gitadmin 6eb9d01a65 fix(hypr): normalize print key names 2026-10-10 15:31:14 -04:00
gitadmin f181f39145 chore(pi): update model defaults 2026-10-10 15:30:41 -04:00
gitadmin 0b70337bbd feat(pi): add SHARCNET model provider 2026-10-10 15:29:48 -04:00
gitadmin 8756ad8857 fix(desktop): symlink application launchers individually 2026-10-10 15:17:44 -04:00
gitadmin 1e4d26364a chore(voxtype): add voice typing config 2026-10-10 15:17:19 -04:00
gitadmin e82d86fa8f chore(pi): update changelog version to 1.1.0 2026-10-09 12:21:53 -04:00
gitadmin 03abb54797 chore(mise): add croc 2026-10-09 12:04:13 -04:00
gitadmin 93672442f9 chore(ci): switch commit skill to OpenAI provider 2026-10-09 12:03:26 -04:00
gitadmin 4380be3108 fix(desktop): prefer omarchy background setter 2026-10-09 12:01:59 -04:00
gitadmin 0ce884dfee chore(desktop): configure Obsidian URL handler 2026-10-09 12:01:22 -04:00
gitadmin a83a1c170b fix(mise): make setup tasks safer 2026-10-09 11:58:37 -04:00
gitadmin b304d302a7 chore(mise): add Go 2026-10-09 07:40:29 -04:00
gitadmin 292bb58b18 fix(hyprland): use active workspace layout 2026-10-09 01:15:04 -04:00
gitadmin e73d3acc39 Add Omarchy Hyprland bindings 2026-10-09 00:51:49 -04:00
gitadmin 5b31d14829 refactor(hypr): split configuration and extra bindings 2026-10-08 12:52:22 -04:00
gitadmin 4197230886 added tools 2026-10-08 12:37:45 -04:00
gitadmin 0e203b188d refactor(dotfiles): separate desktop configuration 2026-10-08 12:09:17 -04:00
gitadmin ecf01dad51 refactor(themes): move theme assets under omarchy-themes 2026-10-08 11:10:51 -04:00
gitadmin 7902fe531e refactor: rename desktop directory to applications 2026-10-08 08:13:50 -04:00
gitadmin bb9f74b7cf chore(ci): update pi model 2026-10-08 00:14:27 -04:00
gitadmin 10cfce1731 chore(hypr): use chromium as browser 2026-10-08 00:13:59 -04:00
gitadmin 401220f3b5 chore(pi): repoint default, planner, worker models 2026-10-08 00:09:49 -04:00
gitadmin 3cf0f65164 feat(hypr): bind super+g to chatgpt launcher, drop super+x bind 2026-10-06 23:59:24 -04:00
gitadmin e960f71340 chore(strata): rebuild binary 2026-10-06 23:59:24 -04:00
gitadmin 6301e15e57 feat: footclient terminal binds, monitor layout tweak, pi hermes/msg-queue 2026-10-06 23:59:24 -04:00
gitadmin ccb95c439a feat(hypr): bind super-x to launch/focus x 2026-10-06 23:59:24 -04:00
gitadmin 2249d5c3e8 chore(fish): drop redundant ssh-auth-sock hook
The symlink refresh and export already happen in config/bash/profile,
and tmux.conf sets SSH_AUTH_SOCK globally, so the fish conf.d copy was
a duplicate.
2026-10-06 23:58:24 -04:00
gitadmin c1f57dd476 fix(mise): make skills task tolerate pull failures and skip existing symlink 2026-10-06 23:57:10 -04:00
gitadmin aa66340875 feat(herdr): bind focus_agent and switch_workspace to number keys 2026-10-05 12:38:40 -04:00
gitadmin c2b4707b0a feat(hypr): bind org agenda and capture to floating terminal windows
SUPER+A now opens the Org agenda (replacing the alter_zorder binding,
commented out) and SUPER+CONTROL+A opens Org capture. Both launch in a
centered floating window via new window-class rules.
2026-10-05 12:07:38 -04:00
gitadmin 4b494eb433 chore(nvim): point orgmode and org-roam paths to ~/Documents/GTD 2026-10-03 08:45:11 -04:00
gitadmin a0ad6fa930 chore(ci): switch commit bot to opencode-go/qwen3.8-flash and pass prompt arg 2026-10-02 11:39:51 -04:00
gitadmin 274e427ccb chore(pi): bump default model to gpt-6-luna and retune subagents
Drop gpt-5.6-luna across the default and reviewer/oracle overrides in
favour of gpt-6-luna, and move the planner to deepseek-v4-pro. Also
raise reviewer thinking to high and drop the now-unneeded
fallbackModels entries since the primary targets resolve.
2026-10-02 11:39:09 -04:00
gitadmin ba9fcc4948 refactor(mise): rename theme_links task to setup_theme 2026-10-02 11:35:59 -04:00
gitadmin bf9d61f6e2 chore(desktop): add gtksourceview5 to packages 2026-10-02 11:35:59 -04:00
gitadmin 9e966e127d chore(config): switch default model to obelix/ornith-1.5-35B
- bump lastChangelogVersion to 0.99.2
- set default provider/model and update subagent overrides
- enable codemode tool by default
2026-10-01 22:47:00 -04:00
gitadmin 09139ae41b fix(terminal-launcher): use footclient instead of foot 2026-10-01 21:43:03 -04:00
gitadmin 5564df4247 disable kulala plugin 2026-10-01 21:42:43 -04:00
gitadmin 30757c74ba chore(nvim): switch orgmode to upstream source
Point orgmode at nvim-orgmode/orgmode instead of the personal fork, and drop the pinned version.
2026-10-01 21:42:01 -04:00
gitadmin 936f535d0a chore(mise): set RUSTUP_HOME and enable foot-server service 2026-10-01 21:41:24 -04:00
gitadmin 066d525b4d refactor(hypr): relocate disabled Alt+Tab bindings 2026-09-29 14:43:06 -04:00
gitadmin aaa0015135 update git config: reorder aliases, drop nvimdiff, add lg 2026-09-29 14:30:41 -04:00
gitadmin b9d807a78d chore(tmux): fix terminal-features and tidy config
Correct the terminal-feature typo to terminal-features, add kitty extkeys, and remove now-redundant comments.
2026-09-29 14:29:59 -04:00
gitadmin 7911b79b89 disable hdmi monitors, reposition lenovo m15 2026-09-29 14:29:29 -04:00
gitadmin c4ad72b974 update model providers and versions 2026-09-29 14:29:10 -04:00
gitadmin d8439564bc chore: update ci script model to ornith-1.5 2026-09-29 14:28:44 -04:00
gitadmin d5d68c5498 chore(foot): reduce window padding to 3x3 2026-09-25 09:43:07 -04:00
gitadmin bf9780345d fix(wallpaper): call fetcher by absolute path in set-wallpaper
Hyprland's exec_cmd does not source the shell PATH, so plain
wallpaper-fetcher failed from the keybinding; use ~/.local/bin. Binary
rebuilt (5.3MB -> 2.6MB) and the keybinding now fetches technics.
2026-09-24 23:44:41 -04:00
gitadmin b9997088c8 fix(nvim): correct obsidian picker name to snacks.picker 2026-09-24 21:57:37 -04:00
gitadmin 869991df4b fix(ssh): rename alcazar host to rascar and update ip to 172.25.11.131 2026-09-24 21:53:48 -04:00
gitadmin 788914abdc fix(dotfiles): symlink desktop entries individually
Use mode=symlink-each for ~/.local/share/applications so only the
custom .desktop files are linked instead of replacing the whole dir,
which hid system-installed entries.
2026-09-24 21:53:19 -04:00
gitadmin 9c353f257b feat(themes): add color derivation and themed app templates
Add script/omarchy-theme-color and expand omarchy-theme-set-templates to
derive a full palette from each theme's colors.toml, then render new
themed templates (shell, pi, vscode theme, gum, neovim, claude, hermes,
t3code) from it.

Adds backgrounds and palette updates for existing themes plus new themes
(last-horizon, lupine, solitude, tidewater-*, miasma, ...).
2026-09-24 21:25:12 -04:00
gitadmin 5fee6bbf4e chore(pi): drop enabledModels list, bump lastChangelogVersion to 0.87.0 2026-09-24 16:32:24 -04:00
gitadmin 6fcdd86cff chore(systemd): remove unused home-dotfiles-restore unit 2026-09-24 16:31:38 -04:00
gitadmin eeee8333b5 feat(systemd): auto-start tmux main session at login and add dotfiles restore unit 2026-09-24 16:24:10 -04:00
gitadmin e4231f3746 feat(nvim): enable exrc so project-local configs are loaded 2026-09-24 16:00:34 -04:00
gitadmin ffff051459 feat(herdr): allow nested panes 2026-09-24 16:00:13 -04:00
gitadmin e7b19ee993 chore(git): use zdiff3 conflict style for cleaner diffs 2026-09-24 15:59:47 -04:00
gitadmin 8086430934 chore(mise): replace Augureal webapp shortcut with X 2026-09-24 15:59:15 -04:00
gitadmin 37d656c502 chore(dotfiles): define mise vars and rename THEME_DIR to THEMES_STATE_DIR
Add a [vars] block to mise.toml (name, email, second brain, theme state dir) so templates can reference them, and switch environments.tmpl to the THEMES_STATE_DIR var.
2026-09-24 15:58:30 -04:00
gitadmin 26ef19f975 chore(pi-lens): disable context injection via mise symlink 2026-09-24 15:57:38 -04:00
gitadmin cdf23af952 chore(strata): bump bundled binary to 0.19.0
Previous build had no version flag; the new one reports 0.19.0 and
adds --unlock-volume. Binary grows 13MB -> 32MB.
2026-09-24 15:57:02 -04:00
gitadmin dcd59a6072 feat: enable wayland in firefox via environment.d 2026-09-24 15:56:30 -04:00
gitadmin ba05ef2a6d refactor(hypr): namespace config under sjb/
Move the Hyprland Lua modules into config/hypr/sjb/ with init.lua as the
entry point, so the whole config tree can be symlinked per-file and the
unmanaged hypr*.conf files keep their own symlinks. Add an sjb block that
requires the new entry point.

While here: bind the second Lenovo L15, force 3440x1440@144 on the
MAG342CQR, use the named 2fg scroll method, and drop dead locals.

Switch the skills mise task to clone/pull SjB/skills into
~/.local/share/skills and symlink it, replacing the npx skills adds.
2026-09-24 15:55:50 -04:00
gitadmin 17a129a2c4 feat(workmux): add agent and layout config with mise symlink 2026-09-24 14:48:19 -04:00
gitadmin 71e1686b25 fix(ssh): update hostnames to new subnet and remove stale TERM setting 2026-09-15 13:52:57 -04:00
gitadmin 32085a5e15 feat(fish): add workmux aliases 2026-09-15 13:52:16 -04:00
gitadmin 4a8c582e81 feat(strata): add binary, config, and theme template 2026-09-03 21:05:34 -04:00
gitadmin a6aa367313 chore(mise): clean up vars, add strata symlinks, fix tmux typo 2026-09-03 21:03:05 -04:00
gitadmin b6b738fc7b chore: migrate omarchy state from ~/.config to ~/.local/state
Move all omarchy runtime state (themes, backgrounds, current theme)
from ~/.config/omarchy/current to ~/.local/state/omarchy/current
to keep the config dir free of generated files. Add mise task for
recreating symlinks and update credential helpers for tea.
2026-09-03 20:46:18 -04:00
gitadmin d772b3952d feat(config): add remote hosts and desktop launchers 2026-09-03 20:27:21 -04:00
gitadmin b2f8334999 chore(config): refresh models, add packages, update subagent overrides 2026-08-31 09:58:29 -04:00
gitadmin 81fc70a6d5 chore(config): update model IDs and obelix baseUrl 2026-08-30 20:47:48 -04:00
gitadmin 46b485dfa4 chore(hyprland): rework print-key bindings and add color picker 2026-08-30 20:47:07 -04:00
gitadmin 76c8fd9ae2 fix(network-manager): ensure wireguard endpoint routes via default gateway 2026-08-30 20:46:51 -04:00
gitadmin 40e8237819 chore(ci): switch model to ornith-1.0-35B 2026-08-30 20:46:27 -04:00
gitadmin abe190f7f0 feat(hypr): rework keybindings on SUPER and rename special workspace
Drop the LEADER/HYPR prefixes and bind everything directly on SUPER.
Add media-key, brightness, window/layout and workspace bindings. Rename
the special workspace from 'special' to 'scratchpad' and update the
matching window/workspace rules. Map modmask 73 in the keybindings help
script.
2026-08-30 16:11:48 -04:00
gitadmin c740771df9 chore(ci): switch default model to qwen3.8-flash 2026-08-29 17:55:43 -04:00
gitadmin 918aecbeaa chore(ci): switch commit-staged model to opencode-go/hy3 2026-08-29 10:40:22 -04:00
gitadmin 8012fb09c6 chore(mise): make tmux_setup idempotent and auto-install plugins 2026-08-29 10:32:14 -04:00
gitadmin bb0d7f2f1d chore: bump lastChangelogVersion to 0.84.3 2026-08-29 10:30:42 -04:00
gitadmin 63998d2965 feat: add tmux plugin manager setup task and config tweaks 2026-08-29 00:27:37 -04:00
gitadmin 2c5a2f1d5e chore: remove commented-out sentinel plugin entry 2026-08-28 23:49:51 -04:00
gitadmin cbedf361db chore: add tea CLI as mise http dependency 2026-08-28 23:48:44 -04:00
gitadmin a8cd242a26 feat(hyprland): make M key layout-aware for swap/consume-or-expel 2026-08-28 11:58:50 -04:00
gitadmin 521a105f35 feat(fish): add ngit alias for neogit 2026-08-28 11:58:08 -04:00
gitadmin ac490653e8 chore: shorten default bare repo dir to .bare 2026-08-28 11:57:16 -04:00
gitadmin 892e32439e refactor(hyprland): tune visuals, overhaul animations, add cursor/binds settings 2026-08-28 11:54:51 -04:00
gitadmin 8a3ae0f6bd feat: add screen recording, OCR capture, and improved screenshot workflow 2026-08-28 11:52:43 -04:00
gitadmin b65af6a730 feat(herdr): add herdr-annotate plugin with keybindings 2026-08-27 12:05:45 -04:00
gitadmin 7b1f04b530 refactor(hypr): split monolithic config into modules
Extract monitors, functions, rules, env vars, and onstart into
separate files. Add toggle_pin, toggle_master_scrolling, and
layout-aware keybinds for scrolling layout.
2026-08-22 12:27:44 -04:00
gitadmin d605f4c388 refactor(permission-system): reorganize path permissions and add vault access 2026-08-21 15:18:09 -04:00
gitadmin be9f770dc9 chore: pin pi desktop shortcut to gpt-5.6-luna model 2026-08-20 09:29:14 -04:00
gitadmin 13cb9fb6f0 feat: add zdiff and review aliases for Zdiff nvim plugin 2026-08-20 09:08:59 -04:00
gitadmin 21daca8042 refactor(scripts): use fzf popup flag instead of fzf-tmux wrapper 2026-08-20 00:07:02 -04:00
gitadmin 0a4fc274b0 refactor(hypr): fix float toggle sizing, improve window cycling, update terminal-pi rule
- Fix toggle_float_with_limit to use correct property names (width/height vs size.width)
- Add notification on float toggle showing scale factor
- Resize to max bounds instead of scaling
- Move function definition after keybinds for better organization
- Add cycle_next_window wrapper to bring floating windows to top on cycle
- Update terminal-pi window rule to float/center/special workspace
2026-08-19 23:59:01 -04:00
gitadmin b88c8a0cf7 style(tmux): add hostname to status-right, remove redundant style resets 2026-08-19 14:58:32 -04:00
gitadmin 34db8af2dc chore(hyprland): add HDMI-A-2 monitor configuration 2026-08-19 14:43:30 -04:00
gitadmin 77b2db55ec fix(hypr): adjust monitor positions, add float limit, new keybindings
- Reorder monitor positions (Stargate/ARZOPA to auto-down, MSI to auto-left)
- Add toggle_float_with_limit function that caps floating windows at 80%
- Add keybindings for Obsidian today and pi tui
- Add window rules for terminal-pi and quicknotes (floating)
- Update ostt-popup to fixed size/position
2026-08-19 14:42:03 -04:00
gitadmin c53a58a55e fix(nvim): switch to pi2.nvim and add render-markdown 2026-08-19 14:31:40 -04:00
gitadmin da1b48c4c1 feat: add pi desktop launcher and cleanup terminal-launcher 2026-08-19 13:53:18 -04:00
gitadmin cd7e0dcea3 fix(ostt): enable foot terminal for popup 2026-08-19 13:51:52 -04:00
gitadmin bc53931906 chore(mise): add pi extensions 2026-08-19 13:50:38 -04:00
gitadmin 7ca3865bbb chore(packages): add tensaku-bin 2026-08-19 13:49:14 -04:00
gitadmin 1b608ea553 fix(ci): exec pi to replace shell process in ci script 2026-08-15 23:42:19 -04:00
gitadmin 4a8341a651 refactor(tmux): clean up terminal settings and adjust keybindings
- Enable tmux-256color and universal RGB/clipboard terminal features
- Remove stale commented-out terminal overrides and default-shell
- Update escape-time and workmux popup binding
- Rebind t→o for the t script
2026-08-15 23:41:40 -04:00
gitadmin 02b2a96fa9 chore(mise): add dua tool 2026-08-15 23:39:17 -04:00
gitadmin 52a9341bc0 feat(tmux): enable mouse support and add workmux status popup 2026-08-13 10:59:24 -04:00
gitadmin 407024a6ec style(hyprland): reformat config and remap mouse bindings
Reformat monitor configs to multi-line table syntax for readability.
Wrap long hl.bind calls and fix whitespace alignment in window rules.

Rebind mouse:275/276 from clipboard copy/paste to window cycle
next/previous for more intuitive navigation.
2026-08-12 19:02:47 -04:00
gitadmin 2e84ce9375 feat(theme): add light/dark mode detection based on light.mode file 2026-08-12 18:23:42 -04:00
gitadmin f060f53d64 chore: add workmux to mise config 2026-08-12 18:22:58 -04:00
gitadmin 325408e34e chore(config): add filesystem permissions for skills, models, and permission config 2026-08-05 18:23:45 -04:00
gitadmin 80698baf41 refactor(nvim): update conform formatters and enable format-on-save
Reorder rust formatters (rustfmt primary), switch python from
isort/black to ruff/dprint, and enable format_on_save with lsp_fallback.
2026-08-05 18:22:34 -04:00
gitadmin f5c484b801 chore(pi-permission-system): loosen file and directory access defaults 2026-08-03 08:11:32 -04:00
gitadmin ac8514a229 chore: update wallpaper-fetcher binary (reduced by ~1.4 MB) 2026-08-03 08:02:01 -04:00
gitadmin aba90417a5 feat(hyprland): add screenshot keybindings 2026-07-31 23:40:16 -04:00
gitadmin b82281800d chore: add sandboxec sandbox config for pi 2026-07-31 13:52:21 -04:00
gitadmin fb938066a4 refactor: remove unused variables from hyprland-fetch-client 2026-07-31 11:14:32 -04:00
gitadmin f58aca742d refactor(hypr): clean up keybindings, remove dead code, add rofi-pass description 2026-07-31 11:07:56 -04:00
gitadmin e6f9ef0dab chore: update ci model to mimo-v2.5 2026-07-31 09:29:33 -04:00
gitadmin 158c86efcf feat(hypr): auto-swap-to-master on fetch/focus, use --persistent dispatches
fetch_or_launch and focus_or_launch now swap the target client to master
layout position when it is not already the master. Scripts switched from raw
hl.dsp.* calls to --persistent lua function dispatches (fetch_or_launch /
focus_or_launch), and both now guard against empty rofi selection.
2026-07-31 09:22:45 -04:00
gitadmin 039d15a5e6 refactor: extract terminal launch logic into shared script
Add terminal-launcher script as a single entry point for launching
foot-based terminals with a given class and command. Migrate all
.desktop files to use it instead of inline foot invocations.

Simplify hyprland keybindings by replacing inline focus_or_launch
with hl.dsp.exec_cmd
2026-07-30 17:51:55 -04:00
706 changed files with 6519 additions and 2022 deletions
Binary file not shown.
+5 -2
View File
@@ -5,5 +5,8 @@ alias wtr="wt remove @"
alias ll="eza -l -g --icons" alias ll="eza -l -g --icons"
alias ls="eza -al --color=always --group-directories-first" alias ls="eza -al --color=always --group-directories-first"
alias g="git" alias g="git"
alias neogit="nvim +Neogit" alias ngit="nvim +Neogit"
alias zdiff="nvim +Zdiff"
alias review="nvim +'Zdiff origin/HEAD'"
alias wm="workmux"
alias wmd="workmux dashboard"
+19 -10
View File
@@ -11,30 +11,39 @@ append_path "$HOME/.local/bin"
append_path "$HOME/.cargo/bin" append_path "$HOME/.cargo/bin"
export PATH export PATH
if [ -x $(command -v bat) ]; then
export PAGER="bat"
fi
if [ test -x $(command -v mise) ]; then if [ -x $(command -v mise) ]; then
eval "$(mise activate bash)" eval "$(mise activate bash)"
fi fi
if [ test -x $(command -v zoxide) ]; then if [ -x $(command -v zoxide) ]; then
eval "$(zoxide init bash)" eval "$(zoxide init bash)"
fi fi
if [ test -x $(command -v fzf) ]; then if [ -x $(command -v fzf) ]; then
eval "$(fzf --bash)" eval "$(fzf --bash)"
fi fi
if [ -z "$SSH_CONNECTION" ]; then if [ -x $(command -v wt) ]; then
export SSH_AUTH_SOCK="/run/user/$UID/gnupg/S.gpg-agent.ssh" eval "$(command wt config shell init bash)";
fi fi
# Create a predictable symlink pointing to the current SSH auth socket if [ -n "$SSH_CONNECTION" ]; then
auth_sock="$HOME/.ssh/ssh_auth_sock" # Create a predictable symlink pointing to the current SSH auth socket
if [ -n "$SSH_AUTH_SOCK" ] && [ "$SSH_AUTH_SOCK" != "$auth_sock" ]; then auth_sock="$HOME/.ssh/ssh_auth_sock"
mkdir -p "$HOME/.ssh" if [ -n "$SSH_AUTH_SOCK" ] && [ "$SSH_AUTH_SOCK" != "$auth_sock" ]; then
ln -sf "$SSH_AUTH_SOCK" "$auth_sock" mkdir -p "$HOME/.ssh" && ln -snf "$SSH_AUTH_SOCK" "$auth_sock"
fi
else
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi fi
for _f in "$HOME"/.config/herdr/plugins/github/herdr-automatic-rename-*/shell/hook.bash; do for _f in "$HOME"/.config/herdr/plugins/github/herdr-automatic-rename-*/shell/hook.bash; do
[ -r "$_f" ] && { source "$_f"; break; } [ -r "$_f" ] && { source "$_f"; break; }
done done
[[ -f ~/.bash_aliases ]] && . ~/.bash_aliases
@@ -0,0 +1 @@
MOZ_ENABLE_WAYLAND=1
-20
View File
@@ -1,20 +0,0 @@
# Create a predictable symlink to the current SSH auth socket.
# tmux forces SSH_AUTH_SOCK to ~/.ssh/ssh_auth_sock globally
# (see config/tmux/tmux.conf), so this symlink must exist for every
# interactive shell -- not just bash login shells.
#
# For herdr (which lacks tmux's setenv -g): if we inherit a real
# SSH_AUTH_SOCK, update the symlink. Then always export the symlink
# path so new panes that didn't inherit the env still pick it up.
set -l auth_sock "$HOME/.ssh/ssh_auth_sock"
# If we have a real socket (not the symlink), refresh the symlink
if set -q SSH_AUTH_SOCK; and test "$SSH_AUTH_SOCK" != "$auth_sock"; and test -S "$SSH_AUTH_SOCK"
mkdir -p "$HOME/.ssh"
ln -sf "$SSH_AUTH_SOCK" "$auth_sock"
end
# Always export the symlink path if it points to a live socket
if test -S "$auth_sock"
set -gx SSH_AUTH_SOCK "$auth_sock"
end
+8
View File
@@ -33,6 +33,9 @@ if status is-interactive
alias oo "cd $SECOND_BRAIN" alias oo "cd $SECOND_BRAIN"
alias on "nvim '+Obsidian new'" alias on "nvim '+Obsidian new'"
alias os "nvim '+Obsidian search'" alias os "nvim '+Obsidian search'"
alias ngit "nvim +Neogit"
alias zdiff "nvim '+Zdiff'"
alias review "nvim '+Zdiff origin/HEAD'"
alias mini "NVIM_APPNAME=mini.nvim nvim" alias mini "NVIM_APPNAME=mini.nvim nvim"
end end
@@ -65,6 +68,11 @@ if status is-interactive
/usr/bin/jj util completion fish | source /usr/bin/jj util completion fish | source
end end
if command -q workmux
alias wm "workmux"
alias wmd "workmux dashboard"
end
# NVM # NVM
function __check_nvm --on-variable PWD --description 'Do nvm stuff' function __check_nvm --on-variable PWD --description 'Do nvm stuff'
status --is-command-substitution; and return status --is-command-substitution; and return
+29 -29
View File
@@ -12,9 +12,10 @@ ui = auto
[branch] [branch]
autosetupmerge = true autosetupmerge = true
sort = -committerdate
[tag] [tag]
sort = version:refname sort = -version:refname
[diff] [diff]
algorithm = histogram algorithm = histogram
@@ -33,11 +34,9 @@ pruneTags = true
all = true all = true
[commit] [commit]
verbose = true
# gpgsign = true # gpgsign = true
[help]
autocorrect = prompt
[rerere] [rerere]
enabled = true enabled = true
autoupdate = true autoupdate = true
@@ -53,10 +52,9 @@ pretty = format:%C(blue)%ad%Creset %C(yellow)%h%C(green)%d%Creset %C(blue)%s %C(
layout = BASE,MERGED + BASE,LOCAL + BASE,REMOTE layout = BASE,MERGED + BASE,LOCAL + BASE,REMOTE
[merge] [merge]
conflictStyle = diff3 conflictStyle = zdiff3
summary = true summary = true
verbosity = 1 verbosity = 1
tool = nvimdiff
[apply] [apply]
whitespace = nowarn whitespace = nowarn
@@ -69,25 +67,8 @@ whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol
[advice] [advice]
statusHints = false statusHints = false
[url "git@github.com:"]
insteadOf = "gh:"
pushInsteadOf = "github:"
pushInsteadOf = "git://github.com/"
[url "git://github.com/"]
insteadOf = "github:"
[url "git@gist.github.com:"]
insteadOf = "gst:"
pushInsteadOf = "gist:"
pushInsteadOf = "git://gist.github.com/"
[alias] [alias]
# annex
xl = annex list
xg = annex list
# add # add
a = add a = add
padd = add --patch padd = add --patch
@@ -127,16 +108,16 @@ last = diff HEAD^
# log # log
l = log --graph --date=short l = log --graph --date=short
la = log --graph --date=short --all la = log --graph --date=short --all
lg = log --pretty=format:'%Cred%h%Creset - %C(blue bold)[%ad] %Creset%C(yellow)%d %Creset%s %C(green bold)<%an>%Creset' --abbrev-commit --date=short
llg = log --pretty=format:'%Cred%h%Creset - %C(blue bold)[%ad] %Creset%C(yellow)%d %Creset%s %C(green bold)<%an>%Creset' --abbrev-commit --date=short --graph
lls = git log --pretty=format:"[%h] %ae, %ar: %s" --stat
lc = log ORIG_HEAD.. --stat --no-merges
wu = log -p origin..@{0} wu = log -p origin..@{0}
changes = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\" --name-status changes = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\" --name-status
short = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\" short = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\"
changelog = log --pretty=format:\" * %s\" changelog = log --pretty=format:\" * %s\"
shortnocolor = log --pretty=format:\"%h %cr %cn %s\" shortnocolor = log --pretty=format:\"%h %cr %cn %s\"
lg = log --pretty=format:'%Cred%h%Creset - %C(blue bold)[%ad] %Creset%C(yellow)%d %Creset%s %C(green bold)<%an>%Creset' --abbrev-commit --date=short
llg = log --pretty=format:'%Cred%h%Creset - %C(blue bold)[%ad] %Creset%C(yellow)%d %Creset%s %C(green bold)<%an>%Creset' --abbrev-commit --date=short --graph
lls = git log --pretty=format:"[%h] %ae, %ar: %s" --stat
showfiles = show --name-only showfiles = show --name-only
lc = log ORIG_HEAD.. --stat --no-merges
# rebase # rebase
rc = rebase --continue rc = rebase --continue
@@ -159,7 +140,6 @@ diffstat = diff --stat
changes = diff --name-status -r changes = diff --name-status -r
# stash # stash
stashes = stash list
ss = stash ss = stash
sl = stash list sl = stash list
sa = stash apply sa = stash apply
@@ -178,7 +158,6 @@ dt = difftools
rv = review rv = review
ls = ls-files ls = ls-files
gconf = config --global
c = clone --recursive c = clone --recursive
bc = clone --bare bc = clone --bare
@@ -189,3 +168,24 @@ wtl = worktree list
wtr = worktree remove wtr = worktree remove
ignore = "!gi() { curl -sL https://www.toptal.com/developers/gitignore/api/$@ ;}; gi" ignore = "!gi() { curl -sL https://www.toptal.com/developers/gitignore/api/$@ ;}; gi"
[url "git@github.com:"]
insteadOf = "gh:"
pushInsteadOf = "github:"
pushInsteadOf = "git://github.com/"
[url "git://github.com/"]
insteadOf = "github:"
[url "git@gist.github.com:"]
insteadOf = "gst:"
pushInsteadOf = "gist:"
pushInsteadOf = "git://gist.github.com/"
[credential "https://git.nca.uwo.ca"]
helper =
helper = !tea login helper
[credential "http://gitea.sagacity.ca"]
helper =
helper = !tea login helper
+47 -3
View File
@@ -1,21 +1,47 @@
onboarding = false onboarding = false
[ui] [ui]
show_agent_labels_on_pane_borders = true show_agent_labels_on_pane_borders = true
pane_gaps = false pane_gaps = false
pane_borders = true pane_borders = true
prompt_new_tab_name = false prompt_new_tab_name = false
confirm_close = false
# set -g mouse on
mouse_capture = true
# status-right had the zoom flag followed by #h
tab_bar_right = [{ type = "zoom" }, { type = "hostname" }]
# set -g set-titles on / set -g set-titles-string '#h:#W', where tmux's #W was
# the basename of the pane cwd. This is what Hyprland shows in the group bar,
# and it resolves on the server so remote sessions name the remote host.
window_title = "{hostname}: {workspace}"
[experimental] [experimental]
pane_history = true pane_history = true
allow_nested = true
[theme] [theme]
name = "gruvbox" name = "terminal"
auto_switch = true
[theme.custom]
panel_bg = "black"
[terminal]
new_cwd = "follow"
[keys] [keys]
prefix = "ctrl+space" prefix = "ctrl+space"
reload_config = "prefix+ctrl+r" reload_config = "prefix+q"
help = "prefix+?"
detach = "prefix+d"
zoom = "prefix+z" zoom = "prefix+z"
copy_mode = "prefix+["
last_pane = "prefix+;"
focus_agent = "prefix+alt+1..9"
switch_workspace = "prefix+shift+1..9"
[remote] [remote]
manage_ssh_config = true manage_ssh_config = true
@@ -47,5 +73,23 @@ type = "plugin_action"
command = "herdr-zoxide.browse" command = "herdr-zoxide.browse"
description = "Browse zoxide directories" description = "Browse zoxide directories"
[[keys.command]]
key = "prefix+a"
type = "plugin_action"
command = "annotate.capture"
description = "annotate text"
[[keys.command]]
key = "prefix+shift+a"
type = "plugin_action"
command = "annotate.copy-context"
description = "copy annotations as context"
[[keys.command]]
key = "prefix+m"
type = "plugin_action"
command = "annotate.manage"
description = "manage annotations"
[ui.toast] [ui.toast]
delivery = "herdr" delivery = "herdr"
-696
View File
@@ -1,696 +0,0 @@
-- require("keybinds.lua")
hl.monitor({ output = "desc:Lenovo Group Limited 0x41A0", mode = "highrr", position = "0x0", scale = "1.0" })
hl.monitor({ output = "desc:Samsung Display Corp. 0x4143", mode = "highrr", position = "0x0", scale = "2" })
hl.monitor({ output = "desc:LG Electronics LG HDR 4K 406NTZN74597", mode = "preferred", position = "auto-right", scale = "1.333333" })
hl.monitor({ output = "desc:Ancor Communications Inc ASUS MG28U 0x00009B77", mode = "preferred", position = "auto-right", scale = "1.333333" })
-- hl.monitor({ output = "eDP-1", mode = "preferred", position = "0x0", scale = "1.0" })
hl.monitor({ output = "desc:LG Electronics LG HDR WQHD 0x0006530C", mode = "preferred", position = "auto-up", scale = "1.333333" })
hl.monitor({ output = "CAP Capture 0x00000001", mode = "1920x1080@60", position = "auto-down", scale = 1 })
hl.monitor({ output = "HDMI-A-1", mode = "1920x1080@60", position = "auto-down", scale = 1 })
hl.monitor({ output = "desc:Ancor Communications Inc ASUS PB238 DCLMTF074371", mode = "preferred", position = "auto", scale = "1.0" })
hl.monitor({ output = "desc:Lenovo Group Limited L15 U133R0A2", mode = "preferred", position = "auto-left", scale = 1 })
hl.monitor({ output = "desc:Lenovo Group Limited M15 V30F2A15", mode = "preferred", position = "auto-left", scale = 1 })
hl.monitor({ output = "desc:Proteon TYPE-C 8R33926O00QS", mode = "preferred", position = "auto-right", scale = "1.0" })
hl.monitor({ output = "desc:Stargate Technology TYPE-C", mode = "preferred", position = "auto-right", scale = "1.0" })
hl.monitor({ output = "desc:GWD ARZOPA 000000000000", mode = "preferred", position = "auto-left", scale = "1.0" })
hl.monitor({ output = "desc:BNQ BenQ EX3203R 7CL00509019", mode = "preferred", position = "auto", scale = 1 })
hl.monitor({ output = "desc:BNQ BenQ EX3501R N4M05650019", mode = "preferred", position = "auto-right", scale = "1.0" })
hl.monitor({ output = "desc:Dell Inc. DELL U3818DW 97F8P8AD0HEL", mode = "preferred", position = "auto-left", scale = "1.0" })
hl.monitor({ output = "desc:Microstep MSI MAG342CQR DB6H252300057", mode = "preferred", position = "auto-right", scale = "1.0" })
hl.config({
input = {
kb_layout = "us",
kb_variant = ",qwerty",
-- kb_model =
-- kb_options = ctrl:nocaps
kb_options = "caps:ctrl_modifier,compose:ralt",
-- kb_options = compose:ralt
follow_mouse = 1,
repeat_rate = 40,
repeat_delay = 600,
touchpad = {
natural_scroll = true,
disable_while_typing = true,
clickfinger_behavior = true,
scroll_factor = 0.7,
},
scroll_method = 2,
sensitivity = 0, -- -1.0 - 1.0, 0 means no modification.
},
ecosystem = {
no_update_news = true,
enforce_permissions = false,
},
general = {
gaps_in = 0,
gaps_out = 0,
border_size = 2,
allow_tearing = true,
snap = {
enabled = true
},
col = {
active_border = { colors = { "rgba(33ccffee)", "rgba(00ff99ee)" }, angle = 45 },
inactive_border = "rgba(595959aa)",
},
layout = "master"
},
master = {
allow_small_split = true,
mfact = 0.50,
new_status = "master",
orientation = "center",
},
dwindle = {
preserve_split = true,
smart_split = false,
force_split = 2,
},
scrolling = {
column_width = 1.0
},
decoration = {
rounding = 3,
active_opacity = 1.0,
inactive_opacity = 1.0,
dim_inactive = false,
dim_special = 0.0,
dim_strength = 0.2,
shadow = {
enabled = false,
range = 2,
render_power = 3,
color = "rgba(1a1a1aee)",
},
blur = {
enabled = false,
size = 3,
passes = 1,
vibrancy = 0.1696,
},
},
group = {
groupbar = {
enabled = false
}
},
misc = {
disable_hyprland_logo = true,
disable_splash_rendering = true,
focus_on_activate = true,
mouse_move_enables_dpms = true,
animate_manual_resizes = true,
mouse_move_focuses_monitor = true,
enable_swallow = true,
enable_anr_dialog = false,
force_default_wallpaper = true,
},
xwayland = {
force_zero_scaling = true
},
animations = {
enabled = true,
-- animation = borderangle, 1, 50, linear, loop
-- bezier = generic, 0.05, 0.9, 0.1, 1.08
-- bezier = almostLinear,0.5,0.5,0.75,1.0
-- bezier = quick,0.15,0,0.1,1
--
-- animation = windows, 1, 3, almostLinear
-- animation = windowsOut, 1, 3, quick
-- animation = windowsIn, 1, 3, quick
-- animation = border, 1, 10, generic
-- animation = fade, 1, 3, almostLinear
-- animation = workspaces, 1, 1, quick
-- animation = layers, 1, 3, quick
}
})
hl.curve("almostLinear", { type = "bezier", points = { { 0.5, 0.5 }, { 0.75, 1.0 } } })
hl.curve("generic", { type = "bezier", points = { { 0.5, 0.9 }, { 0.1, 1.08 } } })
hl.curve("quick", { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1.0 } } })
hl.curve("overshoot", { type = "bezier", points = { { 0.5, 0.9 }, { 0.1, 1.1 } } })
hl.curve("rubber", { type = "spring", mass = 1, stiffness = 70, dampening = 10 })
hl.animation({ leaf = "windows", enabled = true, speed = 3, bezier = "almostLinear" })
hl.animation({ leaf = "border", enabled = true, speed = 1, spring = "rubber" })
hl.animation({ leaf = "workspaces", enabled = true, speed = 1, bezier = "quick" })
hl.animation({ leaf = "layers", enabled = true, speed = 3, bezier = "quick" })
hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "almostLinear" })
-- local terminal = "ghostty -e"
local terminal = "foot"
local notify_cmd = "notify-send"
local browser = "gtk-launch firefox.desktop"
local webapp = "chromium --new-window --ozone-platform=wayland --app="
local music = "gtk-launch spotify.desktop"
local LEADER = "SUPER + "
local HYPR = "SUPER + CONTROL + SHIFT + ALT + "
function sysinfo()
local mem = io.popen("free -h | awk '/^Mem/ {print $3 \"/\" $2}'"):read("*a")
local cpu = io.popen("top -bn1 | grep 'Cpu(s)' | awk '{print $2 + $4 \"%\"}'"):read("*a")
local battery = io.popen("acpi -b | awk -F', ' '{print $2}'"):read("*a")
local time = os.date("%Y-%m-%d %H:%M:%S")
local monitor = hl.get_active_monitor()
local workspace_id = monitor.active_workspace.id
local mesg = "System Info"
.. "\nDate: " .. time
.. "\nFocused monitor: " .. monitor.name
.. "\nWorkspace: " .. workspace_id
.. "\nBattery: " .. battery
.. "CPU: " .. cpu .. " MEM: " .. mem
hl.notification.create({ text = mesg, icon = "hint", duration = 5000 })
end
function dispatch_focus_or_launch(opts)
return function()
focus_or_launch(opts)
end
end
function focus_or_launch(opts)
local match = opts.match
local cmd = opts.cmd
local field = opts.field or "class" -- class, title, initialClass, initialTitle
local use_workspace = opts.use_workspace ~= false
local clients = hl.get_windows()
for _, client in ipairs(clients) do
local value = client[field]
if value and string.find(string.lower(value), string.lower(match), 1, true) then
if use_workspace and client.workspace and client.workspace.id then
hl.dispatch(hl.dsp.focus({
workspace = client.workspace.id,
on_current_monitor = true,
}))
end
hl.dispatch(hl.dsp.focus({
window = "address:" .. client.address
}))
return
end
end
hl.exec_cmd(cmd)
end
function fetch_or_launch(opts)
local match = opts.match
local cmd = opts.cmd
local field = opts.field or "class" -- class, title, initialClass, initialTitle
local use_workspace = opts.use_workspace ~= false
local clients = hl.get_windows()
local active_workspace = hl.get_active_workspace()
for _, client in ipairs(clients) do
local value = client[field]
if value and string.find(string.lower(value), string.lower(match), 1, true) then
if use_workspace and client.workspace and client.workspace.id then
hl.dispatch(hl.dsp.window.move({
workspace = active_workspace.id,
on_current_monitor = true,
}))
end
hl.dispatch(hl.dsp.focus({
window = "address:" .. client.address
}))
return
end
end
hl.exec_cmd(cmd)
end
function toggle_master()
local ws = hl.get_active_workspace()
if not ws then
return
end
local mfact = nil
for _, win in ipairs(ws:get_windows()) do
local layout = win.layout
if layout and layout.name == "master" and layout.is_master then
mfact = math.floor(layout.perc_master * 100 + 0.5) / 100
break
end
end
if mfact == 0.7 then
mfact = 0.5
else
mfact = 0.7
end
hl.dispatch(hl.dsp.layout("mfact exact " .. mfact))
end
hl.bind(LEADER .. "return", function()
focus_or_launch({
match = "tmux",
field = "class",
cmd = "gtk-launch tmux.desktop",
})
end, { description = "Open tmux terminal" })
hl.bind(LEADER .. "SHIFT + return", function()
focus_or_launch({
match = "herdr",
field = "class",
cmd = "gtk-launch herdr.desktop",
})
end, { description = "Open herdr terminal" })
hl.bind(LEADER .. "B", hl.dsp.exec_raw(browser), { description = "Open browser" })
hl.bind(LEADER .. "T", hl.dsp.exec_raw(terminal .. " -e btop"), { description = "Open system monitor" })
hl.bind(LEADER .. "S", hl.dsp.exec_raw("ostt launch --paste"), { description = "Open ostt" })
-- hl.bind(LEADER .. "I", hl.dsp.exec_cmd(notify_cmd .. " $(~/.local/bin/sysinfo)"), { description = "Show system info" })
hl.bind(LEADER .. "I", function()
sysinfo()
end, { description = "Show system info" })
-- Open rofi on first press, closes it on second
hl.bind(LEADER .. "Space", hl.dsp.exec_raw("rofi -show combi --modes combi"), { release = true, description = "Open Application Menu" })
hl.bind(LEADER .. "SHIFT + SPACE", hl.dsp.exec_cmd("~/.local/bin/hyprland-fetch-client"),
{ release = true, description = "Fetch client" })
hl.bind(LEADER .. "CONTROL + SPACE", hl.dsp.exec_cmd("~/.local/bin/hyprland-focus-client"),
{ release = true, description = "Focus client" })
hl.bind(LEADER .. "CONTROL + return", hl.dsp.exec_cmd("~/.local/bin/hyprland-tmux-session"),
{ release = true, description = "Tmux session switcher" })
hl.bind(HYPR .. "V", hl.dsp.exec_cmd("pavucontrol"), { description = "Volume control" })
hl.bind(HYPR .. "B", hl.dsp.exec_cmd("blueberry"), { description = "Bluetooth manager" })
hl.bind(HYPR .. "semicolon", hl.dsp.exec_cmd("~/.local/bin/set-wallpaper.sh categories/quotes"), { description = "get new wallpaper" })
hl.bind(HYPR .. "A", dispatch_focus_or_launch({
match = "Goose",
field = "class",
cmd = "gtk-launch goose-desktop.desktop"
}), { description = "Goose Desktop" })
hl.bind(HYPR .. "C", dispatch_focus_or_launch({
match = "chrome-chatgpt.com",
cmd = "gtk-launch ChatGPT.desktop",
}), { description = "ChatGPT" })
hl.bind(HYPR .. "O", dispatch_focus_or_launch({
match = "chrome-outlook.office.com",
cmd = "gtk-launch Outlook.desktop",
}), { description = "Email" })
hl.bind(HYPR .. "T", dispatch_focus_or_launch({
match = "chrome-teams.microsoft.com",
cmd = "gtk-launch Team.desktop",
}), { description = "UWO Team" })
hl.bind(HYPR .. "Y", dispatch_focus_or_launch({
match = "chrome-youtube.com",
cmd = "gtk-launch YouTube.desktop",
}), { description = "YouTube" })
hl.bind(HYPR .. "W", dispatch_focus_or_launch({
match = "chrome-web.whatsapp.com",
cmd = "gtk-launch WhatsApp.desktop",
}), { description = "WhatsApp" })
hl.bind(HYPR .. "G", dispatch_focus_or_launch({
match = "chrome-www.gmail.com",
cmd = webapp .. "https://www.gmail.com/",
}), { description = "Google" })
hl.bind(HYPR .. "D", dispatch_focus_or_launch({
match = "chrome-discord.com",
cmd = "gtk-launch Discord.desktop"
}), { description = "Discord" })
hl.bind(HYPR .. "M", dispatch_focus_or_launch({
match = "chrome-messages.google.com",
cmd = "gtk-launch \"Google Messages.desktop\"",
}), { description = "Google Messages" })
hl.bind(HYPR .. "S", dispatch_focus_or_launch({
match = "Spotify",
cmd = music,
}), { description = "Music" })
hl.bind(HYPR .. "F", dispatch_focus_or_launch({
match = "pcmanfm",
cmd = "pcmanfm",
}), { description = "File Manager" })
hl.bind(LEADER .. "slash",
hl.dsp.exec_cmd("ROFI_PASS_BACKEND=wtype ROFI_PASS_CLIPBOARD_BACKEND=wl-clipboard ~/.local/bin/rofi-pass"))
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { repeating = true, description = "Volume down" })
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"), { repeating = true, description = "Volume up" })
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { description = "Toggle mute" })
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { description = "Toggle mic mute" })
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl s 10%+"), { repeating = true, description = "Brightness up" })
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl s 10%-"), { repeating = true, description = "Brightness down" })
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { description = "Play/pause media" })
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { description = "Previous media" })
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { description = "Next media" })
hl.bind(LEADER .. "Y", hl.dsp.exec_cmd("makoctl dismiss"), { description = "Dismiss notifications" })
hl.bind(LEADER .. "W", hl.dsp.window.close(), { description = "Window: Close" })
hl.bind(LEADER .. "F", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" }),
{ description = "Window: Toggle fullscreen" })
hl.bind(LEADER .. "CTRL + F", hl.dsp.window.fullscreen_state({ internal = 2, client = 0, action = "toggle" }),
{ description = "Window: Toggle fullscreen state 2" })
hl.bind(LEADER .. "ALT + F", hl.dsp.window.fullscreen_state({ internal = 0, client = 2, action = "toggle" }),
{ description = "Window: Toggle fullscreen state 2" })
hl.bind(LEADER .. "SHIFT + F", hl.dsp.window.float({ action = "toggle" }), { description = "Window: Toggle floating" })
hl.bind(LEADER .. "P", hl.dsp.window.pseudo(), { description = "Window: Toggle pseudo tiling" })
hl.bind(LEADER .. "A", hl.dsp.window.alter_zorder({ mode = "top" }), { description = "Window: Move to top" })
hl.bind(LEADER .. "left", hl.dsp.focus({ direction = "l" }), { description = "Window: Focus left" })
hl.bind(LEADER .. "right", hl.dsp.focus({ direction = "r" }), { description = "Window: Focus right" })
hl.bind(LEADER .. "up", hl.dsp.focus({ direction = "u" }), { description = "Window: Focus up" })
hl.bind(LEADER .. "down", hl.dsp.focus({ direction = "d" }), { description = "Window: Focus down" })
hl.bind(LEADER .. "H", hl.dsp.focus({ direction = "l" }), { description = "Window: Focus left" })
hl.bind(LEADER .. "L", hl.dsp.focus({ direction = "r" }), { description = "Window: Focus right" })
hl.bind(LEADER .. "K", hl.dsp.focus({ direction = "u" }), { description = "Window: Focus up" })
hl.bind(LEADER .. "J", hl.dsp.focus({ direction = "d" }), { description = "Window: Focus down" }) -- hl.bind("SUPER + H", hl.dsp.window.resize("left"), { repeating = true, description = "Window: Resize left" })
-- hl.bind(LEADER .. "z", hl.dsp.focus({ last = true }), { description = "Window: Focus last" })
hl.bind(LEADER .. "Z", hl.dsp.focus({ urgent_or_last = true }), { description = "Window: Focus last" })
hl.bind(LEADER .. "ALT + period", function()
hl.dispatch(hl.dsp.layout("cycleprev"))
end, { description = "Window: Swap with next" })
hl.bind(LEADER .. "ALT + comma", function()
hl.dispatch(hl.dsp.layout("cyclenext"))
end, { description = "Window: Swap with prev" })
hl.bind("ALT + Tab", hl.dsp.window.cycle_next(), { description = "Window: Cycle next" })
hl.bind("ALT + SHIFT + Tab", hl.dsp.window.cycle_next({ next = false }), { description = "Window: Cycle prev" })
hl.bind(LEADER .. "ALT + Tab", hl.dsp.focus({ workspace = "previous", on_current_monitor = true }),
{ description = "Window: Focus previous in workspace" })
-- arrange split ratio
hl.bind(LEADER .. "X", function()
toggle_master()
end)
-- hl.bind(LEADER .. "equal", hl.dsp.layout("mfact exact 0.5"))
hl.bind(LEADER .. "M", hl.dsp.layout("swapwithmaster"))
-- hl.bind(LEADER .. "M", hl.dsp.layout("rollnext"))
hl.bind(LEADER .. "period", function()
hl.dispatch(hl.dsp.layout("cycleprev"))
hl.dispatch(hl.dsp.layout("swapwithmaster"))
-- hl.dispatch(hl.dsp.layout("focus r"))
end, { description = "Layout: Cycle next" })
hl.bind(LEADER .. "comma", function()
hl.dispatch(hl.dsp.layout("cyclenext"))
hl.dispatch(hl.dsp.layout("swapwithmaster"))
-- hl.dispatch(hl.dsp.layout("focus l"))
end, { description = "Layout: Cycle previous" })
hl.bind(LEADER .. "semicolon", hl.dsp.workspace.toggle_special("special"))
hl.bind(LEADER .. "SHIFT + semicolon", hl.dsp.window.move({ workspace = "special:special", follow = false }),
{ description = "Window: Move to special workspace" })
hl.bind(LEADER .. "C", hl.dsp.window.center(), { description = "Window: Center" })
hl.bind(LEADER .. "Escape", hl.dsp.exec_raw("loginctl lock-session"), { description = "Lock screen" })
hl.bind(LEADER .. "SHIFT + escape", hl.dsp.exec_raw("systemctl suspend"), { description = "Suspend" })
hl.bind(LEADER .. "ALT + escape", hl.dsp.exec_raw("uwsm stop,"), { description = "Stop UWSM" })
hl.bind(LEADER .. "CTRL + escape", hl.dsp.exec_raw("reboot"), { description = "Reboot" })
hl.bind(LEADER .. "SHIFT + CTRL + escape", hl.dsp.exec_raw("systemctl poweroff"), { description = "Power off" })
-- hl.bind("SUPER + L", hl.dsp.window.resize("right"), { repeating = true, description = "Window: Resize right" })
-- hl.bind("SUPER + J", hl.dsp.window.resize("down"), { repeating = true, description = "Window: Resize down" })
-- hl.bind("SUPER + K", hl.dsp.window.resize("up"), { repeating = true, description = "Window: Resize up" })
-- # Change Workspace Mode
--
-- bind = SUPER SHIFT, X, workspaceopt, allfloat
-- bind = SUPER SHIFT, X, exec, $notifycmd "Toggled All Float Mode"
-- bind = SUPER SHIFT, Z, workspaceopt, allpseudo
-- bind = SUPER SHIFT, Z, exec, $notifycmd "Toggled All Pseudo Mode"
hl.on("keybinds.submap", function(name)
if name == "" then
hl.notification.create({ text = "Exited submap", duration = 2000, icon = "hint" })
return
end
hl.notification.create({ text = "Entered submap: " .. name, duration = 2000, icon = "hint" })
end)
function window_resize_percentage(px, py)
local win = hl.get_active_window()
if win == nil or win.monitor == nil then
return
end
local mon = hl.get_monitor(win.monitor)
if mon == nil or mon.size == nil or mon.size.height == nil or mon.size.width == nil then
return
end
local sx = math.floor(mon.size.width * px)
local sy = math.floor(mon.size.height * py)
if not win.floating then
hl.dispatch(hl.dsp.window.float({ action = "set" }))
end
if win.fullscreen then
hl.dispatch(hl.dsp.window.fullscreen({ action = "unset" }))
end
hl.dispatch(hl.dsp.window.resize({ x = sx, y = sy, relative = false }))
end
hl.bind(LEADER .. "F10", hl.dsp.submap("notification menu"))
hl.define_submap("notification menu", function()
hl.bind("Q", hl.dsp.exit())
hl.bind("S", function()
hl.dispatch(hl.dsp.exec_cmd("makoctl -a do-not-disturb"))
hl.dispatch(hl.dsp.submap("reset"))
end)
hl.bind("N", function()
hl.dispatch(hl.dsp.exec_cmd("makoctl -r do-not-disturb"))
hl.dispatch(hl.dsp.submap("reset"))
end)
hl.bind("M", function()
hl.dispatch(hl.dsp.exec_cmd("hyprland-toggle-monitor eDP-1"))
hl.dispatch(hl.dsp.submap("reset"))
end)
hl.bind("escape", hl.dsp.submap("reset"))
hl.bind("catchall", hl.dsp.submap("reset"))
end)
hl.bind(HYPR .. "Z", hl.dsp.submap("passthru"))
hl.define_submap("passthru", function()
hl.bind("escape", hl.dsp.submap("reset"))
end)
hl.bind(LEADER .. "F9", hl.dsp.submap("resize"))
hl.define_submap("resize", function()
hl.bind("period", hl.dsp.window.resize({ x = 10, y = 10, relative = true }), { repeating = true })
hl.bind("comma", hl.dsp.window.resize({ x = -10, y = -10, relative = true }), { repeating = true })
hl.bind("R", function()
window_resize_percentage(0.5, 0.5)
end, { description = "Resize: Reset" })
hl.bind("S", function()
window_resize_percentage(0.25, 0.25)
end, { description = "Resize: Small" })
hl.bind("D", function()
window_resize_percentage(0.7, 0.96)
hl.dispatch(hl.dsp.window.center())
end, { description = "Resize: Large" })
hl.bind("C", hl.dsp.window.center(), { description = "Resize: Center" })
hl.bind("P", hl.dsp.window.pin(), { description = "Resize: Pin" })
hl.bind("up", hl.dsp.window.move({ direction = "up" }), { description = "Resize: Move up" })
hl.bind("down", hl.dsp.window.move({ direction = "down" }), { description = "Resize: Move down" })
hl.bind("left", hl.dsp.window.move({ direction = "left" }), { description = "Resize: Move left" })
hl.bind("right", hl.dsp.window.move({ direction = "right" }), { description = "Resize: Move right" })
hl.bind("escape", hl.dsp.submap("reset"), { desceription = "Resize: Exit" })
hl.bind("catchall", hl.dsp.submap("reset"), { description = "Resize: Exit" })
end)
hl.bind(LEADER .. "tab", hl.dsp.focus({ monitor = "+1" }), { description = "Monitor: move focus to next monitor" })
hl.bind(LEADER .. "SHIFT + comma", hl.dsp.window.move({ workspace = "-1" }),
{ description = "Window: Move to previous workspace" })
hl.bind(LEADER .. "SHIFT + period", hl.dsp.window.move({ workspace = "+1" }),
{ description = "Window: Move to next workspace" })
hl.bind(LEADER .. "CONTROL + comma", hl.dsp.workspace.move({ monitor = "-1" }),
{ description = "Window: Move to previous workspace and follow" })
hl.bind(LEADER .. "CONTROL + period", hl.dsp.workspace.move({ monitor = "+1" }),
{ description = "Window: Move to next workspace and follow" })
local workspaceGroupSize = 10
local numberkey = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
function workspace_in_group(i)
local curr = hl.get_active_workspace().id
local newVal = math.floor((curr - 1) / workspaceGroupSize) * workspaceGroupSize + i
return newVal
end
for i = 1, 10 do
hl.bind(LEADER .. "CONTROL + code:" .. numberkey[i], function()
hl.dispatch(hl.dsp.workspace.move({ monitor = "+1", workspace = workspace_in_group(i), follow = true }))
end)
end
for i = 1, 10 do
hl.bind(LEADER .. "SHIFT + code:" .. numberkey[i], function()
hl.dispatch(hl.dsp.window.move({ workspace = workspace_in_group(i), follow = true }))
end)
end
for i = 1, 10 do
hl.bind(LEADER .. "code:" .. numberkey[i], function()
hl.dispatch(hl.dsp.focus({ workspace = workspace_in_group(i), on_current_monitor = true }))
end, { description = "Workspace: Focus " .. i })
end
-- Scroll through existing workspaces with mainMod + scroll
hl.bind(LEADER .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
hl.bind(LEADER .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
-- Move/resize windows with mainMod + LMB/RMB and dragging
hl.bind(LEADER .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind(LEADER .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
hl.bind("mouse:275", hl.dsp.exec_cmd("wl-copy $(wl-paste -p)"), { mouse = true })
hl.bind("mouse:276", hl.dsp.exec_cmd("wtype -M ctrl -M shift v -m ctrl -m shift"), { mouse = true })
-- hl.gesture({ fingers = 3, direction = "horizontal", action = "workspace" })
-- hl.gesture({ fingers = 3, direction = "down", mods = "ALT", action = "close" })
-- hl.gesture({ fingers = 3, direction = "up", mods = "SUPER", scale = 1.5, action = "fullscreen" })
-- hl.gesture({ fingers = 3, direction = "left", scale = 1.5, action = "float" })
--
-- hl.gesture({ fingers = 2, direction = "pinch", action = "cursorZoom", zoom_level = 2 })
-- hl.gesture({ fingers = 2, direction = "pinch", action = "cursorZoom", zoom_level = 1.2, mode = "mult" })
-- hl.gesture({ fingers = 2, direction = "pinch", action = "cursorZoom", zoom_level = 1, mode = "live" })
hl.workspace_rule({ workspace = "special:special", border_size = 3 })
hl.window_rule({ match = { class = "(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float|org.pulseaudio.pavucontrol)" }, tag =
"+floating-window" })
hl.window_rule({
name = "ostt floating windows",
match = { class = "ostt-popup" },
tag = "+floating-window"
})
hl.window_rule({
match = {
class = "(xdg-desktop-portal-gtk|sublime_text|DesktopEditors)",
title = "^(Open.*Files?|Save.*Files?|Save.*As|All Files|Save)"
},
tag = "+floating-window"
})
hl.window_rule({
match= {class="code"},
fullscreen_state=1,
})
hl.window_rule({
-- Fix some dragging issues with XWayland
name = "fix-xwayland-drags",
match = {
class = "^$",
title = "^$",
xwayland = true,
float = true,
fullscreen = false,
pin = false,
},
no_focus = true,
})
hl.window_rule({ match = { tag = "floating-window" }, float = true, center = true, size = { "monitor_w/2", "monitor_h/2" } })
hl.window_rule({ match = { class = "(rofi|wofi)" }, tag = "+user-menu" })
hl.window_rule({ match = { class = "^(pinentry-)" }, tag = "+user-menu" })
hl.window_rule({ match = { class = "^(gcr-prompter)$" }, tag = "+user-menu" })
hl.window_rule({ match = { tag = "user-menu" }, stay_focused = true, no_anim = true, float = true, center = true, size = { "monitor_w/3", "monitor_h/3" } })
hl.window_rule({
name = "Picture in Picture windows",
match = { title = "^.*[Pp]icture[ -][Ii]n[ -][Pp]icture.*$" },
float = true,
pin = true,
rounding = 7,
opacity = "1 1",
move = { "monitor_w-window_w-10", "monitor_h-window_h-10" },
size = { "monitor_w/4", "monitor_h/4" },
})
-- Cursor size
hl.env("XCURSOR_SIZE", "24")
hl.env("HYPRCURSOR_SIZE", "24")
-- Force all apps to use Wayland
hl.env("GDK_BACKEND", "wayland,x11,*")
hl.env("QT_QPA_PLATFORM", "wayland;xcb")
hl.env("QT_STYLE_OVERRIDE", "kvantum")
hl.env("SDL_VIDEODRIVER", "wayland")
hl.env("MOZ_ENABLE_WAYLAND", "1")
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "wayland")
hl.env("OZONE_PLATFORM", "wayland")
hl.env("XDG_SESSION_TYPE", "wayland")
-- Allow better support for screen sharing (Google Meet"," Discord, etc)
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
hl.env("XDG_SESSION_DESKTOP", "Hyprland")
-- Use XCompose file
hl.env("XCOMPOSEFILE", "~/.XCompose")
-- Make Chromium use XCompose and all Wayland
hl.env("CHROMIUM_FLAGS", "--enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4")
-- Make .desktop files available for wofi
hl.env("XDG_DATA_DIRS", "/usr/share:/usr/local/share:~/.local/share")
-- TODO: add theme link
require("theme")
hl.on("hyprland.start", function()
hl.exec_cmd("hyprctl setcursor Pop 24")
end)
+45 -4
View File
@@ -2,16 +2,22 @@
experimental = true experimental = true
env_shell_expand = true env_shell_expand = true
[env]
RUSTUP_HOME = "{{env.HOME}}/.rustup"
[tools] [tools]
age = "latest" age = "latest"
bun = "latest" bun = "latest"
codex = "latest" codex = "latest"
copilot-cli = "latest" copilot-cli = "latest"
dua = "latest"
"github:Gitlawb/zero" = "latest" "github:Gitlawb/zero" = "latest"
"github:ZinoKader/portal" = "latest" "github:ZinoKader/portal" = "latest"
"github:danielmiessler/fabric" = "latest" "github:danielmiessler/fabric" = "latest"
"github:mrusme/reader" = "latest" "github:mrusme/reader" = "latest"
"github:raine/workmux" = "latest"
"github:rimio-ai/rimz" = "latest" "github:rimio-ai/rimz" = "latest"
"github:sandboxec/sandboxec" = "latest"
"github:ulyssa/iamb" = "latest" "github:ulyssa/iamb" = "latest"
"github:zed-industries/codex-acp" = "latest" "github:zed-industries/codex-acp" = "latest"
herdr = "latest" herdr = "latest"
@@ -21,6 +27,18 @@ herdr = "latest"
opencode = "latest" opencode = "latest"
pi = "latest" pi = "latest"
worktrunk = "latest" worktrunk = "latest"
"http:tea" = {
version = "0.15.1",
url = 'https://gitea.com/gitea/tea/releases/download/v{{ version }}/tea-{{ version }}-{{ os(macos="darwin", linux="linux") }}-{{ arch(x64="amd64", arm64="arm64") }}',
bin = "tea",
format = "raw"
}
uv = "latest"
tmux = "latest"
node = "latest"
go = "latest"
croc = "latest"
# url = 'https://releases.hashicorp.com/sentinel/{{version}}/sentinel_{{version}}_{{os(macos="darwin")}}_{{arch(x64="amd64")}}.zip'
[tasks.setup_pi] [tasks.setup_pi]
run = [ run = [
@@ -28,10 +46,24 @@ run = [
'pi install npm:pi-native-search', 'pi install npm:pi-native-search',
'pi install npm:pi-subagents', 'pi install npm:pi-subagents',
'pi install npm:context-mode', 'pi install npm:context-mode',
'pi install npm:@ff-labs/pi-fff',
'pi install npm:@dietrichgebert/ponytail',
'pi install npm:@gotgenes/pi-permission-system', 'pi install npm:@gotgenes/pi-permission-system',
'test -x /usr/bin/pass && /usr/bin/pass show config/pi/auth.json > ~/.pi/agent/auth.json' 'pi install npm:@plannotator/pi-extension',
'pi install npm:pi-hermes-memory',
'pi install npm:pi-msg-queue',
] ]
[tasks.setup_fish]
run = '''
if [[ -x /usr/bin/fish ]]; then
if [[ "$(getent passwd "$USER" | cut -d: -f7)" != /usr/bin/fish ]]; then
chsh -s /usr/bin/fish
fi
fish -c "fisher install franciscolourenco/done"
fi
'''
[tasks.setup_nvim] [tasks.setup_nvim]
run = [ run = [
'uv tool install vectorcode' 'uv tool install vectorcode'
@@ -39,15 +71,24 @@ run = [
[tasks.skills] [tasks.skills]
run = [ run = [
'npx skills add SjB/skills', "test -d ~/.local/share/skills || git clone https://github.com/SjB/skills.git ~/.local/share/skills",
'npx skills add mattpocock/skills' "git -C ~/.local/share/skills pull -q --rebase || true",
"test -L ~/.agents/skills || ln -snf ~/.local/share/skills/skills ~/.agents/skills"
] ]
[tasks.herdr_setup] [tasks.setup_herdr]
run = [ run = [
'herdr plugin install devashish2203/herdr-worktrunk --yes', 'herdr plugin install devashish2203/herdr-worktrunk --yes',
'herdr plugin install qu8n/herdr-automatic-rename --yes', 'herdr plugin install qu8n/herdr-automatic-rename --yes',
'herdr plugin install den-tanui/herdr-zoxide --yes', 'herdr plugin install den-tanui/herdr-zoxide --yes',
'herdr plugin install plannotator/herdr-annotate --yes',
'herdr plugin install qu8n/herdr-automatic-rename --yes',
]
[tasks.setup_tmux]
run = [
'test -d ~/.config/tmux/plugins/tpm || git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm',
'tmux run-shell ~/.config/tmux/plugins/tpm/bindings/install_plugins',
] ]
[tasks.light] [tasks.light]
+1
View File
@@ -60,6 +60,7 @@ vim.opt.shiftround = true
vim.opt.shiftwidth = 4 vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4 vim.opt.softtabstop = 4
vim.opt.tabstop = 4 vim.opt.tabstop = 4
vim.opt.exrc = true
vim.opt.hidden = true vim.opt.hidden = true
vim.opt.shortmess:append({ W = true, I = true, c = true, C = true }) vim.opt.shortmess:append({ W = true, I = true, c = true, C = true })
vim.opt.spelllang = { "en" } vim.opt.spelllang = { "en" }
+9 -8
View File
@@ -21,8 +21,8 @@ conform.setup({
cpp = { "clang_format" }, cpp = { "clang_format" },
lua = { 'stylua' }, lua = { 'stylua' },
go = { "goimports", "gofmt" }, go = { "goimports", "gofmt" },
rust = { "dprint", "rustfmt", lsp_format = "fallback" }, rust = { "rustfmt", "dprint", lsp_format = "fallback" },
python = { "isort", "black", stop_after_first = true }, python = { "ruff", "dprint", stop_after_first = true },
javascript = { "dprint", "prettier", stop_after_first = true }, javascript = { "dprint", "prettier", stop_after_first = true },
markdown = { "dprint", "prettier", stop_after_first = true }, markdown = { "dprint", "prettier", stop_after_first = true },
javascriptreact = { "dprint", "prettier", stop_after_first = true }, javascriptreact = { "dprint", "prettier", stop_after_first = true },
@@ -31,12 +31,13 @@ conform.setup({
svelte = { "dprint", "prettier", stop_after_first = true }, svelte = { "dprint", "prettier", stop_after_first = true },
html = { "dprint", "prettier", stop_after_first = true }, html = { "dprint", "prettier", stop_after_first = true },
}, },
format_on_save = {
lsp_fallback = true,
},
}) })
vim.keymap.set({ 'n', 'v' }, '<leader>bf', vim.keymap.set({ 'n', 'v' }, '<leader>bf',
function() function()
conform.format { async = true, lsp_format = 'fallback' } conform.format { async = true }
end, end,
{ desc = 'Format buffer' }) { desc = 'Format buffer' })
+5 -5
View File
@@ -1,5 +1,5 @@
vim.pack.add({ -- vim.pack.add({
{ src = 'https://github.com/mistweaverco/kulala.nvim' }, -- { src = 'https://github.com/mistweaverco/kulala.nvim' },
}) -- })
--
require('kulala').setup() -- require('kulala').setup()
+1 -1
View File
@@ -5,7 +5,7 @@ if vim.fn.isdirectory(vim.fn.expand "~" .. "/Documents/sjb-brain/") == 1 then
require("obsidian").setup({ require("obsidian").setup({
legacy_commands = false, legacy_commands = false,
picker = { picker = {
name = "snacks.pick", name = "snacks.picker",
}, },
ui = { ui = {
enable = true, enable = true,
+5 -5
View File
@@ -1,5 +1,5 @@
vim.pack.add({ vim.pack.add({
{ src = 'https://github.com/SjB/orgmode', version = 'sjb-wip' }, { src = 'https://github.com/nvim-orgmode/orgmode' },
{ src = 'https://github.com/chipsenkbeil/org-roam.nvim' }, { src = 'https://github.com/chipsenkbeil/org-roam.nvim' },
{ src = 'https://github.com/akinsho/org-bullets.nvim' }, { src = 'https://github.com/akinsho/org-bullets.nvim' },
}) })
@@ -9,8 +9,8 @@ require('orgmode').setup({
use_vim_ui = true use_vim_ui = true
} }
}, },
org_agenda_files = {'~/Documents/notes/*project*org', '~/Documents/notes/Inbox*org', '~/Documents/journals/*.org'}, org_agenda_files = {'~/Documents/GTD/*project*org', '~/Documents/GTD/Inbox*org', '~/Documents/GTD/journals/*.org'},
org_default_notes_file = "~/Documents/notes/Inbox.org", org_default_notes_file = "~/Documents/GTD/Inbox.org",
org_todo_keywords = { 'TODO(t)', 'NEXT(n)', '|', 'DONE(d)', 'DELEGATED(a)' }, org_todo_keywords = { 'TODO(t)', 'NEXT(n)', '|', 'DONE(d)', 'DELEGATED(a)' },
mappings = { mappings = {
capture = { capture = {
@@ -25,7 +25,7 @@ require('orgmode').setup({
}, },
j = { j = {
description = "Journal entry", description = "Journal entry",
target = "~/Documents/notes/journals/%<%Y-%m-%d>.org", target = "~/Documents/GTD/journals/%<%Y-%m-%d>.org",
template = "* %<%Y-%m-%d %H:%M> %?\n", template = "* %<%Y-%m-%d %H:%M> %?\n",
}, },
}, },
@@ -65,7 +65,7 @@ require('org-roam').setup({
bindings = { bindings = {
prefix = "<LocalLeader>oO", prefix = "<LocalLeader>oO",
}, },
directory = "~/Documents/notes", directory = "~/Documents/GTD",
extensions = { extensions = {
dailies = { dailies = {
directory = "journals" directory = "journals"
+6 -7
View File
@@ -1,9 +1,8 @@
vim.pack.add({ "https://github.com/alex35mil/pi.nvim" }) vim.keymap.set({ 'n' }, '<leader>mp', '<cmd>Pi<cr>', { noremap = true, silent = true, desc = "Toggle Pi Agent" })
vim.pack.add({
vim.keymap.set({'n'}, '<leader>mp', '<cmd>Pi<cr>', { noremap = true, silent = true, desc = "Toggle Pi Agent" }) "https://github.com/zgs225/pi2.nvim",
require("pi").setup({ -- Default chat-history renderer (render.engine = "render-markdown"):
cli = { "https://github.com/MeanderingProgrammer/render-markdown.nvim",
args = { "--approve" },
},
}) })
require("pi").setup()
+5
View File
@@ -0,0 +1,5 @@
{
"contextInjection": {
"enabled": false
}
}
@@ -15,7 +15,8 @@
"sudo *": "ask" "sudo *": "ask"
}, },
"external_directory": { "external_directory": {
"*": "deny", "*": "ask",
"/tmp/*": "ask",
"~/Documents/sjb-brain/*": "allow" "~/Documents/sjb-brain/*": "allow"
} }
}, },
+26 -11
View File
@@ -1,16 +1,31 @@
{ {
"providers": { "providers": {
"dupont": { "brine.sharcnet.ca": {
"baseUrl": "http://172.25.11.30/v1", "baseUrl": "https://brine.sharcnet.ca/v1",
"api": "openai-completions", "api": "openai-completions",
"models": [ "models": [
{ {
"id": "glm-4.7-flash", "id": "openai//opt/vllm/models/North-Mini-Code-1.0-fp8",
"name": "glm-4.7-flash", "name": "openai//opt/vllm/models/North-Mini-Code-1.0-fp8"
"reasoning": true, },
{
"id": "openai/models/DeepSeek-V4-Flash-0731",
"name": "openai/models/DeepSeek-V4-Flash-0731"
}
]
},
"sagacity": {
"baseUrl": "https://agent.sagacity.ca/v1",
"api": "openai-completions",
"models": [
{
"id": "Qwen3.8-27B",
"name": "Qwen3.8-27B",
"input": [ "input": [
"text" "text",
"image"
], ],
"reasoning": true,
"contextWindow": 131072, "contextWindow": 131072,
"maxTokens": 131072, "maxTokens": 131072,
"cost": { "cost": {
@@ -27,12 +42,12 @@
} }
}, },
"obelix": { "obelix": {
"baseUrl": "http://172.25.11.32/v1", "baseUrl": "https://llm.nca.uwo.ca/v1",
"api": "openai-completions", "api": "openai-completions",
"models": [ "models": [
{ {
"id": "ornith-1.0-35B", "id": "ornith-1.5-35B",
"name": "ornith-1.0-35B", "name": "ornith-1.5-35B",
"reasoning": true, "reasoning": true,
"input": [ "input": [
"text" "text"
@@ -57,8 +72,8 @@
"api": "openai-completions", "api": "openai-completions",
"models": [ "models": [
{ {
"id": "gemma-4-12B-coder", "id": "Qwythos-9B-v2",
"name": "gemma-4-12B-coder", "name": "Qwythos-9B-v2",
"reasoning": true, "reasoning": true,
"input": [ "input": [
"text" "text"
+21 -25
View File
@@ -1,8 +1,8 @@
{ {
"lastChangelogVersion": "0.81.0", "lastChangelogVersion": "1.1.0",
"theme": "light/dark", "theme": "light/dark",
"defaultProvider": "openai-codex", "defaultProvider": "openai",
"defaultModel": "gpt-5.6-luna", "defaultModel": "gpt-6-sol",
"defaultThinkingLevel": "high", "defaultThinkingLevel": "high",
"hideThinkingBlock": true, "hideThinkingBlock": true,
"compaction": { "compaction": {
@@ -17,49 +17,45 @@
"max": "max" "max": "max"
}, },
"enableInstallTelemetry": false, "enableInstallTelemetry": false,
"enabledModels": [
"opencode-go/qwen3.7-plus",
"opencode-go/deepseek-v4-pro",
"opencode-go/deepseek-v4-flash",
"opencode-go/kimi-k2.7-code",
"openai-codex/gpt-5.4",
"openai-codex/gpt-5.4-mini",
"openai-codex/gpt-5.3-codex-spark",
"obelix/ornith-1.0-35B",
"dupont/glm-4.7-flash",
"github-copilot/gpt-5-mini",
"github-copilot/mai-code-1-flash-picker"
],
"packages": [ "packages": [
"npm:pi-lens", "npm:pi-lens",
"npm:@gotgenes/pi-permission-system", "npm:@gotgenes/pi-permission-system",
"npm:pi-native-search", "npm:pi-native-search",
"npm:context-mode", "npm:context-mode",
"npm:pi-subagents" "npm:pi-subagents",
"npm:@ff-labs/pi-fff",
"npm:@narumitw/pi-plan-mode",
"npm:@dietrichgebert/ponytail",
"npm:@plannotator/pi-extension",
"npm:pi-hermes-memory",
"npm:pi-msg-queue"
], ],
"subagents": { "subagents": {
"agentOverrides": { "agentOverrides": {
"reviewer": { "reviewer": {
"model": "opencode-go/hy3", "model": "obelix/ornith-1.5-35B",
"fallbackModels": [ "openai-codex/gpt-5.6-luna" ], "thinking": "high"
"thinking": "low"
}, },
"planner": { "planner": {
"model": "opencode-go/qwen3.7-plus" "model": "openai/gpt-6-luna",
"thinking": "high"
}, },
"worker": { "worker": {
"model": "opencode-go/kimi-k2.7-code" "model": "opencode-go/claude-haiku-5-5"
}, },
"oracle": { "oracle": {
"model": "openai-codex/gpt-5.6-luna", "model": "openai/gpt-6.1-sol",
"fallbackModels": [ "opencode-go/qwen3.7-max" ],
"thinking": "high" "thinking": "high"
} }
} }
}, },
"defaultTools": [
"+codemode"
],
"quietStartup": true, "quietStartup": true,
"steeringMode": "all", "steeringMode": "all",
"terminal": { "terminal": {
"showTerminalProgress": true "showTerminalProgress": true
} },
"deviceId": "2314a9e6-0e82-49cd-8518-efc15c870eef"
} }
+43
View File
@@ -0,0 +1,43 @@
abi: 6
ignore-if-missing: true
unsafe-host-runtime: true
# Pi stores configuration, extensions, skills, and sessions under ~/.pi/agent.
# The current workspace is writable so agent edits remain confined to the repo
# from which Pi is launched. Network access is limited to model/API HTTPS.
fs:
- rwx:$HOME/.pi/agent/
- rwx:$HOME/.pi-lens/
- rwx:$HOME/.pi/context-mode/
- rw:$HOME/.pi/agent/settings.json
- rw:$HOME/.pi/agent/models.json
- r:$HOME/.pi/agent/AGENTS.md
- r:$HOME/.pi/skills/
- r:$HOME/.agents/skills/
- r:$HOME/.pi/agent/extensions/pi-permission-system/config.json
- rx:$HOME/.local/share/mise/installs/npm-earendil-works-pi-coding-agent/
- rw:$PWD
- rw:/tmp
- r:/dev/random
- r:/dev/urandom
- r:/etc/hosts
- r:/etc/ld.so.cache
- r:/etc/localtime
- r:/etc/nsswitch.conf
- r:/etc/resolv.conf
- r:/etc/ssl/certs
- r:/etc/ssl/certs/ca-certificates.crt
- r:/etc/ssl/openssl.cnf
- r:/home/linuxbrew/.linuxbrew/etc/openssl@3/openssl.cnf
- r:/proc/
- r:/proc/meminfo
- r:/proc/self/cgroup
- r:/proc/self/groups
- r:/proc/self/maps
- r:/proc/stat
- r:/sys/devices/system/cpu/online
- r:/usr/lib/locale/locale-archive
- r:/usr/lib/ssl/openssl.cnf
- r:/usr/share/locale/locale.alias
- rw:/dev/null
net:
- c:443
+12
View File
@@ -0,0 +1,12 @@
Host alcazar-tmux
User tintin
Hostname 172.25.11.135
ForwardAgent yes
RequestTTY yes
RemoteCommand tmux -l new -A
Host alcazar
User tintin
Hostname 172.25.11.135
ForwardAgent yes
RequestTTY yes
+16
View File
@@ -0,0 +1,16 @@
Host bianca-tmux
User sjb
Hostname 172.25.11.33
ForwardAgent yes
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
RequestTTY yes
RemoteCommand tmux -l new -A
Host bianca
User sjb
Hostname 172.25.11.33
ForwardAgent yes
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
RequestTTY yes
+5
View File
@@ -0,0 +1,5 @@
Host caraco
User sjb
Hostname 172.25.11.136
ForwardAgent yes
RequestTTY yes
-1
View File
@@ -1 +0,0 @@
SetEnv TERM=xterm-256color
+8
View File
@@ -0,0 +1,8 @@
Host dupont
HostName 172.25.11.30
user sjb
ForwardAgent yes
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
RequestTTY yes
+16
View File
@@ -0,0 +1,16 @@
Host haddock-tmux
User sjb
Hostname 129.100.33.96
ForwardAgent yes
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
RequestTTY yes
RemoteCommand tmux -l new -A
Host haddock
User sjb
Hostname 129.100.33.96
ForwardAgent yes
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
RequestTTY yes
+5
View File
@@ -0,0 +1,5 @@
Host milou
User tintin
Hostname 172.25.11.133
ForwardAgent yes
RequestTTY yes
+6
View File
@@ -0,0 +1,6 @@
Host nca-ai-01
HostName 192.168.33.74
User steve
ForwardAgent yes
RequestTTY yes
+19
View File
@@ -0,0 +1,19 @@
#homeip Hostname 172.25.11.32
Host obelix-tmux
User sjb
Hostname 192.168.33.75
ForwardAgent yes
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
RequestTTY yes
RemoteCommand tmux -l new -A
Host obelix
User sjb
Hostname 192.168.33.75
ForwardAgent yes
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
RequestTTY yes
+7
View File
@@ -0,0 +1,7 @@
Host pioneer
User sjb
Hostname 172.25.11.31
ForwardAgent yes
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
RequestTTY yes
+7
View File
@@ -0,0 +1,7 @@
Host rascar
User sjb
Hostname 172.25.11.131
ForwardAgent yes
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
RequestTTY yes
+8
View File
@@ -0,0 +1,8 @@
Host risc-v
User sjb
Hostname 172.25.11.31
ForwardAgent yes
RemoteForward /run/user/1001/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
RequestTTY yes
+8
View File
@@ -0,0 +1,8 @@
Host steve-dev
HostName 10.40.39.136
User steve
ProxyJump obelix
ForwardAgent yes
RequestTTY yes
@@ -0,0 +1 @@
../tmux-main.service
+15
View File
@@ -0,0 +1,15 @@
[Unit]
Description=Ensure tmux session "main" is running
After=graphical-session.target
PartOf=graphical-session.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=%h/.local/share/dotfiles/script/tmux-start.sh
# If the session check fails (no server / lost session), retry until login ends.
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
+17 -28
View File
@@ -1,45 +1,33 @@
# set-option -g default-terminal 'screen-256color' # set-option -g default-terminal 'screen-256color'
# set-option -g terminal-overrides ',xterm-256color:RGB' # set-option -g terminal-overrides ',xterm-256color:RGB'
# set -g default-terminal "tmux-256color" set -g default-terminal "tmux-256color"
set -as terminal-feature ",foot*:RGB" set -ag terminal-overrides ",*:RGB"
set -as terminal-features ",*:clipboard"
set -ag terminal-features "xterm-kitty:extkeys"
# screen mode # set -ag terminal-overrides ",*:Tc"
# set -g default-terminal "${TERM}"
# set -g default-terminal "tmux-256color"
# set -ag terminal-overrides ",xterm-256color:RGB"
# colors
# set -ag terminal-overrides ",xterm*:Tc"
# undercurl support
# set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
# underscore colours - needs tmux-3.0
# set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
# allow terminal scrolling # allow terminal scrolling
#set -g terminal-overrides 'xterm*:smcup@:rmcup@' # set -g terminal-overrides 'xterm*:smcup@:rmcup@'
# Force tmux to use the static symlink path globally
setenv -g SSH_AUTH_SOCK "$HOME/.ssh/ssh_auth_sock" setenv -g SSH_AUTH_SOCK "$HOME/.ssh/ssh_auth_sock"
set -g update-environment "DISPLAY XAUTHORITY" set -g update-environment "DISPLAY XAUTHORITY"
# default shell set -g mouse on
set -g default-shell "/usr/bin/fish"
# auto rename windows
# set -g automatic-rename on # set -g automatic-rename on
# set -g automatic-rename-format '#{pane_current_command} #{b:pane_current_path}' # set -g automatic-rename-format '#{pane_current_command} #{b:pane_current_path}'
set -g allow-rename on set -g allow-rename on
# start with window 1 (instead of 0)
set -g base-index 1 set -g base-index 1
# start with pane 1
setw -g pane-base-index 1 setw -g pane-base-index 1
# history
set -g history-limit 5000 set -g history-limit 5000
# loud or quiet? set -g display-time 4000
set -g status-interval 5
set -g visual-activity off set -g visual-activity off
set -g visual-bell off set -g visual-bell off
set -g visual-silence off set -g visual-silence off
@@ -47,21 +35,20 @@ set -g monitor-activity on
set -g bell-action none set -g bell-action none
set -g allow-passthrough on set -g allow-passthrough on
#set -g bell-on-alert on set -s escape-time 0
set -s escape-time 1
setw -g aggressive-resize on setw -g aggressive-resize on
set -g status-keys vi set -g status-keys vi
set-window-option -g mode-keys vi set-window-option -g mode-keys vi
set -g extended-keys on set -g extended-keys on
set -g extended-keys-format csi-u set -g extended-keys-format csi-u
set-option -g focus-events on # TODO: learn how this works set-option -g focus-events on
set-option -g set-titles on set-option -g set-titles on
set-option -g detach-on-destroy off set-option -g detach-on-destroy off
set-option -g renumber-windows on set-option -g renumber-windows on
set-option -g set-clipboard on set-option -g set-clipboard on
set-option -g set-titles-string "#S:#{pane_title}" set-option -g set-titles-string "#S:#{pane_title}"
set -sg escape-time 10
unbind C-Space unbind C-Space
set -g prefix C-Space set -g prefix C-Space
@@ -82,6 +69,8 @@ bind e run "tmux split -h /usr/bin/nvim"
#bind o display-popup -w 80% -h 80% -E /usr/bin/opencode #bind o display-popup -w 80% -h 80% -E /usr/bin/opencode
#bind g display-popup -w 80% -h 80% -E /usr/bin/lazygit #bind g display-popup -w 80% -h 80% -E /usr/bin/lazygit
bind a display-popup -w 80% -h 80% -E "workmux dashboard"
# split windows like vim # split windows like vim
# vim's definition of a horizontal/vertical split is reversed from tmux's # vim's definition of a horizontal/vertical split is reversed from tmux's
bind v split-window -h -c "#{pane_current_path}" bind v split-window -h -c "#{pane_current_path}"
@@ -102,7 +91,7 @@ bind B command-prompt -p "New Session:" "new-session -A -s '%%'"
bind Tab switch-client -l bind Tab switch-client -l
bind R command-prompt -p "Rename Window:" "rename-window '%%'" bind R command-prompt -p "Rename Window:" "rename-window '%%'"
bind t run-shell -b "~/.local/bin/t" bind o run-shell -b "~/.local/bin/t"
bind Enter run-shell -b "~/.local/bin/s" bind Enter run-shell -b "~/.local/bin/s"
bind Q confirm kill-session bind Q confirm kill-session
@@ -165,7 +154,7 @@ set -g @plugin 'sainnhe/tmux-fzf'
# prefix + u # prefix + u
set -g @plugin 'joshmedeski/tmux-fzf-url' set -g @plugin 'joshmedeski/tmux-fzf-url'
# prefix + a # prefix + a
set -g @plugin 'vieitesss/agent-radar' # set -g @plugin 'vieitesss/agent-radar'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.config/tmux/plugins/tpm/tpm' run '~/.config/tmux/plugins/tpm/tpm'
+55
View File
@@ -0,0 +1,55 @@
nerdfont: true
merge_strategy: rebase
merge_keep: true
agent: pi
agents:
luna-high:
type: pi
command: pi
args:
- --model
- openai-codex/gpt-6-luna
- --thinking
- high
luna-max:
type: pi
command: pi
args:
- --model
- openai-codex/gpt-6-luna
- --thinking
- max
obelix:
type: pi
command: pi
args:
- --model
- obelix/ornith-1.0-35B
fast:
type: pi
command: pi
args:
- --model
- opencode-go/qwen3.8-flash
ds-fast:
type: pi
command: pi
args:
- --model
- opencode-go/deepseek-v4-flash
free:
type: pi
command: pi
args:
- --model
- opencode/mimo-v2.6-flash-free
layouts:
dev:
panes:
- name: "Main"
commands: <agent>
- name: "Editor"
focus: true
commands: "nvim"
-47
View File
@@ -1,47 +0,0 @@
[colors.primary]
background = "{{ background }}"
foreground = "{{ foreground }}"
[colors.cursor]
text = "{{ background }}"
cursor = "{{ cursor }}"
[colors.vi_mode_cursor]
text = "{{ background }}"
cursor = "{{ cursor }}"
[colors.search.matches]
foreground = "{{ background }}"
background = "{{ color3 }}"
[colors.search.focused_match]
foreground = "{{ background }}"
background = "{{ color1 }}"
[colors.footer_bar]
foreground = "{{ background }}"
background = "{{ foreground }}"
[colors.selection]
text = "{{ selection_foreground }}"
background = "{{ selection_background }}"
[colors.normal]
black = "{{ color0 }}"
red = "{{ color1 }}"
green = "{{ color2 }}"
yellow = "{{ color3 }}"
blue = "{{ color4 }}"
magenta = "{{ color5 }}"
cyan = "{{ color6 }}"
white = "{{ color7 }}"
[colors.bright]
black = "{{ color8 }}"
red = "{{ color9 }}"
green = "{{ color10 }}"
yellow = "{{ color11 }}"
blue = "{{ color12 }}"
magenta = "{{ color13 }}"
cyan = "{{ color14 }}"
white = "{{ color15 }}"
-83
View File
@@ -1,83 +0,0 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="{{ background }}"
# Main text color
theme[main_fg]="{{ foreground }}"
# Title color for boxes
theme[title]="{{ foreground }}"
# Highlight color for keyboard shortcuts
theme[hi_fg]="{{ accent }}"
# Background color of selected item in processes box
theme[selected_bg]="{{ color8 }}"
# Foreground color of selected item in processes box
theme[selected_fg]="{{ accent }}"
# Color of inactive/disabled text
theme[inactive_fg]="{{ color8 }}"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="{{ foreground }}"
# Background color of the percentage meters
theme[meter_bg]="{{ color8 }}"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="{{ foreground }}"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="{{ color5 }}"
theme[mem_box]="{{ color2 }}"
theme[net_box]="{{ color1 }}"
theme[proc_box]="{{ accent }}"
# Box divider line and small boxes line color
theme[div_line]="{{ color8 }}"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="{{ color2 }}"
theme[temp_mid]="{{ color3 }}"
theme[temp_end]="{{ color1 }}"
# CPU graph colors (Teal -> Lavender)
theme[cpu_start]="{{ color6 }}"
theme[cpu_mid]="{{ color4 }}"
theme[cpu_end]="{{ color5 }}"
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
theme[free_start]="{{ color5 }}"
theme[free_mid]="{{ color4 }}"
theme[free_end]="{{ color6 }}"
# Mem/Disk cached meter (Sapphire -> Lavender)
theme[cached_start]="{{ color4 }}"
theme[cached_mid]="{{ color6 }}"
theme[cached_end]="{{ color5 }}"
# Mem/Disk available meter (Peach -> Red)
theme[available_start]="{{ color3 }}"
theme[available_mid]="{{ color1 }}"
theme[available_end]="{{ color1 }}"
# Mem/Disk used meter (Green -> Sky)
theme[used_start]="{{ color2 }}"
theme[used_mid]="{{ color6 }}"
theme[used_end]="{{ color4 }}"
# Download graph colors (Peach -> Red)
theme[download_start]="{{ color3 }}"
theme[download_mid]="{{ color1 }}"
theme[download_end]="{{ color1 }}"
# Upload graph colors (Green -> Sky)
theme[upload_start]="{{ color2 }}"
theme[upload_mid]="{{ color6 }}"
theme[upload_end]="{{ color4 }}"
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
theme[process_start]="{{ color6 }}"
theme[process_mid]="{{ color4 }}"
theme[process_end]="{{ color5 }}"
-25
View File
@@ -1,25 +0,0 @@
[colors-dark]
foreground={{ foreground_strip }}
background={{ background_strip }}
selection-foreground={{ selection_foreground_strip }}
selection-background={{ selection_background_strip }}
cursor={{ background_strip }} {{ cursor_strip }}
regular0={{ color0_strip }}
regular1={{ color1_strip }}
regular2={{ color2_strip }}
regular3={{ color3_strip }}
regular4={{ color4_strip }}
regular5={{ color5_strip }}
regular6={{ color6_strip }}
regular7={{ color7_strip }}
bright0={{ color8_strip }}
bright1={{ color9_strip }}
bright2={{ color10_strip }}
bright3={{ color11_strip }}
bright4={{ color12_strip }}
bright5={{ color13_strip }}
bright6={{ color14_strip }}
bright7={{ color15_strip }}
-22
View File
@@ -1,22 +0,0 @@
background = {{ background }}
foreground = {{ foreground }}
cursor-color = {{ cursor }}
selection-background = {{ selection_background }}
selection-foreground = {{ selection_foreground }}
palette = 0={{ color0 }}
palette = 1={{ color1 }}
palette = 2={{ color2 }}
palette = 3={{ color3 }}
palette = 4={{ color4 }}
palette = 5={{ color5 }}
palette = 6={{ color6 }}
palette = 7={{ color7 }}
palette = 8={{ color8 }}
palette = 9={{ color9 }}
palette = 10={{ color10 }}
palette = 11={{ color11 }}
palette = 12={{ color12 }}
palette = 13={{ color13 }}
palette = 14={{ color14 }}
palette = 15={{ color15 }}
-9
View File
@@ -1,9 +0,0 @@
$activeBorderColor = rgb({{ accent_strip }})
general {
col.active_border = $activeBorderColor
}
group {
col.border_active = $activeBorderColor
}
-14
View File
@@ -1,14 +0,0 @@
hl.config({
general = {
col = {
active_border = { colors = {"rgb({{ accent_strip }})", "rgb({{ color1_strip }})" }, angle = 45 },
inactive_border = { colors = {"rgb({{ color2_strip }})", "rgb({{ color2_strip }})" }, angle = 45 }
}
},
group = {
col = {
border_active = { colors = {"rgb({{ accent_strip }})", "rgb({{ color1_strip }})" }, angle = 45 },
border_inactive = { colors = {"rgb({{ color2_strip }})", "rgb({{ color2_strip }})" }, angle = 45 }
}
}
})
-27
View File
@@ -1,27 +0,0 @@
foreground {{ foreground }}
background {{ background }}
selection_foreground {{ selection_foreground }}
selection_background {{ selection_background }}
cursor {{ cursor }}
cursor_text_color {{ background }}
active_border_color {{ accent }}
active_tab_background {{ accent }}
color0 {{ color0 }}
color1 {{ color1 }}
color2 {{ color2 }}
color3 {{ color3 }}
color4 {{ color4 }}
color5 {{ color5 }}
color6 {{ color6 }}
color7 {{ color7 }}
color8 {{ color8 }}
color9 {{ color9 }}
color10 {{ color10 }}
color11 {{ color11 }}
color12 {{ color12 }}
color13 {{ color13 }}
color14 {{ color14 }}
color15 {{ color15 }}
+41
View File
@@ -0,0 +1,41 @@
vim.pack.add({{ src = "https://github.com/bjarneo/aether.nvim", branch = "v3" }})
require('aether').setup({
colors = {
bg = "{{ background }}",
dark_bg = "{{ dark_background }}",
darker_bg = "{{ darker_background }}",
lighter_bg = "{{ lighter_background }}",
fg = "{{ foreground }}",
dark_fg = "{{ dark_foreground }}",
light_fg = "{{ light_foreground }}",
bright_fg = "{{ bright_foreground }}",
muted = "{{ muted }}",
red = "{{ red }}",
yellow = "{{ yellow }}",
orange = "{{ orange }}",
green = "{{ green }}",
cyan = "{{ cyan }}",
blue = "{{ blue }}",
magenta = "{{ magenta }}",
brown = "{{ brown }}",
bright_red = "{{ bright_red }}",
bright_yellow = "{{ bright_yellow }}",
bright_green = "{{ bright_green }}",
bright_cyan = "{{ bright_cyan }}",
bright_blue = "{{ bright_blue }}",
bright_magenta = "{{ bright_magenta }}",
accent = "{{ accent }}",
cursor = "{{ bright_foreground }}",
foreground = "{{ foreground }}",
background = "{{ background }}",
selection = "{{ selection }}",
selection_foreground = "{{ selection_foreground }}",
selection_background = "{{ selection_background }}",
},
})
vim.cmd('colorscheme aether')
-56
View File
@@ -1,56 +0,0 @@
[colors]
# Regular colors
background = '{{ background }}'
black = '{{ color0 }}'
blue = '{{ color4 }}'
cyan = '{{ color6 }}'
foreground = '{{ foreground }}'
green = '{{ color2 }}'
magenta = '{{ color5 }}'
red = '{{ color1 }}'
white = '{{ color15 }}'
yellow = '{{ color11 }}'
# Cursor
cursor = '{{ cursor }}'
vi-cursor = '{{ accent }}'
# Navigation
# tabs and tabs-active set the inactive/active tab title colors.
# Tab island backgrounds are derived from the window background color.
tabs = '{{ color8 }}'
tabs-active = '{{ color15 }}'
split = '{{ color8 }}'
split-active = '{{ color15 }}'
# Search
search-match-background = '{{ color12 }}'
search-match-foreground = '{{ color15 }}'
search-focused-match-background = '{{ color3 }}'
search-focused-match-foreground = '{{ color15 }}'
# Selection
selection-foreground = '{{ selection_foreground }}'
selection-background = '{{ selection_background }}'
# Dim colors
dim-black = '{{ color0 }}'
dim-blue = '{{ color4 }}'
dim-cyan = '{{ color6 }}'
dim-foreground = '{{ foreground }}'
dim-green = '{{ color2 }}'
dim-magenta = '{{ color5 }}'
dim-red = '{{ color1 }}'
dim-white = '{{ color15 }}'
dim-yellow = '{{ color11 }}'
# Light colors
light-black = '{{ color8 }}'
light-blue = '{{ color12 }}'
light-cyan = '{{ color14 }}'
light-foreground = '{{ foreground }}'
light-green = '{{ color10 }}'
light-magenta = '{{ color13 }}'
light-red = '{{ color9 }}'
light-white = '{{ color15 }}'
light-yellow = '{{ color11 }}'
+7 -7
View File
@@ -1,20 +1,20 @@
* { * {
background: {{ background }}; background: {{ background }};
foreground: {{ foreground }}; foreground: {{ foreground }};
active-background: {{ color2 }}; active-background: {{ lighter_background }};
urgent-background: {{ color1 }}; urgent-background: {{ accent }};
normal-foreground: {{ color3 }}; normal-foreground: {{ dark_foreground }};
normal-background: {{ background }}; normal-background: {{ dark_background }};
selected-foreground: {{ selection_foreground }}; selected-foreground: {{ selection_foreground }};
selected-background: {{ selection_background }}; selected-background: {{ selection_background }};
seperator-color: {{ background }}; seperator-color: {{ background }};
border-color: {{ color0 }}; border-color: {{ accent }};
prompt-color: {{ color4 }}; prompt-color: {{ light_foreground }};
prompt-background-color: {{ color0 }}; prompt-background-color: {{ darker_background }};
window-border-size: 1px; window-border-size: 1px;
window-border-radius: 8px; window-border-radius: 8px;
+10
View File
@@ -0,0 +1,10 @@
name = "omarchy"
background = "{{ background }}"
surface = "{{ darker_background }}"
text = "{{ foreground }}"
accent = "{{ accent }}"
danger = "{{ red }}"
muted = "{{ muted }}"
highlight = "{{ selection }}"
border = "{{ light_foreground }}"
dim_text = "{{ dark_foreground }}"
+10 -10
View File
@@ -1,25 +1,25 @@
color_bg0="{{ background }}" color_bg0="{{ background }}"
color_bg1="{{ color0 }}" color_bg1="{{ dark_background }}"
color_bg2="{{ color7 }}" color_bg2="{{ darker_background }}"
color_fg0="{{ foreground }}" color_fg0="{{ foreground }}"
color_fg1="{{ color3 }}" color_fg1="{{ light_foreground }}"
color_status_fg="{{ color4 }}" color_status_fg="{{ light_foreground }}"
color_status_bg="{{ color0 }}" color_status_bg="{{ muted }}"
color_selected_fg="{{ selection_foreground }}" color_selected_fg="{{ selection_foreground }}"
color_selected_bg="{{ selection_background }}" color_selected_bg="{{ selection_background }}"
color_highlight_fg="{{ color2 }}" color_highlight_fg="{{ yellow }}"
color_highlight_bg="{{ background }}" color_highlight_bg="{{ background }}"
color_current_fg="{{ color1 }}" color_current_fg="{{ orange }}"
color_current_bg="{{ background }}" color_current_bg="{{ background }}"
color_check_fg="{{ color5 }}" color_check_fg="{{ green }}"
pane_border_fg="{{ foreground }}" pane_border_fg="{{ foreground }}"
pane_border_selected_fg="{{ color2 }}" pane_border_selected_fg="{{ bright_foreground }}"
set -g @prefix_highlight_fg "${color_highlight_fg}" set -g @prefix_highlight_fg "${color_highlight_fg}"
set -g @prefix_highlight_bg "${color_highlight_bg}" set -g @prefix_highlight_bg "${color_highlight_bg}"
@@ -55,7 +55,7 @@ set -g window-status-current-format "#[fg=${color_current_fg},bg=${color_current
set -g window-status-format "#[fg=${color_highlight_fg},bg=${color_highlight_bg}]#I: #[fg=${color_fg0},bg=${color_highlight_bg}]#W " set -g window-status-format "#[fg=${color_highlight_fg},bg=${color_highlight_bg}]#I: #[fg=${color_fg0},bg=${color_highlight_bg}]#W "
# Statusline - right side # Statusline - right side
set -g status-right "#[fg=${color_fg1},bg=${color_bg0},nobold,nounderscore,noitalics]%Y-%m-%d %H:%M #[fg=${color_fg0},bg=${color_highlight_fg},nobold,nounderscore,noitalics] #[fg=${color_fg0},bg=${color_bg1}] #(echo '#{pane_current_path}' | rev | cut -d'/' -f-2 | rev) #[fg=${color_fg0},bg=${color_current_fg},nobold,nounderscore,noitalics] #[fg=${color_fg0},bg=${color_bg1}] #S " set -g status-right "#[fg=${color_fg1},bg=${color_bg0},nobold,nounderscore,noitalics]%Y-%m-%d %H:%M #[fg=${color_fg0},bg=${color_highlight_fg}] #[fg=${color_fg0},bg=${color_bg1}] #(echo '#{pane_current_path}' | rev | cut -d'/' -f-2 | rev) #[fg=${color_fg0},bg=${color_current_fg}] #[fg=${color_fg0},bg=${color_bg1}] #S #[fg=${color_fg0},bg=${color_status_fg}] #[fg=${color_fg0},bg=${color_bg1}] #h"
# Modes # Modes
set -g clock-mode-colour "${color_status_fg}" set -g clock-mode-colour "${color_status_fg}"
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=alcazar herdr Name=alcazar herdr
Comment=remote dev Comment=remote dev
Exec=foot -a alcazar-herdr -T "alcazar herdr" ssh alcazar mise exec -- herdr --session main Exec=terminal-launcher alcazar-herdr "ssh alcazar mise exec -- herdr --session main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=alcazar tmux Name=alcazar tmux
Comment=remote dev Comment=remote dev
Exec=foot -a alcazar-tmux -T "alcazar tmux" ssh alcazar mise exec -- tmux new -A -s main Exec=terminal-launcher alcazar-tmux "ssh alcazar mise exec -- tmux new -A -s main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=bianca Herdr Name=bianca Herdr
Comment=remote dev Comment=remote dev
Exec=foot -a bianca-herdr -T "bianca herdr" ssh bianca mise exec -- herdr --session main Exec=terminal-launcher bianca-herdr "ssh bianca mise exec -- herdr --session main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=bianca tmux Name=bianca tmux
Comment=remote dev Comment=remote dev
Exec=foot -a bianca-tmux -T "bianca tmux" ssh bianca mise exec -- tmux new -A -s main Exec=terminal-launcher bianca-tmux "ssh bianca mise exec -- tmux new -A -s main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=caraco Herdr
Comment=remote dev
Exec=terminal-launcher caraco-herdr "ssh caraco mise exec -- herdr --session main"
Terminal=false
Type=Application
Icon=foot
StartupNotify=true
+9
View File
@@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=caraco tmux
Comment=remote dev
Exec=terminal-launcher caraco-tmux "ssh caraco mise exec -- tmux new -A -s main"
Terminal=false
Type=Application
Icon=foot
StartupNotify=true
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=dupont herdr Name=dupont herdr
Comment=remote dev Comment=remote dev
Exec=foot -a dupont-herdr -T "dupont herdr" ssh dupont mise exec -- herdr --session main Exec=terminal-launcher dupont-herdr "ssh dupont mise exec -- herdr --session main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=dupont tmux Name=dupont tmux
Comment=remote dev Comment=remote dev
Exec=foot -a dupont-tmux -T "dupont tmux" ssh dupont mise exec -- tmux new -A -s main Exec=terminal-launcher dupont-tmux "ssh dupont mise exec -- tmux new -A -s main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=Terminal herdr Name=Terminal herdr
Comment=Terminal with herdr mux Comment=Terminal with herdr mux
Exec=foot -a herdr -T "terminal herdr" mise exec -- herdr --session=main Exec=terminal-launcher terminal-herdr "mise exec -- herdr --session=main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -0,0 +1,11 @@
[Desktop Entry]
Name=Strata
Comment=A fast, keyboard-first file manager for Linux
Exec=strata %U
Icon=system-file-manager
Terminal=false
Type=Application
Categories=Utility;FileManager;
MimeType=inode/directory;
StartupNotify=true
Keywords=file;manager;files;folder;directory;
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=nca-ai-01 herdr Name=nca-ai-01 herdr
Comment=remote dev Comment=remote dev
Exec=foot -a nca-ai-01-herdr -T "nca ai 01 herdr" ssh nca-ai-01 mise exec -- herdr --session main Exec=terminal-launcher nca-ai-01-herdr "ssh nca-ai-01 mise exec -- herdr --session main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=nca-ai-01 tmux Name=nca-ai-01 tmux
Comment=remote dev Comment=remote dev
Exec=foot -a nca-ai-01-tmux -T "nca ai 01 tmux" ssh nca-ai-01 mise exec -- tmux new -A -s main Exec=terminal-launcher nca-ai-01-tmux "ssh nca-ai-01 mise exec -- tmux new -A -s main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=obelix herdr Name=obelix herdr
Comment=remote dev Comment=remote dev
Exec=foot -a obelix-herdr -T "obelix herdr" ssh obelix mise exec -- herdr --session main Exec=terminal-launcher obelix-herdr "ssh obelix mise exec -- herdr --session main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=obelix tmux Name=obelix tmux
Comment=remote dev Comment=remote dev
Exec=foot -a obelix-tmux -T "obelix tmux" ssh obelix mise exec -- tmux new -A -s main Exec=terminal-launcher obelix-tmux "ssh obelix mise exec -- tmux new -A -s main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
+9
View File
@@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=Terminal pi
Comment=Terminal with pi
Exec=terminal-launcher "terminal-pi" "mise exec -C ~/Documents/sjb-brain -- pi --fff-enable-home-scan=false --model openai-codex/gpt-5.6-luna --plan"
Terminal=false
Type=Application
Icon=foot
StartupNotify=true
@@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=rascar Herdr
Comment=remote dev
Exec=terminal-launcher rascar-herdr "ssh rascar mise exec -- herdr --session main"
Terminal=false
Type=Application
Icon=foot
StartupNotify=true
+9
View File
@@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=rascar tmux
Comment=remote dev
Exec=terminal-launcher rascar-tmux "ssh rascar mise exec -- tmux new -A -s main"
Terminal=false
Type=Application
Icon=foot
StartupNotify=true
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=steve dev herdr Name=steve dev herdr
Comment=remote dev Comment=remote dev
Exec=foot -a steve-dev-herdr -T "steve dev herdr" ssh steve-dev mise exec -- herdr --session main Exec=terminal-launcher steve-dev-herdr "ssh steve-dev mise exec -- herdr --session main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=steve dev tmux Name=steve dev tmux
Comment=remote dev Comment=remote dev
Exec=foot -a steve-dev-tmux -T "steve dev tmux" ssh steve-dev mise exec -- tmux new -A -s main Exec=terminal-launcher steve-dev-tmux "ssh steve-dev mise exec -- tmux new -A -s main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
@@ -1,6 +1,6 @@
[Desktop Entry] [Desktop Entry]
Type=Application Type=Application
Exec=foot -T terminal Exec=terminal-launcher terminal-fish "/usr/bin/fish"
Icon=foot Icon=foot
Terminal=false Terminal=false
Categories=System;TerminalEmulator; Categories=System;TerminalEmulator;
@@ -2,7 +2,7 @@
Version=1.0 Version=1.0
Name=Terminal tmux Name=Terminal tmux
Comment=Terminal with tmux Comment=Terminal with tmux
Exec=foot -a tmux -T "terminal tmux" mise exec -- tmux new -A -s main Exec=terminal-launcher "terminal-tmux" "mise exec -- tmux new -A -s main"
Terminal=false Terminal=false
Type=Application Type=Application
Icon=foot Icon=foot
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
@@ -1,13 +1,14 @@
[main] [main]
font=MonaspiceNeNerdFontMono:size=13 font=MonaspiceNeNerdFontMono:size=13
term=xterm-256color term=xterm-256color
pad=6x6 pad=3x3
initial-window-mode=windowed initial-window-mode=windowed
workers=0 workers=0
include=~/.config/omarchy/current/theme/foot.ini include=~/.local/state/omarchy/current/theme/foot.ini
[scrollback] [scrollback]
lines=10000 lines=10000
multiplier=7.0
[cursor] [cursor]
style=block style=block
@@ -20,3 +21,12 @@ clipboard-paste=Shift+Insert Control+Shift+v XF86Paste
[tweak] [tweak]
overflowing-glyphs=yes overflowing-glyphs=yes
[text-bindings]
# Send Shift+Return as CSI-u so TUIs can distinguish it from Return.
\x1b[13;2u=Shift+Return
# Send Alt+Shift+Return as CSI-u so tmux can match M-S-Enter.
\x1b[13;4u=Mod1+Shift+Return
@@ -1,4 +1,4 @@
source = ~/.config/omarchy/current/theme/hyprlock.conf source = ~/.local/state/omarchy/current/theme/hyprlock.conf
# GENERAL # GENERAL
general { general {
@@ -8,7 +8,7 @@ general {
background { background {
monitor = monitor =
path = ~/.config/omarchy/current/background path = ~/.local/state/omarchy/current/background
color = $color color = $color
} }
+51
View File
@@ -0,0 +1,51 @@
hl.bind(sjb.HYPR .. "Z", hl.dsp.submap("passthru"), { description = "Passthru Menu" })
hl.define_submap("passthru", function()
hl.bind(sjb.HYPR .. "Z", hl.dsp.submap("reset"), { description = "Passthru: Exit" })
end)
hl.bind(sjb.HYPR .. "A", hl.dsp.exec_cmd("gtk-launch pi.desktop"), { description = "Open pi tui" })
hl.bind(sjb.HYPR .. "O", dispatch_focus_or_launch({
match = "chrome-outlook.office.com",
cmd = "gtk-launch Outlook.desktop",
}), { description = "Email" })
hl.bind(sjb.HYPR .. "T", dispatch_focus_or_launch({
match = "chrome-teams.microsoft.com",
cmd = "gtk-launch Team.desktop",
}), { description = "UWO Team" })
hl.bind(sjb.HYPR .. "Y", dispatch_focus_or_launch({
match = "chrome-youtube.com",
cmd = "gtk-launch YouTube.desktop",
}), { description = "YouTube" })
hl.bind(sjb.HYPR .. "W", dispatch_focus_or_launch({
match = "chrome-web.whatsapp.com",
cmd = "gtk-launch WhatsApp.desktop",
}), { description = "WhatsApp" })
hl.bind(sjb.HYPR .. "G", dispatch_focus_or_launch({
match = "chrome-chatgpt.com",
cmd = "gtk-launch ChatGPT.desktop",
}), { description = "ChatGPT" })
hl.bind(sjb.HYPR .. "D", dispatch_focus_or_launch({
match = "chrome-discord.com",
cmd = "gtk-launch Discord.desktop"
}), { description = "Discord" })
hl.bind(sjb.HYPR .. "M", dispatch_focus_or_launch({
match = "chrome-messages.google.com",
cmd = "gtk-launch \"Google Messages.desktop\"",
}), { description = "Google Messages" })
hl.bind(sjb.HYPR .. "X", dispatch_focus_or_launch({
match = "X",
cmd = "gtk-launch X.desktop",
}), { description = "X" })
hl.bind(sjb.HYPR .. "S", dispatch_focus_or_launch({
match = "Spotify",
cmd = "gtk-launch spotify.desktop"
}), { description = "Music" })
+3
View File
@@ -0,0 +1,3 @@
hl.on("hyprland.start", function()
hl.exec_cmd("hyprctl setcursor Pop 24")
end)
+250
View File
@@ -0,0 +1,250 @@
local terminal = "footclient"
local browser = "gtk-launch chromium.desktop"
-- Keybindings
hl.bind("SUPER + SHIFT + RETURN", hl.dsp.exec_raw(browser), { description = "Open browser" })
hl.bind("SUPER + SHIFT + B", hl.dsp.exec_raw(browser), { description = "Open browser" })
hl.bind("SUPER + RETURN", hl.dsp.exec_cmd("footclient -a terminal -T terminal"),
{ description = "Open terminal" })
hl.bind("SUPER + SHIFT + F", dispatch_focus_or_launch({
match = "strata",
cmd = "gtk-launch io.github.lgse.Strata.desktop",
}), { description = "File Manager" })
hl.bind("SUPER + CTRL + RETURN", hl.dsp.exec_cmd("gtk-launch herdr.desktop"),
{ description = "Open herdr terminal" })
hl.bind("SUPER + ALT + RETURN", hl.dsp.exec_cmd("gtk-launch tmux.desktop"),
{ description = "Open tmux terminal" })
hl.bind("SUPER + SHIFT + N", hl.dsp.exec_cmd("terminal-launcher quicknotes \"nvim +'Obsidian today'\""),
{ description = "Open Obsidian today in a centered floating window" })
hl.bind("SUPER + SHIFT + A", hl.dsp.exec_cmd("terminal-launcher agenda \"nvim +'Org agenda t'\""),
{ description = "Open Org agenda in a centered floating window" })
hl.bind("SUPER + CONTROL + A", hl.dsp.exec_cmd("terminal-launcher capture \"nvim +'Org capture t'\""),
{ description = "Open Org capture in a centered floating window" })
hl.bind("SUPER + SHIFT + I", sysinfo, { description = "Show system info" })
-- hl.bind("SUPER + SHIFT + Q", hl.dsp.exec_raw("ostt launch --paste"), { description = "Open ostt" })
-- hl.bind("F9", hl.dsp.exec_raw("ostt launch --paste"), { description = "Open ostt" })
hl.bind("F9", hl.dsp.exec_raw("voxtype record toggle"), { description = "Toggle Voxtype dictation" })
hl.bind("SUPER + SHIFT + Q", hl.dsp.exec_raw("voxtype record toggle"), { description = "Toggle Voxtype dictation" })
hl.bind("SUPER + Y", toggle_master_scrolling,
{ description = "Layout: Toggle master/scrolling" })
hl.bind("SUPER + W", hl.dsp.window.close(), { description = "Window: Close" })
hl.bind("SUPER + F", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" }),
{ description = "Window: Toggle fullscreen" })
hl.bind("SUPER + CONTROL + F", hl.dsp.window.fullscreen_state({ internal = 2, client = 0, action = "toggle" }),
{ description = "Window: Toggle Tiled fullscreen" })
hl.bind("SUPER + ALT + F", hl.dsp.window.fullscreen_state({ internal = 0, client = 2, action = "toggle" }),
{ description = "Window: Toggle full width" })
hl.bind("SUPER + T", toggle_float_with_limit,
{ description = "Window: Toggle floating/tiling (max 80%)" })
hl.bind("SUPER + P", toggle_pin, { description = "Window: Toggle Pin" })
hl.bind("SUPER + left", hl.dsp.focus({ direction = "l" }), { description = "Window: Focus left" })
hl.bind("SUPER + right", hl.dsp.focus({ direction = "r" }), { description = "Window: Focus right" })
hl.bind("SUPER + up", hl.dsp.focus({ direction = "u" }), { description = "Window: Focus up" })
hl.bind("SUPER + down", hl.dsp.focus({ direction = "d" }), { description = "Window: Focus down" })
hl.bind("SUPER + H", hl.dsp.focus({ direction = "l" }), { description = "Window: Focus left" })
hl.bind("SUPER + L", hl.dsp.focus({ direction = "r" }), { description = "Window: Focus right" })
hl.bind("SUPER + K", hl.dsp.focus({ direction = "u" }), { description = "Window: Focus up" })
hl.bind("SUPER + J", hl.dsp.focus({ direction = "d" }), { description = "Window: Focus down" }) -- hl.bind("SUPER + H", hl.dsp.window.resize("left"), { repeating = true, description = "Window: Resize left" })
-- hl.bind("SUPER + z", hl.dsp.focus({ last = true }), { description = "Window: Focus last" })
hl.bind("SUPER + Z", hl.dsp.focus({ urgent_or_last = true }), { description = "Window: Focus last" })
hl.bind("SUPER + ALT + period", hl.dsp.layout("cycleprev"), { description = "Window: Swap with next" })
hl.bind("SUPER + ALT + comma", hl.dsp.layout("cyclenext"), { description = "Window: Swap with prev" })
-- hl.bind("SUPER + ALT + comma", hl.dsp.workspace.move({ monitor = "-1" }),
-- { description = "Window: Move to previous workspace and follow" })
-- hl.bind("SUPER + ALT + period", hl.dsp.workspace.move({ monitor = "+1" }),
-- { description = "Window: Move to next workspace and follow" })
-- FIX: sjb
--hl.bind("SUPER + J", hl.dsp.layout("togglesplit"), { description = "Toggle window split" })
--hl.bind("SUPER + P", hl.dsp.window.pseudo(), { description = "Pseudo window" })
hl.bind("ALT + Tab", cycle_next_window({ next = true }), { description = "Window: Cycle next" })
hl.bind("ALT + SHIFT + Tab", cycle_next_window({ next = false }), { description = "Window: Cycle prev" })
hl.bind("CONTROL + ALT + TAB", hl.dsp.focus({ monitor = "+1" }), { description = "Focus on next monitor" })
hl.bind("CONTROL + ALT + SHIFT + TAB", hl.dsp.focus({ monitor = "-1" }), { description = "Focus on previous monitor" })
hl.bind("SUPER + S", hl.dsp.workspace.toggle_special("scratchpad"), { description = "Toggle scratchpad" })
hl.bind("SUPER + ALT + S", hl.dsp.window.move({ workspace = "special:scratchpad", follow = false }),
{ description = "Move window to scratchpad" })
-- hl.bind("SUPER + TAB", hl.dsp.focus({ monitor = "+1" }), { description = "Monitor: move focus to next monitor" })
hl.bind("SUPER + TAB", hl.dsp.focus({ workspace = "e+1" }), { description = "Next workspace" })
hl.bind("SUPER + SHIFT + TAB", hl.dsp.focus({ workspace = "e-1" }), { description = "Previous workspace" })
hl.bind("SUPER + CONTROL + TAB", hl.dsp.focus({ workspace = "previous" }), { description = "Former workspace" })
hl.bind("SUPER + ALT + SHIFT + LEFT", hl.dsp.workspace.move({ monitor = "l" }),
{ description = "Move workspace to left monitor" })
hl.bind("SUPER + ALT + SHIFT + RIGHT", hl.dsp.workspace.move({ monitor = "r" }),
{ description = "Move workspace to right monitor" })
hl.bind("SUPER + ALT + SHIFT + UP", hl.dsp.workspace.move({ monitor = "u" }),
{ description = "Move workspace to up monitor" })
hl.bind("SUPER + ALT + SHIFT + DOWN", hl.dsp.workspace.move({ monitor = "d" }),
{ description = "Move workspace to down monitor" })
hl.bind("SUPER + SHIFT + LEFT", hl.dsp.window.swap({ direction = "l" }), { description = "Swap window to the left" })
hl.bind("SUPER + SHIFT + RIGHT", hl.dsp.window.swap({ direction = "r" }), { description = "Swap window to the right" })
hl.bind("SUPER + SHIFT + UP", hl.dsp.window.swap({ direction = "u" }), { description = "Swap window up" })
hl.bind("SUPER + SHIFT + DOWN", hl.dsp.window.swap({ direction = "d" }), { description = "Swap window down" })
hl.bind("SUPER + ALT + Tab", hl.dsp.focus({ workspace = "next", on_current_monitor = true }),
{ description = "Window: Focus previous in workspace" })
hl.bind("SUPER + ALT + SHIFT + Tab", hl.dsp.focus({ workspace = "previous", on_current_monitor = true }),
{ description = "Window: Focus previous in workspace" })
-- arrange split ratio
hl.bind("SUPER + SHIFT + M", toggle_master, { description = "Layout: Toggle master size" })
hl.bind("SUPER + M", function()
local ws = hl.get_active_workspace()
local current_layout = ws.tiled_layout
if current_layout == "master" then
hl.dispatch(hl.dsp.layout("swapwithmaster"))
end
if current_layout == "scrolling" then
hl.dispatch(hl.dsp.layout("consume_or_expel next"))
end
end, { description = "Layout: Swap with master" })
hl.bind("SUPER + period", function()
local ws = hl.get_active_workspace()
local current_layout = ws.tiled_layout
if current_layout == "master" then
hl.dispatch(hl.dsp.layout("cycleprev"))
hl.dispatch(hl.dsp.layout("swapwithmaster"))
end
if current_layout == "scrolling" then
hl.dispatch(hl.dsp.layout("swapcol r"))
hl.dispatch(hl.dsp.layout("focus l"))
end
-- hl.dispatch(hl.dsp.layout("focus r"))
end, { description = "Layout: Cycle next" })
hl.bind("SUPER + comma", function()
local ws = hl.get_active_workspace()
local current_layout = ws.tiled_layout
if current_layout == "master" then
hl.dispatch(hl.dsp.layout("cyclenext"))
hl.dispatch(hl.dsp.layout("swapwithmaster"))
end
if current_layout == "scrolling" then
hl.dispatch(hl.dsp.layout("swapcol l"))
hl.dispatch(hl.dsp.layout("focus r"))
end
-- hl.dispatch(hl.dsp.layout("focus l"))
end, { description = "Layout: Cycle previous" })
hl.bind("SUPER + SHIFT + comma", hl.dsp.window.move({ workspace = "-1" }),
{ description = "Window: Move to previous workspace" })
hl.bind("SUPER + SHIFT + period", hl.dsp.window.move({ workspace = "+1" }),
{ description = "Window: Move to next workspace" })
hl.bind("SUPER + CONTROL + SHIFT + slash",
hl.dsp.exec_cmd("makoctl mode -t do-not-disturb"),
{ description = "Toggle do-not-disturb" })
hl.bind("SUPER + CONTROL + Delete", hl.dsp.exec_cmd("hyprland-toggle-monitor eDP-1"),
{ description = "Toggle laptop display" })
hl.on("keybinds.submap", function(name)
if name == "" then
hl.notification.create({ text = "Exited submap", duration = 2000, icon = "hint" })
return
end
hl.notification.create({ text = "Entered submap: " .. name, duration = 2000, icon = "hint" })
end)
hl.bind("SUPER + F9", hl.dsp.submap("resize"), { description = "Resize Menu" })
hl.define_submap("resize", function()
hl.bind("period", hl.dsp.window.resize({ x = 10, y = 10, relative = true }),
{ repeating = true, description = "Resize: Increase" })
hl.bind("comma", hl.dsp.window.resize({ x = -10, y = -10, relative = true }),
{ repeating = true, description = "Resize: Decrease" })
hl.bind("R", function()
window_resize_percentage(0.5, 0.5)
end, { description = "Resize: Reset" })
hl.bind("S", function()
window_resize_percentage(0.25, 0.25)
end, { description = "Resize: Small" })
hl.bind("D", function()
window_resize_percentage(0.7, 0.96)
hl.dispatch(hl.dsp.window.center())
end, { description = "Resize: Large" })
hl.bind("C", hl.dsp.window.center(), { description = "Resize: Center" })
hl.bind("P", hl.dsp.window.pin(), { description = "Resize: Pin" })
hl.bind("up", hl.dsp.window.move({ direction = "up" }), { description = "Resize: Move up" })
hl.bind("down", hl.dsp.window.move({ direction = "down" }), { description = "Resize: Move down" })
hl.bind("left", hl.dsp.window.move({ direction = "left" }), { description = "Resize: Move left" })
hl.bind("right", hl.dsp.window.move({ direction = "right" }), { description = "Resize: Move right" })
hl.bind("escape", hl.dsp.submap("reset"), { description = "Resize: Exit" })
hl.bind("catchall", hl.dsp.submap("reset"), { description = "Resize: Exit" })
end)
local workspaceGroupSize = 10
local numberkey = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
function workspace_in_group(i)
local curr = hl.get_active_workspace().id
local newVal = math.floor((curr - 1) / workspaceGroupSize) * workspaceGroupSize + i
return newVal
end
for i = 1, 10 do
hl.bind("SUPER + CONTROL + code:" .. numberkey[i], function()
hl.dispatch(hl.dsp.workspace.move({ monitor = "+1", workspace = workspace_in_group(i), follow = true }))
end, { description = "Workspace: Move monitor " .. i })
end
for i = 1, 10 do
hl.bind("SUPER + SHIFT + code:" .. numberkey[i], function()
hl.dispatch(hl.dsp.window.move({ workspace = workspace_in_group(i), follow = true }))
end, { description = "Workspace: Move " .. i })
end
for i = 1, 10 do
hl.bind("SUPER + code:" .. numberkey[i], function()
hl.dispatch(hl.dsp.focus({ workspace = workspace_in_group(i), on_current_monitor = true }))
end, { description = "Workspace: Focus " .. i })
end
-- Scroll through existing workspaces with mainMod + scroll
hl.bind("SUPER + mouse_down", hl.dsp.focus({ workspace = "e+1" }), { description = "Workspace: Next" })
hl.bind("SUPER + mouse_up", hl.dsp.focus({ workspace = "e-1" }), { description = "Workspace: Previous" })
-- Move/resize windows with mainMod + LMB/RMB and dragging
hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), { mouse = true, description = "Window: Drag" })
hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), { mouse = true, description = "Window: Resize" })
hl.bind("mouse:275", hl.dsp.window.cycle_next({ next = true }), { click = true, description = "Window: Cycle next" })
hl.bind("mouse:276", hl.dsp.window.cycle_next({ next = false }), { click = true, description = "Window: Cycle previous" })
hl.bind(sjb.HYPR .. "semicolon", hl.dsp.exec_cmd("~/.local/bin/set-wallpaper.sh categories/technics"),
{ description = "get new wallpaper" })
-- Gestures
-- hl.gesture({ fingers = 3, direction = "horizontal", action = "workspace" })
-- hl.gesture({ fingers = 3, direction = "down", mods = "ALT", action = "close" })
-- hl.gesture({ fingers = 3, direction = "up", mods = "SUPER", scale = 1.5, action = "fullscreen" })
-- hl.gesture({ fingers = 3, direction = "left", scale = 1.5, action = "float" })
--
-- hl.gesture({ fingers = 2, direction = "pinch", action = "cursorZoom", zoom_level = 2 })
-- hl.gesture({ fingers = 2, direction = "pinch", action = "cursorZoom", zoom_level = 1.2, mode = "mult" })
-- hl.gesture({ fingers = 2, direction = "pinch", action = "cursorZoom", zoom_level = 1, mode = "live" })
+154
View File
@@ -0,0 +1,154 @@
hl.config({
input = {
kb_layout = "us",
kb_variant = ",qwerty",
-- kb_model =
-- kb_options = ctrl:nocaps
kb_options = "caps:ctrl_modifier,compose:ralt",
-- kb_options = compose:ralt
follow_mouse = 1,
repeat_rate = 40,
repeat_delay = 600,
touchpad = {
natural_scroll = true,
disable_while_typing = true,
clickfinger_behavior = true,
scroll_factor = 0.7,
},
scroll_method = "2fg",
sensitivity = 0, -- -1.0 - 1.0, 0 means no modification.
},
ecosystem = {
no_update_news = true,
enforce_permissions = false,
},
general = {
gaps_in = 3,
gaps_out = 3,
border_size = 2,
allow_tearing = true,
snap = {
enabled = true
},
col = {
active_border = { colors = { "rgba(33ccffee)", "rgba(00ff99ee)" }, angle = 45 },
inactive_border = "rgba(595959aa)",
},
layout = "master"
},
master = {
allow_small_split = true,
mfact = 0.50,
new_status = "master",
orientation = "center",
},
dwindle = {
preserve_split = true,
force_split = 2,
},
scrolling = {
focus_fit_method = 0,
column_width = 0.49,
fullscreen_on_one_column = true
},
cursor = {
hide_on_key_press = true,
warp_on_change_workspace = 1,
},
binds = {
hide_special_on_workspace_change = true,
},
decoration = {
rounding = 1,
active_opacity = 1.0,
inactive_opacity = 0.95,
dim_inactive = true,
dim_special = 0.0,
dim_strength = 0.3,
shadow = {
enabled = false,
range = 2,
render_power = 3,
color = "rgba(1a1a1aee)",
},
blur = {
enabled = false,
size = 3,
passes = 1,
vibrancy = 0.1696,
},
},
group = {
groupbar = {
enabled = false
}
},
misc = {
disable_hyprland_logo = true,
disable_splash_rendering = true,
disable_scale_notification = true,
focus_on_activate = true,
anr_missed_pings = 3,
on_focus_under_fullscreen = 1,
mouse_move_enables_dpms = true,
animate_manual_resizes = true,
mouse_move_focuses_monitor = true,
enable_swallow = true,
enable_anr_dialog = false,
force_default_wallpaper = true,
initial_workspace_tracking = 0,
allow_session_lock_restore = true,
},
xwayland = {
force_zero_scaling = true
},
animations = {
enabled = true,
}
})
hl.curve("almostLinear", { type = "bezier", points = { { 0.5, 0.5 }, { 0.75, 1.0 } } })
hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
hl.curve("generic", { type = "bezier", points = { { 0.5, 0.9 }, { 0.1, 1.08 } } })
hl.curve("quick", { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1.0 } } })
hl.curve("overshoot", { type = "bezier", points = { { 0.5, 0.9 }, { 0.1, 1.1 } } })
hl.curve("rubber", { type = "spring", mass = 1, stiffness = 70, dampening = 10 })
hl.curve("easeOutQuint", { type = "bezier", points = { { 0.23, 1 }, { 0.32, 1 } } })
hl.curve("easeInOutCubic", { type = "bezier", points = { { 0.65, 0.05 }, { 0.36, 1 } } })
hl.animation({ leaf = "global", enabled = true, speed = 10, bezier = "default" })
hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" })
hl.animation({ leaf = "windows", enabled = true, speed = 3.79, bezier = "easeOutQuint" })
hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, bezier = "easeOutQuint", 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 = "fadeSwitch", enabled = false })
hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" })
hl.animation({ 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 = 0.5, bezier = "quick" })
hl.animation({ leaf = "specialWorkspaceIn", enabled = true, speed = 3, bezier = "easeOutQuint", style = "slide top" })
hl.animation({ leaf = "specialWorkspaceOut", enabled = true, speed = 2, bezier = "easeInOutCubic", style = "slide bottom" })
+28
View File
@@ -0,0 +1,28 @@
-- Cursor size
hl.env("XCURSOR_SIZE", "24")
hl.env("HYPRCURSOR_SIZE", "24")
-- Force all apps to use Wayland
hl.env("GDK_BACKEND", "wayland,x11,*")
hl.env("QT_QPA_PLATFORM", "wayland;xcb")
hl.env("QT_STYLE_OVERRIDE", "kvantum")
hl.env("SDL_VIDEODRIVER", "wayland")
hl.env("MOZ_ENABLE_WAYLAND", "1")
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "wayland")
hl.env("OZONE_PLATFORM", "wayland")
hl.env("XDG_SESSION_TYPE", "wayland")
-- Allow better support for screen sharing (Google Meet"," Discord, etc)
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
hl.env("XDG_SESSION_DESKTOP", "Hyprland")
-- Use XCompose file
hl.env("XCOMPOSEFILE", "~/.XCompose")
-- Make Chromium use XCompose and all Wayland
hl.env("CHROMIUM_FLAGS", "--enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4")
-- Make .desktop files available for wofi
hl.env("XDG_DATA_DIRS", "/usr/share:/usr/local/share:~/.local/share")
+59
View File
@@ -0,0 +1,59 @@
-- Open rofi on first press, closes it on second
hl.bind("SUPER + Space", hl.dsp.exec_raw("rofi -show combi --modes combi"),
{ release = true, description = "Open Application Menu" })
hl.bind("SUPER + SHIFT + SPACE", hl.dsp.exec_cmd("~/.local/bin/hyprland-fetch-client"),
{ release = true, description = "Fetch client" })
hl.bind("SUPER + CONTROL + SPACE",
hl.dsp.exec_cmd("~/.local/bin/hyprland-focus-client"),
{ release = true, description = "Focus client" }
)
hl.bind("SUPER + slash",
hl.dsp.exec_cmd("ROFI_PASS_BACKEND=wtype ROFI_PASS_CLIPBOARD_BACKEND=wl-clipboard ~/.local/bin/rofi-pass"),
{ release = true, description = "Open rofi-pass" })
hl.bind("SUPER + Y", hl.dsp.exec_cmd("makoctl dismiss"), { description = "Dismiss notifications" })
hl.bind(sjb.HYPR .. "V", hl.dsp.exec_cmd("pavucontrol"), { description = "Volume control" })
hl.bind(sjb.HYPR .. "B", hl.dsp.exec_cmd("blueberry"), { description = "Bluetooth manager" })
hl.bind("SUPER + Escape", hl.dsp.exec_raw("loginctl lock-session"), { description = "Lock screen" })
hl.bind("SUPER + SHIFT + escape", hl.dsp.exec_raw("systemctl suspend"), { description = "Suspend" })
hl.bind("SUPER + ALT + escape", hl.dsp.exit(), { description = "Exit Hyprland" })
hl.bind("SUPER + CONTROL + escape", hl.dsp.exec_raw("reboot"), { description = "Reboot" })
hl.bind("SUPER + SHIFT + CONTROL + escape", hl.dsp.exec_raw("systemctl poweroff"), { description = "Power off" })
hl.bind("PRINT",
hl.dsp.exec_cmd("hyprshot -m window -o ~/Pictures/ -- tensaku-edit"),
{ description = "Take screenshot" })
hl.bind("SHIFT + PRINT",
hl.dsp.exec_cmd("hyprshot -m region -o ~/Pictures/ -- tensaku-edit"),
{ description = "Take screenshot" })
hl.bind("SUPER + PRINT", hl.dsp.exec_cmd("pkill hyprpicker || hyprpicker -a"), { description = "Pick color" })
hl.bind("SUPER + CONTROL + PRINT",
hl.dsp.exec_cmd("hyprshot -m region --raw -z | /usr/bin/tesseract stdin stdout --oem 1 --psm 6 -l eng | wl-copy"),
{ description = "Extract text (OCR) from screenshot" })
hl.bind("SUPER + ALT + PRINT",
hl.dsp.exec_cmd("~/.local/bin/screen-recorder -o ~/Videos/$(date +'%Y-%m-%d_%H%M%S')_recording.mp4"),
{ description = "Start/Stop screen recording" })
hl.bind("SUPER + ALT + SHIFT + PRINT",
hl.dsp.exec_cmd("~/.local/bin/screen-recorder stop"),
{ description = "Stop screen recording" })
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"),
{ repeating = true, description = "Volume down" })
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"),
{ repeating = true, description = "Volume up" })
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { description = "Toggle mute" })
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"),
{ description = "Toggle mic mute" })
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl s 10%+"),
{ repeating = true, description = "Brightness up" })
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl s 10%-"),
{ repeating = true, description = "Brightness down" })
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { description = "Play/pause media" })
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { description = "Previous media" })
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { description = "Next media" })
+221
View File
@@ -0,0 +1,221 @@
sjb = sjb or {}
local function file_exists(path)
local file = io.open(path, "r")
if file then
file:close()
return true
end
return false
end
function sjb.omarchy_tools_available()
return file_exists("/usr/bin/omarchy-menu")
end
sjb.HYPR = "SUPER + CONTROL + SHIFT + ALT + "
function sysinfo()
local mem = io.popen("free -h | awk '/^Mem/ {print $3 \"/\" $2}'"):read("*a")
local cpu = io.popen("top -bn1 | grep 'Cpu(s)' | awk '{print $2 + $4 \"%\"}'"):read("*a")
local battery = io.popen("acpi -b | awk -F', ' '{print $2}'"):read("*a")
local time = os.date("%Y-%m-%d %H:%M:%S")
local monitor = hl.get_active_monitor()
local workspace_id = monitor.active_workspace.id
local mesg = "System Info"
.. "\nDate: " .. time
.. "\nFocused monitor: " .. monitor.name
.. "\nWorkspace: " .. workspace_id
.. "\nBattery: " .. battery
.. "CPU: " .. cpu .. " MEM: " .. mem
hl.notification.create({ text = mesg, icon = "hint", duration = 5000 })
end
function toggle_pin()
local win = hl.get_active_window()
if win == nil then
return
end
local is_pinned = win.pinned
hl.dispatch(hl.dsp.window.pin({ action = is_pinned and "unset" or "set" }))
end
function dispatch_focus_or_launch(opts)
return function()
focus_or_launch(opts)
end
end
function focus_or_launch(opts)
local match = opts.match
local cmd = opts.cmd
local field = opts.field or "class" -- class, title, initialClass, initialTitle
local use_workspace = opts.use_workspace ~= false
local clients = hl.get_windows()
for _, client in ipairs(clients) do
local value = client[field]
if value and string.find(string.lower(value), string.lower(match), 1, true) then
if use_workspace and client.workspace and client.workspace.id then
hl.dispatch(hl.dsp.focus({
workspace = client.workspace.id,
on_current_monitor = true,
}))
end
hl.dispatch(hl.dsp.focus({
window = "address:" .. client.address
}))
local layout = client.layout
if not (layout and layout.name == "master" and layout.is_master) then
hl.dispatch(hl.dsp.layout("swapwithmaster"))
end
return
end
end
hl.exec_cmd(cmd)
end
function fetch_or_launch(opts)
local match = opts.match
local cmd = opts.cmd
local field = opts.field or "class" -- class, title, initialClass, initialTitle
local use_workspace = opts.use_workspace ~= false
local clients = hl.get_windows()
local active_workspace = hl.get_active_workspace()
for _, client in ipairs(clients) do
local value = client[field]
if value and string.find(string.lower(value), string.lower(match), 1, true) then
if use_workspace and client.workspace and client.workspace.id then
hl.dispatch(hl.dsp.window.move({
workspace = active_workspace,
on_current_monitor = true,
window = client,
}))
end
hl.dispatch(hl.dsp.focus({ window = client }))
local layout = client.layout
if not (layout and layout.name == "master" and layout.is_master) then
hl.dispatch(hl.dsp.layout("swapwithmaster"))
end
return
end
end
hl.exec_cmd(cmd)
end
function toggle_master()
local ws = hl.get_active_workspace()
if not ws then
return
end
local mfact = nil
for _, win in ipairs(ws:get_windows()) do
local layout = win.layout
if layout and layout.name == "master" and layout.is_master then
mfact = math.floor(layout.perc_master * 100 + 0.5) / 100
break
end
end
if mfact == nil then
return
end
if mfact == 0.7 then
mfact = 0.5
else
mfact = 0.7
end
hl.dispatch(hl.dsp.layout("mfact exact " .. mfact))
end
function toggle_float_with_limit()
local win = hl.get_active_window()
if win == nil then
return
end
local was_floating = win.floating
hl.dispatch(hl.dsp.window.float({ action = "toggle" }))
if was_floating then
return
end
local mon = win.monitor and hl.get_monitor(win.monitor) or hl.get_active_monitor()
if mon == nil or mon.size == nil or win == nil or win.size == nil then
return
end
local max_width = math.floor(mon.width * 0.8)
local max_height = math.floor(mon.height * 0.8)
local scale = math.max(1, win.size.x / max_width, win.size.y / max_height)
hl.notification.create({
text = "Scale " ..
scale .. " Max float size: " .. win.size.x / max_width .. "x" .. win.size.y / max_height,
duration = 2000,
icon =
"hint"
})
if scale > 1 then
hl.dispatch(hl.dsp.window.resize({
x = math.floor(max_width),
y = math.floor(max_height),
relative = false,
window = win
}))
end
end
function cycle_next_window(opts)
return function()
hl.dispatch(hl.dsp.window.cycle_next(opts))
local win = hl.get_active_window()
if win and win.floating then
hl.dispatch(hl.dsp.window.alter_zorder({ window = win, mode = "top" }))
end
end
end
function window_resize_percentage(px, py)
local win = hl.get_active_window()
if win == nil or win.monitor == nil then
return
end
local mon = hl.get_monitor(win.monitor)
if mon == nil or mon.size == nil or mon.size.height == nil or mon.size.width == nil then
return
end
local sx = math.floor(mon.size.width * px)
local sy = math.floor(mon.size.height * py)
if not win.floating then
hl.dispatch(hl.dsp.window.float({ action = "set" }))
end
if win.fullscreen then
hl.dispatch(hl.dsp.window.fullscreen({ action = "unset" }))
end
hl.dispatch(hl.dsp.window.resize({ x = sx, y = sy, relative = false }))
end
function toggle_master_scrolling()
local ws = hl.get_active_workspace()
local next_layout = ws.tiled_layout == "master" and "scrolling" or "master"
hl.notification.create({ text = "Workspace layout set to " .. next_layout, icon = "hint", duration = 5000 })
hl.workspace_rule({ workspace = ws.id, layout = next_layout })
end
+16
View File
@@ -0,0 +1,16 @@
require("sjb/monitors")
require("sjb/configuration")
require("sjb/functions")
require("sjb/rules")
require("sjb/envs")
require("sjb/autostart")
require("sjb/bindings")
require("sjb/applications")
if sjb.omarchy_tools_available() then
require("sjb/omarchy")
require("sjb/utilities")
else
require("sjb/extra")
end
-- require("theme")
+70
View File
@@ -0,0 +1,70 @@
hl.monitor({ output = "desc:Lenovo Group Limited 0x41A0", mode = "highrr", position = "0x0", scale = "1.0" })
hl.monitor({ output = "desc:Samsung Display Corp. 0x4143", mode = "highrr", position = "0x0", scale = "2" })
hl.monitor({
output = "desc:LG Electronics LG HDR 4K 406NTZN74597",
mode = "preferred",
position = "auto-right",
scale =
"1.333333"
})
hl.monitor({
output = "desc:Apple Computer Inc LED Cinema W82104Y16JL",
mode = "preferred",
position = "auto-right",
scale =
"1.333333"
})
hl.monitor({
output = "desc:Microstep MSI MAG342CQR DB6H252300057",
mode = "3440x1440@144",
-- mode = "preferred",
position = "auto-left",
scale =
"1.0"
})
hl.monitor({
output = "desc:Ancor Communications Inc ASUS MG28U 0x00009B77",
mode = "preferred",
position = "auto-right",
scale =
"1.333333"
})
-- hl.monitor({ output = "eDP-1", mode = "preferred", position = "0x0", scale = "1.0" })
hl.monitor({
output = "desc:LG Electronics LG HDR WQHD 0x0006530C",
mode = "preferred",
position = "auto-up",
scale =
"1.333333"
})
hl.monitor({ output = "CAP Capture 0x00000001", mode = "1920x1080@60", position = "auto-down", scale = 1 })
-- hl.monitor({ output = "HDMI-A-1", mode = "1920x1080@60", position = "auto-down", scale = 1 })
-- hl.monitor({ output = "HDMI-A-2", mode = "1920x1080@60", position = "auto-down", scale = 1 })
hl.monitor({
output = "desc:Ancor Communications Inc ASUS PB238 DCLMTF074371",
mode = "preferred",
position = "auto",
scale =
"1.0"
})
hl.monitor({ output = "desc:Lenovo Group Limited L15 U133R0A2", mode = "preferred", position = "auto-down", scale = 1 })
hl.monitor({ output = "desc:Lenovo Group Limited M15 V30F2A15", mode = "preferred", position = "auto-down", scale = 1 })
hl.monitor({ output = "desc:Lenovo Group Limited L15 U133X4PG", mode = "preferred", position = "auto-down", scale = 1 })
hl.monitor({ output = "desc:Stargate Technology TYPE-C", mode = "preferred", position = "auto-down", scale = 1 })
hl.monitor({ output = "desc:Proteon TYPE-C 8R33926O00QS", mode = "preferred", position = "auto-right", scale = "1.0" })
hl.monitor({ output = "desc:GWD ARZOPA 000000000000", mode = "preferred", position = "auto-down", scale = "1.0" })
hl.monitor({ output = "desc:BNQ BenQ EX3203R 7CL00509019", mode = "preferred", position = "auto", scale = 1 })
hl.monitor({ output = "desc:BNQ BenQ EX3501R N4M05650019", mode = "preferred", position = "auto-right", scale = "1.0" })
hl.monitor({
output = "desc:Dell Inc. DELL U3818DW 97F8P8AD0HEL",
mode = "preferred",
position = "auto-left",
scale =
"1.0"
})
+107
View File
@@ -0,0 +1,107 @@
hl.bind("SUPER + SPACE", hl.dsp.exec_raw("omarchy-menu toggle"), { description = "Omarchy menu" })
hl.bind("SUPER + ALT + SPACE", hl.dsp.exec_raw("omarchy-menu toggle apps"), { description = "Apps menu" })
hl.bind("SUPER + CTRL + E", hl.dsp.exec_raw("omarchy-shell shell toggle omarchy.emojis"), { description = "Emojis" })
hl.bind("SUPER + CTRL + C", hl.dsp.exec_raw("omarchy-menu toggle capture"), { description = "Capture menu" })
hl.bind("SUPER + CTRL + O", hl.dsp.exec_raw("omarchy-menu toggle toggle"), { description = "Toggle menu" })
hl.bind("SUPER + CTRL + H", hl.dsp.exec_raw("omarchy-menu toggle hardware"), { description = "Hardware menu" })
hl.bind("SUPER + SHIFT + code:201", hl.dsp.exec_raw("omarchy-menu toggle root"), { description = "Omarchy menu" })
hl.bind("SUPER + ESCAPE", hl.dsp.exec_raw("omarchy-menu toggle system"), { description = "System menu" })
hl.bind("SUPER + CTRL + Q", hl.dsp.exec_raw("omacalc"), { description = "Calculator" })
hl.bind("XF86Calculator", hl.dsp.exec_raw("omacalc"), { description = "Calculator" })
hl.bind("XF86PowerOff", hl.dsp.exec_raw("omarchy-menu toggle system", { locked = true }), { description = "Power menu" })
hl.bind("SUPER + SHIFT + SPACE", hl.dsp.exec_raw('omarchy-toggle-bar'), { description = "Toggle top bar" })
hl.bind("SUPER + CTRL + SPACE", hl.dsp.exec_raw("omarchy-menu toggle background"),
{ description = "Background switcher" })
hl.bind("SUPER + SHIFT + CTRL + SPACE", hl.dsp.exec_raw("omarchy-menu toggle theme"), { description = "Theme menu" })
hl.bind("SUPER + BACKSPACE", hl.dsp.exec_raw("omarchy-hyprland-window-transparency-toggle"),
{ description = "Toggle window transparency" })
hl.bind("SUPER + SHIFT + BACKSPACE", hl.dsp.exec_raw("omarchy-hyprland-window-gaps-toggle"),
{ description = "Toggle window gaps" })
hl.bind("SUPER + CTRL + BACKSPACE", hl.dsp.exec_raw("omarchy-hyprland-window-single-square-aspect-toggle"),
{ description = "Toggle single-window square aspect" })
-- xkbcommon names the comma keysym "comma"; the upper-case "COMMA" does not match.
hl.bind("SUPER + X", hl.dsp.exec_raw("omarchy-shell notifications dismissOne"),
{ description = "Dismiss last notification" })
hl.bind("SUPER + SHIFT + X", hl.dsp.exec_raw("omarchy-shell notifications dismissAll"),
{ description = "Dismiss all notifications" })
hl.bind("SUPER + CTRL + X", hl.dsp.exec_raw("omarchy-toggle-notification-silencing"),
{ description = "Toggle silencing notifications" })
hl.bind("SUPER + ALT + X", hl.dsp.exec_raw("omarchy-shell notifications invokeLast"),
{ description = "Invoke last notification" })
hl.bind("SUPER + SHIFT + ALT + ", hl.dsp.exec_raw("omarchy-shell notifications showHistory"),
{ description = "Open notification history" })
hl.bind("SUPER + O", hl.dsp.exec_raw("omarchy-hyprland-window-pop"), { description = "Pop window out (float & pin)" })
hl.bind("SUPER + ALT + Home", hl.dsp.exec_raw("omarchy-hyprland-window-width save"),
{ description = "Save window width" })
hl.bind("SUPER + Home", hl.dsp.exec_raw("omarchy-hyprland-window-width restore"),
{ description = "Restore window width" })
-- Volume, brightness, keyboard backlight, and touchpad controls.
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_raw("omarchy-audio-output-volume raise"),
{ locked = true, repeating = true, description = "Volume up" })
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_raw("omarchy-audio-output-volume lower"),
{ locked = true, repeating = true, description = "Volume down" })
hl.bind("XF86AudioMute", hl.dsp.exec_raw("omarchy-audio-output-volume mute-toggle"),
{ locked = true, description = "Mute" })
hl.bind("XF86AudioMicMute", hl.dsp.exec_raw("omarchy-audio-input-mute"),
{ locked = true, description = "Mute microphone" })
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_raw("omarchy-brightness-display +5%"),
{ locked = true, repeating = true, description = "Brightness up" })
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_raw("omarchy-brightness-display 5%-"),
{ locked = true, repeating = true, description = "Brightness down" })
hl.bind("SHIFT + XF86MonBrightnessUp",
hl.dsp.exec_raw("omarchy-brightness-display 100%"),
{ locked = true, repeating = true, description = "Brightness maximum" })
hl.bind("SHIFT + XF86MonBrightnessDown",
hl.dsp.exec_raw("omarchy-brightness-display 1%"),
{ locked = true, repeating = true, description = "Brightness minimum" })
hl.bind("XF86KbdBrightnessUp", hl.dsp.exec_raw("omarchy-brightness-keyboard up"),
{ locked = true, repeating = true, description = "Keyboard brightness up" })
hl.bind("XF86KbdBrightnessDown", hl.dsp.exec_raw("omarchy-brightness-keyboard down"),
{ locked = true, repeating = true, description = "Keyboard brightness down" })
hl.bind("XF86KbdLightOnOff", hl.dsp.exec_raw("omarchy-brightness-keyboard cycle"),
{ locked = true, description = "Keyboard backlight cycle" })
hl.bind("XF86TouchpadToggle", hl.dsp.exec_raw("omarchy-toggle-touchpad"),
{ description = "Toggle touchpad", locked = true })
hl.bind("XF86TouchpadOn", hl.dsp.exec_raw("omarchy-toggle-touchpad on"),
{ locked = true, description = "Enable touchpad" })
hl.bind("XF86TouchpadOff", hl.dsp.exec_raw("omarchy-toggle-touchpad off"),
{ locked = true, description = "Disable touchpad" })
-- Precise volume and brightness controls.
hl.bind("ALT + XF86AudioRaiseVolume",
hl.dsp.exec_raw("omarchy-audio-output-volume +1"),
{ locked = true, repeating = true, description = "Volume up precise" })
hl.bind("ALT + XF86AudioLowerVolume",
hl.dsp.exec_raw("omarchy-audio-output-volume -1"),
{ locked = true, repeating = true, description = "Volume down precise" })
hl.bind("ALT + XF86MonBrightnessUp",
hl.dsp.exec_raw("omarchy-brightness-display +1%"),
{ locked = true, repeating = true, description = "Brightness up precise" })
hl.bind("ALT + XF86MonBrightnessDown",
hl.dsp.exec_raw("omarchy-brightness-display 1%-"),
{ locked = true, repeating = true, description = "Brightness down precise" })
-- Media controls.
hl.bind("XF86AudioNext", hl.dsp.exec_raw("omarchy-shell media next"), { locked = true, description = "Next track" })
hl.bind("ALT + XF86AudioPlay", hl.dsp.exec_raw("omarchy-shell media next"), { locked = true, description = "Next track" })
hl.bind("XF86AudioPause", hl.dsp.exec_raw("omarchy-shell media playPause"), { locked = true, description = "Pause" })
hl.bind("XF86AudioPlay", hl.dsp.exec_raw("omarchy-shell media playPause"), { locked = true, description = "Play" })
hl.bind("XF86AudioPrev", hl.dsp.exec_raw("omarchy-shell media previous"),
{ locked = true, description = "Previous track" })
hl.bind("ALT + SHIFT + XF86AudioPlay", hl.dsp.exec_raw("omarchy-shell media previous"),
{ locked = true, description = "Previous track" })
hl.bind("XF86Eject", hl.dsp.exec_raw("eject"), { locked = true, description = "Eject media" })
hl.bind("SHIFT + XF86AudioMute", hl.dsp.exec_raw("omarchy-audio-output-switch"),
{ locked = true, description = "Switch audio output" })
hl.bind("SHIFT + XF86AudioPause", hl.dsp.exec_raw("omarchy-audio-source-switch"),
{ locked = true, description = "Switch media source" })
hl.bind("SHIFT + XF86AudioPlay", hl.dsp.exec_raw("omarchy-audio-source-switch"),
{ locked = true, description = "Switch media source" })
hl.bind(sjb.HYPR .. "L", hl.dsp.exec_raw("omarchy-system-lock"), { description = "Lock system" })
+77
View File
@@ -0,0 +1,77 @@
hl.workspace_rule({ workspace = "special:scratchpad", border_size = 3 })
hl.window_rule({
match = { class = "(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float|org.pulseaudio.pavucontrol)" },
tag =
"+floating-window"
})
hl.window_rule({
match = { class = "terminal-pi" },
float = true,
center = true,
workspace = "special:scratchpad",
size = { "monitor_w/2", "monitor_h/2" }
})
hl.window_rule({
match = {
class = "(quicknotes|capture|agenda)"
},
tag = "+floating-window"
})
hl.window_rule({
name = "ostt floating windows",
match = { class = "ostt-popup" },
float = true,
no_anim = true,
move = { 10, 10 },
size = { 320, 240 },
})
hl.window_rule({
match = {
class = "(xdg-desktop-portal-gtk|sublime_text|DesktopEditors)",
title = "^(Open.*Files?|Save.*Files?|Save.*As|All Files|Save)"
},
tag = "+floating-window"
})
hl.window_rule({
match = { class = "code" },
fullscreen_state = 1,
})
hl.window_rule({
-- Fix some dragging issues with XWayland
name = "fix-xwayland-drags",
match = {
class = "^$",
title = "^$",
xwayland = true,
float = true,
fullscreen = false,
pin = false,
},
no_focus = true,
})
hl.window_rule({ match = { tag = "floating-window" }, float = true, center = true, size = { "monitor_w/2", "monitor_h/2" } })
hl.window_rule({ match = { class = "(rofi|wofi)" }, tag = "+user-menu" })
hl.window_rule({ match = { class = "^(pinentry-)" }, tag = "+user-menu" })
hl.window_rule({ match = { class = "^(gcr-prompter)$" }, tag = "+user-menu" })
hl.window_rule({ match = { tag = "user-menu" }, stay_focused = true, no_anim = true, float = true, center = true, size = { "monitor_w/3", "monitor_h/3" } })
hl.window_rule({
name = "Picture in Picture windows",
match = { title = "^.*[Pp]icture[ -][Ii]n[ -][Pp]icture.*$" },
float = true,
pin = true,
rounding = 7,
opacity = "1 1",
move = { "monitor_w-window_w-10", "monitor_h-window_h-10" },
size = { "monitor_w/4", "monitor_h/4" },
})
+112
View File
@@ -0,0 +1,112 @@
hl.bind("SUPER + CTRL + I", hl.dsp.exec_raw("omarchy-toggle-idle"), { description = "Toggle locking on idle" })
hl.bind("SUPER + CTRL + N", hl.dsp.exec_raw("omarchy-toggle-nightlight"), { description = "Toggle nightlight" })
hl.bind("SUPER + CTRL + Delete", hl.dsp.exec_raw("omarchy-hyprland-monitor-internal toggle"),
{ description = "Toggle laptop display" })
hl.bind("SUPER + CTRL + ALT + Delete", hl.dsp.exec_raw("omarchy-hyprland-monitor-internal-mirror toggle"),
{ description = "Toggle laptop display mirroring" })
hl.bind("switch:on:Lid Switch", hl.dsp.exec_raw("omarchy-system-lid-close"), { locked = true, description = nil })
hl.bind("switch:off:Lid Switch", hl.dsp.exec_raw("omarchy-hyprland-monitor-clamshell"),
{ locked = true, description = nil })
hl.bind("PRINT", hl.dsp.exec_raw("omarchy-capture-screenshot"), { description = "Screenshot" })
hl.bind("ALT + PRINT",
hl.dsp.exec_raw(
"omarchy-capture-screenrecording --stop-recording || omarchy-menu toggle trigger.capture.screenrecord"),
{ description = "Screenrecording" })
hl.bind("SUPER + ALT + code:34", hl.dsp.exec_raw("omarchy-capture-webcam-resize smaller"),
{ description = "Make webcam overlay smaller" })
hl.bind("SUPER + ALT + code:35", hl.dsp.exec_raw("omarchy-capture-webcam-resize larger"),
{ description = "Make webcam overlay larger" })
hl.bind("SUPER + PRINT", hl.dsp.exec_raw("pkill hyprpicker || hyprpicker -a"), { description = "Color picker" })
hl.bind("SUPER + CTRL + PRINT", hl.dsp.exec_raw("omarchy-capture-text"),
{ description = "Extract text (OCR) from screenshot" })
-- Keyboard control for the slurp region picker (see omarchy-capture-region).
-- The binds live exactly as long as a selection layer is on screen (slurp
-- opens one per monitor), so they cannot leak or get stuck.
-- Unbinding by key would take a same-key binding out of the user's own config
-- with it, so each handle is kept and removed individually.
local selection_layers = 0
local selection_binds = {}
hl.on("layer.opened", function(layer)
if layer.namespace == "selection" then
selection_layers = selection_layers + 1
if selection_layers == 1 then
selection_binds = {
hl.bind("RETURN", hl.dsp.exec_cmd("omarchy-capture-region --take-window"),
{ description = "Capture highlighted window" }),
hl.bind("CTRL + RETURN", hl.dsp.exec_cmd("omarchy-capture-region --take-fullscreen"),
{ description = "Capture entire screen" }),
hl.bind("TAB", hl.dsp.exec_cmd("omarchy-capture-region --select-window next"),
{ description = "Select next window to capture" }),
hl.bind("CTRL + TAB", hl.dsp.exec_cmd("omarchy-capture-region --select-window prev"),
{ description = "Select previous window to capture" }),
}
for _, direction in ipairs({ "left", "right", "up", "down" }) do
table.insert(
selection_binds,
hl.bind(direction:upper(), hl.dsp.exec_cmd("omarchy-capture-region --select-window " .. direction),
{ description = "Select window to capture" })
)
end
end
end
end)
hl.on("layer.closed", function(layer)
if layer.namespace == "selection" and selection_layers > 0 then
selection_layers = selection_layers - 1
if selection_layers == 0 then
for _, keybind in ipairs(selection_binds) do
keybind:unbind()
end
selection_binds = {}
end
end
end)
hl.bind("SUPER + CTRL + S", hl.dsp.exec_raw("omarchy-menu toggle share"), { description = "Share" })
hl.bind("SUPER + CTRL + PERIOD", hl.dsp.exec_raw("omarchy-transcode"), { description = "Transcode" })
hl.bind("SUPER + CTRL + R", hl.dsp.exec_raw("omarchy-menu toggle reminder-set"), { description = "Set reminder" })
hl.bind("SUPER + CTRL + ALT + R", hl.dsp.exec_raw("omarchy-reminder show"), { description = "Show reminders" })
hl.bind("SUPER + SHIFT + CTRL + R", hl.dsp.exec_raw("omarchy-reminder clear"), { description = "Clear reminders" })
hl.bind("SUPER + CTRL + ALT + T", hl.dsp.exec_raw("omarchy-notification-time"), { description = "Show time" })
hl.bind("SUPER + CTRL + ALT + B", hl.dsp.exec_raw("omarchy-notification-battery"),
{ description = "Show battery remaining" })
hl.bind("SUPER + CTRL + ALT + W", hl.dsp.exec_raw("omarchy-notification-weather"), { description = "Toggle weather" })
hl.bind("SUPER + SHIFT + CTRL + A", hl.dsp.exec_raw("omarchy-agent --pick"), { description = "Agent" })
hl.bind("SUPER + CTRL + A", hl.dsp.exec_raw("omarchy-shell shell toggle omarchy.audio"), { description = "Audio" })
hl.bind("SUPER + CTRL + B", hl.dsp.exec_raw("omarchy-shell shell tnoggle omarchy.bluetooth"),
{ description = "Bluetooth" })
hl.bind("SUPER + CTRL + D", hl.dsp.exec_raw("omarchy-shell shell toggle omarchy.monitor"), { description = "Display" })
hl.bind("SUPER + CTRL + ALT + D", hl.dsp.exec_raw("omarchy-shell shell toggle omarchy.clock"),
{ description = "Calendar" })
hl.bind("SUPER + CTRL + W", hl.dsp.exec_raw("omarchy-shell shell toggle omarchy.network"), { description = "Network" })
hl.bind("SUPER + CTRL + P", hl.dsp.exec_raw("omarchy-shell shell toggle omarchy.power"), { description = "Power" })
-- The letters above name a panel; the numbers count them. 1 is the leftmost
-- panel in the bar's right section, and a widget with no panel of its own (the
-- tray) is not counted, so the number matches the icon a user would point at.
-- A bar with fewer panels than this leaves the tail of the range doing nothing.
for panel = 1, 9 do
hl.bind(
"SUPER + CTRL + code:" .. tostring(panel + 9),
hl.dsp.exec_raw("omarchy-shell -q shell togglePanelAt right " .. panel),
{ description = "Bar panel " .. panel }
)
end
hl.bind("SUPER + CTRL + Z", function()
local zoom = hl.get_config("cursor.zoom_factor") or 1
hl.config({ cursor = { zoom_factor = zoom + 1 } })
end, { description = "Zoom in" })
hl.bind("SUPER + CTRL + ALT + Z", function()
hl.config({ cursor = { zoom_factor = 1 } })
end, { description = "Reset zoom" })

Some files were not shown because too many files have changed in this diff Show More