LINUX.ORG.RU
ФорумTalks

Почему всё так всрато?

 


0

5

Навеяно программированием.

Вот сижу, никого не трогаю, программирую. Я не то что бы нубас в системном программировании, в прошлом под ДОС даже многозадачные оболочки писал на пассале, но и не гуру, тем более не гуру красноглазия.

Но все таки некоторые «решения» меня откровенно удивляют.

Вот взять например «системный трей».

Первая реализация этой штуки была реализована в 2002 году, уже после выхода XP, во время скажем так «претензии Линукса на десктоп». Реализаторы этой срани почему-то посчитали, что для вывода иконки приложения в определенную зону, и вызова контекстного меню по нажатию на эту иконку - нужно создавать целую сороконожку на костылях и сажать ее на велосипед с квадратными колесами. По логике реализаторов, приложение которое хочет в трей, обязано общаться с этим треем через протокол в протоколе в Иксах, при этом этот трей прежде должен был правильно инициализироваться и создать свою область (именно поэтому мы иногда могли видеть «another instance of systray already running», когда запускали вторую копию панели или системтрейного плагина). Если его не было - то приложение не могло быть затреено, соответственно при запуске трея, трей был обязан послать сообщение через Иксы всем приложениям, что вот он, я, запущен, треемся. Регистрация «действия», таких как активация или контекстное меню - так вообще сплошная головная боль. В итоге самая минималистичная программа, у которой три задачи: а) вывести иконки, б) обрабатывать их изменения, в) кидать вызов программе для активации ее, или контекстного меню - занимала почти тысячу строчек.

Шло время, и индеец Зоркий Глаз через ~15 лет увидел, что как-то это все не тру, и решил с подачи Каноникла и Кедов переделать этот велосипед, чтоб на нем было приятнее ездить.

И не нашли ничего лучше, чем срать через d-bus. Типа приложение, которое хочет в трей - создает сервис в d-bus'е, StatusNotifierItem, вместе с фичами которые оно хочет, а другие приложения обязаны это читать, опять же через этот d-bus, и если хотят что-то с приложением сделать - должны через d-bus послать сигнал, который приложение застолбило.

Какой же это бред.

С 1985 существует ProcFS. Она следовала юниксовому принципу «все есть файл». Она предназначена для взаимодействия процесса с ядром, ядра с процессом, и процесса с процессом.

Ну вот что мешало приложению создать в своем пространстве запись «/proc/PID/i_want_to_be_trayed», «/proc/PID/my_tray_icon», и «/proc/PID/tray_menu», куда можно сделать «echo activate > /proc/PID/tray_menu» или echo «contextmenu» > /proc/PID/tray_menu ? Соответственно приложение которое хочет в трей - создает у себя в пространстве запись, а приложение которое хочет прочитать треевые приложения - просто пробегается в поиске «i_want_to_be_trayed»? И все! Все чтения изменений через простой inotify.

В порыве экспериментизма, я сделал вменяемую, простую, работающую реализацию такого трея за 4 часа. Эта реализация работает на PHP, C, Python, Pascal, Bash. Она не требует знаний третьей технологии (иксов, dbus, etc). В клиентском приложении она реализуется 10 строками на PHP, 25 строками на С, из которых 10 строк - строки и память.

О работе с иксами, d-bus, и wayland я расскажу в следующей серии.

Ну вот почему пингвинятники вечно идут каким-то своим, оверинжинирнутым путем? Ведь это снижает порог входа тех кто знает ЧТО писать, но не знает КАК.

★★★★★

Ответ на: комментарий от troizet

Да не за что, я ничего не сделал, чтобы это исправить. Тут дело в том, что многие программы есть, но с багами либо без нужных фич. А исправить чужой код намного сложнее, чем написать свой. Вот и имеем полный гитхаб фронтендов для yt-dlp, а нормальных из них только два. Но с приложениями все еще не так плохо. К тому же их на худой конец можно юзать виндовые под вайном. Все плохо с DE. Они все непредсказуемо работают. И получается, что в «Linux можно настроить все» - это долбаный миф. Не запуская эмулятор терминала тут нельзя настроить ничего.

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

Я уже тут писал: Почему всё так всрато?
Что мне главное понравилось, так это простота и документаций. Документация тут значит то, что даже на каждый драйвер есть man.
Но тут нужно понимать, что простота не идет бесплатно, если оно проще то оно медленней и менее функционально.

Вот реальный пример про что я. Залез в код acpi драйвера для Linux и OpenBSD — 12K строк против 1K. Но и функционал соответствующий. :)
Наверное, OpenBSD для тех кому интересно с ней разбираться. Если просто поставить и пользоваться как обычным десктопом (без залезания в ОС по-локти) то не получится.

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

Видеоредактор, в котором есть bilateral filter

Он тебе действительно нужен ? Или нужен повод рассказать как всё плохо ?

В Cinelerra-GG есть вот такой ffmpeg-filters.html#bilateral. В списке эффектов числится как F_bilateral

В Kdenlive есть (avfilter.bilateral). Побогаче (есть альфа-канал, Y,U,V) в настройках.

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

В Cinelerra-GG есть вот такой ffmpeg-filters.html#bilateral.

Если это поверх FFmpeg, то это не будет работать.

В Kdenlive есть (avfilter.bilateral). Побогаче (есть альфа-канал, Y,U,V) в настройках.

Оказывается, баян - было а я не знал. Ок, минус один пункт.

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

Если это поверх FFmpeg, то это не будет работать.

Это FFmpeg Video Plugins, интегрированные в программу. Открой и попробуй сам. Еще есть там аудио плагины. Почитай

igor_ubuntu
()
Последнее исправление: igor_ubuntu (всего исправлений: 1)
Ответ на: комментарий от damix9
[ntfs@ntfs-a320mh ~]$ time dbus-send --session --print-reply --type=method_call --dest=:1.10 / org.freedesktop.DBus.Introspectable.Introspect
Error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

real	0m25,027s
user	0m0,003s
sys	0m0,000s
[ntfs@ntfs-a320mh ~]$ 
windows10 ★★★★★
() автор топика
Ответ на: комментарий от windows10

В Windows ИМХО удобно спроектирована очередь сообщений.

https://learn.microsoft.com/ru-ru/windows/win32/winmsg/messages-and-message-q... Сообщения и очереди сообщений

И они очень элегантно обеспечили передачу данных о событии.

https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/ns-winuser-msg Структура MSG (winuser.h)

typedef struct tagMSG {
  HWND   hwnd;
  UINT   message;
  WPARAM wParam;     // Дополнительные сведения о сообщении. Точное значение зависит от значения элемента сообщения .
  LPARAM lParam;     // Дополнительные сведения о сообщении. Точное значение зависит от значения элемента сообщения .
  DWORD  time;
  POINT  pt;
  DWORD  lPrivate;
} MSG, *PMSG, *NPMSG, *LPMSG;

wParam и lParam содержат адреса структур, содержащих данные о сообщении (это могут быть конечно разные структуры).

Фича в том, что всё просто и универсально.

Архитектуру dbus не анализировал.
Возможно что её можно и улучшить.

В целом всё, связанное с сообщениями (и не только. Даже все подсистемы ОС) можно представить в виде дерева.
Фича в том, что дерево более универсально (да и фунциональней), чем подход «всё файл».

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

В icewm и 20 лет назад можно было завернуть любое приложение в трей. Т.е. программировать в самом приложении ничего не надо.

Какие выводы сделаешь?

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

Я вообще не очень понимаю, зачем люди тратят время на написание своих велосипедов. Хобби конечно всякие могут быть, но ведь стольких прикладных программ еще нет, а человекочасы расходуются впустую.

За всех не буду говорить, но у меня такое желание может возникнуть, когда я уже написал всё прикладное, что мне нужно. Писать то, что не нужно ни самому ни знакомым, а уж тем более для какой-то там яндекс-музыки и прочего масдая, уж извините, ничуть не более полезно, и уж точно гораздо менее интересно.

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

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

Есть такое. Разновидность УМВР.

Возможно просто не нашлось человека которому ямузыка нужна и умение есть и времени не жалко, как не нашлось программиста, способного написать телепрограмму для линупс и смотрящего телевидение. Вон snfesh сделал Плагин Яндекс.Музыки для Rhythmbox но там только заранее созданный плейлист можно слушать, а мой юзкейс на онлайн сервисах - найти исполнителя, которого раньше не слышал и ознакомиться двумя-трямя песнями.

Только вот приложения нужны каждому свои, а системным софтом мы все одним пользуемся и видим его баги и недоделанность.

damix9 ★★★
()

Так а в чём проблема? Есть d-bus, функциональность которого несколько шире, чем решаемая вами задача. Отсюда и порог входа повыше. Сложно != плохо. Во всяком случае, этого:

Какой же это бред.

Не доказано.

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

Все смотрю в трекере на этот топик, и думаю - топик, конечно, идиотский, но вот заголовок гениален и тянет на название нового раздела, под который можно было бы занести многое.

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

Так там и есть то, что я описал. Да, можно сделать ALSA поверх pipewire, которое поверх JACK, который поверх PulseAudio, которое поверх ALSA, но зачем? Самая распространённая схема как раз та, что описана мной.

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

Чистая альса имеет в себе фундаментальную проблему, которую не исправить плагинами — она не поддерживает смену настроек на лету, в любом случае необходимо перезапускать клиент. Чтобы решить её, придётся её целиком с нуля переделывать скорее всего. Ну или навернуть абстракций, что и делает pipewire/pulseaudio, заодно предоставляя дополнительные возможности управления звуком.

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

Альтернативно у тебя мозг работает.

Вот уже почти 30 лет концепция рабочего стола работает как «системные меню при правом клике на панели задач» - закрыть, свернуть, развернуть, и тд; и «меню приложения при правом клике на иконку в трее» - специфичные опции, которые каждое приложение устанавливает для себя само.

Главная особенность именно в разделении менюшек (ну и в обновляемой визуализации), а не в переносе с панели задач в трей. Если приложение не предназначено для трея - ему там делать нечего.

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

Так а в чём проблема? Есть d-bus, функциональность которого несколько шире, чем решаемая вами задача. Отсюда и порог входа повыше. Сложно != плохо. Во всяком случае, этого:

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

И я уже писал выше почему. Вместо того чтобы предоставить древовидную структуру - сделали хрен пойми что, хрен пойми как, и вполне себе элементарные вопросы не имеют элементарного решения.

Тот же самый способ получения всех методов интерфейса - реализуется хрен пойми как. Хотя практически во всех аналогичных структурах команда аналогичная list выполненная на любом уровне дерева - показывает список дочерних доступных веток, и все. Коротко и понятно.

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

Чистая альса имеет в себе фундаментальную проблему, которую не исправить плагинами — она не поддерживает смену настроек на лету, в любом случае необходимо перезапускать клиент. Чтобы решить её, придётся её целиком с нуля переделывать скорее всего.

О том и речь. Надо было с нуля переписать. Вместо OSS написали же с нуля алсу - и тут надо было.

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

Это твое личное мнение, не более.

Мне там контекстные меню не в х@р не сдались. А вот убрать с панели задач большой прямоугольник/иконку тех приложений которые работают в «фоне» (в долгую), а используются редко – это как раз задача трея.

Так что свернуть что-то в трей принудительно – прекрасная идея.

Даже в голову не приходит какая-нибудь опция контекстного меню приложения из трея, которую стоит использовать. Здесь можешь подсказать, чтобы я понял необходимость контекстного меню в затреенных приложениях

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

О том и речь. Надо было с нуля переписать. Вместо OSS написали же с нуля алсу - и тут надо было.

Надо было изначально писать правильно. Это конец 90хх годов, уже вроде как было понятно что смена настроек - необходимая фича.

Но причины видимо всё те же, о которых я писал выше: если красноглазику не трудно выполнить killall esd или как там оно делалось - значит УМВР и можно в продакшон.

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

Это мнение миллионов (а может и миллиардов) людей.

Даже в голову не приходит какая-нибудь опция контекстного меню приложения из трея, которую стоит использовать. Здесь можешь подсказать, чтобы я понял необходимость контекстного меню в затреенных приложениях

Ты сейчас шутишь я надеюсь ?

Окей, слева направо:

1. NM. Контекстное меню нужно для отключения\подключения к вафле, а так же для отключения\подключения сетевого соединения. Более того, опции сделаны удобно: по нажатию левой кнопки мыши открывается текущее соединение, по правой - опции в целом подключений и настроек;

2. Уведомления. Как еще их не выводить если по контекстному меню (вывод списка - это тоже контекстное меню, разве не знал?) ? И как еще их не «закрывать» если не по нему же?

3. Торрент-трекер. У окна вообще ЧЕТЫРЕ логичных состояния - распахнуто, когда ты непосредственно с ним работаешь; свернуто, когда оно является отображаемой задачей, отображается в панели, на него можно переключиться по alt+tab, например если отвлекся на мессенджер; свернуто в трей, когда оно работает, но не является окном; закрыто. Интернет стал подтормаживать - ПКМ->Pause all torrents. А ты что предлагаешь? Кликнуть по иконке->распахнуть окно->зайти в File->выбрать Pause all torrents->свернуть окно? Ну если ты пишешь софт по схожему принципу, то твой софт говно (с);

4. Звуковой микшер. Помимо тривиальных вкл\выкл\тише\громче, из контекстного меню мы выбираем, вкуда выводить этот звук;

5. Телеграм. Согласен, меню куцое, но «Disable notifications» - это весьма нужная фича.

И этой я только за комп сел :)

Ты же предлагаешь что взамен? Чтобы на каждый пердёж открывать окно программы, делать дело и его сворачивать? Или может вместе с контекстным меню натыкать еще и WM-ое?

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

Я тоже когда-то давно, лет десять назад, подумал о том, что ты пишешь. И реализовал такую же штуку. Но потом, когда пошёл дальше выяснилось, что помимо собственно передачи сигналов/параметров к процессам, нужно ещё разграничение прав пользователей, областей видимости, контроль групп и доступов. Это вся та муть, которой занимается в связке с dbus всякие абстракции типа policikit/consolekit и прочие внутренние регуляторы. Туда же udev с его правилами. Туда же контроль сетевых интерфейсови устройств ввода-вывода. Туда же ещё много чего. На многопользовательской системе без этого никак. А обычного прямого доступа к файлам в /proc/ для этого недостаточно. Поэтому, если ты хочешь настроить себе свой собственный локалхост лично под себя, пиши хоть на пыхе, хоть на брейнфаке. А когда нужно сделать что-то универсальное для работы двух и более человек, увы, приходится использовать костыли типа dbus, как бы прискорбно это не звучало. Я одно время использовал fluxbox с набором своих костылей без всей этой обвязки. На каждое действие у меня был свой скрипт, на каждый чих свои модификации. А потом мне надоело и захотелось не пилить под каждое обновление новый набор велосипедов, а просто брать и пользоваться системой. А это значит KDE, dbus, *kit, pipewire и т.д.

Так что дело не в упоротости и не в усложнении. Дело как раз наоборот - в простоте использования в ущерб простоты разработки.

shell-script ★★★★★
()
Ответ на: комментарий от windows10

Ну уж точно не миллиардов. Зачем нужен трей, если есть иконка приложения на панели? Плюс эта всратая логика, когда нажал крестик и приложение не закрылось, а свернулось. Принудительно отключаю в приложениях все эти треи.

В гноме большая часть твоих пунктов сделаны гораздо удобнее и встроены в панель.

Разве что с торрент трекером могу понять, если кто-то активно сидирует и ему нужно чтобы клиент запускался на старте, всегда был запущен и ему жалко иконки на панели. Может тогда в systemd внести протокол трей иконок - для приложений которые работают в фоне, но своего окна не имеют.

А что за уведомления во втором пункте? Уведомления можно рисовать новым окном или пользоваться системными.

masa
()
Ответ на: комментарий от windows10

nm, звук – это приложения на панели, они не в трее. Остальные примеры, ты и сам видел, притянуты за уши.

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

nm, звук – это приложения на панели, они не в трее.

1. Они в трее, поскольку используют xembed, поскольку я их вижу;

2. Пофигу где они именно, трей - это не программа, а способ отображения.

Остальные примеры, ты и сам видел, притянуты за уши.

Таких примеров десятки, у разных людей. И у всех примеров ото всех людей, есть одно общее - трей.

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

Ну уж точно не миллиардов. Зачем нужен трей, если есть иконка приложения на панели?

Я уже написал зачем, реально надоело одно и то же повторять.

Трей - это не программа, это способ отображения, хоть в панели, хоть раком, хоть боком. Суть - программа не имеет окна + имеет иконку + не светится в WM + отвечает на сигналы нажатия определенным образом.

В гноме большая часть твоих пунктов сделаны гораздо удобнее и встроены в панель.

Ага.

А что за уведомления во втором пункте? Уведомления можно рисовать новым окном или пользоваться системными.

Обычные уведомления. О приходе письма, о новом сообщении, о исходе свободного места, об добавлении нового устройства.

Рисовать уведомления ты можешь как угодно, но прежде тебе нужно знать что они есть. Для этого в трее есть иконка, не поверишь, так и называется, «Уведомления». Нажимаешь - и всплывает список этих уведомлений.

Надеюсь о нужности уведомлений ты не будешь спорить? Или ...

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

обычно оно всегда так начинается.

что мол вот сейчас перепишу и все будет просто.

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

т.е. проблема вовсе не в интерфейсе.

проблема в том, что твоя модель взаимодействия упрощена до невозможности. как только начнешь накручивать возможности ей сразу же придет конец.

т.е. ты изобретаешь продукт уровня яп basic, с одной стороны вроде бы что-то простое и понятное всем, на этом все его плюсы и заканчиваются. добиться чего-то существенного от него не выйдет. проще выкинуть.

n_play
()
Ответ на: комментарий от damix9

Редактор схем баз данных, в котором можно скопировать столбцы из одной таблицы в другую

Есть Visual Paradigm. Проприетарный, но в линуксе работает официально. Да, хотелось бы свободный аналог.

Сторонний telegram-клиент

Нетехническая проблема. Как я понимаю, у телеграма есть ограничения на сторонние клиенты.

Программа для скачивания с яндекс музыки по типу yt-dlp
Плагин для QMMP для яндекс музыки

Нетехническая проблема. Как только это будет работать с полпинка, яндекс прикроет какую-нибудь лазейку. Далеко не все программисты опенсорса готовы заниматься сизифовым трудом.

Про остальное не в курсе.

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

Как я понимаю, у телеграма есть ограничения на сторонние клиенты.

Нет. У них даже либа есть для их создания.

Как только это будет работать с полпинка, яндекс прикроет какую-нибудь лазейку.

Ну либа для этого же есть на питоне, и не прикрыл до сих пор.

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

Программа для скачивания с яндекс музыки по типу yt-dlp

yt-dlp умеет скачивать с яндекс.музыки.

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

т.е. ты изобретаешь продукт уровня яп basic, с одной стороны вроде бы что-то простое и понятное всем, на этом все его плюсы и заканчиваются. добиться чего-то существенного от него не выйдет. проще выкинуть.

ТС может разработать простой и эффективный интерфейс для однопользовательских программ.

Возможен и другой подход.

Пусть например API dbus сложен.
В этом случае можно попробовать разработать высокоуровневый API для API dbus, который упростит использование dbus.

...

Путей разработки много.
В целом должно быть так «Где просто, там ангелов со ста. Где мудрено, там ни одного».

Sorry.

Мне так «ближе» использование деревьев для представлении иерархии.
Подход «всё файл» ИМХО - «не очень».

Forum0888
()
Ответ на: комментарий от damix9

А Visual Paradigm всё же попробуй, он няшный. Там кроме копипасты, есть хоткеи и многое другое. И куча разных нотаций, и не только ER, но и UML.

Можно качнуть триал, и если понравится, чуть ли не за три бакса в месяц купить подписку. Сразу видно, для себя люди писали. Жаль, не свободный, но что поделать — хотят кушать.

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

Только там вроде 99 баксов

Subscription

Modeler US$6/ mo

Мне более дорогие редакции не были нужны, тем более результат работы оно сохраняет в прозрачный XML, причём двух видов,я выбрал Simple.

А он быстрый? А память как жрет?

Вот с памятью может оказаться засада, ибо Java. На 8 гигах работало нормально, меньше не пробовал. С быстродействием аналогично – немножко медлителен на старте, но в процессе работы вполне шустр.

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

API dbus не сложен, а прост, но туп, и не столько сам API сколько его организация.

Древовидных структур много в нашем мире. Вот например dconf. Смогли же сделать нормальный человекочитаемый логичный интерфейс. И файловая система о которой я говорил - тоже пример организации нормальной древовидной структуры, где можно в любом месте сделать list и получить дочерние элементы, и где (как и в dconf) насрать какого типа значение в файле - int, string, array, bool и прочие страшные слова. Надо прочитать - get, надо записать - set.

Как можно вообще отобразить содержимое которого нет? Это я за dbus. Окей сделал там ListNames, получил список сервисов. Ладно, можно простить листинг через жопу какой-то introspect. Но ждешь 25 секунд (по дефолту), чтобы система тебя послала нафиг со словами «сервис doesn't exist». Как? Ведь ты только что мне его сам отобразил.

Как я говорил, древовидности эта срань не предусматривает в принципе. А вот обилие ненужной функциональщины (которая с одной стороны обязательно, см методы Get, GetAll, Introspect, а с другой стороны оказывается может быть недоступна, и ты этого не узнаешь пока не попытаешься прочитать) - да.

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

Ну вот кстати по поводу системного трея.

Выложил описание и референсный код. Пока только на PHP, но переведу на С и на Пихон для сравнения.

Все просто, понятно, быстро, легко, не требует дополнительных библиотек, работает с иксами, вяленным, фреймбуфером, поскольку вообще не привязывается к графике. Напугали меня, блина.

Работает на многопользовательской системе, в том числе параллельно, без доступа других юзеров сюда даже в чтение.

Да, наверное есть баги, наверное есть чем дополнить, как и должно быть на заре технологии. А заодно пока писал - понял, чего не хватает в других красноглазых спецификациях. РЕФЕРЕНСА. Просто сухого примера, как оно должно работать, чтобы человек компильнул, запустил, и посмотрел.

В общем, https://github.com/ntfs1984/supreme-parts/tree/main/systray - краткая спека и два работающих примера на Пыхе. Запустить пока не получится - подвязано к моей локальной либе, но посмотреть на реализацию и покритиковать - милости прошу =)

Пожалуй буду использовать для своих системных индикаторов разной степени извращенности, или напишу транслятор с xembed\dbus в нормальное человеческое представление

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

В треде меня больше всего забавляют покусанные гномосеками со своим посылом «у тебя панель/док есть, накуда тебе трей ещё». В их парадигме, оно, конечно понятно. Но вот сижу я на i3 — и нету у меня панели, а вот «трей» как раз таки есть — и индикацию состояния мессенджеров, например, мне удобнее видеть именно в нём, равно как и pasystray.

sn4il
()

Ой, я тут в программирование для Qt случайно влез.

Посыл топика - x2. Нужно больше QString богу QString.

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

Мне так-то Dia нравится, программа вполне продуманная и стабильная. Недостающие функции - копипаста и tab при заполнении свойств таблицы/класса (кстати, в Visual Paradigm такое есть?), и единственный баг - не работает Правка -> Удалить, только кнопкой delete.

Еще я знаю, что копипаста свойств таблиц среди проприетарщины есть в ERwin, который silver под вайном.

Еще хотел узнать про генерацию SQL, оказывается можно, это очень круто. Только непонятно, он какой диалект SQL генерирует? Какой-то стандартный или тот, для которого JDBC-драйвер выбран?

damix9 ★★★
()

Или вот еще нашел.

Glib\Gobject.

Создали кнопку;

Подключили к кнопке сигнал;

Отключили сигнал;

Удалили сигнал (пофигу);

Удалили кнопку.

Память которую занимал хендлер события - не освободилась. Ну вот кааак?!

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

трей нужен и удобен: настройки wifi, мессенджеры, громкость, запуск таких задачь без запуски основного окна, и это окно в одном экземпляре

s-warus ★★★
()

Реализаторы этой срани почему-то посчитали, что для

Надо сказать, что все эти «почему-то посчитали» на первый и второй взгляд выглядят 100% логичными. Как и решение сделать трей единым и единственным для всего окружения.

И не нашли ничего лучше, чем срать через d-bus

Те же яйца, вид сбоку. Возможно новое решение менее эффективно технически, но определённо более универсально в разрезе перспективы вайланда на горизонте.

Ну вот что мешало приложению создать в своем пространстве запись «/proc/PID/i_want_to_be_trayed»

И снова мы видем всё то же самое. Только реализация возможно технически и эффективна, но за трей явно должно отвечать не ядро, а слой-два повыше.

я сделал вменяемую, простую, работающую реализацию такого трея за 4 часа.

Как говоорится, флаг вам в руки. Если это так просто и универсально, как вы говорите, через 5 лет все на неё пересядут. Но вопрос что вы не учли на самом деле?

kirill_rrr ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)