Compare commits
10
Commits
51823c7646
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
90afabec65 | ||
|
|
d748884042 | ||
|
|
37e6dc73ef | ||
|
|
e315b90497 | ||
|
|
3820c75523 | ||
|
|
c82e19aac4 | ||
|
|
adc893dedd | ||
|
|
9334834da3 | ||
|
|
7e36781fdc | ||
|
|
3de2eb69c6 |
@@ -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,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"
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
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 --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
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ ubgcolor='#00afff'
|
|||||||
textcolor='#ffffff'
|
textcolor='#ffffff'
|
||||||
alertcolor='#ff5555'
|
alertcolor='#ff5555'
|
||||||
insidecolor='#2d2d2d88'
|
insidecolor='#2d2d2d88'
|
||||||
|
keycolor='#6b8e23'
|
||||||
|
|
||||||
i3lock -n \
|
i3lock -n \
|
||||||
--blur 5 \
|
--blur 5 \
|
||||||
@@ -30,7 +31,7 @@ i3lock -n \
|
|||||||
--insidewrong-color=$insidecolor \
|
--insidewrong-color=$insidecolor \
|
||||||
--ringwrong-color=$alertcolor \
|
--ringwrong-color=$alertcolor \
|
||||||
\
|
\
|
||||||
--keyhl-color=$textcolor \
|
--keyhl-color=$keycolor \
|
||||||
--bshl-color=$alertcolor \
|
--bshl-color=$alertcolor \
|
||||||
\
|
\
|
||||||
--time-color=$textcolor \
|
--time-color=$textcolor \
|
||||||
|
|||||||
@@ -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"
|
|
||||||
Executable
+10
@@ -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
|
||||||
@@ -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"
|
||||||
];
|
];
|
||||||
@@ -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'",
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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";
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ 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'",
|
||||||
|
|||||||
Reference in New Issue
Block a user