Skip to content

Latest commit

 

History

History
217 lines (158 loc) · 11.4 KB

File metadata and controls

217 lines (158 loc) · 11.4 KB

English · Русский

video1.mp4

NotchShell

Минималистичный интерактивный системный интерфейс для 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-font

2. Клонирование

NotchShell устанавливается как конфигурация QuickShell:

git clone https://github.com/selvarn/NotchShell.git ~/.config/quickshell

3. Проверка запуска

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"