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?
Měšec.cz: Banky umí platby na kartu, jen to neříkají

Banky umí platby na kartu, jen to neříkají

Podnikatel.cz: Italské těstoviny nebyly k mání, tak je začal vyrábět

Italské těstoviny nebyly k mání, tak je začal vyrábět

120na80.cz: I tuto vodu můžete pít

I tuto vodu můžete pít

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

Podnikatel.cz: Pohlaví, věk, víra a další. Při pohovoru tabu

Pohlaví, věk, víra a další. Při pohovoru tabu

Lupa.cz: Vodafone umí volání přes Wi-Fi. Z ciziny jako v ČR

Vodafone umí volání přes Wi-Fi. Z ciziny jako v ČR

Měšec.cz: Do ostravské MHD bez jízdenky. Stačí vaše karta

Do ostravské MHD bez jízdenky. Stačí vaše karta

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

Vitalia.cz: Signál roztroušené sklerózy: brnění končetin

Signál roztroušené sklerózy: brnění končetin

Lupa.cz: V Praze se otevřel první podnik s virtuální realitou

V Praze se otevřel první podnik s virtuální realitou

Podnikatel.cz: Polská vejce na českém pultu Albertu

Polská vejce na českém pultu Albertu

DigiZone.cz: Android TV: s jakým pracuje rozlišením?

Android TV: s jakým pracuje rozlišením?

Podnikatel.cz: 3 velké průšvihy obchodních řetězců

3 velké průšvihy obchodních řetězců

Vitalia.cz: Nejdůležitější změny v potravinářské novele

Nejdůležitější změny v potravinářské novele

Vitalia.cz: Sobotní masakr žrádla, chlastu a zábavy

Sobotní masakr žrádla, chlastu a zábavy

Lupa.cz: eIDAS: Nepřehnali jsme to s výjimkami?

eIDAS: Nepřehnali jsme to s výjimkami?

Lupa.cz: IT scéna po brexitu: přijde exodus vývojářů?

IT scéna po brexitu: přijde exodus vývojářů?

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

DigiZone.cz: Kauza technik: oficiální vyjádření Novy

Kauza technik: oficiální vyjádření Novy