LINUX.ORG.RU

Сделать так чтобы окно было видно на всех workspace-ах (Qt)

 , ,


0

1

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

https://pastebin.com/5dVRCD1m

Как, кстати, написано вот тут: https://stackoverflow.com/questions/16775352/keep-a-application-window-always-on-current-desktop-on-linux-and-mac

Но нифига не работает. Вообще. Никак.

Как правильно это делается?

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

The Window Manager should honor _NET_WM_DESKTOP whenever a withdrawn window requests to be mapped.

Может значение ставится слишком поздно (после отображения) и надо делать как написано потом:

A Client can request a change of desktop for a non-withdrawn window by sending a _NET_WM_DESKTOP client message to the root window:

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

Есть такая утилита wmctrl, она может закрепить окно на всех рабочих столах. Xfce window manager тоже может так, но через popup, если нажать на окно.

	const QString WIdString = "0x" + QString::number(window, 16);
	qDebug() << "window id: " << WIdString;
	const QStringList arguments = {"-i", "-r", WIdString, "-b", "add,sticky"};
	QProcess::execute("wmctrl", arguments);

Почитаю как там внутри оно делает (скорее всего через XSendEvent), но странно, однако, что мой вариант не работает.

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