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?
Vitalia.cz: Ženy, které milují příliš, jsou neštěstí

Ženy, které milují příliš, jsou neštěstí

Vitalia.cz: Vakcína Cervarix je oficiálně i pro chlapce

Vakcína Cervarix je oficiálně i pro chlapce

Podnikatel.cz: Vesničané vs. měšťáci. Kdo víc nakupuje online

Vesničané vs. měšťáci. Kdo víc nakupuje online

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

Ceny PHM v Evropě. Finty na úspory

Lupa.cz: Elektronika tajemství zbavená. Jak s ní začít?

Elektronika tajemství zbavená. Jak s ní začít?

120na80.cz: Kam umístit silikony?

Kam umístit silikony?

DigiZone.cz: Hodlá Markíza skončit v DVB-T?

Hodlá Markíza skončit v DVB-T?

Vitalia.cz: Je bílý kokos fakt tak úžasný? Ano, je!

Je bílý kokos fakt tak úžasný? Ano, je!

DigiZone.cz: Jetelín končí. Prima ho vyřadila

Jetelín končí. Prima ho vyřadila

Vitalia.cz: „Sjíždět“ porno není bez rizika

„Sjíždět“ porno není bez rizika

DigiZone.cz: ČTÚ zveřejnil aktualizovaný D-Book

ČTÚ zveřejnil aktualizovaný D-Book

Podnikatel.cz: Pozor na vykuky, imitují služby České pošty

Pozor na vykuky, imitují služby České pošty

DigiZone.cz: První Ultra HD (4K) Blu-ray je tady

První Ultra HD (4K) Blu-ray je tady

Podnikatel.cz: Česká pošta vycouvala ze služby ČP Cloud

Česká pošta vycouvala ze služby ČP Cloud

DigiZone.cz: AXN u FreeSatu měsíc zdarma

AXN u FreeSatu měsíc zdarma

Podnikatel.cz: Novela zákoníku práce. Řeší homeworking

Novela zákoníku práce. Řeší homeworking

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: Týká se vás EET? Chtějte od berňáku posudek

Týká se vás EET? Chtějte od berňáku posudek

Lupa.cz: Nechcete datacentrum? Jsou na prodej

Nechcete datacentrum? Jsou na prodej

Lupa.cz: Samořídicí taxíky jsou tu. Začíná s nimi Uber

Samořídicí taxíky jsou tu. Začíná s nimi Uber