Все статьи

Как сделать Linux удобнее: Polybar, Rofi и мои утилиты

Как сделать Linux удобнее: Polybar, Rofi и мои утилиты

Под каждым моим роликом про Linux повторяются одни и те же вопросы: «Что это за панель сверху?», «Как ты так быстро запускаешь программы?», «Откуда это меню?». За четыре с лишним года на Linux у меня сложился набор инструментов, без которых система уже не ощущается своей. Многие из них не известны широкой публике просто потому, что о них редко рассказывают.

В этой статье — то, чем я пользуюсь каждый день, чтобы сделать Linux удобнее: панель Polybar и её аналог Waybar, лаунчер Rofi с собственными режимами, консольный плеер mpv, терминальные интерфейсы для git и Docker и несколько небольших утилит. Мои конфиги лежат в открытом репозитории bspwm-dotfiles.

Polybar: панель, собранная из модулей

Polybar — это верхняя панель в моей оболочке на BSPWM. На ней рабочие столы, меню, температура процессора, загрузка памяти и CPU, батарея, яркость, звук, раскладка, календарь, Wi-Fi, меню питания и трей.

Главная её особенность — модульность. Нужно пять рабочих столов — ставите пять. Нужен плеер по центру — добавляете модуль плеера. Стиль тоже любой: тёмный, светлый, в цветах обоев. В документации проекта есть длинный список встроенных модулей — ALSA и PulseAudio, яркость, батарея, сеть, MPD, рабочие столы, температура — плюс можно подключить любой свой скрипт.

Чаще всего меня спрашивали, где брать пути для яркости и батареи. Они описаны в модулях. Например, яркость:

[module/backlight]
type = internal/backlight
card = amdgpu_bl0
enable-scroll = true
format = <ramp> <label>
label = %percentage%%

Имя карты зависит от железа: посмотреть его можно командой ls /sys/class/backlight. Для батареи нужны имена батареи и адаптера:

ls /sys/class/power_supply
# AC  BAT0
[module/battery]
type = internal/battery
battery = BAT0
adapter = AC
full-at = 99

Модули распределяются по трём зонам — слева, по центру и справа. Чтобы убрать, например, температуру и память, достаточно удалить их имена из строки modules-right и сохранить файл.

Waybar для Wayland

Polybar работает в X11. Я постепенно перехожу на Wayland, NixOS и Hyprland, а там лучше использовать Waybar. Настраивать его даже проще: модули описываются в JSON, а внешний вид — обычным CSS, так что стиль можно сделать точно таким же, как в Polybar. Рабочие столы в Hyprland динамические: панель показывает те, что используются, а новые появляются по мере открытия окон.

Rofi: лаунчер, который становится чем угодно

Rofi — меню, которое по умолчанию запускает программы, но на самом деле умеет показывать любые списки. Запуск в нужном режиме:

rofi -show drun            # список приложений
rofi -show run             # команды из PATH
rofi -show drun -theme ~/.config/rofi/themes/dark.rasi

Темы описываются в формате, похожем на CSS, и выбираются прямо при запуске. Это удобно: одна тема для запуска программ, другая — для меню Wi-Fi, третья — полноэкранная для игр.

Самое интересное — собственные режимы. У меня есть пункты для включения разных веб-камер, скачивания аудио и видео с YouTube через yt-dlp и меню питания. Меню питания — это обычный скрипт: список действий передаётся в Rofi в режиме -dmenu, а дальше case выполняет выбранное:

#!/usr/bin/env bash
choice=$(printf "lock\nlogout\nreboot\nshutdown" | rofi -dmenu -p "power")

case "$choice" in
    lock) loginctl lock-session ;;
    logout) bspc quit ;;
    reboot) systemctl reboot ;;
    shutdown) systemctl poweroff ;;
esac

Для Rofi есть множество готовых скриптов: выбор эмодзи, калькулятор с копированием результата, 2FA-коды, закладки, управление MPD и Spotify, подключение Bluetooth через rofi-bluetooth, управление Wi-Fi, поиск по заметкам Obsidian и запуск игр из библиотеки Steam. Горячая клавиша — список игр — запуск за секунду.

mpv: плеер и окно веб-камеры

mpv я использую как основной плеер: он открывает аудио и видео прямо из терминала и почти не тратит ресурсы. Неочевидная возможность — показ веб-камеры без отдельных программ:

mpv av://v4l2:/dev/video0

/dev/video0 — встроенная камера ноутбука, внешняя обычно будет /dev/video1. Для меня это замена приложениям вроде Cheese: мне не нужны их эффекты и настройки, только картинка с камеры. А вызывать такую команду удобно из того же Rofi.

LazyGit и LazyDocker: git и Docker в терминальном интерфейсе

LazyGit показывает статус репозитория, изменения в файлах, ветки и лог, позволяет делать коммиты и переключаться между ветками, не запоминая команды. LazyDocker делает то же для Docker: контейнеры и их статус, логи, образы, тома и сети в одном окне.

Оба работают в обычном терминале, поэтому особенно полезны на серверах без графической оболочки: подключились по SSH, запустили lazydocker — и видите всё состояние сразу.

dysk, NeoHtop и другие утилиты для контроля системы

Когда Docker внезапно занимает лишние гигабайты, нужно быстро понять, сколько места осталось. Вывод df читается тяжело, lsblk показывает структуру дисков, но не свободное место. dysk выводит понятную таблицу: раздел, файловая система, занято, свободно, объём и точка монтирования.

Для полной картины нагрузки я использую NeoHtop — графический монитор системы на Tauri с бэкендом на Rust. В нём ядра процессора, память, диски, сеть и список процессов с подробностями вплоть до переменных окружения, а также много тем оформления. Подробнее о мониторинге — в отдельной статье про мониторинг Linux.

redshift и wlsunset: тёплые цвета вечером

Автоматический переход экрана на тёплые оттенки вечером делает redshift. Конфиг ~/.config/redshift/redshift.conf:

[redshift]
temp-day=5700
temp-night=3500
location-provider=manual

[manual]
lat=50.4
lon=30.5

По координатам redshift вычисляет закат и рассвет, поэтому важно, чтобы они соответствовали вашему часовому поясу. Redshift работает в X11, для Wayland есть wlsunset:

wlsunset -l 50.4 -L 30.5

Его я уже добавил в новую оболочку на Hyprland.

Мелочи, которые экономят время

  • hexyl и hyx — hexyl показывает дамп файла в цветном hex-виде, а hyx позволяет редактировать байты с навигацией в стиле Vim.
  • cloc — cloc считает строки кода: cloc . выводит число файлов, строк кода, комментариев и пустых строк по каждому языку проекта.
  • bat — bat показывает файлы с подсветкой синтаксиса и номерами строк. У меня он стоит вместо cat через алиас в config.fish.

С чего начать

Задача Инструмент
Своя панель в X11 / Wayland Polybar / Waybar
Запуск программ и свои меню Rofi
Плеер и веб-камера mpv
Git и Docker без запоминания команд LazyGit, LazyDocker
Свободное место на дисках dysk
Тёплый экран вечером redshift / wlsunset
Чтение файлов с подсветкой bat

Если вы только собираете окружение, начните с Rofi и bat: эффект заметен сразу, а настройка занимает минуты. Панель стоит делать, когда уже понятно, какие данные вам действительно нужны перед глазами. Больше утилит — в подборке 10 полезных программ для Linux, а о том, почему мою новую оболочку я делаю на NixOS, — в статье NixOS после Arch Linux.

Источники