Compare commits
13
Commits
b7d516c838
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
90afabec65 | ||
|
|
d748884042 | ||
|
|
37e6dc73ef | ||
|
|
e315b90497 | ||
|
|
3820c75523 | ||
|
|
c82e19aac4 | ||
|
|
adc893dedd | ||
|
|
9334834da3 | ||
|
|
7e36781fdc | ||
|
|
3de2eb69c6 | ||
|
|
51823c7646 | ||
|
|
91cd29fe93 | ||
|
|
f78206db72 |
@@ -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+F8 exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle #&& $refresh_i3status
|
||||
bindsym $mod+F9 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 && ~/.config/i3/scripts/volume.sh
|
||||
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+Shift+q kill
|
||||
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 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 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,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 clipmenud
|
||||
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 killall -q dunst; dunst -config ~/.config/dunst/dunstrc
|
||||
exec_always --no-startup-id setxkbmap -layout "us,ru" -option "grp:win_space_toggle"
|
||||
|
||||
Executable
+52
@@ -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"
|
||||
@@ -2,10 +2,12 @@
|
||||
|
||||
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)\"")
|
||||
echo $data
|
||||
name=$(echo "$data" | cut -f1)
|
||||
echo $name
|
||||
geometry=$(echo "$data" | cut -f2)
|
||||
echo $geometry
|
||||
temp_file="/tmp/i3-sc-full.png"
|
||||
maim -g "$geometry" "$temp_file"
|
||||
echo "file://$temp_file" | xclip -selection clipboard -t text/uri-list
|
||||
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 = 'tooltip'",
|
||||
"class_g = 'slop'",
|
||||
"_GTK_FRAME_EXTENTS@:c"
|
||||
"_GTK_FRAME_EXTENTS"
|
||||
];
|
||||
@@ -1,4 +1,6 @@
|
||||
rounded-corners-exclude = [
|
||||
"window_type = 'dock'",
|
||||
"window_type = 'desktop'",
|
||||
"window_type = 'menu'",
|
||||
"window_type = 'dropdown_menu'",
|
||||
"window_type = 'popup_menu'",
|
||||
|
||||
@@ -1,6 +1,2 @@
|
||||
corner-radius = 8;
|
||||
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-out-step = 0.03;
|
||||
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;
|
||||
unredir-if-possible = false;
|
||||
detect-transient = true;
|
||||
detect-client-leader = true;
|
||||
use-damage = false;
|
||||
window-shader-fg = "default";
|
||||
#window-shader-fg = "default";
|
||||
transparent-clipping = false;
|
||||
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 = 'popup_menu'",
|
||||
"100:window_type = 'tooltip'",
|
||||
"100:window_role = 'PictureInPicture'",
|
||||
"100:WM_WINDOW_ROLE = 'PictureInPicture'",
|
||||
"100:name *= 'Picture-in-Picture'",
|
||||
"100:name *= '- YouTube'",
|
||||
"100:name *= 'Twitch'",
|
||||
|
||||
+2
-2
@@ -7,11 +7,11 @@ polybar-msg cmd quit
|
||||
# killall -q polybar
|
||||
|
||||
# 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=DVI-I-1 polybar dvi 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
@@ -104,7 +104,7 @@ date = %H:%M
|
||||
|
||||
[module/date]
|
||||
inherit = date-base
|
||||
date = %d/%m/%Y
|
||||
date = %A, %d %b
|
||||
|
||||
[module/temperature]
|
||||
type = internal/temperature
|
||||
|
||||
Reference in New Issue
Block a user