13. syyskuuta 2020

KDE käsittelee Firefoxia paremmin kuin GTK+ pohjaiset ikkunoinnit

Olen käyttänyt viime aikoina pääasiallisena käyttöjärjestelmänä ihan perus Ubuntua, jonka työpöydällä komeilee GTK+ pohjainen GNOME 3.x. Olen kuitenkin lähinnä KDE Plasman käyttäjäkuntaa, joten tämä on hieman erikoinen tilanne.

Koska kuitenkin olen nykyisin Plasman käyttäjä, kiinnitän muihin työpöytäympäristöihin ehkä kriittisemmin huomiota ja GNOME on erityisesti yksi niistä rakkaista ”vihollisista”, jota käyn säännöllisesti tutkimassa.

Tänään löysin erittäin kummallisen ongelman GNOME shellistä tai ehkäpä tarkemmin GTK+ kirjastosta. Ongelman, joka ilmenee ainakin Firefox selainta käyttäessä. En ikävä kyllä pysty tarkasti kertomaan mikä ongelman aiheuttaa mutta pystyn kertomaan, miten se esiintyy.

Syy & Seuraus:

Firefox ei toistaiseksi vielä tue kunnolla PWA -tilaa, jonka avulla pystyisi avaamaan verkkosivuja tilaan, jossa ei sivun sisällön lisäksi ole näkyvillä mitään selaimen käyttöliittymiä, kuten painikkeita, eikä osoiteriviä. Lisäosien parissa työskentelevät käyttäjät ovat kuitenkin kehittäneet tähän jonkinasteisen paikkauksen, jolla sisällön saa avattua tähän käyttöliittymättömään ikkunaan myös Firefoxilla.

Muun muassa Popup Window, on tämänkaltainen lisäosa. Se avaa verkkosivun erilliseen Firefox ikkunaan, ikään kuin PWA -tilaan.

GNOME kuitenkin jostain käsittämättömästä syystä, kohtelee näitä ikkunoita erikoisella tavalla, se jättää kyseiset ikkunat aina muiden sovellusten ja ikkunoiden päälle. GNOMEn ikkunavalikon kautta, tätä ominaisuutta ei voi estää, ikkunat vain yksinkertaisesti ovat ”aina päällimmäisenä”.

Ensiksi toki epäilin, että Firefoxissa on tapahtunut muutos, jossa tämänlaiset ponnahdusikkunat käsitellään ”Stay on top” muodossa, koska normaalisti niitä käytetään verkkosivujen toimintojen esittämiseen, lomakkeiden ulkoiseen syöttämiseen ja muuhun siten tärkeisiin toimintoihin. Huom.! Tätä toimintoa ei pidä sekoittaa 90-luvun pop-up mainoksiin.

Kun sitten kuitenkin aloin epäilemään Firefoxin osallisuutta, loin muutaman virtuaalikoneen, Windows 10 sekä KDE Neonin, Linux Mint Cinnamonin ja vielä täysin puhtaan (asetuksiltaan oletuksilla) Ubuntun.

Asensin käyttämäni Firefox Nightlyn sekä Popup Window lisäosan jokaiseen virtuaalikoneeseen ja ajoin testit.

Avasin jokaiseen virtuaalikoneeseen Firefoxin ja Googlen Gmailin, poppautin Gmailin omaksi ”PWA-ikkunakseen” ja avasin myös muutamia muita sovelluksia. Olin äimänkäkenä lyöty, kun lopulta huomasin, että vain Ubuntussa (jossa GNOME) Firefoxin popup ikkunat käyttäytyivät ongelmakuvaukseni tavoin.

Linux Mint Cinnamonissa, joka on GNOMEn tavoin GTK+ -pohjainen, popupit käyttäytyvät lähes samalla tavalla mutta Cinnamonissa vain Firefox selain jäi ikkunoiden alle. Muut sovellukset, kuten vaikkapa tiedostohallinnan sai näiden ikkunoiden päälle.

KDE Plasmassa (Neon) sekä Windowsissa, popup ikkunat eivät jääneet muiden päälle. KDE plasma työpöytä perustuu Kwin ikkunamanageriin, joka huolehtii ikkunoiden hallinnasta, se muun muassa käsittelee kyseisiä popup ikkunoita normaaleina sovellusikkunoina tarkoittaen sitä, että GTK+ pohjaisista järjestelmistä poiketen, popupit saavat myös pienennä sekä suurenna painikkeet, joten ne voi asettaa paremmin paikalleen.

Kyse on siis GNOMEsta tai ehkäpä kuitenkin tarkalleen GTK+ alustasta ja sen tavasta hallita sovelluksen omia ikkunoita (child window) mutta pahin ongelma näyttää olevan kuitenkin GNOME shellissä, yllä mainitun käytöksen vuoksi.

Voi olla, että shellin asetuksia voi tämän osalta jostain säätää mutta en näitä lippuja ole vielä löytänyt, vaikka niitä dconfilla olen kovasti koittanut etsiä.

Mikäli tiedät kuinka tämä pakotettu ”stay-on-top” saadaan pois päältä, kerro ihmeessä alla olevaan kommenttiosioon.

Versiot:

Gnome Shell: 3.36.4 + GTK+ 3.2.4.20

Cinnamon: 4.6.7 + GTK+ 3.24.20

KDE Plasma: 5.19.5

Windows 10: 19041.508

Mozilla Firefox: 82.0a1 (2020-09-10)