Konfigurasi Conky..?

Optimalisasi setingan desktop dan mempercantik desktop Ubuntu dengan efek-efek desktop berbasis open source.
User avatar
dhiemaz_mitnick
Posts: 281
Joined: 06 Jun 2011, 00:57
Location: Jakarta
Contact:

Re: Konfigurasi Conky..?

Postby dhiemaz_mitnick » 18 Jul 2011, 22:23

Jalanin conky di terminal dengan mengetik perintah ini :

conky [enter] atau bisa menggunakan parameter tambahan, untuk melihat parameternya gunakan perintah conky --help

Kalo mau menjalankan secara otomatis masukan perintah tersebut kedalam startup application di ubuntu.

Kalo mengactifkannya di terminal, tinggal tekan saja ctrl + c
kalo mengaktifkan secara otomatis melalui startup application, bisa di kill saja didalam htop atau system monitor, conky tersebut.

Semoga membantu..
User avatar
cezmed
Posts: 9
Joined: 17 Jul 2011, 13:52
Location: Bandung, Indonesia

Re: Konfigurasi Conky..?

Postby cezmed » 19 Jul 2011, 17:22

@dhimez mitnick :
makasi gan atas pencerahannya .. :)
User avatar
dhiemaz_mitnick
Posts: 281
Joined: 06 Jun 2011, 00:57
Location: Jakarta
Contact:

Re: Konfigurasi Conky..?

Postby dhiemaz_mitnick » 19 Jul 2011, 19:24

sama-sama Bro..
User avatar
emji17kelayanjr
Posts: 3
Joined: 14 Jun 2011, 12:12
Location: surabaya
Contact:

Re: Konfigurasi Conky..?

Postby emji17kelayanjr » 16 Sep 2011, 03:48

ane udah install conky gan..

kalau mau menampilakn tombbol shortcutnya tekan apa gan? kalau d wedus kan ctrl + alt + del..
User avatar
pingsut
Posts: 754
Joined: 16 May 2010, 18:05
Location: Yogyakarta
Contact:

Re: Konfigurasi Conky..?

Postby pingsut » 16 Sep 2011, 16:37

ane udah install conky gan..

kalau mau menampilakn tombbol shortcutnya tekan apa gan? kalau d wedus kan ctrl + alt + del..


shortcut apa nih bro? kalo mau menjalankan/ menampilkan conky kan tinggal tekan tombol keyboard "Alt+F2", trus masukin "conky", tekan tombol "Enter".
User avatar
naracyber
Posts: 57
Joined: 04 Oct 2011, 02:01
Location: Tangerang
Contact:

Re: Konfigurasi Conky..?

Postby naracyber » 13 Oct 2011, 14:40

akhirnya ketemu juga yang lengkap...
untuk masukan mungkin ini bisa dijadikan ebook edisi 2 :)
User avatar
izanagi
Posts: 155
Joined: 01 Feb 2010, 06:27
Location: Depok II,pindah ke bogor
Contact:

Re: Konfigurasi Conky..?

Postby izanagi » 24 Dec 2011, 08:41

ayo... lanjutkan.. nih thread.. banyak pengetahuan tentang conky.. nya :grin:
User avatar
qaffa
Posts: 284
Joined: 11 Jun 2011, 15:45

Re: Konfigurasi Conky..?

Postby qaffa » 01 May 2012, 08:28

Conky ku ,, tpi gk thu script buat nampilin logo gnome,pinguin ma simbol ubuntu ???? :confused:
_________________________________________
Acer Aspire 4739Z Core i3 M380 2,5Ghz
InteL HD Graphic 512MB
OS Maverick MeerKat 10.10 32Bit
Attachments
snapshot1.png
snapshot1.png (1.24 MiB) Viewed 2130 times
User avatar
daytch
Posts: 37
Joined: 27 Aug 2011, 10:59
Location: pekalongan
Contact:

Re: Konfigurasi Conky..?

Postby daytch » 13 May 2012, 20:58

gan klo mw nambahin jam d conky carany gmn y ? :confused:
User avatar
pingsut
Posts: 754
Joined: 16 May 2010, 18:05
Location: Yogyakarta
Contact:

Re: Konfigurasi Conky..?

Postby pingsut » 13 May 2012, 22:47

gan klo mw nambahin jam d conky carany gmn y ? :confused:

sekadar contoh skripnya bro:

Code: Select all

${time %H:%M:%S %p} --> buat jam ${time %d}-${time %m}-${time %Y} --> buat tanggal
:grin:
User avatar
b1u3
Posts: 10
Joined: 08 May 2012, 21:04

Re: Konfigurasi Conky..?

Postby b1u3 » 19 May 2012, 10:45

ga bisa saya :(
User avatar
pingsut
Posts: 754
Joined: 16 May 2010, 18:05
Location: Yogyakarta
Contact:

Re: Konfigurasi Conky..?

Postby pingsut » 03 Jun 2012, 21:00

ga bisa saya :(

gak bisa gimana maksudnya om?
User avatar
VITAS
Posts: 10
Joined: 23 May 2012, 10:21

Re: Konfigurasi Conky..?

Postby VITAS » 13 Aug 2012, 03:49

om ada yang bisa bantu gk kalo kaya gini

Conky: desktop window (1600004) is subwindow of root window (ae)
Conky: window type - override
Conky: drawing to created window (0x4200001)
Conky: drawing to double buffer
Conky: curl: no data from server
Conky: curl: no data from server
^CConky: received SIGINT or SIGTERM to terminate. bye!
User avatar
herusetiawan
Posts: 12
Joined: 13 Apr 2012, 09:07

Re: Konfigurasi Conky..?

Postby herusetiawan » 17 Aug 2012, 14:37

om ada yang bisa bantu gk kalo kaya gini

Conky: desktop window (1600004) is subwindow of root window (ae)
Conky: window type - override
Conky: drawing to created window (0x4200001)
Conky: drawing to double buffer
Conky: curl: no data from server
Conky: curl: no data from server
^CConky: received SIGINT or SIGTERM to terminate. bye!


"^C" -- jangan ngeklik ctrl+c, itu perintah buat nutup aplikasi
User avatar
buzzing_bee
Posts: 1971
Joined: 29 Dec 2010, 21:53
Location: /home/buzzing_bee
Contact:

Re: Konfigurasi Conky..?

Postby buzzing_bee » 17 Aug 2012, 14:46

Conky ku ,, tpi gk thu script buat nampilin logo gnome,pinguin ma simbol ubuntu ???? :confused:
_________________________________________
Acer Aspire 4739Z Core i3 M380 2,5Ghz
InteL HD Graphic 512MB
OS Maverick MeerKat 10.10 32Bit
setahu saya itu ditambahin pake font masbro :D
om ada yang bisa bantu gk kalo kaya gini

Conky: desktop window (1600004) is subwindow of root window (ae)
Conky: window type - override
Conky: drawing to created window (0x4200001)
Conky: drawing to double buffer
Conky: curl: no data from server
Conky: curl: no data from server
^CConky: received SIGINT or SIGTERM to terminate. bye!


"^C" -- jangan ngeklik ctrl+c, itu perintah buat nutup aplikasi


masukin aja script conky nya ke autostart, jadi pas login, langsung di load scriptnya :D
User avatar
ajuztsuta
Posts: 48
Joined: 17 Jun 2011, 22:02
Location: Singaraja, Bali, Indonesia
Contact:

Re: Konfigurasi Conky..?

Postby ajuztsuta » 14 Oct 2012, 07:26

masbrow share dong biar conky bisa tampil di gnome
User avatar
K3v1N
Posts: 12
Joined: 04 Dec 2012, 00:51
Contact:

Re: Konfigurasi Conky..?

Postby K3v1N » 05 Dec 2012, 23:46

wahh tampilannya masih blom mantap :D
User avatar
ullakx
Posts: 109
Joined: 18 Jul 2010, 06:11
Location: /var/www
Contact:

Re: Konfigurasi Conky..?

Postby ullakx » 06 Dec 2012, 08:53

wahh tampilannya masih blom mantap :D
http://www.noobslab.com/2012/07/conky-c ... linux.html
coba di test satu2 mana yg paling bagus menurut Anda.. :grin:


semoga membantu.. :grin:
User avatar
Gardener
Posts: 12
Joined: 12 Jun 2012, 15:27
Location: Pinggir Laut

Re: Konfigurasi Conky..?

Postby Gardener » 13 Jan 2013, 10:34

My Standard Deskop Xubuntu 12.04.1 + Conky 1.9.0-2 (PPA)

Image

Full image here: http://i48.tinypic.com/200a3ur.png

Conky Code (Please adjust your file configuration as necessary):

1. Startconky.sh
[spoiler]

Code: Select all

#!/bin/bash sleep 20 && conky -d -c ~/.conky/conkyrc & sleep 20 && conky -d -c ~/.conky/conkyclock & sleep 20 && conky -d -c ~/.conky/conkysimplecalendar & exit
[/spoiler]

2. Main conkyrc (sebelah kanan desktop)
[spoiler]

Code: Select all

# � Text settings � # use_xft yes xftfont DroidSans:size=7.75 xftalpha 0.8 text_buffer_size 2048 # Update interval in seconds update_interval 1 # This is the number of times Conky will update before quitting. # Set to zero to run forever. total_run_times 0 # � Window specifications � # # Create own window instead of using desktop (required in nautilus) own_window yes own_window_class Conky-semi own_window_type desktop own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_transparent yes own_window_argb_visual yes own_window_argb_value 0 # Use double buffering (reduces flicker, may not work for everyone) double_buffer yes # Minimum size of text area minimum_size 200 240 #maximum width 200 # � Graphics settings � # draw_shades no draw_outline no draw_borders no draw_graph_borders yes # Stippled borders? stippled_borders 0 # border margins #border_margin 5 # border width border_width 1 # Default colors and also border colors default_color white own_window_colour white # Text alignment, other possible values are commented alignment top_right # Gap between borders of screen and text # same thing as passing -x at command line gap_x 10 gap_y 30 # 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 2 # number of net samples to average # set to 1 to disable averaging net_avg_samples 2 # Force UTF8? note that UTF8 support required XFT override_utf8_locale yes # Add spaces to keep things from moving about? This only affects certain objects. use_spacer none # Load Lua for shading. lua_load ~/.conky/draw_bg.lua lua_draw_hook_pre draw_bg # Load Lua for bargraph. lua_load ~/.conky/bargraph.lua lua_draw_hook_post main_bars TEXT ################################## ## SYSTEM INFO ## ################################## ${color CCFF00}INFORMASI SISTEM ${hr 1}${color} Host name: ${alignr}${nodename} Sistem: ${alignr}${pre_exec lsb_release -sd || cat /etc/*release} ${machine} Kernel: ${alignr}${kernel} Uptime: ${alignr}${uptime} GPU: nVidia GeForce G 105M ${alignr}512MiB GPU Temp: ${execi 60 nvidia-settings -query GPUCoreTemp | perl -ne 'print $1 if /GPUCoreTemp.*?: (\d+)./;'}�C ${alignr}Driver Version: ${pre_exec dpkg --status nvidia-current | grep Version | cut -f 1 -d '-' | sed 's/[^.,0-9]//g'} ## GPU Clock: ${alignr}${exec nvidia-settings -q GPU2DClockFreqs -t} MHz CPUs Model: ${execi 1000 cat /proc/cpuinfo | grep 'model name' | sed -e 's/model name.*: //'} CPU Temp: ${hwmon temp 1}�C ${alignr}Current CPU Freq: ${freq_g (0)}GHz CPU1 Usage: ${alignr}${cpu cpu0}% ${cpugraph cpu0 0000ff ff0000} CPU2 Usage: ${alignr}${cpu cpu1}% ${cpugraph cpu1 00FF00 FF3C00} Memory Usage: $memperc% ${alignr} $mem used of $memmax HDD (Home) Usage: ${fs_used_perc /}% ${alignr} ${fs_free /home} free of ${fs_size /home} HDD Temp: ${alignr}${hddtemp /dev/sda}�C ########## BAGIAN NETWORK ########## ${color CCFF00}Wi-Fi NETWORK ${hr 1}${color} IP Address: ${alignr}${addr wlan0} Strength: ${wireless_link_qual wlan0}% Bitrate: ${alignr}${wireless_bitrate wlan0} ########## BAGIAN JAM DAN TANGGAL ########## ${color CCFF00}WAKTU ${hr 1}${color} ${font RadioSpace:size=32}${color ivory3}${if_match ${time %l}<=9}${alignc 7}${time %l:%M %p}${else}${if_match ${time %l}>=10}${alignc -1}${time %l:%M %p}${endif}${endif}${font} ##### ${alignc 28}${font Rabiohead:size=18}${time %a, %d %b %Y}${font} ########## BAGIAN HARD DISK ########## #${color orange}HARD DISK ${hr 1}${color} #HDD Temp: ${alignr}${hddtemp /dev/sda}�C #Home: $alignr ${fs_used_perc /}% #${fs_free /home} free of total ${fs_size /home} ${alignr}${fs_bar 8,70 /home} #Root: $alignr ${fs_used_perc /}% #${fs_free /root} free of total ${fs_size /root} ${alignr}${fs_bar 8,70 /root} ########## BAGIAN PROSES ########## ${color CCFF00}PROSES ${hr 1}${color} $processes Proses ($running_processes berjalan) #Load Average${alignr} $loadavg NAMA $alignr PID %CPU %MEM ${top name 1} $alignr ${top pid 1} ${top cpu 1} ${top mem 1} ${top name 2} $alignr ${top pid 2} ${top cpu 2} ${top mem 2} ${top name 3} $alignr ${top pid 3} ${top cpu 3} ${top mem 3} ${color CCFF00}SHORT CUT ${hr 1}${color} Super + w ${alignr}Web browser Super + m ${alignr}Mail reader Super + i ${alignr}Internet massanger Super + s ${alignr}Skype Super + f ${alignr}File manager Alt + F2 ${alignr}Run command Ctrl + Esc ${alignr}Application menu ${color CCFF00}${hr 1}${color} ${font Pea Celestial Creation:bold:size=6.9}Dear God . . . The only thing I ask of You is to hold her when I'm not around when I'm much too far away . . .
[/spoiler]

3. Conky Simpleclock (Lua)
[spoiler]

Code: Select all

###################### # - Conky settings - # ###################### background yes update_interval 1 cpu_avg_samples 2 override_utf8_locale yes double_buffer yes no_buffers yes text_buffer_size 1024 imlib_cache_size 0 gap_x -10 gap_y 0 minimum_size 200 200 ##################### # - Text settings - # ##################### use_xft yes xftfont Santana:size=9:style=bold xftalpha 0.8 uppercase no ############################# # - Window specifications - # ############################# own_window yes own_window_class Conky-semi own_window_type Desktop own_window_transparent Yes own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_argb_visual Yes own_window_argb_value 100 border_inner_margin 0 border_outer_margin 0 ######################### # - Graphics settings - # ######################### draw_shades no draw_outline no draw_borders no draw_graph_borders no default_color ffffff # Text alignment, other possible values are commented #alignment middle_left #alignment middle_middle #alignment middle_right #alignment top_middle alignment top_left #alignment top_right #alignment bottom_left #alignment bottom_right #alignment bottom_middle #### ## Load Lua for bargraphs (required) ## Set the path to your script here. # lua_load ~/.conky/clock3.lua lua_draw_hook_pre clock TEXT
[/spoiler]

3. Conky SimpleCalendar
[spoiler]

Code: Select all

# � Conky settings � # background Yes update_interval 1 total_run_times 0 net_avg_samples 2 cpu_avg_samples 2 override_utf8_locale yes double_buffer yes no_buffers yes text_buffer_size 2048 ## imlib_cache_size 0 # � Window specifications � # own_window yes own_window_class Conky-semi own_window_type Normal own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager own_window_transparent yes own_window_argb_visual No own_window_argb_value 100 border_inner_margin 0 border_outer_margin 0 minimum_size 110 140 ## maximum_width 260 alignment top_left gap_x 50 gap_y 250 # � Graphics settings � # draw_shades no draw_outline no draw_borders no draw_graph_borders no # � Text settings � # use_xft yes xftfont LCDMono2:size=7 xftalpha 1.0 default_color FFFFFF uppercase no use_spacer right TEXT ${image /home/nadifa/.conky/Orange.png -p 0,1 -s 110x140} ${alignc 11}${voffset 7}${font Candara:size=12}${time %A}${font} ${alignc 31}${voffset 7}${font Droid Sans:Bold:size=46}${time %d}${font} ${alignc 11}${voffset 16}${font Droid Sans:size=10.3}${time %B %Y}${font}
[/spoiler]

4. Lua for Shading
[spoiler]

Code: Select all

--[[ Background by londonali1010 (2009) VinDSL Background Hack (2010-2011) This script draws a background to the Conky window. It covers the whole of the Conky window, but you can specify rounded corners, if you wish. To call this script in Conky, use (assuming you have saved this script to ~/scripts/): lua_load ~/scripts/draw_bg.lua lua_draw_hook_pre draw_bg Changelog: + v3.1 VinDSL Hack (12.01.2011) Added more shading example(s). + v3.0 VinDSL Hack (01.28.2011) Killed memory leak. + v2.4 VinDSL Hack (01.25.2011) Declared all variables in local. + v2.3 VinDSL Hack (12.31.2010) Added shading example(s). + v2.2 VinDSL Hack (12.30.2010) Cleaned up the code a bit. + v2.1 VinDSL Hack (12.24.2010) Added cairo destroy function(s). + v2.0 VinDSL Hack (12.21.2010) Added height adjustment variable. + v1.0 Original release (07.10.2009) ]] --------------START OF PARAMETERS ------------ -- Change these settings to affect your background: -- "corner_r" is the radius, in pixels, of the rounded corners. If you don't want rounded corners, use 0. local corner_r = 20 -- Set the colour and transparency (alpha) of your background (0.00 - 0.99). -- (Light Shading Example) -- local bg_colour = 0x4d4d4d -- local bg_alpha = 0.50 -- (Medium Shading Example) local bg_colour = 0x222222 local bg_alpha = 0.60 -- (Dark Shading Example) -- local bg_colour = 0x000000 -- local bg_alpha = 0.02 -- (Brown Shading Example) -- local bg_colour = 0x330000 -- local bg_alpha = 0.04 -- (Ivory Black Shading Example) -- local bg_colour = 0x292421 -- local bg_alpha = 0.22 -- (Navy Blue Shading Example) -- local bg_colour = 0x33339F -- local bg_alpha = 0.33 -- (Olive Green Shading Example) -- local bg_colour = 0x333319 -- local bg_alpha = 0.13 -- (Silver Shading Example) -- local bg_colour = 0xc0c0c0 -- local bg_alpha = 0.05 -- Tweaks the height of your background, in pixels. If you don't need to adjust the height, use 0. -- (Default Setting) -- local vindsl_hack_height = 0 local vindsl_hack_height = -2 ---------------END OF PARAMETERS ------------- require 'cairo' local cs, cr = nil local function rgb_to_r_g_b(colour,alpha) return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha end function conky_draw_bg() if conky_window == nil then return end if cs == nil then cairo_surface_destroy(cs) end if cr == nil then cairo_destroy(cr) end local w = conky_window.width local h = conky_window.height local v = vindsl_hack_height local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height) local cr = cairo_create(cs) cairo_move_to(cr,corner_r,0) cairo_line_to(cr,w-corner_r,0) cairo_curve_to(cr,w,0,w,0,w,corner_r) cairo_line_to(cr,w,h+v-corner_r) cairo_curve_to(cr,w,h+v,w,h+v,w-corner_r,h+v) cairo_line_to(cr,corner_r,h+v) cairo_curve_to(cr,0,h+v,0,h+v,0,h+v-corner_r) cairo_line_to(cr,0,corner_r) cairo_curve_to(cr,0,0,0,0,corner_r,0) cairo_close_path(cr) cairo_set_source_rgba(cr,rgb_to_r_g_b(bg_colour,bg_alpha)) cairo_fill(cr) cairo_surface_destroy(cs) cairo_destroy(cr) end
[/spoiler]

5. Lua For Wireless Strength
[spoiler]

Code: Select all

--[[ BARGRAPH WIDGET v2.1 by wlourf (07 Jan. 2011) this widget draws a bargraph with different effects http://u-scripts.blogspot.com/2010/07/bargraph-widget.html To call the script in a conky, use, before TEXT lua_load /path/to/the/script/bargraph.lua lua_draw_hook_pre main_rings and add one line (blank or not) after TEXT Parameters are : 3 parameters are mandatory name - the name of the conky variable to display, for example for {$cpu cpu0}, just write name="cpu" arg - the argument of the above variable, for example for {$cpu cpu0}, just write arg="cpu0" arg can be a numerical value if name="" max - the maximum value the above variable can reach, for example, for {$cpu cpu0}, just write max=100 Optional parameters: x,y - coordinates of the starting point of the bar, default = middle of the conky window cap - end of cap line, ossibles values are r,b,s (for round, butt, square), default="b" http://www.cairographics.org/samples/set_line_cap/ angle - angle of rotation of the bar in degress, default = 0 (i.e. a vertical bar) set to 90 for an horizontal bar skew_x - skew bar around x axis, default = 0 skew_y - skew bar around y axis, default = 0 blocks - number of blocks to display for a bar (values >0) , default= 10 height - height of a block, default=10 pixels width - width of a block, default=20 pixels space - space between 2 blocks, default=2 pixels angle_bar - this angle is used to draw a bar on a circular way (ok, this is no more a bar !) default=0 radius - for cicular bars, internal radius, default=0 with radius, parameter width has no more effect. Colours below are defined into braces {colour in hexadecimal, alpha} fg_colour - colour of a block ON, default= {0x00FF00,1} bg_colour - colour of a block OFF, default = {0x00FF00,0.5} alarm - threshold, values after this threshold will use alarm_colour colour , default=max alarm_colour - colour of a block greater than alarm, default=fg_colour smooth - (true or false), create a gradient from fg_colour to bg_colour, default=false mid_colour - colours to add to gradient, with this syntax {position into the gradient (0 to1), colour hexa, alpha} for example, this table {{0.25,0xff0000,1},{0.5,0x00ff00,1},{0.75,0x0000ff,1}} will add 3 colours to gradient created by fg_colour and alarm_colour, default=no mid_colour led_effect - add LED effects to each block, default=no led_effect if smooth=true, led_effect is not used possibles values : "r","a","e" for radial, parallel, perdendicular to the bar (just try!) led_effect has to be used with theses colours : fg_led - middle colour of a block ON, default = fg_colour bg_led - middle colour of a block OFF, default = bg_colour alarm_led - middle colour of a block > ALARM, default = alarm_colour reflection parameters, not available for circular bars reflection_alpha - add a reflection effect (values from 0 to 1) default = 0 = no reflection other values = starting opacity reflection_scale - scale of the reflection (default = 1 = height of text) reflection_length - length of reflection, define where the opacity will be set to zero values from 0 to 1, default =1 reflection - position of reflection, relative to a vertical bar, default="b" possibles values are : "b","t","l","r" for bottom, top, left, right draw_me - if set to false, text is not drawn (default = true or 1) it can be used with a conky string, if the string returns 1, the text is drawn : example : "${if_empty ${wireless_essid wlan0}}${else}1$endif", v1.0 (10 Feb. 2010) original release v1.1 (13 Feb. 2010) numeric values can be passed instead conky stats with parameters name="", arg = numeric_value v1.2 (28 Feb. 2010) just renamed the widget to bargraph v1.3 (03 Mar. 2010) added parameters radius & angle_bar to draw the bar in a circular way v2.0 (12 Jul. 2010) rewrite script + add reflection effects and parameters are now set into tables v2.1 (07 Jan. 2011) Add draw_me parameter and correct memory leaks, thanks to "Creamy Goodness" -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation version 3 (GPLv3) -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -- MA 02110-1301, USA. ]] require 'cairo' ----------------START OF PARAMETERS ---------- function conky_main_bars() local bars_settings={ { --[ Graph for Wifi Signal Strength ]-- name="wireless_link_qual", arg="wlan0", max=60, alarm=10, alarm_colour={0x00FF00,0.72}, bg_colour={0xFFFFFF,0.25}, fg_colour={0xFF0000,0.55}, mid_colour={{0.45,0xFFFF00,0.70}}, x=79,y=334, blocks=27, space=1, height=5,width=5, angle=90, smooth=true }, } -----------END OF PARAMETERS-------------- 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) cr = cairo_create(cs) --prevent segmentation error when reading cpu state if tonumber(conky_parse('${updates}'))>3 then for i in pairs(bars_settings) do draw_multi_bar_graph(bars_settings[i]) end end cairo_destroy(cr) cairo_surface_destroy(cs) cr=nil end function draw_multi_bar_graph(t) cairo_save(cr) --check values if t.draw_me == true then t.draw_me = nil end if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end if t.name==nil and t.arg==nil then print ("No input values ... use parameters 'name' with 'arg' or only parameter 'arg' ") return end if t.max==nil then print ("No maximum value defined, use 'max'") return end if t.name==nil then t.name="" end if t.arg==nil then t.arg="" end --set default values if t.x == nil then t.x = conky_window.width/2 end if t.y == nil then t.y = conky_window.height/2 end if t.blocks == nil then t.blocks=10 end if t.height == nil then t.height=10 end if t.angle == nil then t.angle=0 end t.angle = t.angle*math.pi/180 --line cap style if t.cap==nil then t.cap = "b" end local cap="b" for i,v in ipairs({"s","r","b"}) do if v==t.cap then cap=v end end local delta=0 if t.cap=="r" or t.cap=="s" then delta = t.height end if cap=="s" then cap = CAIRO_LINE_CAP_SQUARE elseif cap=="r" then cap = CAIRO_LINE_CAP_ROUND elseif cap=="b" then cap = CAIRO_LINE_CAP_BUTT end --end line cap style --if t.led_effect == nil then t.led_effect="r" end if t.width == nil then t.width=20 end if t.space == nil then t.space=2 end if t.radius == nil then t.radius=0 end if t.angle_bar == nil then t.angle_bar=0 end t.angle_bar = t.angle_bar*math.pi/360 --halt angle --colours if t.bg_colour == nil then t.bg_colour = {0x00FF00,0.5} end if #t.bg_colour~=2 then t.bg_colour = {0x00FF00,0.5} end if t.fg_colour == nil then t.fg_colour = {0x00FF00,1} end if #t.fg_colour~=2 then t.fg_colour = {0x00FF00,1} end if t.alarm_colour == nil then t.alarm_colour = t.fg_colour end if #t.alarm_colour~=2 then t.alarm_colour = t.fg_colour end if t.mid_colour ~= nil then for i=1, #t.mid_colour do if #t.mid_colour[i]~=3 then print ("error in mid_color table") t.mid_colour[i]={1,0xFFFFFF,1} end end end if t.bg_led ~= nil and #t.bg_led~=2 then t.bg_led = t.bg_colour end if t.fg_led ~= nil and #t.fg_led~=2 then t.fg_led = t.fg_colour end if t.alarm_led~= nil and #t.alarm_led~=2 then t.alarm_led = t.fg_led end if t.led_effect~=nil then if t.bg_led == nil then t.bg_led = t.bg_colour end if t.fg_led == nil then t.fg_led = t.fg_colour end if t.alarm_led == nil then t.alarm_led = t.fg_led end end if t.alarm==nil then t.alarm = t.max end --0.8*t.max end if t.smooth == nil then t.smooth = false end if t.skew_x == nil then t.skew_x=0 else t.skew_x = math.pi*t.skew_x/180 end if t.skew_y == nil then t.skew_y=0 else t.skew_y = math.pi*t.skew_y/180 end if t.reflection_alpha==nil then t.reflection_alpha=0 end if t.reflection_length==nil then t.reflection_length=1 end if t.reflection_scale==nil then t.reflection_scale=1 end --end of default values local function rgb_to_r_g_b(col_a) return ((col_a[1] / 0x10000) % 0x100) / 255., ((col_a[1] / 0x100) % 0x100) / 255., (col_a[1] % 0x100) / 255., col_a[2] end --functions used to create patterns local function create_smooth_linear_gradient(x0,y0,x1,y1) local pat = cairo_pattern_create_linear (x0,y0,x1,y1) cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour)) cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour)) if t.mid_colour ~=nil then for i=1, #t.mid_colour do cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]})) end end return pat end local function create_smooth_radial_gradient(x0,y0,r0,x1,y1,r1) local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1) cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour)) cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour)) if t.mid_colour ~=nil then for i=1, #t.mid_colour do cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]})) end end return pat end local function create_led_linear_gradient(x0,y0,x1,y1,col_alp,col_led) local pat = cairo_pattern_create_linear (x0,y0,x1,y1) ---delta, 0,delta+ t.width,0) cairo_pattern_add_color_stop_rgba (pat, 0.0, rgb_to_r_g_b(col_alp)) cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led)) cairo_pattern_add_color_stop_rgba (pat, 1.0, rgb_to_r_g_b(col_alp)) return pat end local function create_led_radial_gradient(x0,y0,r0,x1,y1,r1,col_alp,col_led,mode) local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1) if mode==3 then cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_alp)) cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led)) cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp)) else cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_led)) cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp)) end return pat end local function draw_single_bar() --this fucntion is used for bars with a single block (blocks=1) but --the drawing is cut in 3 blocks : value/alarm/background --not zvzimzblr for circular bar local function create_pattern(col_alp,col_led,bg) local pat if not t.smooth then if t.led_effect=="e" then pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led) elseif t.led_effect=="a" then pat = create_led_linear_gradient (t.width/2, 0,t.width/2,-t.height,col_alp,col_led) elseif t.led_effect=="r" then pat = create_led_radial_gradient (t.width/2, -t.height/2, 0, t.width/2,-t.height/2,t.height/1.5,col_alp,col_led,2) else pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp)) end else if bg then pat = cairo_pattern_create_rgba (rgb_to_r_g_b(t.bg_colour)) else pat = create_smooth_linear_gradient(t.width/2, 0, t.width/2,-t.height) end end return pat end local y1=-t.height*pct/100 local y2,y3 if pct>(100*t.alarm/t.max) then y1 = -t.height*t.alarm/100 y2 = -t.height*pct/100 if t.smooth then y1=y2 end end if t.angle_bar==0 then --block for fg value local pat = create_pattern(t.fg_colour,t.fg_led,false) cairo_set_source(cr,pat) cairo_rectangle(cr,0,0,t.width,y1) cairo_fill(cr) cairo_pattern_destroy(pat) -- block for alarm value if not t.smooth and y2 ~=nil then pat = create_pattern(t.alarm_colour,t.alarm_led,false) cairo_set_source(cr,pat) cairo_rectangle(cr,0,y1,t.width,y2-y1) cairo_fill(cr) y3=y2 cairo_pattern_destroy(pat) else y2,y3=y1,y1 end -- block for bg value cairo_rectangle(cr,0,y2,t.width,-t.height-y3) pat = create_pattern(t.bg_colour,t.bg_led,true) cairo_set_source(cr,pat) cairo_pattern_destroy(pat) cairo_fill(cr) end end --end single bar local function draw_multi_bar() --function used for bars with 2 or more blocks for pt = 1,t.blocks do --set block y local y1 = -(pt-1)*(t.height+t.space) local light_on=false --set colors local col_alp = t.bg_colour local col_led = t.bg_led if pct>=(100/t.blocks) or pct>0 then --ligth on or not the block if pct>=(pcb*(pt-1)) then light_on = true col_alp = t.fg_colour col_led = t.fg_led if pct>=(100*t.alarm/t.max) and (pcb*pt)>(100*t.alarm/t.max) then col_alp = t.alarm_colour col_led = t.alarm_led end end end --set colors --have to try to create gradients outside the loop ? local pat if not t.smooth then if t.angle_bar==0 then if t.led_effect=="e" then pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led) elseif t.led_effect=="a" then pat = create_led_linear_gradient (t.width/2, -t.height/2+y1,t.width/2,0+t.height/2+y1,col_alp,col_led) elseif t.led_effect=="r" then pat = create_led_radial_gradient (t.width/2, y1, 0, t.width/2,y1,t.width/1.5,col_alp,col_led,2) else pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp)) end else if t.led_effect=="a" then pat = create_led_radial_gradient (0, 0, t.radius+(t.height+t.space)*(pt-1), 0, 0, t.radius+(t.height+t.space)*(pt), col_alp,col_led,3) else pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp)) end end else if light_on then if t.angle_bar==0 then pat = create_smooth_linear_gradient(t.width/2, t.height/2, t.width/2,-(t.blocks-0.5)*(t.height+t.space)) else pat = create_smooth_radial_gradient(0, 0, (t.height+t.space), 0,0,(t.blocks+1)*(t.height+t.space),2) end else pat = cairo_pattern_create_rgba (rgb_to_r_g_b(t.bg_colour)) end end cairo_set_source (cr, pat) cairo_pattern_destroy(pat) --draw a block if t.angle_bar==0 then cairo_move_to(cr,0,y1) cairo_line_to(cr,t.width,y1) else cairo_arc( cr,0,0, t.radius+(t.height+t.space)*(pt)-t.height/2, -t.angle_bar -math.pi/2 , t.angle_bar -math.pi/2) end cairo_stroke(cr) end end local function setup_bar_graph() --function used to retrieve the value to display and to set the cairo structure if t.blocks ~=1 then t.y=t.y-t.height/2 end local value = 0 if t.name ~="" then value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg))) --$to_bytes doesn't work when value has a decimal point, --https://garage.maemo.org/plugins/ggit/browse.php/?p=monky;a=commitdiff;h=174c256c81a027a2ea406f5f37dc036fac0a524b;hp=d75e2db5ed3fc788fb8514121f67316ac3e5f29f --http://sourceforge.net/tracker/index.php?func=detail&aid=3000865&group_id=143975&atid=757310 --conky bug? --value = (conky_parse(string.format('${%s %s}', t.name, t.arg))) --if string.match(value,"%w") then -- value = conky_parse(string.format('${to_bytes %s}',value)) --end else value = tonumber(t.arg) end if value==nil then value =0 end pct = 100*value/t.max pcb = 100/t.blocks cairo_set_line_width (cr, t.height) cairo_set_line_cap (cr, cap) cairo_translate(cr,t.x,t.y) cairo_rotate(cr,t.angle) local matrix0 = cairo_matrix_t:create() tolua.takeownership(matrix0) cairo_matrix_init (matrix0, 1,t.skew_y,t.skew_x,1,0,0) cairo_transform(cr,matrix0) --call the drawing function for blocks if t.blocks==1 and t.angle_bar==0 then draw_single_bar() if t.reflection=="t" or t.reflection=="b" then cairo_translate(cr,0,-t.height) end else draw_multi_bar() end --dot for reminder --[[ if t.blocks ~=1 then cairo_set_source_rgba(cr,1,0,0,1) cairo_arc(cr,0,t.height/2,3,0,2*math.pi) cairo_fill(cr) else cairo_set_source_rgba(cr,1,0,0,1) cairo_arc(cr,0,0,3,0,2*math.pi) cairo_fill(cr) end]] --call the drawing function for reflection and prepare the mask used if t.reflection_alpha>0 and t.angle_bar==0 then local pat2 local matrix1 = cairo_matrix_t:create() tolua.takeownership(matrix1) if t.angle_bar==0 then pts={-delta/2,(t.height+t.space)/2,t.width+delta,-(t.height+t.space)*(t.blocks)} if t.reflection=="t" then cairo_matrix_init (matrix1,1,0,0,-t.reflection_scale,0,-(t.height+t.space)*(t.blocks-0.5)*2*(t.reflection_scale+1)/2) pat2 = cairo_pattern_create_linear (t.width/2,-(t.height+t.space)*(t.blocks),t.width/2,(t.height+t.space)/2) elseif t.reflection=="r" then cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,delta+2*t.width,0) pat2 = cairo_pattern_create_linear (delta/2+t.width,0,-delta/2,0) elseif t.reflection=="l" then cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,-delta,0) pat2 = cairo_pattern_create_linear (-delta/2,0,delta/2+t.width,-0) else --bottom cairo_matrix_init (matrix1,1,0,0,-1*t.reflection_scale,0,(t.height+t.space)*(t.reflection_scale+1)/2) pat2 = cairo_pattern_create_linear (t.width/2,(t.height+t.space)/2,t.width/2,-(t.height+t.space)*(t.blocks)) end end cairo_transform(cr,matrix1) if t.blocks==1 and t.angle_bar==0 then draw_single_bar() cairo_translate(cr,0,-t.height/2) else draw_multi_bar() end cairo_set_line_width(cr,0.01) cairo_pattern_add_color_stop_rgba (pat2, 0,0,0,0,1-t.reflection_alpha) cairo_pattern_add_color_stop_rgba (pat2, t.reflection_length,0,0,0,1) if t.angle_bar==0 then cairo_rectangle(cr,pts[1],pts[2],pts[3],pts[4]) end cairo_clip_preserve(cr) cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR) cairo_stroke(cr) cairo_mask(cr,pat2) cairo_pattern_destroy(pat2) cairo_set_operator(cr,CAIRO_OPERATOR_OVER) end --reflection pct,pcb=nil end --setup_bar_graph() --start here ! setup_bar_graph() cairo_restore(cr) end
[/spoiler]

6. Lua for Simple Clock
[spoiler]

Code: Select all

--[[ Пример написания скрипта часов для запуска необходимо прописать в conkyrc, выше слова TEXT lua_load ~/clock/scripts/clock3.lua lua_draw_hook_pre clock ]] -- Так как при выводе часов используются команды на языке cairo -- необходимо указать программе об этом require 'cairo' -- создаем функцию для вывода изображения часов function conky_clock () -- необходимые данные для вывода часов clock_settings = { { -- корпус часов width_housing_hours = 15, -- толщина корпуса часов color_housing_hours = 0x669933, -- цвет корпуса часов alpha_housing_hours = 1, -- насыщенность цвета -- циферблат -- x = 20, -- координаты часов по горизонтали y = 100, -- координаты часов по вертикали radius = 70, -- радиус часов color_dial = 0xffffff, -- цвет циферблата alpha_dial = 0.5, -- насыщенность цвета -- цифры font_size = 14, -- размер шрифта цифр bold = true, color_font = 0x000000, -- цвет цифр alpha_font = 1, -- насыщенность цвета -- стрелки border = true, -- контур стрелок Да - true, Нет - false. width_hour_hand = 2.5, -- ширина часовой стрелки length_hour_hand = 1.3, -- длина часовой стрелки color_hour_hand = 0x000000, -- цвет часовой стрелки alpha_hour_hand = 0.5, -- насыщенность цвета color_border_hour = 0x000000, -- цвет контура часовой стрелки alpha_border_hour = 0.8, -- насыщенность цвета width_minute_hand = 2, -- ширина минутной стрелки length_minute_hand = 1.9, -- длина минутной стрелки color_minute_hand = 0x000000, -- цвет минутной стрелки alpha_minute_hand = 0.5, -- насыщенность цвета color_border_minute = 0x000000, -- цвет контура минутной стрелки alpha_border_minute = 0.8, -- насыщенность цвета -- Выводить секундную стрелку, Да - true, Нет - false. -- При выводе секундной стрелки update_interval в .conkyrc должен быть менее 1 сек. show_seconds = true, -- вывод секундной стрелки width_second_hand = 1, -- ширина секундной стрелки length_second_hand = 1.9, -- длина секундной стрелки color_second_hand = 0xff0000, -- цвет секундной стрелки alpha_second_hand = 1, -- насыщенность цвета color_border_second = 0xff0000, -- цвет контура секундной стрелки alpha_border_second = 1, -- насыщенность цвета -- тень от стрелок и оси стрелок Да - true, Нет - false. shadow = false, -- вывод тени -- координаты источника света относительно центра часов, 0 - источник света над центром часов shadow_degree = -90, -- координаты источника света по горизонтали от -90 до 90 shadow_height = 25, -- координаты источника света по вертикали от -90 до 90 shadow_opacity = 0.5, -- прозрачность тени, значения от 0 до 1 } } -- проверяем, существует окно конки или нет, если нет, выходим из программы 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) -- вызываем функцию вывода часов на экран for i, v in pairs(clock_settings) do cr = cairo_create (cs) display_clock (v) cairo_destroy (cr) end end -- функция перекодировки цвета function rgb_to_r_g_b(colour,alpha) return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha end -- функция рисования часов function display_clock (t) -- производим проверку вводимых данных и задаем значения по умолчанию if t.x == nil then t.x = conky_window.width/2 end if t.y == nil then t.y = conky_window.height/2 end if t.radius == nil then t.radius = 75 end if t.color_dial == nil then t.color_dial = 0xffffff end if t.alpha_dial == nil then t.alpha_dial = 1 end -- цифры if t.font_name == nil then t.font_name = "Ubuntu" end if t.font_size == nil then t.font_size = 12 end if t.italic == nil then t.italic = false end if t.oblique == nil then t.oblique = false end if t.bold == nil then t.bold = false end if t.color_font == nil then t.color = 0x000000 end if t.alpha_font == nil then t.alpha = 1 end -- шрифт local slant = CAIRO_FONT_SLANT_NORMAL local weight =CAIRO_FONT_WEIGHT_NORMAL if t.italic then slant = CAIRO_FONT_SLANT_ITALIC end if t.bold then weight = CAIRO_FONT_WEIGHT_BOLD end cairo_select_font_face(cr, t.font_name, slant, weight) cairo_set_font_size(cr, t.font_size) te=cairo_text_extents_t:create() cairo_text_extents (cr,t.text,te) -- ---------------------------------------------------------- -- корпус часов, циферблат и тени на корпусе -- рисуем белую основу для нормальной цветопередачи на темных обоях cairo_set_source_rgba(cr, 1, 1, 1, 0.1) cairo_arc (cr, t.x, t.y, t.radius + t.width_housing_hours*0.1, 1, 2*math.pi) cairo_fill (cr) -- создаем радиальную градацию для внешней части корпуса pat_housing_hours1 = cairo_pattern_create_radial (t.x - t.radius*math.sin(math.rad(t.shadow_degree)), t.y - t.radius*math.sin(math.rad(t.shadow_height)), 0, t.x, t.y, t.radius + t.width_housing_hours*1.7) -- задаём цвет cairo_pattern_add_color_stop_rgba (pat_housing_hours1, 0.75, rgb_to_r_g_b(t.color_housing_hours, 0.1)) cairo_pattern_add_color_stop_rgba (pat_housing_hours1, 1, rgb_to_r_g_b(t.color_housing_hours, t.alpha_housing_hours)) -- закрашиваем корпус cairo_set_source (cr, pat_housing_hours1) cairo_set_line_width(cr, t.width_housing_hours/2) cairo_arc (cr, t.x, t.y, t.radius + t.width_housing_hours, 0, 2*math.pi) -- выводим изображение cairo_stroke (cr) cairo_fill (cr) cairo_pattern_destroy (pat_housing_hours1) -- создаём радиальную градацию для внутренней части корпуса pat_housing_hours2 = cairo_pattern_create_radial (t.x + t.radius*math.sin(math.rad(t.shadow_degree)), t.y + t.radius*math.sin(math.rad(t.shadow_height)), 0, t.x, t.y, t.radius + t.width_housing_hours*1.2) -- задаём цвет cairo_pattern_add_color_stop_rgba (pat_housing_hours2, 0.75, rgb_to_r_g_b(t.color_housing_hours, 0.1)) cairo_pattern_add_color_stop_rgba (pat_housing_hours2, 1, rgb_to_r_g_b(t.color_housing_hours, t.alpha_housing_hours)) -- закрашиваем корпус cairo_set_source (cr, pat_housing_hours2) cairo_set_line_width(cr, t.width_housing_hours/2) cairo_arc (cr, t.x, t.y, t.radius + t.width_housing_hours/2, 0, 2*math.pi) -- выводим изображение cairo_stroke (cr) cairo_fill (cr) cairo_pattern_destroy (pat_housing_hours2) -- вывод циферблата -- сначала зададим цвет cairo_set_source_rgba(cr, rgb_to_r_g_b(t.color_dial, t.alpha_dial)) -- и толщину линии cairo_set_line_width(cr, 2) -- рисуем окружность cairo_arc (cr, t.x, t.y, t.radius, 0, 2*math.pi) -- закрашиваем циферблат cairo_fill (cr) -- ---------------------------------------------------------------------------------------- -- добавляем часовые деления -- зададим цвет cairo_set_source_rgba(cr, rgb_to_r_g_b(t.color_font, t.alpha_font)) -- сбрасываем счетчик делений на 0 local i = 0 -- задаем расстояние между делениями local winkel = math.rad(30) -- выводим 12 делений for i= 0, 11, 1 do cairo_move_to(cr, t.x - math.sin(winkel*i)*t.radius, t.y - math.cos(winkel*i)*t.radius) -- длину делений берем равной 0.1 от длины радиуса cairo_line_to(cr, t.x - math.sin(winkel*i)*(t.radius*0.85), t.y - math.cos(winkel*i)*(t.radius*0.85)) -- выводим изображение cairo_stroke (cr) end -- ------------------------------------------------------------------------------------------- -- добавляем цифры -- запоминаем данные cairo_save (cr) -- переносим значения координат cairo_translate(cr, t.x, t.y) -- сбрасываем координаты цифр local mx = 0 local my = 0 -- сбрасываем счетчик делений на 0 local i = 0 -- задаем расстояние между цифрами local winkel = math.rad(30) -- необходимо вывести цифра начиная с 1 и заканчивая 12 for i = 1, 12, 1 do -- расчитываем координаты цифр mov_x = math.sin(winkel*i)*(t.radius*0.73) mov_y = math.cos(winkel*i)*(t.radius*0.73) -- расчитываем ширину и высоту цифр te=cairo_text_extents_t:create() cairo_text_extents (cr,i,te) -- вносим поправку на половину ширины и половину высоты цифр mx = -te.width/2 my = -te.height/2-te.y_bearing -- задаем координаты цифр cairo_move_to(cr, mx + mov_x, my - mov_y) -- выводим цифры cairo_show_text(cr, i) end -- восстанавливаем данные cairo_restore (cr) -- ------------------------------------------------------------------------------------------ -- добавляем минутные деления -- сбрасываем счетчик делений на 0 local i = 0 -- задаем расстояние между делениями local winkel = math.rad(6) -- выводим 12 делений for i=0, 59, 1 do cairo_move_to(cr, t.x - math.sin(winkel * i) * t.radius, t.y - math.cos(winkel * i) * t.radius) -- длину делений берем равной 0.1 от длины радиуса cairo_line_to(cr, t.x - math.sin(winkel * i) * (t.radius * 0.9), t.y - math.cos(winkel * i) * (t.radius*0.9)) end -- выводим изображение cairo_stroke (cr) -- ------------------------------------------------------ -- рисуем стрелки. За основу взята разработка wlourf, полностью статью можно посмотреть http://u-scripts.blogspot.com/2010/01/shadowed-clock.html local function draw_hand(arc, arc0, arc1, length_hand, width_hand, color_border, alpha_border, color_hand, alpha_hand) -- расчет основных точек для прорисовки стрелок local xx = t.x + t.radius*math.sin(arc)*length_hand local yy = t.y - t.radius*math.cos(arc)*length_hand local x0 = t.x + width_hand*math.sin(arc0) local y0 = t.y - width_hand*math.cos(arc0) local x1 = t.x + width_hand*math.sin(arc1) local y1 = t.y - width_hand*math.cos(arc1) -- если необходимо нарисовать контуры стрелок тогда if t.border then -- назначаем толщину линий cairo_set_line_width(cr, 1) -- назначаем цвет и насыщенность линий контура стрелок cairo_set_source_rgba(cr, rgb_to_r_g_b(color_border, alpha_border)) -- переходим в первую точку cairo_move_to (cr, x0, y0) -- рисуем кривые проходящие через три точки cairo_curve_to (cr, x0, y0, xx, yy, x1, y1) -- рисуем половину окружности основания стрелки cairo_arc(cr, t.x, t.y, width_hand, arc1 - math.pi/2, arc0 - math.pi/2) cairo_stroke(cr) end -- если необходимо вывести тень от стрелок, длина тени изменяется в зависимости от расположения "источника света" if t.shadow then -- переходим в первую точку cairo_move_to (cr, x0, y0) -- рисуем кривые через три точки со смещением зависищим от расположения "источника света" cairo_curve_to (cr, x0, y0, xx + t.shadow_degree, yy + t.shadow_height, x1, y1) -- рисуем половину окружности основания тени стрелки cairo_arc(cr, t.x, t.y, width_hand, arc1 - math.pi/2, arc0 - math.pi/2) -- для закрашивания тени от стрелок используем радиальную окраску pat = cairo_pattern_create_radial (t.x - math.sin(math.rad(t.shadow_degree))*length_hand, t.y + math.cos(math.rad(t.shadow_degree))*length_hand, 0, t.x, t.y, t.radius) -- цвет тени черный поэтому на темных циферблатах тень не очень заметна cairo_pattern_add_color_stop_rgba (pat, 0, 0, 0, 0, t.shadow_opacity) cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 0) cairo_set_source (cr, pat) cairo_fill (cr) end -- рисуем стрелки по тому же принципу, что и тень, но без смещения cairo_move_to (cr, x0, y0) cairo_curve_to (cr, x0, y0, xx, yy, x1, y1) cairo_arc(cr, t.x, t.y, width_hand, arc1 - math.pi/2, arc0 - math.pi/2) pat = cairo_pattern_create_radial (t.x, t.y, t.radius/10, t.x, t.y, t.radius*length_hand) cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(color_hand, alpha_hand)) cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 1) cairo_set_source (cr, pat) cairo_fill (cr) cairo_pattern_destroy (pat) end -- забираем данные из ОС local hours = os.date("%I") local mins = os.date("%M") local secs = os.date("%S") -- расчет угла движения стрелок local gamma = math.pi/2 - math.atan(t.width_second_hand / (t.radius * t.length_second_hand)) local secs_arc = (2*math.pi/60)*secs local secs_arc0 = secs_arc - gamma local secs_arc1 = secs_arc + gamma local gamma = math.pi/2 - math.atan(t.width_minute_hand/(t.radius*t.length_minute_hand)) local mins_arc = (2*math.pi/60)*mins + secs_arc/60 local mins_arc0 = mins_arc - gamma local mins_arc1 = mins_arc + gamma local gamma = math.pi/2 - math.atan(t.width_hour_hand/(t.radius*t.length_hour_hand)) local hours_arc = (2*math.pi/12)*hours + mins_arc/12 local hours_arc0 = hours_arc - gamma local hours_arc1 = hours_arc + gamma -- вывод стрелок -- задаем данные для вывода часовой стрелки draw_hand(hours_arc, hours_arc0, hours_arc1, t.length_hour_hand, t.width_hour_hand, t.color_border_hour, t.alpha_border_hour, t.color_hour_hand, t.alpha_hour_hand) -- задаем данные для минутной стрелки draw_hand(mins_arc, mins_arc0, mins_arc1, t.length_minute_hand, t.width_minute_hand, t.color_border_minute, t.alpha_border_minute, t.color_minute_hand, t.alpha_minute_hand) -- если необходима секундная стрелка, то задаем данные if t.show_seconds then draw_hand(secs_arc, secs_arc0, secs_arc1, t.length_second_hand, t.width_second_hand, t.color_border_second, t.alpha_border_second, t.color_second_hand, t.alpha_second_hand) end -- рисуем ось стрелок -- расчитываем радиус оси стрелок local radius = math.min(t.width_hour_hand, t.width_minute_hand, t.width_second_hand)*0.75 -- если радиус меньше 1, то устанавливаем радиус равный 1 if radius < 1 then radius = 1 end -- рисуем ось cairo_arc(cr, t.x, t.y, radius, 0, 2*math.pi) cairo_set_source_rgba(cr, 0, 0, 0, 1) cairo_fill (cr) -- рисуем тень на стеклк часов pat_glass = cairo_pattern_create_radial (t.x + t.radius*math.sin(math.rad(t.shadow_degree)), t.y + t.radius*math.sin(math.rad(t.shadow_height)), 0, t.x, t.y, t.radius*1.2) cairo_pattern_add_color_stop_rgba (pat_glass, 0, 1,1,1,0) cairo_pattern_add_color_stop_rgba (pat_glass, 1, 0,0,0, 0.3) cairo_set_source (cr, pat_glass) cairo_arc (cr, t.x, t.y, t.radius+t.width_housing_hours/2, 0, 2*math.pi) cairo_fill (cr) cairo_pattern_destroy (pat_glass) end
[/spoiler]


Cheers,
Gardener
User avatar
pingsut
Posts: 754
Joined: 16 May 2010, 18:05
Location: Yogyakarta
Contact:

Re: Konfigurasi Conky..?

Postby pingsut » 13 Jan 2013, 19:45

@Gardener: mohon di "spoiler" bro

Who is online

Users browsing this forum: No registered users and 10 guests