Compare commits
	
		
			24 Commits
		
	
	
		
			62ccbf5d4b
			...
			master
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 360afecb75 | |||
| 5fb9b3618b | |||
| 41fb0c639a | |||
| 4b17d5db2d | |||
| cf85fb6372 | |||
| 475c183ff7 | |||
| f39f21b624 | |||
| afef09e9a8 | |||
| 290ed36719 | |||
| 5fbc0bca6b | |||
| 6120bd900f | |||
| 71fa00e26b | |||
| 1507b0c3c4 | |||
| 9837828c72 | |||
| dbc860d89d | |||
| 5cc4dac594 | |||
| 5de5edca67 | |||
| 875ee44e7c | |||
| 781edd5bf2 | |||
| 90c71a0316 | |||
| d7f8b52c98 | |||
| a9fe95254a | |||
| 0cadba2ad4 | |||
| a1b422e29e | 
							
								
								
									
										16
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -17,15 +17,23 @@ zsh/* | ||||
| !zsh/.zshrc | ||||
| !zsh/.zshenv | ||||
| !zsh/.zprofile | ||||
| !zsh/.zsh_plugins.txt | ||||
| !zsh/scripts.zsh | ||||
| !zsh/aliases.zsh | ||||
| !zsh/completions/.keep | ||||
| !zsh/.p10k.zsh | ||||
| !zsh/ssh-menu | ||||
| !zsh/get-dump | ||||
|  | ||||
| # starship | ||||
| !starship | ||||
| starship/* | ||||
| !starship/config.toml | ||||
|  | ||||
| # tmux | ||||
| !tmux | ||||
| tmux/* | ||||
| !tmux/tmux.conf | ||||
| !tmux/tmux-new-project | ||||
| !tmux/tmux-sessionizer | ||||
| !tmux/tmux-ggclone | ||||
| !tmux/tmux-ssher | ||||
| @@ -36,3 +44,9 @@ git/* | ||||
| !git/config | ||||
| !git/gitignore | ||||
| !git/aflabs | ||||
|  | ||||
| # ghostty | ||||
| !ghostty | ||||
| ghostty/* | ||||
| !ghostty/config | ||||
| !ghostty/themes | ||||
|   | ||||
| @@ -75,6 +75,7 @@ history = 10000 | ||||
|  | ||||
| [window] | ||||
| dynamic_title = true | ||||
| option_as_alt = "Both" | ||||
|  | ||||
| [window.dimensions] | ||||
| columns = 150 | ||||
|   | ||||
							
								
								
									
										46
									
								
								ghostty/config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								ghostty/config
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| # theme | ||||
| # theme = light:gruvbox-material-soft-light,dark:gruvbox-material-soft-dark | ||||
| theme = gruvbox-material-soft-dark | ||||
|  | ||||
| # cursor | ||||
| cursor-style = block | ||||
| cursor-style-blink = true | ||||
|  | ||||
| # mouse | ||||
| mouse-hide-while-typing = true | ||||
|  | ||||
| # font stuff | ||||
| font-family = JetBrainsMono Nerd Font | ||||
| font-size = 15 | ||||
| font-thicken = true | ||||
| bold-is-bright = true | ||||
|  | ||||
| # disable ligatures | ||||
| font-feature=-calt | ||||
| font-feature=-liga | ||||
| font-feature=-dlig | ||||
|  | ||||
| # window | ||||
| window-theme = dark | ||||
| window-height = 36 | ||||
| window-width = 150 | ||||
|  | ||||
| # macos send option as alt | ||||
| macos-option-as-alt = true | ||||
|  | ||||
| # no warning full close | ||||
| confirm-close-surface = false | ||||
| # quit-after-last-window-closed = true | ||||
|  | ||||
| # keybinds | ||||
| keybind = global:cmd+enter=new_window | ||||
|  | ||||
| # shell integrations for zsh | ||||
| # https://ghostty.org/docs/features/shell-integration  | ||||
| shell-integration = zsh | ||||
|  | ||||
| # gtk | ||||
| gtk-titlebar = false | ||||
|  | ||||
| # paste protection | ||||
| clipboard-paste-protection = false | ||||
							
								
								
									
										21
									
								
								ghostty/themes/gruvbox-material-soft-dark
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								ghostty/themes/gruvbox-material-soft-dark
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| palette = 0=252423 | ||||
| palette = 1=#ea6962 | ||||
| palette = 2=#a9b665 | ||||
| palette = 3=#d8a657 | ||||
| palette = 4=#7daea3 | ||||
| palette = 5=#d3869b | ||||
| palette = 6=#89b482 | ||||
| palette = 7=#d4be98 | ||||
| palette = 8=#32302f | ||||
| palette = 9=#ea6962 | ||||
| palette = 10=#a9b665 | ||||
| palette = 11=#d8a657 | ||||
| palette = 12=#7daea3 | ||||
| palette = 13=#d3869b | ||||
| palette = 14=#89b482 | ||||
| palette = 15=#d4be98 | ||||
| background = #32302f | ||||
| foreground = #d4be98 | ||||
| cursor-color = #d4be98 | ||||
| selection-background = #45403d | ||||
| selection-foreground = #d4be98 | ||||
							
								
								
									
										21
									
								
								ghostty/themes/gruvbox-material-soft-light
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								ghostty/themes/gruvbox-material-soft-light
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| palette = 0=#ebdbb2 | ||||
| palette = 1=#c14a4a | ||||
| palette = 2=#6c782e | ||||
| palette = 3=#b47109 | ||||
| palette = 4=#45707a | ||||
| palette = 5=#945e80 | ||||
| palette = 6=#4c7a5d | ||||
| palette = 7=#654735 | ||||
| palette = 8=#f3eac7 | ||||
| palette = 9=#c14a4a | ||||
| palette = 10=#6c782e | ||||
| palette = 11=#b47109 | ||||
| palette = 12=#45707a | ||||
| palette = 13=#945e80 | ||||
| palette = 14=#4c7a5d | ||||
| palette = 15=#654735 | ||||
| background = #f2e5bc | ||||
| foreground = #654735 | ||||
| cursor-color = #654735 | ||||
| selection-background = #ebdbb2 | ||||
| selection-foreground = #654735 | ||||
| @@ -5,8 +5,6 @@ | ||||
| 	autocrlf = input | ||||
| 	excludesfile = ~/.config/git/gitignore | ||||
| 	editor = nvim | ||||
| [init] | ||||
| 	defaultBranch = master | ||||
| [include] | ||||
| 	path = ~/.config/git/alias | ||||
| [include] | ||||
| @@ -14,3 +12,7 @@ | ||||
| [includeIf "gitdir:~/Desktop/git/git.aflabs.org/"] | ||||
| 	path = ~/.config/git/aflabs | ||||
|  | ||||
| [init] | ||||
| 	defaultBranch = main | ||||
| [alias] | ||||
| 	blame = "!f() { [ -f .git-blame-ignore-revs ] && git blame --ignore-revs-file .git-blame-ignore-revs \"$@\" || git blame \"$@\"; }; f" | ||||
|   | ||||
							
								
								
									
										2
									
								
								nvim
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								nvim
									
									
									
									
									
								
							 Submodule nvim updated: b087eaa1ef...d97244ca10
									
								
							
							
								
								
									
										58
									
								
								starship/config.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								starship/config.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| add_newline = false | ||||
|  | ||||
| format = """\ | ||||
| $hostname\ | ||||
| [$directory](cyan)\ | ||||
| $git_branch\ | ||||
| $git_commit\ | ||||
| $git_state\ | ||||
| $git_status\ | ||||
| $character\ | ||||
| """ | ||||
|  | ||||
| right_format = """\ | ||||
| $golang\ | ||||
| $lua\ | ||||
| $nodejs\ | ||||
| $python\ | ||||
| $rust\ | ||||
| $cmd_duration\ | ||||
| """ | ||||
|  | ||||
| [character] | ||||
| success_symbol = '[>](bold green)' | ||||
| error_symbol = '[>](bold red)' | ||||
|  | ||||
| [directory] | ||||
| truncation_length = 1 | ||||
| truncate_to_repo = false | ||||
| fish_style_pwd_dir_length = 1 | ||||
|  | ||||
| [git_commit] | ||||
| tag_symbol = '' | ||||
|  | ||||
| [git_branch] | ||||
| symbol = '' | ||||
|  | ||||
| [git_status] | ||||
| format = '[$all_status$ahead_behind]($style)' | ||||
| ahead = '[↑${count}](green) ' | ||||
| diverged = '[↑${ahead_count}↓${behind_count}](red) ' | ||||
| behind = '[↓${count}](green) ' | ||||
| modified = '[!${count}](yellow) ' | ||||
| untracked = '[?${count}](blue) ' | ||||
| staged = '[+${count}](yellow) ' | ||||
| stashed = '[*${count}](green) ' | ||||
| deleted = '[x${count}](red) ' | ||||
| renamed = '[r${count}](yellow) ' | ||||
|  | ||||
| [python] | ||||
| format = 'via [${symbol}${pyenv_prefix}(${version} )(\($virtualenv\) )]($style)' | ||||
| python_binary = 'python' | ||||
| pyenv_version_name = false | ||||
| detect_files = [ '.python-version' ] | ||||
|  | ||||
| [hostname] | ||||
| ssh_only = false | ||||
| style = 'bold yellow' | ||||
| format = '[$hostname]($style) on ' | ||||
| @@ -1,5 +1,7 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| source "$XDG_CONFIG_HOME/zsh/scripts.zsh" | ||||
|  | ||||
| if [[ $# -eq 1 ]]; then | ||||
|     selected=$1 | ||||
| else | ||||
| @@ -11,5 +13,4 @@ if [[ -z $selected ]]; then | ||||
| fi | ||||
|  | ||||
| ggman clone "$selected" | ||||
| find -L $GGROOT -mindepth 1 -maxdepth 5 -type d -name .git -prune | xargs -n 1 dirname > "$GGROOT/compiled" | ||||
|  | ||||
| ggcompile | ||||
|   | ||||
							
								
								
									
										50
									
								
								tmux/tmux-new-project
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										50
									
								
								tmux/tmux-new-project
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| if [[ -z ${NAME:+x} ]]; then | ||||
|     echo "missing name" | ||||
|     sleep 2 | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| source "$XDG_CONFIG_HOME/zsh/scripts.zsh" | ||||
|  | ||||
| read -p "name: " project_name | ||||
|  | ||||
| if [[ -z $project_name ]]; then | ||||
|     exit 0 | ||||
| fi | ||||
|  | ||||
| if [[ -d "$GGROOT/no-remote/$project_name" ]]; then | ||||
|     exit 0 | ||||
| fi | ||||
|  | ||||
| project="$GGROOT/no-remote/$project_name" | ||||
| git init $project | ||||
| echo "# $project_name" >>"$project/README.md" | ||||
|  | ||||
| gitignore_template=$( | ||||
|     find "$GGROOT"/github.com/github/gitignore/*.gitignore -exec basename {} \; \ | ||||
|         | sed 's/\(.*\)\.gitignore/\1/' \ | ||||
|         | fzf --cycle --bind 'tab:toggle-up,btab:toggle-down' | ||||
| ) | ||||
|  | ||||
| if ! [[ -z $gitignore_template ]]; then | ||||
|     gitignore="$GGROOT/github.com/github/gitignore/$gitignore_template.gitignore" | ||||
|     echo "$gitignore" | ||||
|     echo "$project/.gitignore" | ||||
|     cat "$gitignore" >>"$project/.gitignore" | ||||
| fi | ||||
|  | ||||
| license_template=$( | ||||
|     find "$GGROOT"/git.janezic.dev/janezicmatej/license/*.license -exec basename {} \; \ | ||||
|         | sed 's/\(.*\)\.license/\1/' \ | ||||
|         | fzf --cycle --bind 'tab:toggle-up,btab:toggle-down' | ||||
| ) | ||||
|  | ||||
| if ! [[ -z $license_template ]]; then | ||||
|     license="$GGROOT/git.janezic.dev/janezicmatej/license/$license_template.license" | ||||
|     export YEAR="$(date '+%Y')" | ||||
|     envsubst <"$license" >"$project/LICENSE" | ||||
| fi | ||||
|  | ||||
| ggcompile | ||||
| @@ -3,18 +3,27 @@ | ||||
| if [[ $# -eq 1 ]]; then | ||||
|     selected=$1 | ||||
| else | ||||
|     if ! [[ -f "$GGROOT/compiled" ]]; then | ||||
|         find -L $GGROOT -mindepth 1 -maxdepth 5 -type d -name .git  -prune | xargs -n 1 dirname > "$GGROOT/compiled" | ||||
|     fi | ||||
|     selected=$(cat "$GGROOT/compiled" | fzf --cycle --bind 'tab:toggle-up,btab:toggle-down') | ||||
|     selected=$(ggman exec pwd 2>&1 >/dev/null \ | ||||
|         | fzf --cycle \ | ||||
|         --bind 'tab:toggle-up,btab:toggle-down' \ | ||||
|         --header "Navigate with ARROW KEYS or TAB/S-TAB. Select with ENTER." \ | ||||
|         --border "double" \ | ||||
|         --border-label "tmux-sessionizer" \ | ||||
|         --ansi \ | ||||
|         --highlight-line \ | ||||
|     ) | ||||
| fi | ||||
|  | ||||
| if [[ -z $selected ]]; then | ||||
|     exit 0 | ||||
| fi | ||||
|  | ||||
| path=$selected | ||||
| while [[ "$path" != "" && ! -e "$path/.sessionizer" ]]; do | ||||
|     path=${path%/*} | ||||
| done | ||||
|  | ||||
| selected_name=$(basename "$selected" | tr . _) | ||||
| selected_name="$(cat $path/.sessionizer)_$(basename $selected | tr . _ | head -c 10)_$(echo $selected | shasum -a 256 | head -c 4)" | ||||
| tmux_running=$(pgrep tmux) | ||||
|  | ||||
| if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then | ||||
|   | ||||
| @@ -1,25 +1,77 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| if [[ $# -eq 1 ]]; then | ||||
|     selected=$1 | ||||
| else | ||||
|     selected=$(grep "Host .*" ~/.ssh/config | grep -v "*" | sed "s/Host \(.*\)/\1/" | fzf --cycle --bind 'tab:toggle-up,btab:toggle-down') | ||||
| fi | ||||
| function _preview { | ||||
|     file=$1; shift | ||||
|     host=$1; shift | ||||
|  | ||||
| if [[ -z $selected ]]; then | ||||
|     exit 0 | ||||
| fi | ||||
|     j=$(cat $file \ | ||||
|         | jc --ssh-conf \ | ||||
|         | jq -r ".[] \ | ||||
|             | select(.host == \"$host\") \ | ||||
|             | .jumps = (if (.proxyjump | type == \"array\" and length > 0) then (.proxyjump | join(\",\")) else \"null\" end)" \ | ||||
|         ) | ||||
|  | ||||
| selected_name="ssh_$selected" | ||||
| tmux_running=$(pgrep tmux) | ||||
|     user=$(jq -r '.user' <<<$j) | ||||
|     port=$(jq -r '.port' <<<$j) | ||||
|     hostname=$(jq -r '.hostname' <<<$j) | ||||
|     jumps=$(jq -r '.jumps' <<<$j) | ||||
|  | ||||
| if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then | ||||
|     tmux new-session -s $selected_name -c $selected ssh "$selected" | ||||
|     exit 0 | ||||
| fi | ||||
|  | ||||
| if ! tmux has-session -t=$selected_name 2> /dev/null; then | ||||
|     tmux new-session -ds $selected_name -c $selected ssh "$selected" | ||||
| fi | ||||
|     echo "$(cat <<EOF | ||||
| User $user | ||||
| HostName $hostname\ | ||||
| $([[ $port != "null" ]] && echo -e "\nPort $port")\ | ||||
| $([[ $jumps != "null" ]] && echo -e "\nProxyJump $jumps") | ||||
|  | ||||
| tmux switch-client -t $selected_name | ||||
| command: | ||||
|     ssh $user@$hostname$([[ $port != "null" ]] && echo -n " -p $port")$([[ $jumps != "null" ]] && echo -n " -J $jumps") | ||||
| EOF)" | ||||
|  | ||||
|     echo "" | ||||
|  | ||||
|     host $hostname  | ||||
|  | ||||
|     echo "" | ||||
|  | ||||
|     ping -c 1 -W 1 $hostname &>/dev/null \ | ||||
|         && echo "Host is reachable!" \ | ||||
|         || echo "Host is not reachable!" | ||||
| } | ||||
|  | ||||
| export -f _preview | ||||
|  | ||||
| function main() { | ||||
|     if [[ $# -eq 1 ]]; then | ||||
|         selected=$1 | ||||
|     else | ||||
|         selected="$(rg -N --no-heading 'Host .*' ~/.ssh \ | ||||
|             | sed 's/Host \(.*\)/\1/' \ | ||||
|             | SHELL=$(which bash) fzf --cycle \ | ||||
|                 --bind 'tab:toggle-up,btab:toggle-down' \ | ||||
|                 --delimiter ':' \ | ||||
|                 --with-nth 2 \ | ||||
|                 --preview "_preview {1} {2}" \ | ||||
|             | cut -d ":" -f2 | ||||
|             )" | ||||
|     fi | ||||
|  | ||||
|     if [[ -z $selected ]]; then | ||||
|         exit 0 | ||||
|     fi | ||||
|  | ||||
|     selected_name="ssh_$selected" | ||||
|     tmux_running=$(pgrep tmux) | ||||
|  | ||||
|     if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then | ||||
|         tmux new-session -s $selected_name -c $selected ssh "$selected" | ||||
|         exit 0 | ||||
|     fi | ||||
|  | ||||
|     if ! tmux has-session -t=$selected_name 2> /dev/null; then | ||||
|         tmux new-session -ds $selected_name -c $selected ssh "$selected" | ||||
|     fi | ||||
|  | ||||
|     tmux switch-client -t $selected_name | ||||
| } | ||||
|  | ||||
| main "$@" | ||||
|   | ||||
| @@ -7,13 +7,12 @@ set-option -g focus-events on | ||||
|  | ||||
| unbind C-b | ||||
| set-option -g prefix C-s | ||||
| bind-key C-s send-prefix | ||||
|  | ||||
| bind r source-file "$XDG_CONFIG_HOME/tmux/tmux.conf" | ||||
| set -g base-index 1 | ||||
|  | ||||
| set -g status-style 'bg=#45403d fg=#d4be98' | ||||
| set -g status-left-length 30 | ||||
| set -g status-left-length 20 | ||||
|  | ||||
| set-window-option -g mode-keys vi | ||||
| bind -T copy-mode-vi v send-keys -X begin-selection | ||||
| @@ -28,15 +27,23 @@ if-shell -b '[ "$(uname -s)" = "Darwin" ]' { | ||||
| } | ||||
|  | ||||
| # vim-like pane switching | ||||
| bind -r ^ last-window | ||||
| bind -r k select-pane -U | ||||
| bind -r j select-pane -D | ||||
| bind -r h select-pane -L | ||||
| bind -r l select-pane -R | ||||
| bind ^ last-window | ||||
| bind k select-pane -U | ||||
| bind j select-pane -D | ||||
| bind h select-pane -L | ||||
| bind l select-pane -R | ||||
|  | ||||
| bind-key -r f run-shell "tmux neww ~/.config/tmux/tmux-sessionizer" | ||||
| bind-key -r F run-shell "tmux neww ~/.config/tmux/tmux-ssher" | ||||
| bind-key -r T run-shell "tmux neww ~/.config/tmux/tmux-sessionizer ~/temp" | ||||
| bind-key -r R run-shell "tmux neww ~/.config/tmux/tmux-sessionizer ~" | ||||
| bind-key -r G run-shell "tmux neww ~/.config/tmux/tmux-ggclone" | ||||
| # sessionizer | ||||
| bind-key f run-shell "tmux neww ~/.config/tmux/tmux-sessionizer" | ||||
| bind-key R run-shell "tmux neww ~/.config/tmux/tmux-sessionizer ~" | ||||
| bind-key g run-shell "tmux neww ~/.config/tmux/tmux-sessionizer ~/.config" | ||||
| bind-key T run-shell "tmux neww ~/.config/tmux/tmux-sessionizer ~/temp" | ||||
|  | ||||
| # clone | ||||
| bind-key G run-shell "tmux neww ~/.config/tmux/tmux-ggclone" | ||||
|  | ||||
| # ssh | ||||
| bind-key F run-shell "tmux neww ~/.config/tmux/tmux-ssher" | ||||
|  | ||||
| # project | ||||
| bind-key N run-shell "tmux neww ~/.config/tmux/tmux-new-project" | ||||
|   | ||||
							
								
								
									
										1697
									
								
								zsh/.p10k.zsh
									
									
									
									
									
								
							
							
						
						
									
										1697
									
								
								zsh/.p10k.zsh
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										14
									
								
								zsh/.zsh_plugins.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								zsh/.zsh_plugins.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| # set up Zsh completions with plugins | ||||
| # mattmc3/ez-compinit | ||||
| zsh-users/zsh-completions kind:fpath path:src | ||||
|  | ||||
| # frameworks like oh-my-zsh are supported | ||||
| getantidote/use-omz        # handle OMZ dependencies | ||||
| ohmyzsh/ohmyzsh path:lib   # load OMZ's library | ||||
| ohmyzsh/ohmyzsh path:plugins/git | ||||
|  | ||||
| # popular fish-like plugins | ||||
| zsh-users/zsh-autosuggestions | ||||
|  | ||||
| # nvm | ||||
| lukechilds/zsh-nvm | ||||
							
								
								
									
										12
									
								
								zsh/.zshenv
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								zsh/.zshenv
									
									
									
									
									
								
							| @@ -4,6 +4,9 @@ export XDG_CACHE_HOME="$HOME/.cache" | ||||
| export XDG_DATA_HOME="$HOME/.local/share" | ||||
| export XDG_STATE_HOME="$HOME/.local/state" | ||||
|  | ||||
| # ~/.local/bin | ||||
| export PATH="$HOME/.local/bin:$PATH" | ||||
|  | ||||
| # brew sbin | ||||
| export PATH="/opt/homebrew/sbin:$PATH" | ||||
|  | ||||
| @@ -34,6 +37,10 @@ export PATH="$XDG_DATA_HOME/neovim/bin:$PATH" | ||||
| export PYENV_ROOT="$XDG_DATA_HOME/.pyenv" | ||||
| command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" | ||||
|  | ||||
| # pyenv-virtualenv | ||||
| # leave python promt to starship | ||||
| export PYENV_VIRTUALENV_DISABLE_PROMPT=1 | ||||
|  | ||||
| # poetry | ||||
| export POETRY_HOME="$XDG_DATA_HOME/poetry" | ||||
| command -v poetry >/dev/null || export PATH="$POETRY_HOME/bin:$PATH" | ||||
| @@ -45,3 +52,8 @@ export GPG_TTY=$TTY | ||||
| export USER_UID=$(id -u) | ||||
| export USER_GID=$(id -g) | ||||
|  | ||||
| # name | ||||
| export NAME="Matej Janežič" | ||||
|  | ||||
| # starship nest config into a folder, default is ~/.config/startship.toml | ||||
| export STARSHIP_CONFIG="$XDG_CONFIG_HOME/starship/config.toml" | ||||
|   | ||||
							
								
								
									
										41
									
								
								zsh/.zshrc
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								zsh/.zshrc
									
									
									
									
									
								
							| @@ -2,41 +2,21 @@ | ||||
| export HISTFILE="$XDG_STATE_HOME/zsh/history" | ||||
| export HISTSIZE=100 | ||||
|  | ||||
| # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.config/zsh/.zshrc. | ||||
| # Initialization code that may require console input (password prompts, [y/n] | ||||
| # confirmations, etc.) must go above this block; everything else may go below. | ||||
| if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then | ||||
|   source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" | ||||
| fi | ||||
|  | ||||
| # pre plugin load | ||||
| ## pre plugin load | ||||
| # nvm | ||||
| export NVM_COMPLETION=true | ||||
| # zsh autosugestions | ||||
| export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#ffffff,bg=cyan,bold,underline" | ||||
|  | ||||
| # load antigen | ||||
| typeset -a ANTIGEN_CHECK_FILES=(${ZDOTDIR:-~}/.zshrc ${ZDOTDIR:-~}/antigen.zsh) | ||||
| source $ZDOTDIR/antigen.zsh | ||||
|  | ||||
| # oh-my-zsh library and git plugin | ||||
| antigen use oh-my-zsh | ||||
| antigen bundle git | ||||
|  | ||||
| # zsh users plugin | ||||
| antigen bundle zsh-users/zsh-autosuggestions | ||||
|  | ||||
| # other | ||||
| antigen bundle lukechilds/zsh-nvm | ||||
|  | ||||
| # theme | ||||
| antigen theme romkatv/powerlevel10k | ||||
|  | ||||
| # apply plugin load | ||||
| antigen apply | ||||
| # source antidote | ||||
| source $ZDOTDIR/.antidote/antidote.zsh | ||||
| antidote load | ||||
|  | ||||
| unsetopt autocd | ||||
|  | ||||
| # pyenv | ||||
| eval "$(pyenv init -)" | ||||
| eval "$(pyenv virtualenv-init -)" | ||||
| eval "$(pyenv init - zsh)" | ||||
| eval "$(pyenv virtualenv-init - zsh)" | ||||
|  | ||||
| # ggman | ||||
| eval "$(ggman shellrc)" | ||||
| @@ -54,5 +34,4 @@ zstyle ':completion:*' cache-path $XDG_CACHE_HOME/zsh/zcompcache | ||||
| # opam configuration | ||||
| # [[ ! -r /Users/janezicmatej/.opam/opam-init/init.zsh ]] || source /Users/janezicmatej/.opam/opam-init/init.zsh  > /dev/null 2> /dev/null | ||||
|  | ||||
| # To customize prompt, run `p10k configure` or edit ~/.config/zsh/.p10k.zsh. | ||||
| [[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh | ||||
| eval "$(starship init zsh)" | ||||
|   | ||||
| @@ -1,9 +1,8 @@ | ||||
| alias s="ssh" | ||||
| alias z="exec zsh" | ||||
| alias t="tmux a || tmux new-session -s $(whoami) -c ~" | ||||
| alias t="tmux a || ~/.config/tmux/tmux-sessionizer ~" | ||||
| alias n=nvim_ve | ||||
| # alias vim=nvim_ve | ||||
| alias ssh-hosts="grep -P \"^Host ([^*]+)$\" $HOME/.ssh/config | sed 's/Host //'" | ||||
| alias s="ssh-menu" | ||||
|  | ||||
| # navigation | ||||
| alias cdgit="cd $GGROOT" | ||||
| @@ -23,3 +22,9 @@ alias ci="glab ci list" | ||||
| alias bm=batman | ||||
| alias grow="~/.local/bin/cbonsai -liWC -M 15 -t 2 -w 60 -s $(date +%s)" | ||||
| alias clean_ds_store='find . -name ".DS_Store" -type f -delete -print' | ||||
|  | ||||
| # ruff | ||||
| alias ruffme="ruff format && ruff check --fix" | ||||
|  | ||||
| # clipboard | ||||
| alias xcp="xclip -selection c" | ||||
|   | ||||
							
								
								
									
										51
									
								
								zsh/get-dump
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										51
									
								
								zsh/get-dump
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| function get-dump { | ||||
|     if [[ -z $1 ]]; then | ||||
|         host="$(rg -N --no-heading 'Host .*' ~/.ssh \ | ||||
|             | sed 's/Host \(.*\)/\1/' \ | ||||
|             | fzf --cycle \ | ||||
|                 --bind 'tab:toggle-up,btab:toggle-down' \ | ||||
|                 --delimiter ':' \ | ||||
|                 --with-nth 2 \ | ||||
|                 --header "Navigate with ARROW KEYS or TAB/S-TAB. Select with ENTER." \ | ||||
|                 --border "double" \ | ||||
|                 --border-label "get-dump" \ | ||||
|                 --ansi \ | ||||
|                 --highlight-line \ | ||||
|             | cut -d ":" -f2 | ||||
|         )" | ||||
|         if [[ -z $host ]]; then | ||||
|             return | ||||
|         fi | ||||
|     else | ||||
|         host=$1 | ||||
|     fi | ||||
|  | ||||
|     selected=$(ssh "$host" docker ps --format "{{.Names}}" \ | ||||
|         | fzf --cycle \ | ||||
|             --bind 'tab:toggle-up,btab:toggle-down' \ | ||||
|             --header "Navigate with ARROW KEYS or TAB/S-TAB. Select with ENTER." \ | ||||
|             --border "double" \ | ||||
|             --border-label "get-dump" \ | ||||
|             --ansi \ | ||||
|             --highlight-line \ | ||||
|     ) | ||||
|  | ||||
|     if [[ -z $selected ]]; then | ||||
|         echo "not provided" | ||||
|         return | ||||
|     fi | ||||
|  | ||||
|     if ! [[ -d "./dumps" ]]; then | ||||
|         mkdir "./dumps" | ||||
|     fi | ||||
|  | ||||
|     location="./dumps/${host}_${selected}_$(date +'%s')" | ||||
|  | ||||
|     echo "dumping to $location" | ||||
|  | ||||
|     ssh "$host" docker exec "$selected" pg_dump -U db --format=c db >"$location" | ||||
| } | ||||
|  | ||||
| get-dump "$@" | ||||
							
								
								
									
										150
									
								
								zsh/scripts.zsh
									
									
									
									
									
								
							
							
						
						
									
										150
									
								
								zsh/scripts.zsh
									
									
									
									
									
								
							| @@ -1,125 +1,81 @@ | ||||
|  | ||||
| function nvim_ve { | ||||
|   if [[ -e "$VIRTUAL_ENV" && -f "$VIRTUAL_ENV/bin/activate" ]]; then | ||||
|     source "$VIRTUAL_ENV/bin/activate" | ||||
|     command nvim $@ | ||||
|     deactivate | ||||
|   else | ||||
|     command nvim $@ | ||||
|   fi | ||||
|     if [[ -e $VIRTUAL_ENV && -f "$VIRTUAL_ENV/bin/activate" ]]; then | ||||
|         source "$VIRTUAL_ENV/bin/activate" | ||||
|         command nvim $@ | ||||
|         deactivate | ||||
|     else | ||||
|         command nvim $@ | ||||
|     fi | ||||
| } | ||||
|  | ||||
| alias nvim=nvim_ve | ||||
|  | ||||
| function ffb { | ||||
|   if ! [[ -f package.json ]]; then | ||||
|     echo "no package.json" | ||||
|     return | ||||
|   fi | ||||
|  | ||||
|   if [[ -f yarn.lock ]]; then | ||||
|     PACKAGE_MANAGER=yarn | ||||
|   else | ||||
|     PACKAGE_MANAGER=npm | ||||
|   fi | ||||
|  | ||||
|   if [[ -n $(grep "react-scripts" package.json) ]]; then | ||||
|     BROWSER=none FORCE_COLOR=true "$PACKAGE_MANAGER" start | cat | ||||
|   fi | ||||
| } | ||||
|  | ||||
| function afm { | ||||
|   RES=$(curl -s "https://$1/api/monitoring/requirements") | ||||
|   COUNT=$(echo "$RES" | grep -c $2) | ||||
|   if [[ $COUNT -ge 0 ]]; then | ||||
|     VER=$(echo "$RES" | jq '.[] | select(.name | contains("'"$2"'")).version') | ||||
|     # OP=$(echo "$RES" | jq '.[] | select(.name | contains("'"$2"'")).requirement?[0][0]') | ||||
|     # echo "$2""$(echo "$OP" | tr -d '"')""$(echo "$VER" | tr -d '"')" | ||||
|     echo "$2""==""$(echo "$VER" | tr -d '"')" | ||||
|   fi | ||||
|     RES=$(curl -s "https://$1/api/monitoring/requirements") | ||||
|     COUNT=$(echo "$RES" | grep -c $2) | ||||
|     if [[ $COUNT -ge 0 ]]; then | ||||
|         VER=$(echo "$RES" | jq '.[] | select(.name | contains("'"$2"'")).version') | ||||
|         # OP=$(echo "$RES" | jq '.[] | select(.name | contains("'"$2"'")).requirement?[0][0]') | ||||
|         # echo "$2""$(echo "$OP" | tr -d '"')""$(echo "$VER" | tr -d '"')" | ||||
|         echo "${2}==$(echo "$VER" | tr -d '"')" | ||||
|     fi | ||||
| } | ||||
|  | ||||
|  | ||||
| function nukepip { | ||||
|   pip uninstall $(pip freeze) -y | ||||
|   pip install -r $(pyenv root)/default-packages | ||||
|     pip uninstall $(pip freeze) -y | ||||
|     pip install -r $(pyenv root)/default-packages | ||||
| } | ||||
|  | ||||
| function pyinit { | ||||
|   if [[ -f .python-version ]]; then  | ||||
|     echo "found .python-version, stopping" | ||||
|     return | ||||
|   fi | ||||
|     if [[ -f .python-version ]]; then | ||||
|         echo "found .python-version, stopping" | ||||
|         return | ||||
|     fi | ||||
|  | ||||
|   DIRNAME=$(basename "$PWD") | ||||
|     DIRNAME=$(basename "$PWD") | ||||
|  | ||||
|   if [[ $(pyenv versions | grep -E "/${DIRNAME}$") ]]; then | ||||
|     echo "found existing version with this name, setting..." | ||||
|     if [[ $(pyenv versions | grep -E "/${DIRNAME}$") ]]; then | ||||
|         echo "found existing version with this name, setting..." | ||||
|         pyenv local "$DIRNAME" | ||||
|         return | ||||
|     fi | ||||
|  | ||||
|     if [[ -z $1 ]]; then | ||||
|         echo "no python version provided, defaulting to $(pyenv version-name)" | ||||
|         VERSION=$(pyenv version-name) | ||||
|     else | ||||
|         VERSION=$1 | ||||
|     fi | ||||
|  | ||||
|     pyenv virtualenv "$VERSION" "$DIRNAME" | ||||
|     pyenv local "$DIRNAME" | ||||
|     return | ||||
|   fi | ||||
|  | ||||
|   if [[ -z $1 ]]; then | ||||
|     echo "no python version provided, defaulting to $(pyenv version-name)" | ||||
|     VERSION=$(pyenv version-name) | ||||
|   else | ||||
|     VERSION=$1 | ||||
|   fi | ||||
|  | ||||
|   pyenv virtualenv "$VERSION" "$DIRNAME" | ||||
|   pyenv local "$DIRNAME" | ||||
|  | ||||
| } | ||||
|  | ||||
| function lh { | ||||
|   if [[ -z $1 ]]; then | ||||
|     PORT=8000 | ||||
|   else | ||||
|     PORT=$1 | ||||
|   fi | ||||
|     if [[ -z $1 ]]; then | ||||
|         PORT=7999 | ||||
|     else | ||||
|         PORT=$1 | ||||
|     fi | ||||
|  | ||||
|   open "http://localhost:$PORT" | ||||
|     open "http://localhost:$PORT" | ||||
| } | ||||
|  | ||||
| function dps { | ||||
|   if [[ -z $1 ]]; then | ||||
|     docker ps --format table'{{ .ID }}\t{{ .Image }}\t{{ .Ports}}\t{{ .Names }}' | ||||
|   else | ||||
|     docker ps --format table'{{ .ID }}\t{{ .Image }}\t{{ .Ports}}\t{{ .Names }}' | grep $1 | ||||
|   fi | ||||
| } | ||||
|  | ||||
|  | ||||
| function get_dump { | ||||
|   if [[ -z $1 ]]; then | ||||
|     echo "provide ssh host" | ||||
|     return | ||||
|   fi | ||||
|  | ||||
|   if [[ -z $2 ]]; then | ||||
|     echo "provide dump destination" | ||||
|     return | ||||
|   fi | ||||
|  | ||||
|   selected=$(ssh "$1" docker ps --format "{{.Names}}" | fzf) | ||||
|  | ||||
|   if [[ -z $selected ]]; then | ||||
|     return | ||||
|   fi | ||||
|  | ||||
|   ssh "$1" docker exec "$selected" pg_dump -U db --format=c db > "$2$(date +'%Y-%m-%dT%H.%M.%S%z')" | ||||
|  | ||||
| } | ||||
|  | ||||
| function ggcompile { | ||||
|   find -L $GGROOT -mindepth 1 -maxdepth 5 -type d -name .git  -prune | xargs -n 1 dirname > "$GGROOT/compiled" | ||||
|     if [[ -z $1 ]]; then | ||||
|         docker ps --format table'{{ .ID }}\t{{ .Image }}\t{{ .Ports}}\t{{ .Names }}' | ||||
|     else | ||||
|         docker ps --format table'{{ .ID }}\t{{ .Image }}\t{{ .Ports}}\t{{ .Names }}' | grep $1 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| function tssh { | ||||
|   if [[ -z $1 ]]; then | ||||
|     echo "provide ssh host" | ||||
|     return | ||||
|   fi | ||||
|     if [[ -z $1 ]]; then | ||||
|         echo "provide ssh host" | ||||
|         return | ||||
|     fi | ||||
|  | ||||
|    ssh -t "$@" "command -v tmux && (tmux a || tmux new-session -s gorazd -c ~) || bash" | ||||
|     ssh -t "$@" "command -v tmux && (tmux a || tmux new-session -s gorazd -c ~) || bash" | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										75
									
								
								zsh/ssh-menu
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										75
									
								
								zsh/ssh-menu
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| function _ssh_menu_preview { | ||||
|     file=$1; shift | ||||
|     host=$1; shift | ||||
|  | ||||
|     j=$(cat $file \ | ||||
|         | jc --ssh-conf \ | ||||
|         | jq -r ".[] \ | ||||
|             | select(.host == \"$host\") \ | ||||
|             | .jumps = (\ | ||||
|                 if (.proxyjump | type == \"array\" and length > 0) then \ | ||||
|                     (.proxyjump | join(\",\")) \ | ||||
|                 else \ | ||||
|                     \"null\" \ | ||||
|                 end \ | ||||
|             )" \ | ||||
|         ) | ||||
|  | ||||
|     user=$(jq -r '.user' <<<$j) | ||||
|     port=$(jq -r '.port' <<<$j) | ||||
|     hostname=$(jq -r '.hostname' <<<$j) | ||||
|     jumps=$(jq -r '.jumps' <<<$j) | ||||
|  | ||||
|  | ||||
|     echo "$(cat <<EOF | ||||
| User $user | ||||
| HostName $hostname\ | ||||
| $([[ $port != "null" ]] && echo -e "\nPort $port")\ | ||||
| $([[ $jumps != "null" ]] && echo -e "\nProxyJump $jumps") | ||||
|  | ||||
| command: | ||||
|     ssh $user@$hostname$([[ $port != "null" ]] && echo -n " -p $port")$([[ $jumps != "null" ]] && echo -n " -J $jumps") | ||||
| EOF | ||||
|     )" | ||||
|  | ||||
|     echo "" | ||||
|  | ||||
|     if command -v host 2>&1 >/dev/null; then | ||||
|         host $hostname | ||||
|         echo "" | ||||
|     fi | ||||
|  | ||||
|     ping -c 1 -W 1 $hostname &>/dev/null \ | ||||
|         && echo "Host is reachable!" \ | ||||
|         || echo "Host is not reachable!" | ||||
| } | ||||
|  | ||||
| export -f _ssh_menu_preview | ||||
|  | ||||
| function ssh-menu { | ||||
|     selected="$(rg -N --no-heading 'Host .*' ~/.ssh \ | ||||
|         | sed 's/Host \(.*\)/\1/' \ | ||||
|         | SHELL=$(which bash) fzf --cycle \ | ||||
|             --bind 'tab:toggle-up,btab:toggle-down' \ | ||||
|             --delimiter ':' \ | ||||
|             --with-nth 2 \ | ||||
|             --preview "_ssh_menu_preview {1} {2}" \ | ||||
|             --preview-label "ssh config info" \ | ||||
|             --header "Navigate with ARROW KEYS or TAB/S-TAB. Select with ENTER." \ | ||||
|             --border "double" \ | ||||
|             --border-label "ssh-menu" \ | ||||
|             --ansi \ | ||||
|             --highlight-line \ | ||||
|         | cut -d ":" -f2 | ||||
|         )" | ||||
|  | ||||
|     if [[ -z $selected ]]; then | ||||
|         return | ||||
|     fi | ||||
|  | ||||
|     ssh "$selected" | ||||
| } | ||||
|  | ||||
| ssh-menu | ||||
		Reference in New Issue
	
	Block a user