feat: centralize hyprland config, resolve wayland deadkey issues for linux, and update installer/docs
This commit is contained in:
@@ -0,0 +1,21 @@
|
|||||||
|
complete --command nvm --exclusive
|
||||||
|
complete --command nvm --exclusive --long version --description "Print version"
|
||||||
|
complete --command nvm --exclusive --long help --description "Print help"
|
||||||
|
complete --command nvm --long silent --description "Suppress standard output"
|
||||||
|
|
||||||
|
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments install --description "Download and activate the specified Node version"
|
||||||
|
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments use --description "Activate the specified Node version in the current shell"
|
||||||
|
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments list --description "List installed Node versions"
|
||||||
|
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments list-remote --description "List available Node versions to install"
|
||||||
|
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments current --description "Print the currently-active Node version"
|
||||||
|
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from install" --arguments "(
|
||||||
|
test -e $nvm_data && string split ' ' <$nvm_data/.index
|
||||||
|
)"
|
||||||
|
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from use" --arguments "(_nvm_list | string split ' ')"
|
||||||
|
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments uninstall --description "Uninstall the specified Node version"
|
||||||
|
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from uninstall" --arguments "(
|
||||||
|
_nvm_list | string split ' ' | string replace system ''
|
||||||
|
)"
|
||||||
|
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from use uninstall" --arguments "(
|
||||||
|
set --query nvm_default_version && echo default
|
||||||
|
)"
|
||||||
@@ -11,7 +11,7 @@ alias hdock="ssh dockerserver-1@192.168.0.156"
|
|||||||
alias proxi="ssh root@192.168.0.31"
|
alias proxi="ssh root@192.168.0.31"
|
||||||
alias qaserv="TERM=xterm-256color ssh root@195.201.17.47"
|
alias qaserv="TERM=xterm-256color ssh root@195.201.17.47"
|
||||||
alias kc1="set -gx KUBECONFIG ~/.kube/config"
|
alias kc1="set -gx KUBECONFIG ~/.kube/config"
|
||||||
alias kc2="set -gx KUBECONFIG ~/.kube/mobilistics"
|
alias kc2="set -gx KUBECONFIG ~/.kube/work"
|
||||||
alias ram="vm_stat"
|
alias ram="vm_stat"
|
||||||
|
|
||||||
# DevOps Core Tools
|
# DevOps Core Tools
|
||||||
|
|||||||
@@ -24,15 +24,15 @@ if not status is-interactive
|
|||||||
exit
|
exit
|
||||||
end
|
end
|
||||||
|
|
||||||
set -g __done_version 1.20.0
|
set -g __done_version 1.21.1
|
||||||
|
|
||||||
function __done_run_powershell_script
|
function __done_run_powershell_script
|
||||||
set -l powershell_exe (command --search "powershell.exe")
|
set -f powershell_exe (command --search "powershell.exe")
|
||||||
|
|
||||||
if test $status -ne 0
|
if test "$status" -ne 0
|
||||||
and command --search wslvar
|
and command --search wslvar
|
||||||
|
|
||||||
set -l powershell_exe (wslpath (wslvar windir)/System32/WindowsPowerShell/v1.0/powershell.exe)
|
set -f powershell_exe (wslpath (wslvar windir)/System32/WindowsPowerShell/v1.0/powershell.exe)
|
||||||
end
|
end
|
||||||
|
|
||||||
if string length --quiet "$powershell_exe"
|
if string length --quiet "$powershell_exe"
|
||||||
@@ -87,6 +87,9 @@ function __done_get_focused_window_id
|
|||||||
else if test -n "$NIRI_SOCKET"
|
else if test -n "$NIRI_SOCKET"
|
||||||
and type -q jq
|
and type -q jq
|
||||||
niri msg --json focused-window | jq ".id"
|
niri msg --json focused-window | jq ".id"
|
||||||
|
else if test -n "$MANGO_INSTANCE_SIGNATURE"
|
||||||
|
and type -q jq
|
||||||
|
mmsg get focusing-client | jq '.id'
|
||||||
else if begin
|
else if begin
|
||||||
test "$XDG_SESSION_DESKTOP" = gnome; and type -q gdbus
|
test "$XDG_SESSION_DESKTOP" = gnome; and type -q gdbus
|
||||||
end
|
end
|
||||||
@@ -152,13 +155,13 @@ function __done_is_process_window_focused
|
|||||||
set __done_focused_window_id (__done_get_focused_window_id)
|
set __done_focused_window_id (__done_get_focused_window_id)
|
||||||
if test "$__done_sway_ignore_visible" -eq 1
|
if test "$__done_sway_ignore_visible" -eq 1
|
||||||
and test -n "$SWAYSOCK"
|
and test -n "$SWAYSOCK"
|
||||||
string match --quiet --regex "^true" (swaymsg -t get_tree | jq ".. | objects | select(.id == "$__done_initial_window_id") | .visible")
|
string match --quiet --regex "^true" (swaymsg -t get_tree | jq ".. | objects | select(.id == "$__done_initial_window_id") | .visible" 2>/dev/null)
|
||||||
return $status
|
return $status
|
||||||
else if test -n "$HYPRLAND_INSTANCE_SIGNATURE"
|
else if test -n "$HYPRLAND_INSTANCE_SIGNATURE"
|
||||||
and test $__done_initial_window_id = (hyprctl activewindow | awk 'NR==1 {print $2}')
|
and test "$__done_initial_window_id" = (hyprctl activewindow | awk 'NR==1 {print $2}')
|
||||||
return $status
|
return $status
|
||||||
else if test -n "$NIRI_SOCKET"
|
else if test -n "$NIRI_SOCKET"
|
||||||
and test $__done_initial_window_id = (niri msg --json focused-window | jq ".id")
|
and test "$__done_initial_window_id" = (niri msg --json focused-window | jq ".id")
|
||||||
return $status
|
return $status
|
||||||
else if test "$__done_initial_window_id" != "$__done_focused_window_id"
|
else if test "$__done_initial_window_id" != "$__done_focused_window_id"
|
||||||
return 1
|
return 1
|
||||||
@@ -185,13 +188,13 @@ function __done_humanize_duration -a milliseconds
|
|||||||
set -l minutes (math --scale=0 "$milliseconds/60000" % 60)
|
set -l minutes (math --scale=0 "$milliseconds/60000" % 60)
|
||||||
set -l hours (math --scale=0 "$milliseconds/3600000")
|
set -l hours (math --scale=0 "$milliseconds/3600000")
|
||||||
|
|
||||||
if test $hours -gt 0
|
if test "$hours" -gt 0
|
||||||
printf '%s' $hours'h '
|
printf '%s' $hours'h '
|
||||||
end
|
end
|
||||||
if test $minutes -gt 0
|
if test "$minutes" -gt 0
|
||||||
printf '%s' $minutes'm '
|
printf '%s' $minutes'm '
|
||||||
end
|
end
|
||||||
if test $seconds -gt 0
|
if test "$seconds" -gt 0
|
||||||
printf '%s' $seconds's'
|
printf '%s' $seconds's'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -226,13 +229,13 @@ if set -q __done_enabled
|
|||||||
# backwards compatibility for fish < v3.0
|
# backwards compatibility for fish < v3.0
|
||||||
set -q cmd_duration; or set -l cmd_duration $CMD_DURATION
|
set -q cmd_duration; or set -l cmd_duration $CMD_DURATION
|
||||||
|
|
||||||
if test $cmd_duration
|
if test -n "$cmd_duration"
|
||||||
and test $cmd_duration -gt $__done_min_cmd_duration # longer than notify_duration
|
and test "$cmd_duration" -gt "$__done_min_cmd_duration" # longer than notify_duration
|
||||||
and not __done_is_process_window_focused # process pane or window not focused
|
and not __done_is_process_window_focused # process pane or window not focused
|
||||||
|
|
||||||
# don't notify if command matches exclude list
|
# don't notify if command matches exclude list
|
||||||
for pattern in $__done_exclude
|
for pattern in $__done_exclude
|
||||||
if string match -qr $pattern $argv[1]
|
if string match -qr -- $pattern $argv[1]
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -245,7 +248,7 @@ if set -q __done_enabled
|
|||||||
set -l message "$wd/ $argv[1]"
|
set -l message "$wd/ $argv[1]"
|
||||||
set -l sender $__done_initial_window_id
|
set -l sender $__done_initial_window_id
|
||||||
|
|
||||||
if test $exit_status -ne 0
|
if test "$exit_status" -ne 0
|
||||||
set title "Failed ($exit_status) after $humanized_duration"
|
set title "Failed ($exit_status) after $humanized_duration"
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -258,15 +261,24 @@ if set -q __done_enabled
|
|||||||
if test "$__done_notify_sound" -eq 1
|
if test "$__done_notify_sound" -eq 1
|
||||||
echo -e "\a" # bell sound
|
echo -e "\a" # bell sound
|
||||||
end
|
end
|
||||||
|
|
||||||
else if set -q KITTY_WINDOW_ID
|
else if set -q KITTY_WINDOW_ID
|
||||||
printf "\x1b]99;i=done:d=0;$title\x1b\\"
|
printf "\x1b]99;i=done:d=0;$title\x1b\\"
|
||||||
printf "\x1b]99;i=done:d=1:p=body;$message\x1b\\"
|
printf "\x1b]99;i=done:d=1:p=body;$message\x1b\\"
|
||||||
|
|
||||||
|
else if test "$TERM_PROGRAM" = ghostty; or test "$TERM_PROGRAM" = WezTerm
|
||||||
|
printf "\x1b]777;notify;%s;%s\x1b\\" "$title" "$message"
|
||||||
|
|
||||||
|
else if test "$TERM_PROGRAM" = iTerm.app
|
||||||
|
printf "\x1b]9;%s: %s\x1b\\" "$title" "$message"
|
||||||
|
|
||||||
else if type -q terminal-notifier # https://github.com/julienXX/terminal-notifier
|
else if type -q terminal-notifier # https://github.com/julienXX/terminal-notifier
|
||||||
if test "$__done_notify_sound" -eq 1
|
if test "$__done_notify_sound" -eq 1
|
||||||
# pipe message into terminal-notifier to avoid escaping issues (https://github.com/julienXX/terminal-notifier/issues/134). fixes #140
|
# pipe message into terminal-notifier to avoid escaping issues (https://github.com/julienXX/terminal-notifier/issues/134). fixes #140
|
||||||
echo "$message" | terminal-notifier -title "$title" -sender "$__done_initial_window_id" -sound default
|
# not using the -sender option because it hangs for some apps (https://github.com/julienXX/terminal-notifier/issues/301)
|
||||||
|
echo "$message" | terminal-notifier -title "$title" -sound default
|
||||||
else
|
else
|
||||||
echo "$message" | terminal-notifier -title "$title" -sender "$__done_initial_window_id"
|
echo "$message" | terminal-notifier -title "$title"
|
||||||
end
|
end
|
||||||
|
|
||||||
else if type -q osascript # AppleScript
|
else if type -q osascript # AppleScript
|
||||||
@@ -289,7 +301,7 @@ if set -q __done_enabled
|
|||||||
set urgency "$__done_notification_urgency_level"
|
set urgency "$__done_notification_urgency_level"
|
||||||
end
|
end
|
||||||
# override user-defined urgency level if non-zero exitstatus
|
# override user-defined urgency level if non-zero exitstatus
|
||||||
if test $exit_status -ne 0
|
if test "$exit_status" -ne 0
|
||||||
set urgency critical
|
set urgency critical
|
||||||
if set -q __done_notification_urgency_level_failure
|
if set -q __done_notification_urgency_level_failure
|
||||||
set urgency "$__done_notification_urgency_level_failure"
|
set urgency "$__done_notification_urgency_level_failure"
|
||||||
@@ -304,7 +316,7 @@ if set -q __done_enabled
|
|||||||
|
|
||||||
else if type -q notify-desktop # Linux notify-desktop
|
else if type -q notify-desktop # Linux notify-desktop
|
||||||
set -l urgency
|
set -l urgency
|
||||||
if test $exit_status -ne 0
|
if test "$exit_status" -ne 0
|
||||||
set urgency "--urgency=critical"
|
set urgency "--urgency=critical"
|
||||||
end
|
end
|
||||||
notify-desktop $urgency --icon=utilities-terminal --app-name=fish "$title" "$message"
|
notify-desktop $urgency --icon=utilities-terminal --app-name=fish "$title" "$message"
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
set --query XDG_DATA_HOME || set --local XDG_DATA_HOME ~/.local/share
|
||||||
|
set --query nvm_mirror || set --global nvm_mirror https://nodejs.org/dist
|
||||||
|
set --query nvm_data || set --global nvm_data $XDG_DATA_HOME/nvm
|
||||||
|
|
||||||
|
function _nvm_install --on-event nvm_install
|
||||||
|
test ! -d $nvm_data && command mkdir -p $nvm_data
|
||||||
|
echo "Downloading the Node distribution index..." 2>/dev/null
|
||||||
|
_nvm_index_update
|
||||||
|
end
|
||||||
|
|
||||||
|
function _nvm_update --on-event nvm_update
|
||||||
|
set --query --universal nvm_data && set --erase --universal nvm_data
|
||||||
|
set --query --universal nvm_mirror && set --erase --universal nvm_mirror
|
||||||
|
set --query nvm_mirror || set --global nvm_mirror https://nodejs.org/dist
|
||||||
|
end
|
||||||
|
|
||||||
|
function _nvm_uninstall --on-event nvm_uninstall
|
||||||
|
command rm -rf $nvm_data
|
||||||
|
|
||||||
|
set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version
|
||||||
|
|
||||||
|
set --names | string replace --filter --regex -- "^nvm" "set --erase nvm" | source
|
||||||
|
functions --erase (functions --all | string match --entire --regex -- "^_nvm_")
|
||||||
|
end
|
||||||
|
|
||||||
|
if status is-interactive && set --query nvm_default_version && ! set --query nvm_current_version
|
||||||
|
nvm use --silent $nvm_default_version
|
||||||
|
end
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
# ~/.config/fish/config.fish
|
# ~/.config/fish/config.fish
|
||||||
# Startup commands only
|
# Startup commands only
|
||||||
neofetch
|
if status is-interactive
|
||||||
|
neofetch
|
||||||
|
end
|
||||||
|
|
||||||
if type -q mise
|
if type -q mise
|
||||||
mise activate fish | source
|
mise activate fish | source
|
||||||
@@ -70,3 +72,7 @@ end
|
|||||||
|
|
||||||
# Added by Antigravity CLI installer
|
# Added by Antigravity CLI installer
|
||||||
set -gx PATH "/Users/r.kallinich/.local/bin" $PATH
|
set -gx PATH "/Users/r.kallinich/.local/bin" $PATH
|
||||||
|
|
||||||
|
|
||||||
|
# Added by Antigravity CLI installer
|
||||||
|
set -gx PATH "/home/baerspektivo/.local/bin" $PATH
|
||||||
|
|||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/home/baerspektivo/gits/dotfiles/.config/fish
|
||||||
@@ -1,3 +1,2 @@
|
|||||||
jorgebucaran/fisher
|
jorgebucaran/nvm.fish
|
||||||
patrickf1/fzf.fish
|
|
||||||
franciscolourenco/done
|
franciscolourenco/done
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
function _nvm_index_update
|
||||||
|
test ! -d $nvm_data && command mkdir -p $nvm_data
|
||||||
|
|
||||||
|
set --local index $nvm_data/.index
|
||||||
|
|
||||||
|
if not command curl -q --location --silent $nvm_mirror/index.tab >$index.temp
|
||||||
|
command rm -f $index.temp
|
||||||
|
echo "nvm: Can't update index, host unavailable: \"$nvm_mirror\"" >&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
command awk -v OFS=\t '
|
||||||
|
/v0.9.12/ { exit } # Unsupported
|
||||||
|
NR > 1 {
|
||||||
|
print $1 (NR == 2 ? " latest" : $10 != "-" ? " lts/" tolower($10) : "")
|
||||||
|
}
|
||||||
|
' $index.temp >$index
|
||||||
|
|
||||||
|
command rm -f $index.temp
|
||||||
|
end
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
function _nvm_list
|
||||||
|
set --local versions $nvm_data/*
|
||||||
|
|
||||||
|
set --query versions[1] &&
|
||||||
|
string match --entire --regex -- (
|
||||||
|
string replace --all -- $nvm_data/ "" $versions |
|
||||||
|
string match --regex -- "v\d.+" |
|
||||||
|
string escape --style=regex |
|
||||||
|
string join "|"
|
||||||
|
) <$nvm_data/.index
|
||||||
|
|
||||||
|
command --all node |
|
||||||
|
string match --quiet --invert --regex -- "^$nvm_data" && echo system
|
||||||
|
end
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
function _nvm_version_activate --argument-names ver
|
||||||
|
set --global --export nvm_current_version $ver
|
||||||
|
set --prepend PATH $nvm_data/$ver/bin
|
||||||
|
end
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
function _nvm_version_deactivate --argument-names ver
|
||||||
|
test "$nvm_current_version" = "$ver" && set --erase nvm_current_version
|
||||||
|
set --local index (contains --index -- $nvm_data/$ver/bin $PATH) &&
|
||||||
|
set --erase PATH[$index]
|
||||||
|
end
|
||||||
@@ -0,0 +1,237 @@
|
|||||||
|
function nvm --description "Node version manager"
|
||||||
|
for silent in --silent -s
|
||||||
|
if set --local index (contains --index -- $silent $argv)
|
||||||
|
set --erase argv[$index] && break
|
||||||
|
end
|
||||||
|
set --erase silent
|
||||||
|
end
|
||||||
|
|
||||||
|
set --local cmd $argv[1]
|
||||||
|
set --local ver $argv[2]
|
||||||
|
|
||||||
|
if set --query silent && ! set --query cmd[1]
|
||||||
|
echo "nvm: Version number not specified (see nvm -h for usage)" >&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if ! set --query ver[1] && contains -- "$cmd" install use
|
||||||
|
for file in .nvmrc .node-version
|
||||||
|
set file (_nvm_find_up $PWD $file) && read ver <$file && break
|
||||||
|
end
|
||||||
|
|
||||||
|
if ! set --query ver[1]
|
||||||
|
echo "nvm: Invalid version or missing \".nvmrc\" file" >&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set --local their_version $ver
|
||||||
|
|
||||||
|
switch "$cmd"
|
||||||
|
case -v --version
|
||||||
|
echo "nvm, version 2.2.18"
|
||||||
|
case "" -h --help
|
||||||
|
echo "Usage: nvm install <version> Download and activate the specified Node version"
|
||||||
|
echo " nvm install Install the version specified in the nearest .nvmrc file"
|
||||||
|
echo " nvm use <version> Activate the specified Node version in the current shell"
|
||||||
|
echo " nvm use Activate the version specified in the nearest .nvmrc file"
|
||||||
|
echo " nvm list List installed Node versions"
|
||||||
|
echo " nvm list-remote List available Node versions to install"
|
||||||
|
echo " nvm list-remote <regex> List Node versions matching a given regex pattern"
|
||||||
|
echo " nvm current Print the currently-active Node version"
|
||||||
|
echo " nvm uninstall <version> Uninstall the specified Node version"
|
||||||
|
echo "Options:"
|
||||||
|
echo " -s, --silent Suppress standard output"
|
||||||
|
echo " -v, --version Print the version of nvm"
|
||||||
|
echo " -h, --help Print this help message"
|
||||||
|
echo "Variables:"
|
||||||
|
echo " nvm_arch Override architecture, e.g. x64-musl"
|
||||||
|
echo " nvm_mirror Use a mirror for downloading Node binaries"
|
||||||
|
echo " nvm_default_version Set the default version for new shells"
|
||||||
|
echo " nvm_default_packages Install a list of packages every time a Node version is installed"
|
||||||
|
echo " nvm_data Set a custom directory for storing nvm data"
|
||||||
|
echo "Examples:"
|
||||||
|
echo " nvm install latest Install the latest version of Node"
|
||||||
|
echo " nvm use 14.15.1 Use Node version 14.15.1"
|
||||||
|
echo " nvm use system Activate the system's Node version"
|
||||||
|
|
||||||
|
case install
|
||||||
|
_nvm_index_update
|
||||||
|
|
||||||
|
string match --entire --regex -- (_nvm_version_match $ver) <$nvm_data/.index | read ver alias
|
||||||
|
|
||||||
|
if ! set --query ver[1]
|
||||||
|
echo "nvm: Invalid version number or alias: \"$their_version\"" >&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if test ! -e $nvm_data/$ver
|
||||||
|
set --local os (command uname -s | string lower)
|
||||||
|
set --local ext tar.gz
|
||||||
|
set --local arch (command uname -m)
|
||||||
|
set --local tarcmd tar
|
||||||
|
|
||||||
|
switch $os
|
||||||
|
case aix
|
||||||
|
set arch ppc64
|
||||||
|
case sunos
|
||||||
|
case linux
|
||||||
|
case darwin
|
||||||
|
case {msys_nt,mingw\*_nt}\*
|
||||||
|
set os win
|
||||||
|
set ext zip
|
||||||
|
set tarcmd bsdtar
|
||||||
|
case \*
|
||||||
|
echo "nvm: Unsupported operating system: \"$os\"" >&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
switch $arch
|
||||||
|
case i\*86
|
||||||
|
set arch x86
|
||||||
|
case x86_64
|
||||||
|
set arch x64
|
||||||
|
case arm64
|
||||||
|
string match --regex --quiet "v(?<major>\d+)" $ver
|
||||||
|
if test "$os" = darwin -a $major -lt 16
|
||||||
|
set arch x64
|
||||||
|
end
|
||||||
|
case armv6 armv6l
|
||||||
|
set arch armv6l
|
||||||
|
case armv7 armv7l
|
||||||
|
set arch armv7l
|
||||||
|
case armv8 armv8l aarch64
|
||||||
|
set arch arm64
|
||||||
|
end
|
||||||
|
|
||||||
|
set --query nvm_arch && set arch $nvm_arch
|
||||||
|
|
||||||
|
set --local dir "node-$ver-$os-$arch"
|
||||||
|
set --local url $nvm_mirror/$ver/$dir.$ext
|
||||||
|
|
||||||
|
command mkdir -p $nvm_data/$ver
|
||||||
|
|
||||||
|
if ! set --query silent
|
||||||
|
echo -e "Installing Node \x1b[1m$ver\x1b[22m $alias"
|
||||||
|
echo -e "Fetching \x1b[4m$url\x1b[24m\x1b[7m"
|
||||||
|
end
|
||||||
|
|
||||||
|
if ! command curl -q $silent --progress-bar --location $url |
|
||||||
|
command $tarcmd --extract --gzip --directory $nvm_data/$ver 2>/dev/null
|
||||||
|
command rm -rf $nvm_data/$ver
|
||||||
|
echo -e "\033[F\33[2K\x1b[0mnvm: Invalid mirror or host unavailable: \"$url\"" >&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set --query silent || echo -en "\033[F\33[2K\x1b[0m"
|
||||||
|
|
||||||
|
if test "$os" = win
|
||||||
|
command mv $nvm_data/$ver/$dir $nvm_data/$ver/bin
|
||||||
|
else
|
||||||
|
command mv $nvm_data/$ver/$dir/* $nvm_data/$ver
|
||||||
|
command rm -rf $nvm_data/$ver/$dir
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if test $ver != "$nvm_current_version"
|
||||||
|
set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version
|
||||||
|
_nvm_version_activate $ver
|
||||||
|
|
||||||
|
set --query nvm_default_packages[1] && npm install --global $silent $nvm_default_packages
|
||||||
|
end
|
||||||
|
|
||||||
|
set --query silent || printf "Now using Node %s (npm %s) %s\n" (_nvm_node_info)
|
||||||
|
case use
|
||||||
|
test $ver = default && set ver $nvm_default_version
|
||||||
|
_nvm_list | string match --entire --regex -- (_nvm_version_match $ver) | read ver __
|
||||||
|
|
||||||
|
if ! set --query ver[1]
|
||||||
|
echo "nvm: Can't use Node \"$their_version\", version must be installed first" >&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if test $ver != "$nvm_current_version"
|
||||||
|
set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version
|
||||||
|
test $ver != system && _nvm_version_activate $ver
|
||||||
|
end
|
||||||
|
|
||||||
|
set --query silent || printf "Now using Node %s (npm %s) %s\n" (_nvm_node_info)
|
||||||
|
case uninstall
|
||||||
|
if test -z "$ver"
|
||||||
|
echo "nvm: Not enough arguments for command: \"$cmd\"" >&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
test $ver = default && test ! -z "$nvm_default_version" && set ver $nvm_default_version
|
||||||
|
|
||||||
|
_nvm_list | string match --entire --regex -- (_nvm_version_match $ver) | read ver __
|
||||||
|
|
||||||
|
if ! set -q ver[1]
|
||||||
|
echo "nvm: Node version not installed or invalid: \"$their_version\"" >&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set --query silent || printf "Uninstalling Node %s %s\n" $ver (string replace ~ \~ "$nvm_data/$ver/bin/node")
|
||||||
|
|
||||||
|
_nvm_version_deactivate $ver
|
||||||
|
|
||||||
|
command rm -rf $nvm_data/$ver
|
||||||
|
case current
|
||||||
|
_nvm_current
|
||||||
|
case ls list
|
||||||
|
_nvm_list | _nvm_list_format (_nvm_current) $argv[2]
|
||||||
|
case lsr {ls,list}-remote
|
||||||
|
_nvm_index_update || return
|
||||||
|
_nvm_list | command awk '
|
||||||
|
FILENAME == "-" && (is_local[$1] = FNR == NR) { next } {
|
||||||
|
print $0 (is_local[$1] ? " ✓" : "")
|
||||||
|
}
|
||||||
|
' - $nvm_data/.index | _nvm_list_format (_nvm_current) $argv[2]
|
||||||
|
case \*
|
||||||
|
echo "nvm: Unknown command or option: \"$cmd\" (see nvm -h for usage)" >&2
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function _nvm_find_up --argument-names path file
|
||||||
|
test -e "$path/$file" && echo $path/$file || begin
|
||||||
|
test ! -z "$path" || return
|
||||||
|
_nvm_find_up (string replace --regex -- '/[^/]*$' "" $path) $file
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function _nvm_version_match --argument-names ver
|
||||||
|
string replace --regex -- '^v?(\d+|\d+\.\d+)$' 'v$1.' $ver |
|
||||||
|
string replace --filter --regex -- '^v?(\d+)' 'v$1' |
|
||||||
|
string escape --style=regex || string lower '\b'$ver'(?:/\w+)?$'
|
||||||
|
end
|
||||||
|
|
||||||
|
function _nvm_list_format --argument-names current regex
|
||||||
|
command awk -v current="$current" -v regex="$regex" '
|
||||||
|
$0 ~ regex {
|
||||||
|
aliases[versions[i++] = $1] = $2 " " $3
|
||||||
|
pad = (n = length($1)) > pad ? n : pad
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if (!i) exit 1
|
||||||
|
while (i--)
|
||||||
|
printf((current == versions[i] ? " ▶ " : " ") "%"pad"s %s\n",
|
||||||
|
versions[i], aliases[versions[i]])
|
||||||
|
}
|
||||||
|
'
|
||||||
|
end
|
||||||
|
|
||||||
|
function _nvm_current
|
||||||
|
command --search --quiet node || return
|
||||||
|
set --query nvm_current_version && echo $nvm_current_version || echo system
|
||||||
|
end
|
||||||
|
|
||||||
|
function _nvm_node_info
|
||||||
|
set --local npm_path (string replace bin/npm-cli.js "" (realpath (command --search npm)))
|
||||||
|
test -f $npm_path/package.json || set --local npm_version_default (command npm --version)
|
||||||
|
command node --eval "
|
||||||
|
console.log(process.version)
|
||||||
|
console.log('$npm_version_default' ? '$npm_version_default': require('$npm_path/package.json').version)
|
||||||
|
console.log(process.execPath)
|
||||||
|
" | string replace -- ~ \~
|
||||||
|
end
|
||||||
@@ -0,0 +1,351 @@
|
|||||||
|
|
||||||
|
# #######################################################################################
|
||||||
|
# AUTOGENERATED HYPRLAND CONFIG.
|
||||||
|
# EDIT THIS CONFIG ACCORDING TO THE WIKI INSTRUCTIONS.
|
||||||
|
# #######################################################################################
|
||||||
|
|
||||||
|
#autogenerated = 1 # remove this line to remove the warning
|
||||||
|
|
||||||
|
# This is an example Hyprland config file.
|
||||||
|
# Refer to the wiki for more information.
|
||||||
|
# https://wiki.hypr.land/Configuring/
|
||||||
|
|
||||||
|
# Please note not all available settings / options are set here.
|
||||||
|
# For a full list, see the wiki
|
||||||
|
|
||||||
|
# You can split this configuration into multiple files
|
||||||
|
# Create your files separately and then link them to this file like this:
|
||||||
|
# source = ~/.config/hypr/myColors.conf
|
||||||
|
|
||||||
|
|
||||||
|
################
|
||||||
|
### MONITORS ###
|
||||||
|
################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Monitors/
|
||||||
|
monitor=,preferred,auto,auto
|
||||||
|
|
||||||
|
|
||||||
|
###################
|
||||||
|
### MY PROGRAMS ###
|
||||||
|
###################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||||
|
|
||||||
|
# Set programs that you use
|
||||||
|
$terminal = ghostty
|
||||||
|
$fileManager = dolphin
|
||||||
|
$menu = wofi --show drun
|
||||||
|
|
||||||
|
|
||||||
|
#################
|
||||||
|
### AUTOSTART ###
|
||||||
|
#################
|
||||||
|
|
||||||
|
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||||
|
# Or execute your favorite apps at launch like this:
|
||||||
|
|
||||||
|
# exec-once = $terminal
|
||||||
|
# exec-once = nm-applet &
|
||||||
|
# exec-once = waybar & hyprpaper & firefox
|
||||||
|
exec-once = hyprpaper
|
||||||
|
exec-once = waybar
|
||||||
|
|
||||||
|
exec-once = wl-paste --type text --watch cliphist store
|
||||||
|
exec-once = wl-paste --type image --watch cliphist store
|
||||||
|
|
||||||
|
#############################
|
||||||
|
### ENVIRONMENT VARIABLES ###
|
||||||
|
#############################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Environment-variables/
|
||||||
|
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
env = HYPRCURSOR_SIZE,24
|
||||||
|
env = GTK_IM_MODULE,simple
|
||||||
|
env = QT_IM_MODULE,simple
|
||||||
|
env = XMODIFIERS,@im=none
|
||||||
|
|
||||||
|
|
||||||
|
###################
|
||||||
|
### PERMISSIONS ###
|
||||||
|
###################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Permissions/
|
||||||
|
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||||
|
# for security reasons
|
||||||
|
|
||||||
|
# ecosystem {
|
||||||
|
# enforce_permissions = 1
|
||||||
|
# }
|
||||||
|
|
||||||
|
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
|
||||||
|
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
|
||||||
|
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
|
||||||
|
|
||||||
|
|
||||||
|
#####################
|
||||||
|
### LOOK AND FEEL ###
|
||||||
|
#####################
|
||||||
|
|
||||||
|
# Refer to https://wiki.hypr.land/Configuring/Variables/
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||||
|
general {
|
||||||
|
gaps_in = 15
|
||||||
|
gaps_out = 40
|
||||||
|
|
||||||
|
border_size = 4
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||||
|
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||||
|
col.inactive_border = rgba(595959aa)
|
||||||
|
# col.active_border = rgb(c34043)
|
||||||
|
# col.inactive_border = rgb(1f1f28)
|
||||||
|
|
||||||
|
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||||
|
resize_on_border = false
|
||||||
|
|
||||||
|
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false
|
||||||
|
|
||||||
|
layout = master
|
||||||
|
}
|
||||||
|
|
||||||
|
master {
|
||||||
|
new_status = slave
|
||||||
|
orientation = center
|
||||||
|
mfact=0.50
|
||||||
|
slave_count_for_center_master = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#decoration
|
||||||
|
decoration {
|
||||||
|
rounding = 10
|
||||||
|
rounding_power = 2
|
||||||
|
|
||||||
|
# Change transparency of focused and unfocused windows
|
||||||
|
active_opacity = 1.0
|
||||||
|
inactive_opacity = 1.0
|
||||||
|
|
||||||
|
# shadow {
|
||||||
|
# enabled = true
|
||||||
|
# range = 4
|
||||||
|
# render_power = 3
|
||||||
|
# color = rgba(1a1a1aee)
|
||||||
|
# }
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#blur
|
||||||
|
blur {
|
||||||
|
enabled = true
|
||||||
|
size = 6
|
||||||
|
passes = 3
|
||||||
|
ignore_opacity = true
|
||||||
|
vibrancy = 0.1696
|
||||||
|
}
|
||||||
|
|
||||||
|
shadow{
|
||||||
|
enabled = true
|
||||||
|
range = 15
|
||||||
|
render_power = 3
|
||||||
|
color = rgba(1a1a1aee)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#animations
|
||||||
|
animations {
|
||||||
|
enabled = yes, please :)
|
||||||
|
|
||||||
|
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
|
||||||
|
# NAME, X0, Y0, X1, Y1
|
||||||
|
bezier = easeOutQuint, 0.23, 1, 0.32, 1
|
||||||
|
bezier = easeInOutCubic, 0.65, 0.05, 0.36, 1
|
||||||
|
bezier = linear, 0, 0, 1, 1
|
||||||
|
bezier = almostLinear, 0.5, 0.5, 0.75, 1
|
||||||
|
bezier = quick, 0.15, 0, 0.1, 1
|
||||||
|
|
||||||
|
# Default animations, see https://wiki.hypr.land/Configuring/Animations/
|
||||||
|
# NAME, ONOFF, SPEED, CURVE, [STYLE]
|
||||||
|
animation = global, 1, 10, default
|
||||||
|
animation = border, 1, 5.39, easeOutQuint
|
||||||
|
animation = windows, 1, 4.79, easeOutQuint
|
||||||
|
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||||
|
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||||
|
animation = fadeIn, 1, 1.73, almostLinear
|
||||||
|
animation = fadeOut, 1, 1.46, almostLinear
|
||||||
|
animation = fade, 1, 3.03, quick
|
||||||
|
animation = layers, 1, 3.81, easeOutQuint
|
||||||
|
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||||
|
animation = layersOut, 1, 1.5, linear, fade
|
||||||
|
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||||
|
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||||
|
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||||
|
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||||
|
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||||
|
animation = zoomFactor, 1, 7, quick
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
||||||
|
# "Smart gaps" / "No gaps when only"
|
||||||
|
# uncomment all if you wish to use that.
|
||||||
|
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||||
|
# workspace = f[1], gapsout:0, gapsin:0
|
||||||
|
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||||
|
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||||
|
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||||
|
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||||
|
windowrule = match:class = .*, suppress_event maximize
|
||||||
|
windowrule = match:class = ^$, match:title = ^$, match:xwayland = true, no_focus = on
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
||||||
|
dwindle {
|
||||||
|
# pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = true # You probably want this
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
|
||||||
|
# master {
|
||||||
|
# new_status = master
|
||||||
|
# }
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#misc
|
||||||
|
misc {
|
||||||
|
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||||
|
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#############
|
||||||
|
### INPUT ###
|
||||||
|
#############
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#input
|
||||||
|
input {
|
||||||
|
kb_layout = us
|
||||||
|
kb_variant = mac
|
||||||
|
kb_model =
|
||||||
|
kb_options = lv3:lalt_switch
|
||||||
|
kb_rules =
|
||||||
|
|
||||||
|
follow_mouse = 2
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Gestures
|
||||||
|
gesture = 3, horizontal, workspace
|
||||||
|
|
||||||
|
# Example per-device config
|
||||||
|
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
|
||||||
|
device {
|
||||||
|
name = epic-mouse-v1
|
||||||
|
sensitivity = -0.5
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
###################
|
||||||
|
### KEYBINDINGS ###
|
||||||
|
###################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||||
|
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||||
|
|
||||||
|
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
|
||||||
|
bind = $mainMod, Q, exec, $terminal
|
||||||
|
bind = $mainMod, C, killactive,
|
||||||
|
#bind = $mainMod, M, exit,
|
||||||
|
bind = $mainMod, E, exec, $fileManager
|
||||||
|
bind = $mainMod, V, togglefloating,
|
||||||
|
#bind = $mainMod, R, exec, $menu
|
||||||
|
bind = $mainMod, P, pseudo, # dwindle
|
||||||
|
bind = $mainMod, J, layoutmsg, togglesplit, # dwindle
|
||||||
|
bind = $mainMod, R, exec, rofi -show drun
|
||||||
|
|
||||||
|
# Move focus with mainMod + h/l/k/j
|
||||||
|
bind = $mainMod, h, movefocus, l
|
||||||
|
bind = $mainMod, l, movefocus, r
|
||||||
|
bind = $mainMod, k, movefocus, u
|
||||||
|
bind = $mainMod, j, movefocus, d
|
||||||
|
|
||||||
|
# Move movewindow whit mainMod + shift + h/l/k/j
|
||||||
|
bind = $mainMod SHIFT, h, movewindow, l
|
||||||
|
bind = $mainMod SHIFT, l, movewindow, r
|
||||||
|
bind = $mainMod SHIFT, k, movewindow, u
|
||||||
|
bind = $mainMod SHIFT, j, movewindow, d
|
||||||
|
|
||||||
|
# Switch workspaces with mainMod + [0-9]
|
||||||
|
bind = $mainMod, 1, workspace, 1
|
||||||
|
bind = $mainMod, 2, workspace, 2
|
||||||
|
bind = $mainMod, 3, workspace, 3
|
||||||
|
bind = $mainMod, 4, workspace, 4
|
||||||
|
bind = $mainMod, 5, workspace, 5
|
||||||
|
bind = $mainMod, 6, workspace, 6
|
||||||
|
bind = $mainMod, 7, workspace, 7
|
||||||
|
bind = $mainMod, 8, workspace, 8
|
||||||
|
bind = $mainMod, 9, workspace, 9
|
||||||
|
bind = $mainMod, 0, workspace, 10
|
||||||
|
|
||||||
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||||
|
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||||
|
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||||
|
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||||
|
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||||
|
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||||
|
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||||
|
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||||
|
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||||
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
# Example special workspace (scratchpad)
|
||||||
|
bind = $mainMod, S, togglespecialworkspace, magic
|
||||||
|
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||||
|
|
||||||
|
# Center window workspace (floating)
|
||||||
|
#bind = $mainMod SHIFT, Y, exec, hyprctl --batch "dispatch togglefloating ; dispatch resizeactive exact 2560 1360 ; dispatch centerwindow"
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
|
bind = $mainMod, mouse_down, workspace, e+1
|
||||||
|
bind = $mainMod, mouse_up, workspace, e-1
|
||||||
|
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
bind = $mainMod CTRL, 3, exec, hypershot -m output
|
||||||
|
bind = $mainMod CTRL, 4, exec, hypershot -m region
|
||||||
|
|
||||||
|
# Laptop multimedia keys for volume and LCD brightness
|
||||||
|
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||||
|
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||||
|
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||||
|
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||||
|
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||||
|
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||||
|
|
||||||
|
# Requires playerctl
|
||||||
|
bindl = , XF86AudioNext, exec, playerctl next
|
||||||
|
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||||
|
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||||
|
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||||
|
|
||||||
|
##############################
|
||||||
|
### WINDOWS AND WORKSPACES ###
|
||||||
|
##############################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||||
|
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||||
|
|
||||||
|
# Example windowrule
|
||||||
|
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||||
|
|
||||||
|
# Ignore maximize requests from apps. You'll probably like this.
|
||||||
|
# windowrulev2 = suppressevent maximize, class:.*
|
||||||
|
|
||||||
|
# Fix some dragging issues with XWayland
|
||||||
|
# windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||||
@@ -0,0 +1,314 @@
|
|||||||
|
|
||||||
|
# #######################################################################################
|
||||||
|
# AUTOGENERATED HYPRLAND CONFIG.
|
||||||
|
# EDIT THIS CONFIG ACCORDING TO THE WIKI INSTRUCTIONS.
|
||||||
|
# #######################################################################################
|
||||||
|
|
||||||
|
#autogenerated = 1 # remove this line to remove the warning
|
||||||
|
|
||||||
|
# This is an example Hyprland config file.
|
||||||
|
# Refer to the wiki for more information.
|
||||||
|
# https://wiki.hypr.land/Configuring/
|
||||||
|
|
||||||
|
# Please note not all available settings / options are set here.
|
||||||
|
# For a full list, see the wiki
|
||||||
|
|
||||||
|
# You can split this configuration into multiple files
|
||||||
|
# Create your files separately and then link them to this file like this:
|
||||||
|
# source = ~/.config/hypr/myColors.conf
|
||||||
|
|
||||||
|
|
||||||
|
################
|
||||||
|
### MONITORS ###
|
||||||
|
################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Monitors/
|
||||||
|
monitor=,preferred,auto,auto
|
||||||
|
|
||||||
|
|
||||||
|
###################
|
||||||
|
### MY PROGRAMS ###
|
||||||
|
###################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||||
|
|
||||||
|
# Set programs that you use
|
||||||
|
$terminal = ghostty
|
||||||
|
$fileManager = dolphin
|
||||||
|
$menu = wofi --show drun
|
||||||
|
|
||||||
|
|
||||||
|
#################
|
||||||
|
### AUTOSTART ###
|
||||||
|
#################
|
||||||
|
|
||||||
|
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||||
|
# Or execute your favorite apps at launch like this:
|
||||||
|
|
||||||
|
# exec-once = $terminal
|
||||||
|
# exec-once = nm-applet &
|
||||||
|
# exec-once = waybar & hyprpaper & firefox
|
||||||
|
|
||||||
|
exec-once = wl-paste --type text --watch cliphist store
|
||||||
|
exec-once = wl-paste --type image --watch cliphist store
|
||||||
|
|
||||||
|
#############################
|
||||||
|
### ENVIRONMENT VARIABLES ###
|
||||||
|
#############################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Environment-variables/
|
||||||
|
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
env = HYPRCURSOR_SIZE,24
|
||||||
|
|
||||||
|
|
||||||
|
###################
|
||||||
|
### PERMISSIONS ###
|
||||||
|
###################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Permissions/
|
||||||
|
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||||
|
# for security reasons
|
||||||
|
|
||||||
|
# ecosystem {
|
||||||
|
# enforce_permissions = 1
|
||||||
|
# }
|
||||||
|
|
||||||
|
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
|
||||||
|
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
|
||||||
|
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
|
||||||
|
|
||||||
|
|
||||||
|
#####################
|
||||||
|
### LOOK AND FEEL ###
|
||||||
|
#####################
|
||||||
|
|
||||||
|
# Refer to https://wiki.hypr.land/Configuring/Variables/
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||||
|
general {
|
||||||
|
gaps_in = 5
|
||||||
|
gaps_out = 20
|
||||||
|
|
||||||
|
border_size = 2
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||||
|
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||||
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
|
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||||
|
resize_on_border = false
|
||||||
|
|
||||||
|
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false
|
||||||
|
|
||||||
|
layout = dwindle
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#decoration
|
||||||
|
decoration {
|
||||||
|
rounding = 10
|
||||||
|
rounding_power = 2
|
||||||
|
|
||||||
|
# Change transparency of focused and unfocused windows
|
||||||
|
active_opacity = 1.0
|
||||||
|
inactive_opacity = 1.0
|
||||||
|
|
||||||
|
shadow {
|
||||||
|
enabled = true
|
||||||
|
range = 4
|
||||||
|
render_power = 3
|
||||||
|
color = rgba(1a1a1aee)
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#blur
|
||||||
|
blur {
|
||||||
|
enabled = true
|
||||||
|
size = 3
|
||||||
|
passes = 1
|
||||||
|
|
||||||
|
vibrancy = 0.1696
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#animations
|
||||||
|
animations {
|
||||||
|
enabled = yes, please :)
|
||||||
|
|
||||||
|
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
|
||||||
|
# NAME, X0, Y0, X1, Y1
|
||||||
|
bezier = easeOutQuint, 0.23, 1, 0.32, 1
|
||||||
|
bezier = easeInOutCubic, 0.65, 0.05, 0.36, 1
|
||||||
|
bezier = linear, 0, 0, 1, 1
|
||||||
|
bezier = almostLinear, 0.5, 0.5, 0.75, 1
|
||||||
|
bezier = quick, 0.15, 0, 0.1, 1
|
||||||
|
|
||||||
|
# Default animations, see https://wiki.hypr.land/Configuring/Animations/
|
||||||
|
# NAME, ONOFF, SPEED, CURVE, [STYLE]
|
||||||
|
animation = global, 1, 10, default
|
||||||
|
animation = border, 1, 5.39, easeOutQuint
|
||||||
|
animation = windows, 1, 4.79, easeOutQuint
|
||||||
|
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||||
|
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||||
|
animation = fadeIn, 1, 1.73, almostLinear
|
||||||
|
animation = fadeOut, 1, 1.46, almostLinear
|
||||||
|
animation = fade, 1, 3.03, quick
|
||||||
|
animation = layers, 1, 3.81, easeOutQuint
|
||||||
|
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||||
|
animation = layersOut, 1, 1.5, linear, fade
|
||||||
|
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||||
|
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||||
|
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||||
|
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||||
|
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||||
|
animation = zoomFactor, 1, 7, quick
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
||||||
|
# "Smart gaps" / "No gaps when only"
|
||||||
|
# uncomment all if you wish to use that.
|
||||||
|
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||||
|
# workspace = f[1], gapsout:0, gapsin:0
|
||||||
|
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||||
|
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||||
|
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||||
|
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
||||||
|
dwindle {
|
||||||
|
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = true # You probably want this
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
|
||||||
|
master {
|
||||||
|
new_status = master
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#misc
|
||||||
|
misc {
|
||||||
|
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||||
|
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#############
|
||||||
|
### INPUT ###
|
||||||
|
#############
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Variables/#input
|
||||||
|
input {
|
||||||
|
kb_layout = us
|
||||||
|
kb_variant = mac
|
||||||
|
kb_model =
|
||||||
|
kb_options =
|
||||||
|
kb_rules =
|
||||||
|
|
||||||
|
follow_mouse = 1
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Gestures
|
||||||
|
gesture = 3, horizontal, workspace
|
||||||
|
|
||||||
|
# Example per-device config
|
||||||
|
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
|
||||||
|
device {
|
||||||
|
name = epic-mouse-v1
|
||||||
|
sensitivity = -0.5
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
###################
|
||||||
|
### KEYBINDINGS ###
|
||||||
|
###################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||||
|
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||||
|
|
||||||
|
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
|
||||||
|
bind = $mainMod, Q, exec, $terminal
|
||||||
|
bind = $mainMod, C, killactive,
|
||||||
|
bind = $mainMod, M, exit,
|
||||||
|
bind = $mainMod, E, exec, $fileManager
|
||||||
|
bind = $mainMod, V, togglefloating,
|
||||||
|
bind = $mainMod, R, exec, $menu
|
||||||
|
bind = $mainMod, P, pseudo, # dwindle
|
||||||
|
bind = $mainMod, J, togglesplit, # dwindle
|
||||||
|
|
||||||
|
# Move focus with mainMod + arrow keys
|
||||||
|
bind = $mainMod, left, movefocus, l
|
||||||
|
bind = $mainMod, right, movefocus, r
|
||||||
|
bind = $mainMod, up, movefocus, u
|
||||||
|
bind = $mainMod, down, movefocus, d
|
||||||
|
|
||||||
|
# Switch workspaces with mainMod + [0-9]
|
||||||
|
bind = $mainMod, 1, workspace, 1
|
||||||
|
bind = $mainMod, 2, workspace, 2
|
||||||
|
bind = $mainMod, 3, workspace, 3
|
||||||
|
bind = $mainMod, 4, workspace, 4
|
||||||
|
bind = $mainMod, 5, workspace, 5
|
||||||
|
bind = $mainMod, 6, workspace, 6
|
||||||
|
bind = $mainMod, 7, workspace, 7
|
||||||
|
bind = $mainMod, 8, workspace, 8
|
||||||
|
bind = $mainMod, 9, workspace, 9
|
||||||
|
bind = $mainMod, 0, workspace, 10
|
||||||
|
|
||||||
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||||
|
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||||
|
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||||
|
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||||
|
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||||
|
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||||
|
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||||
|
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||||
|
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||||
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
# Example special workspace (scratchpad)
|
||||||
|
bind = $mainMod, S, togglespecialworkspace, magic
|
||||||
|
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
|
bind = $mainMod, mouse_down, workspace, e+1
|
||||||
|
bind = $mainMod, mouse_up, workspace, e-1
|
||||||
|
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
|
# Laptop multimedia keys for volume and LCD brightness
|
||||||
|
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||||
|
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||||
|
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||||
|
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||||
|
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||||
|
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||||
|
|
||||||
|
# Requires playerctl
|
||||||
|
bindl = , XF86AudioNext, exec, playerctl next
|
||||||
|
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||||
|
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||||
|
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||||
|
|
||||||
|
##############################
|
||||||
|
### WINDOWS AND WORKSPACES ###
|
||||||
|
##############################
|
||||||
|
|
||||||
|
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||||
|
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||||
|
|
||||||
|
# Example windowrule
|
||||||
|
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||||
|
|
||||||
|
# Ignore maximize requests from apps. You'll probably like this.
|
||||||
|
windowrule = suppressevent maximize, class:.*
|
||||||
|
|
||||||
|
# Fix some dragging issues with XWayland
|
||||||
|
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
splash = false
|
||||||
|
ipc = on
|
||||||
|
|
||||||
|
wallpaper {
|
||||||
|
monitor = DP-1
|
||||||
|
path = ~/Bilder/wallpaper/zen.jpg
|
||||||
|
fit_mode = covor
|
||||||
|
}
|
||||||
@@ -23,8 +23,8 @@
|
|||||||
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
|
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "bfcc0171a43f22afa61d927ffe9fcb6cb85dc99e" },
|
"nvim-lspconfig": { "branch": "master", "commit": "bfcc0171a43f22afa61d927ffe9fcb6cb85dc99e" },
|
||||||
"nvim-surround": { "branch": "main", "commit": "2e93e154de9ff326def6480a4358bfc149d5da2c" },
|
"nvim-surround": { "branch": "main", "commit": "2e93e154de9ff326def6480a4358bfc149d5da2c" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" },
|
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
||||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
|
"nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" },
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c" },
|
"nvim-web-devicons": { "branch": "master", "commit": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c" },
|
||||||
"oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" },
|
"oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" },
|
||||||
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
'nvim-treesitter/nvim-treesitter',
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
branch = "master",
|
||||||
build = ':TSUpdate',
|
build = ':TSUpdate',
|
||||||
event = { 'BufReadPost', 'BufNewFile' },
|
event = { 'BufReadPost', 'BufNewFile' },
|
||||||
dependencies = {
|
dependencies = {
|
||||||
|
|||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/home/baerspektivo/gits/dotfiles/.config/nvim
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
# Maus-support aktivate
|
# Maus-support aktivate
|
||||||
set -g mouse on
|
set -g mouse on
|
||||||
|
|
||||||
|
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "wl-copy"
|
||||||
|
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "wl-copy"
|
||||||
|
|
||||||
# Options:
|
# Options:
|
||||||
set -g history-limit 10000
|
set -g history-limit 10000
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# 🚀 Dotfiles - QA Engineer Dev Setup
|
# 🚀 Dotfiles - QA Engineer Dev Setup
|
||||||
|
|
||||||
Meine persönliche Development-Umgebung optimiert für:
|
Meine persönliche Development-Umgebung optimiert für:
|
||||||
- **TypeScript/Playwright** Testing (QA bei Mobilistics)
|
- **TypeScript/Playwright** Testing (QA)
|
||||||
- **Go** Development (Benchmarking & Learning)
|
- **Go** Development (Benchmarking & Learning)
|
||||||
- **Fish Shell** mit modernen Tools
|
- **Fish Shell** mit modernen Tools
|
||||||
- **Ghostty** Terminal
|
- **Ghostty** Terminal
|
||||||
@@ -24,11 +24,13 @@ Meine persönliche Development-Umgebung optimiert für:
|
|||||||
- **Git**: LazyGit, Fugitive, Gitsigns
|
- **Git**: LazyGit, Fugitive, Gitsigns
|
||||||
- **Formatting**: Conform (Prettier, Black, gofumpt)
|
- **Formatting**: Conform (Prettier, Black, gofumpt)
|
||||||
|
|
||||||
### System Monitoring
|
### System Monitoring & Window Managers
|
||||||
- **btop** - Ressourcen-Monitor (Primary)
|
- **btop** - Ressourcen-Monitor (Primary)
|
||||||
- **htop** - Fallback Monitor (wenn btop abstürzt)
|
- **htop** - Fallback Monitor (wenn btop abstürzt)
|
||||||
- **neofetch** - System Info
|
- **neofetch** - System Info
|
||||||
- **yabai** - Tiling Window Manager (macOS)
|
- **yabai** - Tiling Window Manager (macOS)
|
||||||
|
- **Hyprland** - Dynamic tiling Wayland compositor (Linux)
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -67,6 +69,7 @@ ln -sf ~/gits/dotfiles/.config/ghostty ~/.config/ghostty
|
|||||||
ln -sf ~/gits/dotfiles/.config/starship.toml ~/.config/starship.toml
|
ln -sf ~/gits/dotfiles/.config/starship.toml ~/.config/starship.toml
|
||||||
ln -sf ~/gits/dotfiles/.config/neofetch ~/.config/neofetch
|
ln -sf ~/gits/dotfiles/.config/neofetch ~/.config/neofetch
|
||||||
ln -sf ~/gits/dotfiles/.config/yabai ~/.config/yabai
|
ln -sf ~/gits/dotfiles/.config/yabai ~/.config/yabai
|
||||||
|
ln -sf ~/gits/dotfiles/.config/hypr ~/.config/hypr
|
||||||
|
|
||||||
# Btop & Htop Konfigurationsdateien verlinken
|
# Btop & Htop Konfigurationsdateien verlinken
|
||||||
mkdir -p ~/.config/btop ~/.config/htop
|
mkdir -p ~/.config/btop ~/.config/htop
|
||||||
@@ -103,6 +106,7 @@ dotfiles/
|
|||||||
│ ├── htop/ # System monitor fallback
|
│ ├── htop/ # System monitor fallback
|
||||||
│ ├── neofetch/ # System info config
|
│ ├── neofetch/ # System info config
|
||||||
│ ├── yabai/ # Window manager (macOS)
|
│ ├── yabai/ # Window manager (macOS)
|
||||||
|
│ ├── hypr/ # Window manager (Linux/Wayland)
|
||||||
│ └── starship.toml # Prompt config
|
│ └── starship.toml # Prompt config
|
||||||
├── install.sh # Automated setup
|
├── install.sh # Automated setup
|
||||||
└── README.md # This file
|
└── README.md # This file
|
||||||
|
|||||||
Regular → Executable
+31
-15
@@ -46,6 +46,26 @@ detect_os() {
|
|||||||
log "Detected: $OS with $PACKAGE_MANAGER"
|
log "Detected: $OS with $PACKAGE_MANAGER"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Interactive prompt helper
|
||||||
|
prompt_yes_no() {
|
||||||
|
if [ ! -t 0 ]; then
|
||||||
|
# Non-interactive shell, return default (No)
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
local prompt_msg=$1
|
||||||
|
local response
|
||||||
|
read -p "$prompt_msg [y/N]: " response
|
||||||
|
case "$response" in
|
||||||
|
[yY][eE][sS]|[yY])
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
install_package_manager() {
|
install_package_manager() {
|
||||||
case $PACKAGE_MANAGER in
|
case $PACKAGE_MANAGER in
|
||||||
"brew")
|
"brew")
|
||||||
@@ -349,6 +369,9 @@ setup_neovim() {
|
|||||||
# Create symlink
|
# Create symlink
|
||||||
ln -sf "$DOTFILES_DIR/.config/nvim" ~/.config/nvim
|
ln -sf "$DOTFILES_DIR/.config/nvim" ~/.config/nvim
|
||||||
|
|
||||||
|
# Clean up old nvim-treesitter directory to force a fresh clone on the correct branch
|
||||||
|
rm -rf ~/.local/share/nvim/lazy/nvim-treesitter
|
||||||
|
|
||||||
log "Neovim configured! Run 'nvim' to install plugins on first start."
|
log "Neovim configured! Run 'nvim' to install plugins on first start."
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -404,6 +427,14 @@ setup_other_configs() {
|
|||||||
ln -sf "$DOTFILES_DIR/.config/tmux/tmux.conf" ~/.tmux.conf
|
ln -sf "$DOTFILES_DIR/.config/tmux/tmux.conf" ~/.tmux.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Hyprland (Linux only)
|
||||||
|
if [ "$OS" != "macos" ] && [ -d "$DOTFILES_DIR/.config/hypr" ]; then
|
||||||
|
if prompt_yes_no "Do you want to configure Hyprland window manager?"; then
|
||||||
|
rm -rf ~/.config/hypr
|
||||||
|
ln -sf "$DOTFILES_DIR/.config/hypr" ~/.config/hypr
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
log "Configurations symlinked!"
|
log "Configurations symlinked!"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -447,21 +478,6 @@ install_optional_ai_tools() {
|
|||||||
|
|
||||||
echo -e "\n${YELLOW}=== Optional AI CLI Tools ===${NC}"
|
echo -e "\n${YELLOW}=== Optional AI CLI Tools ===${NC}"
|
||||||
|
|
||||||
# Prompt helper
|
|
||||||
prompt_yes_no() {
|
|
||||||
local prompt_msg=$1
|
|
||||||
local response
|
|
||||||
read -p "$prompt_msg [y/N]: " response
|
|
||||||
case "$response" in
|
|
||||||
[yY][eE][sS]|[yY])
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
return 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# 1. Claude Code
|
# 1. Claude Code
|
||||||
if prompt_yes_no "Do you want to install Claude Code (@anthropic-ai/claude-code)?"; then
|
if prompt_yes_no "Do you want to install Claude Code (@anthropic-ai/claude-code)?"; then
|
||||||
log "Installing Claude Code..."
|
log "Installing Claude Code..."
|
||||||
|
|||||||
Reference in New Issue
Block a user