pypanel
Ú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.
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
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
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
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á"}
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"
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.
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ů)
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
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é.
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"
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
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",
}
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.
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
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?
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"]
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
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í
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





















