bing háttérkép és KDE

Írtam magamnak egy kis bash scriptet, mely a Bingről leszedi az aktuális képet. S ezt használom háttérképnek.
Eddig nem foglalkoztam azzal a résszel, hogy milyen időpontban jön ki az aznapi kép. Úgy vettem észre hogy olyan reggel 8:30 tájékán.
De mi van akkor, ha már korábban bekapcsoltam a gépet, és mivel nincs új kép, így nincs is mit lecserélni. 
Viszont eljön az idő, és lehetne képet cserélni, de hogyan?
Nos elvileg ezt is megoldottam. Az időzítést a systemd --user-re bíztam, mely óránként lefuttatja a scriptet. 
De érdekes módon csak akkor vált képet, ha manuálisan indítom a scriptet. Ha a systemd, akkor nem.
Tudom hogy a KDE-nek van ilyen featuréja, de én egy kicsit megspékeltem, és a kép nevét ráiratom a képre hogy mit is látunk.
Közvetlenül a Microsoft Bing vízjel alá. A mai napon (2022/09/24) ez a felirat látható: Acadia National Park, Maine, USA 
A feliratot ezzel teszem rá.
 

convert "${workdir}/${picName}.${ext}" -pointsize 20 -fill white -undercolor '#00000080' -gravity SouthEast -fill white -annotate +97+110 "${picName}" "${workdir}/${wallpaperName}.${ext}"

A KDE háttérképet ezzel a paranccsal módosítanám:

qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "
                var allDesktops = desktops();
                print (allDesktops);
                for (i=0;i<allDesktops.length;i++) {
                    d = allDesktops[i];
                    d.wallpaperPlugin = \"org.kde.image\";
                    d.currentConfigGroup = Array(\"Wallpaper\", \"org.kde.image\", \"General\");
                    d.writeConfig(\"Image\", \"file:${bingDir}/${wallpaperName}.${ext}\")}"

S ez a konzolban kiadva le is cseréli a képet, systemd-ből futtatva viszont nem. Holott felhasználó nevében fut.
Hogy lehetne ezt kontrollálni, hogy mi történik? Vagy valami log? Bash szkript, de a -x nem vezet eredményre, mert a qdbus látszólag hiba nélkül lefut. Nincs hibaüzenet.

Hozzászólások

Esetleg valamilyen környezeti változó hiányzik? A

print (allDesktops);

ugyanazt írja ki mindkét esetben? Nem lehet, hogy a config módosítás megtörténik, de systemd esetén nincs frissítés (lekérdezheted a config beállítást, hogy az megváltozott-e)?

Írj egy c programot, ami daemon-ként fut és 60 másodpercenként meghívja a te script-edet:

A program:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc,char *argv[],char **env)
{ printf("\nHello Nextra!");
  daemon( 1, 0 );
  while(1)
  { system("a_te_scripeted_elérési_útvonala");
    sleep(60); // 60 sec
  }
}

Fordítás:

gcc program.c -o program.o

Indítás:

./program.o

Leállítás (ha kell):

pkill program.o

Közzé tudnád tenni a teljes scriptet? Ez engem is érdekelne. Nem használok KDE-t, de átpatkolnám magamnak dkwmr + feh kombóra. Végül is nekem csak egy elérési út kéne a fájlrendszerben, hogy a háttérképeket hol tárolja a böngésző, vagy ilyen URL-ről lehet ezeket szedni, onnantól megírom magamnak a többit.

The world runs on Excel spreadsheets. (Dylan Beattie)

Komolyan kérdezem egyébként nem kötözködés, de az időtők hány %-ban látjátok a háttérképeteket? Tekintsünk el attól hogy itt a megvalósitás a lényeg, arra célzok csak, hogy évekkel ezelőtt ráeszméltem hogy kb. bejelentkezéskor 2-3 mpig meg kijelentkezéskor talán még 1 mp-ig látom a háttérképemet és azóta nem tudom komolyan venni a témát abban az értelemben, hogy felőlem egy betonfal képe is lehetne, teljesen irreleváns.

[insert line here]
B.C. 3500 - DIY Vehicle / A.D. 30 - DIY Religion / A.D. 1991 - DIY OS

Ez valóban jogos, de én azért szoktam mindig háttérképet kitenni, és váltogatni. Csak mert ad egyfajta esztétikumot, jó közérzetet, és hardverigénye nem sok van. Pl. feh háttérképkezelőt használok, ez olyan, hogy kiteszi a képet a root window-ba, aztán kilép, a képet kint hagyja, így még memóriát, prociidőt se eszik, mivel nem fut tovább a háttérben, így miért ne használjam. Magát a képet valóban nem látom sokat, míg először el nem indítok valamit, vagy esetleg néha ha mindent bezárok vagy virtuális asztalt váltok olyanra, amin még nincs elindítva semmi. Egyébként a legtöbb alkalmazásom úgyis maximális ablakban fut (nem teljes képernyőn, mert a panel látszik), vagy tiling elrendezésben, de akkor is kitakarják lényegében a háttérképet, annak csak egy kis része szűrődik át a csempék közötti réseken (de még rés sincs minden virtuális asztalon, csak az egyiken).

Egy időben kísérleteztem xsetroot-tal is, aminek megadva a -solid "#rrggbb" kapcsolót tudsz háttérszínt megadni, egyfajta minimalizmus jegyében elment párszor, de aztán gyorsan unalmas, túl száraz lett. Ha neked a betonfal jön be, arra is vannak háttérképek, festett, festetlen falak, téglafal, kőfal, kőmozaik kirakás, szoktak ilyen képek fent lenni háttérképes oldalakon. Régen interfacelift.com-ot használtam, aztán váltottam alphacoders.com-ra, most meg főleg unsplash.com és wallpaperup.com oldalakról szedem a képeket, illetve mások git-es (főleg linuxos) tárolóiból, de néha még redditről/unixporn-ról, Google/DDG képkeresőből is szedek jó háttérképet. Előre betárazok jó sokat, aztán lesz egy ideig miből választani.

The world runs on Excel spreadsheets. (Dylan Beattie)

Csak példa volt a betonfal arra hogy mennyire mindegy, a debian homeworld képeket hagytam meg mindenhol lévén alig látom. Főleg aki tiling-wm használó annak meg tényleg ahogy irod max résekben látszik néha, de pont hogy feltöltöd a képernyőt produktiv dolgokkal igy kiscica/betonfal/akármi is lehet a háttérben.

[insert line here]
B.C. 3500 - DIY Vehicle / A.D. 30 - DIY Religion / A.D. 1991 - DIY OS

Ez a Debianart se rossz, sőt, most hogy ezt írod, a deviantart-ról, pinterestről, stb. is lehet képeket vadászni. Nekem ezek a gyári, brand-logós képek gyorsan unalmasak lennének, de hát kinek mi. Eleve nem is vagyunk egyformák, a legtöbb átlag user pl. soha nem vált háttérképet, használja a default-ot, nem csak Linuxon. Anno láttam olyan embereket, akik 10-20 évig a zöld dombos default XP háttérképet használták, meg a témát se váltották át a kék Luna-ról, aztán váltottak Win7-re, ami szintén azt a default motívumos világoskék hátteret használták. Egyszerű lustaság általában az oka, ha nem muszáj, nem dolgoznak vele, mert valamit letölteni meg kettőt kattintani is feleslegesen nagy munka nekik. Nekem pl. még trey-nél is az rémlik, hogy most már lassan 16. éve ugyanazt a lilás ubuntus default hátteret használja, ami alaptelepítésben jön az épp aktuális verzióval, ő az anti-ricing egyik példaképe. Pont nekik lettek egyébként kitalálva ezek az automatikus háttérképváltó, randomizáló scriptek, DE-k, így mindig van valami másik háttérkép, anélkül, hogy megunná az ember, és kézzel kéne váltania. Ma már weboldalak is vannak, amik tudnak algoritmus vagy AI mentén háttérképet generálni, mindig mást, ezt is be lehet vetni, akinek nincs türelme választani.

Igazából bármit ki lehetne egyébként tenni, főleg Linuxon, a root window bármit elbír, akár mpv-vel vagy ffplay-jel egy videót is ki lehet tenni loopban, vagy egy bezárhatatlanná tett, teljes lépernyős, decoration-mentes terminálablakban futó asciiquarium, cmatrix, pipes.sh, bonsai-tree, boxes + lolcat, stb. ASCII animációt, vagy ASCII artot/szöveget/mintát, esetleg curl wttr.in oldalt, vagy amit akarsz, sőt ezek screensaverként és lockscreenként is bevethetők. Még akár egy teljes képernyős böngészőt is, amiben valami dizájnos weboldal fut. Igazából még az a xsetroot se rossz, amit írtam, pl. retró DE/WM-ekhez nagyon jól megy, nekem volt egy időben IceWM alatt Win95 téma, azzal a teal-zöld egyszínű háttérrel, ami Win95-98-on volt default (xsetroot -solid "#008080"), vagy pl. Motif/mwm/CDE-re hajazó desktopon azok az eredeti fakó pasztellszínek, retrósan jól tud mutatni, esetleg BeOS/Haiku-témánál is jól mutat az egyszerű, egyenkék háttér. Ez a jó a Linuxban, azzá tudod tenni működésben, látványban, amivé csak akarod, nem vagy hagyományos megoldásokhoz kötve, a lehetőségeknek csak a fantázia szab határt. A pywal is jó cucc, az az aktuális háttérkép domináns színei alapján csinál az egész WM-nek, terminálnak színben passzoló témát. Az is igaz, hogy én is leszokóban vagyok ezekről a vizuális szépítésekről, effektekről, de teljesen megértem, ha valaki használja ezeket, ha már vannak, miért ne alapon. Mindenkinek más az igénye, ingerküszöbe, stb..

The world runs on Excel spreadsheets. (Dylan Beattie)

Attol fugg, ha onalloan hasznalom a laptopomat, akkor viszonylag keveset. Ha itthon vagyok, es radugok 2 masik monitort pluszban, akkor sokszor van, hogy az adott virtualis desktopon nincs az adott kepernyon semmi, es a hatterkepet mutatja.

A strange game. The only winning move is not to play. How about a nice game of chess?

Ez szerintem pocsékolás, hogy fut egy alkalmazás, de a képernyőnek csak a felét használod. Pont erre találták ki a tilingot, ami felossza a képernyőt csempékre, és igyekszik legoptimálisabban kihasználni a helyet, úgy, hogy semmi ne takarja egymást, de pocsékba sem menjen kihasználatlan hellyel. Így pl. ha csak egy alkalmazás fut, azt kiteszik maximális méretre, de ahogy elindul a többi, úgy kezdik felosztani, előbb megfelezni, majd ehhez igazítani a többit.

The world runs on Excel spreadsheets. (Dylan Beattie)

Böngésző mindig fut, de sok olyan weboldal van ami nagyon hülyén néz ki teljes szélességben. 
Nem is kell olyan messze menni :D

Két virtuális monitorra van osztva a képernyőm, kvázi csempék amiket Te is említesz. De hát egy böngésző esetében nincs mit kipakolni a másik oldalra. 

Viszont jó is tud ez lenni igy. Pl .fut a WoW háttérben full képernyőn, előtte a használom a böngészőt fele képernyőn és közben látom a játékban a chatet, csapat keresőt...
Pl. igy

Aláírom, hogy vannak oldalak, amik hülyén néznek ki. A HUP pont nem olyan rossz még, de valahol preferencia is, hogy mekkora sorhosszat akarsz. Emlékszek, hogy még évekkel ezelőttig a hwsw, Prohardver pl. balra igazított szűk hasábos oldal volt, és modern felbontásokon tényleg nagyon nevetségesen néztek ki, hogy a hatalmas böngészőablak bal felén volt valami keskeny hasábos légypiszok, apró betűkkel (még az őskor 800×600 felbontására voltak ezek optimalizálva), de aztán felfejlődtek ezek az oldalak is, középre igazították őket, meg rugalmas méretű divekkel kihasználták a helyet, észszerű mértékben nagyobbak lettek a fontok. Sok most se tökéletes, de olvashatatlannak nem mondanám. Félre ne érts, a HUP se olyan jó, mint lehetne, a fontok pl. még mindig elég aprók, de ezt meg nagyítással (pl. FF alatt Zoom Text Only) szépen meg lehet oldani, ami akár a túlzott sorhosszat is kompenzálhatja. Egyszer kell beállítani, onnantól a böngésző megjegyzi.

The world runs on Excel spreadsheets. (Dylan Beattie)

Ez nagyban felhasználás- és kijelzőfüggő is, milyen-hány kijelződ van, milyen felbontásúak, milyen alkalmazásokat használ valaki. Régen én is bele voltam szerelmesedve ezekben az átlátszósági-elmosásos effektekbe, de aztán nem csak ráuntam, hanem beláttam, hogy kontraproduktív. Pl. ha átlátszó, nehezebben olvasható a terminál, meg ha adsz neki valami saját színtémát, abban a háttérszín nem annyira tud érvényesülni, kifakul, elveszik vizuálisan. Plusz minden átüt az ablak alatt, ha pl. alatta már nem az asztal/háttrékép van, hanem egy másik alkalmazás, akkor azt is látod, és zavaró egy idő után, ezen az elmosás se tud segíteni egy szinten felül. Elismerem, hogy jól néz ki az átlátszóság, futurisztikusan, de hosszú távon adott esetben nem mindenkinek a legjobb stratégia.

The world runs on Excel spreadsheets. (Dylan Beattie)

Szerkesztve: 2022. 09. 25., v – 22:13

Szerintem variety. Ha jól láttam, ezt is tudja és a a KDE-t is támogatja.

Sikerült. Megoldottam. Úgy tűnik a KDE-nek az azonos névvel van baja. Így hozzá kellett csapnom egy UTC időt a fájlnévhez. Majd egy symlinket képezni ebből hogy a lightdm háttérkép is működjön.
Némi kódoptimalizálást is végeztem rajta.
S itt kérdezném meg hogy megoldható-e egyszerűbben is a következő szűrés. Az alábbi sort szeretném megvágni.

kép címe (fotós)

Nincs szükségem a a zárójelekre, a benne lévő szövegre, és a kezdő zárójel előtti szóközre. Jelenleg ezt most így oldom meg.

awk -F '(' '{print $1}' | sed 's/[ \t]\+$//'

Nemsokára frissítem a linken lévő scriptet.

Ha jól gondolom, valahonnan jön ez a sztring (különben az awk sem tudja feldolgozni). Legyen ez "p". Tehát a te kódod ez lenne:

p | awk-F '(' '{print $1}'| sed 's/[ \t]\+$//'

Javaslom helyette:

x=`p` ; echo "${x%% (*}"

De lehet amúgy:

p | sed 's/ (.*//'

Nem egészen értem, hogy az azonos név mit korlátozott. Ha jól értem, akkor rendszeresen szedte le a script a Bing képeket, de volt, ami nem változott az utolsó lekérés óta. Ezt kulturáltan is meg lehet oldani, hogy a meglévőt felülírja, mondjuk > típusú átirányítás segítségével, vagy cp vagy mv -f segítségével. Adhatsz neki valami általános nevet is, pl. todays_wallpaper, még kiterjesztés sem hinném, hogy kell. Ha wget-tel vagy curl-lel szeded, akkor eleve megadhatod, hogy milyen néven, hová mentse, ütközés ilyenkor sem lesz, felülírja a régit.

Az se világos, hogy ha az azonos név volt a baj, akkor miért futott le kézzel futtatva a szkript, de systemd service-ként miért nem. Ami még hasznos ilyenkor, ha a szkript első érdemi sorába beteszed a set -e -x parancsot, akkor az első hibánál leáll az egész szkript futása, mintha exit-tel kiléptél volna belőle, plusz minden parancs futásánál írja a kimenetre, hogy milyen parancsot futtatott. Így látod pontosan hol hasalt el a szkript. Könnyebb, mint neked kezelni és figyelni, hogy az utolsó parancs sikeres volt-e, vagy mi a kimenete, mi volt a hiba.

Vagyis látom, hogy -x megadásával próbálkoztál, de a qdbus elfedte a működést. Sajnos ez a baj a nagy DE-kkel, mint a Gnome, KDE, Cinnamon, Budgie, hogy iszonyat szanaszét vannak komplikálva (felét nem használja ki egy átlag desktop user), nem tudsz belenyúlni, szorosan kontrollálni a működését, mert nem látsz bele, önállósítja magát. Másik ponton pont ez az előnye egy fapad WM-nek, hogy egyszerű az egész, egy plain text konfigájl, meg az egész indítható egy darab xinit szkriptből, ahol világosan megadhatod a parancsokat, hogy mi fusson le betöltéskor, ott csak betolom neki ezt a két sort, ha ilyesmi kéne:
wget -O ~/todays_wallpaper https://bing-bla-bla.akármi/izé/tippelek/kép ; feh --bg-fill ~/todays_wallpaper &

Persze ki lehet tenni külön szkriptbe, és azt meghívni háttérbetöltése (& karakterrel a végén), hogy ne tartsa fel a WM betöltését, vagy a szkript futását a systemd-vel ütemezni (ilyenkor mondjuk figyelni kell a szkript elején, hogy fut-e az X). Ennek a technikának külön előnye, hogy ha valami miatt a wget sikertelen, akkor megmarad a régi háttérkép, a feh akkor is betölti. Ilyen fapados, minimalista megoldással teljes a kontroll, látod mit tölt be, nem kell dbus-hülyeségekkel szórakozni, nem futnak mindenféle ilyen busz, amolyan kamionos, freedesktopos, villamosos mindenféle libes szutykok a háttérben, ha nincs rájuk egyértelműen szükség. Ha valami szükséges, akkor beteszed kézzel, dbus-launch akármi, stb., de akkor meg nem önállósította a rendszer magát. Hatalmasat vág vissza komplexitási szintben, futási-betöltési idő akár 100-szorosára gyorsul, és könnyebb debugolni is, ha hiba van. Könnyebb a konfigot is hordozni később más rendszerekre, meg évek múlva előszedve értelmezni, mivel csak pár sor az egész, érteni mi miért volt benne, akár kommentelni is lehet.

Azt is értem, hogy ezt most meg tudtad oldani, teljes siker. Ha mákod van, és a következő 1-2 KDE alverzióval sem törik el (vagy nem bugzik, ahogy szokott minden KDE-n), akkor majd garantálom, hogy legkésőbb a KDE6-ra átvariálnak mindent, és kezdheted elölről megcsinálni ezeket a saját reszeléseket.

The world runs on Excel spreadsheets. (Dylan Beattie)

Szerkesztve: 2022. 10. 10., h – 08:12

en szurke szemkimelo hatteret valasztottam vagy 20 eve :D

ugyse latom legtobbszor, ha meg igen akkor ne follyon ki a szemem :D