LINUX.ORG.RU
ФорумTalks

Вяленый Гном. Как написать свою переключалку?

 ,


0

1

Хочу написать свою переключалку задач. Таскбар. Гномовский задолбал нереально

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

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

Именно под Вяленым, а не под иксами. Иксы-то чудесная штука и там всё понятно, не то что в Вяленом.

Если нет, на какой код и приёмы стоит взглянуть?

Когда-то года три назад я обращался в IRC Гнома, мне посоветовали сделать следующую схему: с помощью GObject Introspection выковырить нужные фичи гнома, потом пробросить через DBus и заэкспозить как расширение гнумощели. Хорошая ли это идея для 2021 года? Кто может подсказать, в какое место исходников смотреть? Может, какое-то расширение уже примерно так и делает и можно научиться, читая его исходники?

★★★★☆

А может таки перейти на что то другое? Как вспомню, первым wm с которым я ставил линукс был 3 гном, я выдержал где то 20 минут. Потом, когда вышел 4 поставил на потыкать, снес через 10.

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

Pups
()
Ответ на: комментарий от Im_not_a_robot
const Gio = imports.gi.Gio;
let regularAppIDs = Gio.AppInfo.get_all().filter... // => appObj
...
const app = appObj.app;
...
const Shell = imports.gi.Shell;
const appRef = Shell.WindowTracker.get_default().get_window_app(app);
...
appName = appRef.get_name()

И если покопаться у них на сайте, есть API типа size-change у WM

Интересно.

Надо будет попробовать.

Хотя меня очень беспокоит что это JS API. То есть, это не настоящее нативное API, а только та обёртка, которую нам наружу показали.

Хотелось бы пример того, как выколупывать низкоуровневые функции и делать такие обёртки самому.

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

Похожэ нужно читать вики с начала и до конца, потом скачивать исходники гномощели и пытаться найти реализацию Shell.WM чтобы добавить туда новый метод…

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

Перестать молоть языком зря и начать писать. Так что название можно пока не выбирать.

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

То есть, это не настоящее нативное API, а только та обёртка, которую нам наружу показали.

Неверно. Это единственное api для этой задачи которое вообще существует. И работает оно только потому что расширения работают в одном процессе с собственно оболочкой и WM. Никакого внешнего api в GNOME для этого не существует.

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

Никакого внешнего api в GNOME для этого не существует.

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

может быть, получится выколупать их даже без патчей, через gobject introspection внешним образом?

чтобы «отменить» изоляцию надо всего лишь выставить наружу (хотя бы даже в JS API) все функции управления Window Manager-ом

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 2)
Ответ на: комментарий от eternal_sorrow

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

типа вот такого, только для своего расширения:

#!/bin/bash

status=`gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'Main.overview.visible'`

if [ "$status" == "(true, 'false')" ]; then

dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.shellDBusService.ShowApplications()'
else
dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview.hide()'
fi

(Если кому интересно, эта штука показывает местное «меню пуск»)

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

это какой-то powershell

Да, жопаскрип называется.

bread
()

А что конкретно не устраивает в стандартных функциях?

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

как заэкспозить функции из своего JS экстеншена наружу?

Как то можно наверняка. Читай доки по GDbus. Серебрянной пули тут нет, придётся всё руками делать.

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

Значит, всегда можно взять исходники гномощели и вейленда и пропатчить их нужными штуками

Конечно можно. Но тогда проще прямо в твоём форке запилить переключалки так как ты хочешь.

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

а вообще, идеальным решением было бы запилить поддержку wlr-* протоколов в mutter’е. Или даже перевести mutter на wlroots. Но тут работы конечно гораздо больше.

eternal_sorrow ★★★★★
()

Разумнее прекратить попытки натянуть сову на глобус и пользоваться нормальным окружением вроде XFCE/KDE/whatever. Гномом пользоваться можно только в дефолте, а дефолт там спорный и заходит мягко говоря не всем.

pekmop1024 ★★★★★
()

Хочу написать свою переключалку задач. Таскбар. Гномовский задолбал нереально

здравствуй брат-верующий-в-гном!
расскажи, поделись своими религиозными причинами, аллах запрещает переходить тебе на kde?

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

так вяленый-то всё равно никуда не девается, пусть и на KDE, не?

Пока он не перейдет из вечной альфы хотя бы в съедобную бету, я его не рассматриваю в принципе. Пусть мазохисты пользуются - УМВР на иксах с hidpi, нужность вяленого на текущем этапе его развития под вопросом.

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

перевести mutter на wlroots

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

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

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

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

Wayland - это преодоление. X11 - это «искаропки» кроме странных маргинальных случаев.

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

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

Он прав - если тебе базовый workflow гнома не подходит, то тебе надо другое DE, которое подходит (лучше).

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

Midael ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.