diff --git a/.config/nvim/nvim b/.config/nvim/nvim new file mode 120000 index 0000000..59fb84e --- /dev/null +++ b/.config/nvim/nvim @@ -0,0 +1 @@ +/Users/itq/dotfiles/.config/nvim \ No newline at end of file diff --git a/.config/tmux/tmux b/.config/tmux/tmux new file mode 120000 index 0000000..d4c666b --- /dev/null +++ b/.config/tmux/tmux @@ -0,0 +1 @@ +/Users/itq/dotfiles/.config/tmux \ No newline at end of file diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf new file mode 100644 index 0000000..b142480 --- /dev/null +++ b/.config/tmux/tmux.conf @@ -0,0 +1,86 @@ +set-option -sa terminal-overrides ",xterm*:Tc" +set -g mouse on + +set -g base-index 1 +set -g renumber-windows on + +set -g status-position bottom +set -g status-style 'bg=#333333 fg=#5eacd3' +set -g pane-border-style "fg=#333333" +set -g pane-active-border-style "bg=default fg=#333333" + +set-option -sa terminal-features ',alacritty:RGB' +set-option -g history-limit 20000 + +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-plugins' +set -g @plugin 'tmux-plugins/tmux-yank' +set -g @plugin 'tmux-plugins/tmux-resurrect' +set -g @plugin 'tmux-plugins/tmux-continuum' + +set -g status-left "#{?@session-type,#[fg=#5eacd3]SSH: #{@ssh-host} ,}#[fg=#5eacd3]#S " + +bind r source-file ~/.config/tmux/tmux.conf + +# Pane navigation (preserved) +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 q kill-window +bind o kill-pane -a + +# Prefix configuration +set -g prefix C-a +bind C-a send-prefix + +# Enhanced scroll handling with remote session awareness +tmux_commands_with_legacy_scroll="nano less more man git ansible-doc" + +bind-key -T root WheelUpPane \ + if-shell -Ft= '#{?mouse_any_flag,1,#{pane_in_mode}}' \ + 'send -Mt=' \ + 'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \ + "send -t= Up" "copy-mode -et="' + +bind-key -T root WheelDownPane \ + if-shell -Ft = '#{?pane_in_mode,1,#{mouse_any_flag}}' \ + 'send -Mt=' \ + 'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \ + "send -t= Down" "send -Mt="' + +bind-key X run-shell " \ + current=$(tmux display-message -p '#{session_name}'); \ + if tmux show-option -t \"$current\" -qv @session-type | grep -q ssh; then \ + tmux switch-client -l; \ + tmux kill-session -t \"$current\"; \ + else \ + tmux display-message 'Not a remote session'; \ + fi" + + +set-window-option -g mode-keys vi +bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle +bind -T copy-mode-vi v send-keys -X begin-selection +bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' + +bind e run-shell "tmux show-option -v @session-type >/dev/null && \ + tmux split-window -v 'ssh -t #{@ssh-host}' || \ + tmux split-window -v -c '#{pane_current_path}'" + +bind s run-shell "tmux show-option -v @session-type >/dev/null && \ + tmux split-window -h 'ssh -t #{@ssh-host}' || \ + tmux split-window -h -c '#{pane_current_path}'" + +bind-key C-f run-shell '~/.local/scripts/tmux-sessionizer' +bind-key S display-popup -E -w 80% -h 60% '~/.local/scripts/tmux-ssh-fzf' + +set-option -g default-command ' \ + if [ -n "$(tmux show -qv @session-type)" ]; then \ + ssh -t "$(tmux show -qv @ssh-host)"; \ + else \ + exec $SHELL; \ + fi' + +run '~/.config/tmux/plugins/tpm/tpm' diff --git a/.gitconfig b/.gitconfig index 04e9cef..9f4faed 100644 --- a/.gitconfig +++ b/.gitconfig @@ -1,7 +1,7 @@ [user] email = itq.dev@ya.ru name = ITQ - signingkey = B13C2DAF24268258F525697A063A10A651314CE9 + signingkey = B13C2DAF24268258F525697A063A10A651314CE9 [init] defaultBranch = main [core] @@ -14,7 +14,7 @@ default = matching [commit] template = ~/.gitmessage.txt - gpgsign = true + gpgsign = true [color] ui = auto [color "branch"] @@ -243,8 +243,6 @@ gpgsign = true [gpg] program = gpg -[credential] - helper = store [advice] detachedHead = false diff --git a/.wezterm.lua b/.wezterm.lua new file mode 100644 index 0000000..3ad98d4 --- /dev/null +++ b/.wezterm.lua @@ -0,0 +1,59 @@ +local wezterm = require 'wezterm' + +local config = wezterm.config_builder() +local action = wezterm.action + +config.initial_cols = 120 +config.initial_rows = 28 + +config.font = wezterm.font { + family = 'Fira Code', + weight = 'Medium', + harfbuzz_features = { 'calt=0', 'clig=0', 'liga=0' }, -- disable ligatures +} +config.line_height = 1.0 +config.font_size = 14 +config.color_scheme = 'GruvboxDarkHard' + +config.window_padding = { left = '0.5cell', right = '0.5cell', top = '0.5cell', bottom = '0.5cell' } + +-- config.window_background_image = '/Users/itq/Pictures/Wallpapers/basic.jpg' +-- config.window_background_image_hsb = { +-- -- Darken the background image by reducing it to 1/3rd +-- brightness = 0.3, +-- +-- -- You can adjust the hue by scaling its value. +-- -- a multiplier of 1.0 leaves the value unchanged. +-- hue = 1.0, +-- +-- -- You can adjust the saturation also. +-- saturation = 1.0, +-- } + +config.send_composed_key_when_left_alt_is_pressed = false +config.send_composed_key_when_right_alt_is_pressed = true + +config.keys = { + { key = 'd', mods = 'CMD|SHIFT', action = action.SplitVertical { domain = 'CurrentPaneDomain' } }, + { key = 'd', mods = 'CMD', action = action.SplitHorizontal { domain = 'CurrentPaneDomain' } }, + { key = 'k', mods = 'CMD', action = action.ClearScrollback 'ScrollbackAndViewport' }, + { key = 'w', mods = 'CMD', action = action.CloseCurrentPane { confirm = false } }, + { key = 'w', mods = 'CMD|SHIFT', action = action.CloseCurrentTab { confirm = false } }, + { key = 'LeftArrow', mods = 'CMD', action = action.SendKey { key = 'Home' } }, + { key = 'RightArrow', mods = 'CMD', action = action.SendKey { key = 'End' } }, + { key = 'p', mods = 'CMD|SHIFT', action = action.ActivateCommandPalette }, + { + key = 'LeftArrow', + mods = 'OPT', + action = wezterm.action.SendString '\x1bb', + }, + { + key = 'RightArrow', + mods = 'OPT', + action = wezterm.action.SendString '\x1bf', + }, +} + +config.default_cwd = '/Users/itq' + +return config diff --git a/.yabairc b/.yabairc index 592e60e..ece5cf8 100755 --- a/.yabairc +++ b/.yabairc @@ -51,10 +51,10 @@ yabai -m config window_placement second_child # yabai -m active_window_opacity 1.0 # yabai -m normal_window_opacity 0.90 # Padding -yabai -m config top_padding 10 -yabai -m config bottom_padding 10 -yabai -m config right_padding 10 -yabai -m config left_padding 10 +yabai -m config top_padding 1 +yabai -m config bottom_padding 1 +yabai -m config right_padding 1 +yabai -m config left_padding 1 yabai -m config window_gap 10 # mouse settings # yabai -m config mouse_follows_focus on @@ -72,7 +72,6 @@ yabai -m rule --add app="^Finder$" manage=off yabai -m rule --add app="^Discord$" manage=off yabai -m rule --add app="^V2BOX$" manage=off yabai -m rule --add app="^Raycast$" manage=off -yabai -m rule --add app="^Preview$" manage=off yabai -m rule --add app="^Archive Utility$" manage=off # focus window @@ -116,3 +115,4 @@ alt - e : yabai -m window --toggle split alt - t : yabai -m window --toggle float --grid 4:4:1:1:2:2 echo "yabai configuration loaded.." + diff --git a/.zshrc b/.zshrc index 910fc4f..4fa90e1 100644 --- a/.zshrc +++ b/.zshrc @@ -106,12 +106,6 @@ export TALOSCONFIG=/Users/itq/.talos/config alias tf=terraform alias calc='_(){ awk "BEGIN{print $*}";};_' alias dive='docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock docker.io/wagoodman/dive' -alias ktx=kubectx -alias kns=kubens -alias k=kubectl -alias ktop='watch -n 0.5 -d -c kubectl top pod -A --containers=true --show-swap=true --sort-by=memory --sum=true' -alias ka='kubectl apply -f' -alias kd='kubectl delete -f' alias cdt='cd $(mktemp -d)' alias c=clear alias ipy='ipython --no-autoindent' @@ -119,13 +113,24 @@ alias py='python3' alias bat='bat --style=plain' alias netshoot='docker run -it --rm --net host docker.io/nicolaka/netshoot:latest' alias vim='nvim' -# InfoSec aliases -alias dirsearch=/Users/itq/infosec/tools/dirsearch/.venv/bin/dirsearch -alias pwn=/Users/itq/infosec/tools/pwntools/.venv/bin/pwn -alias pwni=/Users/itq/infosec/tools/pwntools/.venv/bin/python -alias vol2='python2 /Users/itq/infosec/tools/volatility_2/vol.py' -alias vol3=/Users/itq/infosec/tools/volatility_3/.venv/bin/vol +alias yz='' +# K8S +alias ktx=kubectx +alias kns=kubens +alias k=kubectl +alias ktop='watch -n 0.5 -d -c kubectl top pod -A --containers=true --show-swap=true --sort-by=memory --sum=true' +alias ka='kubectl apply -f' +alias kd='kubectl delete -f' +# InfoSec Aliases +alias dirsearch=/Users/itq/Infosec/tools/dirsearch/.venv/bin/dirsearch +alias pwn=/Users/itq/Infosec/tools/pwntools/.venv/bin/pwn +alias pwni=/Users/itq/Infosec/tools/pwntools/.venv/bin/python +alias vol2='python2 /Users/itq/Infosec/tools/volatility_2/vol.py' +alias vol3=/Users/itq/Infosec/tools/volatility_3/.venv/bin/vol alias stegoveritas='docker run -it --rm -v /:/mnt bannsec/stegoveritas' +alias jadx='java -jar /Users/itq/Infosec/tools/jadx-1.5.5-all.jar' +alias jd-gui='java -jar /Users/itq/Infosec/tools/jd-gui-1.6.6-min.jar' +alias пороль='head -c64 /dev/random | base64 | tr -d "/" | head -c32' # Brew HOMEBREW_NO_AUTO_UPDATE=1 diff --git a/.zshrc.d/.zshrc.d b/.zshrc.d/.zshrc.d new file mode 120000 index 0000000..25b05b5 --- /dev/null +++ b/.zshrc.d/.zshrc.d @@ -0,0 +1 @@ +/Users/itq/dotfiles/.zshrc.d \ No newline at end of file diff --git a/.zshrc.d/cs.zsh b/.zshrc.d/cs.zsh index 65bd56f..366fa2f 100755 --- a/.zshrc.d/cs.zsh +++ b/.zshrc.d/cs.zsh @@ -15,14 +15,14 @@ _get_clip_cmd() { cs() { local output clip_cmd clip_cmd=$(_get_clip_cmd) || return 1 - + if [ $# -eq 0 ]; then output=$(cat && printf X) output=${output%X} else output=$("$@") fi - + printf '%s' "$output" printf '%s' "$output" | eval "$clip_cmd" } @@ -30,14 +30,14 @@ cs() { cse() { local output clip_cmd clip_cmd=$(_get_clip_cmd) || return 1 - + if [ $# -eq 0 ]; then output=$(cat && printf X) output=${output%X} else output=$("$@" 2>&1) fi - + printf '%s' "$output" printf '%s' "$output" | eval "$clip_cmd" } diff --git a/commands b/commands deleted file mode 100644 index d51abf2..0000000 --- a/commands +++ /dev/null @@ -1,2 +0,0 @@ -ln -s ~/dotfiles/.zshrc ~/.zshrc -ln -s ~/dotfiles/.gitmessage.txt ~/.gitmessage.txt diff --git a/setup.bash b/setup.bash new file mode 100755 index 0000000..85fbcf6 --- /dev/null +++ b/setup.bash @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +targets=( + .zshrc + .yabairc + .skhdrc + .gitmessage.txt + .gitconfig + .zshrc.d + .wezterm.lua + .config/nvim + .config/tmux +) +prefix=~/dotfiles + +for target in "${targets[@]}"; do + ln -s $prefix/$target ~/$target 2>/dev/null && echo Symlink ~/$target added || echo Symlink ~/$target already exist +done +