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?
DigiZone.cz: Skylink přidává kanály už teď

Skylink přidává kanály už teď

Vitalia.cz: Epidemie: Klíšťová encefalitida po ovčím sýru

Epidemie: Klíšťová encefalitida po ovčím sýru

Lupa.cz: Text umírá, na webu zbude jen video

Text umírá, na webu zbude jen video

120na80.cz: Jsou opalovací krémy pro děti jiné?

Jsou opalovací krémy pro děti jiné?

Vitalia.cz: Máte chutě? Nejezděte do světa, ale do Dobřichovic

Máte chutě? Nejezděte do světa, ale do Dobřichovic

Root.cz: Špína v počítačích: mrtvé myši, prach a pavouci

Špína v počítačích: mrtvé myši, prach a pavouci

DigiZone.cz: Markíza: tady je předběžné opatření

Markíza: tady je předběžné opatření

Podnikatel.cz: Jeho dřevěné hodinky chtějí na všech kontinentech

Jeho dřevěné hodinky chtějí na všech kontinentech

Root.cz: Nejvýkonnější počítač mají v Číně, podívejte se

Nejvýkonnější počítač mají v Číně, podívejte se

DigiZone.cz: TV Nova a její postoj k DVB-T2

TV Nova a její postoj k DVB-T2

Měšec.cz: Co s reklamací, když e-shop krachuje?

Co s reklamací, když e-shop krachuje?

DigiZone.cz: Krajské televize na okraji zájmu?

Krajské televize na okraji zájmu?

Lupa.cz: Jaké IoT tarify nabízejí mobilní operátoři?

Jaké IoT tarify nabízejí mobilní operátoři?

DigiZone.cz: ČTÚ květen: rušení TV vysílání narůstá

ČTÚ květen: rušení TV vysílání narůstá

Podnikatel.cz: Eseróčko vs. živnost. Co vyhrává?

Eseróčko vs. živnost. Co vyhrává?

DigiZone.cz: Skylink zapojil nový transpondér

Skylink zapojil nový transpondér

Lupa.cz: Vydavatelé jsou v háji, ale neumí si to připustit

Vydavatelé jsou v háji, ale neumí si to připustit

DigiZone.cz: Soud zakázal šíření TV Markíza v ČR

Soud zakázal šíření TV Markíza v ČR

Vitalia.cz: Ministři se přou o využívání antibiotik

Ministři se přou o využívání antibiotik

DigiZone.cz: Skylink: Nova Sport volně

Skylink: Nova Sport volně