Úvod GNU/Linux Software Ke stažení Odkazy

Vaše IP: 34.204.168.209
Počet návštěv: 1473540
Hledání příkazů operačního systému Linux podle syntaxe nebo popisu.

Nastavení vzhledu stránek
Dark
Silver
Green
Grey

Radek Tříška

E-mail a Jabber :
radek(at)fastlinux(dot)eu
mseed@njs.netlab.cz

Sekce V.I.P. uživatelů


pypanel


Obsah:

Úvod | Instalace | Spuštění | Editace | Základy syntaxe | Nastavení barev | Velikost a umístění panelu | Nastavení hodin a data | Nastavení skrytých aplikací | Nastavení fontu textu | Zobrazení aplikací | Přidání vlastní ikony pro aplikaci | Spouštěč aplikací | Nastavení průhlednosti panelu | Další volby | Pojmenování přepínače ploch | Rozložení prvků na panelu | Chování myši


Úvod

V jednoduchosti je síla!
Myslím, že zrovna tohle heslo platí pro velice jednoduchý, nenáročný a šikovný panel, který můžete používat ve vašem grafickém prostředí. Jedná se o aplikaci napsanou v Pythonu, která má veškerou konfiguraci uloženou v souboru ~/.pypanelrc. Tento článek je psán i pro úplné začátečníky. Konfiguraci jsem prováděl v distribuci Archlinux.

zpět na obsah


Instalace

Program pypanel je obsažen v repozitářích většiny distribucí linuxu. Pro instalaci použijte balíčkovač vaší distribuce linuxu.

Napřklad:

# emerge pypanel - instalace v Gentoo linuxu
# pacman -S pypanel - instalace v Arch linuxu
# apt-get install pypanel - instalace v Ubuntu/Debianu

zpět na obsah


Spuštění

Pro jednoduché spuštění zadáme do terminálu:

# pypanel

Aby se nám pypanel startoval automaticky při přihlášení, je třeba to nastavit.

V XFCE to můžeme provést v nastavení-relace a spuštění-automatický start aplikace, kdežto třeba v Openboxu je třeba přidat řádek do souboru ~/.config/openbox/autostart.sh

(sleep 2 && pypanel )&

Po spuštění naběhne pypanel a vytvoří se v domovském adresáři uživatele základní(default) konfigurační soubor ~/.pypanelrc. Soubor je tzv. skrytý(tečka na začátku jména souboru).

Pro zobrazení ve Správci Souborů zapneme volbu: zobrazení - zobrazit skryté soubory

Pro zobrazení v terminálu zadáme:

# ls -al ~/ | grep .pypanelrc

zpět na obsah


Editace / Nastavení

Nastavení pypanelu se provádí editací konfiguračního souboru ~/.pypanelrc Před provedením změn si pro jistotu vytvoříme záložní kopii. Následující příkaz vytvoří přejmenovanou kopii konfiguračního souboru v domovském adresáři uživatele.

# cp ~/.pypanelrc ~/.pypanelrc_zaloha

Soubor otevřeme v našem oblíbeném editoru(nano, gedit, gvim, ...) a můžeme začít konfigurovat.

# nano ~/.pypanerc
# gedit ~/. pypanelrc
# gvim ~/. pypanelrc
...

Základní konfigurační soubor vypadá následovně:

#------------------------------------------------------------------------------
#
#                         PyPanel v2.4 Configuration
#
# This configuration file is a Python script that will be executed when
# PyPanel is started.  In order for PyPanel to start properly, make sure that
# this file contains proper Python formatting and no syntax errors.
#------------------------------------------------------------------------------
VERSION         = 2.4           # Config file version

#------------------------------------------------------------------------------
# Colors: Format is hex triplet - 0xrrggbb
#------------------------------------------------------------------------------
BG_COLOR        = "0xd6d6d6"    # Panel background and tinting color
TASK_COLOR      = "0x000000"    # Normal task name color 
FOCUSED_COLOR   = "0x1826de"    # Focused task name color
SHADED_COLOR    = "0x808080"    # Shaded task name color 
MINIMIZED_COLOR = "0x808080"    # Minimized task name color 
DESKTOP_COLOR   = "0x000000"    # Desktop name color
CLOCK_COLOR     = "0x000000"    # Clock text color
LINE_COLOR      = "0x606060"    # Vertical line color

# Text Shadow Colors
TASK_SHADOW_COLOR      = "0xffffff"
FOCUSED_SHADOW_COLOR   = "0xffffff"
SHADED_SHADOW_COLOR    = "0xffffff"
MINIMIZED_SHADOW_COLOR = "0xffffff" 
DESKTOP_SHADOW_COLOR   = "0xffffff"
CLOCK_SHADOW_COLOR     = "0xffffff"

#------------------------------------------------------------------------------
# Panel Spacing and Location Options: Measured in pixels
#------------------------------------------------------------------------------
P_LOCATION      = 1             # Panel placement: 0 = top, 1 = bottom
P_WIDTH         = 0             # Panel width: 0 = Use full screen width
P_START         = 0             # Starting X coordinate of the panel
P_SPACER        = 6             # Spacing between panel objects
P_HEIGHT        = 24            # Panel height

#------------------------------------------------------------------------------
# Icon Size Options: Measured in pixels
#------------------------------------------------------------------------------
I_HEIGHT        = 16            # Panel application icon height
I_WIDTH         = 16            # Panel application icon Width 
APPL_I_HEIGHT   = 24            # Application launcher icon height
APPL_I_WIDTH    = 24            # Application launcher icon width
TRAY_I_HEIGHT   = 24            # System tray icon height (usually 16 or 24)
TRAY_I_WIDTH    = 24            # System tray icon width  (usually 16 or 24)
                                # If TRAY_I_WIDTH is set to 0, then the
                                # width specified by the tray app will be used
                                
#------------------------------------------------------------------------------
# Panel Clock Format: 'man strftime' for detailed formatting options and help
#------------------------------------------------------------------------------
CLOCK_FORMAT    = "%Y-%m-%d %H:%M"    # Ex: 2004-09-25 17:45 

#------------------------------------------------------------------------------
# Clock Delay: Seconds between each clock update during periods of inactivity
#------------------------------------------------------------------------------
CLOCK_DELAY     = 20

#------------------------------------------------------------------------------
# Hidden Application List: Apps listed here will not be display on the panel
# The application name is its WM_CLASS name, use 'xprop' to find WM_CLASS
# Ex: ["xmms", "xine", "gDesklets"]
#------------------------------------------------------------------------------
HIDE_LIST       = []            
                   
#------------------------------------------------------------------------------
# Hidden Panel Size: Size of the panel when it's hidden/minimized
#------------------------------------------------------------------------------
HIDDEN_SIZE     = 2

#------------------------------------------------------------------------------
# Panel Text Font: This option takes either a traditional or Xft font string 
# Ex: "-schumacher-clean-medium-r-normal-*-12-*-*-*-*-*-*-*"
#     "aquafont-8" 
#------------------------------------------------------------------------------
FONT            = "bitstream vera sans-8"

#------------------------------------------------------------------------------
# Show All Applications: Show apps from all desktops or just the current
# 0: Disabled - Only applications on the current desktop will be displayed
# 1: Enabled  - Selected apps are moved to the current desktop
# 2: Enabled  - Current desktop is changed to the selected apps desktop
#------------------------------------------------------------------------------
SHOWALL         = 0             # 0, 1 or 2 - see descriptions above

#------------------------------------------------------------------------------
# Show Minimized/Iconified Applications: Show only minimized apps or all apps
# 0: Disabled - Show all applications on the panel
# 1: Enabled  - Show only minimized apps on the panel
#------------------------------------------------------------------------------
SHOWMINIMIZED   = 0

#------------------------------------------------------------------------------
# Application Icon List: List of custom icons for specific applications
# The application name is its WM_CLASS name, use 'xprop' to find WM_CLASS
#
# The "default" entry is used for applications with no icon.  If left "",
# PyPanel will use the default icon distributed with the source.
#
# Add entries using the following format -
#     "" : "",
#------------------------------------------------------------------------------
ICON_LIST       = {
                   "default" : "",
                   "example" : "/usr/share/imlib2/data/images/audio.png",
                  }
                  
#------------------------------------------------------------------------------
# Application Launch List: Ordered list of icons and applications for the
#                          application launcher.
# 
# Add entries using the following format -
#     ("", "")
#------------------------------------------------------------------------------
LAUNCH_LIST     = [
                   ("gimp-2.2", "/usr/share/imlib2/data/images/paper.png"), 
                  ]

#------------------------------------------------------------------------------
# Background Alpha/Shade Level: 0 (Fully Translucent) -> 255 (Fully Opaque)
# BG_COLOR is used for tinting
#------------------------------------------------------------------------------
SHADE           = 50

#------------------------------------------------------------------------------
# Misc. Options: 1 = Enabled/Yes, 0 = Disabled/No
#------------------------------------------------------------------------------
ABOVE           = 1             # Panel is always above other apps
APPICONS        = 1             # Show application icons
AUTOHIDE        = 0             # Autohide uses the CLOCK_DELAY timer above
SHADOWS         = 0             # Show text shadows
SHOWLINES       = 0             # Show object seperation lines
SHOWBORDER      = 0             # Show a border around the panel

#------------------------------------------------------------------------------
# Desktop Names: Configure the names of your desktops
# If the option is [], PyPanel will attempt to use the desktop name specified
# by the XServer, if that fails it will use the desktop number as its name
# Ex. ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight"]
#------------------------------------------------------------------------------
DESKTOP_NAMES   = []

#------------------------------------------------------------------------------
# Panel Layout:       -----------------------------------
#                     [  1  ][  2  ][  3  ][  4  ][  5  ]
#                     -----------------------------------
#
# The panel layout is split into 5 sections numbered 1, 2, 3, 4 or 5 as shown
# in the diagram above.  Each of the following objects can be enabled by
# assigning it a section number or disabled by assigning it 0:
#------------------------------------------------------------------------------
DESKTOP         = 1             # Desktop name section
TASKS           = 2             # Task names section 
TRAY            = 3             # System tray section
CLOCK           = 4             # Clock section
LAUNCHER        = 0             # Application launcher section

#------------------------------------------------------------------------------
#                       Button Event Function Definitions
#------------------------------------------------------------------------------
# Left click   - button 1 
# Middle click - button 2
# Right click  - button 3
# Wheel up     - button 4
# Wheel down   - button 5 
#
# changeDesktop(x)
# - Change Desktop: Increase or decrease the current desktop by 'x' amount
# 
# toggleShade(task)
# - Shade or Unshade an application
#
# toggleHidden()
# - Minimize the panel to the top or bottom depending on its start location
#
# toggleMinimize(task, traise=1)
# - Minimize or Unminimize an application and optionally raise it
#
# taskRaise(task, focus=1)
# - Raise an application to the top of the window list and optionally focus it 
#
# taskLower(task, focus=0)
# - Lower an app to the bottom of the window list and optionally focus it
#
# taskFocus(task)
# - Give focus to the selected application, if it has focus then minimize it
#
# showDesktop()
# - Toggle between hiding and unhiding ALL applications
#------------------------------------------------------------------------------

#----------------------------------
def desktopButtonEvent(pp, button):
#----------------------------------
    """ Button event handler for the panel's desktop object """
        
    if button == 1:
        pp.changeDesktop(-1)
    elif button == 2:
        pp.changeDesktop(2)
    elif button == 3:
        pp.changeDesktop(1)
    elif button == 4:
        pp.changeDesktop(1)
    elif button == 5:
        pp.changeDesktop(-1)
        
#--------------------------------
def clockButtonEvent(pp, button):
#--------------------------------
    """ Button event handler for the panel's clock object """
    
    if button == 1:
        os.system("xclock &")
    elif button == 2:
        pass
    elif button == 3:
        pp.toggleHidden()  
    elif button == 4:
        pp.showDesktop()
    elif button == 5:
        pp.showDesktop()
        
#--------------------------------
def panelButtonEvent(pp, button):
#--------------------------------
    """ Button event handler for the panel with no active tasks """
    
    if button == 1:
        pass
    elif button == 2:
        pass
    elif button == 3:
        pass
    elif button == 4:
        pass
    elif button == 5:
        pass
        
#-------------------------------------
def taskButtonEvent(pp, button, task):
#-------------------------------------
    """ Button event handler for the panel's tasks """
    
    if button == 1:
        pp.taskFocus(task)
    elif button == 2:
        # Destroy the application
        task.obj.destroy()
    elif button == 3:
        # Ex. - XMMS doesn't shade, so we want to minimize it instead and
        #       still use button 3 to shade other applications
        #       task.tclass is the tasks class name (WM_CLASS)
        if "xmms" in task.tclass:
            pp.toggleMinimize(task)
        else:
            pp.toggleShade(task)
    elif button == 4:
        pp.taskRaise(task, focus=1)
    elif button == 5:
        pp.taskLower(task, focus=0)
        

Hned na začátku máme komentář o tom, že soubor je script napsaný v Pythonu a že máme dodržovat pravidla tohoto jazyka a změny si máme vždy zkontrolovat, jestli neobsahují chyby.


Pro otestování našich úprav musíme po každé změně pypanel restartovat, aby si načetl novou konfiguraci.

Například:

# killall pypanel && pypanel &

Můžeme například použít i můj oblíbený nástroj s názvem xkill, který změní kurzor myši na jakýsi zaměřovač který kliknutím myši zabije jakoukoliv aplikaci na kterou ukazuje

zpět na obsah


Základy syntaxe konfiguračního souboru.

Editace (upravování) je velice jednoduché, ale musíme znát alespoň základy syntaxe.

Vše co je za znaménkem "#", je bráno jako komentář a nemá žádný vliv na funkci programu.

Jednotlivé konfigurační vlastnosti programu jsou psané velkým písmem a za znak "=" se píší jednotlivé parametry, které můžeme upravovat. (VLASTNOST = parametr)

Například:

SHOWALL = 1

Druhy parametrů:

Základní parametr pro zapnutí nebo vypnutí určité vlastnosti programu (boolean) nabývá dvou hodnot 0 nebo 1 (zapnuto/vypnuto, (true/false)).

Celé číslo (integer) je další parametr, který může udávat velikost v pixelech, či čas v sekundách a nebo přiřadí vlastnosti nějaký úkol.

Některé vlastnosti vyžadují zadat parametr jako řetězec (string) znaků. Takový řetězec je uzavřen v " ". Jestliže ovšem budem potřebovat jedné vlastosti přiřadit více parametrů, vytvoříme tzv. datovou strukturu.

V našem případě se setkáme se třemi typy datových struktur.

n-tice (tuple) - obsah je uzavřen mezi ()
seznam (list) - obsah je uzavřen mezi []
slovník (hash, dictionary) - obsah je uzavřen mezi {}

pár pravidel při tvorbě datové struktury

Datová struktura může obsahovat nejen čísla, či řetězce, ale i jinou-vsunutou-datovou strukturu.

Jednotlivé parametry v datové struktuře jsou odděleny čárkou, za níž je min. jedna mezera.

Pro přehlednost, je možné mít datovou strukturu na více řádcích, ale je třeba dodržovat stále stejný styl odsazování (tab-mezerník)

Datová struktura může být prázdná, nebo může obsahovat i pouze jeden parametr, ale v případě n-tice musí být i za jedním parametrem čárka.

jeden parametr ve slovníku, se skládá vždy ze dvou údajů, které jsou odděleny :

Například:

ABOVE            = 1             		# Zákl. parametr boolean, který nastavuje pouze ano/ne , pravda/nepravda
I_HEIGHT        = 24          			# Celé číslo, které určuje velikost v pixelech
BG_COLOR      = "0xffffff"  			# řetězec znaků
HIDE_LIST       = ["gkrellm", "gDesklets"]	# seznam složený ze dvou řetězců

LAUNCH_LIST  = [
  ("xfce4-screenshooter", "/usr/share/icons/hicolor/48x48/apps/applets-screenshooter.png"), 
  ("terminal", "/usr/share/icons/hicolor/48x48/apps/xfce-terminal.png"),
  ("gedit", "/usr/share/pixmaps/gedit.png"),
                  ]    				# seznam složený z n-tic a každá n-tice obsahuje dva řetězce

ICON_LIST       = {
                   "default" : "",
                   "thunar" : "/usr/share/icons/hicolor/48x48/apps/Thunar.png",
	           "xmms" : "/usr/share/pixmaps/xmms48.png"
                  }				# slovník obsahující tři objekty

pp.changeDesktop(2)				# nejedná se o n-tici s jedním celým číslem
DESKTOP_NAMES   = []				# prázdná dat. struktura

Jelikož v souboru jsou datové struktury předdefinovány a my jen doplňujeme údaje, není až tak nutné vědět, jaký je mezi nima rozdíl, jen je potřeba vědět, jak s nimi pracovat, což jsme si vysvětlili. Ovšem, i když jsem našel spousty článků, které vysvětlovali rozdíly a nemůžu říci, že špatně, přesto jsem měl trochu problém to pochopit.

Takže má-li někdo zájem, pokusím se to vysvětlit na běžném příkladě ze života. Ti co nemají zájem, můžou tento odstavec přeskočit.

Představte si, že chcete jít nakoupit a chcete si napsat na papír co koupit. Vytvoříme si seznam.

["nescafe", "chleba"]

Seznam je měnitelný a kdykoli mohu přidat další položku. ["nescafe", "chleba", "hrnek"] i když si tam ten hrnek připíšu, třeba až na cestě do obchodu. A navíc, i když změním pořadí ["chleba", "nescafe", "hrnek"], stále donesu domů stejné tři věci.

Také jste snad všichni zaznamenali, že fi nescafe prodávala balení, kde byl hrnek jako dárek. Chtěl bych-li koupit toto balení, musel bych si to do seznamu zapsat jako n-tici [("nescafe", "hrnek"), "chleba"].

V tomto případě donesu domů dvě věci. Jedna věc bude balení nescafe s hrnkem a ta druhá bude chleba.

Zákl. rozdíl je v tom, že n-tice je neměná. nemůžu přidat žádnou další položku, jelikož v tom balení nic dalšího není. Není tam ani např. lžička a ani třeba bombón. Je tam pouze nescafe a hrnek. A dokonce ani nemůžu změnit pořadí ("hrnek", "nescafe"), protože by to byl nesmysl. Prodávala se káva a k ní hrnek. Neprodával se hrnek a k němu káva.

A co se týče slovníku, ve kterém se přiřazuje určitá hodnota nějakému klíči. Představte si, že výrobní linku ve škodovce řídí program napsaný v pythonu a že chceme, aby se vyrobené fabie natřeli na červeno a octavie aby byly modré.

V tomto případě bude fabie a octavie "klíč" a pomocí slovníku jim přiřadíme hodnotu.

Zápis by vypadal takto:

{"fabie" : "červená", "octavie" : "modrá"}

zpět na obsah


Nastavení barev

Barvy se zadávají v hex triplet formátu (0xrrggbb).

Pro nás je rozhodující, že z onoho kódu určujícího barvu, vždy zachováme "0x" na začátku a budeme měnit pouze 6 následujících znaků. Pro zjištění kódů barev můžeme například použít výborný nástroj s názvem gcolor2. Opět by měl být v repozitáři vaší distribuce linuxu, takže instalace je stejná jako u pypanelu. Jeho ovládání je snadné a proto by pro vás neměl být problém najít potřebný šesticiferný kód barev.

BG_COLOR        = "0xd6d6d6"    # barva samotného panelu
TASK_COLOR      = "0x000000"    # barva programu v seznamu úloh 
FOCUSED_COLOR   = "0x1826de"    # barva vybraného programu v seznamu úloh
SHADED_COLOR    = "0x808080"    # barva stínů seznamu úloh 
MINIMIZED_COLOR = "0x808080"    # barva minimalizované úlohy 
DESKTOP_COLOR   = "0x000000"    # barva přepínače ploch
CLOCK_COLOR     = "0x000000"    # barva času a datumu
LINE_COLOR      = "0x606060"    # barva ohraničení panelu

Barvy stínů textu

Text shadows colors

Musím se přiznat, že kouzla průhlednosti jsem v této části neobjevil, zvlášt když v další části souboru je univerzální nastavení průhlednosti panelu.

TASK_SHADOW_COLOR      = "0xffffff"
FOCUSED_SHADOW_COLOR   = "0xffffff"
SHADED_SHADOW_COLOR    = "0xffffff"
MINIMIZED_SHADOW_COLOR = "0xffffff" 
DESKTOP_SHADOW_COLOR   = "0xffffff"
CLOCK_SHADOW_COLOR     = "0xffffff"

zpět na obsah


Velikost a umístění panelu

Rozměry jsou měřeny v pixelech.

P_LOCATION      = 1             # umístění panelu (0=nahoře 1=dole)
P_WIDTH         = 0             # šířka panelu (zadáme-li 0, panel bude na celou šířku obrazovky)
P_START         = 0             # spuštění x koordinace na panel
P_SPACER        = 6             # velikost mezer mezi objekty na panelu
P_HEIGHT        = 24            # výška panelu

Podíváme-li se na obrázek, mám nastavenou tmavě modrou barvu pro vyzdvižené aplikace, světle modrou pro minimalizované a žlutou pro zaostřené. Dále můžete vidět nastavení pro panel nahoře a jak mám upravenou šířku, aby mi nesahal do doplňkových aplikací, které mám na pravé straně obrazovky.

pypanel

zpět na obsah


Nastavení velikosti ikon.

Rozměry jsou měřeny v pixelech.

Stejný princip jako v předchozí sekci, takže jen podotknu, že na panelu můžeme mít 3 typy ikon (v seznamu úloh, spouštěči aplikací a tray). Jestliže bude nastavena hodnota TRAY_I_WIDTH na 0 bude se velikost číst ze spuštěné aplikace v tray.

I_HEIGHT        = 16            # výška ikon zobrazujících se v seznamu úloh
I_WIDTH         = 16            # šířka ikon zobrazujících se v seznamu úloh 
APPL_I_HEIGHT   = 24            # výška ikon ve spouštěči aplikací
APPL_I_WIDTH    = 24            # šířka ikon ve spouštěči aplikací
TRAY_I_HEIGHT   = 24            # výška ikon v tray (obvykle 16 nebo 24 pixelů)
TRAY_I_WIDTH    = 24            # šířka ikon v tray (obvykle 16 nebo 24 pixelů)

zpět na obsah


Nastavení hodin a data

Formát nastavení je následující

%Y = rok
%m = měsíc
%d = den
%H = hodina
%M = minuta

CLOCK_FORMAT    = "%Y-%m-%d %H:%M"    # Např.: 2009-04-28  22:46 
CLOCK_DELAY     = 20                  # aktualizace hodin každých 20 sekund

zpět na obsah


Nastavení skrytých aplikací

Zde si nastavíme aplikace, které nechceme zobrazovat na panelu. Většinou se jedná o aplikace, které se nám spouští automaticky a mají pouze informativní účel.

HIDE_LIST = ["gkrellm", "gDesklets"] #spuštěné vyjmenované aplikace nezobrazí v panelu

Budete-li si chtít ověřit jméno aplikace zadejte:

# xprop grep | WM_CLASS

A klikněte na okno aplikace, u kterého si chcete název ověřit.

Jelikož se mi doplňkové aplikace, které mám na pravé straně plochy (počasí, volume a info o systému) zobrazovaly na panelu v seznamu úloh, nastavil jsem si je jako skryté. Na obrázku můžete vidět, že jsou spuštěné, ale na panelu nejsou zobrazené.

pypanel

zpět na obsah


Velikost skrytého panelu

Hidden Panel Size: Další část kterou jsem nepochopil


Nastavení fontu textu

Jestliže edituje v nějakém grafickém editoru, stačí se podívat do nastavení písma a hned vidíte, jaké existují fonty a také si je mužete vyzkoušet.

Například:

V editoru gedit - upravit - nastavení-písma a barvy

Formát je buď XFT řetězec, nebo tradiční (myslím, že bohatě stačí zadat to tradičně).

FONT = "bitstream vera sans-8" #nastaví písmo "bitstream vera sans" o velikosti "8"

zpět na obsah


Zobrazení aplikací

Už jsme si nastavily aplikace, které se zobrazovat nebudou a zde si nastavíme pravidla pro zobrazení aplikací (v seznamu úloh) vzhledem k aktuální ploše.

SHOWALL = 0 # možnosti nastavení jsou 0, 1 nebo 2

0 = budou zobrazeny pouze aplikace, které máme na aktuální ploše
1 = budou zobrazeny všechny aplikace, ale vybranou aplikaci přesune na aktuální plochu. Tzn. Jsem-li zrovna na ploše 2 a kliknu na aplikaci, která je na jiné ploše, tato aplikace se přesune na aktuální plochu
2 = budou zobrazeny všechny aplikace, ale kliknu-li na aplikaci, která je na na jiné ploše, tak se na tuto plochu přesunu

V další části nastavíme zda-li zobrazovat všechny aplikace, nebo pouze minimalizované.

SHOWMINIMIZED   = 0

0 = na panelu budou zobrazeny všechny aplikace
1 = na panelu budou zobrazeny pouze minimalizované aplikace

zpět na obsah


Přidání vlastní ikony pro aplikace.

Většina aplikací obsahuje ve vlastní instalaci i ikony.

Nastavení se provádí ve vlastnosti ICON_LIST, kde stačí připsat řádek ve formátu "jméno aplikace" : "úplná cesta k ikoně"

Na ověření jména můžeme opět použít:

xprop | grep WM_CLASS

Příklad:

V adresáři /usr/share/pixmaps - mám ikonu xmms48.png, kterou bych chtěl používat pro program xmms.

ICON_LIST       = {
                   "default" : "",
                   "xmms" : "/usr/share/pixmaps/xmms48.png",
                  }

zpět na obsah


Spouštěč aplikací

Spouštěč přidá na panel kliknutelné ikony, které nám spustí definované aplikace.

Formát zápisu je jednoduchý: ("jméno aplikace", "úplná cesta k ikoně, která bude zobrazena")

LAUNCH_LIST     = [
                   ("gimp-2.2", "/usr/share/imlib2/data/images/paper.png"), 
                  ]
				  

Moje konfigurace vypadá například takto(zakomentované řádky "#" se vynechají):

LAUNCH_LIST     = [
                   #("gnome-terminal", "/home/daniel/.icons/nuoveXT.2.1/16x16/apps/gnome-terminal.png"), 
                   #("leafpad", "/home/daniel/.icons/nuoveXT.2.1/16x16/apps/text-editor.png"),
                    ("firefox", "/usr/share/icons/hicolor/48x48/apps/firefox.png"),
                   #("gaim", "/usr/share/icons/Tango/16x16/apps/gaim.png"),
                   #("exaile", "/home/daniel/.icons/nuoveXT.2.1/16x16/apps/exaile.png"),
                   #("thunar /home/daniel", "/home/daniel/Art/start-here-48.png"),
		    ("terminal", "/usr/share/pixmaps/terminal48.png"),
                  ]

V tomto příkladu budu mít na panelu dva spouštěče firefox a terminal.

zpět na obsah


Nastavení průhlednosti panelu

Nastavení se provádí pomocí vlastnosti SHADE. Parametr pro zadání průhlednosti je číslo od 0 do 255.

0 - zcela průhledný panel
255 - zcela neprůhledný

SHADE	=	200

zpět na obsah


Další volby

Několik dalších vlastností ovlivňujících pypanel.

Parametry pro nastavení jsou následující:

1 = ano(zapnuto)
0 = ne(vypnuto)

ABOVE           = 1             # bude panel vždy zobrazen nad aplikacemi?
APPICONS        = 1             # chcete zobrazovat ikony u aplikací?
AUTOHIDE        = 0             # automatické schování panelu (používá CLOCK_DELAY)
SHADOWS         = 0             # zobrazit stíny textu 
SHOWLINES       = 0             # chcete zobrazit oddělovače
SHOWBORDER      = 0             # chcete ohraničit panel?

zpět na obsah


Pojmenování přepínače ploch

Názvy přepínače ploch se nastavují pomocí vlastnosti DESKTOP_NAMES.

Výchozí nastavení použije pojmenování nastavené X-serverem.

DESKTOP_NAMES   = []

Vlastní pojmenování nastavíme vepsáním názvů do pole.

Například:

DESCTOP_NAMES	=  ["hlavní", "plocha 2", "pepova", "4"]

zpět na obsah


Rozložení prvků na panelu.

Panel je rozdělen na 5 sekcí a obsahuje 5 základních funkcí k zobrazení.

-----------------------------------
[  1  ][  2  ][  3  ][  4  ][  5  ]
-----------------------------------

Umístění funkcí na panelu můžeme ovlivnit pomocí úpravy pořadových čísel.

DESKTOP         = 1             # Přepínač ploch
TASKS           = 2             # Seznam úloh
TRAY            = 3             # Tray 
CLOCK           = 4             # hodiny a datum
LAUNCHER        = 0             # spouštěč aplikací

Pokud nechci zobrazit nějakou funkci na panelu, přiřadím jí hodnotu 0

zpět na obsah


Chování myši

V posledních pár sekcích můžeme přiřadit jednotlivé úkony, které se vykonají při stisku tlačítka myši.

Jednotlivé tlačítka mají přiřazenou hodnotu čísla. Tentokrát nebudeme měnit tyto čísla, ale ke každému přiřadíme příkaz, který se vykoná.

přiřazená čísla:

levé tlačítko 		- 1
prostřední tlačítko	- 2
pravé tlačítko 		- 3
rotace nahoru		- 4
rotace dolů		- 5

Příkazy si vysvětlíme u jednotlivých objektů. Jelikož je rozdíl, jestli kliknu na hodiny, nebo na nějakou aplikaci, máme editaci rozdělenou dle objektů.

#----------------------------------
def desktopButtonEvent(pp, button):
#----------------------------------
    """ Objekt na panelu, kde je zobrazen název aktuální plochy """
        
    if button == 1:
        pp.changeDesktop(1)		# Stisknu-li tl.1, plocha se změní ve směru +1
    elif button == 2:
        pp.changeDesktop(2)		# Stisknu-li tl.2, plocha se změní ve směru +2
    elif button == 3:
        pp.changeDesktop(-1)		# Stsknu-li tl. 3, plocha se změní ve směru -1
    elif button == 4:
        pp.changeDesktop(-1)		# použiju-li tl.4, plocha se změní ve směru -1
    elif button == 5:
        pp.changeDesktop(1)		# použiju-li tl.5, plocha se změní ve směru +1

zmáčknu-li tlačítko 1 (tedy levé) na panelu v místě, kde je zobrazen název plochy, přesunu se o plochu výše. Jsem li na ploše č.3, přesunu se na plochu č.4

(1) = +1

#--------------------------------
def clockButtonEvent(pp, button):
#--------------------------------
    """ Objekt na panelu, kde je zobrazen čas a datum """
    
    if button == 1:
        os.system("xclock &")	# kliknu-li na objekt levým tl., spustí se prog. "xclock"
    elif button == 2:		
        pass			# tl. 2 (prostřední) nemá přidělenou žádnou funkci
    elif button == 3:
        pp.toggleHidden()  	# opět jedna z věcí, kterou nevím jak popsat
    elif button == 4:
        pp.showDesktop()	# schová všechny okna a ukáže plochu
    elif button == 5:
        pp.showDesktop()
#--------------------------------
def panelButtonEvent(pp, button):
#--------------------------------
    """ zde nastavujeme funkce tlačítek, kliknem-li na samotný panel """
    
    if button == 1:
        pass			# tl. nemá přiřazenou žádnou funkci
    elif button == 2:
        pass
    elif button == 3:
        pass
    elif button == 4:
        pass
    elif button == 5:
        pass

Je-li "objekt" -"seznam úloh" zobrazen, pak není šance kliknout na samotný panel, čili tuto část editujeme pouze pokud seznam úloh nepoužíváme.

#-------------------------------------
def taskButtonEvent(pp, button, task):
#-------------------------------------
    """ objekt seznam úloh """
    
    if button == 1:
        pp.taskFocus(task)	# minimalizuje - vyzdvihne - zaostří okno
    elif button ==2:
	task.obj.destroy()	# ukončí aplikaci (zavře okno)
    elif button == 3:
        # Ex. - XMMS doesn't shade, so we want to minimize it instead and
        #       still use button 3 to shade other applications
        #       task.tclass is the tasks class name (WM_CLASS)
        if "xmms" in task.tclass:
            pp.toggleMinimize(task)	# minimalizuje se okno
        else:
            pp.toggleShade(task)	# povolit, nebo zakázat stínování
    elif button == 4:
        pp.taskRaise(task, focus=1)	# vyzdvihne okno nad zaostřené
    elif button == 5:
        pp.taskLower(task, focus=0)	# schová okno pod zaostřené

U tlačítka 3 můžete videt, jak se tvoří podmínka. Jelikož "xmms" neumí stínování, je tato podmínka už v defaultním nastavení.

if "xmms" in task.tclass:		# jestliže je xmms v seznamu úloh
            pp.toggleMinimize(task)	# minimalizuje se okno
        else:				# jinak
            pp.toggleShade(task)	# povolit, nebo zakázat stínování

zpět na obsah


A to je vše. Na závěr rada. Nechcete-li se trápit s konfigurací, stačí do vyhledávače zadat pypanelrc a najdete hodně vzorů i s screenshoty. Pak už jen stačí váš pypanelrc přepsat.

Autor : Jiří Cásek

| Verze projektu: 1.52 | © 2000 - 2011 | Historie |