Projektlogg: Att utveckla en fönsterhanterare

Permalänk
Medlem

Projektlogg: Att utveckla en fönsterhanterare

Har kört Linux lite av & till dom senate 15 åren, lite hat-kärlek, senaste åren har jag dock börjat köra det lite mer & framförallt börjat gilla tiled-WM såsom i3 & bspwm & är numera inte jättelångt från att köra dom som main, kör mestadels Ubuntu + i3 nuförtiden (utöver macOS då).

Jag har 3 funktioner som jag ända från det att jag upptäckte Linux första gången till dagens datum hela tiden har hoppats på att någon skulle implementera men verkar inte som om någon kommer göra det, så dags att kavla upp armarna & utveckla dessa på egen hand istället.

Funktion 1: En slags "Viewport scroll" så ens arbetsyta består av en virtuell yta som är bredare än skärmen man använder, så, när man sitter på en liten skärm, tex på en bärbar så kan man placera sina program/fönster sida vid sida på samma sätt som med en ultrawide skärm, sen antingen använda tangentbords-genvägar eller trackpad för att scrolla i sidled. Man kan också placera dessa strategiskt så man, hmm, ser mer än vad man ser när man glor på en statisk skärm, går inte förklara, kanske syns på videorna, eller får nog göra en separat film för att förklara, men går öka sin produktivitet om man lägger upp sina fönster med lite tanke bakom...aja.

Jag startade en tråd här på Swec (tråden) & undrade ifall denna funktionen fanns, verkar inte så, har inte lyckats hitta någon än, finns en film i tråden där jag demonstrerar scroll funktionen om ni vill ta en titt.

Jag är medveten om att detta inte är något som många är ute efter, kanske t.om ser krångligt ut & saknar funktion, men när jag arbetat med det så tycker jag det fungerat smidigt, tex när man har flera dokumentationer öppna & flera IDE fönster öppna samtidigt, slipper man öppna massa tabbar å skit, bara att hoppa mellan fönstrena istället & slipper man ha flera fönster stackade ovanpå varandra också.

Tiled med gaps (trasig margin dock, skall fixas)

"Exposé" liknande funktion där man ser en överblick över hela sitt virtuella område, virtuella ytan är 10ggr bredare än skärmens fysiska upplösning, finns "Spaces"/"Workspaces" också så 10ggr bredare per "workspace", så ganska mycket yta att placera sitt skräp på, får att få plats med dessa fönster som demonstreras här med ett mer traditionellt upplägg så skulle man behöva lägga alla fönster ovanpå varandra, mycket lättare (när jag testat iaf) att komma åt det man vill komma åt när inte allt skräpa är staplat på varandra...svårt att göra det rättvisa på bild & video men sidoscrollen är faktiskt ganska smidigt. (nej, trackpad är inte ett krav, bara att tabba fram till sitt fönster, klicka på app ikonerna i "menubar":en längst upp i mitten eller scrolla med tangentbordet)

Funktion 2: Kommer inte beskriva den i text här, gjorde en video tidigare idag (skitdåligt filmat, hatar min röst, tror min röst hörs, satte ljudet på mute när jag redigerade filmen då jag hatar att höra min röst men antar att filmen har ljud, låter skitlöjlig & hatar att vara med på film så själva demonstrationen är inte direkt imponerande men tror det framgår rätt tydligt vad funktionen är ändå)

Detta är en funktion som jag sett fram emot VÄLDIGT länge, jag skiftar dator flera gånger per dag & hatar att synka GIT, positionera fönster & skit, jag vill bara sätta mig framför datorn & börja precis där jag slutade, oavsett vilken dator jag för tillfället använder.

Funktion 3: Lite hemlig just nu, håller på & utvecklar den nu men hoppas kunna visa upp ett demo om ett par veckor

Framtiden & mini FAQ: Beror lite på, om någon här ens är intresserad av denna projektloggen, tänkte att folk som är intresserade också kunde komma på någon idé eller förslag; något ni saknar i operativsystemet/skrivbordsmiljön/fönsterhanteraren ni använder nu så säg gärna till så får vi se om den går att implementera.

Ni kanske också tänker att "Fan, *suck*, ännu en fönsterhanterare", & ja, jag håller med, för tillfället kommer jag fortsätta utveckla denna skrivbordsmiljön/fönsterhanteraren men det är bara för att testa lite olika idéer, se om det fungerar som det är tänkt så till en början kommer det vara en egen fönsterhanterare, dock hoppas jag, när denna börjar bli klar kunna implementera åtminstone funktion 1 & 2 i i3 istället, har kollat i i3 dokumentationen & det kan vara svårt att implementera dessa funktioner, speciellt funktion 2 då det inte är helt uppenbart hur man skall plocka ut datan från programmen men förhoppningsvis går det att lösa på något sätt, vi får se!

Kommer inte lägga upp detta projektet på github (eller liknande) eller dela med mig av koden nu till en början (har gjort det på tidigare projekt & trots att jag säger till personer upprepade gånger att koden inte ens har alfa-status & jag inte kommer agera support så dyker det upp massa folk ändå & tjatar om support & annat skräp, sen klagar på när det inte fungerar & hur instabilt det är (no shit, det är ju inte ens avsett att användas annat än som experiment), har inte tid med det). Kanske om några månader när jag fixat en lättare installations-process kan jag nog dela med mig koden & lägga upp på GIT, men då krävs det att personen förstår vad detta projektet är, kommer aldrig vara avsett att köras på sin main & kommer inte ha någon support överhuvudtaget, detta är mest ett experiment & hobby.

För tillfället är detta tiling + float. Tanken är att aldrig behöva använda mus men självklart går det om man vill.

Varför? Kul grej bara, skönt att ha ett avbrott mellan dom mer seriösare grejerna man utvecklar, har börjat störa mig på hur tungrodda många operativsystem/fönsterhanterare är nuförtiden, känns bara ivägen & skapar frustration, kommer fokusera mest på att underlätta för oss programmerare så detta kommer bli en fönsterhanterare för programmerare & folk som skriver mycket.

Tidsplan? Ett evighetsprojekt antagligen, detta handlar om år. Detta kommer inte vara något jag jobbar fulltid med så kommer fokusera mest på dom projektet som ger mig tak över huvudet & mat för dagen, vilket detta projektet inte göra. Men kommer åtminstone försöka få till synbara uppdaterar minst 1 ggr i veckan.

Så, finns det något intresse att jag sätter igång med denna projektloggen här på Swec (har ju redan kommit en bit men finns massa mer att göra) så säg till, annars hoppar jag över det

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Avstängd

Wow, jag är väldig imponerad!

Önskar jag hade dina programmeringsskills!

Det jag önskar mig av en WM är följande:

(1) Enkelt att modifiera teman för fönsterhanteraren, dvs jag ska kunna välja själv hur knapparna ska se ut för "Close", "Maximize" och "Minimize". Dessutom ska jag kunna bestämma vilka regioner av exempelvis "Title-baren" som ska vara transparenta. Jag vill även bestämma hur bordern ska se ut, vänster-bordern ska vara grön, höger-bordern ska vara röd, top-borden vit, och bottom-bordern svart e.t.c. Jag vill helt enkelt ha kontroll över hur fönsterhanteraren ska se ut på ett enkelt sätt.

(2) Det skulle vara coolt att på något sätt, för varje fönster, visa en indikator på hur mycket av CPU:n detta fönster/applikation använder. Fler indikatorer som är unika för detta fönster skulle vara välkommet.

Men jag antar att detta ligger nog inte riktigt i ditt intresse.

Visa signatur

Dator: i7 4960x | 32GB RAM | Asus Rampage IV Formula | GTX 1080
OS: Slackware 64-bit current + multilib

Laptop: HP Elitebook 6930p | 8GB RAM | 211GB SSD RAID 0 | 256MB AMD Radeon HD 3450/3470 | Intel Duo T9900 @ 3.06GHz
OS: Slackware 64-bit 14.2

Permalänk
Medlem

Kul projekt! Alltid roligt när någon gör något av när de tänker utanför lådan (eller ja, skärmen i det här fallet ). Själv har jag allt jag tror mig vilja ha i i3 (håll mina terminalfönster i schack!), men skulle tillfälle ges skulle jag gärna testa din.

Visa signatur

Desktop: AMD 3950X, 64 GB RAM, Nvidia 4070 ... (Windows 11)
Serverdesktop: AMD 5600G, 64 GB RAM (Proxmox)
Labbmiljö: Supermicro SC825 X9DRi-F 2xE5-2667v2 64GB RAM
Kamera: Canon R5, Canon RF 100-500, Laowa 100mm f/2.8, Canon RF 24-70 f/2,8

Permalänk
Medlem
Skrivet av eXpander_:

Wow, jag är väldig imponerad!

Önskar jag hade dina programmeringsskills!

Det jag önskar mig av en WM är följande:

(1) Enkelt att modifiera teman för fönsterhanteraren, dvs jag ska kunna välja själv hur knapparna ska se ut för "Close", "Maximize" och "Minimize". Dessutom ska jag kunna bestämma vilka regioner av exempelvis "Title-baren" som ska vara transparenta. Jag vill även bestämma hur bordern ska se ut, vänster-bordern ska vara grön, höger-bordern ska vara röd, top-borden vit, och bottom-bordern svart e.t.c. Jag vill helt enkelt ha kontroll över hur fönsterhanteraren ska se ut på ett enkelt sätt.

Jag har stöd för borders, bara det att jag aldrig använder det, dock har jag inte lagt till stöd för olika färger för upp-höger-ner-vänster, bara border i en & samma färg. Man kan sätta border-färg per applikation.

Det mesta är "hårdkodat" & inte konfigurerbart, tänkte att jag inte skulle fokusera på själva utseendet så mycket, är ju inte mycket lönt om jag tillslut lägger in funktionerna i i3 när dom väl är klara, men har hört från flera håll nu att folk ändå vill se lite utseende relaterade saker. Vi får se. Isåfall, om jag lägger till stöd för att konfigurera utseendet så kommer det inte bli dotfiler (dock lägga till stöd för att importera "dotfiler")/konfigurationsfiler men konfigurationen skall istället ske i GUI:t så man slipper hålla på böka med massa konfigurationsfiler såfort man vill ändra något.

Vi får se, blir ju en hel del extra att utveckla & extra metadata att synka mellan datorerna så vi får se, kanske.

Skrivet av eXpander_:

(2) Det skulle vara coolt att på något sätt, för varje fönster, visa en indikator på hur mycket av CPU:n detta fönster/applikation använder. Fler indikatorer som är unika för detta fönster skulle vara välkommet.

Slängde in det lite snabbt, kan vara nyttigt att ha med den änsålänge hemliga funktion 3. Brydde mig inte om utseendet, bara slängde in det sålänge, går implementera på tusen olika sätt så något förslag på utseende & placering? Skall det även finnas en graf/stapel? Historisk graf?

Detta skulle gå att implementera redan idag till dom flesta Linux distros som kör X (säg till om det finns), kanske inte finns någon hook i själva applikationerna men går att utveckla ett program som itererar igenom dom öppna fönstrena & ta reda på dess position & annan lämplig metadata & sen projekta CPU & minnesanvändning ovanpå titel-baren via den beräknade positionen. Är det någon som vill ha det så säg till så kanske jag kan fixa ett program som fixar detta till alla Linux distros som kör X.

Skrivet av Crazy Ferret:

Kul projekt! Alltid roligt när någon gör något av när de tänker utanför lådan (eller ja, skärmen i det här fallet ). Själv har jag allt jag tror mig vilja ha i i3 (håll mina terminalfönster i schack!), men skulle tillfälle ges skulle jag gärna testa din.

👍 Vi får ser hur långt jag orkar köra innan jag går över att försöka implementera detta i befintliga Linux distros (å framförallt i Ubuntu + i3), finns inget lätt sätt att installera skiten på nu så kanske inte bryr mig om att fixa någon vettig installation innan jag går över till att utveckla vissa av funktionerna i i3.

Har blivit 2 filmer nu irad, kommer dröja till nästa, ni får nöja er med screenshot framöver tror jag.

Vore kul om någon kunde komma på ett bättre namn, kör med "synergyOS" just nu men gillar inte namnet, så har någon ett förslag så säg gärna till

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Avstängd
Skrivet av JesperA:

Jag har stöd för borders, bara det att jag aldrig använder det, dock har jag inte lagt till stöd för olika färger för upp-höger-ner-vänster, bara border i en & samma färg. Man kan sätta border-färg per applikation.

Det mesta är "hårdkodat" & inte konfigurerbart, tänkte att jag inte skulle fokusera på själva utseendet så mycket, är ju inte mycket lönt om jag tillslut lägger in funktionerna i i3 när dom väl är klara, men har hört från flera håll nu att folk ändå vill se lite utseende relaterade saker. Vi får se. Isåfall, om jag lägger till stöd för att konfigurera utseendet så kommer det inte bli dotfiler (dock lägga till stöd för att importera "dotfiler")/konfigurationsfiler men konfigurationen skall istället ske i GUI:t så man slipper hålla på böka med massa konfigurationsfiler såfort man vill ändra något.

Vi får se, blir ju en hel del extra att utveckla & extra metadata att synka mellan datorerna så vi får se, kanske.

https://www.youtube.com/watch?v=vn7JxWdga3s

Slängde in det lite snabbt, kan vara nyttigt att ha med den änsålänge hemliga funktion 3. Brydde mig inte om utseendet, bara slängde in det sålänge, går implementera på tusen olika sätt så något förslag på utseende & placering? Skall det även finnas en graf/stapel? Historisk graf?

Detta skulle gå att implementera redan idag till dom flesta Linux distros som kör X (säg till om det finns), kanske inte finns någon hook i själva applikationerna men går att utveckla ett program som itererar igenom dom öppna fönstrena & ta reda på dess position & annan lämplig metadata & sen projekta CPU & minnesanvändning ovanpå titel-baren via den beräknade positionen. Är det någon som vill ha det så säg till så kanske jag kan fixa ett program som fixar detta till alla Linux distros som kör X.

👍 Vi får ser hur långt jag orkar köra innan jag går över att försöka implementera detta i befintliga Linux distros (å framförallt i Ubuntu + i3), finns inget lätt sätt att installera skiten på nu så kanske inte bryr mig om att fixa någon vettig installation innan jag går över till att utveckla vissa av funktionerna i i3.

Har blivit 2 filmer nu irad, kommer dröja till nästa, ni får nöja er med screenshot framöver tror jag.

Vore kul om någon kunde komma på ett bättre namn, kör med "synergyOS" just nu men gillar inte namnet, så har någon ett förslag så säg gärna till

Jag skulle vara väldigt intresserad av en sådan funktion som kan projicera data ovanför titelbaren (hamnar ovanför som ett litet fönster då?)

Visa signatur

Dator: i7 4960x | 32GB RAM | Asus Rampage IV Formula | GTX 1080
OS: Slackware 64-bit current + multilib

Laptop: HP Elitebook 6930p | 8GB RAM | 211GB SSD RAID 0 | 256MB AMD Radeon HD 3450/3470 | Intel Duo T9900 @ 3.06GHz
OS: Slackware 64-bit 14.2

Permalänk
Medlem

Det beror nog till viss del på distron/fönsterhanteraren, om den har stöd för transparenta fönster & dold titelbar & utan borders & shadow, har den det så kan man få datan att se ut precis hur man vill (för man vill väl inte ha ett litet minifönster som hovrar över ens huvudfönster?).

För dom som inte har fullt stöd för detta så kan man nog kringgå det på något sätt & placera datan hur man vill ändå, lär nog bli lite buggig men med lite vilja så går det nog lösa det med.

Får se när jag hinner ta tag i det.

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Medlem

Har inte hänt så mycket senaste tiden, var bortrest i över en vecka & nu när jag kommit hem har jag varit tvungen att jobba på andra projekt men kommer en uppdatering om några dagar.

Men iaf, glömde nämna en grej i mitt ursprungsinlägg & en av anledningarna till att jag satte igång detta projektet:

TL;DR: Inget fönster får sno fokus från ett annat fönster & all X metadata sparas i databas (sorterat efter user-event) & alla fönster går igenom databasen & bestämmer window-state istället för att direkt med X. Vanligtvis ser det ut såhär (förenklat) X<-->Fönster-metadata. I mitt ser det mer ut såhär X<-->Databas<-->Fönster-metadata

Onödigt lång version:
Jag använder primärt macOS men den har (precis som endel andra OS) en skitstörande egenhet som jag tror flera av er också irriterat er på: nämligen att fönster har direkt access till X helt utan någon time-series implementation vilket betyder att (detta händer mig ofta) jag sitter i Xcode/ST3/VS/whatever & får för mig att öppna tex Photoshop (tar 10 timmar att starta Photoshop oavsett hur snabb dator man har) så medan Photoshop laddas så hoppar jag tillbaka programmet jag använde innan jag öppnade Photoshop, SEN när Photoshop väl fått för sig att ladda klart så flyttas fokus till Photoshop & man blir avbruten i det man gör, sjukt irriterande när man sitter & tex skriver & helt plötsligt är det något äckligt program/fönster som snor uppmärksamheten till sig själv & ens arbete avbryts:

Har VSCode aktivt, öppnar Photoshop, sen tillbaka till VSCode, väntar några sekunder med VSCode AKTIVT, sen har Photoshop laddats klart & Photoshop anropar troligen X & säger "Nu är jag klar, flytta fokus till mitt fönster" (idiotiskt beteende)

Det finns även andra scenarion när inaktiva fönster väljer att kasta upp en modal eller varning & lägger sig överst så man måste klicka bort skiten, vet inte hur många meningar man skrivit & inte märkt att något annat fönster har "snott" fokusen & det man skriver har slutat registrerats i appen man skriver i för att en annan app har snott fokus, eller man öppnar en meny i ett program & så händer det något annat i programmet, något laddas eller whatever vilket resulterar i att menyn man precis öppnade stängs ner 😡😡

Vi har väl alla varit med om detta? Iaf, så i mitt är detta inte tillåtet, ingen app/fönster har möjlighet att skriva till X (eller X ändra värden) på egen hand, uppdateringar får endast ske vid user-events (såsom klicka på fönster (vilket aktiverar fokus, ändrar depth, position, storlek osv osv)), alla fönster hämtar sin data från redan lagrade värden, alla user-events sparas med timestamp & sorteras därefter så inget jag gjorde tidigare hamnar före det jag gjort efteråt.

Nu har jag inte något program som tar lång tid att öppna så kan inte demonstrera funktionen, men istället för att hända så som det gör i videon att Photoshop säger till X "Nu är jag klar, flytta fokus till mitt fönster", så skulle Photoshop (& alla andra program) istället säga "Nu har jag laddat klart *hämtar X metadata från databas & applicerar på mitt fönster*". På så sätt är det inget fönster som kan sno fokus från ett annat fönster som redan är i fokus. Ett fönster som laddas kan bara få fokus & lägga sig överst i depth i X om ingen user-event har hänt efter att man öppnat programmet.

Detta inlägget hade ju inte så mycket diskussionsvärde så: Vore kul att veta hur många av er som stört er på detta? Ni kanske använder ett OS/Fönsterhanterare som inte har den "fönster fokus snatteriet" som jag beskrev här men för som har, viket OS/Fönsterhanterare kör ni?

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk

Jo visst har man stört sig på sådant.
Compiz har inställningar för 5 nivåer av "Focus Prevention Level".
"Off, low, normal, high och very high"

Antar att din metod motsvarar "very high" då?

Förresten, om du startart ett litet program via en tangentkombination (tex terminalen eller "kör program") får det då fokus med din lösning eller måste man röra musen/alt-tabba?

Permalänk
Medlem
Skrivet av FattarNiInte:

Jo visst har man stört sig på sådant.
Compiz har inställningar för 5 nivåer av "Focus Prevention Level".
"Off, low, normal, high och very high"

Antar att din metod motsvarar "very high" då?

Har inte testat "FPL" men låter som det möjligen motsvarar "very high"

Skrivet av FattarNiInte:

Förresten, om du startart ett litet program via en tangentkombination (tex terminalen eller "kör program") får det då fokus med din lösning eller måste man röra musen/alt-tabba?

Just nu får fönster som öppnas med tgb-kombo fokus (se videon lite längre upp "Uppdatering #1, där öppnar jag några fönster med tgb-kombo några gånger, där dom får fokus). Kanske inte är ett beteende alla vill ha, så jag kan lägga till möjligheten att öppna fönster med fokus-1 så fönstret öppnas bakom det som är i fokus men framför alla andra, om ni vill?

Tex:
mod+alt+key = öppna med fokus
caps lock/mod+alt+key = öppna med fokus-1

(caps lock/mod går såklart ändra i inställningarna, personligen föredrar jag caps lock för sekundära funktioner)

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Medlem
Skrivet av JesperA:

TL;DR: Inget fönster får sno fokus från ett annat fönster & all X metadata sparas i databas (sorterat efter user-event) & alla fönster går igenom databasen & bestämmer window-state istället för att direkt med X. Vanligtvis ser det ut såhär (förenklat) X<-->Fönster-metadata. I mitt ser det mer ut såhär X<-->Databas<-->Fönster-metadata

Stör mig rätt mycket på detta du beskriver. Kör också MacOS oftast och tänkte en del på det för ett tag sedan. Borde gå att välja om fönster/program ska hoppa fram överst när de öppnats färdigt eller om de ska ”komma fram” i bakgrunden, kanske med ett hopp i Dock:an för att visa att det är färdigt att användas.

Gött med Linux där det finns möjlighet att justera det som irriterar en.

Tycker ditt projekt ser snyggt och intressant ut. Ska bli skoj att följa.

För övrigt en grej som stör mig i Windows — att det inte finns någon visuell indikation när ett program håller på att öppnas/läsas in.

Visa signatur

• Fractal Design North | ASUS ROG Strix B650E-F | Ryzen 7 7800X3D | Radeon RX 7800 XT | 64 GB RAM | Windows 11
• Mac Pro (Mid 2010) | 6-Core Intel Xeon ”Westmere” | Radeon RX 5700 XT | 32 GB RAM | macOS 12 Monterey | Windows 10
• MacBook Pro 14" | M2 Max | 96 GB RAM | macOS 14 Sonoma

Permalänk
Medlem

Coolt, frågan är dock varför du stavar "Swecklockersz"

Permalänk
Medlem
Skrivet av JesperA:

Har kört Linux lite av & till dom senate 15 åren, lite hat-kärlek, senaste åren har jag dock börjat köra det lite mer & framförallt börjat gilla tiled-WM såsom i3 & bspwm & är numera inte jättelångt från att köra dom som main, kör mestadels Ubuntu + i3 nuförtiden (utöver macOS då).

Jag har 3 funktioner som jag ända från det att jag upptäckte Linux första gången till dagens datum hela tiden har hoppats på att någon skulle implementera men verkar inte som om någon kommer göra det, så dags att kavla upp armarna & utveckla dessa på egen hand istället.

https://i.imgur.com/o0mTho8.jpg

Funktion 1: En slags "Viewport scroll" så ens arbetsyta består av en virtuell yta som är bredare än skärmen man använder, så, när man sitter på en liten skärm, tex på en bärbar så kan man placera sina program/fönster sida vid sida på samma sätt som med en ultrawide skärm, sen antingen använda tangentbords-genvägar eller trackpad för att scrolla i sidled. Man kan också placera dessa strategiskt så man, hmm, ser mer än vad man ser när man glor på en statisk skärm, går inte förklara, kanske syns på videorna, eller får nog göra en separat film för att förklara, men går öka sin produktivitet om man lägger upp sina fönster med lite tanke bakom...aja.

Jag startade en tråd här på Swec (tråden) & undrade ifall denna funktionen fanns, verkar inte så, har inte lyckats hitta någon än, finns en film i tråden där jag demonstrerar scroll funktionen om ni vill ta en titt.

Jag är medveten om att detta inte är något som många är ute efter, kanske t.om ser krångligt ut & saknar funktion, men när jag arbetat med det så tycker jag det fungerat smidigt, tex när man har flera dokumentationer öppna & flera IDE fönster öppna samtidigt, slipper man öppna massa tabbar å skit, bara att hoppa mellan fönstrena istället & slipper man ha flera fönster stackade ovanpå varandra också.

Tiled med gaps (trasig margin dock, skall fixas)
https://i.imgur.com/HjcPyZ8.jpg

"Exposé" liknande funktion där man ser en överblick över hela sitt virtuella område, virtuella ytan är 10ggr bredare än skärmens fysiska upplösning, finns "Spaces"/"Workspaces" också så 10ggr bredare per "workspace", så ganska mycket yta att placera sitt skräp på, får att få plats med dessa fönster som demonstreras här med ett mer traditionellt upplägg så skulle man behöva lägga alla fönster ovanpå varandra, mycket lättare (när jag testat iaf) att komma åt det man vill komma åt när inte allt skräpa är staplat på varandra...svårt att göra det rättvisa på bild & video men sidoscrollen är faktiskt ganska smidigt. (nej, trackpad är inte ett krav, bara att tabba fram till sitt fönster, klicka på app ikonerna i "menubar":en längst upp i mitten eller scrolla med tangentbordet)
https://i.imgur.com/7QCT4p7.jpg

Funktion 2: Kommer inte beskriva den i text här, gjorde en video tidigare idag (skitdåligt filmat, hatar min röst, tror min röst hörs, satte ljudet på mute när jag redigerade filmen då jag hatar att höra min röst men antar att filmen har ljud, låter skitlöjlig & hatar att vara med på film så själva demonstrationen är inte direkt imponerande men tror det framgår rätt tydligt vad funktionen är ändå)

Detta är en funktion som jag sett fram emot VÄLDIGT länge, jag skiftar dator flera gånger per dag & hatar att synka GIT, positionera fönster & skit, jag vill bara sätta mig framför datorn & börja precis där jag slutade, oavsett vilken dator jag för tillfället använder.

https://www.youtube.com/watch?v=3equxMQxlaU&feature=youtu.be

Funktion 3: Lite hemlig just nu, håller på & utvecklar den nu men hoppas kunna visa upp ett demo om ett par veckor

Framtiden & mini FAQ: Beror lite på, om någon här ens är intresserad av denna projektloggen, tänkte att folk som är intresserade också kunde komma på någon idé eller förslag; något ni saknar i operativsystemet/skrivbordsmiljön/fönsterhanteraren ni använder nu så säg gärna till så får vi se om den går att implementera.

Ni kanske också tänker att "Fan, *suck*, ännu en fönsterhanterare", & ja, jag håller med, för tillfället kommer jag fortsätta utveckla denna skrivbordsmiljön/fönsterhanteraren men det är bara för att testa lite olika idéer, se om det fungerar som det är tänkt så till en början kommer det vara en egen fönsterhanterare, dock hoppas jag, när denna börjar bli klar kunna implementera åtminstone funktion 1 & 2 i i3 istället, har kollat i i3 dokumentationen & det kan vara svårt att implementera dessa funktioner, speciellt funktion 2 då det inte är helt uppenbart hur man skall plocka ut datan från programmen men förhoppningsvis går det att lösa på något sätt, vi får se!

Kommer inte lägga upp detta projektet på github (eller liknande) eller dela med mig av koden nu till en början (har gjort det på tidigare projekt & trots att jag säger till personer upprepade gånger att koden inte ens har alfa-status & jag inte kommer agera support så dyker det upp massa folk ändå & tjatar om support & annat skräp, sen klagar på när det inte fungerar & hur instabilt det är (no shit, det är ju inte ens avsett att användas annat än som experiment), har inte tid med det). Kanske om några månader när jag fixat en lättare installations-process kan jag nog dela med mig koden & lägga upp på GIT, men då krävs det att personen förstår vad detta projektet är, kommer aldrig vara avsett att köras på sin main & kommer inte ha någon support överhuvudtaget, detta är mest ett experiment & hobby.

För tillfället är detta tiling + float. Tanken är att aldrig behöva använda mus men självklart går det om man vill.

Varför? Kul grej bara, skönt att ha ett avbrott mellan dom mer seriösare grejerna man utvecklar, har börjat störa mig på hur tungrodda många operativsystem/fönsterhanterare är nuförtiden, känns bara ivägen & skapar frustration, kommer fokusera mest på att underlätta för oss programmerare så detta kommer bli en fönsterhanterare för programmerare & folk som skriver mycket.

Tidsplan? Ett evighetsprojekt antagligen, detta handlar om år. Detta kommer inte vara något jag jobbar fulltid med så kommer fokusera mest på dom projektet som ger mig tak över huvudet & mat för dagen, vilket detta projektet inte göra. Men kommer åtminstone försöka få till synbara uppdaterar minst 1 ggr i veckan.

Så, finns det något intresse att jag sätter igång med denna projektloggen här på Swec (har ju redan kommit en bit men finns massa mer att göra) så säg till, annars hoppar jag över det

Vet ej om jag är ute och seglar, men finns inte en funktion med flera fönster länkade som en slags 3d kub som man kan vrida runt för att komma till valt fönster? har något sådant liggande i bakhuvudet? tänkte som en förlängning av befintlig yta?

Visa signatur

OPERATIV: Win 10 pro
DATOR:En vattenkyld Intel i7 950 i ett CM HAF932+ ganska potent inre
Tangentbord/mus/musmatta Q-pad Ljud Edifier S530D
LUR: Lumia930

Permalänk
Medlem

Ser grymt ut, följer detta.

Visa signatur

Gamingrigg: MEG x570 ACE, 5950X, Ripjaws V 32GB 4000MT/S CL16, 6800XT Red Devil LE, HX1200i.
Laptop: XPS 9570 x GTX 1050 x 8300h + 16GB Vengeance 2666Mhz + Intel AX200
Valheim server: i7-8559 + Iris Plus 655 + 32GB + 256GB
Printers? Yes. Ender 5, Creality LD-002R, Velleman VM8600, Velleman K8200

Permalänk
Medlem

@Tuxsux: Joo, Compiz tror jag den heter.

Visa signatur

:::::::::::::::::::::::::::::::

Permalänk
Medlem

Jag visste inte att jag behövde ett virtuellt skrivbord enligt funktion nr 1, men jag vet precis när/var jag skulle använda det i jobbet!

Permalänk
Medlem

@JesperA hur hanterar syncen om du öppnar ett program på den ena dator och börjar jobba i det och när du sedan går till den andra och programmet finns inte ens installerat?

Visa signatur

.: Learn the system, Play the system, Break the system :.

Permalänk
Medlem

Bra jobbat och kul projekt Jag kodade faktiskt en egen fönsterhanterare med Xlib som en C-uppsats på universitetet för c:a 15 år sen. Det var ett roligt projekt!

Visa signatur
Permalänk
Medlem

Känner igen mig med att många fönsterhanterare har massa irriterande onödigt junk.

"virtuell yta som är bredare än skärmen man använder" - Jag har haft samma tanke i många år, skriver också mycket och man vill ha lite övergriplig koll på annat som händer. Ska tänka efter lite och se om jag kommer på nått annat. Har personligen fastnat i träsket där man bara "gillar läget".

Har du nån grund du tittar på eller kör du från skratch?

Permalänk
Medlem
Skrivet av JesperA:

TL;DR: Inget fönster får sno fokus från ett annat fönster & all X metadata sparas i databas (sorterat efter user-event) & alla fönster går igenom databasen & bestämmer window-state istället för att direkt med X. Vanligtvis ser det ut såhär (förenklat) X<-->Fönster-metadata. I mitt ser det mer ut såhär X<-->Databas<-->Fönster-metadata

Kanske lite sidospår: Är personligen lite nyfiken på Wayland. Vet du om det att fixa dessa typer av problem? Vet att det inte kommer till Mac men sitter själv på debian och undrar vad som kommer hända med X i framtiden?

Väldigt trevlig logg. Ser fram emot de nya funktionerna!

Permalänk

Cool! Det bästa sättet att lära och underhålla programmering är att programmera.

Det där med synkning är ju asgrymt!

Dumn fråga angående virtuella fönsterplacering - är inte det nästan samma sak som just virtual desktops gör och som finns tom i Win nuförtiden?

Visa signatur

--------------------------

Permalänk
Avstängd

Tänk på att många Linuxdistributioner har eller planerar att gå över från X11 till Wayland.

Så du kanske vill skriva den för Wayland istället för X. Du kanske vill använda ett bibliotek också som libweston eller wlroots.
Det finns även Sway som är en i3-kompatibel fönsterhanterare byggd på Wayland.

Permalänk
Inaktiv

Alltid roligt med nya verktyg. Förr i tiden funderade jag mycket på detta och la ner tid, nu orkade jag ej.

Men det klassiska är att man kanske jobbar vanligt med en 4 skärmslösning, sedan ska man arbeta med en laptop som bara har en skärm och då är det problematisk hur man ska göra. Där jag ibland har gjort så att man får en ultrabred skärm där ej hela visas utan man får scrolla till vänster/höger.

Permalänk
Medlem

Skumt att ingen gjort en scrollbar desktop på Linux innan. Finns ju i vissa grafikkortsdrivrutiner i windows, och diverse andra appar finns för ändamålet.

Visa signatur

Core i7 7700K | Titan X (Pascal) | MSI 270I Gaming Pro Carbon | 32 GiB Corsair Vengeance LPX @3000MHz | Samsung 960 EVO 1TB

Permalänk
Medlem

Attans, någon på Sweclockers redaktion verkar ha hittat denna tråden & slängt in på första parket

Nu fick jag ju lite press på mig att faktiskt visa upp något, så här kommer den hemliga funktion 3 (det kommer att bli ett antiklimax för dom flesta tror jag).

Edit: Jösses, dök upp en massa inlägg medan jag skrev detta. Svarar såfort jag kan, kan inte just nu så får bli lite senare. Tack för intresset 👍

Vad?

Så funktion 3 är en inbakad version av HTCondor, eller ja, snarlikt koncept, dock kör jag utan schemaläggare eller kö, allt körs "live", ej distribuerat/klustrat (än), en dator åt gången per process nöjer jag mig med just nu.

Man kan också beskriva den som "x11vnc" fast utan vnc delen & bara input injection delen, jag är en flitig användare av x11vnc MEN mitt stora problem är att ifall jag använder lösningar baserad på frambuffer så funkar det skitdåligt då jag ofta sitter på 4g & 3g uppkoppling med väldigt tvivelaktig uppkoppling & begränsad bandbredd, då är det inte så roligt att hålla på & polla från en framebuffer & slösa bort den lilla bandbredden man har & eftersom x11vnc ändå implementerar en injection lösning för input så varför skicka framebuffer när man lika gärna kan köra hela fönstret lokalt & bara skicka kommandona till remote datorn som kör den relevanta processen ändå? Det blir mycket "billigare" bandbreddmässigt att bara dela input + data (return från remote process) istället för framebuffer.

Funktion #3 hör ihop med funktion #2, all data är delad mellan alla datorer (om inte data-policyn säger annat men då får man hålla koll på att den processen man kör inte använder osyncad data, rörigt förklarat, går in mer på policy i framtiden), detta gör att alla "remote" processer körs lokalt men kan flyttas mellan vilken dator som helst, det spelar egentligen ingen roll på vilken dator en process körs på, processen går att nå från vilken dator som helst (hade ju underlättat om man kunde använda samma PID på alla datorer så man slipper mappa olika PID som är "samma" process mellan dom olika datorerna, har någon en lösning på att tvinga fram en PID så säg till).

Så kör jag ett program lokalt, tex "Writer" så fungerar allt precis som det gör på alla datorsystem, programmet öppnas & startar diverse processer. Medan programmet körs kan jag välja att programmet skall köras på en annan dator i nätverket, all data från processen sparas i ett "middleware", sen spawnas (eller använder en befintlig process om den finns tillgänglig & "tom") en likvärdig process på remote host:en (en annan dator i nätverket alltså), den nya processen mappas till den processen som sparades (middleware agerar som en translator mellan olika men samma process (hur illa förklarar jag egentligen? )) & därefter kopieras all process data till denna nya processen på remote host:en. X öppnar inget fönster på remote host:en utan endast en dolt process då ett fönster inte behövs, detta är som sagt ingen VNC lösning.

Förväxla inte detta med X över nätverk heller, inte samma sak.

Därefter skickas all interaktion med det lokala fönstret till remote processen (fönstret körs fortfarande lokalt till skillnad från VNC lösningar men skickar viss userinput (ej musrörelser & endast interaktion med GUI:t som resulterar i ny data) till den externa datorns process & därmed kan den externa datorns processorkraft användas istället)

(Liten demonstrations-film, filmen är rätt suddig, körde skräpet i en VM på macOS där jag kör en skalad upplösning, glömde av att ändra, så macOS skapar någon obskyr upplösning för att visa 1920xXXXX, så när jag spelade in skärmen via macOS så blev filmen i upplösningen 3686x2304 såååååå, jag, det blev som blev, hoppas det är okej, spelade in typ 10ggr innan skiten slutade krascha så vill inte göra om)

Edit igen: I filmen (tror det var denna jag nämnde det i) att webbläsaren också går att köra remote, det stämmer inte riktigt, det GÅR men det är för tillfället inte användbart, kör man remote så går det inte klicka på länkar, har inget sätt att få tillgång till länkarna & skicka data emellan processerna, i mina egna program skickas datan till remote-processer vid UI:event, men skit samma, man kör inte webbläsare remote ändå, eller jag har inte kommit på någon vettig anledning att göra det iaf.

Varför?

Enkla svaret är lätt tillgång till andra datorer i nätverket, istället för VNC, SSH eller andra lösningar, förenklad delning av data. Tex jag jobbar ofta på min bärbara som går på knäna när jag kompilerar stora projekt, här är det superenkelt att flytta över kompileringen till en annan dator i nätverket så jag kan jobba vidare lokalt utan att störas av resurserna kompileringen kräver.

Encoding är ett annat svar, eftersom all lagring är syncad (med den policyn jag kör nu) så är det lätt att dela upp jobb mellan dom datorerna man har tillgänglig om man vill, finns ju andra (bättre) lösningar som är klustrade, tex Compressor & jag tror Adobe också har något liknande, men licenskostnad & ibland krånglig setup osv, man kan komma undan med att bara skicka iväg lite ffmpeg jobb istället.

Andra saker när den lokala datorn inte har resurser nog (få CPU kärnor & för lite ram), kör det remote på en biffigare dator istället.

Till skillnad från VNC lösningar såsom x11vnc så kopplar man inte upp sig till ett remote fönster utan man kan flytta en process mellan alla datorer man har tillgängliga, programmen är alltså INTE låst till en dator på sättet som VNC lösningar används till.

Tusen andra användningsområden (visar lite andra exempel såfort jag knåpat ihop lite relevantare program). Många (alla) användningsområden finns det redan lösningar på men har alltid viljat ha det inbakat direkt i OS:et.

Känns som jag behöver gå igenom systemet mer genomgånde framöver, tror inte jag förmedlade dess styrkor tillräckligt bra i detta inlägget.

Edit #339830: Nu har jag gjort dom 3 funktionerna jag ville göra så vad saknar ni i dagens OS? Finns det något mer roligt projekt du har lust att ge förslag på så vore jag tacksam. Annars blir det mest att jobba på det visuella framöver.

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Medlem
Skrivet av rektor:

Tänk på att många Linuxdistributioner har eller planerar att gå över från X11 till Wayland.

Så du kanske vill skriva den för Wayland istället för X. Du kanske vill använda ett bibliotek också som libweston eller wlroots.
Det finns även Sway som är en i3-kompatibel fönsterhanterare byggd på Wayland.

X kommer vara med i Många år framöver, wayland saknar alldeles för mycket funktionalitet för att användas av många, sen funkar ju inte nvidia med wayland riktigt ännu.

Ubuntu 18.04 som kommer få 10års uppdateringar har gått tillbaka till X som default.

Man behöver inte oroa sig för att X ska försvinna dom närmsta åtminstone 10+ åren.

Skickades från m.sweclockers.com

Visa signatur

Ryzen 5800x @ 32gb 3200mhz @ 7tb ssd @ 3060ti Fractal r5 @ Arch
i5 4670k @ 24gb 1600mhz @ Fractal r3 @ 12tb ZFS @ Truenas Scale
Thinkpad T450 @ i5 5300u @ 16gb @ 512gb ssd @ 24+48wh batteri @ Debian

Permalänk
Hjälpsam

@JesperA:
Just den där funktion med ett skrivbord större än skärmen fanns ju en gång till W95, vet inte varför man inte fått tillgång till det senare.
Populärt nu är ju virtuella skrivbord men det är inte samma sak.
Kort sagt det är en funktion jag verkligen saknat.

Visa signatur

AMD Ryzen 7 1700 | Saphire RX 5700 Pulse XT (Silent Mode) | 64 GB Kingston ECC | https://valid.x86.fr/z2ljhr | Stockkylaren | Bitfenix Whisper M 750W.
AMD Ryzen 9 5900X | AMD RX 5700 | 64 GB Micron ECC | https://valid.x86.fr/5krwxf
HTPC | https://valid.x86.fr/uuzli0 |

Permalänk
Medlem

Cool tråd, keep up the good work av ren nyfikenhet, är oxfile och potatisgratäng bilderna för att träna neural net?

Permalänk
Inaktiv
Skrivet av Ratatosk:

@JesperA:
Just den där funktion med ett skrivbord större än skärmen fanns ju en gång till W95, vet inte varför man inte fått tillgång till det senare.
Populärt nu är ju virtuella skrivbord men det är inte samma sak.
Kort sagt det är en funktion jag verkligen saknat.

Jag kör med större skrivbord än skärm dagligen och har gjort det länge under mängder av operativsystem.
Men kanske är det hypervisorn i mitt fall VmPlayer som fixar detta.

Permalänk
Inaktiv

Coolt! Personligen ser jag inte riktigt hur det skiljer sig så mycket från att ha flera arbetsytor, som t.ex. i GNOME där man "scrollar" mellan olika arbetsytor med SUPER+PgUp/PgDn. Enda skillnaden är väl att detta är en sorts steglös mekanism, medans GNOME, i3, Sway med mera gör samma sak stegvis. Själv gillar jag inte när fönster överlappar varandra eller bildskärmens kant och på det sättet gillar jag i3/Sway eftersom de anpassar fönster så man slipper det problemet. Blir lätt rörigt när allt ska överlappa och man har fönster som gömmer sig bakom fönster. Med det sagt så önskar jag lycka till med detta spännande projekt!

Permalänk
Medlem
Skrivet av JesperA:

Funktion 1: En slags "Viewport scroll" så ens arbetsyta består av en virtuell yta som är bredare än skärmen man använder, så, när man sitter på en liten skärm, tex på en bärbar så kan man placera sina program/fönster sida vid sida på samma sätt som med en ultrawide skärm

Grymt!

Nu kör jag ju Windows, men just denna funktion har jag saknat sedan Amiga-tiden. Fix for Windows plz!

Vad är det "officiella" namnet för en sådan funktion, om det nu finns något?