# Generated by Conky GUI
# Check http://conkygui.sourceforge.net/
# For the latest version of Conky GUI
#31-Jul-09 12:28:19 AM
#
#
# Conky
background yes
no_buffers yes
out_to_console no
top_cpu_separate no
max_port_monitor_connections 256
cpu_avg_samples 2
net_avg_samples 3
total_run_times 0
update_interval 3
music_player_interval 3
# Text
uppercase no
override_utf8_locale yes
short_units no
pad_percents 0
text_buffer_size 256
max_user_text 16384
font Bitstream Charter:style=Regular
use_xft yes
xftalpha 0.5
xftfont HandelGotD:size=9
# Window
own_window yes
own_window_colour ffffff
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_type normal
# Graphics
double_buffer yes
draw_borders no
draw_graph_borders yes
draw_shades no
draw_outline yes
stippled_borders 8
max_specials 512
# Layout
alignment bottom_right
gap_x 30
gap_y 160
maximum_width 250
minimum_size 200 5
use_spacer none
border_margin 4
border_width 1
# Colors
default_color ffffff
default_outline_color 4e7578
default_shade_color 51608f
color0 ff0000
color1 0000ff
color2 ffff00
color3 00ff00
color4 ffafaf
color5 ffc800
color6 ff00ff
color7 00ffff
color8 808080
color9 404040
# Net
# stuff after 'TEXT' will be formatted on screen
TEXT
${font openlogos:size=80}t${font}
$sysname $kernel on $machine
${font StyleBats:size=18}P${font} Uptime $alignr $uptime
${font StyleBats:size=18}X${font} Load $alignr $loadavg
${font StyleBats:size=18}V${font} Public IP $alignr ${color}${execi 14400 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g' | tail}${color}
${font StyleBats:size=18}T${font} $processes processes ($running_processes running)
${font PizzaDude Bullets:size=16}N${font} ${color white}Highest CPU:
${color de0b0b}${top name 1}${top cpu 1}
${color white}${top name 2}${top cpu 2}
${top name 3}${top cpu 3}
${top name 4}${top cpu 4}
${top name 5}${top cpu 5}
${font PizzaDude Bullets:size=16}O${font} ${color white}Highest MEM:
${color de0b0b}${top_mem name 1}${top_mem mem 1}
${color white}${top_mem name 2}${top_mem mem 2}
${top_mem name 3}${top_mem mem 3}
${top_mem name 4}${top_mem mem 4}
${top_mem name 5}${top_mem mem 5}
${font StyleBats:size=18}A${font} CPU Core 1 $alignr ${cpu cpu0}%
${cpubar cpu0}
${font StyleBats:size=18}A${font} CPU Core 2 $alignr ${cpu cpu1}%
${cpubar cpu1}
${font PizzaDude Bullets:size=16}J${font} MEM $alignr $mem / $memmax $alignr $memperc%
$membar
${font StyleBats:size=18}B${font} swap $alignr $swap / $swapmax $alignr $swapperc%
${swapbar}
${font StyleBats:size=18}F${font} / $alignr${fs_used /} / ${fs_size /}$alignr ${fs_free_perc /}%
${fs_bar /}
${font StyleBats:size=18}G${font}/home $alignr ${fs_used /home} / ${fs_size /home} $alignr ${fs_free_perc /home}%
${fs_bar /home/}
${font StyleBats:size=18}G${font}~/Isel $alignr ${fs_used /home/kerml/Isel} / ${fs_size /home/kerml/Isel} $alignr ${fs_free_perc //home/kerml/Isel}%
${fs_bar /home/kerml/Isel}
${font StyleBats:size=18}G${font}~/backup $alignr ${fs_used /home/kerml/backup} / ${fs_size /home/kerml/backup} $alignr ${fs_free_perc /home/kerml/backup}%
${fs_bar /home/kerml/backup}
${font StyleBats:size=18}G${font}~/Music $alignr ${fs_used /home/kerml/Music} / ${fs_size /home/kerml/Music} $alignr ${fs_free_perc /home/kerml/Music}%
${fs_bar /home/kerml/Music}
${font StyleBats:size=18}G${font}~/downloads $alignr ${fs_used /home/kerml/downloads} / ${fs_size /home/kerml/downloads} $alignr ${fs_free_perc /home/kerml/downloads}%
${fs_bar /home/kerml/downloads}
# Generated by Conky GUI
# Check http://conkygui.sourceforge.net/
# For the latest version of Conky GUI
#31-Jul-09 12:27:27 AM
#
#
# Conky
background yes
no_buffers yes
out_to_console no
top_cpu_separate no
max_port_monitor_connections 256
cpu_avg_samples 2
net_avg_samples 3
total_run_times 0
update_interval 3
music_player_interval 3
# Text
uppercase no
override_utf8_locale yes
short_units no
pad_percents 0
text_buffer_size 128
max_user_text 16384
font Bitstream Charter:style=Regular
use_xft yes
xftalpha 0.5
xftfont HandelGotD:size=9
# Window
own_window yes
own_window_colour ffffff
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_type normal
# Graphics
double_buffer yes
draw_borders no
draw_graph_borders yes
draw_shades no
draw_outline yes
stippled_borders 8
max_specials 512
# Layout
alignment bottom_right
gap_x 330
gap_y 150
maximum_width 270
minimum_size 200 5
use_spacer none
border_margin 4
border_width 1
# Colors
default_color ffffff
default_outline_color 54668f
default_shade_color 4e7578
color0 ff0000
color1 0000ff
color2 ffff00
color3 00ff00
color4 ffafaf
color5 ffc800
color6 ff00ff
color7 00ffff
color8 808080
color9 404040
# Net
# stuff after 'TEXT' will be formatted on screen
TEXT
powered by
${font openlogos:size=150}q${font}
$alignc${exec cat /etc/slackware-version}
${font openlogos:size=90}Y${font}KDE 3.5.10
${font weather:size=28}z${font}CPU Core 1 Core 2 $alignr ${hwmon 1 temp 1}C / ${hwmon 0 temp 1}C
${font weather:size=28}z${font}GPU $alignr ${exec /usr/bin/nvidia-settings -q gpucoretemp |grep Attribute |cut -c 38-43}C
${font weather:size=28}x${font} Hard Drives $alignr /dev/sda ${hddtemp /dev/sda}
$alignr /dev/sdb ${hddtemp /dev/sdb}
$alignr /dev/sdc ${hddtemp /dev/sdc}
${font StyleBats:size=18}R${font}
LAN:$alignr ${addr eth0}
${font PizzaDude Bullets:size=16}r${font} Down:${color} $alignr ${downspeed eth0} k/s${color} ${offset 80}
${font PizzaDude Bullets:size=16}v${font} Up:${color} $alignr ${upspeed eth0} k/s${color} ${offset 80}
${downspeedgraph eth0 40,130} ${alignr}${upspeedgraph eth0 40,130}
Down: ${totaldown eth0} ${alignr}Up: ${totalup eth0}
# Use Xft?
use_xft yes
xftfont Aerial:style=Bold:pixelsize=10
xftalpha 0.8
text_buffer_size 2048
# Update interval in seconds
update_interval 1
# Create own window instead of using desktop (required in nautilus)
own_window yes
own_window_transparent yes
own_window_type override
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes
# Minimum size of text area
minimum_size 445
#maximum_width 200
# Draw shades?
draw_shades no
# Draw outlines?
draw_outline no
# Draw borders around text
draw_borders no
# Stippled borders?
stippled_borders 0
# border margins
border_margin 5
# border width
border_width 1
# Default colors and also border colors
default_color white
#default_shade_color white
#default_outline_color black
own_window_colour white
# Text alignment, other possible values are commented
#alignment top_left
#alignment top_right
alignment bottom_left
#alignment bottom_right
# Gap between borders of screen and text
# same thing as passing -x at command line
gap_x 20
gap_y 23
# Subtract file system buffers from used memory?
no_buffers yes
# set to yes if you want all text to be in uppercase
uppercase no
# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 1
# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 1
# Force UTF8? note that UTF8 support required XFT
override_utf8_locale yes
draw_graph_borders no
# Add spaces to keep things from moving about? This only affects certain objects.
use_spacer none
TEXT
Uptime: ${color #ddaa00}$uptime${color} Intel Atom n270 (${freq_g cpu0}GHz) ${alignr}${cpu cpu1}% CPU1: ${cpubar 5,80 cpu1}
Home:${fs_used /} used / ${fs_free /} free ${alignr}${cpu cpu2}% CPU2: ${cpubar 5,80 cpu2}
${fs_bar /}
Temp: ${color #ddaa00}${hddtemp /dev/sda}${color} ${alignr}Total: ${color #ddaa00}${fs_size /}${color}
Media:${fs_used /media/disk} used / ${fs_free /media/disk} free
${fs_bar /media/disk}
Temp: ${color #ddaa00}${hddtemp /dev/sda}${color} ${alignr}Total: ${color #ddaa00}${fs_size /media/disk}${color}
${if_existing /proc/net/route ppp0}${color #ddaa00}${downspeed ppp0}${color} k/s ${color #ddaa00}${alignc}${addr ppp0}${color}${alignr}${color #ddaa00}${upspeed ppp0}${color} k/s
${downspeedgraph ppp0 25,215 B7D17C 93BF30} ${alignr}${upspeedgraph ppp0 25,215 B7D17C 93BF30}
${color #ddaa00}${totaldown ppp0} ${alignr}${totalup ppp0}${color}
${else}${if_existing /proc/net/route eth0}${color #ddaa00}${downspeed eth0}${color} k/s ${color #ddaa00}${alignc}${addr eth0}${color}${alignr}${color #ddaa00}${upspeed eth0}${color} k/s
${downspeedgraph eth0 25,215 B7D17C 93BF30} ${alignr}${upspeedgraph eth0 25,215 B7D17C 93BF30}
${color #ddaa00}${totaldown eth0} ${alignr}${totalup eth0}${color}
${endif}${else}${if_existing /proc/net/route wlan0}${color #ddaa00}${downspeed wlan0}${color} k/s ${color #ddaa00}${alignc}${addr wlan0}${color}${alignr}${color #ddaa00}${upspeed wlan0}${color} k/s
${downspeedgraph wlan0 25,215 B7D17C 93BF30} ${alignr}${upspeedgraph wlan0 25,215 B7D17C 93BF30}
${color #ddaa00}${totaldown wlan0} ${alignr}${totalup wlan0}${color}
${endif}${else}
${alignc}${font PizzaDude Bullets:size=14}4${font} Network Unavailable
${endif}
Fiquei curioso com uma coisa. Não consigo colocar o script do exaile a funcionar com a 0.3.0.1 ...
Qual é a config que tens no conky para isso estar a "funcar" sem problemas???
use_xft yes
xftfont Liberation Sans:size=9
override_utf8_locale yes
text_buffer_size 1024
update_interval 1
total_run_times 0
double_buffer yes
no_buffers yes
net_avg_samples 1
cpu_avg_samples 1
own_window_class Conky
own_window yes
own_window_colour 3C3C3C
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
default_color D8D8D8
draw_borders no
border_width 1
border_margin 10
draw_graph_borders yes
draw_outline no
draw_shades no
color0 E6E6E6
color1 709937
color2 E6E6E6
alignment top_right
gap_x 25
gap_y 50
minimum_size 182 0
maximum_width 182
imlib_cache_size 0
TEXT
${font Liberation Sans:style=Bold:size=8}SISTEMA $stippled_hr${font}
${color0}${font Poky:size=15}S${font}${color}${goto 38}${voffset -8}Kernel: ${alignr}${color2}${kernel}${color}
${goto 38}Uptime: ${alignr}${color2}${uptime}${color}
${offset 1}${color0}${font Poky:size=16}P${font}${offset -19}${voffset 9}${cpubar cpu0 4,18}${color}${voffset -15}${voffset -1}${goto 38}CPU1: ${font Liberation Sans:style=Bold:size=8}${color1}${cpu cpu1}%${color}${font} ${alignr}${color2}${cpugraph cpu1 8,60 51751E 709937}${color}
${voffset -1}${goto 38}CPU2: ${font Liberation Sans:style=Bold:size=8}${color1}${cpu cpu2}%${color}${font} ${alignr}${color2}${cpugraph cpu2 8,60 51751E 709937}${color}
${color0}${font Poky:size=16}M${font}${color}${goto 38}${voffset -7}RAM: ${font Liberation Sans:style=Bold:size=8}${color1}$memperc%${color}${font}
${offset 1}${voffset 2}${color2}${membar 4,18}${color}${goto 38}${voffset -4}U: ${color2}${mem}${color} F: ${color2}${memeasyfree}${color}
${voffset 4}${font Liberation Sans:style=Bold:size=8}DATA $stippled_hr${font}
${voffset -10}${alignc 45}${color2}${font Arial Black:size=30}${time %H:%M}${font}${color}
${alignc}${time %d %m %Y}
${voffset 4}${font Liberation Sans:style=Bold:size=8}EXAILE $stippled_hr${font}
${execpi 1 ~/.conky/conkyExaile.py -t ~/.conky/conkyPlayer.template}
${voffset 4}${font Liberation Sans:style=Bold:size=8}HD $stippled_hr${font}
${execpi 30 ~/.conky/hd_default.py}
${voffset 4}${font Liberation Sans:style=Bold:size=8}REDE $stippled_hr${font}
${if_existing /proc/net/route wlan0}
${voffset -13}${color0}${font VariShapes Solid:size=14}q${font}${color}${goto 38}${voffset -6}Up: ${font Liberation Sans:style=Bold:size=8}${color1}${upspeed wlan0}${color}${font} ${alignr}${color2}${upspeedgraph wlan0 8,60 51751E 709937}${color}
${goto 38}Total: ${color2}${totalup wlan0}${color}
${voffset -2}${color0}${font VariShapes Solid:size=14}Q${font}${color}${goto 38}${voffset -6}Down: ${font Liberation Sans:style=Bold:size=8}${color1}${downspeed wlan0}${color}${font} ${alignr}${color2}${downspeedgraph wlan0 8,60 51751E 709937}${color}
${goto 38}Total: ${color2}${totaldown wlan0}${color}
${voffset -2}${color0}${font Poky:size=14}Y${font}${color}${goto 38} ${voffset -2}Sinal: ${font Liberation Sans:style=Bold:size=8}${color1}${wireless_link_qual wlan0}%${color}${font} ${alignr}${color2}${wireless_link_bar 8,60 wlan0}${color}
${voffset 4}${color0}${font Poky:size=13}w${font}${color}${goto 38}${voffset -8}IP local: ${alignr}${color2}${addr wlan0}${color}
${goto 38}IP externo: ${alignr}${color2}${execi 10800 ~/.conky/ip.sh}${color}
${else}${if_existing /proc/net/route eth1}
${voffset -13}${color0}${font VariShapes Solid:size=14}q${font}${color}${goto 38}${voffset -6}Up: ${font Liberation Sans:style=Bold:size=8}${color1}${upspeed eth1}${color}${font} ${alignr}${color2}${upspeedgraph eth1 8,60 51751E 709937}${color}
${goto 38}Total: ${color2}${totalup eth1}${color}
${voffset -2}${color0}${font VariShapes Solid:size=14}Q${font}${color}${goto 38}${voffset -6}Down: ${font Liberation Sans:style=Bold:size=8}${color1}${downspeed eth1}${color}${font} ${alignr}${color2}${downspeedgraph eth1 8,60 51751E 709937}${color}
${goto 38}Total: ${color2}${totaldown eth1}${color}
${voffset -2}${color0}${font Poky:size=13}w${font}${color}${goto 38}${voffset -4}IP local: ${alignr}${color2}${addr eth1}${color}
${goto 38}IP externo: ${alignr}${color2}${execi 10800 ~/.conky/ip.sh}${color}
${endif}${else}${if_existing /proc/net/route ppp0}
${voffset -13}${color0}${font VariShapes Solid:size=14}q${font}${color}${goto 38}${voffset -6}Up: ${font Liberation Sans:style=Bold:size=8}${color1}${upspeed ppp0}${color}${font} ${alignr}${color2}${upspeedgraph ppp0 8,60 51751E 709937}${color}
${goto 38}Total: ${color2}${totalup ppp0}${color}
${voffset -2}${color0}${font VariShapes Solid:size=14}Q${font}${color}${goto 38}${voffset -6}Down: ${font Liberation Sans:style=Bold:size=8}${color1}${downspeed ppp0}${color}${font} ${alignr}${color2}${downspeedgraph ppp0 8,60 51751E 709937}${color}
${goto 38}Total: ${color2}${totaldown ppp0}${color}
${voffset -2}${color0}${font Poky:size=13}w${font}${color}${goto 38}${voffset -4}Ip local: ${alignr}${color2}${addr ppp0}${color}
${endif}${else}${voffset 4}${color0}${font PizzaDude Bullets:size=12}4${font}${color}${goto 38}Rede indisponível${endif}${endif}
${voffset 4}${font Liberation Sans:style=Bold:size=8}PIDGIN $stippled_hr${font}${if_running pidgin}
${voffset 4}${execpi 10 ~/.conky/conkyPidgin.py -o -s -l 5}${else}
${voffset 4}${color0}${font PizzaDude Bullets:size=12}4${font}${color}${goto 38}O Pidgin não está a correr${endif}
${voffset -8}${font Liberation Sans:style=Bold:size=8}TEMPO $stippled_hr${font}
Humidade: ${execi 3600 conkyForecast --location=POXX0074 --datatype=HM}
Vento: ${execi 3600 conkyForecast --location=POXX0074 --datatype=WS}
Nascer do Sol: ${execi 3600 conkyForecast --location=POXX0074 --datatype=SR}
Pôr do Sol: ${execi 3600 conkyForecast --location=POXX0074 --datatype=SS}
${font ConkyWeather:size=36}${execi 3600 conkyForecast --location=POXX0074 --datatype=WF}${font}
Temperatura: ${execi 3600 conkyForecast --location=POXX0074 --datatype=HT}
#!/usr/bin/python
# -*- coding: utf-8 -*-
###############################################################################
# conkyExaile.py is a simple python script to gather
# details of from exaile for use in conky.
#
# Author: Kaivalagi
# Created: 21/09/2008
# Modifications:
# 21/09/2008 Added version option
# 21/09/2008 Updated to handle nothing, will return "Unknown" or zero value output when nothing is available
# 21/09/2008 Added --nounknownoutput option to turn off "Unknown" and "0:00" as default output for the unknown
# 22/09/2008 Minor bug fixes for unknown output
# 23/09/2008 Updated to do all dbus data retrievial upfront and reuse data if still available in musicData class
# 25/09/2008 Updated to handle when no music is playing, no unnecessary dbus calls will be made
# 25/09/2008 Updated rating output generation to use ljust string function
# 02/10/2008 Updated script to now use "[" and "]" as template brackets rather than "{" and "}" so that the execp/execpi conky command can be used, this enables the use of $font, $color options in the template which conky will then make adjustments for in the output!
# 04/10/2008 Updated help for template option
# 10/11/2008 Added --errorlog and --infolog options to log data to a file, removed --enableerrors option as unnecessary
# 17/11/2008 Now loading the template file in unicode mode to allow for the extended character set
# 17/11/2008 Added datatypes: ST (status), GE (genre), YR (year), TN (track number), FN (file name)
# 17/11/2008 Added --statustext option to allow overridding of the standard status text
# 20/11/2008 Unrated rating now outputs nothing
# 21/11/2008 Fixed statustext to work inside template now
# 06/01/2009 Removed .encode("utf-8") from internal return to fix unicode output?...it works...
# 18/05/2009 Updated to expand ~ based template paths
from datetime import datetime
from optparse import OptionParser
import codecs
import sys
import traceback
import os
try:
import dbus
DBUS_AVAIL = True
except ImportError:
# Dummy D-Bus library
class _Connection:
get_object = lambda *a: object()
class _Interface:
__init__ = lambda *a: None
ListNames = lambda *a: []
class Dummy: pass
dbus = Dummy()
dbus.Interface = _Interface
dbus.service = Dummy()
dbus.service.method = lambda *a: lambda f: f
dbus.service.Object = object
dbus.SessionBus = _Connection
DBUS_AVAIL = False
class CommandLineParser:
parser = None
def __init__(self):
self.parser = OptionParser()
self.parser.add_option("-t", "--template", dest="template", type="string", metavar="FILE", help=u"define a template file to generate output in one call. A displayable item in the file is in the form [--datatype=TI]. The following are possible options within each item: --datatype,--ratingchar. Note that the short forms of the options are not currently supported! None of these options are applicable at command line when using templates.")
self.parser.add_option("-d", "--datatype", dest="datatype", default="TI", type="string", metavar="DATATYPE", help=u"[default: %default] The data type options are: ST (status), TI (title), AL (album), AR (artist), GE (genre), YR (year), TN (track number), FN (file name), LE (length), PP (current position in percent), PT (current position in time), VO (volume), RT (rating). Not applicable at command line when using templates.")
self.parser.add_option("-r", "--ratingchar", dest="ratingchar", default="*", type="string", metavar="CHAR", help=u"[default: %default] The output character for the ratings scale. Command line option overridden if used in templates.")
self.parser.add_option("-s", "--statustext", dest="statustext", default="Playing,Paused,Stopped", type="string", metavar="TEXT", help=u"[default: %default] The text must be comma delimited in the form 'A,B,C'. Command line option overridden if used in templates.")
self.parser.add_option("-n", "--nounknownoutput", dest="nounknownoutput", default=False, action="store_true", help=u"Turn off unknown output such as \"Unknown\" for title and \"0:00\" for length. Command line option overridden if used in templates.")
self.parser.add_option("-v", "--verbose", dest="verbose", default=False, action="store_true", help=u"Request verbose output, not a good idea when running through conky!")
self.parser.add_option("-V", "--version", dest="version", default=False, action="store_true", help=u"Displays the version of the script.")
self.parser.add_option("--errorlogfile", dest="errorlogfile", type="string", metavar="FILE", help=u"If a filepath is set, the script appends errors to the filepath.")
self.parser.add_option("--infologfile", dest="infologfile", type="string", metavar="FILE", help=u"If a filepath is set, the script appends info to the filepath.")
def parse_args(self):
(options, args) = self.parser.parse_args()
return (options, args)
def print_help(self):
return self.parser.print_help()
class MusicData:
def __init__(self,status,coverart,title,album,length,artist,tracknumber,genre,year,filename,current_position_percent,current_position,rating,volume):
self.status = status
self.coverart = coverart
self.title = title
self.album = album
self.length = length
self.artist = artist
self.tracknumber = tracknumber
self.genre = genre
self.year = year
self.filename = filename
self.current_position_percent = current_position_percent
self.current_position = current_position
self.rating = rating
self.volume = volume
class ExaileInfo:
error = u""
musicData = None
def __init__(self, options):
self.options = options
def testDBus(self, bus, interface):
obj = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus')
dbus_iface = dbus.Interface(obj, 'org.freedesktop.DBus')
avail = dbus_iface.ListNames()
return interface in avail
def getOutputData(self, datatype, ratingchar, statustext, nounknownoutput):
output = u""
if nounknownoutput == True:
unknown_time = ""
unknown_number = ""
unknown_string = ""
else:
unknown_time = "0:00"
unknown_number = "0"
unknown_string = "Unknown"
try:
bus = dbus.SessionBus()
if self.musicData == None:
if self.testDBus(bus, 'org.exaile.DBusInterface'):
try:
self.logInfo("Setting up dbus interface")
remote_object = bus.get_object("org.exaile.DBusInterface","/DBusInterfaceObject")
iface = dbus.Interface(remote_object, "org.exaile.DBusInterface")
self.logInfo("Calling dbus interface for music data")
# grab the data for use
status = self.getStatusText(iface.status(), statustext)
coverart = iface.get_cover_path()
# if cover art found then use it, otherwise use default coverart image for this plugin
if len(coverart) > 0 and coverart.find("nocover.png") == -1:
coverart = coverart.encode("utf-8")
#handle escape chars, are there anymore???
coverart = coverart.replace(" ", "\ ")
coverart = coverart.replace("(", "\(")
coverart = coverart.replace(")", "\)")
length = iface.get_length()
title = iface.get_title()
album = iface.get_album()
artist = iface.get_artist()
genre = iface.get_track_attr("genre")
year = iface.get_track_attr("year")
tracknumber = iface.get_track_attr("track")
filename = iface.get_track_attr("filename")
if len(length) > 0:
current_position_percent = str(int(iface.current_position()))
length_minutes, length_seconds = map(int,length.split(":"))
current_seconds = int((float(length_minutes)*60.0+float(length_seconds))*(float(current_position_percent)/100.0))
current_position = str(int(current_seconds/60%60)).rjust(1,"0")+":"+str(int(current_seconds%60)).rjust(2,"0")
else:
current_position_percent = "0"
current_position = "0:00"
volume = str(int(iface.get_volume().split(".")[0]))
rating = str(int(iface.get_rating()))
self.musicData = MusicData(status,coverart,title,album,length,artist,tracknumber,genre,year,filename,current_position_percent,current_position,rating,volume)
except Exception, e:
self.logError("Issue calling the dbus service:"+e.__str__())
if self.musicData != None:
self.logInfo("Preparing output for datatype:"+datatype)
if datatype == "ST": #status
if self.musicData.status == None or len(self.musicData.status) == 0:
output = None
else:
output = self.musicData.status
elif datatype == "CA": #coverart
if self.musicData.coverart == None or len(self.musicData.coverart) == 0:
output = None
else:
output = self.musicData.coverart
elif datatype == "TI": #title
if self.musicData.title == None or len(self.musicData.title) == 0:
output = None
else:
output = self.musicData.title
elif datatype == "AL": #album
if self.musicData.album == None or len(self.musicData.album) == 0:
output = None
else:
output = self.musicData.album
elif datatype == "AR": #artist
if self.musicData.artist == None or len(self.musicData.artist) == 0:
output = None
else:
output = self.musicData.artist
elif datatype == "GE": #genre
if self.musicData.title == genre or len(self.musicData.genre) == 0:
output = None
else:
output = self.musicData.genre
elif datatype == "YR": #year
if self.musicData.year == None or len(self.musicData.year) == 0:
output = None
else:
output = self.musicData.year
elif datatype == "TN": #tracknumber
if self.musicData.tracknumber == None or len(self.musicData.tracknumber) == 0:
output = None
else:
output = self.musicData.tracknumber
elif datatype == "FN": #filename
if self.musicData.filename == None or len(self.musicData.filename) == 0:
output = None
else:
output = self.musicData.filename
elif datatype == "LE": # length
if self.musicData.length == None or len(self.musicData.length) == 0:
output = None
else:
output = self.musicData.length
elif datatype == "PP": #current position in percent
if self.musicData.current_position_percent == None or len(self.musicData.current_position_percent) == 0:
output = None
else:
output = self.musicData.current_position_percent
elif datatype == "PT": #current position in time
if self.musicData.current_position == None or len(self.musicData.current_position) == 0:
output = None
else:
output = self.musicData.current_position
elif datatype == "VO": #volume
if self.musicData.volume == None or len(self.musicData.volume) == 0:
output = None
else:
output = self.musicData.volume
elif datatype == "RT": #rating
if self.musicData.rating == None or self.isNumeric(self.musicData.rating) == False:
output = None
else:
rating = int(self.musicData.rating)
if rating > 0:
output = u"".ljust(rating,ratingchar)
elif rating == 0:
output = u""
else:
output = None
else:
self.logError("Unknown datatype provided: " + datatype)
return u""
if output == None or self.musicData == None:
if datatype in ["LE","PT"]:
output = unknown_time
elif datatype in ["PP","VO","YR","TN"]:
output = unknown_number
elif datatype == "CA":
output = ""
else:
output = unknown_string
return output
except SystemExit:
self.logError("System Exit!")
return u""
except Exception, e:
traceback.print_exc()
self.logError("Unknown error when calling getOutputText:" + e.__str__())
return u""
def getStatusText(self, status, statustext):
if status != None:
statustextparts = statustext.split(",")
if status == "playing":
return statustextparts[0]
elif status == "paused":
return statustextparts[1]
elif status == "stopped":
return statustextparts[2]
else:
return status
def getTemplateItemOutput(self, template_text):
# keys to template data
DATATYPE_KEY = "datatype"
RATINGCHAR_KEY = "ratingchar"
STATUSTEXT_KEY = "statustext"
NOUNKNOWNOUTPUT_KEY = "nounknownoutput"
datatype = None
ratingchar = self.options.ratingchar #default to command line option
statustext = self.options.statustext #default to command line option
nounknownoutput = self.options.nounknownoutput #default to command line option
for option in template_text.split('--'):
if len(option) == 0 or option.isspace():
continue
# not using split here...it can't assign both key and value in one call, this should be faster
x = option.find('=')
if (x != -1):
key = option[:x].strip()
value = option[x + 1:].strip()
if value == "":
value = None
else:
key = option.strip()
value = None
try:
if key == DATATYPE_KEY:
datatype = value
elif key == RATINGCHAR_KEY:
ratingchar = value
elif key == STATUSTEXT_KEY:
statustext = value
elif key == NOUNKNOWNOUTPUT_KEY:
nounknownoutput = True
else:
self.logError("Unknown template option: " + option)
except (TypeError, ValueError):
self.logError("Cannot convert option argument to number: " + option)
return u""
if datatype != None:
return self.getOutputData(datatype, ratingchar, statustext, nounknownoutput)
else:
self.logError("Template item does not have datatype defined")
return u""
def getOutputFromTemplate(self, template):
output = u""
end = False
a = 0
# a and b are indexes in the template string
# moving from left to right the string is processed
# b is index of the opening bracket and a of the closing bracket
# everything between b and a is a template that needs to be parsed
while not end:
b = template.find('[', a)
if b == -1:
b = len(template)
end = True
# if there is something between a and b, append it straight to output
if b > a:
output += template[a : b]
# check for the escape char (if we are not at the end)
if template[b - 1] == '\\' and not end:
# if its there, replace it by the bracket
output = output[:-1] + '['
# skip the bracket in the input string and continue from the beginning
a = b + 1
continue
if end:
break
a = template.find(']', b)
if a == -1:
self.logError("Missing terminal bracket (]) for a template item")
return u""
# if there is some template text...
if a > b + 1:
output += self.getTemplateItemOutput(template[b + 1 : a])
a = a + 1
return output
def writeOutput(self):
if self.options.template != None:
#load the file
try:
fileinput = codecs.open(os.path.expanduser(self.options.template), encoding='utf-8')
template = fileinput.read()
fileinput.close()
except Exception, e:
self.logError("Error loading template file: " + e.__str__())
else:
output = self.getOutputFromTemplate(template)
else:
output = self.getOutputData(self.options.datatype, self.options.ratingchar, self.options.statustext, self.options.nounknownoutput)
print output.encode("utf-8")
def isNumeric(self,value):
try:
temp = int(value)
return True
except:
return False
def logInfo(self, text):
if self.options.verbose == True:
print >> sys.stdout, "INFO: " + text
if self.options.infologfile != None:
datetimestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
fileoutput = open(self.options.infologfile, "ab")
fileoutput.write(datetimestamp+" INFO: "+text+"\n")
fileoutput.close()
def logError(self, text):
print >> sys.stderr, "ERROR: " + text
if self.options.errorlogfile != None:
datetimestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
fileoutput = open(self.options.errorlogfile, "ab")
fileoutput.write(datetimestamp+" ERROR: "+text+"\n")
fileoutput.close()
def main():
parser = CommandLineParser()
(options, args) = parser.parse_args()
if options.version == True:
print >> sys.stdout,"conkyExaile v.2.04"
else:
if options.verbose == True:
print >> sys.stdout, "*** INITIAL OPTIONS:"
print >> sys.stdout, " datatype:", options.datatype
print >> sys.stdout, " template:", options.template
print >> sys.stdout, " ratingchar:", options.ratingchar
print >> sys.stdout, " nounknownoutput:", options.nounknownoutput
print >> sys.stdout, " verbose:", options.verbose
print >> sys.stdout, " errorlogfile:",options.errorlogfile
print >> sys.stdout, " infologfile:",options.infologfile
exaileinfo = ExaileInfo(options)
exaileinfo.writeOutput()
if __name__ == '__main__':
main()
sys.exit()
background no
font Sans:size=9
use_xft yes
xftalpha 0.9
update_interval 1.0
total_run_times 0
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
minimum_size 220 5
maximum_width 210
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes
default_color white
default_shade_color black
default_outline_color green
alignment middle_right
gap_x 0
gap_y 0
no_buffers yes
uppercase no
cpu_avg_samples 2
override_utf8_locale no
uppercase no
TEXT
${alignc}Ubuntu 9.10
${alignc}$sysname $kernel $alignr
${alignc}------------------------------------------------------------------
Intel Pentium 4 ${alignr}${freq} MHz
Processos: ${alignr}$processes ($running_processes em actividade)
CPU ${alignr}${cpu cpu1}%
${cpubar 4}
${alignc}------------------------------------------------------------------
Disco ${alignr}${fs_used /}/${fs_size /}
${fs_bar 5 /}
Ram ${alignr}${mem}/${memmax}
$membar
Swap ${alignr}${swap}/${swapmax}
$swapbar
${alignc}------------------------------------------------------------------
Download ${alignr}Upload
${downspeed wlan0} ${alignr}${upspeed wlan0}
${downspeedgraph wlan0 10,50} ${alignr}${upspeedgraph wlan0 10,50}
${totaldown wlan0} ${alignr}${totalup wlan0}
Sinal ${alignr}${wireless_link_qual_perc wlan0}
${wireless_link_bar wlan0}
${alignc}------------------------------------------------------------------
alignment top_right
background no
border_margin 2
border_width 1
top_cpu_separate false
default_color white
default_shade_color black
default_outline_color white
default_color white
default_shade_color black
default_outline_color white
double_buffer yes
draw_borders no
draw_graph_borders no
draw_outline no
draw_borders no
draw_shades no
gap_x 5
gap_y 5
override_utf8_locale no
own_window yes
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
short_units yes
stippled_borders 8
update_interval 1.5
use_spacer right
use_xft yes
xftalpha 0.8
xftfont Terminus:size=8
TEXT
${font StyleBats:size=14}q${font}${color slate grey} Uptime: ${color #ddaa00}$uptime
${color }${font StyleBats:size=14}p${font}${color slate grey} Bateria: ${color #ddaa00}$alignr$battery_time
${color }${battery_bar BAT0}
$alignr${battery_percent}%
${font StyleBats:size=14}a${font}${color slate grey} Cpu: ${color }Intel Core 2 Duo T7700
${font weather:size=20}z${font}${color slate grey} Temp: ${color }${acpitemp}C
${font StyleBats:size=14}x${font}${color slate grey} Frequencia: ${color }${freq cpu0}MHz
${font xspiralmental:size=14}D${font}${color slate grey} CPU Core 1: ${color }$alignr ${cpu cpu0}%
${cpubar cpu0}
${font xspiralmental:size=14}D${font}${color slate grey} CPU Core 2: ${color }$alignr ${cpu cpu1}%
${cpubar cpu1}
${font StyleBats:size=14}y${font}${color slate grey} Ram:
${alignr}${color }$mem de $memmax
${membar}
${alignr}$memperc%
${font PizzaDude Bullets:size=16}k${font}${color slate grey} Ubuntu 9.10 ${color }
${alignr}${color slate grey}Ocupado:${color } ${fs_used /} ${color slate grey}Livre:${color } ${fs_free /}
${fs_bar /}
${color slate grey}Total: ${color }${fs_size /}${alignr}
${color }${font PizzaDude Bullets:size=16}l${font}${color slate grey} Windows 7 ${color }
${alignr}${color slate grey}Ocupado:${color } ${fs_used /media/Windows 7} ${color slate grey}Livre:${color } ${fs_free /media/Windows 7}
${fs_bar /media/Windows 7}
${color slate grey}Total: ${color }${fs_size /media/Windows 7}${alignr}${color slate grey}
${color }${font PizzaDude Bullets:size=16}m${font}${color slate grey} Downloads ${color }
${alignr}${color slate grey}Ocupado:${color } ${fs_used /media/Downloads} ${color slate grey}Livre:${color } ${fs_free /media/Downloads}
${fs_bar /media/Downloads}
${color slate grey}Total: ${color }${fs_size /media/Downloads}${alignr}${color slate grey}
${color #ddaa00}${alignc}Wireless
${color }${font StyleBats:size=14}r${font}${color slate grey}${color slate grey} Ligado a:${color lightgrey} ${wireless_essid wlan0}
${font StyleBats:size=14}n${font}${color slate grey}${color slate grey} Sinal: ${color lightgrey}${wireless_link_bar wlan0}
${color }${font PizzaDude Bullets:size=16}T ${font}${color slate grey} ${color lightgrey}${downspeed wlan0} k/s${downspeedgraph wlan0 10,50} ${color slate grey} ${totaldown wlan0}
${color }${font PizzaDude Bullets:size=16}N ${font}${color slate grey} ${color lightgrey}${upspeed wlan0} k/s${upspeedgraph wlan0 10,50} ${color slate grey} ${totalup wlan0}
#==============================================================================# conkyrc_orange
#
# author : SLK
# version : v2011011601
# license : Distributed under the terms of GNU GPL version 2 or later
#
#==============================================================================
background yes
update_interval 1
cpu_avg_samples 2
net_avg_samples 5
temperature_unit celsius
double_buffer yes
no_buffers yes
text_buffer_size 2048
gap_x -32 #5 #left-right
#gap_y 64
gap_y 0
minimum_size 210 450
maximum_width 650
own_window yes
own_window_type desktop
own_window_transparent yes
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
border_inner_margin 0
border_outer_margin 0
alignment tl
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
override_utf8_locale yes
use_xft yes
font caviar dreams:style=Regular:pixelsize=7
xftfont caviar dreams:size=8
xftalpha 0.5
uppercase no
default_color FFFFFF
color1 FFFFFF
color2 AAAAAA
color3 888888
color4 EF5A29
lua_load [B]~/.config/conky/orange/conky_orange.lua[/B]
lua_draw_hook_post main
TEXT
${voffset 36}${color1}
${goto 95}${font Ubuntu:size=23}${time %e}${voffset 12}${goto 85}${font ubuntu:size=8}${time %A}
${goto 85}${voffset 2}${font Ubuntu:size=9}${time %b}${voffset -2} ${font ubuntu:size=12}${time %Y}${font}
${voffset 68}
${goto 90}${font Ubuntu:size=7,weight:bold}${color}CPU
${goto 90}${font Ubuntu:size=7,weight:normal}${color1}${top name 1}${alignr}${top cpu 1}%
${goto 90}${color2}${top name 2}${alignr}${top cpu 2}%
${goto 90}${color3}${top name 3}${alignr}${top cpu 3}%
${goto 90}${cpugraph 11,100 666666 666666}
${goto 90}${voffset -10}${color}${threads} processos
${voffset 21}
${goto 90}${font Ubuntu:size=7,weight:bold}${color}MEMORIA
${goto 90}${font Ubuntu:size=7,weight:normal}${color1}${top_mem name 1}${alignr}${top_mem mem 1}%
${goto 90}${color2}${top_mem name 2}${alignr}${top_mem mem 2}%
${goto 90}${color3}${top_mem name 3}${alignr}${top_mem mem 3}%
${voffset 38}
${goto 90}${font Ubuntu:size=7,weight:bold}${color}DADOS
${goto 90}${font Ubuntu:size=7,weight:normal}/ - ${alignr}${fs_free /} de ${fs_size /}
${goto 90}/Arquivo - ${alignr} ${fs_free /media/Arquivo} de ${fs_size /media/Arquivo}
${goto 90}/Pastos - ${alignr} ${fs_free /media/Pastos} de ${fs_size /media/Pastos}
${voffset 1}
${goto 90}${font Ubuntu:size=12,weight:bold}${color3}SISTEMA${alignr}
${goto 90}${font openlogos:size=80}J${font}
${goto 90}${font Ubuntu:size=7}${color1}HOST ${color2} $nodename
${goto 90}${color}DEBIAN ${color2} ${exec cat /etc/debian_version}
${goto 90}${color}Kernel: ${color2}${kernel}${color}
${goto 90}${color1}CPU: ${color2}${acpitemp}C
${goto 90}${diskiograph 30,100 666666 666666}${voffset -47}
--==============================================================================-- conky_orange.lua
--
-- author : SLK
-- version : v2011011601
-- license : Distributed under the terms of GNU GPL version 2 or later
--
--==============================================================================
require 'cairo'
--------------------------------------------------------------------------------
-- clock DATA
-- HOURS
clock_h = {
{
name='time', arg='%H', max_value=24,
x=110, y=80,
graph_radius=53,
graph_thickness=3,
graph_unit_angle=30, graph_unit_thickness=30,
graph_bg_colour=0xFFFFFF, graph_bg_alpha=0.0,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
txt_radius=34,
txt_weight=1, txt_size=8.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0.6,
graduation_radius=53,
graduation_thickness=6, graduation_mark_thickness=2,
graduation_unit_angle=30,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
},
}
-- MINUTES
clock_m = {
{
name='time', arg='%M', max_value=60,
x=110, y=80,
graph_radius=57,
graph_thickness=2,
graph_unit_angle=6, graph_unit_thickness=6,
graph_bg_colour=0xFFFFFF, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
txt_radius=70,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0.6,
graduation_radius=57,
graduation_thickness=0, graduation_mark_thickness=2,
graduation_unit_angle=30,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
},
}
-- SECONDS
clock_s = {
{
name='time', arg='%S', max_value=60,
x=110, y=80,
graph_radius=50,
graph_thickness=2,
graph_unit_angle=6, graph_unit_thickness=2,
graph_bg_colour=0xFFFFFF, graph_bg_alpha=0.0,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.2,
txt_radius=40,
txt_weight=0, txt_size=8.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0.3,
graduation_radius=0,
graduation_thickness=0, graduation_mark_thickness=0,
graduation_unit_angle=0,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.0,
},
}
--------------------------------------------------------------------------------
-- gauge DATA
gauge = {
{
name='cpu', arg='cpu0', max_value=100,
x=85, y=200,
graph_radius=24,
graph_thickness=5,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.0,
hand_fg_colour=0xFFFFFF, hand_fg_alpha=1.0,
txt_radius=34,
txt_weight=0, txt_size=8.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=1.0,
graduation_radius=28,
graduation_thickness=0, graduation_mark_thickness=1,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3,
},
{
name='cpu', arg='cpu1', max_value=100,
x=85, y=200,
graph_radius=18,
graph_thickness=5,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.0,
hand_fg_colour=0xFFFFFF, hand_fg_alpha=1.0,
txt_radius=10,
txt_weight=0, txt_size=8.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=1.0,
graduation_radius=28,
graduation_thickness=0, graduation_mark_thickness=1,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3,
},
{
name='memperc', arg='', max_value=100,
x=85, y=300,
graph_radius=24,
graph_thickness=5,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.0,
hand_fg_colour=0xFFFFFF, hand_fg_alpha=1.0,
txt_radius=10,
txt_weight=0, txt_size=8.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=1.0,
graduation_radius=23,
graduation_thickness=0, graduation_mark_thickness=2,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.5,
caption='',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3,
},
{
name='fs_used_perc', arg='/media/Arquivo', max_value=100,
x=85, y=405,
graph_radius=24,
graph_thickness=5,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.0,
hand_fg_colour=0xFFFFFF, hand_fg_alpha=1.0,
txt_radius=34,
txt_weight=0, txt_size=8.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=1.0,
graduation_radius=28,
graduation_thickness=0, graduation_mark_thickness=1,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5,
},
{
name='fs_used_perc', arg='/', max_value=100,
x=85, y=405,
graph_radius=18,
graph_thickness=5,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.0,
hand_fg_colour=0xFFFFFF, hand_fg_alpha=1.0,
txt_radius=10,
txt_weight=0, txt_size=8.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=1.0,
graduation_radius=28,
graduation_thickness=0, graduation_mark_thickness=1,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5,
},
}
-------------------------------------------------------------------------------
-- rgb_to_r_g_b
-- converts color in hexa to decimal
--
function rgb_to_r_g_b(colour, alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
-------------------------------------------------------------------------------
-- angle_to_position
-- convert degree to rad and rotate (0 degree is top/north)
--
function angle_to_position(start_angle, current_angle)
local pos = current_angle + start_angle
return ( ( pos * (2 * math.pi / 360) ) - (math.pi / 2) )
end
-------------------------------------------------------------------------------
-- draw_clock_ring
-- displays clock
--
function draw_clock_ring(display, data, value)
local max_value = data['max_value']
local x, y = data['x'], data['y']
local graph_radius = data['graph_radius']
local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
local graph_unit_angle = data['graph_unit_angle']
local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']
-- background ring
cairo_arc(display, x, y, graph_radius, 0, 2 * math.pi)
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
cairo_set_line_width(display, graph_thickness)
cairo_stroke(display)
-- arc of value
local val = (value % max_value)
local i = 1
while i <= val do
cairo_arc(display, x, y, graph_radius,( ((graph_unit_angle * i) - graph_unit_thickness)*(2*math.pi/360) )-(math.pi/2),((graph_unit_angle * i) * (2*math.pi/360))-(math.pi/2))
cairo_set_source_rgba(display,rgb_to_r_g_b(graph_fg_colour,graph_fg_alpha))
cairo_stroke(display)
i = i + 1
end
local angle = (graph_unit_angle * i) - graph_unit_thickness
-- graduations marks
local graduation_radius = data['graduation_radius']
local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
local graduation_unit_angle = data['graduation_unit_angle']
local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
local nb_graduation = 360 / graduation_unit_angle
local i = 1
while i <= nb_graduation do
cairo_set_line_width(display, graduation_thickness)
cairo_arc(display, x, y, graduation_radius, (((graduation_unit_angle * i)-(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2),(((graduation_unit_angle * i)+(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2))
cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
cairo_stroke(display)
cairo_set_line_width(display, graph_thickness)
i = i + 1
end
end
-- text
local txt_radius = data['txt_radius']
local txt_weight, txt_size = data['txt_weight'], data['txt_size']
local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
local movex = txt_radius * (math.cos((angle * 2 * math.pi / 360)-(math.pi/2)))
local movey = txt_radius * (math.sin((angle * 2 * math.pi / 360)-(math.pi/2)))
cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight);
cairo_set_font_size (display, txt_size);
cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha));
cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3);
cairo_show_text (display, value);
cairo_stroke (display);
end
-------------------------------------------------------------------------------
-- draw_gauge_ring
-- displays gauges
--
function draw_gauge_ring(display, data, value)
local max_value = data['max_value']
local x, y = data['x'], data['y']
local graph_radius = data['graph_radius']
local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
local graph_start_angle = data['graph_start_angle']
local graph_unit_angle = data['graph_unit_angle']
local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']
local hand_fg_colour, hand_fg_alpha = data['hand_fg_colour'], data['hand_fg_alpha']
local graph_end_angle = (max_value * graph_unit_angle) % 360
-- background ring
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, 0), angle_to_position(graph_start_angle, graph_end_angle))
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
cairo_set_line_width(display, graph_thickness)
cairo_stroke(display)
-- arc of value
local val = value % (max_value + 1)
local start_arc = 0
local stop_arc = 0
local i = 1
while i <= val do
start_arc = (graph_unit_angle * i) - graph_unit_thickness
stop_arc = (graph_unit_angle * i)
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_fg_colour, graph_fg_alpha))
cairo_stroke(display)
i = i + 1
end
local angle = start_arc
-- hand
start_arc = (graph_unit_angle * val) - (graph_unit_thickness * 2)
stop_arc = (graph_unit_angle * val)
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display, rgb_to_r_g_b(hand_fg_colour, hand_fg_alpha))
cairo_stroke(display)
-- graduations marks
local graduation_radius = data['graduation_radius']
local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
local graduation_unit_angle = data['graduation_unit_angle']
local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
local nb_graduation = graph_end_angle / graduation_unit_angle
local i = 0
while i < nb_graduation do
cairo_set_line_width(display, graduation_thickness)
start_arc = (graduation_unit_angle * i) - (graduation_mark_thickness / 2)
stop_arc = (graduation_unit_angle * i) + (graduation_mark_thickness / 2)
cairo_arc(display, x, y, graduation_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
cairo_stroke(display)
cairo_set_line_width(display, graph_thickness)
i = i + 1
end
end
-- text
local txt_radius = data['txt_radius']
local txt_weight, txt_size = data['txt_weight'], data['txt_size']
local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
local movex = txt_radius * math.cos(angle_to_position(graph_start_angle, angle))
local movey = txt_radius * math.sin(angle_to_position(graph_start_angle, angle))
cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight)
cairo_set_font_size (display, txt_size)
cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha))
cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3)
cairo_show_text (display, value)
cairo_stroke (display)
-- caption
local caption = data['caption']
local caption_weight, caption_size = data['caption_weight'], data['caption_size']
local caption_fg_colour, caption_fg_alpha = data['caption_fg_colour'], data['caption_fg_alpha']
local tox = graph_radius * (math.cos((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
local toy = graph_radius * (math.sin((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, caption_weight);
cairo_set_font_size (display, caption_size)
cairo_set_source_rgba (display, rgb_to_r_g_b(caption_fg_colour, caption_fg_alpha))
cairo_move_to (display, x + tox + 5, y + toy + 1)
-- bad hack but not enough time !
if graph_start_angle < 105 then
cairo_move_to (display, x + tox - 30, y + toy + 1)
end
cairo_show_text (display, caption)
cairo_stroke (display)
end
-------------------------------------------------------------------------------
-- go_clock_rings
-- loads data and displays clock
--
function go_clock_rings(display)
local function load_clock_rings(display, data)
local str, value = '', 0
str = string.format('${%s %s}',data['name'], data['arg'])
str = conky_parse(str)
value = tonumber(str)
draw_clock_ring(display, data, value)
end
for i in pairs(clock_h) do
load_clock_rings(display, clock_h[i])
end
for i in pairs(clock_m) do
load_clock_rings(display, clock_m[i])
end
for i in pairs(clock_s) do
load_clock_rings(display, clock_s[i])
end
end
-------------------------------------------------------------------------------
-- go_gauge_rings
-- loads data and displays gauges
--
function go_gauge_rings(display)
local function load_gauge_rings(display, data)
local str, value = '', 0
str = string.format('${%s %s}',data['name'], data['arg'])
str = conky_parse(str)
value = tonumber(str)
draw_gauge_ring(display, data, value)
end
for i in pairs(gauge) do
load_gauge_rings(display, gauge[i])
end
end
-------------------------------------------------------------------------------
-- MAIN
function conky_main()
if conky_window == nil then
return
end
local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
local display = cairo_create(cs)
local updates = conky_parse('${updates}')
update_num = tonumber(updates)
if update_num > 5 then
go_clock_rings(display)
go_gauge_rings(display)
end
end
background yes
use_xft yes
xftfont HandelGotD:size=8
xftalpha 0.5
update_interval 4.0
total_run_times 0
own_window no
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
minimum_size 200 5
maximum_width 220
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes
default_color grey
default_shade_color red
default_outline_color green
alignment top_right
gap_x 5
gap_y 5
no_buffers yes
uppercase no
cpu_avg_samples 2
override_utf8_locale no
TEXT
SYSTEM ${hr 2}
$sysname $kernel $alignr $machine
Clock:$alignr${freq}MHz
Host:$alignr$nodename
Uptime:$alignr$uptime
File System: $alignr${fs_type}
Local Ip: ${alignr}${addr wlan0}
CPU $alignr ${cpu cpu0}%
${cpugraph cpu0}
MEM $alignc $mem / $memmax $alignr $memperc%
$membar
swap $alignc $swap / $swapmax $alignr $swapperc%
${swapbar}
/ $alignc ${fs_used /} / ${fs_size /} $alignr ${fs_free_perc /}%
${fs_bar /}
$processes processes ($running_processes running)
NAME $alignr PID CPU
${top name 1} $alignr ${top pid 1} ${top cpu 1}
${top name 2} $alignr ${top pid 2} ${top cpu 2}
${top name 3} $alignr ${top pid 3} ${top cpu 3}
${top name 4} $alignr ${top pid 4} ${top cpu 4}
${top name 5} $alignr ${top pid 5} ${top cpu 5}
${top name 6} $alignr ${top pid 6} ${top cpu 6}
${top name 7} $alignr ${top pid 7} ${top cpu 7}
${top name 8} $alignr ${top pid 8} ${top cpu 8}
${top name 9} $alignr ${top pid 8} ${top cpu 9}
NETWORK ${hr 2}
Inbound $alignr ${downspeed wlan0}
Total Down: $alignr ${totaldown wlan0}
Outbound $alignr ${upspeed wlan0}
Total Up: $alignr ${totalup wlan0}
background no
font Sans:size=8
#xftfont Sans:size=10
use_xft yes
xftalpha 0.9
update_interval 2.0
total_run_times 0
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
minimum_size 220 5
maximum_width 220
draw_shades yes
draw_outline no
draw_borders no
draw_graph_borders yes
default_color white
default_shade_color black
default_outline_color green
alignment top_right
gap_x 12
gap_y 35
no_buffers yes
uppercase no
override_utf8_locale no
uppercase yes # set to yes if you want all text to be in uppercase
TEXT
${hr 1}
CPU ${alignr}${freq} MHz
${cpugraph}
${hr 1}
C-I $alignr${cpu cpu0}%
${cpubar cpu0}
C-II $alignr${cpu cpu1}%
${cpubar cpu1}
C-III $alignr${cpu cpu2}%
${cpubar cpu2}
${hr 1}
CPU ${alignr}${acpitemp}c
GPU ${alignr}${hwmon 0 temp 1}c
HDD ${alignr}${hddtemp /dev/sda}c
${hr 1}
Ram * $mem * $memmax * $memperc%
${membar}
SWP * $swap * $swapmax * $swapperc%
${swapbar}
${hr 1}
HDD * ${fs_used /} * ${fs_free /} * ${fs_size /}
${fs_bar}
E $alignr $diskio_write
${diskiograph_write }
L $alignr $diskio_read
${diskiograph_read }
${hr 1}
${addr eth1}
${downspeed eth1} /s${alignr}${upspeed eth1} /s
${downspeedgraph eth1 15,82}${alignr}${upspeedgraph eth1 15,82}
${totaldown eth1} ${alignr}${totalup eth1}
${wireless_essid wlan0}
${downspeed wlan0} /s${alignr}${upspeed wlan0} /s
${downspeedgraph wlan0 15,82}${alignr}${upspeedgraph wlan0 15,82}
${totaldown wlan0} ${alignr}${totalup wlan0}
${hr 1}