LINUX.ORG.RU

Niri + DankMaterialShell 1.5.3 (Saahriktu Edition)

 , ,


0

2

Вот уже треть месяца я пользуюсь собственной версией DankMaterialShell 1.5.3. Сейчас я расскажу что это такое и как у меня работает.

Итак, для начала расскажу чем версия 1.5.3 (Saahriktu Edition) отличается от ванильной 1.5.3:

  • Переписан модуль получения погодных данных. В ванильной версии там в качестве источника данных захардкожен api.open-meteo.com, который в конце сентября заблокировал РКН. В моей версии данные получаются с api.met.no.
  • Переписан виджет отображения раскладки клавиатуры. В ванильной версии он выводит эту информацию текстом. В моей версии - рисует флаг страны.
  • Кастомизирован виджет отображения времени и даты. Как видно по скриншоту, на нём дата отобразилась как «пт 09 окт.», в то время как ванильная версия виджета отобразила бы просто «пт 9».

    Изменения здесь довольно просты и сводятся к замене строки

    return systemClock?.date?.toLocaleDateString(I18n.locale(), "ddd d");
    
    на
    return systemClock?.date?.toLocaleDateString(I18n.locale(), "ddd dd MMM");
    

Теперь ближе к сути. Помимо панели у меня задействован следующий функционал DankMaterialShell:

  • При неактивности 10 минут гасится монитор.
  • Управление историей буфера обмена.
  • Отображение уведомлений с их историей.
  • Обои.
  • Блокнот.
  • Удобный системный монитор, откуда в т.ч. можно по-быстрому завершать процессы.
  • Дополнительный лаунчер. Основной у меня - Nirvana Launcher.

Добавил пару хоткеев в конфиг Niri:

    Mod+N { spawn-sh "dms ipc notepad open"; }
    Alt+Ctrl+Backspace { spawn-sh "dms ipc processlist open"; }
Блокнот, кстати, убирается по нажатию Esc.

Теперь про задействованные виджеты на панели.

Слева вы можете видеть кнопку лаунчера со значком в виде логотипа ALT Linux. Правее от него индикатор текущей раскладки в виде флага.

По центру расположены 3 виджета: 1) время и дата; 2) медиа-виджет; 3) виджет погоды.

Медиа-виджет скрывается когда нет ни одного активного плейера реализующего интерфейс MPRIS (Media Player Remote Interfacing Specification). Когда есть - он отображает информацию о воспроизводимой песне и отображает кнопки, которые позволяют поставить на паузу или переключиться на следующую или предыдущую песню.

Медиа-виджет, кстати, прекрасно работает в т.ч. и с Яндекс Музыкой в браузере.

Справа на панели расположены кнопки доступа к истории буфера обмена, уведомлениям, настройки громкости и виджету настроек сети, яркости, микрофона,... который также содержит кнопки, которые открывают доступ к меню настроек (она есть и в другом виджете) и к меню завершения сеанса.

Вся эта красота, напоминаю, работает на Quickshell. Да, такая реализация более требовательна к ресурсам, но зато её легче кастомизировать чем, например, Нокталию v5 на C++.

★★★★★

Проверено: cetjs2 ()
Последнее исправление: cetjs2 (всего исправлений: 2)

Вся эта красота, напоминаю, работает на Quickshell. Да, такая реализация более требовательна к ресурсам, но зато её легче кастомизировать чем, например, Нокталию v5 на C++.

Вообще архитектурно QtQuick мне кажется недооценённой штукой. Я не супер-много делал GUI, но библиотек 6 довольно разных на разных языках использовал, и понравился только QtQuick. На счёт производительности - стартует оно долго. А вот потом, если нету биндигов к тому что беспрерывно меняется - прекрасно работает. Архитектура QtQuick прям таки препятствует неудачным паттернам типра перевычисления чего-то на каждом кадре. Потому что это концепция «вот есть состояние GUI и пока не прилетит событие что какое-то свойство поменялось - этот UI будет оптимально рендериться движком, без вызова каких-либо колбеков которые могут тормозить». У меня приложение на нём нормально работало на Raspbery Pi3 800x600@60FPS. Всяких динамических коллекций не было, всё было известно на старте.

Ну и самый главный плюс - коде, к которому делаются бинджинги - пишется вообще без какой-либо привязки к GUI. Там просто создание объектов предметной области и объявление их свойств, как будто пишешь чисто бэкенд. Никаких упоминаний ни виджетов ни QtQuick

GPFault ★★★★
()
Последнее исправление: GPFault (всего исправлений: 1)

вверх 30m

Смотри не навернись оттуда теперь, это как десятый этаж.

CrX ★★★★★
()

DankMaterialShell

DunkleMaterieShell

x22 ★★★
()

DankMaterialShell

Забавная штука. Погуглил, понравилось. Вроде как полноценный проект. Надо щупать.

Gonzo ★★★★★
()
Ответ на: комментарий от bernd

Заголовков окон нет, переключение между окнами по хоткеям.

saahriktu ★★★★★
() автор топика

Кастомизирован виджет отображения времени и даты. Как видно по скриншоту, на нём дата отобразилась как «пт 09 окт.», в то время как ванильная версия виджета отобразила бы просто «пт 9».

Какой кошмар. То есть оно вообще никак не кастомизировалось, кроме как патчами?

shdown ★★
()

Вся эта красота, напоминаю, работает на Quickshell. Да, такая реализация более требовательна к ресурсам, но зато её легче кастомизировать чем, например, Нокталию

Теорему Эскобара уже вспоминали?.. Ещё бы с гномом сравнил, чесное слово :)

CrX ★★★★★
()
Ответ на: комментарий от saahriktu

Ну тогда к чёрту такой софт. Даже dwm позволяет стороннему скрипту контролировать статусбар. А эти не доросли даже до него.

shdown ★★
()
Ответ на: комментарий от CrX

GNOME - это целое DE. И в нём многие фичи реализуются через расширения, которые могут ломаться со временем.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от FlyingBuzz

Ну, что поделать, в Нокталии пока что тоже так, только она теперь на C++, что усложняет создание патчей. А альтернатив DMS и Нокталии на горизонте пока что особо не наблюдается. Разве что собирать свой собственный пазл из отдельных элементов.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

То же, что и мешает пользоваться подобным софтом — здравый смысл.

Виджеты должны выглядеть вот так: https://github.com/shdown/luastatus/blob/master/examples/i3/weather-rus.lua

Заметьте: если вдруг конкретно в этом виджете что-то сломается, оно не затронет ни WM, ни статусбар, ни luastatus, ни даже соседние виждеты; статусбар просто покажет (Error) в этом месте.

Ну или поставляться вместе с, чтобы программировать вообще ничего не нужно было бы.

Покажите свои виджеты.

shdown ★★
()
Последнее исправление: shdown (всего исправлений: 1)
Ответ на: комментарий от shdown

Виджеты должны выглядеть вот так: https://github.com/shdown/luastatus/blob/master/examples/i3/weather-rus.lua

По ссылке, внезапно, захардкожен источник погодных данных.

И погодный виджет DankMaterialShell при отсутствии доступа к прописанному источнику погодных данных также не ломается, просто показывает самые последние данные. Если источник погодных данных был заблокирован РКН надолго, то он так и будет показывать последние (давно уже не актуальные) данные месяцами.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)

Не, все понимают, что Wayland, все дела. Но чем это лучше, чем голые X-ы 25-летней давности и какой-нибудь минималистичный evilwm?

x22 ★★★
()
Ответ на: комментарий от x22

Скоростью на HiDPI и совместимостью с современными технологиями. Тот же GTK 5 уже не за горами. Там дропнут поддержку иксов, а Chromium переведут на его рельсы.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Тот же GTK 5 уже не за горами. Там дропнут поддержку иксов, а Chromium переведут на его рельсы.

Ну да, бежим за вебом.

x22 ★★★
()
Ответ на: комментарий от saahriktu

По ссылке, внезапно, захардкожен источник погодных данных.

Вы не поняли, эти файлы находятся у вас в ~/.config/luastatus или куда вы их положили. Вы можете поменять источник данных (хотя при этом, скорее всего, придётся менять и обработку). Там нет сишного кода, который бы парсил погоду — это плагин web. Виджеты пишутся на Lua.

А вам нужно будет патчить то ли /etc, то ли код на Rust.

РКН

Добавьте proxy = 'socks5h://127.0.0.1:9050' к параметрам запроса, делов-то.

shdown ★★
()
Последнее исправление: shdown (всего исправлений: 3)
Ответ на: комментарий от shdown

DankMaterialShell поддерживает расширения, в т.ч. пользовательские виджеты.

Впрочем, я не вижу в чём проблемы с тем, чтобы и пропатчить файлы в /etc . Разве не для того, чтобы патчить, нам были нужны исходники все эти 43 года?

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от kirill_rrr

пустое оформление

Лично мне больше не надо.

saahriktu ★★★★★
() автор топика

В ванильной версии там в качестве источника данных захардкожен api.open-meteo.com, который в конце сентября заблокировал РКН. В моей версии данные получаются с api.met.no

А мог бы параметризовать, ну.

slowpony ★★★★★
()
Ответ на: комментарий от slowpony

Там не только в URL'е дело. Разные источники погодных данных отдают их в разных форматах.

saahriktu ★★★★★
() автор топика

А labwc в процессе исследований смотрел?

Если да то хотелось бы послушать что не устроило.

Я сам пока на wayfire сижу но хочется и более работоориентированный вариант иметь.

Slackware_user ★★★★★
()
Ответ на: комментарий от yars068

В dwm хотя бы нельзя повесить наглухо wm, просто не читая его выхлоп на стороне статусбара. А вот в dwl смогли:

Failing to read this information will cause dwl to block

А всё потому, что в иксах статусбар, если ему это нужно, может сам получить нужную информацию об окнах, воркспейсах или что там ещё. А в Wayland вот такие недоделки и недоделкины.

shdown ★★
()
Последнее исправление: shdown (всего исправлений: 1)
Ответ на: комментарий от Slackware_user

А labwc в процессе исследований смотрел?

Нет.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Это не «ошибки», это принципиальные ограничения в архитектуре Wayland, которые заставили авторов dwl сделать вот это.

Убожество, конечно.

shdown ★★
()
Ответ на: комментарий от shdown

В примере выше архитектура Wayland вообще ни при чём, поскольку не в dwl таких проблем в Wayland'е нет. И его разработчики могли хотя бы посмотреть как такие задачи решают другие программисты.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от shdown

По ссылке Вы не понимаете что такое Wayland-композитор.

Wayland-композитор выполняет в т.ч. и ту работу, которую выполняют иксы. Почему же он не должен ей заниматься? Кто как не он? Поэтому Wayland-композитор и заведует теперь мониторами, периферией и раскладками в т.ч. И спрашивать эту информацию надо у него. И проблем не будет.

$ niri msg keyboard-layouts | grep '^ \*' | awk '{print $3}'
Russian
$ niri msg keyboard-layouts | grep '^ \*' | awk '{print $3}'
English
$

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Почему же он не должен ей заниматься?

По ссылке написано, почему. Вот прям в сообщении по ссылке, которое #18317765. Не в топике. В сообщении. Вы его прочитали? До вас не доходит?

shdown ★★
()
Последнее исправление: shdown (всего исправлений: 1)
Ответ на: комментарий от shdown

В той теме Вам уже пояснили, что Вы неправильно приравниваете Wayland-композиторы к WM'ам.

Почему я написал выше, что «Wayland-композитор выполняет в т.ч. и ту работу, которую выполняют иксы.»?

Потому, что альтернативой иксам в смысле сервера здесь является не Wayland (который протокол), а сами Wayland-композиторы.

Другими словами, условно можно их назвать так:

Sway - Yorg
Dwl - Zorg
Hyprland - Aorg
Labwc - Borg
Niri - Corg
...
и т.д.
Это принципиально разные реализации разных альтернатив. Кто сказал что они обязаны быть во всём совместимы между собой? Нет таких обязательств.

saahriktu ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.