From 5dea52c6fa969859aef0a26f2ece40592d30a09b Mon Sep 17 00:00:00 2001 From: aloslider <53711835+aloslider@users.noreply.github.com> Date: Mon, 30 Mar 2026 15:10:08 +0300 Subject: [PATCH] Init --- .chezmoi.toml.tmpl | 6 + .chezmoidata/packages.yaml | 18 + .chezmoiexternals/tmux.toml | 16 + .chezmoiexternals/zsh.toml | 16 + dot_config/i3/config | 194 ++ dot_config/kitty/kitty.conf | 62 + dot_config/picom/picom.conf | 41 + dot_config/polybar/config.ini | 100 + .../polybar/executable_launch_polybar.sh | 19 + .../polybar/scripts/executable_calendar.sh | 41 + dot_config/proxychains/proxychains.conf | 9 + dot_config/tmux/tmux-themes/snazzy.theme | 24 + dot_config/tmux/tmux.conf | 44 + dot_config/zsh/dot_p10k.zsh | 1720 +++++++++++++++++ dot_config/zsh/dot_zshrc | 91 + .../applications/chromium-proxied.desktop | 9 + dot_local/share/applications/flclashx.desktop | 6 + .../share/applications/osu-lazer.desktop | 8 + .../share/applications/symlink_mimeapps.list | 1 + dot_local/share/mime/packages/osu.xml | 10 + dot_zshenv | 5 + run_onchange_before_10-setup-age-key.sh | 24 + run_onchange_install-packages.sh.tmpl | 31 + 23 files changed, 2495 insertions(+) create mode 100644 .chezmoi.toml.tmpl create mode 100644 .chezmoidata/packages.yaml create mode 100644 .chezmoiexternals/tmux.toml create mode 100644 .chezmoiexternals/zsh.toml create mode 100644 dot_config/i3/config create mode 100644 dot_config/kitty/kitty.conf create mode 100644 dot_config/picom/picom.conf create mode 100644 dot_config/polybar/config.ini create mode 100644 dot_config/polybar/executable_launch_polybar.sh create mode 100644 dot_config/polybar/scripts/executable_calendar.sh create mode 100644 dot_config/proxychains/proxychains.conf create mode 100644 dot_config/tmux/tmux-themes/snazzy.theme create mode 100644 dot_config/tmux/tmux.conf create mode 100644 dot_config/zsh/dot_p10k.zsh create mode 100644 dot_config/zsh/dot_zshrc create mode 100644 dot_local/share/applications/chromium-proxied.desktop create mode 100644 dot_local/share/applications/flclashx.desktop create mode 100644 dot_local/share/applications/osu-lazer.desktop create mode 100644 dot_local/share/applications/symlink_mimeapps.list create mode 100644 dot_local/share/mime/packages/osu.xml create mode 100644 dot_zshenv create mode 100755 run_onchange_before_10-setup-age-key.sh create mode 100755 run_onchange_install-packages.sh.tmpl diff --git a/.chezmoi.toml.tmpl b/.chezmoi.toml.tmpl new file mode 100644 index 0000000..5d17d53 --- /dev/null +++ b/.chezmoi.toml.tmpl @@ -0,0 +1,6 @@ +encryption = "age" +[age] + identity = "~/.config/chezmoi/key.txt" + +[bitwarden] + unlock = "auto" diff --git a/.chezmoidata/packages.yaml b/.chezmoidata/packages.yaml new file mode 100644 index 0000000..4341b0e --- /dev/null +++ b/.chezmoidata/packages.yaml @@ -0,0 +1,18 @@ +packages: + arch: + - 7zip + - base-devel + - bat + - curl + - eza + - fzf + - git + - paru + - ripgrep + - tmux + - wget + - unzip + - zsh + aur: + - prizrak-box-bin + - tree-sitter-cli-github-bin diff --git a/.chezmoiexternals/tmux.toml b/.chezmoiexternals/tmux.toml new file mode 100644 index 0000000..290be3d --- /dev/null +++ b/.chezmoiexternals/tmux.toml @@ -0,0 +1,16 @@ +# tmux +[".config/tmux/plugins/tpm"] + type = "git-repo" + url = "https://github.com/tmux-plugins/tpm" + +[".config/tmux/plugins/tmux-resurrect"] + type = "git-repo" + url = "https://github.com/tmux-plugins/tmux-resurrect" + +[".config/tmux/plugins/tmux-continuum"] + type = "git-repo" + url = "https://github.com/tmux-plugins/tmux-continuum" + +[".config/tmux/plugins/tmux-sensible"] + type = "git-repo" + url = "https://github.com/tmux-plugins/tmux-sensible" diff --git a/.chezmoiexternals/zsh.toml b/.chezmoiexternals/zsh.toml new file mode 100644 index 0000000..401a8c0 --- /dev/null +++ b/.chezmoiexternals/zsh.toml @@ -0,0 +1,16 @@ +# ZSH +[".config/zsh/.oh-my-zsh"] + type = "git-repo" + url = "https://github.com/ohmyzsh/ohmyzsh" + +[".config/zsh/.oh-my-zsh/custom/plugins/zsh-autosuggestions"] + type = "git-repo" + url = "https://github.com/zsh-users/zsh-autosuggestions" + +[".config/zsh/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting"] + type = "git-repo" + url = "https://github.com/zsh-users/zsh-syntax-highlighting" + +[".config/zsh/.oh-my-zsh/custom/themes/powerlevel10k"] + type = "git-repo" + url = "https://github.com/romkatv/powerlevel10k" diff --git a/dot_config/i3/config b/dot_config/i3/config new file mode 100644 index 0000000..bbe1028 --- /dev/null +++ b/dot_config/i3/config @@ -0,0 +1,194 @@ +set $mod Mod4 + +font pango:DejaVu Sans Mono 10 + +# Start XDG autostart .desktop files using dex. See also +# https://wiki.archlinux.org/index.php/XDG_Autostart +exec --no-startup-id dex --autostart --environment i3 + +# Start compositor +exec --no-startup-id picom + +# Screenshot +bindsym Print exec --no-startup-id flameshot gui; + +# Round corners and gaps +# gaps inner 5px +# gaps outer 5px +gaps vertical 15px +gaps horizontal 15px + +# Start Polybar +exec_always --no-startup-id ~/.config/polybar/launch_polybar.sh + +# The combination of xss-lock, nm-applet and pactl is a popular choice, so +# they are included here as an example. Modify as you see fit. + +# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the +# screen before suspend. Use loginctl lock-session to lock your screen. +exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork + +# NetworkManager is the most popular way to manage wireless networks on Linux, +# and nm-applet is a desktop environment-independent system tray GUI for it. +exec --no-startup-id nm-applet + +# Disable built-in X screensaver +exec --no-startup-id xset s off +exec --no-startup-id xset s noblank + +# DPMS timeouts +# Format: xset dpms standby suspend off (seconds; 0 = disable stage) +exec --no-startup-id xset dpms 900 1800 0 + +# Alternative examples you can pick from: +# exec --no-startup-id xset dpms 0 0 600 # off after 10 min, ignore standby/suspend +# exec --no-startup-id xset -dpms # completely disable DPMS +# exec --no-startup-id xset dpms 0 0 0 # never turn off + +# Use pactl to adjust volume in PulseAudio. +set $refresh_i3status killall -SIGUSR1 i3status +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status +bindsym XF86AudioPlay exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec kitty + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +# bindsym $mod+d exec --no-startup-id dmenu_run +# A more modern dmenu replacement is rofi: +# bindcode $mod+40 exec "rofi -modi drun,run -show drun" +# There also is i3-dmenu-desktop which only displays applications shipping a +# .desktop file. It is a wrapper around dmenu, so you need that installed. +bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws1 "1" +set $ws2 "2" +set $ws3 "3" +set $ws4 "4" +set $ws5 "5" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" +set $ws10 "10" + +# switch to workspace +bindsym $mod+1 workspace number $ws1 +bindsym $mod+2 workspace number $ws2 +bindsym $mod+3 workspace number $ws3 +bindsym $mod+4 workspace number $ws4 +bindsym $mod+5 workspace number $ws5 +bindsym $mod+6 workspace number $ws6 +bindsym $mod+7 workspace number $ws7 +bindsym $mod+8 workspace number $ws8 +bindsym $mod+9 workspace number $ws9 +bindsym $mod+0 workspace number $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number $ws1; workspace number $ws1 +bindsym $mod+Shift+2 move container to workspace number $ws2; workspace number $ws2 +bindsym $mod+Shift+3 move container to workspace number $ws3; workspace number $ws3 +bindsym $mod+Shift+4 move container to workspace number $ws4; workspace number $ws4 +bindsym $mod+Shift+5 move container to workspace number $ws5; workspace number $ws5 +bindsym $mod+Shift+6 move container to workspace number $ws6; workspace number $ws6 +bindsym $mod+Shift+7 move container to workspace number $ws7; workspace number $ws7 +bindsym $mod+Shift+8 move container to workspace number $ws8; workspace number $ws8 +bindsym $mod+Shift+9 move container to workspace number $ws9; workspace number $ws9 +bindsym $mod+Shift+0 move container to workspace number $ws10; workspace number $ws10 + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" + +# resize window (you can also use the mouse for that) +mode "resize" { + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +# Calendar +for_window [class="Yad" title="yad-calendar"] floating enable + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +# bar { +# status_command i3status +# } diff --git a/dot_config/kitty/kitty.conf b/dot_config/kitty/kitty.conf new file mode 100644 index 0000000..9137279 --- /dev/null +++ b/dot_config/kitty/kitty.conf @@ -0,0 +1,62 @@ +# Fonts +font_size 18 +font_family Fira Code Nerd Font +bold_font auto +italic_font auto +bold_italic_font auto + +# Tabs +tab_bar_edge bottom +tab_bar_min_tabs 2 +tab_bar_style powerline +tab_powerline_style slanted +tab_title_max_length 20 + +# Cursor +cursor_stop_blinking_after 0 +cursor_trail 1 +cursor_trail_decay 0.1 0.2 + +# Scrollback +scrollback_lines 10000 + +# Mouse +url_color #ff00ff +url_style double +detect_urls yes +show_hyperlink_targets yes +underline_hyperlinks always + +# Color scheme +foreground #dddddd +background #000000 +background_opacity 0.8 +background_blur 1 +dynamic_background_opacity yes + +# Advanced +shell zsh -l +editor . +close_on_child_death no +allow_hyperlinks yes + +# Keymaps +map ctrl+a>q close_window +map ctrl+a>minus launch --location=hsplit +map ctrl+a>pipe launch --location=vsplit + +map ctrl+a>shift+h move_window left +map ctrl+a>shift+j move_window down +map ctrl+a>shift+k move_window up +map ctrl+a>shift+l move_window right + +map ctrl+a>h neighboring_window left +map ctrl+a>j neighboring_window down +map ctrl+a>k neighboring_window up +map ctrl+a>l neighboring_window right + +map ctrl+a>left resize_window narrower +map ctrl+a>right resize_window wider +map ctrl+a>up resize_window taller +map ctrl+a>down resize_window shorter 3 +map ctrl+a>home resize_window reset diff --git a/dot_config/picom/picom.conf b/dot_config/picom/picom.conf new file mode 100644 index 0000000..c13b2f4 --- /dev/null +++ b/dot_config/picom/picom.conf @@ -0,0 +1,41 @@ +# GENERAL +backend = "glx"; +vsync = true; +detect-rounded-corners = false; +detect-client-opacity = false; +detect-transient = true; +unredir-if-possible = true; + + + +# CORNERS +#corner-radius = 11; + +# Exclude conditions for rounded corners. +#rounded-corners-exclude = [ +# "window_type = 'dock'", +# "window_type = 'desktop'" +#]; + +blur: { + method = "dual_kawase"; + strength = 6; + background = true; + background-frame = false; + background-fixed = false; +} + + +# Exclude conditions for background blur. +# blur-background-exclude = [] +blur-background-exclude = [ + "role = 'xborder'", + "window_type = 'dock'", + "window_type = 'desktop'", + "_GTK_FRAME_EXTENTS@:c", + "class_g = 'Chromium'", + "class_g = 'Discord'", + "class_g = 'Dunst'", + "class_g = 'Peek'", + "class_g *?= 'slop'", +]; diff --git a/dot_config/polybar/config.ini b/dot_config/polybar/config.ini new file mode 100644 index 0000000..f40f570 --- /dev/null +++ b/dot_config/polybar/config.ini @@ -0,0 +1,100 @@ +[colors] +; Colors from https://github.com/rebelot/kanagawa.nvim +background = #1F1F28 +foreground = #DCD7BA +foreground-alt = #C8C093 +module-fg = #DCD7BA +primary = #7E9CD8 +secondary = #7AA89F +alert = #E82424 +disabled = #727169 +green = #98BB6C +yellow = #FF9E3B +red = #E46876 +blue = #7FB4CA + +[bar/main] +monitor = ${env:MONITOR:} +width = calc(100% - 10px) +height = 25 +bottom = true +background = ${colors.background} +foreground = ${colors.foreground} +line-size = 2 +padding = 2 +module-margin = 1 +font-0 = sans:size=14;2 +font-1 = FontAwesome:size=12;2 +separator = | +tray-position = right +modules-left = i3 +modules-center = date +modules-right = pulseaudio network memory filesystem tray + +[module/i3] +type = internal/i3 +pin-workspaces = true +strip-ws-numbers = true +label-focused = %name% +label-focused-foreground = ${colors.primary} +label-focused-background = ${colors.background} +label-focused-padding = 1 +label-unfocused = %name% +label-unfocused-foreground = ${colors.disabled} +label-unfocused-padding = 1 +label-visible = %name% +label-visible-foreground = ${colors.foreground-alt} +label-visible-padding = 1 +label-urgent = %name% +label-urgent-foreground = ${colors.alert} +label-urgent-padding = 1 + +[module/date] +type = custom/script +exec = ~/.config/polybar/scripts/calendar.sh +interval = 1 +label-foreground = ${colors.foreground} +click-left = ~/.config/polybar/scripts/calendar.sh --popup + +[module/pulseaudio] +type = internal/pulseaudio +format-volume = +label-volume = Vol: %percentage%% +ramp-volume-0 =  +ramp-volume-1 =  +ramp-volume-2 =  +label-muted =  muted +label-muted-foreground = ${colors.disabled} +click-right = pavucontrol +scroll-up = pactl set-sink-volume @DEFAULT_SINK@ +2% +scroll-down = pactl set-sink-volume @DEFAULT_SINK@ -2% + +[module/network] +type = internal/network +interface = wlp3s0 ; Replace with your network interface (use ip link to check, e.g., wlan0 or enp0s3) +interval = 3 +format-connected = +label-connected =  %essid% ↓%downspeed% ↑%upspeed% +label-connected-foreground = ${colors.green} +format-disconnected = +label-disconnected =  disconnected +label-disconnected-foreground = ${colors.alert} + +[module/memory] +type = internal/memory +interval = 2 +format =