Compare commits

..
15 Commits
Author SHA1 Message Date
pyrschtjag 90afabec65 Merge pull request 'docs: update_readme' (#11) from update_readme into main
Reviewed-on: #11
2026-04-04 02:29:08 +04:00
pyrschtjag d748884042 docs: update_readme 2026-04-04 02:28:20 +04:00
pyrschtjag 37e6dc73ef Merge pull request 'update_0.8' (#10) from update_0.8 into main
Reviewed-on: #10
2026-02-24 18:45:21 +04:00
pyrschtjag e315b90497 update_0.8 2026-02-24 18:42:54 +04:00
pyrschtjag 3820c75523 Merge pull request 'update_0.7' (#9) from update_0.7 into main
Reviewed-on: #9
2026-01-19 06:35:42 +04:00
pyrschtjag c82e19aac4 update_0.7 2026-01-19 03:34:05 +04:00
pyrschtjag adc893dedd Merge pull request 'update_0.6' (#8) from update_0.6 into main
Reviewed-on: #8
2026-01-17 19:22:08 +04:00
pyrschtjag 9334834da3 update_0.6 2026-01-17 19:21:23 +04:00
pyrschtjag 7e36781fdc Merge pull request 'update_0.5' (#7) from update_0.5 into main
Reviewed-on: #7
2026-01-17 18:24:04 +04:00
pyrschtjag 3de2eb69c6 update_0.5 2026-01-17 18:23:19 +04:00
pyrschtjag 51823c7646 Merge pull request 'update_0.4' (#6) from update_0.4 into main
Reviewed-on: #6
2026-01-17 18:15:36 +04:00
pyrschtjag 91cd29fe93 Обновить i3/exec 2026-01-17 18:15:20 +04:00
pyrschtjag f78206db72 update_0.4 2026-01-17 18:13:39 +04:00
pyrschtjag b7d516c838 Merge pull request 'update_0.3' (#5) from update_0.3 into main
Reviewed-on: #5
2026-01-17 14:21:47 +04:00
pyrschtjag 3913377a29 update_0.3 2026-01-17 14:21:22 +04:00
19 changed files with 142 additions and 29 deletions
+41 -1
View File
@@ -1,2 +1,42 @@
# dotfiles-i3 # I3 Dotfiles
Конфигурационные файлы для тайлингового оконного менеджера i3 и сопутствующего окружения. Настройка ориентирована на производительность и работу с мультимониторной конфигурацией.
<p align="center">
<img src="./assets/monitor_0.jpg" alt="i3wm Desktop Preview" width="800">
</p>
## Стек
| Компонент | Технология
| :--- | :--- |
| **Window Manager** | i3 |
| **Status Bar** | Polybar |
| **Compositor** | Picom |
| **State Management** | Python / Socat |
| **Notification** | Dunst |
| **Application Launcher** | Rofi |
## Структура репозитория
```bash
.
├── i3/ # Основной конфиг WM и скрипты автоматизации
├── polybar/ # Конфигурация панелей и модулей (CPU, RAM, GPU temp)
├── picom/ # Настройки композитинга (тени, прозрачность, размытие)
├── rofi/ # Темы и настройки меню запуска
├── dunst/ # Конфигурация уведомлений
└── assets/ # Вспомогательные файлы
```
## Основные зависимости
Для полной работоспособности функций управления и скриптов необходимы:
```bash
pactl # audio control
playerctl # media control
feh # wallpaper
xclip # clipboard interaction
nvidia-smi # для мониторинга температуры GPU
xidlehook # idle management
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

+1 -1
View File
@@ -1,5 +1,5 @@
[global] [global]
font = JetBrainsMono Nerd Font 11 font = Noto Sans Mono 11
width = (0, 300) width = (0, 300)
height = (0, 200) height = (0, 200)
offset = (25, 72) offset = (25, 72)
+19 -4
View File
@@ -1,6 +1,9 @@
bindsym $mod+F7 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% #&& $refresh_i3status bindsym $mod+F7 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && ~/.config/i3/scripts/volume.sh
bindsym $mod+F8 exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle #&& $refresh_i3status bindsym $mod+F8 exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && ~/.config/i3/scripts/volume.sh
bindsym $mod+F9 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% #&& $refresh_i3status bindsym $mod+F9 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && ~/.config/i3/scripts/volume.sh
bindsym $mod+F10 exec --no-startup-id playerctl previous
bindsym $mod+F11 exec --no-startup-id playerctl play-pause
bindsym $mod+F12 exec --no-startup-id playerctl next
bindsym $mod+Return exec kitty bindsym $mod+Return exec kitty
bindsym $mod+Shift+q kill bindsym $mod+Shift+q kill
bindsym $mod+d exec --no-startup-id "rofi -modi drun,run,window -show drun" bindsym $mod+d exec --no-startup-id "rofi -modi drun,run,window -show drun"
@@ -75,4 +78,16 @@ bindsym $mod+r mode "Resize"
bindsym $mod+v exec --no-startup-id bash -c "rofi -modi 'clipboard:greenclip print' -show clipboard && xclip -selection clipboard -o | ~/.config/i3/scripts/i3-sc-clipboard.sh" bindsym $mod+v exec --no-startup-id bash -c "rofi -modi 'clipboard:greenclip print' -show clipboard && xclip -selection clipboard -o | ~/.config/i3/scripts/i3-sc-clipboard.sh"
bindsym Shift+Print exec --no-startup-id ~/.config/i3/scripts/i3-sc-area.sh bindsym Shift+Print exec --no-startup-id ~/.config/i3/scripts/i3-sc-area.sh
bindsym Ctrl+Print exec --no-startup-id ~/.config/i3/scripts/i3-sc-window.sh bindsym Ctrl+Print exec --no-startup-id ~/.config/i3/scripts/i3-sc-window.sh
bindsym Print exec --no-startup-id ~/.config/i3/scripts/i3-sc-full.shv bindsym Print exec --no-startup-id ~/.config/i3/scripts/i3-sc-full.sh
mode "Lock? [y/n]" {
bindsym y mode "default" exec --no-startup-id ~/.config/i3/scripts/i3-lock.sh
bindsym n mode "default"
bindsym Escape mode "default"
}
bindsym $mod+x mode "Lock? [y/n]"
mode "Suspend? [y/n]" {
bindsym y mode "default" exec --no-startup-id "~/.config/i3/scripts/i3-lock.sh & sleep 1 && systemctl suspend"
bindsym n mode "default"
bindsym Escape mode "default"
}
bindsym $mod+Ctrl+x mode "Suspend? [y/n]"
+1 -1
View File
@@ -4,4 +4,4 @@ include set
include main include main
include exec include exec
include bind include bind
include color include color
+1 -4
View File
@@ -1,9 +1,6 @@
exec --no-startup-id dex --autostart --environment i3
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
exec --no-startup-id nm-applet
exec --no-startup-id picom exec --no-startup-id picom
exec --no-startup-id clipmenud
exec --no-startup-id greenclip daemon exec --no-startup-id greenclip daemon
exec --no-startup-id xidlehook --not-when-fullscreen --not-when-audio --timer 600 "~/.config/i3/scripts/i3-lock.sh" "" --timer 900 "systemctl suspend" ""
exec_always --no-startup-id bash ~/.config/i3/scripts/i3-lang-layout.sh exec_always --no-startup-id bash ~/.config/i3/scripts/i3-lang-layout.sh
exec_always --no-startup-id killall -q dunst; dunst -config ~/.config/dunst/dunstrc exec_always --no-startup-id killall -q dunst; dunst -config ~/.config/dunst/dunstrc
exec_always --no-startup-id setxkbmap -layout "us,ru" -option "grp:win_space_toggle" exec_always --no-startup-id setxkbmap -layout "us,ru" -option "grp:win_space_toggle"
+1 -1
View File
@@ -1,4 +1,4 @@
font pango:JetBrainsMono Nerd Font 11 font pango:Noto Sans Mono 11
floating_modifier $mod floating_modifier $mod
tiling_drag modifier titlebar tiling_drag modifier titlebar
gaps inner 5 gaps inner 5
+52
View File
@@ -0,0 +1,52 @@
#!/bin/bash
pgrep -x i3lock > /dev/null && exit
bgcolor='#2d2d2dcc'
ubgcolor='#00afff'
textcolor='#ffffff'
alertcolor='#ff5555'
insidecolor='#2d2d2d88'
keycolor='#6b8e23'
i3lock -n \
--blur 5 \
--indicator \
--clock \
--refresh-rate 60 \
--ind-pos="x+w/2:y+h/2" \
--time-pos="ix:iy-20" \
--date-pos="ix:iy+20" \
--radius=100 \
--ring-width=8 \
\
--color=$bgcolor \
--inside-color=$insidecolor \
--ring-color=$ubgcolor \
--separator-color=$bgcolor \
\
--insidever-color=$insidecolor \
--ringver-color=$ubgcolor \
\
--insidewrong-color=$insidecolor \
--ringwrong-color=$alertcolor \
\
--keyhl-color=$keycolor \
--bshl-color=$alertcolor \
\
--time-color=$textcolor \
--date-color=$textcolor \
--layout-color=$textcolor \
--verif-color=$textcolor \
--wrong-color=$textcolor \
--greeter-color=$textcolor \
\
--time-str="%H:%M" \
--date-str="%A, %d %b" \
--keylayout 0 \
\
--time-font="Noto Sans Mono" \
--date-font="Noto Sans Mono" \
--layout-font="Noto Sans Mono" \
--verif-font="Noto Sans Mono" \
--wrong-font="Noto Sans Mono"
+3 -1
View File
@@ -2,10 +2,12 @@
eval $(xdotool getmouselocation --shell) eval $(xdotool getmouselocation --shell)
data=$(i3-msg -t get_outputs | jq -r ".[] | select(.active == true and $X >= .rect.x and $X < (.rect.x + .rect.width) and $Y >= .rect.y and $Y < (.rect.y + .rect.height)) | \"\(.name)\t\(.rect.width)x\(.rect.height)+\(.rect.x)+\(.rect.y)\"") data=$(i3-msg -t get_outputs | jq -r ".[] | select(.active == true and $X >= .rect.x and $X < (.rect.x + .rect.width) and $Y >= .rect.y and $Y < (.rect.y + .rect.height)) | \"\(.name)\t\(.rect.width)x\(.rect.height)+\(.rect.x)+\(.rect.y)\"")
echo $data
name=$(echo "$data" | cut -f1) name=$(echo "$data" | cut -f1)
echo $name
geometry=$(echo "$data" | cut -f2) geometry=$(echo "$data" | cut -f2)
echo $geometry
temp_file="/tmp/i3-sc-full.png" temp_file="/tmp/i3-sc-full.png"
maim -g "$geometry" "$temp_file" maim -g "$geometry" "$temp_file"
echo "file://$temp_file" | xclip -selection clipboard -t text/uri-list echo "file://$temp_file" | xclip -selection clipboard -t text/uri-list
notify-send "Screenshot" "Captured display: $name" -i camera-photo notify-send "Screenshot" "Captured display: $name" -i camera-photo
rm "$temp_file"
+10
View File
@@ -0,0 +1,10 @@
#!/bin/bash
volume=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '\d+(?=%)' | head -1)
mute=$(pactl get-sink-mute @DEFAULT_SINK@ | grep -Po '(?<=Mute: )(yes|no)')
if [ "$mute" = "yes" ]; then
notify-send -a "System" -r 9993 -i audio-volume-muted "Muted" --urgency=LOW -t 1000
else
notify-send -a "System" -r 9993 -h int:value:"$volume" -i audio-volume-high "Volume: ${volume}%" --urgency=LOW -t 1000
fi
+2 -2
View File
@@ -6,5 +6,5 @@ blur-background-exclude = [
"window_type = 'popup_menu'", "window_type = 'popup_menu'",
"window_type = 'tooltip'", "window_type = 'tooltip'",
"class_g = 'slop'", "class_g = 'slop'",
"_GTK_FRAME_EXTENTS@:c" "_GTK_FRAME_EXTENTS"
]; ];
+2
View File
@@ -1,4 +1,6 @@
rounded-corners-exclude = [ rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"window_type = 'menu'", "window_type = 'menu'",
"window_type = 'dropdown_menu'", "window_type = 'dropdown_menu'",
"window_type = 'popup_menu'", "window_type = 'popup_menu'",
-4
View File
@@ -1,6 +1,2 @@
corner-radius = 8; corner-radius = 8;
round-borders = 1; round-borders = 1;
rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'"
];
+1 -1
View File
@@ -2,4 +2,4 @@ fading = true;
fade-in-step = 0.03; fade-in-step = 0.03;
fade-out-step = 0.03; fade-out-step = 0.03;
fade-delta = 5; fade-delta = 5;
no-fading-openclose = false no-fading-openclose = false;
+2 -3
View File
@@ -6,9 +6,8 @@ detect-client-opacity = true;
use-ewmh-active-win = true; use-ewmh-active-win = true;
unredir-if-possible = false; unredir-if-possible = false;
detect-transient = true; detect-transient = true;
detect-client-leader = true;
use-damage = false; use-damage = false;
window-shader-fg = "default"; #window-shader-fg = "default";
transparent-clipping = false; transparent-clipping = false;
log-level = "warn"; log-level = "warn";
log-file = "/var/log/picom.log" log-file = "/home/pyrschtjag/.cache/picom.log";
+2 -2
View File
@@ -9,10 +9,10 @@ opacity-rule = [
"100:window_type = 'dropdown_menu'", "100:window_type = 'dropdown_menu'",
"100:window_type = 'popup_menu'", "100:window_type = 'popup_menu'",
"100:window_type = 'tooltip'", "100:window_type = 'tooltip'",
"100:window_role = 'PictureInPicture'", "100:WM_WINDOW_ROLE = 'PictureInPicture'",
"100:name *= 'Picture-in-Picture'", "100:name *= 'Picture-in-Picture'",
"100:name *= '- YouTube'", "100:name *= '- YouTube'",
"100:name *= 'Twitch'", "100:name *= 'Twitch'",
"100:name *= 'rofi'", "100:name *= 'rofi'",
"100:class_g = 'slop'" "100:class_g = 'slop'"
]; ];
+2 -2
View File
@@ -7,11 +7,11 @@ polybar-msg cmd quit
# killall -q polybar # killall -q polybar
# Launch bar1 and bar2 # Launch bar1 and bar2
echo "---" | tee -a /tmp/polybar1.log /tmp/polybar2.log #echo "---" | tee -a /tmp/polybar1.log /tmp/polybar2.log
MONITOR=HDMI-0 polybar hdmi 2>&1 | tee -a /tmp/polybar1.log & disown MONITOR=HDMI-0 polybar hdmi 2>&1 | tee -a /tmp/polybar1.log & disown
MONITOR=DVI-I-1 polybar dvi 2>&1 | tee -a /tmp/polybar2.log & disown MONITOR=DVI-I-1 polybar dvi 2>&1 | tee -a /tmp/polybar2.log & disown
#polybar bar2 2>&1 | tee -a /tmp/polybar2.log & disown #polybar bar2 2>&1 | tee -a /tmp/polybar2.log & disown
echo "Bars launched..." #echo "Bars launched..."
+1 -1
View File
@@ -104,7 +104,7 @@ date = %H:%M
[module/date] [module/date]
inherit = date-base inherit = date-base
date = %d/%m/%Y date = %A, %d %b
[module/temperature] [module/temperature]
type = internal/temperature type = internal/temperature
+1 -1
View File
@@ -26,7 +26,7 @@ configuration {
fg-col: #ffffff; fg-col: #ffffff;
grey: #969696; grey: #969696;
width: 600; width: 600;
font: "JetBrainsMono Nerd Font 11"; font: "Noto Sans Mono 11";
} }
element-text, element-icon { element-text, element-icon {