Files
dotfiles-sway/README.md
T
pyrschtjag a213b10a88 Initial commit: sway + uwsm desktop dotfiles
Nord-themed Wayland setup on sway (via uwsm), including:

- sway/swayidle/swaylock/swaddle — WM, idle/lock/inhibit
- waybar, rofi — bar and launcher
- dunst — notifications
- foot — terminal
- zsh (+fzf, syntax highlighting, autosuggestions) — shell
- mpd/rmpc/mpc, mpv — music and video
- nvim — editor (lazy.nvim)
- ly — login manager
- rbw + pinentry-rofi wrapper — Bitwarden/Vaultwarden CLI
- per-window-layout, clipvault — helper systemd services
2026-08-11 10:30:07 +04:00

153 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# dotfiles-sway
Конфиги для Sway.
## Стек
|Компонент|Технология|Описание|
|---|---|---|
|Тайлинговый менеджер|sway|i3-совместимый Wayland-компоузер. Раскладка окон, workspaces, бинды, запуск через uwsm|
||swayidle|Демон бездействия: блокирует экран, гасит мониторы (dpms off) и уходит в suspend по таймаутам; блокирует перед сном и включает мониторы после пробуждения|
||swaylock|Экран блокировки для Wayland/sway, с Nord-темой и индикатором ввода пароля|
||swaddle|MPRIS-инхибитор автоблокировки/сна — не даёт экрану гаснуть во время прослушивания музыки или просмотра видео|
||waybar|Панель статуса: workspaces, clock, tray, idle-inhibitor, CPU/RAM/temp/disk, аудио-виджеты (wireplumber), кастомный лаунчер rofi|
||rofi|Лаунчер приложений/меню: drun, кастомные моды по категориям (internet/dev/games/system/media), буфер обмена, история уведомлений, Bitwarden (rofi-rbw)|
|Музыка|mpd|Music Player Daemon — бэкенд воспроизведения музыки (вывод через pipewire, replaygain по альбому)|
||mpc|Консольный клиент-обёртка для MPD (control через CLI/скрипты — быстрые команды типа play/pause/next без запуска TUI)|
||rmpc|TUI-клиент для MPD: очередь, браузер библиотеки, поиск, кастомный статус-бар (артист/альбом/трек/битрейт), Nord-тема|
|Видео|mpv|Плеер с рендером через Vulkan (gpu-context=waylandvk, gpu-api=vulkan) и аппаратным декодированием на nvidia (hwdec=nvdec)|
|Редактор|nvim|Neovim на lazy.nvim: цветовая схема nord, colorizer, render-markdown, nvim-tree, treesitter, gitsigns, bufferline|
|Терминал|foot|Лёгкий Wayland-нативный терминал; шрифт Noto Mono, тёмная тема|
|Уведомления|dunst|Демон уведомлений: позиция top-right, прогресс-бары, история (sticky), Nord-цвета по уровню важности|
|Шелл|zsh|Интерактивный shell: vi-режим (bindkey -v), общая история между сессиями (SHARE_HISTORY), автодополнение через compinit, fzf (включая fzf-tab и fzf-tab-completion), подсветка синтаксиса (zsh-syntax-highlighting) и автоподсказки (zsh-autosuggestions) — всё в Nord-палитре. Кастомный promt с vi-режимом (❯/❮ в зависимости от normal/insert), git-статус в промпте (staged/modified/untracked/deleted/conflicts с иконками) и код выхода последней команды. Обёртки nvim/vi/vim и алиас rmpc меняют заголовок окна терминала (\033]0;...\007) на время работы программы|
|Сессия|uwsm|Universal Wayland Session Manager — запускает sway как systemd-managed сессию, пробрасывает переменные окружения (WAYLAND_DISPLAY, SWAYSOCK, Qt-тема, ssh-agent через rbw)|
|Логин-менеджер|ly|TUI display manager: анимация matrix, большие часы (bigclock=en), пустой пароль запрещён (allow_empty_password=false). Хоткеи: F1 shutdown, F2 restart, F3 suspend (systemctl suspend), F7 показать пароль; brightness/hibernate скрыты (*_key = null)|
## Зависимости
```bash
sudo pacman -S \
zsh \
zsh-syntax-highlighting \
zsh-autosuggestions \
pipewire \
wireplumber \
wl-clipboard \
noto-fonts \
noto-fonts-cjk \
noto-fonts-emoji \
ttf-nerd-fonts-symbols-mono \
sway \
swaylock \
swayidle \
swaybg \
slurp \
grim \
rbw \
rofi \
rofi-rbw \
python-systemd \
python-i3ipc \
rmpc \
neovim \
mpv \
mpc \
mpd \
mpd-mpris \
playerctl \
xorg-xwayland \
xdg-utils \
xdg-desktop-portal-gtk \
xdg-desktop-portal-wlr \
xorg-xwayland \
xorg-xrandr \
polkit \
ly \
jq \
git \
qt6ct \
fzf \
foot \
dunst \
uwsm \
mc \
imv
```
```bash
yay -S \
swaddle \
clipvault \
pinentry-rofi
```
## Деплой
```bash
ln -s ./.zsh ~/.config/.zsh
ln -s ./.zshrc ~/.zshrc
ln -s ./dunst ~/.config/dunst
ln -s ./foot ~/.config/foot
ln -s ./uwsm ~/.config/uwsm
ln -s ./systemd/user/* ~/.config/systemd/user/
ln -s ./sway ~/.config/sway
ln -s ./swaylock ~/.config/swaylock
ln -s ./swaddle ~/.config/swaddle
ln -s ./rofi ~/.config/rofi
ln -s ./rmpc ~/.config/rmpc
ln -s ./nvim ~/.config/nvim
ln -s ./mpv ~/.config/mpv
ln -s ./mpd ~/.config/mpd
```
```bash
mkdir -p ~/.zsh/plugins
git clone https://github.com/Aloxaf/fzf-tab ~/.zsh/plugins/fzf-tab
git clone https://github.com/lincheney/fzf-tab-completion ~/.zsh/plugins/fzf-tab-completion
```
```bash
chsh -s /usr/bin/zsh
```
```bash
sudo cp ./other/sway-uwsm.desktop /usr/share/wayland-sessions/
sudo cp ./other/ly.ini /etc/ly/config.ini
```
```bash
mkdir -p ~/.local/bin/
ln -s ./other/pinentry-rofi-wrapper ~/.local/bin/pinentry-rofi-wrapper
```
```bash
rbw config set email $email
rbw config set base_url $url
rbw config set pinentry $pinentry_rofi_wrapper
```
## Скриншоты
<p align="center">
<img src="./assets/photo_2026-08-11_08-01-47.jpg" alt="waybar/rofi/dunst" width="800">
<br>
<sub>waybar / rofi / dunst</sub>
</p>
<p align="center">
<img src="./assets/photo_2026-08-11_08-01-57.jpg" alt="rmpc" width="800">
<br>
<sub>rmpc</sub>
</p>
<p align="center">
<img src="./assets/photo_2026-08-11_08-02-00.jpg" alt="nvim" width="800">
<br>
<sub>nvim</sub>
</p>
<p align="center">
<img src="./assets/photo_2026-08-11_08-02-03.jpg" alt="zsh/fzf" width="800">
<br>
<sub>zsh / fzf</sub>
</p>