i3-overview, ha már követhetetlen mennyiségű workspace-ed van nyitva

Címkék

Ha már nem emlékszel, hogy melyik workspace-en van az ablak amit keresel (nálam 10 fölött történik ez meg), akkor ajánlom az i3-overview nevű kis alkalmazásomat, sematikus miniatűröket rajzol minden workspace-ről amin csak a programok neve és az ablakok címei láthatóak így sokkal gyorsabban megtalálod a keresett ablakot mint folyamatos workspace-pörgetéssel.

Hozzászólások

Egyelőre én is ezt használom, Arch + bspwm alatt, de nem vagyok vele teljesen elégedett, mivel ha véletlen megnyomom ezt a fajta ablaklistát, akkor a gyorsbillentyű elengedésével sem tűnik el ez a rofi ablak, hanem ki kell belőle lépni. Ennek ellenére jobb nincs alapon ennél a megoldásnál maradtam ideiglenesen.

Így bspwm alatt én is tervezek ilyesmit leprogramozni, ami az összes workspace összes ablakát (tekintet nélkül arra, hogy milyen módban van, tiling, monocle, floating) kiteszi egy másik workspace-re ilyen áttekintős tiling nézetbe (míg lenyomva tartva nyomkodom az ablakváltó hotkey-t), és így váltok ablakot. Ez a jó ezekben a tiling WM-ekben, i3wm/Sway, bspwm, awesome, stumpwm, herbstluftwm, stb., hogy van ilyen IPC-t használó client birizgálójuk, amivel a WM futása alatt bele tudsz nyúlni a WM működésébe, új funkciókat, új layoutokat, speciális session-öket tudsz leprogramozni egy pár soros shell scripttel, anélkül, hogy a WM forráskódjába bele kéne nyúlni, meg újra kéne az egészet fordítgatni/indítgatni. Ez a fajta rugalmasság annyira hatékony, hogy ezt egy egyszeri DE, meg Windows/Mac user sose fogja megérteni, hogy ez valójában a Linux előnye, hogy ilyen rugalmas és hatékony uralmad van a saját rendszered között, és nem egy nagy tech multi és trendidióták által lekorlátozott, lebutított, egy mindenkinek megoldást kell elviselni, ha tetszik, ha nem.

Igazából nekem ezért sem jött be a dwm. Igen, minimalista, de pont az ilyen dolgok hiányoznak belőle, pl. EWMH support (ez lehetővé teszi az xdotool és hasonlókkal történő birizgálást is), IPC/socket/client interface, mindenféle panel (polybar, lemonbar, hasonló) korrekt támogatása, megjelenítése. A hiányzó funkciókat persze bele lehet patchelni a dwm kódjába, de idegőrlő, állandó újrafordítgatás, újraindítgatás, és elkezd a bináris is hízni méretre, memóriafoglalásra, elveszítve ezzel az egyetlen előnyét: kis kódméret. Ezzel szemben egy bspwm, stb. kicsivel több memóriát eszik, alig minimálisan pár megával (5-10 MB, az i3wm kicsivel még többet, de nem ilyen +200), de cserébe viszont végtelen rugalmasságot ad az felhasználója kezébe.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Én tematikus workspace sémát használok, tehát tudom, hogy hol mit találok meg, hol vannak a helyi konzolok, a remote konzolok, a fejlesztőeszközök, a böngészők, a chat ablakok és az egyebek. Egyszer kell kialakítani, beleszokni és utána rutinból már igen jól használható...

Így van. Itt azt kell érteni, hogy a tiling WM más koncepcióra épül. Azért nincs is bennük task váltás, mert az a stacking/floating WM-ek sajátja. Tiling WM-nél layoutok és workspace-ek/tag-ek között kell váltani, és nem ablakok között, különben is tiling módra vannak ezek szánva, ahol eleve látod az adott workspace-en az összes alkalmazást. A tiling egész más workflow, általában eleve nem is egér, hanem billentyűzetorientált, szokni kell, más a filozófia mögötte.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

es ha egyszer veletlenul kikapcsol a laptopod, akkor hogyan allitod helyre az egesz kialakitott munkakornyezetet?

En a terminalt nem tudom megtanitani, hogy kinyissa, azt a kb. 20 tabot, amit szoktam.

Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

es ha egyszer veletlenul kikapcsol a laptopod, akkor hogyan allitod helyre az egesz kialakitott munkakornyezetet?

Sokszor előfordul, hogy kikapcsolom, újraindítom, altatom.

En a terminalt nem tudom megtanitani, hogy kinyissa, azt a kb. 20 tabot, amit szoktam.

Hát ezeket újra kell nyitni, SSH ugye nem igazán képes arra, hogy túléljen egy újraindítást, de mivel ott van a history-ban, amikor újra kell, hamar megnyílik. :)

Alapvetően arra akartam reflektálni, hogy ha az ember kialakít egy szokást, hogy mi hol van, akkor rutin lesz "oda nyúlni", akárcsak a polcon a szortimentbe, hogy hol vannak az elektronikai alkatrészek...

Megoldható. Csak scriptként elindítod a neked kellő alkalmazásokat, minden WM-nek van rc-je, vagy autostart-ja, vagy az xinitrc-be is beteheted. Az, hogy melyik progi melyik kijelzőn, milyen módban nyíljon, azt meg a WM config fájljában lehet bekonfigurálni, és onnantól mindig automatikusan oda nyílnak, de akár a scriptbe is bele lehet venni, ami az alkalmazásokat indítja, és velük együtt az adott WM IPC interface-én lekommunikálja a szabályokat (melyik ablak hova nyíljon, milyen méret vagy milyen ablakozó mód, tiling, azon belül milyen layout, vagy monocle/tabbed, vagy floating).

Terminál ha nem is tud 20 tabot automatikusan kinyitni, attól még megoldható terminál multiplexerrel, ezek közül a tmux a legfelkapottabb, de ezen túl sokféle létezik. Ezekkel vissza tudsz hozni komplett sessiont, több SSH kapcsolattal is. Én nem művelek ilyet, de ha kéne, simán meg tudnám így oldani.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Jut eszembe, tud valaki ncurses calendart, ami ert Google Calendarul? :)

Szerintem a khal jobb, vdirsyncerrel tudod synchronizálni google-lel. Nagyon faszás ebben a megoldásban hogy offline is megy gond nélkül.

Contra: Mindegyikkel az az alapvető gond, hogy időnként (hetente?) újra kell loginolnod browser-en keresztül, mert opensource projektek lévén nem tudják beregisztrálni google által validált app-nak, vagy hát be tudnák, csak nincs hova elmenteniük a secret-et anélkül hogy kiszivárogna.

Szerkesztve: 2021. 12. 04., szo – 11:27

Bocsi, kérdeznék valamit...
A zc_bitmap.c forrásában a struct _bm_t data tag-je uint8_t* (L#14). A bm_write függvényben innen olvasod be az r, g, b változókat (L#112). Ha a data uint8_t*, akkor miért kell az onnan beolvasott értékeket levalidálni, hogy nagyobbak-e, mint 255?

Sz*rk: Másik kérdés: a koordinátákból az indexeknek a folyton újraszámolgatása helyett nem volna gyorsabb a sorfolytonos írás és olvasás, az alpha skippelésével? Valami ilyesmire gondolok:

  int s_index = 0;
  int d_index = 0;
  int c = h * w;
  for (int i = 0; i < c; i++)
  {
    uint8_t r = bm->data[s_index++];
    uint8_t g = bm->data[s_index++];
    img[d_index++] = bm->data[s_index++]; // b
    img[d_index++] = g;
    img[d_index++] = r;
    ++s_index;
  }

raadasul ez valami endian swappolasnak nez ki, valami ilyesmi egyszerubb es gyorsabb is (persze img tipusa char helyett uint32 vagymi):

img[(x + y * w)] = (bm->data[index + 2] << 24) || (bm->data[index + 1] << 16) || (bm->data[index] << 8);

a vegen ugyis 3 bajtonkent irja ki, de van 1 bajt/pixel felesleges adatunk, de gondolom nem 8k kepekkel dolgozik.

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Egyrészt így megint folyton számolgatni fogja az indexet a sorfolytonos írás és olvasás helyett. Másrészt a végén nem 3 byte-onként írja ki, hanem w-szer 3 byte-onként (soronként), ami azt jelenti, hogy ha nem dobja el őket előtte, akkor az összes alpha csatornát is bele fogja tolni, viszont cserébe le fog maradni az utolsó w * 4 - w * 3 byte.

Sz*rk: Egyébként a kiírást is fel lehet írni úgy, hogy ne kelljen a pointert minden körben újraszámítani, csak felvesszük az utolsó sort egy pointerbe, onnan indulunk, majd mindig a sor méretével csökkentjük. A paddingnál a (4 - (w * 3) % 4) % 4 kifejezés pedig sosem változik, azt sem kell mindig újraszámolni. Valahogy így:

  int ls = w * 3;
  uint8_t *ptr = img + ((h - 1) * ls);
  int ps = (4 - (w * 3) % 4) % 4;
  for (int i = 0; i < h; i++)
  {
    fwrite(ptr, 3, w, f);
    fwrite(bmppad, 1, ps, f);
    ptr -= ls;
  }

helló, tök jó hogy elmélyedtetek a kódban! :)

a bm_write az utolsó pillanatban került bele mert akartam összehasonlító teszteket a thumbnail generátornak. a kérdéses kódrészt a stackoverflow-ról copypasteltem, működött és úgy is hagytam. szívesen veszek mindenfajta optimalizálást, küldj egy pull requestet és acceptalom azonnal!

Ez azoknak való, akik browser tabból is 50-et tartanak nyitva? :D

Szerkesztve: 2021. 12. 06., h – 08:24

Valamikor én is hardcore i3wm felhasználó voltam de aztán váltottam GNOME3-ra (nem volt könnyű megszokni, szeretni most se szeretem) mert folyton gányolni kellett ahhoz, hogy alap dolgok amiket az ember elvár egy DE-től meglegyenek, terminálos parancsok írkálása nélkül:

  • hálózatmenedzsment applet valahol a tálcába integrálva (wifire csatlakozáshoz főleg)
  • hang ki-/bemenet- változtatás
  • kalendárium
  • visszanézhető értesítések
  • automatikus elalvás (suspend), felébredéskor lezárt képernyővel (céges security policy követelmény)
  • billentyűzet kiosztások közötti váltás
  • hasonló apróságok, kényelmi dolgok

Kíváncsi vagyok, hogy azok akik jelenleg is valami hasonló minimalista Tiling WM-et használnak, hogy bírkóznak meg ezekkel a problémákkal? Ez a post most meghozta a kedvem megint az i3wm-hez, de mielőtt fejest ugrok szeretném látni, hogy másoknak mi a tapasztalatuk. Annak idején egy ideig XFCE sessionön belül futtattam az i3-at, még egy tálca plugint is írtam az integrálódást segítendő (https://github.com/denesb/xfce4-i3-workspaces-plugin).

Amúgy alkalmazások terén nagyon kevés igényem van, majdnem mindent terminálban végzek (tmux-ot használva). Terminálon kívül böngészőt, egy email klienst (Evolution), valamint chat klienseket használok csak (Telegram és Discord).

 

SZERKESZTVE: kifelejtett fél mondat pótlása, pár újabb bejegyzés a listán

:wq

Alapvetően ezek appok, amikből bármelyiket választhatod, nem kell egy window managernek ilyeneket adnia. Én sway-t használok, előtte awesome-ot, mindegyiknél be lehetett állítani hogy fusson meg egy parancs suspendkor. Mindegyik meg tudja nyitni az akármelyik calendart, amelyiket szeretnéd, akár a gnome-ét ha olyanod van. Mindegyik tud több féle notification manager-t kezelni, amikben akár billentyű only tudsz navigálni. Keybindingra is adnak lehetőséget, de ha nem, akkor xbindkeys-szel könnyen tudsz csinálni. Olyan windows manager-t se használnék, ami nem tud toolbar iconokat megjeleníteni. De azt gondolnám, mindegyik mutatja az elindított programok iconjait, legyen az nm-applet (networkmanager default appletje), vagy valamelyik hangerőszabályzó programé (bár ez utóbbit én jobb szeretem a volume gombokkal kezelni, állapotkijelzésre tudom ajánlani a "wob"-ot). Valszeg ami appleteket most használsz, azok nagyrésze sem gnome-only, hanem más window managereken is el tudod indítani, ha nem találsz kevésbé bloatot.

Persze ha csak 3 programot használsz, lehet h tudsz valami olyan desktop environmentet találni amik azokat alapból beállítva adják, de egy window managernek általában nem célja megmondani mit hogyan csinálj, épp ellenkezőleg, sokféle workflow-t be tudsz rajta állítani, ahogyan te szereted. Persze egy kis engergia befektetéssel.

A Gnome es az i3 kozott ket dolog jutott eszembe:
Az i3-hoz kozelebbi vegen a skalalnak a Regolith van, eleg sok mindent lefed: https://regolith-linux.org/
gnome-fallback -ra epul, vagyis a klasszik Gnome-os Settings fog szembe jonni ha nyomsz egy Super + C -t (C mint Config :) )
egy meglevo Ubuntu-ra egy PPA hozzaadasa utan egy apt install -lal feltolhato (es le is veheto ha nem kell)
probald ki, tetszeni fog

A Pop!OS tiling modja is egesz pofas, az a skala masik vege, a Gnome-ra huztak ra egy tiling modot