Hier gibt es ja einige Conky-Experten, ich habe da noch gar keine Erfahrung. Kann mir jemand den Weg weisen, wie ich das anhängende Muster (Bild) hier realisieren kann? Meine Quelle gibt leider keine - für mich erkennbaren - Hinweise ...
Conky mit Zeit und Wetter
Anmeldungsdatum: Beiträge: Zähle... |
|
||
Anmeldungsdatum: Beiträge: 6053 |
Ich habe mal das Grundgerüst ungefähr wie im Bild gebaut. Einen Wetter "Lieferanten" der die Daten als Text liefert wie im Bild ist mir nicht bekannt. Da solltest Du etwas anderes machen. Als Font ist noch das normale ubuntu eingestellt. Den Config Teil habe ich ohne Anpassungen von meinem Conky genommen, enthält also mehr als notwendig. Das stört aber nicht. Die Scripte sind kurz und einigermaßen lesbar hoffe ich. In Home das Verzeichnis .conky erstellen und die beiden Scripts in diesem speichern. Aufruf mit:
In der conkyrc steht background = false. Das solltest Du während der Testphase so lassen. Wenn alles so ist wie Du es haben möchtest, stelle es auf true. Speichern als conkyrc: conky.config = { -- — Conky settings background = false, update_interval = 1, total_run_times = 0, net_avg_samples = 2, cpu_avg_samples = 1, no_buffers = true, imlib_cache_size = 0, draw_graph_borders = true, draw_outline = false, -- — Window specifications own_window = true, own_window_type = desktop, own_window_transparent = false, own_window_hints = 'undecorated,sticky,skip_taskbar,skip_pager,below', own_window_argb_visual = true, own_window_argb_value = 60, own_window_colour = '101511', --Fantasywelt double_buffer = true, minimum_width = 300, minimum_height = 300, alignment = 'top_right', border_inner_margin = 10, gap_x = 15, gap_y = 15, -- — Text settings use_xft = true, font = 'Ubuntu:size=8', override_utf8_locale = true, default_color = '#FFFFFF', color0 = white, color1 = '#AEEEEE', color2 = '#9933CC', color3 = '#0ab1ff', -- Light Blue color4 = '#4682B4', -- Steel Blue color5 = '#9FB6CD', -- Slate Grey color6 = '#000000', -- Black color7 = '#888888', -- Grey default_bar_width=100, default_bar_height=2, -- Lua Load lua_load = '~/.conky/rings.lua', lua_draw_hook_pre = 'ring_stats', }; conky.text = [[ ${font Ubuntu Mono:pixelsize=28}${time %A} ${font Ubuntu Mono:pixelsize=34}${time %d %B}${font} ${voffset 200} ${goto 60}${color0}CPU${goto 160}RAM${goto 255}Home ${goto 60}${cpu cpu0}%${goto 160}${memperc}%${goto 255}${fs_used_perc}% ]]; Speichern als rings.lua: settings_table = { { name='cpu', arg='cpu0', max=100, bg_colour=0xffffff, bg_alpha=0.1, fg_colour=0xffffff, fg_alpha=0.8, x=30, y=300, radius=20, thickness=5, start_angle=0, end_angle=360 }, { name='memperc', arg='/', max=100, bg_colour=0xffffff, bg_alpha=0.1, fg_colour=0xffffff, fg_alpha=0.8, x=130, y=300, radius=20, thickness=5, start_angle=0, end_angle=360 }, { name='fs_used_perc', arg='/home', max=100, bg_colour=0xffffff, bg_alpha=0.1, fg_colour=0xffffff, fg_alpha=0.8, x=230, y=300, radius=20, thickness=5, start_angle=0, end_angle=360 }, } 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 conky_ring_stats() 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) if value == nil then value = 0 end pct=value/pt['max'] draw_ring(cr,pct,pt) end 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[i]) end end cairo_surface_destroy(cs) cairo_destroy(cr) end |
||
Anmeldungsdatum: Beiträge: 6053 |
Noch ein bisschen Feinschliff und mittig angezeigt. Die Zeile alignment = 'top_middle', bestimmt wo Dein Conky erscheint. Mit top_right Rechts Oben... Die Wetteranzeige ist von Budgie und einfach an die richtige Stelle plaziert. conkyrc conky.config = { -- — Conky settings background = false, update_interval = 1, total_run_times = 0, net_avg_samples = 2, cpu_avg_samples = 1, no_buffers = true, imlib_cache_size = 0, draw_graph_borders = true, draw_outline = false, -- — Window specifications own_window = true, own_window_type = desktop, own_window_transparent = false, own_window_hints = 'undecorated,sticky,skip_taskbar,skip_pager,below', own_window_argb_visual = true, own_window_argb_value = 60, own_window_colour = '101511', --Fantasywelt double_buffer = true, minimum_width = 300, minimum_height = 300, alignment = 'top_middle', border_inner_margin = 10, gap_x = 15, gap_y = 15, -- — Text settings use_xft = true, font = 'Ubuntu:size=8', override_utf8_locale = true, default_color = '#FFFFFF', color0 = white, color1 = '#AEEEEE', color2 = '#9933CC', color3 = '#0ab1ff', -- Light Blue color4 = '#4682B4', -- Steel Blue color5 = '#9FB6CD', -- Slate Grey color6 = '#000000', -- Black color7 = '#888888', -- Grey -- Lua Load lua_load = '~/conky_test/rings.lua', lua_draw_hook_pre = 'ring_stats', }; conky.text = [[ ${font Ubuntu Mono:pixelsize=28}${time %A} ${font Ubuntu Mono:pixelsize=34}${time %d %B}${font} ${voffset 200} ${goto 60}${color0}CPU${goto 160}RAM${goto 255}Home/Sys ${goto 60}${cpu cpu0}%${goto 160}${memperc}%${goto 255}${fs_used_perc /home}%/${fs_used_perc /}% ]]; rings.lua settings_table = { { name='cpu', arg='cpu0', max=100, bg_colour=0xffffff, bg_alpha=0.1, fg_colour=0xffffff, fg_alpha=0.8, x=30, y=300, radius=20, thickness=5, start_angle=0, end_angle=360 }, { name='memperc', arg='', max=100, bg_colour=0xffffff, bg_alpha=0.1, fg_colour=0xffffff, fg_alpha=0.8, x=130, y=300, radius=20, thickness=5, start_angle=0, end_angle=360 }, { name='fs_used_perc', arg='/home', max=100, bg_colour=0xffffff, bg_alpha=0.1, fg_colour=0xffffff, fg_alpha=0.8, x=230, y=300, radius=20, thickness=5, start_angle=0, end_angle=360 }, { name='fs_used_perc', arg='/', max=100, bg_colour=0xffffff, bg_alpha=0.1, fg_colour=0xffffff, fg_alpha=0.8, x=230, y=300, radius=12, thickness=5, start_angle=0, end_angle=360 }, } 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 conky_ring_stats() 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) if value == nil then value = 0 end pct=value/pt['max'] draw_ring(cr,pct,pt) end 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[i]) end end cairo_surface_destroy(cs) cairo_destroy(cr) end [Nachtrag] Ich habe im Lua Script einen Fehler. memperc hat natürlich kein Argument. Im Block memperc ändern: arg=' ', (ohne Leerstelle..) Ich kopiere ja die Blöcke einfach immer und ändere dann zu dem was ich anzeigen möchte. Der Fehler hat aber anscheinend keine Auswirkung auf die Funktion. |
||
Anmeldungsdatum: Beiträge: 6053 |
Wetter ungefähr wie im Beispiel mit Hilfe von Openweathermap hinzugefügt. Für diese API wird ein Key benötigt der einen Account voraus setzt. Für diesen Zweck reicht die kostenlose Version "Current Weather Data": https://openweathermap.org/api Alle nötigen Scripte und Dateien hänge ich an. Und wie gesagt, die Schrift ist immer noch ubuntu. Nach eigenem Geschmack ändern. Nicht vergessen: Nach dem Entpacken ist das Verzeichnis .conky erst sichtbar wenn im genutzten Dateimanager "versteckte Dateien anzeigen" aktiviert ist. [Nachtrag] Habe das Ganze noch ein bisschen komprimiert. Beide Anhänge ausgetauscht. Ein Beispiel mit dem Font Dyuthi hinzugefügt. Variante mit 8 Kern CPU hinzugefügt. [Nachtrag 2] das Wetter kommt als json Paket. Möglicherweise muss jq noch installiert werden:
|
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 789 |
Danke Bleys, auf meinem kUBUNTU-System läut es. IN MANJARO habe ich das Problem, dass IMlib2 aber nicht Cairo eingebunden sind: $ conky -v conky 1.12.2_pre compiled 2021-04-27 for Linux x86_64 Compiled in features: System config file: /etc/conky/conky.conf Package library path: /usr/lib/conky General: * math * hddtemp * portmon * IPv6 * Curl * RSS * Weather (METAR) * wireless * support for IBM/Lenovo notebooks * nvidia * builtin default configuration * old configuration syntax * Imlib2 * OSS mixer support * apcupsd * iostats * ncurses * Internationalization support * PulseAudio X11: * Xdamage extension * Xinerama extension (virtual display) * Xshape extension (click through) * XDBE (double buffer extension) * Xft * ARGB visual * Own window * HSV Gradient Music detection: * CMUS * MPD * MOC Default values: * Netdevice: eno1 * Local configfile: $HOME/.conkyrc * Localedir: /usr/share/locale * Maximum netdevices: 256 * Maximum text size: 16384 * Size text buffer: 256 |
||
Anmeldungsdatum: Beiträge: 6053 |
Nachdem man für openweathermap einen Key erzeugt hat, kann es einige Zeit dauern bis dieser Aktiv ist! Mein Script wetter.sh erhält in diesem Fall erst mal nur NULL als Antwort auf die Anfragen. Man kann den Aufruf auch im Browser machen um zu sehen ob der Key aktiv ist. Firefox liefert eine coole json Aufbereitung der Daten. Andere Browser zeigen nur den Raw Text an. |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 789 |
Danke Bleys für die Geduld und alle Hinweise.
Den Key habe ich jetzt und die JSON-Seite liefert Werte. Leider zeigt sich nach conky -c ~/.conky/conkyrc auf dem Desktop nichts und im Terminal: $ conky -c ~/.conky/conkyrc conky: desktop window (1e00019) is subwindow of root window (6aa) conky: window type - desktop conky: drawing to created window (0x5000001) conky: drawing to double buffer Ich habe dann Deine Datei umbenannt , eine conkyrc erstellt mit conky.config = { alignment = 'middle_right', default_outline_color = 'white', default_shade_color = 'white', double_buffer = true, font = 'DejaVu Sans Mono:size=22', gap_x = 5, gap_y = 10, own_window = true, own_window_class = 'Conky', own_window_type = 'desktop', update_interval = 0.5, use_xft = true, own_window_transparent = true, } conky.text = [[ CPU Usage: $cpu% ${cpubar 4} ${exec echo Hallo Conky} ]] und gestartet, mit der Anzeige im Terminal identisch wie oben. Allerdings kommt hier die Anzeige auf den Desktop. Was sollte ich als nächstes klären? |
||
Anmeldungsdatum: Beiträge: 6053 |
conky -c ~/.conky/conkyrc Das ist vollkommen neu für mich. Eine laufende Conky Instanz ohne Fehlermeldung und ohne Ausgabe auf dem Desktop :/
ich würde jetzt ähnlich vorgehen wie Du es schon getan hast nur mit den Scripts die auch laufen sollten. Wetter komplett raus nehmen und das Lua script auf ein Minimum kürzen. So etwa: conkyrc conky.config = { -- — Conky settings background = false, update_interval = 1, total_run_times = 0, no_buffers = true, imlib_cache_size = 0, draw_graph_borders = true, draw_outline = false, -- — Window specifications with Background own_window = true, own_window_type = desktop, own_window_transparent = false, own_window_hints = 'undecorated,sticky,skip_taskbar,skip_pager,below', own_window_argb_visual = true, own_window_argb_value = 20, own_window_colour = '101511', --Fantasywelt double_buffer = true, minimum_width = 300, minimum_height = 240, alignment = 'top_middle', border_inner_margin = 10, gap_x = 15, gap_y = 15, -- — Text settings use_xft = true, font = 'Dyuthi:size=10', override_utf8_locale = true, default_color = '#FFFFFF', color0 = white, -- Lua Load lua_load = '~/.conky/rings.lua', lua_draw_hook_pre = 'ring_stats', }; conky.text = [[ ${goto 20}${font Dyuthi:pixelsize=28}${time %A} ${goto 20}${font Dyuthi:pixelsize=34}${time %d %B}${goto 190}${voffset -22}${time %H}:${time %M}${font} ]]; rings.lua settings_table = { { name='cpu', arg='cpu0', max=100, bg_colour=0xffffff, bg_alpha=0.1, fg_colour=0xffffff, fg_alpha=0.8, x=50, y=220, radius=20, thickness=2, start_angle=0, end_angle=360 }, } 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 conky_ring_stats() 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) if value == nil then value = 0 end pct=value/pt['max'] draw_ring(cr,pct,pt) end 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[i]) end end cairo_surface_destroy(cs) cairo_destroy(cr) end Ausgabe auf dem Desktop? |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 789 |
Danke Bleys,
Nur zur Vollständigkeit: Meine Kurz-conkyrc OHNE LUA läuft und liefert die Anzeige. Deine Test-Files liefern im Terminal $ conky -c ~/.conky/conkyrc conky: desktop window (1e00019) is subwindow of root window (6aa) conky: window type - normal conky: drawing to created window (0x400002) conky: drawing to double buffer aber leider keine Anzeige auf dem Desktop. |
||
Anmeldungsdatum: Beiträge: 6053 |
Jetzt wird es schwierig... Anscheinend ist ja Lua die Ursache. Trotzdem sollte erst mal das auf dem Desktop erscheinen was direkt per Conky angezeigt wird: Datum und Uhrzeit weil Lua 5 Updates abwarten muss bevor die Funktion startet: if update_num>5 then Da das auch nicht passiert und das ohne Fehlermeldung bin ich aktuell tatsächlich ratlos. [Nachtrag] ich werde alt. Ändere mal den Aufruf von lua_draw_hook_pre = 'ring_stats', zu lua_draw_hook_post = 'ring_stats', Danach sollte auf jeden Fall zumindest zu Beginn etwas auf dem Desktop erscheinen. |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 789 |
Danke Bleys,
Nun ist oben mittig eine Fläche mit Datum und Uhrzeit. Leider löscht die sich nicht mehr mit CTRL-C in der Konsole. Ein erneuter Aufruf überdruckt die Fläche mit aktueller Zeit. [Nachtrag]: Ich werde auch alt, jetzt ist die Fläche weg (Geisterhand). Und: Aufruf –> Fläche, CTRL-C –> Fläche weg. Mehrfach reproduziert. |
||
Anmeldungsdatum: Beiträge: 6053 |
Das Problem ist wohl tatsächlich LUA. Nur das es nicht abstürzt sondern einfach die Arbeit einstellt. Sorry, da kann ich wohl nicht weiter helfen :/ |
||
Anmeldungsdatum: Beiträge: 6053 |
Einversuch hätte ich noch mit dem absoluten Minimum an Lua Script: Speichern als min.lua require 'cairo' 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) cr = cairo_create (cs) local updates = tonumber (conky_parse ('${updates}')) if updates > 5 then print ("conky_main hat >5 updates des Conky Fenster gezählt") end cairo_destroy (cr) cairo_surface_destroy (cs) cr = nil end In der ebenfalls minimalem conkyrc min.lua so aufrufen: lua_load = "~/.conky/min.lua", lua_draw_hook_post = "main" das erzeugt keine Ausgabe auf dem Desktop! Aber im Terminal sollte zu jedem Update der gleiche Text geschrieben werden bis abgebrochen wird:
|
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 789 |
Hallo, jetzt habe ich endlich meinen KUBUNTU-PC zur Verfügung und konnte Deine Skripte mit installiertem conky-all testen, also kein Einfluss der arch-basierten Pakete. Keine der Varianten läuft, kann es sein, dass der KDE-Desktop mit Miniprogrammen eine Ursache ist? Deine originale Version (.rar) liefert: $ conky -c ~/.conky/conkyrc conky: desktop window (240000f) is subwindow of root window (17e) conky: window type - normal conky: drawing to created window (0x3e00002) conky: drawing to double buffer ~.conky/wetter.sh: 14: jq: not found ~.conky/wetter.sh: 18: jq: not found ~.conky/wetter.sh: 22: jq: not found ~.conky/wetter.sh: 30: jq: not found ~.conky/wetter.sh: 26: jq: not found (23) Failed writing body ((2233)) FFaaiilled wrietdi nwrg boitdy ing body (23) Failed writing body (23) Failed writing body cp: Aufruf von stat für '.png' nicht möglich: Datei oder Verzeichnis nicht gefunden Deine letzte Version liefert: $ conky -c ~/.conky/conkyrcMIN conky: Syntax error (~/.conky/conkyrcMIN:2: unexpected symbol near '=') while reading config file. conky: Assuming it's in old syntax and attempting conversion. conky: [string "..."]:139: attempt to index local 'settings' (a nil value) |
||
Anmeldungsdatum: Beiträge: 6053 |
Ich zitiere mich mal selbst:
Und dein minimum Versuch: conky: Syntax error (~/.conky/conkyrcMIN:2: unexpected symbol near '=') while reading config file. In Zeile 2 ist anscheinend der Fehler. Wenn Du ihn nicht selbst findest: das gesamte Script posten. |