Compare commits
159
Commits
72d8775d2c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6eb9d01a65 | ||
|
|
f181f39145 | ||
|
|
0b70337bbd | ||
|
|
8756ad8857 | ||
|
|
1e4d26364a | ||
|
|
e82d86fa8f | ||
|
|
03abb54797 | ||
|
|
93672442f9 | ||
|
|
4380be3108 | ||
|
|
0ce884dfee | ||
|
|
a83a1c170b | ||
|
|
b304d302a7 | ||
|
|
292bb58b18 | ||
|
|
e73d3acc39 | ||
|
|
5b31d14829 | ||
|
|
4197230886 | ||
|
|
0e203b188d | ||
|
|
ecf01dad51 | ||
|
|
7902fe531e | ||
|
|
bb9f74b7cf | ||
|
|
10cfce1731 | ||
|
|
401220f3b5 | ||
|
|
3cf0f65164 | ||
|
|
e960f71340 | ||
|
|
6301e15e57 | ||
|
|
ccb95c439a | ||
|
|
2249d5c3e8 | ||
|
|
c1f57dd476 | ||
|
|
aa66340875 | ||
|
|
c2b4707b0a | ||
|
|
4b494eb433 | ||
|
|
a0ad6fa930 | ||
|
|
274e427ccb | ||
|
|
ba9fcc4948 | ||
|
|
bf9d61f6e2 | ||
|
|
9e966e127d | ||
|
|
09139ae41b | ||
|
|
5564df4247 | ||
|
|
30757c74ba | ||
|
|
936f535d0a | ||
|
|
066d525b4d | ||
|
|
aaa0015135 | ||
|
|
b9d807a78d | ||
|
|
7911b79b89 | ||
|
|
c4ad72b974 | ||
|
|
d8439564bc | ||
|
|
d5d68c5498 | ||
|
|
bf9780345d | ||
|
|
b9997088c8 | ||
|
|
869991df4b | ||
|
|
788914abdc | ||
|
|
9c353f257b | ||
|
|
5fee6bbf4e | ||
|
|
6fcdd86cff | ||
|
|
eeee8333b5 | ||
|
|
e4231f3746 | ||
|
|
ffff051459 | ||
|
|
e7b19ee993 | ||
|
|
8086430934 | ||
|
|
37d656c502 | ||
|
|
26ef19f975 | ||
|
|
cdf23af952 | ||
|
|
dcd59a6072 | ||
|
|
ba05ef2a6d | ||
|
|
17a129a2c4 | ||
|
|
71e1686b25 | ||
|
|
32085a5e15 | ||
|
|
4a8c582e81 | ||
|
|
a6aa367313 | ||
|
|
b6b738fc7b | ||
|
|
d772b3952d | ||
|
|
b2f8334999 | ||
|
|
81fc70a6d5 | ||
|
|
46b485dfa4 | ||
|
|
76c8fd9ae2 | ||
|
|
40e8237819 | ||
|
|
abe190f7f0 | ||
|
|
c740771df9 | ||
|
|
918aecbeaa | ||
|
|
8012fb09c6 | ||
|
|
bb0d7f2f1d | ||
|
|
63998d2965 | ||
|
|
2c5a2f1d5e | ||
|
|
cbedf361db | ||
|
|
a8cd242a26 | ||
|
|
521a105f35 | ||
|
|
ac490653e8 | ||
|
|
892e32439e | ||
|
|
8a3ae0f6bd | ||
|
|
b65af6a730 | ||
|
|
7b1f04b530 | ||
|
|
d605f4c388 | ||
|
|
be9f770dc9 | ||
|
|
13cb9fb6f0 | ||
|
|
21daca8042 | ||
|
|
0a4fc274b0 | ||
|
|
b88c8a0cf7 | ||
|
|
34db8af2dc | ||
|
|
77b2db55ec | ||
|
|
c53a58a55e | ||
|
|
da1b48c4c1 | ||
|
|
cd7e0dcea3 | ||
|
|
bc53931906 | ||
|
|
7ca3865bbb | ||
|
|
1b608ea553 | ||
|
|
4a8341a651 | ||
|
|
02b2a96fa9 | ||
|
|
52a9341bc0 | ||
|
|
407024a6ec | ||
|
|
2e84ce9375 | ||
|
|
f060f53d64 | ||
|
|
325408e34e | ||
|
|
80698baf41 | ||
|
|
f5c484b801 | ||
|
|
ac8514a229 | ||
|
|
aba90417a5 | ||
|
|
b82281800d | ||
|
|
fb938066a4 | ||
|
|
f58aca742d | ||
|
|
e6f9ef0dab | ||
|
|
158c86efcf | ||
|
|
039d15a5e6 | ||
|
|
38b77f94a3 | ||
|
|
8a240fbde7 | ||
|
|
7b61937cc8 | ||
|
|
9f4ff0d6ac | ||
|
|
3b27586cdf | ||
|
|
f0c1cd53ea | ||
|
|
75a62d34d4 | ||
|
|
f685c2569d | ||
|
|
325e51f5fc | ||
|
|
6c65791db7 | ||
|
|
68e80f8d2f | ||
|
|
3e14bd352f | ||
|
|
b1ed1de204 | ||
|
|
8d6f46711d | ||
|
|
8e278ec361 | ||
|
|
7a3a5b1632 | ||
|
|
79b2dd599e | ||
|
|
f6a3d5d0ee | ||
|
|
aa5a568ead | ||
|
|
4469723c5f | ||
|
|
7a35f08d64 | ||
|
|
2bcc5e0457 | ||
|
|
51ac6e1d29 | ||
|
|
a1e8dd023d | ||
|
|
58cdff19fc | ||
|
|
b040d332dc | ||
|
|
98f809dfe5 | ||
|
|
5db0ff0011 | ||
|
|
cf9c184da7 | ||
|
|
a40fef056d | ||
|
|
cc138cc18a | ||
|
|
fe28d1bc73 | ||
|
|
0ae9a204aa | ||
|
|
32edcb9019 | ||
|
|
00c8a641a6 | ||
|
|
0a729ea821 | ||
|
|
c4147c6aaf |
@@ -0,0 +1,12 @@
|
||||
alias zero='zero.js'
|
||||
alias wtc="wt switch --create --execute=$EDITOR"
|
||||
alias wts="wt switch"
|
||||
alias wtr="wt remove @"
|
||||
alias ll="eza -l -g --icons"
|
||||
alias ls="eza -al --color=always --group-directories-first"
|
||||
alias g="git"
|
||||
alias ngit="nvim +Neogit"
|
||||
alias zdiff="nvim +Zdiff"
|
||||
alias review="nvim +'Zdiff origin/HEAD'"
|
||||
alias wm="workmux"
|
||||
alias wmd="workmux dashboard"
|
||||
@@ -0,0 +1,49 @@
|
||||
append_path () {
|
||||
case ":$PATH:" in
|
||||
*:"$1":*)
|
||||
;;
|
||||
*)
|
||||
PATH="${PATH:+$PATH:}$1"
|
||||
esac
|
||||
}
|
||||
|
||||
append_path "$HOME/.local/bin"
|
||||
append_path "$HOME/.cargo/bin"
|
||||
|
||||
export PATH
|
||||
if [ -x $(command -v bat) ]; then
|
||||
export PAGER="bat"
|
||||
fi
|
||||
|
||||
if [ -x $(command -v mise) ]; then
|
||||
eval "$(mise activate bash)"
|
||||
fi
|
||||
|
||||
if [ -x $(command -v zoxide) ]; then
|
||||
eval "$(zoxide init bash)"
|
||||
fi
|
||||
|
||||
if [ -x $(command -v fzf) ]; then
|
||||
eval "$(fzf --bash)"
|
||||
fi
|
||||
|
||||
if [ -x $(command -v wt) ]; then
|
||||
eval "$(command wt config shell init bash)";
|
||||
fi
|
||||
|
||||
if [ -n "$SSH_CONNECTION" ]; then
|
||||
# Create a predictable symlink pointing to the current SSH auth socket
|
||||
auth_sock="$HOME/.ssh/ssh_auth_sock"
|
||||
if [ -n "$SSH_AUTH_SOCK" ] && [ "$SSH_AUTH_SOCK" != "$auth_sock" ]; then
|
||||
mkdir -p "$HOME/.ssh" && ln -snf "$SSH_AUTH_SOCK" "$auth_sock"
|
||||
fi
|
||||
else
|
||||
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
|
||||
fi
|
||||
|
||||
for _f in "$HOME"/.config/herdr/plugins/github/herdr-automatic-rename-*/shell/hook.bash; do
|
||||
[ -r "$_f" ] && { source "$_f"; break; }
|
||||
done
|
||||
|
||||
[[ -f ~/.bash_aliases ]] && . ~/.bash_aliases
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
MOZ_ENABLE_WAYLAND=1
|
||||
@@ -1,2 +0,0 @@
|
||||
TERM=xterm-256color
|
||||
npm_config_prefix=$HOME/.local
|
||||
@@ -0,0 +1,20 @@
|
||||
if command -q mise
|
||||
mise activate fish | source
|
||||
end
|
||||
|
||||
if command -q direnv
|
||||
direnv hook fish | source
|
||||
end
|
||||
|
||||
if command -q zoxide;
|
||||
zoxide init fish | source
|
||||
end
|
||||
|
||||
if command -q fzf
|
||||
fzf --fish | source
|
||||
end
|
||||
|
||||
if command -q jj
|
||||
jj util completion fish | source
|
||||
end
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
fish_add_path "$HOME/.local/bin"
|
||||
fish_add_path "$HOME/.cargo/bin"
|
||||
|
||||
set -gx npm_config_prefix "$HOME/.local"
|
||||
|
||||
if command -q nvim
|
||||
set -gx EDITOR nvim
|
||||
end
|
||||
|
||||
set -gx VISUAL $EDITOR
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
for _f in $HOME/.config/herdr/plugins/github/herdr-automatic-rename-*/shell/hook.fish
|
||||
test -r "$_f"; and source "$_f"; and break
|
||||
end
|
||||
+17
-32
@@ -12,27 +12,6 @@ if status is-interactive
|
||||
fish_config prompt choose default
|
||||
fish_hybrid_key_bindings
|
||||
|
||||
fish_add_path "$HOME/.local/bin"
|
||||
fish_add_path "$HOME/.cargo/bin"
|
||||
|
||||
set -gx npm_config_prefix "$HOME/.local"
|
||||
|
||||
if command -q mise
|
||||
/usr/bin/mise activate fish | source
|
||||
end
|
||||
|
||||
if command -q direnv
|
||||
/usr/bin/direnv hook fish | source
|
||||
end
|
||||
|
||||
if command -q zoxide
|
||||
/usr/bin/zoxide init fish | source
|
||||
end
|
||||
|
||||
if command -q fzf
|
||||
/usr/bin/fzf --fish | source
|
||||
end
|
||||
|
||||
command -q nmcli && alias nmlist "nmcli device wifi list"
|
||||
|
||||
if command -q tree
|
||||
@@ -48,13 +27,16 @@ if status is-interactive
|
||||
command -q fabric && alias ai "fabric -p \$(fabric-ai -l | fzf)"
|
||||
command -q xdg-open && alias o "xdg-open"
|
||||
command -q lazygit && alias lg lazygit
|
||||
command -q zero.js && alias zero 'zero.js'
|
||||
|
||||
if command -q nvim
|
||||
set -gx EDITOR nvim
|
||||
alias oo="cd ~/Documents/nca-notes/"
|
||||
alias on="nvim +Obsidian new"
|
||||
alias os="nvim +Obsidian search"
|
||||
alias mini="NVIM_APPNAME=mini.nvim nvim"
|
||||
alias oo "cd $SECOND_BRAIN"
|
||||
alias on "nvim '+Obsidian new'"
|
||||
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"
|
||||
end
|
||||
|
||||
command -q jj && alias rev "jj log -G -T 'commit_id.short(8)'"
|
||||
@@ -75,19 +57,22 @@ if status is-interactive
|
||||
|
||||
# Commands to run in interactive sessions can go here
|
||||
if command -q eza
|
||||
alias ll="eza -l -g --icons"
|
||||
alias ls="eza -al --color=always --group-directories-first"
|
||||
alias ll "eza -l -g --icons"
|
||||
alias ls "eza -al --color=always --group-directories-first"
|
||||
end
|
||||
|
||||
command -q bat && alias cat="bat"
|
||||
command -q git && alias g=git
|
||||
|
||||
set -gx VISUAL $EDITOR
|
||||
command -q bat && alias cat "bat"
|
||||
command -q git && alias g git
|
||||
|
||||
if command -q jj
|
||||
/usr/bin/jj util completion fish | source
|
||||
end
|
||||
|
||||
if command -q workmux
|
||||
alias wm "workmux"
|
||||
alias wmd "workmux dashboard"
|
||||
end
|
||||
|
||||
# NVM
|
||||
function __check_nvm --on-variable PWD --description 'Do nvm stuff'
|
||||
status --is-command-substitution; and return
|
||||
|
||||
+29
-29
@@ -12,9 +12,10 @@ ui = auto
|
||||
|
||||
[branch]
|
||||
autosetupmerge = true
|
||||
sort = -committerdate
|
||||
|
||||
[tag]
|
||||
sort = version:refname
|
||||
sort = -version:refname
|
||||
|
||||
[diff]
|
||||
algorithm = histogram
|
||||
@@ -33,11 +34,9 @@ pruneTags = true
|
||||
all = true
|
||||
|
||||
[commit]
|
||||
verbose = true
|
||||
# gpgsign = true
|
||||
|
||||
[help]
|
||||
autocorrect = prompt
|
||||
|
||||
[rerere]
|
||||
enabled = 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
|
||||
|
||||
[merge]
|
||||
conflictStyle = diff3
|
||||
conflictStyle = zdiff3
|
||||
summary = true
|
||||
verbosity = 1
|
||||
tool = nvimdiff
|
||||
|
||||
[apply]
|
||||
whitespace = nowarn
|
||||
@@ -69,25 +67,8 @@ whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol
|
||||
[advice]
|
||||
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]
|
||||
|
||||
# annex
|
||||
xl = annex list
|
||||
xg = annex list
|
||||
|
||||
# add
|
||||
a = add
|
||||
padd = add --patch
|
||||
@@ -127,16 +108,16 @@ last = diff HEAD^
|
||||
# log
|
||||
l = log --graph --date=short
|
||||
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}
|
||||
changes = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\" --name-status
|
||||
short = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\"
|
||||
changelog = log --pretty=format:\" * %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
|
||||
lc = log ORIG_HEAD.. --stat --no-merges
|
||||
|
||||
# rebase
|
||||
rc = rebase --continue
|
||||
@@ -159,7 +140,6 @@ diffstat = diff --stat
|
||||
changes = diff --name-status -r
|
||||
|
||||
# stash
|
||||
stashes = stash list
|
||||
ss = stash
|
||||
sl = stash list
|
||||
sa = stash apply
|
||||
@@ -178,7 +158,6 @@ dt = difftools
|
||||
|
||||
rv = review
|
||||
ls = ls-files
|
||||
gconf = config --global
|
||||
|
||||
c = clone --recursive
|
||||
bc = clone --bare
|
||||
@@ -189,3 +168,24 @@ wtl = worktree list
|
||||
wtr = worktree remove
|
||||
|
||||
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
|
||||
|
||||
@@ -1,15 +1,95 @@
|
||||
onboarding = false
|
||||
|
||||
[ui]
|
||||
show_agent_labels_on_pane_borders = true
|
||||
pane_gaps = false
|
||||
pane_borders = true
|
||||
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]
|
||||
pane_history = true
|
||||
allow_nested = true
|
||||
|
||||
[theme]
|
||||
name = "gruvbox"
|
||||
auto_switch = false
|
||||
name = "terminal"
|
||||
|
||||
[theme.custom]
|
||||
panel_bg = "black"
|
||||
|
||||
[terminal]
|
||||
new_cwd = "follow"
|
||||
|
||||
[keys]
|
||||
prefix = "ctrl+space"
|
||||
reload_config = "prefix+q"
|
||||
help = "prefix+?"
|
||||
detach = "prefix+d"
|
||||
zoom = "prefix+z"
|
||||
copy_mode = "prefix+["
|
||||
last_pane = "prefix+;"
|
||||
focus_agent = "prefix+alt+1..9"
|
||||
switch_workspace = "prefix+shift+1..9"
|
||||
|
||||
|
||||
[remote]
|
||||
manage_ssh_config = true
|
||||
|
||||
# Override herdr's built-in "new worktree" key (prefix+shift+g) with worktrunk's
|
||||
# default-branch switch/create picker:
|
||||
[[keys.command]]
|
||||
key = "prefix+shift+g"
|
||||
type = "plugin_action"
|
||||
command = "worktrunk.open"
|
||||
description = "Worktree: switch / create from default branch"
|
||||
|
||||
# Optional: bind current-branch creation separately.
|
||||
[[keys.command]]
|
||||
key = "prefix+shift+c"
|
||||
type = "plugin_action"
|
||||
command = "worktrunk.open-current"
|
||||
description = "Worktree: switch / create from current branch"
|
||||
|
||||
[[keys.command]]
|
||||
key = "prefix+shift+d"
|
||||
type = "plugin_action"
|
||||
command = "worktrunk.remove"
|
||||
description = "Worktree: remove"
|
||||
|
||||
[[keys.command]]
|
||||
key = "prefix+o"
|
||||
type = "plugin_action"
|
||||
command = "herdr-zoxide.browse"
|
||||
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]
|
||||
delivery = "herdr"
|
||||
|
||||
@@ -1,689 +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 = terminal,
|
||||
field = "class",
|
||||
cmd = terminal .. " tmux new -A -s main"
|
||||
})
|
||||
end, { description = "Open 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/bing-wallpaper"), { 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)
|
||||
@@ -0,0 +1,131 @@
|
||||
-- from smnatale's github.com/smnatale/nvim-config
|
||||
--
|
||||
-- Copy file path / selection reference for pasting into AI chats
|
||||
|
||||
local scratch_buf = nil
|
||||
local scratch_buf_name = "copy-refs"
|
||||
|
||||
local function get_or_create_scratch()
|
||||
-- if we already created a buffer and it's still valid, reuse it
|
||||
if scratch_buf and vim.api.nvim_buf_is_valid(scratch_buf) then
|
||||
return scratch_buf
|
||||
end
|
||||
|
||||
-- look for an existing buffer by name
|
||||
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_is_valid(buf) then
|
||||
local name = vim.api.nvim_buf_get_name(buf)
|
||||
if name:match("/" .. scratch_buf_name .. "$") or name == scratch_buf_name then
|
||||
scratch_buf = buf
|
||||
return scratch_buf
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- create a new unlisted scratch buffer
|
||||
scratch_buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.api.nvim_buf_set_name(scratch_buf, scratch_buf_name)
|
||||
vim.bo[scratch_buf].buftype = "nofile"
|
||||
vim.bo[scratch_buf].bufhidden = "hide"
|
||||
vim.bo[scratch_buf].swapfile = false
|
||||
|
||||
return scratch_buf
|
||||
end
|
||||
|
||||
local function open_scratch()
|
||||
local buf = get_or_create_scratch()
|
||||
local width = math.floor(vim.o.columns * 0.8)
|
||||
local height = math.floor(vim.o.lines * 0.8)
|
||||
local row = math.floor((vim.o.lines - height) / 2)
|
||||
local col = math.floor((vim.o.columns - width) / 2)
|
||||
local _ = vim.api.nvim_open_win(buf, true, {
|
||||
relative = "editor",
|
||||
width = width,
|
||||
height = height,
|
||||
row = row,
|
||||
col = col,
|
||||
style = "minimal",
|
||||
border = "rounded",
|
||||
})
|
||||
vim.api.nvim_buf_set_keymap(buf, "n", "q", ":close<CR>", { noremap = true, silent = true })
|
||||
end
|
||||
|
||||
local function copy_ref(opts)
|
||||
-- "%" is the current buffer's file name; ":." makes it relative to the cwd
|
||||
local path = vim.fn.expand("%:.")
|
||||
-- ref is what ends up in the clipboard; start with just the path
|
||||
local ref = path
|
||||
|
||||
if opts.visual then
|
||||
-- '< and '> are only set after leaving visual mode, so read the live selection:
|
||||
-- "v" is the line where visual mode was started (the anchor)
|
||||
local start_line = vim.fn.line("v")
|
||||
-- "." is the line the cursor is on now (the moving end of the selection)
|
||||
local end_line = vim.fn.line(".")
|
||||
-- if the selection was made upward, swap so start is always the smaller line
|
||||
if start_line > end_line then
|
||||
start_line, end_line = end_line, start_line
|
||||
end
|
||||
-- append the range, e.g. "lua/config/keymaps.lua:1:23"
|
||||
ref = path .. ":" .. start_line .. ":" .. end_line
|
||||
end
|
||||
|
||||
-- ask for an optional free-text note on the command line (Enter to skip)
|
||||
local note = vim.fn.input("Prompt (optional): ")
|
||||
if note ~= "" then
|
||||
-- append the note after the ref, separated by a space
|
||||
ref = ref .. " " .. note
|
||||
end
|
||||
|
||||
-- write ref into the "+" register, which is the system clipboard
|
||||
vim.fn.setreg("+", ref)
|
||||
|
||||
-- append to scratch buffer
|
||||
local buf = get_or_create_scratch()
|
||||
local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
|
||||
local insert_pos = #lines
|
||||
if insert_pos > 0 and lines[insert_pos] ~= "" then
|
||||
vim.api.nvim_buf_set_lines(buf, insert_pos, insert_pos, false, { "", ref })
|
||||
else
|
||||
vim.api.nvim_buf_set_lines(buf, insert_pos, insert_pos, false, { ref })
|
||||
end
|
||||
|
||||
-- clear visual selection if we were in visual mode
|
||||
if opts.visual then
|
||||
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>", true, false, true), "n", false)
|
||||
end
|
||||
|
||||
-- show a confirmation message with what was copied
|
||||
vim.notify("Copied: " .. ref)
|
||||
end
|
||||
|
||||
-- normal mode: copy just the file path
|
||||
vim.keymap.set("n", "<leader>bc", function()
|
||||
copy_ref({})
|
||||
end, { desc = "Copy file path" })
|
||||
|
||||
-- visual mode: copy the file path plus the selected line range
|
||||
vim.keymap.set("v", "<leader>bc", function()
|
||||
copy_ref({ visual = true })
|
||||
end, { desc = "Copy file path with line range" })
|
||||
|
||||
-- open the copy-ref scratch buffer
|
||||
vim.keymap.set("n", "<leader>b.", function()
|
||||
open_scratch()
|
||||
end, { desc = "Open copy-ref scratch buffer" })
|
||||
|
||||
-- clear the copy-ref scratch buffer
|
||||
vim.keymap.set("n", "<leader>bx", function()
|
||||
local buf = get_or_create_scratch()
|
||||
vim.api.nvim_buf_set_lines(buf, 0, -1, false, {})
|
||||
vim.notify("Cleared copy-refs buffer")
|
||||
end, { desc = "Clear copy-ref scratch buffer" })
|
||||
|
||||
-- yank the entire copy-ref scratch buffer into the + register
|
||||
vim.keymap.set("n", "<leader>by", function()
|
||||
local buf = get_or_create_scratch()
|
||||
local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
|
||||
local content = table.concat(lines, "\n")
|
||||
vim.fn.setreg("+", content)
|
||||
vim.notify("Yanked copy-refs buffer (" .. #lines .. " lines)")
|
||||
end, { desc = "Yank copy-ref scratch buffer" })
|
||||
+65
-4
@@ -1,14 +1,23 @@
|
||||
[settings]
|
||||
experimental = true
|
||||
env_shell_expand = true
|
||||
|
||||
[env]
|
||||
RUSTUP_HOME = "{{env.HOME}}/.rustup"
|
||||
|
||||
[tools]
|
||||
age = "latest"
|
||||
bun = "latest"
|
||||
codex = "latest"
|
||||
copilot-cli = "latest"
|
||||
dua = "latest"
|
||||
"github:Gitlawb/zero" = "latest"
|
||||
"github:ZinoKader/portal" = "latest"
|
||||
"github:danielmiessler/fabric" = "latest"
|
||||
"github:mrusme/reader" = "latest"
|
||||
"github:raine/workmux" = "latest"
|
||||
"github:rimio-ai/rimz" = "latest"
|
||||
"github:sandboxec/sandboxec" = "latest"
|
||||
"github:ulyssa/iamb" = "latest"
|
||||
"github:zed-industries/codex-acp" = "latest"
|
||||
herdr = "latest"
|
||||
@@ -18,17 +27,43 @@ herdr = "latest"
|
||||
opencode = "latest"
|
||||
pi = "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]
|
||||
run = [
|
||||
'pi install npm:pi-lens',
|
||||
'pi install npm:pi-native-search',
|
||||
'pi install npm:@tintinweb/pi-subagents',
|
||||
'pi install npm:pi-subagents',
|
||||
'pi install npm:context-mode',
|
||||
'pi install npm:@ff-labs/pi-fff',
|
||||
'pi install npm:@dietrichgebert/ponytail',
|
||||
'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]
|
||||
run = [
|
||||
'uv tool install vectorcode'
|
||||
@@ -36,6 +71,32 @@ run = [
|
||||
|
||||
[tasks.skills]
|
||||
run = [
|
||||
'npx skills add SjB/skills',
|
||||
'npx skills add mattpocock/skills'
|
||||
"test -d ~/.local/share/skills || git clone https://github.com/SjB/skills.git ~/.local/share/skills",
|
||||
"git -C ~/.local/share/skills pull -q --rebase || true",
|
||||
"test -L ~/.agents/skills || ln -snf ~/.local/share/skills/skills ~/.agents/skills"
|
||||
]
|
||||
|
||||
[tasks.setup_herdr]
|
||||
run = [
|
||||
'herdr plugin install devashish2203/herdr-worktrunk --yes',
|
||||
'herdr plugin install qu8n/herdr-automatic-rename --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]
|
||||
run = [
|
||||
'omarchy-theme-set rose-pine',
|
||||
]
|
||||
|
||||
[tasks.dark]
|
||||
run = [
|
||||
'omarchy-theme-set gruvbox',
|
||||
]
|
||||
|
||||
@@ -42,7 +42,6 @@ vim.keymap.set("n", "<leader>bn", "<cmd>enew<cr>", { desc = "New File" })
|
||||
-- vim.keymap.set("n", "<leader>bd", "<cmd>bdelete<cr>", { desc = "Unload Buffer" })
|
||||
|
||||
vim.keymap.set("n", "<leader>`", "<cmd>e #<cr>", { desc = "Switch to Other Buffer" })
|
||||
vim.keymap.set("n", "<leader>bc", "<cmd>tabclose<cr>", { desc = "Close Tab" })
|
||||
|
||||
-- Clear search with <esc>
|
||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<cr>', { desc = "clear hlsearch" })
|
||||
|
||||
+3
-83
@@ -60,6 +60,7 @@ vim.opt.shiftround = true
|
||||
vim.opt.shiftwidth = 4
|
||||
vim.opt.softtabstop = 4
|
||||
vim.opt.tabstop = 4
|
||||
vim.opt.exrc = true
|
||||
vim.opt.hidden = true
|
||||
vim.opt.shortmess:append({ W = true, I = true, c = true, C = true })
|
||||
vim.opt.spelllang = { "en" }
|
||||
@@ -114,96 +115,15 @@ vim.filetype.add({
|
||||
})
|
||||
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/3rd/image.nvim' },
|
||||
{ src = "https://github.com/folke/snacks.nvim" },
|
||||
{ src = "https://github.com/folke/trouble.nvim" },
|
||||
{ src = "https://github.com/olimorris/codecompanion.nvim" },
|
||||
{ src = 'https://github.com/Civitasv/cmake-tools.nvim' },
|
||||
{ src = 'https://github.com/Davidyz/VectorCode' },
|
||||
{ src = 'https://github.com/Glhou/jjsigns.nvim', version = 'fix/skip-extra-lines' },
|
||||
{ src = 'https://github.com/HakonHarnes/img-clip.nvim' },
|
||||
{ src = 'https://github.com/JoosepAlviste/nvim-ts-context-commentstring' },
|
||||
{ src = 'https://github.com/L3MON4D3/LuaSnip' },
|
||||
{ src = 'https://github.com/MeanderingProgrammer/render-markdown.nvim' },
|
||||
{ src = 'https://github.com/MeanderingProgrammer/render-markdown.nvim' },
|
||||
{ src = 'https://github.com/MunifTanjim/nui.nvim' },
|
||||
{ src = 'https://github.com/NeogitOrg/neogit' },
|
||||
{ src = 'https://github.com/PhantomYdn/fabric-ai.nvim' },
|
||||
{ src = 'https://github.com/Saecki/crates.nvim' },
|
||||
{ src = 'https://github.com/Saghen/blink.cmp', version = vim.version.range('1.*') },
|
||||
{ src = 'https://github.com/SjB/orgmode', version = 'sjb-wip' },
|
||||
{ src = 'https://github.com/SmiteshP/nvim-navic' },
|
||||
{ src = 'https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim' },
|
||||
{ src = 'https://github.com/akinsho/org-bullets.nvim' },
|
||||
{ src = 'https://github.com/akinsho/toggleterm.nvim' },
|
||||
{ src = 'https://github.com/SjB/codecompanion-agentskills.nvim', version = 'support_disable_model_invocation_flag' },
|
||||
{ src = 'https://github.com/carlos-algms/agentic.nvim' },
|
||||
{ src = 'https://github.com/chipsenkbeil/org-roam.nvim' },
|
||||
{ src = 'https://github.com/christoomey/vim-tmux-navigator' },
|
||||
-- { src = 'https://github.com/copilotlsp-nvim/copilot-lsp' },
|
||||
{ src = 'https://github.com/esmuellert/codediff.nvim' },
|
||||
{ src = 'https://github.com/fang2hou/blink-copilot' },
|
||||
{ src = 'https://github.com/folke/flash.nvim' },
|
||||
{ src = 'https://github.com/folke/persistence.nvim' },
|
||||
{ src = 'https://github.com/folke/todo-comments.nvim' },
|
||||
{ src = 'https://github.com/folke/which-key.nvim' },
|
||||
{ src = 'https://github.com/franco-ruggeri/codecompanion-spinner.nvim' },
|
||||
{ src = 'https://github.com/hat0uma/csvview.nvim' },
|
||||
{ src = 'https://github.com/hedyhli/outline.nvim' },
|
||||
{ src = 'https://github.com/iamcco/markdown-preview.nvim' },
|
||||
{ src = 'https://github.com/j-hui/fidget.nvim' },
|
||||
{ src = 'https://github.com/jay-babu/mason-nvim-dap.nvim' },
|
||||
{ src = 'https://github.com/julienvincent/hunk.nvim' },
|
||||
{ src = 'https://github.com/lervag/vimtex' },
|
||||
{ src = 'https://github.com/lewis6991/gitsigns.nvim' },
|
||||
{ src = 'https://github.com/mbbill/undotree' },
|
||||
{ src = 'https://github.com/SjB/meow.review.nvim', version = 'fix-invalid-buffer-id' },
|
||||
{ src = 'https://github.com/mfussenegger/nvim-ansible' },
|
||||
{ src = 'https://github.com/mfussenegger/nvim-dap' },
|
||||
{ src = 'https://github.com/mistweaverco/kulala.nvim' },
|
||||
{ src = 'https://github.com/moyiz/blink-emoji.nvim' },
|
||||
{ src = 'https://github.com/neovim/nvim-lspconfig' },
|
||||
{ src = 'https://github.com/norcalli/nvim-colorizer.lua' },
|
||||
{ src = 'https://github.com/nvim-lua/plenary.nvim' },
|
||||
{ src = 'https://github.com/nvim-lualine/lualine.nvim' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.ai' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.align' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.bracketed' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.extra' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.files' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.hipatterns' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.move' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.operators' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.sessions' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.splitjoin' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.surround' },
|
||||
{ src = 'https://github.com/nvim-neotest/nvim-nio' },
|
||||
{ src = 'https://github.com/nvim-pack/nvim-spectre' },
|
||||
{ src = 'https://github.com/nvim-tree/nvim-web-devicons' },
|
||||
{ src = 'https://github.com/nvim-treesitter/nvim-treesitter', version = 'main' },
|
||||
{ src = 'https://github.com/nvim-treesitter/nvim-treesitter-context' },
|
||||
{ src = 'https://github.com/nvim-treesitter/nvim-treesitter-context' },
|
||||
{ src = 'https://github.com/nvim-treesitter/nvim-treesitter-textobjects', version = 'main' },
|
||||
{ src = 'https://github.com/romus204/tree-sitter-manager.nvim' },
|
||||
{ src = 'https://github.com/otavioschwanck/arrow.nvim' },
|
||||
{ src = 'https://github.com/rafamadriz/friendly-snippets' },
|
||||
{ src = 'https://github.com/rafikdraoui/jj-diffconflicts' },
|
||||
{ src = 'https://github.com/ravitemer/codecompanion-history.nvim' },
|
||||
{ src = 'https://github.com/ravitemer/codecompanion-history.nvim' },
|
||||
{ src = 'https://github.com/rcarriga/nvim-dap-ui' },
|
||||
{ src = 'https://github.com/salkin-mada/openscad.nvim' },
|
||||
{ src = 'https://github.com/sheng-tse/jupynvim' },
|
||||
{ src = 'https://github.com/sindrets/diffview.nvim' },
|
||||
{ src = 'https://github.com/stevearc/conform.nvim' },
|
||||
{ src = 'https://github.com/stevearc/overseer.nvim' },
|
||||
{ src = 'https://github.com/stevearc/quicker.nvim' },
|
||||
{ src = 'https://github.com/ten3roberts/window-picker.nvim' },
|
||||
{ src = 'https://github.com/thunder-coding/zincoxide' },
|
||||
{ src = 'https://github.com/ttgrules/cc-adapter-copilot-cli-acp' },
|
||||
{ src = 'https://github.com/uhs-robert/sshfs.nvim' },
|
||||
{ src = 'https://github.com/utilyre/barbecue.nvim' },
|
||||
{ src = 'https://github.com/williamboman/mason-lspconfig.nvim' },
|
||||
{ src = 'https://github.com/williamboman/mason.nvim' },
|
||||
{ src = 'https://github.com/zbirenbaum/copilot.lua' },
|
||||
{ src = 'https://plugins.ejri.dev/mise.nvim' },
|
||||
})
|
||||
|
||||
vim.keymap.set({ 'n' }, '<leader>xu', function() vim.pack.update() end, { desc = "update plugins" })
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/carlos-algms/agentic.nvim' },
|
||||
})
|
||||
|
||||
require('agentic').setup({
|
||||
-- Available by default: "claude-agent-acp" | "gemini-acp" | "codex-acp" | "opencode-acp" | "cursor-acp" | "auggie-acp" | "mistral-vibe-acp"
|
||||
provider = "opencode-acp", -- setting the name here is all you need to get started
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/otavioschwanck/arrow.nvim' },
|
||||
})
|
||||
|
||||
require('arrow').setup({
|
||||
show_icons = true,
|
||||
leader_key = ';', -- Recommended to be a single key
|
||||
|
||||
@@ -1 +1,4 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/utilyre/barbecue.nvim' },
|
||||
})
|
||||
require('barbecue').setup()
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/Saghen/blink.cmp', version = vim.version.range('1.*') },
|
||||
{ src = 'https://github.com/fang2hou/blink-copilot' },
|
||||
{ src = 'https://github.com/moyiz/blink-emoji.nvim' },
|
||||
})
|
||||
|
||||
require('blink.cmp').setup({
|
||||
enabled = function()
|
||||
local filetype = vim.bo[0].filetype
|
||||
@@ -48,11 +54,19 @@ require('blink.cmp').setup({
|
||||
signature = { enabled = true },
|
||||
sources = {
|
||||
per_filetype = {
|
||||
org = {'orgmode'}
|
||||
["org"] = {'orgmode'},
|
||||
["pi-chat-prompt"] = { "pi" },
|
||||
},
|
||||
default = { 'orgmode', 'lsp', 'copilot', 'snippets', 'path', 'omni', 'buffer', 'codecompanion', 'markdown' },
|
||||
default = { 'orgmode', 'lsp', 'copilot', 'snippets', 'path', 'omni', 'buffer', 'codecompanion', 'pi', 'markdown' },
|
||||
-- default = { 'orgmode', 'lsp', 'snippets', 'path', 'omni', 'buffer', 'codecompanion', 'markdown' },
|
||||
--
|
||||
providers = {
|
||||
pi = {
|
||||
name = "Pi",
|
||||
module = "pi.completion.blink",
|
||||
enabled = true,
|
||||
score_offset = 100,
|
||||
},
|
||||
codecompanion = {
|
||||
name = "CodeCompanion" ,
|
||||
module = "codecompanion.providers.completion.blink",
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/Civitasv/cmake-tools.nvim' },
|
||||
{ src = 'https://github.com/stevearc/overseer.nvim' },
|
||||
})
|
||||
|
||||
require("overseer").setup({
|
||||
templates = { "builtin", "user" },
|
||||
component_aliases = {
|
||||
default = {
|
||||
{ 'display_duration', detail_level = 2 },
|
||||
'on_output_summarize',
|
||||
'on_exit_set_status',
|
||||
'on_complete_notify',
|
||||
'on_result_diagnostics',
|
||||
{'on_result_diagnostics_quickfix', open = true, close = true},
|
||||
},
|
||||
default_vscode = {
|
||||
'default',
|
||||
'on_result_diagnostics',
|
||||
{'on_result_diagnostics_quickfix', open = true, close = true},
|
||||
'on_complete_notify',
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
-- local pm = require("overseer.template.vscode.problem_matcher")
|
||||
-- pm.register_problem_matcher("$rustc", {
|
||||
-- fileLocation = { "autoDetect", "${cwd}" },
|
||||
-- pattern = {
|
||||
-- --regexp = "^(.*?)-->\\s+(.*?):(\\d+):(\\d+)$",
|
||||
-- -- vim_regexp = "\\v^(.*?)-->\\s+(.*?):(\\d+):(\\d+)$",
|
||||
-- regexp = "^\\s+-->\\s*([^:]*):(\\d+):(\\d+)$",
|
||||
-- vim_regexp = "\\v^\\s+-->\\s*([^:]*):(\\d+):(\\d+)$",
|
||||
-- file = 1,
|
||||
-- line = 2,
|
||||
-- column = 3,
|
||||
-- }
|
||||
-- })
|
||||
|
||||
local osys = require("cmake-tools.osys")
|
||||
require("cmake-tools").setup {
|
||||
cmake_command = "cmake", -- this is used to specify cmake command path
|
||||
ctest_command = "ctest", -- this is used to specify ctest command path
|
||||
cmake_use_preset = true,
|
||||
cmake_regenerate_on_save = true, -- auto generate when save CMakeLists.txt
|
||||
cmake_generate_options = { "-DCMAKE_EXPORT_COMPILE_COMMANDS=1" }, -- this will be passed when invoke `CMakeGenerate`
|
||||
cmake_build_options = {}, -- this will be passed when invoke `CMakeBuild`
|
||||
-- support macro expansion:
|
||||
-- ${kit}
|
||||
-- ${kitGenerator}
|
||||
-- ${variant:xx}
|
||||
cmake_build_directory = function()
|
||||
if osys.iswin32 then
|
||||
return "out\\${variant:buildType}"
|
||||
end
|
||||
return "out/${variant:buildType}"
|
||||
end, -- this is used to specify generate directory for cmake, allows macro expansion, can be a string or a function returning the string, relative to cwd.
|
||||
cmake_soft_link_compile_commands = true, -- this will automatically make a soft link from compile commands file to project root dir
|
||||
cmake_compile_commands_from_lsp = false, -- this will automatically set compile commands file location using lsp, to use it, please set `cmake_soft_link_compile_commands` to false
|
||||
cmake_kits_path = nil, -- this is used to specify global cmake kits path, see CMakeKits for detailed usage
|
||||
cmake_variants_message = {
|
||||
short = { show = true }, -- whether to show short message
|
||||
long = { show = true, max_length = 40 }, -- whether to show long message
|
||||
},
|
||||
cmake_dap_configuration = { -- debug settings for cmake
|
||||
name = "cpp",
|
||||
type = "codelldb",
|
||||
request = "launch",
|
||||
stopOnEntry = false,
|
||||
runInTerminal = true,
|
||||
console = "integratedTerminal",
|
||||
},
|
||||
cmake_executor = { -- executor to use
|
||||
name = "quickfix", -- name of the executor
|
||||
opts = {}, -- the options the executor will get, possible values depend on the executor type. See `default_opts` for possible values.
|
||||
default_opts = { -- a list of default and possible values for executors
|
||||
quickfix = {
|
||||
show = "always", -- "always", "only_on_error"
|
||||
position = "belowright", -- "vertical", "horizontal", "leftabove", "aboveleft", "rightbelow", "belowright", "topleft", "botright", use `:h vertical` for example to see help on them
|
||||
size = 10,
|
||||
encoding = "utf-8", -- if encoding is not "utf-8", it will be converted to "utf-8" using `vim.fn.iconv`
|
||||
auto_close_when_success = true, -- typically, you can use it with the "always" option; it will auto-close the quickfix buffer if the execution is successful.
|
||||
},
|
||||
toggleterm = {
|
||||
direction = "float", -- 'vertical' | 'horizontal' | 'tab' | 'float'
|
||||
close_on_exit = false, -- whether close the terminal when exit
|
||||
auto_scroll = true, -- whether auto scroll to the bottom
|
||||
singleton = true, -- single instance, autocloses the opened one, if present
|
||||
},
|
||||
overseer = {
|
||||
new_task_opts = {
|
||||
strategy = {
|
||||
"toggleterm",
|
||||
direction = "horizontal",
|
||||
autos_croll = true,
|
||||
quit_on_exit = "success"
|
||||
}
|
||||
}, -- options to pass into the `overseer.new_task` command
|
||||
on_new_task = function(task)
|
||||
require("overseer").open(
|
||||
{ enter = false, direction = "right" }
|
||||
)
|
||||
end, -- a function that gets overseer.Task when it is created, before calling `task:start`
|
||||
},
|
||||
terminal = {
|
||||
name = "Main Terminal",
|
||||
prefix_name = "[CMakeTools]: ", -- This must be included and must be unique, otherwise the terminals will not work. Do not use a simple spacebar " ", or any generic name
|
||||
split_direction = "horizontal", -- "horizontal", "vertical"
|
||||
split_size = 11,
|
||||
|
||||
-- Window handling
|
||||
single_terminal_per_instance = true, -- Single viewport, multiple windows
|
||||
single_terminal_per_tab = true, -- Single viewport per tab
|
||||
keep_terminal_static_location = true, -- Static location of the viewport if avialable
|
||||
auto_resize = true, -- Resize the terminal if it already exists
|
||||
|
||||
-- Running Tasks
|
||||
start_insert = false, -- If you want to enter terminal with :startinsert upon using :CMakeRun
|
||||
focus = false, -- Focus on terminal when cmake task is launched.
|
||||
do_not_add_newline = false, -- Do not hit enter on the command inserted when using :CMakeRun, allowing a chance to review or modify the command before hitting enter.
|
||||
}, -- terminal executor uses the values in cmake_terminal
|
||||
},
|
||||
},
|
||||
cmake_runner = { -- runner to use
|
||||
name = "terminal", -- name of the runner
|
||||
opts = {}, -- the options the runner will get, possible values depend on the runner type. See `default_opts` for possible values.
|
||||
default_opts = { -- a list of default and possible values for runners
|
||||
quickfix = {
|
||||
show = "always", -- "always", "only_on_error"
|
||||
position = "belowright", -- "bottom", "top"
|
||||
size = 10,
|
||||
encoding = "utf-8",
|
||||
auto_close_when_success = true, -- typically, you can use it with the "always" option; it will auto-close the quickfix buffer if the execution is successful.
|
||||
},
|
||||
toggleterm = {
|
||||
direction = "float", -- 'vertical' | 'horizontal' | 'tab' | 'float'
|
||||
close_on_exit = false, -- whether close the terminal when exit
|
||||
auto_scroll = true, -- whether auto scroll to the bottom
|
||||
singleton = true, -- single instance, autocloses the opened one, if present
|
||||
},
|
||||
overseer = {
|
||||
new_task_opts = {
|
||||
strategy = {
|
||||
"toggleterm",
|
||||
direction = "horizontal",
|
||||
autos_croll = true,
|
||||
quit_on_exit = "success"
|
||||
}
|
||||
}, -- options to pass into the `overseer.new_task` command
|
||||
on_new_task = function(task)
|
||||
end, -- a function that gets overseer.Task when it is created, before calling `task:start`
|
||||
},
|
||||
terminal = {
|
||||
name = "Main Terminal",
|
||||
prefix_name = "[CMakeTools]: ", -- This must be included and must be unique, otherwise the terminals will not work. Do not use a simple spacebar " ", or any generic name
|
||||
split_direction = "horizontal", -- "horizontal", "vertical"
|
||||
split_size = 11,
|
||||
|
||||
-- Window handling
|
||||
single_terminal_per_instance = true, -- Single viewport, multiple windows
|
||||
single_terminal_per_tab = true, -- Single viewport per tab
|
||||
keep_terminal_static_location = true, -- Static location of the viewport if avialable
|
||||
auto_resize = true, -- Resize the terminal if it already exists
|
||||
|
||||
-- Running Tasks
|
||||
start_insert = false, -- If you want to enter terminal with :startinsert upon using :CMakeRun
|
||||
focus = false, -- Focus on terminal when cmake task is launched.
|
||||
do_not_add_newline = false, -- Do not hit enter on the command inserted when using :CMakeRun, allowing a chance to review or modify the command before hitting enter.
|
||||
},
|
||||
},
|
||||
},
|
||||
cmake_notifications = {
|
||||
runner = { enabled = true },
|
||||
executor = { enabled = true },
|
||||
spinner = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" }, -- icons used for progress display
|
||||
refresh_rate_ms = 100, -- how often to iterate icons
|
||||
},
|
||||
cmake_virtual_text_support = true, -- Show the target related to current file using virtual text (at right corner)
|
||||
}
|
||||
|
||||
vim.keymap.set('n', "<leader>uo", "<cmd>OverseerToggle<CR>", { desc = "Overseer Toggle" })
|
||||
vim.keymap.set('n', "<F5>", "<cmd>OverseerRun<CR>", { desc = "Run Overseer" })
|
||||
vim.keymap.set('n', "<F6>", "<cmd>OverseerToggle<CR>", { desc = "Overseer Toggle" })
|
||||
@@ -1,3 +1,10 @@
|
||||
vim.pack.add({
|
||||
{ src = "https://github.com/olimorris/codecompanion.nvim" },
|
||||
{ src = 'https://github.com/Davidyz/VectorCode' },
|
||||
{ src = 'https://github.com/SjB/codecompanion-agentskills.nvim', version = 'support_disable_model_invocation_flag' },
|
||||
{ src = 'https://github.com/franco-ruggeri/codecompanion-spinner.nvim' },
|
||||
{ src = 'https://github.com/ravitemer/codecompanion-history.nvim' },
|
||||
})
|
||||
|
||||
vim.keymap.set({'n', 'v'}, '<leader>mct', '<cmd>CodeCompanionChat Toggle<cr>', { noremap = true, silent = true, desc = "CC Toggle" })
|
||||
vim.keymap.set({'n', 'v'}, '<leader>mca', '<cmd>CodeCompanionActions<cr>', { noremap = true, silent = true, desc = "CC Action" })
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/stevearc/conform.nvim' },
|
||||
})
|
||||
|
||||
local conform = require('conform')
|
||||
|
||||
@@ -18,8 +21,8 @@ conform.setup({
|
||||
cpp = { "clang_format" },
|
||||
lua = { 'stylua' },
|
||||
go = { "goimports", "gofmt" },
|
||||
rust = { "dprint", "rustfmt", lsp_format = "fallback" },
|
||||
python = { "isort", "black", stop_after_first = true },
|
||||
rust = { "rustfmt", "dprint", lsp_format = "fallback" },
|
||||
python = { "ruff", "dprint", stop_after_first = true },
|
||||
javascript = { "dprint", "prettier", stop_after_first = true },
|
||||
markdown = { "dprint", "prettier", stop_after_first = true },
|
||||
javascriptreact = { "dprint", "prettier", stop_after_first = true },
|
||||
@@ -28,12 +31,13 @@ conform.setup({
|
||||
svelte = { "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',
|
||||
function()
|
||||
conform.format { async = true, lsp_format = 'fallback' }
|
||||
end,
|
||||
{ desc = 'Format buffer' })
|
||||
|
||||
|
||||
function()
|
||||
conform.format { async = true }
|
||||
end,
|
||||
{ desc = 'Format buffer' })
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/ttgrules/cc-adapter-copilot-cli-acp' },
|
||||
{ src = 'https://github.com/zbirenbaum/copilot.lua' },
|
||||
-- { src = 'https://github.com/copilotlsp-nvim/copilot-lsp' },
|
||||
})
|
||||
|
||||
vim.g.copilot_nes_debounce = 500
|
||||
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
-- from smnatale's github.com/smnatale/nvim-config
|
||||
--
|
||||
-- Copy file path / selection reference for pasting into AI chats
|
||||
|
||||
local scratch_buf = nil
|
||||
local scratch_buf_name = "copy-refs"
|
||||
|
||||
local function get_or_create_scratch()
|
||||
-- if we already created a buffer and it's still valid, reuse it
|
||||
if scratch_buf and vim.api.nvim_buf_is_valid(scratch_buf) then
|
||||
return scratch_buf
|
||||
end
|
||||
|
||||
-- look for an existing buffer by name
|
||||
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_is_valid(buf) then
|
||||
local name = vim.api.nvim_buf_get_name(buf)
|
||||
if name:match("/" .. scratch_buf_name .. "$") or name == scratch_buf_name then
|
||||
scratch_buf = buf
|
||||
return scratch_buf
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- create a new unlisted scratch buffer
|
||||
scratch_buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.api.nvim_buf_set_name(scratch_buf, scratch_buf_name)
|
||||
vim.bo[scratch_buf].buftype = "nofile"
|
||||
vim.bo[scratch_buf].bufhidden = "hide"
|
||||
vim.bo[scratch_buf].swapfile = false
|
||||
|
||||
return scratch_buf
|
||||
end
|
||||
|
||||
local function open_scratch()
|
||||
local buf = get_or_create_scratch()
|
||||
local width = math.floor(vim.o.columns * 0.8)
|
||||
local height = math.floor(vim.o.lines * 0.8)
|
||||
local row = math.floor((vim.o.lines - height) / 2)
|
||||
local col = math.floor((vim.o.columns - width) / 2)
|
||||
local _ = vim.api.nvim_open_win(buf, true, {
|
||||
relative = "editor",
|
||||
width = width,
|
||||
height = height,
|
||||
row = row,
|
||||
col = col,
|
||||
style = "minimal",
|
||||
border = "rounded",
|
||||
})
|
||||
vim.api.nvim_buf_set_keymap(buf, "n", "q", ":close<CR>", { noremap = true, silent = true })
|
||||
end
|
||||
|
||||
local function copy_ref(opts)
|
||||
-- "%" is the current buffer's file name; ":." makes it relative to the cwd
|
||||
local path = vim.fn.expand("%:.")
|
||||
-- ref is what ends up in the clipboard; start with just the path
|
||||
local ref = path
|
||||
|
||||
if opts.visual then
|
||||
-- '< and '> are only set after leaving visual mode, so read the live selection:
|
||||
-- "v" is the line where visual mode was started (the anchor)
|
||||
local start_line = vim.fn.line("v")
|
||||
-- "." is the line the cursor is on now (the moving end of the selection)
|
||||
local end_line = vim.fn.line(".")
|
||||
-- if the selection was made upward, swap so start is always the smaller line
|
||||
if start_line > end_line then
|
||||
start_line, end_line = end_line, start_line
|
||||
end
|
||||
-- append the range, e.g. "lua/config/keymaps.lua:1:23"
|
||||
ref = path .. ":" .. start_line .. ":" .. end_line
|
||||
end
|
||||
|
||||
-- ask for an optional free-text note on the command line (Enter to skip)
|
||||
local note = vim.fn.input("Prompt (optional): ")
|
||||
if note ~= "" then
|
||||
-- append the note after the ref, separated by a space
|
||||
ref = ref .. " " .. note
|
||||
end
|
||||
|
||||
-- write ref into the "+" register, which is the system clipboard
|
||||
vim.fn.setreg("+", ref)
|
||||
|
||||
-- append to scratch buffer
|
||||
local buf = get_or_create_scratch()
|
||||
local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
|
||||
local insert_pos = #lines
|
||||
if insert_pos > 0 and lines[insert_pos] ~= "" then
|
||||
vim.api.nvim_buf_set_lines(buf, insert_pos, insert_pos, false, { "", ref })
|
||||
else
|
||||
vim.api.nvim_buf_set_lines(buf, insert_pos, insert_pos, false, { ref })
|
||||
end
|
||||
|
||||
-- clear visual selection if we were in visual mode
|
||||
if opts.visual then
|
||||
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>", true, false, true), "n", false)
|
||||
end
|
||||
|
||||
-- show a confirmation message with what was copied
|
||||
vim.notify("Copied: " .. ref)
|
||||
end
|
||||
|
||||
-- normal mode: copy just the file path
|
||||
vim.keymap.set("n", "<leader>bc", function()
|
||||
copy_ref({})
|
||||
end, { desc = "Copy file path" })
|
||||
|
||||
-- visual mode: copy the file path plus the selected line range
|
||||
vim.keymap.set("v", "<leader>bc", function()
|
||||
copy_ref({ visual = true })
|
||||
end, { desc = "Copy file path with line range" })
|
||||
|
||||
-- open the copy-ref scratch buffer
|
||||
vim.keymap.set("n", "<leader>b.", function()
|
||||
open_scratch()
|
||||
end, { desc = "Open copy-ref scratch buffer" })
|
||||
|
||||
-- clear the copy-ref scratch buffer
|
||||
vim.keymap.set("n", "<leader>bx", function()
|
||||
local buf = get_or_create_scratch()
|
||||
vim.api.nvim_buf_set_lines(buf, 0, -1, false, {})
|
||||
vim.notify("Cleared copy-refs buffer")
|
||||
end, { desc = "Clear copy-ref scratch buffer" })
|
||||
|
||||
-- yank the entire copy-ref scratch buffer into the + register
|
||||
vim.keymap.set("n", "<leader>by", function()
|
||||
local buf = get_or_create_scratch()
|
||||
local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
|
||||
local content = table.concat(lines, "\n")
|
||||
vim.fn.setreg("+", content)
|
||||
vim.notify("Yanked copy-refs buffer (" .. #lines .. " lines)")
|
||||
end, { desc = "Yank copy-ref scratch buffer" })
|
||||
@@ -1,3 +1,6 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/Saecki/crates.nvim' },
|
||||
})
|
||||
|
||||
local crates = require("crates")
|
||||
local opts = { silent = true }
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/hat0uma/csvview.nvim' },
|
||||
})
|
||||
|
||||
require('csvview').setup({
|
||||
parser = { comments = { "#", "//" } },
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
if vim.fn.executable("fabric-ai") == 1 then
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/PhantomYdn/fabric-ai.nvim' },
|
||||
})
|
||||
|
||||
require('fabric-ai').setup({
|
||||
-- Default configuration (all optional)
|
||||
fabric_path = "fabric-ai", -- Path to Fabric CLI
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/folke/flash.nvim' },
|
||||
})
|
||||
|
||||
require('flash').setup({
|
||||
modes = {
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/lewis6991/gitsigns.nvim' },
|
||||
})
|
||||
|
||||
vim.keymap.set({ 'n' }, '<leader>ug', "Gitsigns toggle_signs", { desc = 'Gitsigns toggle' })
|
||||
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
if vim.fn.executable("jj") == 1 then
|
||||
vim.pack.add({ { src = 'https://github.com/NicolasGB/jj.nvim' } })
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/Glhou/jjsigns.nvim', version = 'fix/skip-extra-lines' },
|
||||
{ src = 'https://github.com/julienvincent/hunk.nvim' },
|
||||
{ src = 'https://github.com/NicolasGB/jj.nvim' },
|
||||
{ src = 'https://github.com/rafikdraoui/jj-diffconflicts' },
|
||||
})
|
||||
|
||||
local cmd = require("jj.cmd")
|
||||
local annotate = require("jj.annotate")
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/sheng-tse/jupynvim' },
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd('PackChanged', {
|
||||
callback = function()
|
||||
local core = vim.fn.stdpath("data") .. "/site/pack/core/opt/jupynvim/core"
|
||||
vim.fn.system({
|
||||
"cargo", "build", "--release",
|
||||
"--manifest-path", core .. "/Cargo.toml",
|
||||
})
|
||||
end
|
||||
})
|
||||
|
||||
require("jupynvim").setup({
|
||||
log_level = "debug",
|
||||
image_renderer = "placeholder", -- "placeholder", "kitty", or "chafa"
|
||||
})
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
if vim.fn.executable("just") == 1 then
|
||||
vim.pack.add({ { src = 'https://github.com/al1-ce/just.nvim' } })
|
||||
|
||||
require("just").setup({
|
||||
fidget_message_limit = 32, -- limit for length of fidget progress message
|
||||
open_qf_on_error = true, -- opens quickfix when task fails
|
||||
open_qf_on_run = true, -- opens quickfix when running `run` task (`:JustRun`)
|
||||
open_qf_on_any = false; -- opens quickfix when running any task (overrides other open_qf options)
|
||||
autoscroll_qf = true, -- automatically scroll quickfix window on output
|
||||
register_commands = true, -- if set to true then commands (:Just*) will be registered
|
||||
notify = vim.notify, -- what to use to show messages/errors
|
||||
})
|
||||
end
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
-- vim.pack.add({
|
||||
-- { src = 'https://github.com/mistweaverco/kulala.nvim' },
|
||||
-- })
|
||||
--
|
||||
-- require('kulala').setup()
|
||||
@@ -1,3 +1,13 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/williamboman/mason-lspconfig.nvim' },
|
||||
{ src = 'https://github.com/williamboman/mason.nvim' },
|
||||
{ src = 'https://github.com/neovim/nvim-lspconfig' },
|
||||
{ src = 'https://github.com/rcarriga/nvim-dap-ui' },
|
||||
{ src = 'https://github.com/mfussenegger/nvim-dap' },
|
||||
{ src = 'https://github.com/jay-babu/mason-nvim-dap.nvim' },
|
||||
{ src = 'https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim' },
|
||||
})
|
||||
|
||||
vim.keymap.set("i", "<C-.>", function()
|
||||
if not vim.lsp.inline_completion.get() then
|
||||
return "<C-.>"
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/nvim-lualine/lualine.nvim' },
|
||||
})
|
||||
|
||||
local function truncate_branch_name(branch)
|
||||
if not branch or branch == "" then
|
||||
return ""
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/L3MON4D3/LuaSnip' },
|
||||
{ src = 'https://github.com/rafamadriz/friendly-snippets' },
|
||||
})
|
||||
|
||||
-- build = "make install_jsregexp",
|
||||
require('luasnip.loaders.from_vscode').lazy_load()
|
||||
require('luasnip.loaders.from_vscode').lazy_load({ paths = "./json_snippets" })
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/iamcco/markdown-preview.nvim' },
|
||||
{ src = 'https://github.com/MeanderingProgrammer/render-markdown.nvim' },
|
||||
})
|
||||
vim.g.mkdp_filetypes = { "markdown" }
|
||||
|
||||
vim.keymap.set("n", "<leader>xmp", "<cmd>MarkdownPreview<CR>", { desc ="Markdown Preview" })
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/SjB/meow.review.nvim', version = 'fix-invalid-buffer-id' },
|
||||
})
|
||||
|
||||
require("meow.review").setup({
|
||||
-- Your custom configuration goes here
|
||||
})
|
||||
|
||||
@@ -1,3 +1,17 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/nvim-mini/mini.ai' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.align' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.bracketed' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.extra' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.files' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.hipatterns' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.move' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.operators' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.sessions' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.splitjoin' },
|
||||
{ src = 'https://github.com/nvim-mini/mini.surround' },
|
||||
})
|
||||
|
||||
local MiniExtra = require('mini.extra')
|
||||
local ai = require('mini.ai')
|
||||
local spec_treesitter = ai.gen_spec.treesitter
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
if vim.fn.executable("mise") == 1 then
|
||||
vim.pack.add({
|
||||
{ src = 'https://plugins.ejri.dev/mise.nvim' },
|
||||
})
|
||||
|
||||
require('mise').setup({
|
||||
unset_vars = true,
|
||||
load_on_setup = true,
|
||||
force_run = true,
|
||||
})
|
||||
|
||||
vim.keymap.set({'n'}, '<leader>xM', '<cmd>Lazy reload mise.nvim<cr>', { desc = "Reload mise environment" })
|
||||
end
|
||||
@@ -0,0 +1,25 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/NeogitOrg/neogit' },
|
||||
{ src = 'https://github.com/sindrets/diffview.nvim' },
|
||||
})
|
||||
|
||||
require('neogit').setup({
|
||||
-- disable_context_highlighting = true,
|
||||
disable_commit_confirmation = true,
|
||||
disable_insert_on_commit = false,
|
||||
disable_signs = true,
|
||||
integrations = { diffview = true, fz_lua = false },
|
||||
auto_refresh = false,
|
||||
console_timeout = 5000,
|
||||
auto_show_console = false,
|
||||
sections = {
|
||||
stashes = {
|
||||
folded = false,
|
||||
},
|
||||
recent = { folded = false },
|
||||
},
|
||||
})
|
||||
|
||||
vim.keymap.set({'n'}, '<leader>vn', '<cmd>Neogit kind=auto<cr>', { desc = 'Neogit' })
|
||||
vim.keymap.set({'n'}, '<leader>vN', '<cmd>Neogit kind=floating<cr>', { desc = 'Neogit' })
|
||||
|
||||
@@ -1,2 +1,6 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/mfussenegger/nvim-ansible' },
|
||||
})
|
||||
|
||||
vim.keymap.set('v', '<leader>xa', function() require('ansible').run() end, { buffer = true, silent = true, desc = 'execute via ansible' })
|
||||
vim.keymap.set('n', '<leader>xa', ":w<CR> :lua require('ansible').run()<CR>", { buffer = true, silent = true, desc = 'execute via ansible' })
|
||||
|
||||
@@ -5,7 +5,7 @@ if vim.fn.isdirectory(vim.fn.expand "~" .. "/Documents/sjb-brain/") == 1 then
|
||||
require("obsidian").setup({
|
||||
legacy_commands = false,
|
||||
picker = {
|
||||
name = "snacks.pick",
|
||||
name = "snacks.picker",
|
||||
},
|
||||
ui = {
|
||||
enable = true,
|
||||
|
||||
@@ -1,2 +1,6 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/salkin-mada/openscad.nvim' },
|
||||
})
|
||||
|
||||
vim.g.openscad_load_snippets = true
|
||||
require("openscad").setup({})
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/nvim-orgmode/orgmode' },
|
||||
{ src = 'https://github.com/chipsenkbeil/org-roam.nvim' },
|
||||
{ src = 'https://github.com/akinsho/org-bullets.nvim' },
|
||||
})
|
||||
require('orgmode').setup({
|
||||
ui = {
|
||||
input = {
|
||||
use_vim_ui = true
|
||||
}
|
||||
},
|
||||
org_agenda_files = {'~/Documents/notes/*project*org', '~/Documents/notes/Inbox*org', '~/Documents/journals/*.org'},
|
||||
org_default_notes_file = "~/Documents/notes/Inbox.org",
|
||||
org_agenda_files = {'~/Documents/GTD/*project*org', '~/Documents/GTD/Inbox*org', '~/Documents/GTD/journals/*.org'},
|
||||
org_default_notes_file = "~/Documents/GTD/Inbox.org",
|
||||
org_todo_keywords = { 'TODO(t)', 'NEXT(n)', '|', 'DONE(d)', 'DELEGATED(a)' },
|
||||
mappings = {
|
||||
capture = {
|
||||
@@ -21,7 +25,7 @@ require('orgmode').setup({
|
||||
},
|
||||
j = {
|
||||
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",
|
||||
},
|
||||
},
|
||||
@@ -61,7 +65,7 @@ require('org-roam').setup({
|
||||
bindings = {
|
||||
prefix = "<LocalLeader>oO",
|
||||
},
|
||||
directory = "~/Documents/notes",
|
||||
directory = "~/Documents/GTD",
|
||||
extensions = {
|
||||
dailies = {
|
||||
directory = "journals"
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/hedyhli/outline.nvim' },
|
||||
})
|
||||
|
||||
require('outline').setup({
|
||||
symbol_folding = {
|
||||
-- Unfold entire symbol tree by default with false, otherwise enter a
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/folke/persistence.nvim' },
|
||||
})
|
||||
|
||||
require("persistence").setup({
|
||||
dir = vim.fn.expand(vim.fn.stdpath("state") .. "/sessions/"), -- directory where session files are saved
|
||||
options = { "buffers", "curdir", "tabpages", "winsize" }, -- sessionoptions used when saving sessions
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
vim.keymap.set({ 'n' }, '<leader>mp', '<cmd>Pi<cr>', { noremap = true, silent = true, desc = "Toggle Pi Agent" })
|
||||
vim.pack.add({
|
||||
"https://github.com/zgs225/pi2.nvim",
|
||||
-- Default chat-history renderer (render.engine = "render-markdown"):
|
||||
"https://github.com/MeanderingProgrammer/render-markdown.nvim",
|
||||
})
|
||||
|
||||
require("pi").setup()
|
||||
@@ -1 +1,4 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/stevearc/quicker.nvim' },
|
||||
})
|
||||
require('quicker').setup()
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
vim.pack.add({
|
||||
{ src = "https://github.com/folke/snacks.nvim" },
|
||||
})
|
||||
|
||||
require('snacks').setup({
|
||||
animate = {
|
||||
enabled = false,
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/nvim-pack/nvim-spectre' },
|
||||
})
|
||||
|
||||
vim.keymap.set({ 'n' }, "<leader>sr", function() require("spectre").open() end, { desc = "Replace in files (Spectre)" })
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/uhs-robert/sshfs.nvim' },
|
||||
})
|
||||
|
||||
require('sshfs').setup({
|
||||
mounts = {
|
||||
base_dir = vim.fn.expand("$HOME") .. "/Public", -- where remote mounts are created
|
||||
},
|
||||
lead_prefix = "<leader>t",
|
||||
-- Refer to the configuration section below
|
||||
-- or leave empty for defaults
|
||||
})
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/akinsho/toggleterm.nvim' },
|
||||
})
|
||||
|
||||
require("toggleterm").setup({
|
||||
-- highlights = require("rose-pine.plugins.toggleterm"),
|
||||
size = 20,
|
||||
|
||||
@@ -1,275 +1,12 @@
|
||||
require('kulala').setup()
|
||||
|
||||
if vim.fn.executable("just") == 1 then
|
||||
vim.pack.add({ { src = 'https://github.com/al1-ce/just.nvim' } })
|
||||
|
||||
require("just").setup({
|
||||
fidget_message_limit = 32, -- limit for length of fidget progress message
|
||||
open_qf_on_error = true, -- opens quickfix when task fails
|
||||
open_qf_on_run = true, -- opens quickfix when running `run` task (`:JustRun`)
|
||||
open_qf_on_any = false; -- opens quickfix when running any task (overrides other open_qf options)
|
||||
autoscroll_qf = true, -- automatically scroll quickfix window on output
|
||||
register_commands = true, -- if set to true then commands (:Just*) will be registered
|
||||
notify = vim.notify, -- what to use to show messages/errors
|
||||
})
|
||||
end
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/3rd/image.nvim' },
|
||||
{ src = 'https://github.com/HakonHarnes/img-clip.nvim' },
|
||||
})
|
||||
|
||||
require('img-clip').setup()
|
||||
require('image').setup({
|
||||
backend = "sixel"
|
||||
})
|
||||
|
||||
require('sshfs').setup({
|
||||
mounts = {
|
||||
base_dir = vim.fn.expand("$HOME") .. "/Public", -- where remote mounts are created
|
||||
},
|
||||
lead_prefix = "<leader>t",
|
||||
-- Refer to the configuration section below
|
||||
-- or leave empty for defaults
|
||||
})
|
||||
|
||||
require('mise').setup({
|
||||
unset_vars = true,
|
||||
load_on_setup = true,
|
||||
force_run = true,
|
||||
})
|
||||
|
||||
require('neogit').setup({
|
||||
-- disable_context_highlighting = true,
|
||||
disable_commit_confirmation = true,
|
||||
disable_insert_on_commit = false,
|
||||
disable_signs = true,
|
||||
integrations = { diffview = true, fz_lua = false },
|
||||
auto_refresh = false,
|
||||
console_timeout = 5000,
|
||||
auto_show_console = false,
|
||||
sections = {
|
||||
stashes = {
|
||||
folded = false,
|
||||
},
|
||||
recent = { folded = false },
|
||||
},
|
||||
})
|
||||
|
||||
if vim.fn.executable("zoxide") == 1 then
|
||||
require('zincoxide').setup({
|
||||
zincoxide_cmd = "zoxide",
|
||||
complete = true,
|
||||
behaviour = "tabs",
|
||||
})
|
||||
end
|
||||
|
||||
require('trouble').setup({
|
||||
defaults = {
|
||||
auto_close = true,
|
||||
auto_open = true,
|
||||
},
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd('PackChanged', {
|
||||
callback = function()
|
||||
local core = vim.fn.stdpath("data") .. "/site/pack/core/opt/jupynvim/core"
|
||||
vim.fn.system({
|
||||
"cargo", "build", "--release",
|
||||
"--manifest-path", core .. "/Cargo.toml",
|
||||
})
|
||||
end
|
||||
})
|
||||
|
||||
require("jupynvim").setup({
|
||||
log_level = "debug",
|
||||
image_renderer = "placeholder", -- "placeholder", "kitty", or "chafa"
|
||||
})
|
||||
|
||||
require("overseer").setup({
|
||||
templates = { "builtin", "user" },
|
||||
component_aliases = {
|
||||
default = {
|
||||
{ 'display_duration', detail_level = 2 },
|
||||
'on_output_summarize',
|
||||
'on_exit_set_status',
|
||||
'on_complete_notify',
|
||||
'on_result_diagnostics',
|
||||
{'on_result_diagnostics_quickfix', open = true, close = true},
|
||||
},
|
||||
default_vscode = {
|
||||
'default',
|
||||
'on_result_diagnostics',
|
||||
{'on_result_diagnostics_quickfix', open = true, close = true},
|
||||
'on_complete_notify',
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
-- local pm = require("overseer.template.vscode.problem_matcher")
|
||||
-- pm.register_problem_matcher("$rustc", {
|
||||
-- fileLocation = { "autoDetect", "${cwd}" },
|
||||
-- pattern = {
|
||||
-- --regexp = "^(.*?)-->\\s+(.*?):(\\d+):(\\d+)$",
|
||||
-- -- vim_regexp = "\\v^(.*?)-->\\s+(.*?):(\\d+):(\\d+)$",
|
||||
-- regexp = "^\\s+-->\\s*([^:]*):(\\d+):(\\d+)$",
|
||||
-- vim_regexp = "\\v^\\s+-->\\s*([^:]*):(\\d+):(\\d+)$",
|
||||
-- file = 1,
|
||||
-- line = 2,
|
||||
-- column = 3,
|
||||
-- }
|
||||
-- })
|
||||
|
||||
local osys = require("cmake-tools.osys")
|
||||
require("cmake-tools").setup {
|
||||
cmake_command = "cmake", -- this is used to specify cmake command path
|
||||
ctest_command = "ctest", -- this is used to specify ctest command path
|
||||
cmake_use_preset = true,
|
||||
cmake_regenerate_on_save = true, -- auto generate when save CMakeLists.txt
|
||||
cmake_generate_options = { "-DCMAKE_EXPORT_COMPILE_COMMANDS=1" }, -- this will be passed when invoke `CMakeGenerate`
|
||||
cmake_build_options = {}, -- this will be passed when invoke `CMakeBuild`
|
||||
-- support macro expansion:
|
||||
-- ${kit}
|
||||
-- ${kitGenerator}
|
||||
-- ${variant:xx}
|
||||
cmake_build_directory = function()
|
||||
if osys.iswin32 then
|
||||
return "out\\${variant:buildType}"
|
||||
end
|
||||
return "out/${variant:buildType}"
|
||||
end, -- this is used to specify generate directory for cmake, allows macro expansion, can be a string or a function returning the string, relative to cwd.
|
||||
cmake_soft_link_compile_commands = true, -- this will automatically make a soft link from compile commands file to project root dir
|
||||
cmake_compile_commands_from_lsp = false, -- this will automatically set compile commands file location using lsp, to use it, please set `cmake_soft_link_compile_commands` to false
|
||||
cmake_kits_path = nil, -- this is used to specify global cmake kits path, see CMakeKits for detailed usage
|
||||
cmake_variants_message = {
|
||||
short = { show = true }, -- whether to show short message
|
||||
long = { show = true, max_length = 40 }, -- whether to show long message
|
||||
},
|
||||
cmake_dap_configuration = { -- debug settings for cmake
|
||||
name = "cpp",
|
||||
type = "codelldb",
|
||||
request = "launch",
|
||||
stopOnEntry = false,
|
||||
runInTerminal = true,
|
||||
console = "integratedTerminal",
|
||||
},
|
||||
cmake_executor = { -- executor to use
|
||||
name = "quickfix", -- name of the executor
|
||||
opts = {}, -- the options the executor will get, possible values depend on the executor type. See `default_opts` for possible values.
|
||||
default_opts = { -- a list of default and possible values for executors
|
||||
quickfix = {
|
||||
show = "always", -- "always", "only_on_error"
|
||||
position = "belowright", -- "vertical", "horizontal", "leftabove", "aboveleft", "rightbelow", "belowright", "topleft", "botright", use `:h vertical` for example to see help on them
|
||||
size = 10,
|
||||
encoding = "utf-8", -- if encoding is not "utf-8", it will be converted to "utf-8" using `vim.fn.iconv`
|
||||
auto_close_when_success = true, -- typically, you can use it with the "always" option; it will auto-close the quickfix buffer if the execution is successful.
|
||||
},
|
||||
toggleterm = {
|
||||
direction = "float", -- 'vertical' | 'horizontal' | 'tab' | 'float'
|
||||
close_on_exit = false, -- whether close the terminal when exit
|
||||
auto_scroll = true, -- whether auto scroll to the bottom
|
||||
singleton = true, -- single instance, autocloses the opened one, if present
|
||||
},
|
||||
overseer = {
|
||||
new_task_opts = {
|
||||
strategy = {
|
||||
"toggleterm",
|
||||
direction = "horizontal",
|
||||
autos_croll = true,
|
||||
quit_on_exit = "success"
|
||||
}
|
||||
}, -- options to pass into the `overseer.new_task` command
|
||||
on_new_task = function(task)
|
||||
require("overseer").open(
|
||||
{ enter = false, direction = "right" }
|
||||
)
|
||||
end, -- a function that gets overseer.Task when it is created, before calling `task:start`
|
||||
},
|
||||
terminal = {
|
||||
name = "Main Terminal",
|
||||
prefix_name = "[CMakeTools]: ", -- This must be included and must be unique, otherwise the terminals will not work. Do not use a simple spacebar " ", or any generic name
|
||||
split_direction = "horizontal", -- "horizontal", "vertical"
|
||||
split_size = 11,
|
||||
|
||||
-- Window handling
|
||||
single_terminal_per_instance = true, -- Single viewport, multiple windows
|
||||
single_terminal_per_tab = true, -- Single viewport per tab
|
||||
keep_terminal_static_location = true, -- Static location of the viewport if avialable
|
||||
auto_resize = true, -- Resize the terminal if it already exists
|
||||
|
||||
-- Running Tasks
|
||||
start_insert = false, -- If you want to enter terminal with :startinsert upon using :CMakeRun
|
||||
focus = false, -- Focus on terminal when cmake task is launched.
|
||||
do_not_add_newline = false, -- Do not hit enter on the command inserted when using :CMakeRun, allowing a chance to review or modify the command before hitting enter.
|
||||
}, -- terminal executor uses the values in cmake_terminal
|
||||
},
|
||||
},
|
||||
cmake_runner = { -- runner to use
|
||||
name = "terminal", -- name of the runner
|
||||
opts = {}, -- the options the runner will get, possible values depend on the runner type. See `default_opts` for possible values.
|
||||
default_opts = { -- a list of default and possible values for runners
|
||||
quickfix = {
|
||||
show = "always", -- "always", "only_on_error"
|
||||
position = "belowright", -- "bottom", "top"
|
||||
size = 10,
|
||||
encoding = "utf-8",
|
||||
auto_close_when_success = true, -- typically, you can use it with the "always" option; it will auto-close the quickfix buffer if the execution is successful.
|
||||
},
|
||||
toggleterm = {
|
||||
direction = "float", -- 'vertical' | 'horizontal' | 'tab' | 'float'
|
||||
close_on_exit = false, -- whether close the terminal when exit
|
||||
auto_scroll = true, -- whether auto scroll to the bottom
|
||||
singleton = true, -- single instance, autocloses the opened one, if present
|
||||
},
|
||||
overseer = {
|
||||
new_task_opts = {
|
||||
strategy = {
|
||||
"toggleterm",
|
||||
direction = "horizontal",
|
||||
autos_croll = true,
|
||||
quit_on_exit = "success"
|
||||
}
|
||||
}, -- options to pass into the `overseer.new_task` command
|
||||
on_new_task = function(task)
|
||||
end, -- a function that gets overseer.Task when it is created, before calling `task:start`
|
||||
},
|
||||
terminal = {
|
||||
name = "Main Terminal",
|
||||
prefix_name = "[CMakeTools]: ", -- This must be included and must be unique, otherwise the terminals will not work. Do not use a simple spacebar " ", or any generic name
|
||||
split_direction = "horizontal", -- "horizontal", "vertical"
|
||||
split_size = 11,
|
||||
|
||||
-- Window handling
|
||||
single_terminal_per_instance = true, -- Single viewport, multiple windows
|
||||
single_terminal_per_tab = true, -- Single viewport per tab
|
||||
keep_terminal_static_location = true, -- Static location of the viewport if avialable
|
||||
auto_resize = true, -- Resize the terminal if it already exists
|
||||
|
||||
-- Running Tasks
|
||||
start_insert = false, -- If you want to enter terminal with :startinsert upon using :CMakeRun
|
||||
focus = false, -- Focus on terminal when cmake task is launched.
|
||||
do_not_add_newline = false, -- Do not hit enter on the command inserted when using :CMakeRun, allowing a chance to review or modify the command before hitting enter.
|
||||
},
|
||||
},
|
||||
},
|
||||
cmake_notifications = {
|
||||
runner = { enabled = true },
|
||||
executor = { enabled = true },
|
||||
spinner = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" }, -- icons used for progress display
|
||||
refresh_rate_ms = 100, -- how often to iterate icons
|
||||
},
|
||||
cmake_virtual_text_support = true, -- Show the target related to current file using virtual text (at right corner)
|
||||
}
|
||||
|
||||
vim.keymap.set({'n'}, '<leader>vn', '<cmd>Neogit kind=auto<cr>', { desc = 'Neogit' })
|
||||
vim.keymap.set({'n'}, '<leader>vN', '<cmd>Neogit kind=floating<cr>', { desc = 'Neogit' })
|
||||
|
||||
vim.keymap.set({'n'}, '<leader>kp', '<cmd>PasteImage<cr>', { desc = "Paste image from system clipboard" })
|
||||
vim.keymap.set({'n'}, '<leader>xM', '<cmd>Lazy reload mise.nvim<cr>', { desc = "Reload mise environment" })
|
||||
vim.keymap.set({'n'}, '<leader>uu', vim.cmd.UndotreeToggle, { desc = 'Undo Tree toggle' })
|
||||
|
||||
vim.keymap.set('n', "<leader>cx", "<cmd>Trouble diagnostics toggle<cr>", { desc = "Diagnostics (Trouble)" })
|
||||
vim.keymap.set('n', "<leader>cX", "<cmd>Trouble diagnostics toggle filter.buf=0<cr>", { desc = "Buffer Diagnostics (Trouble)" })
|
||||
vim.keymap.set('n', "<leader>cs", "<cmd>Trouble symbols toggle focus=false<cr>", { desc = "Symbols (Trouble)" })
|
||||
vim.keymap.set('n', "<leader>cl", "<cmd>Trouble lsp toggle focus=false win.position=right<cr>", { desc = "LSP Definitions / references / ... (Trouble)" })
|
||||
vim.keymap.set('n', "<leader>cL", "<cmd>Trouble loclist toggle<cr>", { desc = "Location List (Trouble)" })
|
||||
vim.keymap.set('n', "<leader>cQ", "<cmd>Trouble qflist toggle<cr>", { desc = "Quickfix List (Trouble)" })
|
||||
|
||||
vim.keymap.set('n', "<leader>uo", "<cmd>OverseerToggle<CR>", { desc = "Overseer Toggle" })
|
||||
vim.keymap.set('n', "<F5>", "<cmd>OverseerRun<CR>", { desc = "Run Overseer" })
|
||||
vim.keymap.set('n', "<F6>", "<cmd>OverseerToggle<CR>", { desc = "Overseer Toggle" })
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/nvim-treesitter/nvim-treesitter', version = 'main' },
|
||||
{ src = 'https://github.com/nvim-treesitter/nvim-treesitter-context' },
|
||||
{ src = 'https://github.com/nvim-treesitter/nvim-treesitter-context' },
|
||||
{ src = 'https://github.com/nvim-treesitter/nvim-treesitter-textobjects', version = 'main' },
|
||||
{ src = 'https://github.com/romus204/tree-sitter-manager.nvim' },
|
||||
{ src = 'https://github.com/JoosepAlviste/nvim-ts-context-commentstring' },
|
||||
})
|
||||
|
||||
require("tree-sitter-manager").setup({
|
||||
-- Default Options
|
||||
-- ensure_installed = {}, -- list of parsers to install at the start of a neovim session
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
vim.pack.add({
|
||||
{ src = "https://github.com/folke/trouble.nvim" },
|
||||
})
|
||||
|
||||
require('trouble').setup({
|
||||
defaults = {
|
||||
auto_close = true,
|
||||
auto_open = true,
|
||||
},
|
||||
})
|
||||
|
||||
vim.keymap.set('n', "<leader>cx", "<cmd>Trouble diagnostics toggle<cr>", { desc = "Diagnostics (Trouble)" })
|
||||
vim.keymap.set('n', "<leader>cX", "<cmd>Trouble diagnostics toggle filter.buf=0<cr>", { desc = "Buffer Diagnostics (Trouble)" })
|
||||
vim.keymap.set('n', "<leader>cs", "<cmd>Trouble symbols toggle focus=false<cr>", { desc = "Symbols (Trouble)" })
|
||||
vim.keymap.set('n', "<leader>cl", "<cmd>Trouble lsp toggle focus=false win.position=right<cr>", { desc = "LSP Definitions / references / ... (Trouble)" })
|
||||
vim.keymap.set('n', "<leader>cL", "<cmd>Trouble loclist toggle<cr>", { desc = "Location List (Trouble)" })
|
||||
vim.keymap.set('n', "<leader>cQ", "<cmd>Trouble qflist toggle<cr>", { desc = "Quickfix List (Trouble)" })
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/mbbill/undotree' },
|
||||
})
|
||||
|
||||
vim.keymap.set({'n'}, '<leader>uu', vim.cmd.UndotreeToggle, { desc = 'Undo Tree toggle' })
|
||||
@@ -1,5 +1,9 @@
|
||||
vim.keymap.set('n', "<c-h>", "<cmd><C-U>TmuxNavigateLeft<cr>" )
|
||||
vim.keymap.set('n', "<c-j>", "<cmd><C-U>TmuxNavigateDown<cr>" )
|
||||
vim.keymap.set('n', "<c-k>", "<cmd><C-U>TmuxNavigateUp<cr>" )
|
||||
vim.keymap.set('n', "<c-l>", "<cmd><C-U>TmuxNavigateRight<cr>" )
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/christoomey/vim-tmux-navigator' },
|
||||
})
|
||||
|
||||
vim.keymap.set('n', "<c-h>", "<cmd>TmuxNavigateLeft<cr>" )
|
||||
vim.keymap.set('n', "<c-j>", "<cmd>TmuxNavigateDown<cr>" )
|
||||
vim.keymap.set('n', "<c-k>", "<cmd>>TmuxNavigateUp<cr>" )
|
||||
vim.keymap.set('n', "<c-l>", "<cmd>TmuxNavigateRight<cr>" )
|
||||
-- vim.keymap.set('n', "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>")
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/lervag/vimtex' },
|
||||
})
|
||||
vim.g.tex_flavor = "latex"
|
||||
vim.g.vimtex_view_method = "zathura" -- Change to your preferred PDF viewer
|
||||
vim.g.vimtex_quickfix_mode = 0 -- Disable quickfix window
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/folke/which-key.nvim' },
|
||||
})
|
||||
|
||||
require('which-key').setup({
|
||||
icons = {
|
||||
-- set icon mappings to true if you have a Nerd Font
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/ten3roberts/window-picker.nvim' },
|
||||
})
|
||||
|
||||
require('window-picker').setup({
|
||||
-- Default keys to annotate, keys will be used in order. The default uses the
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
vim.pack.add({{ src = "https://github.com/martindur/zdiff.nvim" }})
|
||||
|
||||
vim.keymap.set('n', "<leader>gz", "<cmd>Zdiff<cr>", { desc = "Zdiff (uncommitted)" })
|
||||
vim.keymap.set('n', "<leader>gZ", "<cmd>Zdiff main<cr>", { desc = "Zdiff (vs main)" })
|
||||
@@ -0,0 +1,11 @@
|
||||
if vim.fn.executable("zoxide") == 1 then
|
||||
vim.pack.add({
|
||||
{ src = 'https://github.com/thunder-coding/zincoxide' },
|
||||
})
|
||||
require('zincoxide').setup({
|
||||
zincoxide_cmd = "zoxide",
|
||||
complete = true,
|
||||
behaviour = "tabs",
|
||||
})
|
||||
end
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"contextInjection": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,9 @@
|
||||
"sudo *": "ask"
|
||||
},
|
||||
"external_directory": {
|
||||
"*": "deny"
|
||||
"*": "ask",
|
||||
"/tmp/*": "ask",
|
||||
"~/Documents/sjb-brain/*": "allow"
|
||||
}
|
||||
},
|
||||
"debugLog": false,
|
||||
|
||||
+26
-11
@@ -1,16 +1,31 @@
|
||||
{
|
||||
"providers": {
|
||||
"dupont": {
|
||||
"baseUrl": "http://172.25.11.30/v1",
|
||||
"brine.sharcnet.ca": {
|
||||
"baseUrl": "https://brine.sharcnet.ca/v1",
|
||||
"api": "openai-completions",
|
||||
"models": [
|
||||
{
|
||||
"id": "glm-4.7-flash",
|
||||
"name": "glm-4.7-flash",
|
||||
"reasoning": true,
|
||||
"id": "openai//opt/vllm/models/North-Mini-Code-1.0-fp8",
|
||||
"name": "openai//opt/vllm/models/North-Mini-Code-1.0-fp8"
|
||||
},
|
||||
{
|
||||
"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": [
|
||||
"text"
|
||||
"text",
|
||||
"image"
|
||||
],
|
||||
"reasoning": true,
|
||||
"contextWindow": 131072,
|
||||
"maxTokens": 131072,
|
||||
"cost": {
|
||||
@@ -27,12 +42,12 @@
|
||||
}
|
||||
},
|
||||
"obelix": {
|
||||
"baseUrl": "http://172.25.11.32/v1",
|
||||
"baseUrl": "https://llm.nca.uwo.ca/v1",
|
||||
"api": "openai-completions",
|
||||
"models": [
|
||||
{
|
||||
"id": "ornith-1.0-35B",
|
||||
"name": "ornith-1.0-35B",
|
||||
"id": "ornith-1.5-35B",
|
||||
"name": "ornith-1.5-35B",
|
||||
"reasoning": true,
|
||||
"input": [
|
||||
"text"
|
||||
@@ -57,8 +72,8 @@
|
||||
"api": "openai-completions",
|
||||
"models": [
|
||||
{
|
||||
"id": "gemma-4-12B-coder",
|
||||
"name": "gemma-4-12B-coder",
|
||||
"id": "Qwythos-9B-v2",
|
||||
"name": "Qwythos-9B-v2",
|
||||
"reasoning": true,
|
||||
"input": [
|
||||
"text"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"lastChangelogVersion": "0.80.7",
|
||||
"lastChangelogVersion": "1.1.0",
|
||||
"theme": "light/dark",
|
||||
"defaultProvider": "github-copilot",
|
||||
"defaultModel": "gpt-5-mini",
|
||||
"defaultThinkingLevel": "minimal",
|
||||
"defaultProvider": "openai",
|
||||
"defaultModel": "gpt-6-sol",
|
||||
"defaultThinkingLevel": "high",
|
||||
"hideThinkingBlock": true,
|
||||
"compaction": {
|
||||
"enabled": true
|
||||
@@ -17,46 +17,45 @@
|
||||
"max": "max"
|
||||
},
|
||||
"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": [
|
||||
"npm:pi-lens",
|
||||
"npm:@gotgenes/pi-permission-system",
|
||||
"npm:pi-native-search",
|
||||
"npm:context-mode",
|
||||
"npm:@tintinweb/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": {
|
||||
"agentOverrides": {
|
||||
"reviewer": {
|
||||
"model": "opencode-go/mimo-v2.5-pro",
|
||||
"fallbackModels": [
|
||||
"openai/gpt-5-mini"
|
||||
]
|
||||
"model": "obelix/ornith-1.5-35B",
|
||||
"thinking": "high"
|
||||
},
|
||||
"planner": {
|
||||
"model": "opencode-go/qwen3.7-plus"
|
||||
"model": "openai/gpt-6-luna",
|
||||
"thinking": "high"
|
||||
},
|
||||
"worker": {
|
||||
"model": "opencode-go/kimi-k2.7-code"
|
||||
"model": "opencode-go/claude-haiku-5-5"
|
||||
},
|
||||
"oracle": {
|
||||
"model": "opencode-go/qwen3.7-max",
|
||||
"model": "openai/gpt-6.1-sol",
|
||||
"thinking": "high"
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultTools": [
|
||||
"+codemode"
|
||||
],
|
||||
"quietStartup": true,
|
||||
"steeringMode": "all"
|
||||
"steeringMode": "all",
|
||||
"terminal": {
|
||||
"showTerminalProgress": true
|
||||
},
|
||||
"deviceId": "2314a9e6-0e82-49cd-8518-efc15c870eef"
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
append_path () {
|
||||
case ":$PATH:" in
|
||||
*:"$1":*)
|
||||
;;
|
||||
*)
|
||||
PATH="${PATH:+$PATH:}$1"
|
||||
esac
|
||||
}
|
||||
|
||||
append_path "$HOME/.local/bin"
|
||||
append_path "$HOME/.cargo/bin"
|
||||
|
||||
|
||||
export PATH
|
||||
|
||||
if [ -z "$SSH_CONNECTION" ]; then
|
||||
export SSH_AUTH_SOCK="/run/user/$UID/gnupg/S.gpg-agent.ssh"
|
||||
fi
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1,5 @@
|
||||
Host caraco
|
||||
User sjb
|
||||
Hostname 172.25.11.136
|
||||
ForwardAgent yes
|
||||
RequestTTY yes
|
||||
@@ -1 +0,0 @@
|
||||
SetEnv TERM=xterm-256color
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -0,0 +1,5 @@
|
||||
Host milou
|
||||
User tintin
|
||||
Hostname 172.25.11.133
|
||||
ForwardAgent yes
|
||||
RequestTTY yes
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
Host nca-ai-01
|
||||
HostName 192.168.33.74
|
||||
User steve
|
||||
ForwardAgent yes
|
||||
RequestTTY yes
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
+20
-27
@@ -1,41 +1,33 @@
|
||||
# set-option -g default-terminal 'screen-256color'
|
||||
# set-option -g terminal-overrides ',xterm-256color:RGB'
|
||||
# set -g default-terminal "tmux-256color"
|
||||
set -as terminal-feature ",foot*:RGB"
|
||||
set -g default-terminal "tmux-256color"
|
||||
set -ag terminal-overrides ",*:RGB"
|
||||
set -as terminal-features ",*:clipboard"
|
||||
set -ag terminal-features "xterm-kitty:extkeys"
|
||||
|
||||
# screen mode
|
||||
# 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 -ag terminal-overrides ",*:Tc"
|
||||
# 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'
|
||||
# allow terminal scrolling
|
||||
#set -g terminal-overrides 'xterm*:smcup@:rmcup@'
|
||||
# set -g terminal-overrides 'xterm*:smcup@:rmcup@'
|
||||
|
||||
# default shell
|
||||
set -g default-shell "/usr/bin/fish"
|
||||
setenv -g SSH_AUTH_SOCK "$HOME/.ssh/ssh_auth_sock"
|
||||
set -g update-environment "DISPLAY XAUTHORITY"
|
||||
|
||||
set -g mouse on
|
||||
|
||||
# auto rename windows
|
||||
# set -g automatic-rename on
|
||||
# set -g automatic-rename-format '#{pane_current_command} #{b:pane_current_path}'
|
||||
set -g allow-rename on
|
||||
|
||||
# start with window 1 (instead of 0)
|
||||
set -g base-index 1
|
||||
|
||||
# start with pane 1
|
||||
setw -g pane-base-index 1
|
||||
|
||||
# history
|
||||
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-bell off
|
||||
set -g visual-silence off
|
||||
@@ -43,21 +35,20 @@ set -g monitor-activity on
|
||||
set -g bell-action none
|
||||
set -g allow-passthrough on
|
||||
|
||||
#set -g bell-on-alert on
|
||||
|
||||
set -s escape-time 1
|
||||
set -s escape-time 0
|
||||
setw -g aggressive-resize on
|
||||
set -g status-keys vi
|
||||
set-window-option -g mode-keys vi
|
||||
|
||||
set -g extended-keys on
|
||||
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 detach-on-destroy off
|
||||
set-option -g renumber-windows on
|
||||
set-option -g set-clipboard on
|
||||
set-option -g set-titles-string "#S:#{pane_title}"
|
||||
set -sg escape-time 10
|
||||
|
||||
unbind C-Space
|
||||
set -g prefix C-Space
|
||||
@@ -78,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 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
|
||||
# vim's definition of a horizontal/vertical split is reversed from tmux's
|
||||
bind v split-window -h -c "#{pane_current_path}"
|
||||
@@ -98,7 +91,7 @@ bind B command-prompt -p "New Session:" "new-session -A -s '%%'"
|
||||
bind Tab switch-client -l
|
||||
|
||||
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 Q confirm kill-session
|
||||
|
||||
@@ -161,7 +154,7 @@ set -g @plugin 'sainnhe/tmux-fzf'
|
||||
# prefix + u
|
||||
set -g @plugin 'joshmedeski/tmux-fzf-url'
|
||||
# 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)
|
||||
run '~/.config/tmux/plugins/tpm/tpm'
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 }}"
|
||||
@@ -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 }}"
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -1,9 +0,0 @@
|
||||
$activeBorderColor = rgb({{ accent_strip }})
|
||||
|
||||
general {
|
||||
col.active_border = $activeBorderColor
|
||||
}
|
||||
|
||||
group {
|
||||
col.border_active = $activeBorderColor
|
||||
}
|
||||
@@ -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 }
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -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 }}
|
||||
@@ -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')
|
||||
@@ -1,20 +1,20 @@
|
||||
* {
|
||||
background: {{ background }};
|
||||
foreground: {{ foreground }};
|
||||
active-background: {{ color2 }};
|
||||
urgent-background: {{ color1 }};
|
||||
active-background: {{ lighter_background }};
|
||||
urgent-background: {{ accent }};
|
||||
|
||||
normal-foreground: {{ color3 }};
|
||||
normal-background: {{ background }};
|
||||
normal-foreground: {{ dark_foreground }};
|
||||
normal-background: {{ dark_background }};
|
||||
|
||||
selected-foreground: {{ selection_foreground }};
|
||||
selected-background: {{ selection_background }};
|
||||
|
||||
seperator-color: {{ background }};
|
||||
border-color: {{ color0 }};
|
||||
border-color: {{ accent }};
|
||||
|
||||
prompt-color: {{ color4 }};
|
||||
prompt-background-color: {{ color0 }};
|
||||
prompt-color: {{ light_foreground }};
|
||||
prompt-background-color: {{ darker_background }};
|
||||
|
||||
window-border-size: 1px;
|
||||
window-border-radius: 8px;
|
||||
|
||||
@@ -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 }}"
|
||||
+13
-10
@@ -1,25 +1,25 @@
|
||||
color_bg0="{{ background }}"
|
||||
color_bg1="{{ color0 }}"
|
||||
color_bg2="{{ color7 }}"
|
||||
color_bg1="{{ dark_background }}"
|
||||
color_bg2="{{ darker_background }}"
|
||||
color_fg0="{{ foreground }}"
|
||||
color_fg1="{{ color3 }}"
|
||||
color_fg1="{{ light_foreground }}"
|
||||
|
||||
color_status_fg="{{ color4 }}"
|
||||
color_status_bg="{{ color0 }}"
|
||||
color_status_fg="{{ light_foreground }}"
|
||||
color_status_bg="{{ muted }}"
|
||||
|
||||
color_selected_fg="{{ selection_foreground }}"
|
||||
color_selected_bg="{{ selection_background }}"
|
||||
|
||||
color_highlight_fg="{{ color2 }}"
|
||||
color_highlight_fg="{{ yellow }}"
|
||||
color_highlight_bg="{{ background }}"
|
||||
|
||||
color_current_fg="{{ color1 }}"
|
||||
color_current_fg="{{ orange }}"
|
||||
color_current_bg="{{ background }}"
|
||||
|
||||
color_check_fg="{{ color5 }}"
|
||||
color_check_fg="{{ green }}"
|
||||
|
||||
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_bg "${color_highlight_bg}"
|
||||
@@ -32,6 +32,9 @@ set -g status-justify "left"
|
||||
#set -g status-left-length "100"
|
||||
set -g status-right-length "100"
|
||||
|
||||
set -g window-style "bg=${color_bg0},fg=${color_fg0}"
|
||||
set -g window-active-style "bg=${color_bg0},fg=${color_fg0}"
|
||||
|
||||
# Messages
|
||||
set -g message-style "fg=${color_selected_fg},bg=${color_selected_bg}"
|
||||
set -g message-command-style "fg=${color_selected_fg},bg=${color_selected_bg}"
|
||||
@@ -52,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 "
|
||||
|
||||
# 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
|
||||
set -g clock-mode-colour "${color_status_fg}"
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=alcazar herdr
|
||||
Comment=remote dev
|
||||
Exec=terminal-launcher alcazar-herdr "ssh alcazar mise exec -- herdr --session main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
StartupNotify=true
|
||||
@@ -0,0 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=alcazar tmux
|
||||
Comment=remote dev
|
||||
Exec=terminal-launcher alcazar-tmux "ssh alcazar mise exec -- tmux new -A -s main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
StartupNotify=true
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user