Ontwerpdromen voor GNOME Shell

De gebruikersinterface van GNOME Shell heeft in recente cycli voornamelijk kleine verfijningen en 'quality of life'-updates ondergaan, maar aan de ontwerpkant hebben we veel langetermijnplannen verkend. Voor sommige hiervan hebben we relatief complete plannen; andere zijn vage ideeën die meer onderzoek en prototyping vereisen. Zoals altijd hangt de implementatie van dergelijke zaken af van de capaciteit en interesse van ontwikkelaars (en soms financiering).

Hoewel elk van deze ideeën aanvullende discussie, prototyping en testen vereist, hebben wij (het designteam) ze hier verzameld om onze visie op de lange termijn te delen en elk idee meer zichtbaarheid te geven.

Zoeken

Het coherente en vloeiende ruimtelijke model was een van onze trotsste prestaties met GNOME 40. Wanneer je door GNOME Shell navigeert, komen interface-elementen altijd ergens vandaan en verdwijnen ze naar een andere plek, op een manier die semantisch is en over tijd voorspelbaar blijft.

Er zijn echter een paar gebieden waar we deze filosofie nooit volledig hebben kunnen toepassen. Dit geldt onder andere voor de zoekfunctie van GNOME Shell; zodra je begint te typen, wordt het volledige overzicht simpelweg vervangen door zoekresultaten, zonder animatie of ruimtelijk model. We hebben al lange tijd het idee om hierover te schakelen naar een meer semantische lay-out: een overlay met zoekresultaten die voortkomt uit het zoekveld, boven de rest van het overzicht. Onlangs is er beweging geweest richting de implementatie hiervan, en het is waarschijnlijk dat dit dit najaar in versie 51 zal verschijnen.

Naast de wijziging in lay-out willen we de zoekresultaten ook updaten met rijkere typen inhoud en acties. Andere besturingssystemen en diverse apps van derden (zoals Alfred, Raycast, etc.) hebben zoekfuncties met ingebouwde bestandsvoorbeelden, meerdere acties per zoekresultaat, zoekfilters en meer.

Een deel hiervan vereist waarschijnlijk nieuwe API's en het porten van apps naar deze API's, maar er is veel die we kunnen doen door simpelweg de bestaande gebruikersinterface te herontwerpen.

Bewerkbare Quick Settings

Het 'Quick Settings'-patroon is het afgelopen decennium breed geadopteerd in vrijwel alle OS-interfaces om voor de hand liggende redenen: het plaatst een paar essentiële stukjes informatie binnen handbereik en maakt het eenvoudig om veelgebruikte systeeminstellingen te schakelen zonder naar de Instellingen-app te gaan.

We zijn erg tevreden met onze implementatie, maar naarmate we meer functies hebben toegevoegd (donkere stijl, nachtlamp, energie modi, toetsenbordverlichting, etc.), is het menu voor snelle instellingen steeds groter geworden. En er is meer: er zijn een aantal aanvullende, nog niche-achtige zaken die mensen in dit gebied zouden willen, zoals een manier om te voorkomen dat de computer in slaap valt (de "Caffeine"-extensie voegt hier een schakelaar voor toe).

Om al deze gevallen te accommoderen, staan Android en iOS toe dat dit menu wordt aangepast, zodat gebruikers niche-schakelaars kunnen toevoegen of verwijderen afhankelijk van persoonlijk gebruik. We willen iets soortgelijks doen, met een inline-editor als onderdeel van het menu in GNOME Shell.

Vereenvoudigde Agenda Pop-over

De agenda pop-over in het bovenste midden is altijd een wat vreemde mix van zaken geweest. Het bevat verschillende losjes gerelateerde elementen die elk wildt verschillende hoeveelheden inhoud kunnen hebben: soms zijn er veel meldingen, maar geen agenda-afspraken of klokken. Sommige mensen hebben veel wereldklokken maar krijgen weinig meldingen. Tot een paar releases geleden hadden we zelfs de 'Niet storen'-schakelaar in deze pop-over, hoewel dit functioneel gezien een snelle instelling is.

Andere systemen (bijv. Android, Chrome OS) lossen dit op door het belangrijkste deel van dit menu (meldingen) te groeperen met de Quick Settings. Dit laat alleen kleinere en minder belangrijke items over die thematisch beter aansluiten: agenda, afspraken, wereldklokken en het weer.

Deze stap zou ook de meest frequent geraadplegde systeemstatus-items (meldingen en snelle instellingen) op één locatie groeperen, in plaats van ze te verspreiden over twee aparte locaties.

Vensterorganisatie via Drag & Drop

Tijdens het proces van experimenten en gebruikersonderzoek voorafgaand aan GNOME 40 hebben we ook geëxperimenteerd met alternatieven voor de mini-werkruimtes in het overzicht. Eén bijzonder interessant concept draaide om drag & drop: in plaats van te moeten mikken op een van de kleine werkruimtes bovenaan, zouden de echte werkruimtes verkleinen zodra je een venster begint te verslepen. Dit maakt grotere, rijkere 'drop targets' mogelijk en vereenvoudigt het ruimtelijke model tot één set representaties voor vensters in het overzicht.

De specifieke interacties moeten nog worden verfijnd, maar de tests die we deden voorafgaand aan GNOME 40 waren veelbelovend, dus we vinden het de moeite waard om dit opnieuw te proberen. In recente weken heeft Cleo Menezes Jr. een extensie gemaakt om dit idee te testen. We hopen het ontwerp in de extensie verder te itereren en te zien waar dat toe leidt.

Mosaic & Tiling

Krachtigere 'tiling' (het automatisch betegelen van vensters) is iets wat we al lang willen, maar wat om technische redenen nooit volledig is gerealiseerd. In algemene zin zijn we geïnteresseerd in het verbeteren van vensterbeheer als geheel, zodat het minder handmatig en onhandig wordt. Een tijd geleden hebben we een concept ontworpen genaamd "Mosaic", dat vensters automatisch herschaalt om ruimte te maken voor nieuwe vensters, waarbij de optimale grootte tussen verschillende vensters wordt afgewogen.

Er zijn in de loop der jaren verschillende extensies geweest die probeerden delen van dit concept te implementeren, maar fundamenteel is het probleem dat dit betere ondersteuning in de compositor vereist, waardoor het niet schoon in een extensie kan worden gedaan.

Dat gezegd hebbende: de MosaicWM-extensie van Cleo Menezes Jr. wordt momenteel actief onderhouden en implementeert het grootste deel van het concept. Als designteam staan we met hen in contact en willen we blijven samenwerken om het ontwerp verder te evalueren en te verfijnen. Tegelijkertijd kan er basiswerk worden gelegd dat niet afhankelijk is van design (bijv. betere tiling-ondersteuning in Mutter, rijkere metadata voor minimale/maximale venstergrootte).

Schakelen tussen vensters

De Super+Tab / Alt+Tab-switcher is al lange tijd een gebied dat we willen verbeteren. Er is een spanning tussen de wens om de lijst met items beheersbaar te houden (daarom worden vensters gegroepeerd per app) en de mogelijkheid om snel naar de laatste paar vensters te schakelen, ongeacht bij welke app ze horen. De meeste andere systemen hebben ofwel onze huidige aanpak van app-groepering (Apple platforms), of tonen alle vensters in één gigantische spreiding over meerdere rijen (Windows).

Onze hypothese is dat er twee verschillende soorten use cases zijn voor deze interface: snel schakelen naar een van de meest recente vensters, en eenvoudig met het toetsenbord naar een willekeurig venster schakelen. Als dit het geval is, kunnen beide wellicht beter worden aangepakt door een mix van losse vensters (voor de meest recente) en groepering (voor alle oudere vensters).

We hebben hier concrete concepten voor, maar deze vereisen verdere verfijning en iteratie voordat we kunnen zeggen dat dit een duidelijke verbetering is ten opzichte van de huidige status. Het is mogelijk iets dat in een extensie geprototypeerd kan worden; als je daarin geïnteresseerd bent, laat het ons dan weten!

Grid voor het inlogscherm

Dit is bijna een meme geworden, omdat het elke paar cycli bijna gebeurt, maar we willen nog steeds een meer visuele behandeling van het inlogscherm. De huidige lijst is niet vreselijk lelijk of problematisch, maar hij is wel een beetje saai. Aangezien dit het eerste is wat je ziet bij het opstarten van je computer, kunnen we mensen beter verwelkomen.

Dynamisch batterij-icoon

Door de jaren heen hebben we veel discussies gevoerd over hoe we het batterij-icoon expressiever kunnen maken en het gemakkelijker kunnen maken om in één oogopslag de status af te lezen. Zowel Android als iOS zijn overgestapt op een grotere batterijindicator die breder is dan de standaard vierkante statuspictogrammen. We willen hetzelfde doen, zowel om mensen een duidelijker beeld te geven van hoeveel batterij het apparaat heeft, als om bijvoorbeeld het percentage beter te integreren. Dit zou geweldig zijn op de desktop, maar vooral ook op GNOME Shell Mobile, waar de batterijstatus nog belangrijker is en de ruimte in de panel beperkt is.

Transparant paneel

Een andere langverwachte en besproken functie die nooit helemaal over de finishlijn is gekomen, is het transparante paneel. Het idee is simpel en de meeste andere OS-en (vooral mobiele) doen dit al: wanneer het wallpaper een laag contrast heeft en uit één kleur bestaat, wordt de achtergrond van het paneel niet getoond zodat de wallpaper erdoorheen schijnt. Het is een klein detail, maar met de juiste wallpaper is het fantastisch.

Er is een relatief complete implementatie van een paar jaar geleden door Jonas Dreßler, maar deze heeft testen, polijsten en review nodig.

Hoe komen we daar?

Sommige van deze concepten zijn klein en op zichzelf staand, andere zijn enorm en evolueren al jaren, maar ze hebben één ding gemeen: ze hebben jouw hulp nodig om tot leven te komen!

In sommige gevallen is het vooral een kwestie van implementatie. In andere gevallen is meer experimenteren, itereren en discussie met verschillende stakeholders nodig. Voor complexe wijzigingen in interactie is het waarschijnlijk goed om te beginnen met een ruw prototype, zodat mensen het gedrag vroegtijdig kunnen proberen en we erop kunnen itereren. In andere gevallen zou het goed zijn om eerst technische blokkades weg te nemen om de nieuwe ontwerpen implementeerbaar te maken (denk hierbij aan rounded clipping!).

In het verleden was het significant moeilijker om bij te dragen aan GNOME Shell en dit te testen dan bij apps, omdat je tools zoals jhbuild moest gebruiken. Dit is het afgelopen jaar veranderd: je kunt nu eenvoudig je branch bouwen en testen in een nested session vanuit Builder met Mutter Devkit. Als je GNOME OS gebruikt, kun je zelfs een sysext bouwen om je branch op je host-systeem te installeren. Hiermee kun je experimentele branches gemakkelijk als dagelijks systeem gebruiken, wat superhandig is voor het evalueren van wijzigingen in dagelijkse workflows.

Als designteam kunnen we alleen ideeën voorstellen en met ontwikkelaars samenwerken om deze te realiseren. Als je geïnteresseerd bent in het helpen bij de implementatie, verwijzen we je graag naar de juiste maintainers om mee te praten en concepten samen te itereren. In sommige gevallen moeten we zeker ook meer gebruikersonderzoek doen, dus elke hulp daarbij is zeer welkom. Voor al het bovenstaande kun je contact opnemen via het #gnome-design kanaal op Matrix.