Hlavní navigace

Připravujeme Screenlet pro instalaci

Michal Hořejšek 6. 10. 2009

Z minulých dílů našeho seriálu o Screenletech už umíme udělat vzhledově pěkný Screenlet a pro další věci, jako je vytváření nastavení, témat a dalšího potřebujeme již umět náš Screenlet nainstalovat. Pokud vše správně zvládneme, bude se nám náš výtvor objevovat v klasickém správci mezi ostatními.

Aby byl Screenlet snadno instalovatelný do samotného Screenlets Manageru, je potřeba mít připravenou složku se správnou strukturou, správnými jmény či ikonu, která se bude ve Screenlets Manageru zobrazovat. Poté tuto složku prohnat programem screenlets-packager, který nám zdrojový soubor zkompiluje a vytvoří archiv, kterým Screenlet do Screenlets Managera nainstalujeme.

Vše budu zobrazovat na našem příkladu MyFirstScreen­let.py.

Příprava

Jako první a nejzákladnější podmínka je, mít správné jména složky a zdrojového souboru .py s naším kódem. Náš název Screenletu zrovna není nejideálnější, proto si ho pojmenujeme jen jako MyFirst (nic zatím nepřejmenovávejte). Můžeme klidně název nechat celý (MyFirstScreenlet), ale pokud si pamatujete jedno upozornění z prvního dílu, tak za název se musí přidávat ještě slovoScreenlet a abychom se vyhnuli názvu MyFirstScreen­letScreenlet.py, tak název necháme pouze MyFirst.

1. Vytvoření složky

Složku pojmenujeme pouze názvem našeho Screenletu bez přídavného slova „Screenlets“. V našem případě se bude složka jmenovat MyFirst. Složku si vytvoříme třeba na plochu, to je jedno.

2. Vložit zdrojový soubor

Do vytvořené složky vložíme zdrojový soubor s kódem našeho Screenletu. Zdrojový soubor se bude jmenovat jako náš Screenlet s přidáním slova „Screenlets“. V našem případě se bude zdrojový soubor jmenovat MyFirstScreen­let.py.

Dále nesmíme zapomenout, že třída se musí jmenovat stejně jako zdrojový soubor. Tedy třída uvnitř souboru MyFirstScreenlet.py se bude jmenovat MyFirstScreenlet.

3. Přidat ikonu

Tento krok není důležitý, ale je vhodné také přidat ikonu, která se u Screenletu ve Screenlets Manageru objeví. Ikona se musí jmenovat icon a být ve formátu .png. Vkládaná ikona se tedy bude jmenovat icon.png.

Povolený formát ikony je pouze .png. Jiný formát není podporován – můžete si zkusit jako ikonu dát nějaký .jpg soubor a uvidíte sami, že se nastaví defaultní ikona.

Pokud žádnou ikonu nedodáme, tak se ve Screenlets Manageru u Screenletu zobrazí defaultní ikona, která není moc pohledná, a proto doporučuji ji přidávat a snažit se vybírat takovou ikonu, aby bylo jasné o co se jedná – potom se ve Screenlets Manageru bude lépe vyhledávat.

4. Přidat adresář themes

Jako poslední do přípravy spadá vytvořit adresář themes a do něho další adresář default. Opět je tento krok nepovinný a Screenlet bude správně pracovat i bez tohoto adresáře, ale je zvykem si ho připravit, i když žádný téma nevytvoříme.

Hotovo

A tím máme naši strukturu:

MyFirst
 - themes
  - default
 - icon.png
 - MyFirstScreenlet.py 

Pokud bychom chtěli zanechat název MyFirstScreenlet, tak by struktura vypadala takto:

MyFirstScreenlet
 - themes
  - default
 - icon.png
 - MyFirstScreenletScreenlet.py 

A nesměli bychom zapomenout v této struktuře v souboru MyFirstScreen­letScreenlet změnit název třídy a také nezapomenout přepsat vytváření sezení do Screenletu s touto třídou na konci souboru.

screenlets.session.create_session( MyFirstScreenlet ) # zde také nezapomenout přejmenovat podle potřeb 

Vytvoření archivu

Nyní, když máme strukturu hotovou, stačilo by zkompilovat zdrojový soubor, vytvořit archiv a ten nainstalovat do Screenlets Manageru, ale místo toho si ukážeme, jak tuto věc uděláme automaticky.

Screenlety na vývojáře myslí, a proto součástí je i konzolový prográmek screenlets-packager, který po zavolání s parametrem, kde se náš Screenlet nachází, zkompiluje náš zdrojový soubor a vytvoří správně vytvořený archiv na místo, ve kterém se v terminálu nacházíme. Ukázka:

$ screenlets-packager ~/Plocha/MyFirst 

A tím je hotovo. Náš Screenlet je připraven pro instalaci, tedy pokud se archiv vytvořil.

Když se archiv nevytvořil

Když se archiv nevytvořil, tak program screenlets-packager nedokončil svoji práci a někde skončil s nějakou chybou, kterou si v terminálu musíte přečíst a nějak vyřešit. Nejčastěji se jedná o chybu, že je špatně pojmenovaná třída, název zdrojového souboru či složka.

Chyba příkladu

Pokud však používáte nezměněný zdrojový kód z tohoto seriálu, tak se vám vytvoření archivu programem screenlets-packager nepovede a skončí chybou.

Traceback (most recent call last):
  File "/usr/share/screenlets-manager/screenlets-packager.py", line 112, in <module>
    """ % (sl_class.__name__, sl_class.__author__, sl_class.__desc__.replace('\n',
AttributeError: 'NoneType' object has no attribute 'replace' 

Pokud si chybu přečtete, zjistíte, že je problém s proměnnou __doc__. Tuto proměnnou vkládáme do description ( __desc__), který je zobrazen ve Screenlets Manageru jako popis Screenletu, ale ona proměnná vlastně neexistuje.

Vyřešíme to jednoduchou opravou, že přidáme hned po definici třídy řetězec uzavřený do trojitých uvozovek s textem například „MyFirstScreenlet“.

class MyFirstScreenlet( screenlets.Screenlet ):
  """MyFisrstScreenlet"""

  __name__ = 'My First Screenlet'
  __version__ = '1.0'
  __author__ = 'Michal Horejsek'
  __desc__ = __doc__ 

A po opravě již proměnná __doc__ existuje a můžeme vytvořit archiv.

Instalace

Nyní stačí zapnout Screenlets Manager, kliknout na tlačítko Install nebo přetáhnout vytvořený archiv do seznamu a je nainstalováno. Nyní máme možnost s naším Screenletem pracovat jako s ostatními.

Máme možnost si ho pouštět po startu systému, vytvářet nastavení nebo další témata (theme). Momentálně jsme zatím žádný téma nevytvořili a vše psali přímo do zdrojového souboru, ale příště se na vytváření témat podíváme a náš Screenlet opět vylepšíme, když už pro to máme složku připravenou.

Výsledek

Výsledek ve Screenlets Manageru vypadá nějak takto:

Screenlety

A pokud máte někde nějakou chybu a nejde vám archiv pomocí screenlets-packager vytvořit, můžete si již MyFirstScreenlet-1.0.tar.gz vytvořený archiv stáhnout a podívat se, kde je nejspíš chyba.

Příště

Příště se podíváme, jak vytvářet zmiňované témata a na nastavení, které jsem vám minule sliboval, se naučíme dělat až v přespříštím díle.

Našli jste v článku chybu?

10. 11. 2009 6:02

Martin (neregistrovaný)

Jenom k těm ikonám – kromě PNG může být ikona i ve formátu SVG
Martin


6. 10. 2009 6:10

hedrix (neregistrovaný)

jóóóóóóóóóóó!!!!!!! valím na přednášky a pak se na to konečně můžu podívat. díííky :-)

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?