feat: sync .config dotfiles, transition Node to mise, integrate 1Password CLI/SSH Agent, and add optional AI CLI tools

This commit is contained in:
2026-06-22 17:13:42 +02:00
parent 0379a21780
commit 6b09ba52b6
33 changed files with 837 additions and 1425 deletions
+60 -45
View File
@@ -1,18 +1,18 @@
#? Config file for btop v. 1.4.0 #? Config file for btop v.1.4.6
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "/Users/rj/.config/btop/themes/catppuccin_mocha.theme" color_theme = "/Users/rj/.config/btop/themes/catppuccin_mocha.theme"
#* If the theme set background should be shown, set to False if you want terminal background transparency. #* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = False theme_background = false
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. #* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True truecolor = true
#* Set to true to force tty mode regardless if a real tty has been detected or not. #* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. #* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False force_tty = false
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. #* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. #* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
@@ -22,10 +22,13 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. #* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. #* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = True vim_keys = true
#* Rounded corners on boxes, is ignored if TTY mode is ON. #* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True rounded_corners = true
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
terminal_sync = true
#* Default symbols to use for graph creation, "braille", "block" or "tty". #* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts. #* "braille" offers the highest resolution but might not be included in all fonts.
@@ -57,37 +60,40 @@ update_ms = 2000
proc_sorting = "memory" proc_sorting = "memory"
#* Reverse sorting order, True or False. #* Reverse sorting order, True or False.
proc_reversed = False proc_reversed = false
#* Show processes as a tree. #* Show processes as a tree.
proc_tree = False proc_tree = false
#* Use the cpu graph colors in the process list. #* Use the cpu graph colors in the process list.
proc_colors = True proc_colors = true
#* Use a darkening gradient in the process list. #* Use a darkening gradient in the process list.
proc_gradient = True proc_gradient = true
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. #* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False proc_per_core = false
#* Show process memory as bytes instead of percent. #* Show process memory as bytes instead of percent.
proc_mem_bytes = True proc_mem_bytes = true
#* Show cpu graph for each process. #* Show cpu graph for each process.
proc_cpu_graphs = True proc_cpu_graphs = true
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) #* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False proc_info_smaps = false
#* Show proc box on left side of screen instead of right. #* Show proc box on left side of screen instead of right.
proc_left = False proc_left = false
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). #* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False proc_filter_kernel = false
#* In tree-view, always accumulate child process resources in the parent process. #* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = False proc_aggregate = false
#* Should cpu and memory usage display be preserved for dead processes when paused.
keep_dead_proc_usage = false
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. #* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu. #* Select from a list of detected attributes from the options menu.
@@ -98,25 +104,28 @@ cpu_graph_upper = "total"
cpu_graph_lower = "total" cpu_graph_lower = "total"
#* Toggles if the lower CPU graph should be inverted. #* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True cpu_invert_lower = true
#* Set to True to completely disable the lower CPU graph. #* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False cpu_single_graph = false
#* Show cpu box at bottom of screen instead of top. #* Show cpu box at bottom of screen instead of top.
cpu_bottom = False cpu_bottom = false
#* Shows the system uptime in the CPU box. #* Shows the system uptime in the CPU box.
show_uptime = True show_uptime = true
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
show_cpu_watts = true
#* Show cpu temperature. #* Show cpu temperature.
check_temp = True check_temp = true
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. #* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto" cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. #* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True show_coretemp = true
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. #* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. #* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
@@ -128,63 +137,63 @@ cpu_core_map = ""
temp_scale = "celsius" temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. #* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False base_10_sizes = false
#* Show CPU frequency. #* Show CPU frequency.
show_cpu_freq = True show_cpu_freq = true
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. #* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime #* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X" clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. #* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True background_update = true
#* Custom cpu model name, empty string to disable. #* Custom cpu model name, empty string to disable.
custom_cpu_name = "" custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". #* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user". #* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
disks_filter = "" disks_filter = ""
#* Show graphs instead of meters for memory values. #* Show graphs instead of meters for memory values.
mem_graphs = True mem_graphs = true
#* Show mem box below net box instead of above. #* Show mem box below net box instead of above.
mem_below_net = False mem_below_net = false
#* Count ZFS ARC in cached and available memory. #* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True zfs_arc_cached = true
#* If swap memory should be shown in memory box. #* If swap memory should be shown in memory box.
show_swap = True show_swap = true
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. #* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True swap_disk = true
#* If mem box should be split to also show disks info. #* If mem box should be split to also show disks info.
show_disks = True show_disks = true
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. #* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True only_physical = true
#* Read disks list from /etc/fstab. This also disables only_physical. #* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True use_fstab = true
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) #* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False zfs_hide_datasets = false
#* Set to true to show available disk space for privileged users. #* Set to true to show available disk space for privileged users.
disk_free_priv = False disk_free_priv = false
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. #* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True show_io_stat = true
#* Toggles io mode for disks, showing big graphs for disk read/write speeds. #* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False io_mode = false
#* Set to True to show combined read/write io graphs in io mode. #* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False io_graph_combined = false
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". #* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1". #* Example: "/mnt/media:100 /:20 /boot:1".
@@ -196,23 +205,29 @@ net_download = 100
net_upload = 100 net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. #* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True net_auto = true
#* Sync the auto scaling for download and upload to whichever currently has the highest scale. #* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True net_sync = true
#* Starts with the Network Interface specified here. #* Starts with the Network Interface specified here.
net_iface = "" net_iface = ""
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present. #* Show battery stats in top right if battery is present.
show_battery = True show_battery = true
#* Which battery to use if multiple are present. "Auto" for auto detection. #* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto" selected_battery = "Auto"
#* Show power stats of battery next to charge indicator. #* Show power stats of battery next to charge indicator.
show_battery_watts = True show_battery_watts = true
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". #* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. #* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "DISABLED" log_level = "DISABLED"
#* Automatically save current settings to config file on exit.
save_config_on_exit = true
+1
View File
@@ -0,0 +1 @@
/Applications/OrbStack.app/Contents/MacOS/../Resources/completions/fish/docker.fish
+1
View File
@@ -0,0 +1 @@
/Applications/OrbStack.app/Contents/MacOS/../Resources/completions/fish/kubectl.fish
-21
View File
@@ -1,21 +0,0 @@
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
)"
+1
View File
@@ -0,0 +1 @@
/Applications/OrbStack.app/Contents/MacOS/../Resources/completions/fish/orbctl.fish
+8 -4
View File
@@ -8,6 +8,8 @@ alias update-system="brew update && brew upgrade && npm update -g"
alias do-st="docker compose" alias do-st="docker compose"
alias do-re="docker compose down && docker compose up -d" alias do-re="docker compose down && docker compose up -d"
alias hetzi="ssh root@128.140.71.88" alias hetzi="ssh root@128.140.71.88"
alias hdock="ssh dockerserver-1@192.168.0.156"
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/mobilistics"
@@ -35,10 +37,12 @@ alias kdesc="kubectl describe"
alias kpf="kubectl port-forward" alias kpf="kubectl port-forward"
# Testing # Testing
alias pw="npx playwright" alias pw="pnpm exec playwright"
alias pwt="npx playwright test" alias pwt="pnpm exec playwright test"
alias pwh="npx playwright test --headed" alias pwui="pnpm exec playwright test --ui"
alias pwr="npx playwright show-report" alias pwh="pnpm exec playwright test --headed"
alias pwr="pnpm exec playwright show-report"
alias dpwt="DEBUG=pw:api,pw:network pnpm exec playwright test"
# Python/Go # Python/Go
alias py="python3" alias py="python3"
+172
View File
@@ -0,0 +1,172 @@
function tiffy
# --- KONFIGURATION ---
set -l SOURCE_NAME "sources/github/Baerspektivo/projectTiffy"
set -l SESSION_STORE "$HOME/.config/fish/tiffy_session"
# Hilfsfunktion zum Auflisten der verfuegbaren Repos
if test "$argv[1]" = "--list-sources"
echo "Suche verfuegbare Jules-Quellen..."
curl -s "https://jules.googleapis.com/v1alpha/sources" -H "X-Goog-Api-Key: $JULES_API_KEY" | jq .
return
end
# Befehl zum Abholen der letzten Session (tiffy fetch oder tiffy gib)
if test "$argv[1]" = "fetch"; or test "$argv[1]" = "gib"
if test -f "$SESSION_STORE"
read -l S_ID TARGET_FILE < "$SESSION_STORE"
echo "Pruefe letzte Session $S_ID fuer Datei $TARGET_FILE..."
set -l ACT (curl -s "https://jules.googleapis.com/v1alpha/sessions/$S_ID/activities" -H "X-Goog-Api-Key: $JULES_API_KEY")
set -l RES (echo $ACT | jq -r '.activities[]? | (.progressUpdated?.description // .agentMessaged?.agentMessage // empty)' | grep "```" | tail -n 1)
if test -n "$RES"
set -l DETECTED_LANG (echo "$RES" | string match -r '```(\w+)' | head -n 2 | tail -n 1)
set -l EXT "ts"
switch "$DETECTED_LANG"
case "go"; set EXT "go"
case "typescript" "ts"; set EXT "ts"
case "javascript" "js"; set EXT "js"
case "python" "py"; set EXT "py"
case "html"; set EXT "html"
case "json"; set EXT "json"
end
set -l FINAL_TARGET (string replace -r '\.[^.]+$' ".$EXT" "$TARGET_FILE")
echo "$RES" | sed -n '/^```/,/^```/ p' | sed '1d;$d' > "$FINAL_TARGET"
if test ! -s "$FINAL_TARGET"; echo "$RES" > "$FINAL_TARGET"; end
echo "Code erfolgreich nachgeholt und gespeichert: $FINAL_TARGET"
else
echo "Noch kein Code in Session $S_ID gefunden."
end
return
else
echo "Keine gespeicherte Session gefunden."
return 1
end
end
# Befehl um eine Folgefrage mit optionalen neuen Dateien zu senden
if test "$argv[1]" = "ask"
if test -f "$SESSION_STORE"
read -l S_ID TARGET_FILE < "$SESSION_STORE"
set -l ASSET_FILES
set -l MSG_PARTS
# Argumente ab dem zweiten (nach "ask") auf Dateien pruefen
for arg in $argv[2..-1]
if test -f "$arg"
set -a ASSET_FILES "$arg"
else
set -a MSG_PARTS "$arg"
end
end
set -l USER_MSG (string join " " $MSG_PARTS)
set -l ADD_CONTEXT ""
for f in $ASSET_FILES
echo "Lese zusaetzliche Datei: $f"
set ADD_CONTEXT "$ADD_CONTEXT\n\n--- FILE: $f ---\n"(cat "$f")
end
set -l FOLLOW_UP (string join "\n" "$USER_MSG" "$ADD_CONTEXT")
if test -z (string trim "$FOLLOW_UP")
echo "Fehler: Keine Nachricht oder Datei angegeben."
return 1
end
echo "Sende Nachricht und Kontext an bestehende Session $S_ID..."
set -l ESCAPED_FOLLOW_UP (printf "%s" "$FOLLOW_UP" | python3 -c 'import json, sys; print(json.dumps(sys.stdin.read()), end="")')
curl -s "https://jules.googleapis.com/v1alpha/sessions/$S_ID:sendMessage" \
-X POST -H "Content-Type: application/json" -H "X-Goog-Api-Key: $JULES_API_KEY" \
-d "{ \"prompt\": $ESCAPED_FOLLOW_UP }" > /dev/null
# Polling
set -l RESULT ""
echo "Warte auf Antwort..."
for i in (seq 1 36)
sleep 5
set -l ACT_RES (curl -s "https://jules.googleapis.com/v1alpha/sessions/$S_ID/activities" -H "X-Goog-Api-Key: $JULES_API_KEY")
set RESULT (echo $ACT_RES | jq -r '.activities[]? | (.progressUpdated?.description // .agentMessaged?.agentMessage // empty)' | grep "```" | tail -n 1)
if test -n "$RESULT"; break; end
echo -n "."
end
if test -n "$RESULT"
echo -e "\nAntwort erhalten. Speichere..."
set -l FINAL_TARGET (string replace -r '\.[^.]+$' ".ts" "$TARGET_FILE")
echo "$RESULT" | sed -n '/^```/,/^```/ p' | sed '1d;$d' > "$FINAL_TARGET"
echo "Code aktualisiert: $FINAL_TARGET"
else
echo -e "\nKeine schnelle Antwort. Nutze 'tiffy fetch' spaeter."
end
return
else
echo "Keine aktive Session zum Fortfuehren gefunden."
return 1
end
end
# Resume-Modus fuer manuelle ID-Eingabe
if test (count $argv) -eq 1; and string match -r '^\d+$' "$argv[1]" > /dev/null
set -l S_ID "$argv[1]"
set -l ACT (curl -s "[https://jules.googleapis.com/v1alpha/sessions/$S_ID/activities](https://jules.googleapis.com/v1alpha/sessions/$S_ID/activities)" -H "X-Goog-Api-Key: $JULES_API_KEY")
set -l RES (echo $ACT | jq -r '.activities[]? | (.progressUpdated?.description // .agentMessaged?.agentMessage // empty)' | grep "```" | tail -n 1)
echo "$RES"
return
end
# Normaler Session-Start (mehrere Dateien moeglich)
set -l FILES
set -l MSG_PARTS
for arg in $argv
if test -f "$arg"; set -a FILES "$arg"; else; set -a MSG_PARTS "$arg"; end
end
if test (count $FILES) -eq 0; echo "Fehler: Datei nicht gefunden!"; return 1; end
set -l USER_MESSAGE (string join " " $MSG_PARTS)
set -l CONTEXT ""
for f in $FILES
echo "Lese Datei: $f"
set CONTEXT "$CONTEXT\n\n--- FILE: $f ---\n"(cat "$f")
end
set -l ESCAPED_PROMPT (printf "%s" "$USER_MESSAGE\n$CONTEXT" | python3 -c 'import json, sys; print(json.dumps(sys.stdin.read()), end="")')
echo "Session-Start fuer $SOURCE_NAME..."
set -l PAYLOAD "{ \"prompt\": $ESCAPED_PROMPT, \"sourceContext\": { \"source\": \"$SOURCE_NAME\", \"githubRepoContext\": { \"startingBranch\": \"main\" } } }"
set -l SESSION_RESPONSE (curl -s "https://jules.googleapis.com/v1alpha/sessions" \
-X POST -H "Content-Type: application/json" -H "X-Goog-Api-Key: $JULES_API_KEY" -d "$PAYLOAD")
set -l SESSION_ID (echo $SESSION_RESPONSE | jq -r '.id // empty')
if test -z "$SESSION_ID"; echo "API Fehler."; echo $SESSION_RESPONSE | jq .; return 1; end
# Speichert die erste Datei als Referenz fuer den Zielnamen
echo "$SESSION_ID $FILES[1]" > "$SESSION_STORE"
echo "Jules arbeitet... (Session: $SESSION_ID)"
set -l RESULT ""
for i in (seq 1 36)
sleep 5
set -l ACT_RES (curl -s "https://jules.googleapis.com/v1alpha/sessions/$SESSION_ID/activities" -H "X-Goog-Api-Key: $JULES_API_KEY")
set RESULT (echo $ACT_RES | jq -r '.activities[]? | (.progressUpdated?.description // .agentMessaged?.agentMessage // empty)' | grep "```" | tail -n 1)
if test -n "$RESULT"; break; end
echo -n "."
end
if test -z "$RESULT"; echo -e "\nNutze 'tiffy fetch' zum Abrufen."; return 0; end
set -l DETECTED_LANG (echo "$RESULT" | string match -r '```(\w+)' | head -n 2 | tail -n 1)
set -l EXT "ts"
switch "$DETECTED_LANG"
case "go"; set EXT "go"
case "typescript" "ts"; set EXT "ts"
case "javascript" "js"; set EXT "js"
case "python" "py"; set EXT "py"
end
set -l TARGET_FILE (string replace -r '\.[^.]+$' ".$EXT" "$FILES[1]")
echo "$RESULT" | sed -n '/^```/,/^```/ p' | sed '1d;$d' > "$TARGET_FILE"
echo -e "\nCode lokal gespeichert: $TARGET_FILE"
end
-28
View File
@@ -1,28 +0,0 @@
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
+4 -4
View File
@@ -1,10 +1,10 @@
# Go environment
set -gx GOPATH ~/go
set -gx GO111MODULE on
# Development paths # Development paths
fish_add_path /opt/homebrew/bin fish_add_path /opt/homebrew/bin
fish_add_path ~/.cargo/bin fish_add_path ~/.cargo/bin
fish_add_path ~/.local/bin fish_add_path ~/.local/bin
fish_add_path /usr/local/go/bin fish_add_path /usr/local/go/bin
fish_add_path $GOPATH/bin fish_add_path $GOPATH/bin
# Go environment
set -gx GOPATH ~/go
set -gx GO111MODULE on
+68
View File
@@ -2,3 +2,71 @@
# Startup commands only # Startup commands only
neofetch neofetch
if type -q mise
mise activate fish | source
end
# Added by OrbStack: command-line tools and integration
# This won't be added again if you remove it.
source ~/.orbstack/shell/init2.fish 2>/dev/null || :
set -g fish_key_bindings fish_default_key_bindings
# This file was created by fish when upgrading to version 4.3, to migrate
# theme variables from universal to global scope.
# Don't edit this file, as it will be written by the web-config tool (`fish_config`).
# To customize your theme, delete this file and see
# help interactive#syntax-highlighting
# or
# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING
# for appropriate commands to add to ~/.config/fish/config.fish instead.
# See also the release notes for fish 4.3.0 (run `help relnotes`).
fish_add_path /opt/homebrew/bin
fish_add_path /Users/r.kallinich/go/bin
fish_add_path /Users/r.kallinich/.cargo/bin
fish_add_path /Applications/Ghostty.app/Contents/MacOS
set --global fish_color_autosuggestion brblack
set --global fish_color_cancel -r
set --global fish_color_command normal
set --global fish_color_comment red
set --global fish_color_cwd green
set --global fish_color_cwd_root red
set --global fish_color_end green
set --global fish_color_error brred
set --global fish_color_escape brcyan
set --global fish_color_history_current --bold
set --global fish_color_host normal
set --global fish_color_host_remote yellow
set --global fish_color_normal normal
set --global fish_color_operator brcyan
set --global fish_color_param cyan
set --global fish_color_quote yellow
set --global fish_color_redirection cyan --bold
set --global fish_color_search_match white --background=brblack
set --global fish_color_selection white --bold --background=brblack
set --global fish_color_status red
set --global fish_color_user brgreen
set --global fish_color_valid_path --underline
set --global fish_pager_color_completion normal
set --global fish_pager_color_description yellow -i
set --global fish_pager_color_prefix normal --bold --underline
set --global fish_pager_color_progress brwhite --background=cyan
set --global fish_pager_color_selected_background -r
# API-Keys
set -gx GEMINI_API_KEY "AIzaSyBu-u9JIHoPR_wIsjwjelo1lGUzzxKKofQ"
set -gx JULES_API_KEY "AQ.Ab8RN6LXe33UjfpBGpityANYBO-pHUwZEG7wKoM4V7yWTAezoQ"
set -gx GCP_PROJECT_ID "gen-lang-client-0990109275"
# 1Password SSH Agent
if test -e "$HOME/.1password/agent.sock"
set -gx SSH_AUTH_SOCK "$HOME/.1password/agent.sock"
else if test -e "$HOME/Library/Group Containers/2BU85C4SUE.com.1password/t/agent.sock"
set -gx SSH_AUTH_SOCK "$HOME/Library/Group Containers/2BU85C4SUE.com.1password/t/agent.sock"
end
# Added by Antigravity CLI installer
set -gx PATH "/Users/r.kallinich/.local/bin" $PATH
-1
View File
@@ -1,4 +1,3 @@
jorgebucaran/fisher jorgebucaran/fisher
jorgebucaran/nvm.fish
patrickf1/fzf.fish patrickf1/fzf.fish
franciscolourenco/done franciscolourenco/done
@@ -1,20 +0,0 @@
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
-14
View File
@@ -1,14 +0,0 @@
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
@@ -1,4 +0,0 @@
function _nvm_version_activate --argument-names ver
set --global --export nvm_current_version $ver
set --prepend PATH $nvm_data/$ver/bin
end
@@ -1,5 +0,0 @@
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
-237
View File
@@ -1,237 +0,0 @@
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
+2
View File
@@ -0,0 +1,2 @@
[tools]
node = "20.20.1"
-885
View File
@@ -1,885 +0,0 @@
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
print_info() {
info title
info underline
# info "Host" model
# info "Packages" packages
# info "Resolution" resolution
# info "DE" de
# info "WM" wm
# info "WM Theme" wm_theme
# info "Theme" theme
# info "Icons" icons
# info "Terminal" term
# info "Terminal Font" term_font
info "OS" distro
info "Kernel" kernel
info "Uptime" uptime
info "Shell" shell
info "CPU" cpu
info "GPU" gpu
info "Memory" memory
info "Disk" disk
command -v docker >/dev/null && prin "Docker" "$(docker --version | cut -d' ' -f3 | tr -d ',')"
command -v kubectl >/dev/null && prin "Kubectl" "$(kubectl version --client --output=yaml 2>/dev/null | grep gitVersion | cut -d' ' -f4)"
command -v go >/dev/null && prin "Go" "$(go version | cut -d' ' -f3)"
command -v python3 >/dev/null && prin "Python" "$(python3 --version | cut -d' ' -f2)"
command -v node >/dev/null && prin "Node" "$(node --version)"
# info "GPU Driver" gpu_driver # Linux/macOS only
# info "CPU Usage" cpu_usage
# info "Disk" disk
# info "Battery" battery
# info "Font" font
# info "Song" song
# [[ "$player" ]] && prin "Music Player" "$player"
# info "Local IP" local_ip
# info "Public IP" public_ip
# info "Users" users
# info "Locale" locale # This only works on glibc systems.
info cols
}
# Performance optimizations
kernel_shorthand="on"
distro_shorthand="off"
os_arch="on"
uptime_shorthand="on"
memory_percent="on"
memory_unit="gib"
shell_path="off"
shell_version="on"
cpu_speed="on"
cpu_cores="logical"
cpu_temp="off" # Often not needed for DevOps
speed_shorthand="on"
# Title
# Hide/Show Fully qualified domain name.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --title_fqdn
title_fqdn="off"
# Kernel
# Shorten the output of the kernel function.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --kernel_shorthand
# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
#
# Example:
# on: '4.8.9-1-ARCH'
# off: 'Linux 4.8.9-1-ARCH'
kernel_shorthand="on"
# Distro
# Shorten the output of the distro function
#
# Default: 'off'
# Values: 'on', 'tiny', 'off'
# Flag: --distro_shorthand
# Supports: Everything except Windows and Haiku
distro_shorthand="off"
# Show/Hide OS Architecture.
# Show 'x86_64', 'x86' and etc in 'Distro:' output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --os_arch
#
# Example:
# on: 'Arch Linux x86_64'
# off: 'Arch Linux'
os_arch="on"
# Uptime
# Shorten the output of the uptime function
#
# Default: 'on'
# Values: 'on', 'tiny', 'off'
# Flag: --uptime_shorthand
#
# Example:
# on: '2 days, 10 hours, 3 mins'
# tiny: '2d 10h 3m'
# off: '2 days, 10 hours, 3 minutes'
uptime_shorthand="on"
# Memory
# Show memory pecentage in output.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --memory_percent
#
# Example:
# on: '1801MiB / 7881MiB (22%)'
# off: '1801MiB / 7881MiB'
memory_percent="off"
# Change memory output unit.
#
# Default: 'mib'
# Values: 'kib', 'mib', 'gib'
# Flag: --memory_unit
#
# Example:
# kib '1020928KiB / 7117824KiB'
# mib '1042MiB / 6951MiB'
# gib: ' 0.98GiB / 6.79GiB'
memory_unit="mib"
# Packages
# Show/Hide Package Manager names.
#
# Default: 'tiny'
# Values: 'on', 'tiny' 'off'
# Flag: --package_managers
#
# Example:
# on: '998 (pacman), 8 (flatpak), 4 (snap)'
# tiny: '908 (pacman, flatpak, snap)'
# off: '908'
package_managers="on"
# Shell
# Show the path to $SHELL
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --shell_path
#
# Example:
# on: '/bin/bash'
# off: 'bash'
shell_path="off"
# Show $SHELL version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --shell_version
#
# Example:
# on: 'bash 4.4.5'
# off: 'bash'
shell_version="on"
# CPU
# CPU speed type
#
# Default: 'bios_limit'
# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
# Flag: --speed_type
# Supports: Linux with 'cpufreq'
# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
speed_type="bios_limit"
# CPU speed shorthand
#
# Default: 'off'
# Values: 'on', 'off'.
# Flag: --speed_shorthand
# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
#
# Example:
# on: 'i7-6500U (4) @ 3.1GHz'
# off: 'i7-6500U (4) @ 3.100GHz'
speed_shorthand="off"
# Enable/Disable CPU brand in output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_brand
#
# Example:
# on: 'Intel i7-6500U'
# off: 'i7-6500U (4)'
cpu_brand="on"
# CPU Speed
# Hide/Show CPU speed.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_speed
#
# Example:
# on: 'Intel i7-6500U (4) @ 3.1GHz'
# off: 'Intel i7-6500U (4)'
cpu_speed="on"
# CPU Cores
# Display CPU cores in output
#
# Default: 'logical'
# Values: 'logical', 'physical', 'off'
# Flag: --cpu_cores
# Support: 'physical' doesn't work on BSD.
#
# Example:
# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
# off: 'Intel i7-6500U @ 3.1GHz'
cpu_cores="logical"
# CPU Temperature
# Hide/Show CPU temperature.
# Note the temperature is added to the regular CPU function.
#
# Default: 'off'
# Values: 'C', 'F', 'off'
# Flag: --cpu_temp
# Supports: Linux, BSD
# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
# coretemp kernel module. This only supports newer Intel processors.
#
# Example:
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
# off: 'Intel i7-6500U (4) @ 3.1GHz'
cpu_temp="on"
# GPU
# Enable/Disable GPU Brand
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gpu_brand
#
# Example:
# on: 'AMD HD 7950'
# off: 'HD 7950'
gpu_brand="on"
# Which GPU to display
#
# Default: 'all'
# Values: 'all', 'dedicated', 'integrated'
# Flag: --gpu_type
# Supports: Linux
#
# Example:
# all:
# GPU1: AMD HD 7950
# GPU2: Intel Integrated Graphics
#
# dedicated:
# GPU1: AMD HD 7950
#
# integrated:
# GPU1: Intel Integrated Graphics
gpu_type="all"
# Resolution
# Display refresh rate next to each monitor
# Default: 'off'
# Values: 'on', 'off'
# Flag: --refresh_rate
# Supports: Doesn't work on Windows.
#
# Example:
# on: '1920x1080 @ 60Hz'
# off: '1920x1080'
refresh_rate="off"
# Gtk Theme / Icons / Font
# Shorten output of GTK Theme / Icons / Font
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --gtk_shorthand
#
# Example:
# on: 'Numix, Adwaita'
# off: 'Numix [GTK2], Adwaita [GTK3]'
gtk_shorthand="off"
# Enable/Disable gtk2 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk2
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Adwaita [GTK3]'
gtk2="on"
# Enable/Disable gtk3 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk3
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Numix [GTK2]'
gtk3="on"
# IP Address
# Website to ping for the public IP
#
# Default: 'http://ident.me'
# Values: 'url'
# Flag: --ip_host
public_ip_host="http://ident.me"
# Public IP timeout.
#
# Default: '2'
# Values: 'int'
# Flag: --ip_timeout
public_ip_timeout=2
# Desktop Environment
# Show Desktop Environment version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --de_version
de_version="on"
# Disk
# Which disks to display.
# The values can be any /dev/sdXX, mount point or directory.
# NOTE: By default we only show the disk info for '/'.
#
# Default: '/'
# Values: '/', '/dev/sdXX', '/path/to/drive'.
# Flag: --disk_show
#
# Example:
# disk_show=('/' '/dev/sdb1'):
# 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 823G / 893G (93%)'
#
# disk_show=('/'):
# 'Disk (/): 74G / 118G (66%)'
#
disk_show=('/')
# Disk subtitle.
# What to append to the Disk subtitle.
#
# Default: 'mount'
# Values: 'mount', 'name', 'dir', 'none'
# Flag: --disk_subtitle
#
# Example:
# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
# 'Disk (/dev/sdb2): 74G / 118G (66%)'
#
# mount: 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 74G / 118G (66%)'
#
# dir: 'Disk (/): 74G / 118G (66%)'
# 'Disk (Local Disk): 74G / 118G (66%)'
# 'Disk (Videos): 74G / 118G (66%)'
#
# none: 'Disk: 74G / 118G (66%)'
# 'Disk: 74G / 118G (66%)'
# 'Disk: 74G / 118G (66%)'
disk_subtitle="mount"
# Disk percent.
# Show/Hide disk percent.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --disk_percent
#
# Example:
# on: 'Disk (/): 74G / 118G (66%)'
# off: 'Disk (/): 74G / 118G'
disk_percent="on"
# Song
# Manually specify a music player.
#
# Default: 'auto'
# Values: 'auto', 'player-name'
# Flag: --music_player
#
# Available values for 'player-name':
#
# amarok
# audacious
# banshee
# bluemindo
# clementine
# cmus
# deadbeef
# deepin-music
# dragon
# elisa
# exaile
# gnome-music
# gmusicbrowser
# gogglesmm
# guayadeque
# io.elementary.music
# iTunes
# juk
# lollypop
# mocp
# mopidy
# mpd
# muine
# netease-cloud-music
# olivia
# playerctl
# pogo
# pragha
# qmmp
# quodlibet
# rhythmbox
# sayonara
# smplayer
# spotify
# strawberry
# tauonmb
# tomahawk
# vlc
# xmms2d
# xnoise
# yarock
music_player="auto"
# Format to display song information.
#
# Default: '%artist% - %album% - %title%'
# Values: '%artist%', '%album%', '%title%'
# Flag: --song_format
#
# Example:
# default: 'Song: Jet - Get Born - Sgt Major'
song_format="%artist% - %album% - %title%"
# Print the Artist, Album and Title on separate lines
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --song_shorthand
#
# Example:
# on: 'Artist: The Fratellis'
# 'Album: Costello Music'
# 'Song: Chelsea Dagger'
#
# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
song_shorthand="off"
# 'mpc' arguments (specify a host, password etc).
#
# Default: ''
# Example: mpc_args=(-h HOST -P PASSWORD)
mpc_args=()
# Text Colors
# Text Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --colors
#
# Each number represents a different part of the text in
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
#
# Example:
# colors=(distro) - Text is colored based on Distro colors.
# colors=(4 6 1 8 8 6) - Text is colored in the order above.
colors=(distro)
# Text Options
# Toggle bold text
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bold
bold="on"
# Enable/Disable Underline
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --underline
underline_enabled="on"
# Underline character
#
# Default: '-'
# Values: 'string'
# Flag: --underline_char
underline_char="-"
# Info Separator
# Replace the default separator with the specified string.
#
# Default: ':'
# Flag: --separator
#
# Example:
# separator="->": 'Shell-> bash'
# separator=" =": 'WM = dwm'
separator=":"
# Color Blocks
# Color block range
# The range of colors to print.
#
# Default: '0', '15'
# Values: 'num'
# Flag: --block_range
#
# Example:
#
# Display colors 0-7 in the blocks. (8 colors)
# neofetch --block_range 0 7
#
# Display colors 0-15 in the blocks. (16 colors)
# neofetch --block_range 0 15
block_range=(0 15)
# Toggle color blocks
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --color_blocks
color_blocks="on"
# Color block width in spaces
#
# Default: '3'
# Values: 'num'
# Flag: --block_width
block_width=3
# Color block height in lines
#
# Default: '1'
# Values: 'num'
# Flag: --block_height
block_height=1
# Color Alignment
#
# Default: 'auto'
# Values: 'auto', 'num'
# Flag: --col_offset
#
# Number specifies how far from the left side of the terminal (in spaces) to
# begin printing the columns, in case you want to e.g. center them under your
# text.
# Example:
# col_offset="auto" - Default behavior of neofetch
# col_offset=7 - Leave 7 spaces then print the colors
col_offset="auto"
# Progress Bars
# Bar characters
#
# Default: '-', '='
# Values: 'string', 'string'
# Flag: --bar_char
#
# Example:
# neofetch --bar_char 'elapsed' 'total'
# neofetch --bar_char '-' '='
bar_char_elapsed="-"
bar_char_total="="
# Toggle Bar border
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bar_border
bar_border="on"
# Progress bar length in spaces
# Number of chars long to make the progress bars.
#
# Default: '15'
# Values: 'num'
# Flag: --bar_length
bar_length=15
# Progress bar colors
# When set to distro, uses your distro's logo colors.
#
# Default: 'distro', 'distro'
# Values: 'distro', 'num'
# Flag: --bar_colors
#
# Example:
# neofetch --bar_colors 3 4
# neofetch --bar_colors distro 5
bar_color_elapsed="distro"
bar_color_total="distro"
# Info display
# Display a bar with the info.
#
# Default: 'off'
# Values: 'bar', 'infobar', 'barinfo', 'off'
# Flags: --cpu_display
# --memory_display
# --battery_display
# --disk_display
#
# Example:
# bar: '[---=======]'
# infobar: 'info [---=======]'
# barinfo: '[---=======] info'
# off: 'info'
cpu_display="off"
memory_display="off"
battery_display="off"
disk_display="off"
# Backend Settings
# Image backend.
#
# Default: 'ascii'
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
# Flag: --backend
image_backend="ascii"
# Image Source
#
# Which image or ascii file to display.
#
# Default: 'auto'
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
# Flag: --source
#
# NOTE: 'auto' will pick the best image source for whatever image backend is used.
# In ascii mode, distro ascii art will be used and in an image mode, your
# wallpaper will be used.
image_source="auto"
# Ascii Options
# Ascii distro
# Which distro's ascii art to display.
#
# Default: 'auto'
# Values: 'auto', 'distro_name'
# Flag: --ascii_distro
# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
# and IRIX have ascii logos
# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
# Use '{distro name}_old' to use the old logos.
# NOTE: Ubuntu has flavor variants.
# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
# postmarketOS, and Void have a smaller logo variant.
# Use '{distro name}_small' to use the small variants.
ascii_distro="auto"
# Ascii Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --ascii_colors
#
# Example:
# ascii_colors=(distro) - Ascii is colored based on Distro colors.
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
ascii_colors=(distro)
# Bold ascii logo
# Whether or not to bold the ascii logo.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --ascii_bold
ascii_bold="on"
# Image Options
# Image loop
# Setting this to on will make neofetch redraw the image constantly until
# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --loop
image_loop="off"
# Thumbnail directory
#
# Default: '~/.cache/thumbnails/neofetch'
# Values: 'dir'
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
# Crop mode
#
# Default: 'normal'
# Values: 'normal', 'fit', 'fill'
# Flag: --crop_mode
#
# See this wiki page to learn about the fit and fill options.
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
crop_mode="normal"
# Crop offset
# Note: Only affects 'normal' crop mode.
#
# Default: 'center'
# Values: 'northwest', 'north', 'northeast', 'west', 'center'
# 'east', 'southwest', 'south', 'southeast'
# Flag: --crop_offset
crop_offset="center"
# Image size
# The image is half the terminal width by default.
#
# Default: 'auto'
# Values: 'auto', '00px', '00%', 'none'
# Flags: --image_size
# --size
image_size="auto"
# Gap between image and text
#
# Default: '3'
# Values: 'num', '-num'
# Flag: --gap
gap=3
# Image offsets
# Only works with the w3m backend.
#
# Default: '0'
# Values: 'px'
# Flags: --xoffset
# --yoffset
yoffset=0
xoffset=0
# Image background color
# Only works with the w3m backend.
#
# Default: ''
# Values: 'color', 'blue'
# Flag: --bg_color
background_color=
# Misc Options
# Stdout mode
# Turn off all colors and disables image backend (ASCII/Image).
# Useful for piping into another command.
# Default: 'off'
# Values: 'on', 'off'
stdout="off"
+29 -28
View File
@@ -1,38 +1,39 @@
{ {
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"LuaSnip": { "branch": "master", "commit": "73813308abc2eaeff2bc0d3f2f79270c491be9d7" }, "LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" },
"better-escape.nvim": { "branch": "master", "commit": "19a38aab94961016430905ebec30d272a01e9742" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" }, "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"conform.nvim": { "branch": "master", "commit": "fbcb4fa7f34bfea9be702ffff481a8e336ebf6ed" }, "conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" },
"fidget.nvim": { "branch": "main", "commit": "3f5475949679953af6d78654db29b944fa826e6a" }, "dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, "fidget.nvim": { "branch": "main", "commit": "6f793b2bcd2d35e201c09520f698bb763220908a" },
"gitsigns.nvim": { "branch": "main", "commit": "1ee5c1fd068c81f9dd06483e639c2aa4587dc197" }, "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
"harpoon": { "branch": "harpoon2", "commit": "ed1f853847ffd04b2b61c314865665e1dadf22c7" }, "gitsigns.nvim": { "branch": "main", "commit": "2038c666bd9d8a0b7349a0b6ee00dc83104b9ecf" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, "harpoon": { "branch": "harpoon2", "commit": "87b1a3506211538f460786c23f98ec63ad9af4e5" },
"lazy.nvim": { "branch": "main", "commit": "1ea3c4085785f460fb0e46d2fe1ee895f5f9e7c1" }, "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "6bdb14f230de0904229ec367b410fb817e59b072" }, "lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" },
"mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "21c5b3ebeaa0412e28096bb0701434c51c1fbf76" },
"neo-tree.nvim": { "branch": "main", "commit": "4c60a198e3f92098778a32a1c76d2bd7ba46a3b5" }, "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" },
"neo-tree.nvim": { "branch": "main", "commit": "83e7a2982fd12b9c3d35bc39dd5877cd91a02a61" },
"neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" }, "neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-autopairs": { "branch": "master", "commit": "7a2c97cccd60abc559344042fefb1d5a85b3e33b" }, "nvim-autopairs": { "branch": "master", "commit": "7b9923abad60b903ece7c52940e1321d39eccc79" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
"nvim-lspconfig": { "branch": "master", "commit": "ac98db2f9f06a56498ec890a96928774eae412c3" }, "nvim-lspconfig": { "branch": "master", "commit": "bfcc0171a43f22afa61d927ffe9fcb6cb85dc99e" },
"nvim-surround": { "branch": "main", "commit": "a868c256c861044beb9794b4dd126480dcdfbdad" }, "nvim-surround": { "branch": "main", "commit": "2e93e154de9ff326def6480a4358bfc149d5da2c" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, "nvim-web-devicons": { "branch": "master", "commit": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c" },
"nvim-web-devicons": { "branch": "master", "commit": "b8221e42cf7287c4dcde81f232f58d7b947c210d" }, "oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
"schemastore.nvim": { "branch": "main", "commit": "caad5439cc80809be7475b625a5e36d1bb06cc7e" }, "schemastore.nvim": { "branch": "main", "commit": "c73e2b170a4927d1dc1b48e878bba6cf0ed9b07c" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "b25b749b9db64d375d782094e2b9dce53ad53a40" },
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"tokyonight.nvim": { "branch": "main", "commit": "d14614cbfc63b6037bfccd48bb982d2ad2003352" }, "tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" },
"vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" }, "undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" },
"which-key.nvim": { "branch": "main", "commit": "b4177e3eaf15fe5eb8357ebac2286d488be1ed00" } "vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
} }
+29
View File
@@ -26,6 +26,7 @@ opt.ignorecase = true
opt.smartcase = true opt.smartcase = true
opt.hlsearch = true opt.hlsearch = true
opt.incsearch = true opt.incsearch = true
opt.inccommand = 'split'
-- Aussehen -- Aussehen
opt.termguicolors = true opt.termguicolors = true
@@ -59,3 +60,31 @@ opt.completeopt = 'menu,menuone,noselect'
-- Fold (erstmal aus) -- Fold (erstmal aus)
opt.foldenable = false opt.foldenable = false
-- ============================================================================
-- NEU: Automatischer Wechsel für QA vs. Speed (Hybrid Line Numbers)
-- ============================================================================
-- Normal Mode = Relative Nummern (zum schnellen Springen)
-- Insert Mode = Absolute Nummern (zum Ablesen für Tickets/Kollegen)
local augroup = vim.api.nvim_create_augroup("numbertoggle", {})
vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "CmdlineLeave" }, {
group = augroup,
pattern = "*",
callback = function()
if vim.o.nu and vim.api.nvim_get_mode().mode ~= "i" then
vim.opt.relativenumber = true
end
end,
})
vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "InsertEnter", "CmdlineEnter" }, {
group = augroup,
pattern = "*",
callback = function()
if vim.o.nu then
vim.opt.relativenumber = false
vim.cmd "redraw"
end
end,
})
+29 -39
View File
@@ -1,67 +1,57 @@
-- ============================================================================ -- ============================================================================
-- Editor - Quality of Life Plugins -- Editor Enhancements - Comment, Surround, etc.
-- ============================================================================ -- ============================================================================
return { return {
-- Auto pairs -- Comment.nvim - gc zum Kommentieren
{
'windwp/nvim-autopairs',
event = 'InsertEnter',
config = true,
},
-- Comment.nvim
{ {
'numToStr/Comment.nvim', 'numToStr/Comment.nvim',
event = { 'BufReadPost', 'BufNewFile' }, event = 'VeryLazy',
dependencies = {
'JoosepAlviste/nvim-ts-context-commentstring',
},
config = function() config = function()
require('Comment').setup({ require('Comment').setup({
pre_hook = require('ts_context_commentstring.integrations.comment_nvim').create_pre_hook(), -- LHS of toggle mappings in NORMAL mode
toggler = {
line = 'gcc', -- Line-comment toggle
block = 'gbc', -- Block-comment toggle
},
-- LHS of operator-pending mappings in NORMAL and VISUAL mode
opleader = {
line = 'gc', -- Line-comment operator
block = 'gb', -- Block-comment operator
},
}) })
end, end,
}, },
-- Surround -- Surround - ys/cs/ds für quotes, brackets, etc.
{ {
'kylechui/nvim-surround', 'kylechui/nvim-surround',
version = '*', version = '*',
event = 'VeryLazy', event = 'VeryLazy',
config = true, config = function()
require('nvim-surround').setup()
end,
}, },
-- Better escape -- Auto-pairs
{ {
'max397574/better-escape.nvim', 'windwp/nvim-autopairs',
event = 'InsertEnter', event = 'InsertEnter',
config = function() config = function()
require('better_escape').setup({ require('nvim-autopairs').setup()
mapping = { 'jk', 'jj' },
timeout = 200,
})
end, end,
}, },
-- Which-key (zeigt Keybindings) -- Undo-tree - Visueller Undo-Verlauf
{ {
'folke/which-key.nvim', 'mbbill/undotree',
event = 'VeryLazy', cmd = 'UndotreeToggle',
init = function() keys = {
vim.o.timeout = true { '<leader>u', '<cmd>UndotreeToggle<CR>', desc = 'Toggle Undotree' },
vim.o.timeoutlen = 300 },
config = function()
vim.g.undotree_WindowLayout = 3
vim.g.undotree_SetFocusWhenToggle = 1
end, end,
opts = {
-- Deine Leader-Gruppen
spec = {
{ '<leader>f', group = 'Find' },
{ '<leader>g', group = 'Git' },
{ '<leader>h', group = 'Hunk' },
{ '<leader>t', group = 'Toggle' },
{ '<leader>c', group = 'Code' },
{ '<leader>w', group = 'Workspace' },
},
},
}, },
} }
+12 -2
View File
@@ -8,6 +8,14 @@ return {
'lewis6991/gitsigns.nvim', 'lewis6991/gitsigns.nvim',
event = { 'BufReadPre', 'BufNewFile' }, event = { 'BufReadPre', 'BufNewFile' },
opts = { opts = {
current_line_blame = true,
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol',
delay = 100,
},
current_line_blame_formatter = ' <author> • <author_time:%d.%m.%Y> • <summary>',
signs = { signs = {
add = { text = '' }, add = { text = '' },
change = { text = '' }, change = { text = '' },
@@ -41,8 +49,10 @@ return {
-- Actions -- Actions
map('n', '<leader>hs', gs.stage_hunk, { desc = 'Stage hunk' }) map('n', '<leader>hs', gs.stage_hunk, { desc = 'Stage hunk' })
map('n', '<leader>hr', gs.reset_hunk, { desc = 'Reset hunk' }) map('n', '<leader>hr', gs.reset_hunk, { desc = 'Reset hunk' })
map('v', '<leader>hs', function() gs.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) end, { desc = 'Stage hunk' }) map('v', '<leader>hs', function() gs.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) end,
map('v', '<leader>hr', function() gs.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) end, { desc = 'Reset hunk' }) { desc = 'Stage hunk' })
map('v', '<leader>hr', function() gs.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) end,
{ desc = 'Reset hunk' })
map('n', '<leader>hS', gs.stage_buffer, { desc = 'Stage buffer' }) map('n', '<leader>hS', gs.stage_buffer, { desc = 'Stage buffer' })
map('n', '<leader>hu', gs.undo_stage_hunk, { desc = 'Undo stage hunk' }) map('n', '<leader>hu', gs.undo_stage_hunk, { desc = 'Undo stage hunk' })
map('n', '<leader>hR', gs.reset_buffer, { desc = 'Reset buffer' }) map('n', '<leader>hR', gs.reset_buffer, { desc = 'Reset buffer' })
+78 -18
View File
@@ -46,6 +46,9 @@ return {
-- Python (für Scripts/Workflows) -- Python (für Scripts/Workflows)
'pyright', -- Python 'pyright', -- Python
-- LaTeX
'texlab',
-- Supporting -- Supporting
'lua_ls', -- Lua (für Neovim config) 'lua_ls', -- Lua (für Neovim config)
'html', -- HTML 'html', -- HTML
@@ -54,6 +57,7 @@ return {
'yamlls', -- YAML 'yamlls', -- YAML
'dockerls', -- Dockerfile 'dockerls', -- Dockerfile
'docker_compose_language_service', -- Docker Compose 'docker_compose_language_service', -- Docker Compose
'eslint', -- Eslinter
}, },
}) })
@@ -98,7 +102,21 @@ return {
callback = vim.lsp.buf.clear_references, callback = vim.lsp.buf.clear_references,
}) })
end end
if client and client.name == 'eslint' then
vim.api.nvim_create_autocmd('BufWritePre', {
buffer = event.buf,
callback = function()
-- Statt vim.cmd('EslintFixAll') nutzen wir die direkte LSP-Aktion:
vim.lsp.buf.code_action({
context = { only = { "source.fixAll.eslint" } },
apply = true,
})
end, end,
desc = 'ESLint: Fixe alle Probleme beim Speichern (0.11 Style)',
})
end
end
}) })
-- ========== Server Configurations ========== -- ========== Server Configurations ==========
@@ -203,6 +221,43 @@ return {
}, },
}) })
-- Eslinter
vim.lsp.config('eslint', {
capabilities = capabilities,
settings = {
workingDirectory = { mode = 'auto' },
},
})
vim.lsp.enable('eslint')
-- LaTeX (texlab)
vim.lsp.config('texlab', {
capabilities = capabilities,
settings = {
texlab = {
build = {
executable = 'pdflatex',
args = { '%f' },
onSave = true, -- Auto-compile beim Speichern
forwardSearchAfter = false,
},
forwardSearch = {
executable = 'open',
args = { '%p' },
},
chktex = {
onOpenAndSave = true,
},
diagnosticsDelay = 300,
latexFormatter = 'latexindent',
latexindent = {
modifyLineBreaks = false,
},
},
},
})
-- JSON mit Schema Support -- JSON mit Schema Support
vim.lsp.config('jsonls', { vim.lsp.config('jsonls', {
capabilities = capabilities, capabilities = capabilities,
@@ -247,14 +302,22 @@ return {
capabilities = capabilities, capabilities = capabilities,
}) })
-- ========== Diagnostics Configuration ========== -- ========== Diagnostics Configuration (Modern 0.11 Style) ==========
vim.diagnostic.config({ vim.diagnostic.config({
-- Hier werden die Zeichen jetzt direkt definiert (ersetzt sign_define)
signs = {
text = {
[vim.diagnostic.severity.ERROR] = '',
[vim.diagnostic.severity.WARN] = '',
[vim.diagnostic.severity.HINT] = '',
[vim.diagnostic.severity.INFO] = '»',
},
},
virtual_text = { virtual_text = {
prefix = '', prefix = '',
source = 'if_many', source = 'if_many',
}, },
signs = true,
underline = true, underline = true,
update_in_insert = false, update_in_insert = false,
severity_sort = true, severity_sort = true,
@@ -266,24 +329,21 @@ return {
}, },
}) })
-- Diagnostic signs -- LSP Hover & Signature Help Styling
local signs = { Error = '', Warn = '', Hint = '', Info = '»' } local handlers = {
for type, icon in pairs(signs) do ['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'rounded' }),
local hl = 'DiagnosticSign' .. type ['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = 'rounded' }),
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = '' }) }
-- Handlers registrieren
for method, handler in pairs(handlers) do
vim.lsp.handlers[method] = handler
end end
-- LSP Hover border -- Hover Popup Styling (Highlights)
vim.lsp.handlers['textDocument/hover'] = vim.lsp.with( vim.api.nvim_set_hl(0, 'NormalFloat', { bg = '#1e1e1e', fg = '#ffffff' })
vim.lsp.handlers.hover, vim.api.nvim_set_hl(0, 'FloatBorder', { fg = '#61afef', bg = '#1e1e1e' })
{ border = 'rounded' } end, -- Hier endet die config-Funktion des Plugins
)
vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(
vim.lsp.handlers.signature_help,
{ border = 'rounded' }
)
end,
}, },
-- SchemaStore für JSON/YAML -- SchemaStore für JSON/YAML
+1 -1
View File
@@ -1,5 +1,5 @@
-- ============================================================================ -- ============================================================================
-- Neo-tree - File Explorer (ASCII Mode - Keine Nerd Font Icons benötigt) -- Neo-tree - File Explorer
-- ============================================================================ -- ============================================================================
return { return {
+13
View File
@@ -0,0 +1,13 @@
return {
'stevearc/oil.nvim',
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("oil").setup({
view_options = {
show_hidden = true, -- Damit du auch .husky, .env etc. siehst
},
})
-- Der Primeagen-Shortcut: Einfach '-' drücken um den Ordner zu öffnen
vim.keymap.set("n", "-", "<CMD>Oil<CR>", { desc = "Open parent directory" })
end,
}
+52 -21
View File
@@ -1,41 +1,38 @@
-- ============================================================================ -- ============================================================================
-- UI - Colorscheme & Statusline -- UI Enhancements - Colorscheme, Statusline, Which-Key
-- ============================================================================ -- ============================================================================
return { return {
-- Tokyonight Theme -- Colorscheme: Tokyo Night
{ {
'folke/tokyonight.nvim', 'folke/tokyonight.nvim',
lazy = false,
priority = 1000, priority = 1000,
config = function() config = function()
require('tokyonight').setup({ require('tokyonight').setup({
style = 'night', style = 'night',
transparent = true, transparent = true, -- DEIN ALTER WERT!
terminal_colors = true, terminal_colors = true,
styles = { styles = {
sidebars = 'transparent', comments = { italic = true },
floats = 'transparent', keywords = { italic = true },
sidebars = 'transparent', -- DEIN ALTER WERT!
floats = 'transparent', -- DEIN ALTER WERT!
}, },
on_colors = function(colors)
colors.bg_statusline = colors.none
end,
}) })
vim.cmd.colorscheme('tokyonight-night') vim.cmd.colorscheme('tokyonight-night')
end, end,
}, },
-- Lualine Statusline -- Statusline
{ {
'nvim-lualine/lualine.nvim', 'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' }, dependencies = { 'nvim-tree/nvim-web-devicons' },
event = 'VeryLazy', config = function()
opts = { require('lualine').setup({
options = { options = {
theme = 'tokyonight', theme = 'tokyonight',
component_separators = { left = '', right = '' }, component_separators = { left = '', right = '' },
section_separators = { left = '', right = '' }, section_separators = { left = '', right = '' },
globalstatus = true,
}, },
sections = { sections = {
lualine_a = { 'mode' }, lualine_a = { 'mode' },
@@ -44,32 +41,66 @@ return {
{ {
'filename', 'filename',
path = 1, -- Relativer Pfad path = 1, -- Relativer Pfad
symbols = {
modified = '[+]',
readonly = '[-]',
unnamed = '[No Name]',
}
} }
}, },
lualine_x = { 'encoding', 'fileformat', 'filetype' }, lualine_x = { 'encoding', 'fileformat', 'filetype' },
lualine_y = { 'progress' }, lualine_y = { 'progress' },
lualine_z = { 'location' } lualine_z = { 'location' }
}, },
})
end,
},
-- Which-Key: Zeigt verfügbare Keybindings
{
'folke/which-key.nvim',
event = 'VeryLazy',
opts = {
preset = 'modern',
delay = 500,
win = {
border = 'rounded',
},
spec = {
{ '<leader>f', group = 'find' },
{ '<leader>g', group = 'git' },
{ '<leader>e', group = 'explorer' },
{ '<leader>c', group = 'code' },
{ '<leader>w', group = 'workspace' },
{ '<leader>a', group = 'avente/ai' },
},
}, },
}, },
-- Indent guides -- Indent guides
{ {
'lukas-reineke/indent-blankline.nvim', 'lukas-reineke/indent-blankline.nvim',
event = { 'BufReadPost', 'BufNewFile' },
main = 'ibl', main = 'ibl',
event = { 'BufReadPost', 'BufNewFile' },
opts = { opts = {
indent = { indent = {
char = '', char = '',
}, },
scope = { scope = {
show_start = false, enabled = true,
show_end = false, },
},
},
{
'stevearc/dressing.nvim',
lazy = false, -- Wichtig, damit es sofort bereit ist
opts = {
input = {
enabled = true,
default_prompt = "",
border = "rounded",
relative = "editor",
prefer_width = 50,
},
select = {
enabled = true,
backend = { "nui", "builtin" }, -- Telescope hier bewusst rauslassen!
}, },
}, },
}, },
+1 -1
View File
@@ -14,7 +14,7 @@ $line_break\
$character""" $character"""
# Fast command execution # Fast command execution
command_timeout = 1000 command_timeout = 3000
[time] [time]
disabled = false disabled = false
+5
View File
@@ -0,0 +1,5 @@
# Maus-support aktivate
set -g mouse on
# Options:
set -g history-limit 10000
Executable → Regular
View File
+38 -4
View File
@@ -53,15 +53,30 @@ nvim
### Manuelle Installation ### Manuelle Installation
```bash ```bash
# Core tools installieren # Custom taps hinzufügen (für Yabai)
brew install git neovim fish starship fzf ripgrep fd bat btop brew tap koekeishiya/formulae
brew install --cask ghostty
# Core & Development tools installieren
brew install git neovim fish starship fzf ripgrep fd bat btop neofetch direnv lazygit mise yabai tmux
brew install --cask ghostty 1password-cli
# Symlinks erstellen # Symlinks erstellen
ln -sf ~/gits/dotfiles/.config/fish ~/.config/fish ln -sf ~/gits/dotfiles/.config/fish ~/.config/fish
ln -sf ~/gits/dotfiles/.config/nvim ~/.config/nvim ln -sf ~/gits/dotfiles/.config/nvim ~/.config/nvim
ln -sf ~/gits/dotfiles/.config/ghostty ~/.config/ghostty 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/yabai ~/.config/yabai
# Btop & Htop Konfigurationsdateien verlinken
mkdir -p ~/.config/btop ~/.config/htop
ln -sf ~/gits/dotfiles/.config/btop/btop.conf ~/.config/btop/btop.conf
ln -sf ~/gits/dotfiles/.config/htop/htoprc ~/.config/htop/htoprc
# Tmux Konfiguration verlinken (modern & klassisch)
mkdir -p ~/.config/tmux
ln -sf ~/gits/dotfiles/.config/tmux/tmux.conf ~/.config/tmux/tmux.conf
ln -sf ~/gits/dotfiles/.config/tmux/tmux.conf ~/.tmux.conf
# Fish als default shell # Fish als default shell
chsh -s $(which fish) chsh -s $(which fish)
@@ -205,6 +220,25 @@ nvim
--- ---
## 🤖 KI / AI CLI Tools (Optional)
Das Installationsskript kann optional verschiedene KI-Kommandozeilentools für Sie einrichten:
* **Google Antigravity CLI (`agy`)**: Das primäre AI-Agent-Werkzeug für dieses Setup.
* Installation: `curl -sS https://antigravity.google/install.sh | bash`
* **Claude Code (`@anthropic-ai/claude-code`)**: Anthropic's offizielles, agentisches Terminal-Tool für Claude.
* Installation (via Mise): `mise exec -- npm install -g @anthropic-ai/claude-code`
* **LLM CLI (`llm`)**: Simon Willison's CLI für den universellen API-Zugriff auf ChatGPT, Claude und DeepSeek über Plugins.
* Installation: `brew install llm` bzw. `pip install llm`
* Plugins: `llm install llm-claude llm-gpt3 llm-deepseek`
* **tgpt**: Ein Zero-Config Terminal ChatGPT Client (benötigt keinen API-Key).
* Installation: `brew install tgpt`
* **Ollama**: Zum lokalen Offline-Ausführen von Modellen wie `deepseek-coder`.
* Installation: `brew install --cask ollama` (macOS) bzw. `curl -fsSL https://ollama.com/install.sh | sh` (Linux)
* Ausführen: `ollama run deepseek-coder`
---
## 🎨 Features ## 🎨 Features
### Neovim ### Neovim
@@ -216,7 +250,7 @@ nvim
**Lazy Loading** - Schneller Start **Lazy Loading** - Schneller Start
### Fish Shell ### Fish Shell
**NVM Integration** - Node Version Management **Mise Integration** - Modernes Tool- & Node-Version-Management
**FZF Integration** - Fuzzy finding everywhere **FZF Integration** - Fuzzy finding everywhere
**Git Shortcuts** - Aliases für häufige Commands **Git Shortcuts** - Aliases für häufige Commands
**Kubernetes** - kubectl completion **Kubernetes** - kubectl completion
+196 -6
View File
@@ -143,11 +143,48 @@ backup_configs() {
[ -d ~/.config/btop ] && cp -r ~/.config/btop "$BACKUP_DIR/" [ -d ~/.config/btop ] && cp -r ~/.config/btop "$BACKUP_DIR/"
[ -d ~/.config/htop ] && cp -r ~/.config/htop "$BACKUP_DIR/" [ -d ~/.config/htop ] && cp -r ~/.config/htop "$BACKUP_DIR/"
[ -d ~/.config/yabai ] && cp -r ~/.config/yabai "$BACKUP_DIR/" [ -d ~/.config/yabai ] && cp -r ~/.config/yabai "$BACKUP_DIR/"
[ -d ~/.config/mise ] && cp -r ~/.config/mise "$BACKUP_DIR/"
[ -f ~/.config/starship.toml ] && cp ~/.config/starship.toml "$BACKUP_DIR/" [ -f ~/.config/starship.toml ] && cp ~/.config/starship.toml "$BACKUP_DIR/"
[ -f ~/.tmux.conf ] && cp ~/.tmux.conf "$BACKUP_DIR/"
[ -d ~/.config/tmux ] && cp -r ~/.config/tmux "$BACKUP_DIR/"
log "Backup created: $BACKUP_DIR" log "Backup created: $BACKUP_DIR"
} }
install_1password_cli() {
log "Installing 1Password CLI..."
if command -v op &> /dev/null; then
log "1Password CLI is already installed."
return
fi
case $OS in
"macos")
install_cask 1password-cli
;;
"arch")
if command -v yay &> /dev/null; then
yay -S --noconfirm 1password-cli
else
sudo pacman -S --noconfirm 1password-cli
fi
;;
"debian")
log "Configuring APT repository for 1Password..."
curl -sS https://downloads.1password.com/linux/keys/1password.asc | sudo gpg --dearmor --output /usr/share/keyrings/1password-archive-keyring.gpg
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/1password-archive-keyring.gpg] https://downloads.1password.com/linux/debian/amd64 stable main' | sudo tee /etc/apt/sources.list.d/1password.list
sudo apt update && sudo apt install -y 1password-cli
;;
"fedora")
log "Configuring DNF repository for 1Password..."
sudo rpm --import https://downloads.1password.com/linux/keys/1password.asc
sudo sh -c 'echo -e "[1password]\nname=1Password Stable Channel\nbaseurl=https://downloads.1password.com/linux/rpm/stable/\$basearch\nenabled=1\ngpgcheck=1\ngpgkey=https://downloads.1password.com/linux/keys/1password.asc" > /etc/yum.repos.d/1password.repo'
sudo dnf install -y 1password-cli
;;
esac
}
install_core_tools() { install_core_tools() {
log "Installing core development tools..." log "Installing core development tools..."
@@ -164,11 +201,12 @@ install_core_tools() {
install_package bat install_package bat
install_package btop install_package btop
install_package neofetch install_package neofetch
install_package tmux
# Development # Development
install_package go install_package go
install_package python3 install_package python3
install_package node install_package mise
# Terminal # Terminal
install_cask ghostty install_cask ghostty
@@ -176,6 +214,11 @@ install_core_tools() {
# Optional tools # Optional tools
install_package direnv install_package direnv
install_package lazygit install_package lazygit
# Window manager
log "Tapping koekeishiya/formulae for yabai..."
brew tap koekeishiya/formulae
install_package yabai
;; ;;
"arch") "arch")
# Check if yay is installed # Check if yay is installed
@@ -189,8 +232,8 @@ install_core_tools() {
# Install via yay # Install via yay
yay -S --noconfirm \ yay -S --noconfirm \
git neovim fish starship fzf ripgrep fd bat btop neofetch \ git neovim fish starship fzf ripgrep fd bat btop neofetch tmux \
go python nodejs npm \ go python mise \
ghostty direnv lazygit ghostty direnv lazygit
;; ;;
"debian"|"fedora") "debian"|"fedora")
@@ -202,6 +245,7 @@ install_core_tools() {
install_package fd-find install_package fd-find
install_package bat install_package bat
install_package neofetch install_package neofetch
install_package tmux
# Neovim (from source if needed) # Neovim (from source if needed)
if ! command -v nvim &> /dev/null; then if ! command -v nvim &> /dev/null; then
@@ -215,12 +259,19 @@ install_core_tools() {
# Development # Development
install_package golang install_package golang
install_package python3 install_package python3
install_package nodejs
# Install mise
if ! command -v mise &> /dev/null; then
log "Installing mise version manager..."
curl https://mise.run | sh
fi
warn "Ghostty needs manual installation on $OS" warn "Ghostty needs manual installation on $OS"
;; ;;
esac esac
install_1password_cli
log "Core tools installed!" log "Core tools installed!"
} }
@@ -338,18 +389,145 @@ setup_other_configs() {
ln -sf "$DOTFILES_DIR/.config/yabai" ~/.config/yabai ln -sf "$DOTFILES_DIR/.config/yabai" ~/.config/yabai
fi fi
# Mise
if [ -d "$DOTFILES_DIR/.config/mise" ]; then
rm -rf ~/.config/mise
ln -sf "$DOTFILES_DIR/.config/mise" ~/.config/mise
fi
# Tmux
if [ -d "$DOTFILES_DIR/.config/tmux" ]; then
rm -rf ~/.config/tmux
ln -sf "$DOTFILES_DIR/.config/tmux" ~/.config/tmux
# Symlink tmux.conf to home directory for backward compatibility
rm -f ~/.tmux.conf
ln -sf "$DOTFILES_DIR/.config/tmux/tmux.conf" ~/.tmux.conf
fi
log "Configurations symlinked!" log "Configurations symlinked!"
} }
install_playwright() { install_playwright() {
log "Installing Playwright..." log "Installing Playwright..."
if command -v npm &> /dev/null; then local MISE_CMD="mise"
if [ -f "$HOME/.local/bin/mise" ]; then
MISE_CMD="$HOME/.local/bin/mise"
fi
if command -v "$MISE_CMD" &> /dev/null; then
log "Using mise node runtime for global packages..."
"$MISE_CMD" exec -- npm install -g @playwright/test
"$MISE_CMD" exec -- npx playwright install
log "Playwright installed!"
elif command -v npm &> /dev/null; then
log "Using system npm..."
npm install -g @playwright/test npm install -g @playwright/test
npx playwright install npx playwright install
log "Playwright installed!" log "Playwright installed!"
else else
warn "npm not found, skipping Playwright" warn "npm / mise not found, skipping Playwright"
fi
}
install_optional_ai_tools() {
# Check if stdin is a terminal (tty) to avoid hanging in automated setups
if [ ! -t 0 ]; then
log "Non-interactive shell detected, skipping optional AI tools installation."
return 0
fi
log "Checking Google Antigravity CLI status..."
if ! command -v agy &> /dev/null; then
warn "Google Antigravity CLI (agy) is not installed in the PATH."
log "To install it, run the official installer: curl -sS https://antigravity.google/install.sh | bash"
else
log "Google Antigravity CLI (agy) is already installed."
fi
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
if prompt_yes_no "Do you want to install Claude Code (@anthropic-ai/claude-code)?"; then
log "Installing Claude Code..."
local MISE_CMD="mise"
[ -f "$HOME/.local/bin/mise" ] && MISE_CMD="$HOME/.local/bin/mise"
if command -v "$MISE_CMD" &> /dev/null; then
"$MISE_CMD" exec -- npm install -g @anthropic-ai/claude-code
elif command -v npm &> /dev/null; then
npm install -g @anthropic-ai/claude-code
else
warn "npm / mise not found, cannot install Claude Code."
fi
fi
# 2. Simon Willison's LLM CLI (supports OpenAI, Claude, DeepSeek via plugins)
if prompt_yes_no "Do you want to install Simon Willison's LLM CLI (supports ChatGPT, Claude, DeepSeek)?"; then
log "Installing LLM CLI..."
case $PACKAGE_MANAGER in
"brew")
brew install llm
;;
*)
if command -v pip3 &> /dev/null; then
pip3 install llm
elif command -v pip &> /dev/null; then
pip install llm
else
warn "pip not found, cannot install llm cli."
fi
;;
esac
# Install plugins if llm is installed
if command -v llm &> /dev/null; then
log "Installing plugins for llm (llm-claude, llm-gpt3, llm-deepseek)..."
llm install llm-claude
llm install llm-gpt3
llm install llm-deepseek || true
fi
fi
# 3. tgpt (Zero-config terminal GPT chat client)
if prompt_yes_no "Do you want to install tgpt (Zero-config Terminal ChatGPT)?"; then
log "Installing tgpt..."
case $PACKAGE_MANAGER in
"brew")
brew install tgpt
;;
*)
curl -sSL https://raw.githubusercontent.com/aandrew-me/tgpt/main/install.sh | bash -s -- -y
;;
esac
fi
# 4. Ollama (for running DeepSeek locally offline)
if prompt_yes_no "Do you want to install Ollama (to run DeepSeek and other models locally)?"; then
log "Installing Ollama..."
case $OS in
"macos")
install_cask ollama
;;
*)
curl -fsSL https://ollama.com/install.sh | sh
;;
esac
log "To run DeepSeek locally after Ollama is running, execute: ollama run deepseek-coder"
fi fi
} }
@@ -361,7 +539,19 @@ main() {
setup_fish setup_fish
setup_neovim setup_neovim
setup_other_configs setup_other_configs
# Install runtimes via mise
local MISE_CMD="mise"
if [ -f "$HOME/.local/bin/mise" ]; then
MISE_CMD="$HOME/.local/bin/mise"
fi
if command -v "$MISE_CMD" &> /dev/null; then
log "Installing language runtimes configured in mise..."
"$MISE_CMD" install
fi
install_playwright install_playwright
install_optional_ai_tools
echo -e "${GREEN} echo -e "${GREEN}
╔══════════════════════════════════════════════════════════╗ ╔══════════════════════════════════════════════════════════╗