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:

widgety

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?
Vitalia.cz: Tahák, jak vyzrát nad zápachem z úst

Tahák, jak vyzrát nad zápachem z úst

Vitalia.cz: Opuncie je plod kaktusu. Pozor na trny

Opuncie je plod kaktusu. Pozor na trny

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

Podnikatel.cz: Takhle se prodávají mražené potraviny

Takhle se prodávají mražené potraviny

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

DigiZone.cz: Funbox 4K v DVB-T2 má ostrý provoz

Funbox 4K v DVB-T2 má ostrý provoz

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Vitalia.cz: Jsou vegani a vyrábějí nemléko

Jsou vegani a vyrábějí nemléko

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

DigiZone.cz: Koncesionářské poplatky pro RTVS

Koncesionářské poplatky pro RTVS

Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

Vitalia.cz: Inspekce našla nelegální sklad v SAPĚ. Zase

Inspekce našla nelegální sklad v SAPĚ. Zase

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

DigiZone.cz: Ginx TV: pořad o počítačových hráčích

Ginx TV: pořad o počítačových hráčích

Vitalia.cz: 5 pravidel proti infekci močových cest

5 pravidel proti infekci močových cest

120na80.cz: Hrbatá prsa aneb mýty o implantátech

Hrbatá prsa aneb mýty o implantátech

Podnikatel.cz: Chystá se smršť legislativních novinek

Chystá se smršť legislativních novinek