English · Русский
video1.mp4
Минималистичный интерактивный системный интерфейс для Hyprland.
Верхняя панель-чёлка появляется только тогда, когда это необходимо. Она показывает время, системные события, рабочее пространство и раскладку клавиатуры, а при взаимодействии раскрывается в компактный Command Center.
Интерфейс построен вокруг простой идеи: «интерфейс присутствует только тогда, когда он нужен». В обычном состоянии его не видно. При системном событии или действии пользователя он быстро появляется и показывает нужную информацию.
Визуально NotchShell сочетает глубокий чёрный notch, мягкий минималистичный UI и плавные физичные анимации. Основной акцент сделан на простоте, глубине, движении и ощущении единого физического элемента интерфейса.
Проект разрабатывается для оконного менеджера Hyprland и использует QuickShell для построения интерфейса и взаимодействия с системными компонентами.
NotchShell находится в стадии beta.
Это мой личный проект, который изначально создавался для собственного рабочего окружения и постепенно превратился в полноценный интерфейс для Hyprland.
Я разрабатываю NotchShell один и в первую очередь тестирую его на своей системе. Поэтому не могу гарантировать, что каждая функция будет работать на любом железе, дистрибутиве или конфигурации Linux.
Если вам чего-то не хватает, расскажите об этом.
- идея для новой функции;
- предложение по улучшению существующей;
- необычный сценарий использования;
- найденный баг;
- проблема с конкретной конфигурацией;
- исправление или готовая реализация.
Не стесняйтесь открывать Issue или отправлять Pull Request.
| Часы | Появляются при наведении и исчезают сразу после ухода курсора |
| Всплывающие статусы | Рабочее пространство, раскладка клавиатуры, громкость |
| Плеер | MPRIS: обложка, название, исполнитель, управление воспроизведением и перематываемая полоса позиции |
| Звук | PipeWire: громкость выхода и входа, мьют и переключение между реальными устройствами |
| Сеть | NetworkManager через nmcli: список соединений и переключение VPN |
| Ночной свет | Изменение температуры экрана с помощью hyprsunset |
| Уведомления | «Не беспокоить» и история уведомлений через dunstctl |
| Питание | Выход из системы, сон, перезагрузка и выключение |
| Лаунчер приложений | Собственное сканирование .desktop, сортировка по релевантности и частоте запуска, как в wofi |
| Выбор обоев | Применение обоев с автоматической перекраской оболочки через pywal |
| Календарь | Вид на месяц, встроенный в интерфейс |
Каждый сервис проверяет свою доступность при запуске. Если нужного компонента нет в системе, соответствующий контрол скрывается, а сетка перестраивается автоматически. Мёртвых контролов быть не должно.
1. Установка пакетов
Обязательные пакеты:
sudo pacman -S hyprland quickshell ttf-jetbrains-mono-nerdДополнительные пакеты. Они не обязательны для работы самого интерфейса, но добавляют соответствующий функционал:
sudo pacman -S pipewire networkmanager dunst hyprsunset python-pywal awww inter-font2. Клонирование
NotchShell устанавливается как конфигурация QuickShell:
git clone https://github.com/selvarn/NotchShell.git ~/.config/quickshell3. Проверка запуска
qsВы можете не увидеть ничего, и это нормально. Подведите курсор к верхней центральной части экрана. Notch должен выехать.
4. Выбор backend для pywal
Если вы установили python-pywal, по умолчанию используется backend wal.
Для более качественной генерации цветовой палитры рекомендуется использовать schemer2. При желании можно использовать и другие backend.
Установка schemer2:
go install github.com/thefryscorer/schemer2Проверка работоспособности в терминале:
schemer2 --helpШелл уже вызывает его именно так; строка лежит в ~/.config/quickshell/shell.conf,
если понадобится другой backend:
system {
palette_command = wal --backend schemer2 -n -i %f
}5. Выбор директории для обоев
По умолчанию обои ищутся в ~/Pictures/Wallpapers. Путь лежит в
~/.config/quickshell/shell.conf:
system {
wallpapers = Pictures/Wallpapers
}6. Автозапуск
-- hyprland.lua
hl.on("hyprland.start", function()
hl.exec_cmd("quickshell")
hl.exec_cmd("awww-daemon") -- если установлен awww
end)7. Горячие клавиши
У NotchShell нет собственных горячих клавиш. За них отвечает Hyprland, который вызывает нужные действия через IPC.
hl.bind(mainMod .. " + R", hl.dsp.exec_cmd("qs ipc call launcher apps"))
hl.bind(mainMod .. " + Space", hl.dsp.exec_cmd("qs ipc call notch toggle"))
-- если установлен awww
hl.bind(mainMod .. " + T", hl.dsp.exec_cmd("qs ipc call launcher walls"))Всё, что можно менять, лежит в одном файле: ~/.config/quickshell/shell.conf.
Сохранили — запущенный шелл подхватил, перезапускать не нужно.
look {
theme = auto # auto | dark | light
accent = auto # auto | #7aa2f7
rounding = soft # sharp | soft | round
font = Inter
}
notch { width = 172 height = 34 status_time = 1.7 }
panel { width = 500 animation_speed = 1.0 }
launcher { width = 640 rows = 7 hidden_apps = }
system {
terminal = kitty -e
wallpapers = Pictures/Wallpapers
keyboard_layouts = en, ru
}Это вся поверхность настройки — и так задумано. Это список решений, а не зеркало внутренностей: выбирается округлость, а не одиннадцать радиусов; одна скорость анимации, а не девять длительностей. Каждое значение проверяется и зажимается в разумные пределы, поэтому опечатка или отсутствующий файл оставляют шелл на значениях по умолчанию, а не ломают его.
Всё остальное — тональная лестница, выведенная из обоев, расписание морфинга чёлки,
кривые движения — дело самой программы и живёт в core/. Править это можно, но не
должно быть нужно.
Нотч:
| Действие | Результат |
|---|---|
| Курсор к центру верха | показать время |
| Клик по нотчу | открыть Command Center |
| Потянуть нотч вниз | раскрыть Command Center в своём темпе |
| Клик мимо | закрыть Command Center |
Лаунчеры:
| Клавиша | Действие |
|---|---|
| ↑ ↓ | перемещение выделения |
| ← → Tab | переключение между приложениями и обоями |
| Enter | запустить приложение или применить обои |
| Esc | закрыть лаунчер |
IPC
Всё, что доступно через горячие клавиши, можно вызвать и напрямую через IPC:
qs ipc call notch toggle
qs ipc call notch open
qs ipc call notch close
qs ipc call launcher apps
qs ipc call launcher walls
qs ipc call launcher closeМожно также отправить уведомление прямо в нотч из любого скрипта:
qs ipc call notch status notification "test" "notification"