Премини към съдържанието
SuperLuigi

Добавяне на още стрелки в Lua Conky

Препоръчан отговор


Здравейте!

Може ли да се изобразят още стрелки в Lua за Conky-то? Освен за час, минути и секунди, искам да добавя и за ден от седмицата (%u) и ден от месеца (%d). Рових в "Онази" голямата тема за Conky, но не видях за добавени стрелки. Искам един вид да изобразя часовник-хронограф.

Благодаря!

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Lua Conky?

 

Хм, Lua е език за програмиране, и няма нищо общо с conky. Освен това че, има conky със Lua съпорт, което означава че, може да си правиш widget-и, скриптове на lua като създаваш графики със cairo и после ги добавяш/свързваш с conky.

 

За целта ти трябва един conky файл, който по подразбиране е  ~/.conkyrc и направен скрипт на lua пример, ~/.clock_lua.

 

В интернет има можеби хиляди conky+lua, така че, от къде да знаем ваще стрелки в часовника? Дай те повече инфо, като споделите самите файлове на conky + тези на lua скрипта.

 

http://crunchbang.org/forums/viewtopic.php?id=17246 

Редактирано от ivoarch (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Lua Conky?

 

Хм, Lua е език за програмиране, и няма нищо общо с conky. Освен това че, има conky със Lua съпорт, което означава че, може да си правиш widget-и, скриптове на lua като създаваш графики със cairo и после ги добавяш/свързваш с conky.

 

За целта ти трябва един conky файл, който по подразбиране е  ~/.conkyrc и направен скрипт на lua пример, ~/.clock_lua.

 

В интернет има можеби хиляди conky+lua, така че, от къде да знаем ваще стрелки в часовника? Дай те повече инфо, като споделите самите файлове на conky + тези на lua скрипта.

 

http://crunchbang.org/forums/viewtopic.php?id=17246 

 

Знам какво е Lua и Conky. Явно не съм се изразил правилно! Просто не знам как да именувам за други стрелки.

Това ми е Lua файла:

--[[

Clock Rings by Linux Mint (2011) reEdited by despot77

This script draws percentage meters as rings, and also draws clock hands if you want! It is fully customisable; all options are described in the script. This script is based off a combination of my clock.lua script and my rings.lua script.

IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num>5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num>3; conversely if you update Conky every 0.5s, you should use update_num>10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.

To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):

  lua_load ~/scripts/clock_rings.lua

  lua_draw_hook_pre clock_rings

 

Changelog:

+ v1.0 -- Original release (30.09.2009)

v1.1p -- Jpope edit londonali1010 (05.10.2009)

*v 2011mint -- reEdit despot77 (18.02.2011)

]]

settings_table = {

  {

  -- Edit this table to customise your rings.

  -- You can create more rings simply by adding more elements to settings_table.

  -- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.

  name='time',

  -- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.

  arg='%I.%M',

  -- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.

  max=12,

  -- "bg_colour" is the colour of the base ring.

  bg_colour=0xffffff,

  -- "bg_alpha" is the alpha value of the base ring.

  bg_alpha=0,

  -- "fg_colour" is the colour of the indicator part of the ring.

  fg_colour=0xFF6600,

  -- "fg_alpha" is the alpha value of the indicator part of the ring.

  fg_alpha=0,

  -- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window.

  x=100, y=150,

  -- "radius" is the radius of the ring.

  radius=96,

  -- "thickness" is the thickness of the ring, centred around the radius.

  thickness=5,

  -- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative.

  start_angle=0,

  -- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger than start_angle.

  end_angle=360

  },

  {

  name='time',

  arg='%u',

  max=7,

  bg_colour=0xffffff,

  bg_alpha=0.1,

  fg_colour=0xFF6600,

  fg_alpha=0.6,

  x=96, y=250,

  radius=50,

  thickness=5,

  start_angle=-90,

  end_angle=90

  },

  {

  name='time',

  arg='%d',

  max=31,

  bg_colour=0xffffff,

  bg_alpha=0.1,

  fg_colour=0xFF6600,

  fg_alpha=0.8,

  x=96, y=350,

  radius=50,

  thickness=5,

  start_angle=90,

  end_angle=270

  },

}

-- Use these settings to define the origin and extent of your clock.

clock_r=96

-- "clock_x" and "clock_y" are the coordinates of the centre of the clock, in pixels, from the top left of the Conky window.

clock_x=96

clock_y=96

show_seconds=true

require 'cairo'

function rgb_to_r_g_b(colour,alpha)

  return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha

end

function draw_ring(cr,t,pt)

  local w,h=conky_window.width,conky_window.height

 

  local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']

  local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']

  local angle_0=sa*(2*math.pi/360)-math.pi/2

  local angle_f=ea*(2*math.pi/360)-math.pi/2

  local t_arc=t*(angle_f-angle_0)

  -- Draw background ring

  cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)

  cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))

  cairo_set_line_width(cr,ring_w)

  cairo_stroke(cr)

 

  -- Draw indicator ring

  cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)

  cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))

  cairo_stroke(cr)  

end

function draw_clock_hands(cr,xc,yc)

  local secs,mins,hours,secs_arc,mins_arc,hours_arc

  local xh,yh,xm,ym,xs,ys

 

  secs=os.date("%S")  

  mins=os.date("%M")

  hours=os.date("%I")

 

  secs_arc=(2*math.pi/60)*secs

  mins_arc=(2*math.pi/60)*mins+secs_arc/60

  hours_arc=(2*math.pi/12)*hours+mins_arc/12

 

  -- Draw hour hand

 

  xh=xc+0.65*clock_r*math.sin(hours_arc)

  yh=yc-0.65*clock_r*math.cos(hours_arc)

  cairo_move_to(cr,xc,yc)

  cairo_line_to(cr,xh,yh)

 

  cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND)

  cairo_set_line_width(cr,9)

  cairo_set_source_rgba(cr,1.0,1.0,1.0,1.0)

  cairo_stroke(cr)

 

  -- Draw minute hand

 

  xm=xc+clock_r*math.sin(mins_arc)

  ym=yc-clock_r*math.cos(mins_arc)

  cairo_move_to(cr,xc,yc)

  cairo_line_to(cr,xm,ym)

 

  cairo_set_line_width(cr,6)

  cairo_set_source_rgba(cr,0,1.0,0,1.0)

  cairo_stroke(cr)

 

  -- Draw seconds hand

 

  if show_seconds then

  xs=xc+clock_r*math.sin(secs_arc)

  ys=yc-clock_r*math.cos(secs_arc)

  cairo_move_to(cr,xc,yc)

  cairo_line_to(cr,xs,ys)

 

  cairo_set_line_width(cr,3)

  cairo_set_source_rgba(cr,1.0,0,0,1.0)

  cairo_stroke(cr)

  end

end

function conky_clock_rings()

  local function setup_rings(cr,pt)

  local str=''

  local value=0

 

  str=string.format('${%s %s}',pt['name'],pt['arg'])

  str=conky_parse(str)

 

  value=tonumber(str)

  pct=value/pt['max']

 

  draw_ring(cr,pct,pt)

  end

 

  -- Check that Conky has been running for at least 5s

  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 cr=cairo_create(cs)  

 

  local updates=conky_parse('${updates}')

  update_num=tonumber(updates)

 

  if update_num>5 then

  for i in pairs(settings_table) do

  setup_rings(cr,settings_table)

  end

  end

 

  draw_clock_hands(cr,clock_x,clock_y)

end

 

Ето и conky-то ми:

 

# -- Conky settings -- #

  background no

  update_interval 1

  cpu_avg_samples 1

  net_avg_samples 1

  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_type override

  own_window_transparent yes

  own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below

  border_inner_margin 0

  border_outer_margin 0

  minimum_size 1280

  maximum_width 192

  alignment tm

  gap_x 0

  gap_y 0

# -- Graphics settings -- #

  draw_shades no

  draw_outline no

  draw_borders no

  draw_graph_borders no

  default_shade_color ffffff

  stippled_borders yes

# -- Text settings -- #

  use_xft yes

  xftfont Kelly Slab :size=18

  xftalpha 1

  uppercase no

  short_units yes

# Lua Load  #

lua_load ~/.conky/clock_rings.lua

lua_draw_hook_pre clock_rings

TEXT

 

 

 

 

 

 

 

 

${voffset -11}${font Kelly Slab :size=20}${color 353839}${alignr}${time %d} ${font}

${voffset -32}${font Kelly Slab :size=20}${color 353839}${goto 26}${time %u}${color}${font}

${font Let's Go Digital :size=40}${color dd4814}${alignc}${time %H:%M}${color}${font}

${font FreeSerif :size=30}${color 800000}☼${color}${font}${alignr}${color 008000}${weather http://weather.noaa.gov/pub/data/observations/metar/stations/ LBPD temperature 30} °C ${color}

${font FreeSerif :size=30}${color 800000}☢${color}${font}${alignr}${color 008000}${execi 1 perl ~/scripts/gmail.pl e} ${color}

${font FreeSerif :size=30}${color 800000}⌛${color}${font}${alignr}${color 008000}$uptime_short ${color}

${font FreeSerif :size=30}${color 800000}♺${color}${font}${alignr}${color 008000}$swap ${color}

${font FreeSerif :size=30}${color 800000}®${alignr}✠ ${color}${font}

${color 008000}${execi 1800 df -H /dev/sda6 | awk 'END{print $4}'} ${alignr}${execi 1800 df -H /dev/sda8 | awk 'END{print $4}'} ${color}

${font FreeSerif :size=30}${color 800000}☠${alignr}☣ ${color}${font}

${color 008000}${execi 1800 df -H /dev/sdb1 | awk 'END{print $4}'} ${alignr}${execi 1800 df -H /dev/sdc1 | awk 'END{print $4}'} ${color}

${font FreeSerif :size=30}${color 800000}↟↟${color}${font}${alignr}${color 008000}${upspeed eth0} ${color}

${font FreeSerif :size=30}${color 800000}↡↡${color}${font}${alignr}${color 008000}${downspeed eth0} ${color}

${font FreeSerif :size=30}${color 353839}⚡⚡⚡⚡⚡⚡⚡⚡${font}

Редактирано от SuperLuigi (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.