Keri sisuni

Kesta pistikprogrammid

OmarOS töölaud töötab ühe pikaealise Quickshelli protsessina nimega omaros-shell ja peaaegu kõik, mida ekraanil näed, on selle sees olev pistikprogramm. Riba on pistikprogramm. Nagu ka paneelid, mis sellelt alla langevad, täisekraani ülekatteid nagu emoji valija ja lõikelaua haldur, OmarOS menüü ise, lukkuekraan, polkit dialoog ja peata teenused, mis jälgivad sinu akut ja soojendavad öösel ekraani.

See pole lihtsalt rakendusdetail. See tähendab, et saad töölaua osi välja lülitada, välja vahetada või kirjutada oma, puudutamata rida ka OmarOS lähtekoodi.

Esmase osapoole pistikprogrammid tulevad OmarOSga ja elavad kaustas $OMAROS_PATH/shell/plugins/. Kõik, mida ise lisad — oma katsetused või midagi, mille GitHubist leidsid — elab kaustas ~/.config/omaros/plugins/. Mõlemad avastatakse käivitamisel samal viisil, kuid sisseehitatud saavad usaldusväärsed kesta liidesed, samas kui kolmanda osapoole pistikprogrammid saavad piiratud liidese, mis on piiratud nende oma teenuse ja elutsükliga. Sisseehitatute kloonid säilitavad ainult allikaspetsiifilise konfiguratsiooni ja UI kõned, mida on vaja algse käitumise jaoks.

Selle nägemine, mis sul on

omaros plugin list

See prindib iga avastatud pistikprogrammi koos selle ID-ga, kas see on lubatud, kas see on esmase või kolmanda osapoole, selle liigid ja kuvanimi. Lisa --json, kui söödad seda millelegi muule.

Pistikprogrammide ID-del on nimeruumi. Sisseehitatud algavad kõik omaros.-ga — omaros.clock, omaros.network, omaros.notifications — ja see nimeruum on reserveeritud, nii et kolmanda osapoole pistikprogramm ei saa seda kunagi nõuda.

Nende sisse- ja väljalülitamine

omaros plugin enable omaros.tailscale
omaros plugin disable omaros.weather

Või kasuta menüüd: jaotis Seaded > Plugins on Enable, Disable, Add, Clone ja Remove, igaühel valija, mis pakub ainult pistikprogramme, mis selle toimingu puhul mõttekas on.

Lubatud olek salvestatakse faili ~/.config/omaros/shell.json ja reegel on kahe pistikprogrammi liigi puhul veidi erinev. Kolmanda osapoole pistikprogramm on lubatud täpselt siis, kui selle ID ilmub kuskil selles failis — riba paigutuse kirjena, kirjeks plugins[]-s või bar.id-na. Esmase osapoole pistikprogrammid, mis pole riba vidinad, on vastupidi: need on vaikimisi sisse lülitatud ja lülituvad välja ainult siis, kui need on loetletud disabledPlugins[]-is.

Täielikul ribapistikprogrammil pole üldse väljalülitatud olekut. Riba on alati täpselt üks, nii et asendad selle teise lubamisega. Riba vidinate paigutust käsitletakse jaotises menüüriba.

Pistikprogrammi lisamine gitist

Kolmanda osapoole pistikprogramm on lihtsalt giti repo, mille juures on manifest.json.

omaros plugin add https://github.com/acme/omaros-weather.git --enable

Enne, kui see midagi teeb, ütleb see sulle selgelt, et pistikprogrammid töötavad suvalise, liivakastita koodina sinu pikaealise kestaprotsessi sees, näitab URL-i ja palub sul kinnitada. Võta seda tõsiselt. Kolmanda osapoole pistikprogrammi liides ei paljasta otse autentimisteenuseid ja asendusriba saab ainult piiratud võimalused konfigureeritud mitteautentiva UI jaoks. Visuaalsed pistikprogrammid jagavad endiselt kesta QML stseeni ja saavad liikuda tavaliste vanemobjektide kohal, samas kui kogu pistikprogrammi kood töötab kõigega, millele sinu kasutajakonto ligi pääseb. Autentimisolekut kaitstakse eraldi, hoides need teenused kättesaadavast hosti objektgraafist väljas. Lisa ainult reposid, mida oled valmis käitama, ja loe neid enne lubamist.

Asendusriba saab renderdada paigaldatud vidinaid, kuid teenusega toetatud kolmanda osapoole vidinatel võib seal olla vähenenud funktsionaalsus, kuna ribal pole lubatud küsida teise pistikprogrammi elava teenuse objekti. Lülitu tagasi sisseehitatud ribale omaros.bar, kui selline vidin vajab oma kaasteenust.

Seejärel kloonib see repo lavastuskausta, valideerib manifesti, keeldub paigaldusest, kui teine pistikprogramm juba seda ID-d nõuab, ja teisaldab selle kausta ~/.config/omaros/plugins/<id>/. Ilma --enable-ta küsib see, kas soovid selle nüüd sisse lülitada, ja saad ei öelda ja kõigepealt koodi lugeda. See ei käivita kunagi midagi pistikprogrammist, ei käivita kunagi paigalduskonksu ega küsi kunagi sudo — see kloonib faile, kontrollib manifesti ja lülitab biti IPC kaudu.

Uuendamine on sama checkouti kiire edasitõmme:

omaros plugin update acme.weather
omaros plugin update

Ilma ID-ta uuendab see kõiki sinu giti hallatavaid pistikprogramme. See näitab sulle diffi enne selle rakendamist, keeldub uuendamast, kui sul on kohalikke muudatusi, millest see ei saa kiiresti edasi minna, ja võtab tagasi, kui uus revisjon valideerimisel ebaõnnestub.

omaros plugin remove acme.weather

Eemaldamine keelab pistikprogrammi kõigepealt, seejärel kustutab selle, kui see on giti checkout (repo on endiselt ülesvoolus), või unlingib selle, kui see on sümbolviit. Käsitsi tehtud pistikprogrammi kaust ilma giti repota teisaldatakse selle otse kustutamise asemel ajatempliga varukoopiasse pistikprogrammide kausta sees.

Sisseehitatud kloonimine selle muutmiseks

See on minu lemmikosa. Kui soovid muuta sisseehitatud vidina käitumist, ära redigeeri faile kausta $OMAROS_PATH all — need kuuluvad paketile ja järgmine uuendus kirjutab need üle. Klooni see hoopis:

omaros plugin clone omaros.clock

See kopeerib kogu pistikprogrammi kausta ~/.config/omaros/plugins/omar.clock (sinu kasutajanimi, mitte minu oma), nimetab selle ümber "My Clock", lubab selle ja lülitab kesta sisseehitatult sinu koopiale — säilitades olemasoleva riba vidina asendi ja seaded. Lisa --edit, et avada uus kaust kohe oma $EDITOR-is, mida menüü jaotis Seaded > Plugins > Clone Plugin sinu eest teeb.

Kasutajanime eesliide hoiab sinu klooni ID-d sinu oma, nii et selle jagamine ei põrka kellegi teisega. Algsele sisseehitatud ID-le tehtud kõned suunatakse sinu kloonile, nii et miski, mis viitas omaros.clock-le, ei vaja uuendamist. Ja kui teed sellest segaduse, paneb omaros plugin remove omar.clock sisseehitatud tagasi.

Faili salvestamine kuskil kausta ~/.config/omaros/plugins/ all laadib pistikprogrammi koodi automaatselt uuesti, nii et saad redaktori avatuks jätta ja vaadata, kuidas sinu muudatused jõuavad.

Oma kirjutamine

Pistikprogramm on kaust koos manifest.json-i ja mõne QML-iga. Manifest deklareerib schemaVersion: 1, id, name, version, ühe või mitu kinds ja entryPoints objekti, mis osutab iga liigi QML-failile:

Kind What it is
bar-widget Komponent, mille aktiivne riba saab sektsiooni paigutada
panel Püsiv või esilekutsutud ujuv aken
overlay Täisekraani ülekate
menu Esilekutsutud menüü pind
service Peata singleton ilma UI-ta
bar Täielik riba, mis asendab sisseehitatud

Pistikprogramm saab deklareerida mitu liiki korraga — meediapistikprogramm on nii service kui ka bar-widget. Riba vidinad saavad täiendava barWidget ploki kuvanime, kategooria, valikulise defaultSection-i ja allowMultiple-ga, mis ütleb, kas on mõttekas, et ribal on rohkem kui üks. Enamik vidinaid määrab selle false; vahed ja näidikud määravad selle true.

Enne millegi avaldamist kontrolli seda:

omaros plugin validate ./my-plugin

See käivitab samad kontrollid, mida kest teeb laadimisajal: skeemi versioon, nõutavad väljad, ID, mis pole reserveeritud, sisestuspunktid, mis on turvalised suhtelised teed ja tegelikult olemas, sisestuspunkt iga nõutud liigi jaoks ja sümbolviidade puudumine kuskil kaustas.

Pistikprogrammide arendamiseks vaata kesta viidet ja esmase osapoole pistikprogrammide kataloogi.

Oma jagamine maailmaga

Kui oled teinud midagi, mis sulle meeldib, pane see avalikku giti reposse. See on kogu levitamismehhanism — igaüks saab seejärel käivitada omaros plugin add sinu URL-i vastu ja see töötab sekunditega.