Создайте окно Gtk Window, нечувствительное к показу рабочего стола, и не отобразится в Launcher

7

Я хочу сделать Gtk.Window, который закреплен на рабочем столе и действует как виджет рабочего стола. Я обнаружил, что могу это сделать, установив self.set_type_hint(Gdk.WindowTypeHint.DESKTOP) , который держит его ниже всех окон, неподвижный и нечувствительный к плагину Show Desktop Unity. Однако, если вы нажмете на область рабочего стола за пределами виджета, окно будет скрыто за рабочим столом, и я не могу его вернуть (мне нужно убить программу).

Каков наилучший способ справиться с этим? Есть еще одна настройка? Я обнаружил, что я также могу получить окно, чтобы игнорировать команды Show Desktop, если я устанавливаю подсказку skip_taskbar и деактивирую настройку в compiz, но я бы предпочел не гадать с настройками компиляции людей, чтобы получить этот эффект.

EDIT: Выясните, как игнорировать Show Desktop (см. Ниже), но все равно не может заставить его пропустить панель Launcher. Для этого был использован подсказку окна DESKTOP, но у этого есть недостатки, упомянутые выше. Я также играл с настройкой WM_CLASS в файле .desktop, но Unity, похоже, игнорирует это.

    
задан Ian B. 20.02.2013 в 16:01
источник

2 ответа

6

Выяснилось ... вам нужно установить подсказку типа Gdk.WindowTypeHint.DOCK , а затем установить либо skip_taskbar_hint OR skip_pager_hint .

EDIT . Это работает, но даже с skiptaskbar окно по-прежнему отображается как значок в панели запуска. Мне нужен лучший способ ...

EDIT2 Получил! Проблема исходила от других пусковых установок в баре, имеющих тот же WMClass, что и программа, которую я пытался создать Desktop Widget. Чтобы отличить себя, вам нужно установить WMClass окна в программе, а также в его запусках .desktop:

В коде:

Gtk.Window.set_wmclass(WMname,WMclass)

И в .desktop Launcher:

StartupWMClass=WMname
    
ответ дан Ian B. 20.02.2013 в 16:46
источник
0

У меня есть приложение, выполняющее именно то, что вам нужно: rainlendar2 в рабочем режиме. Выход XwinInfo:

xwininfo: Window id: 0x1200086 "rainlendar2"

  Window manager hints:
      Client accepts input or input focus: Yes
      Initial state is Normal State
      Displayed on all desktops
      Window type:
          Dock
      Window state:
          Skip Pager
          Skip Taskbar
          Below
          Sticky

Как это переводится на флаги Gtk + / Gdk. Но похоже, что липкость играет роль.

    
ответ дан aquaherd 27.02.2013 в 10:15