lua_load = file '$HOME/hacks.lua',
Ich kriege folgende Ausgabe beim Nutzen der Variable 'file' in der Funktion lua_load
:
conky: $HOME/.config/conky/conkyrc:72: attempt to call local 'file' (a userdata value)
Wikiteam
Anmeldungsdatum: Beiträge: 1129 |
lua_load = file '$HOME/hacks.lua', Ich kriege folgende Ausgabe beim Nutzen der Variable 'file' in der Funktion conky: $HOME/.config/conky/conkyrc:72: attempt to call local 'file' (a userdata value) |
||||
Anmeldungsdatum: Beiträge: 6053 |
Was soll deine Variable "file" sein? Es wäre hilfreich wenn Du alles postest was zu dieser komischen Zeile führt... lua_load erwartet den Pfad zu einem LUA Script und es kann nicht mit mehreren Scripten umgehen. Oder mit zusätzlichen Parametern. Wenn Dein Pfad nicht schon den kompletten Pfad enthalten würde, würde ich vermuten Du willst etwas verketten. Aber dafür fehlt dann der entsprechende Operator (..). |
||||
Wikiteam
Anmeldungsdatum: Beiträge: 1129 |
Hallo,
Ich habe dein Beispiel ausprobiert: command = "/usr/bin/ip route show|grep default|awk '{print $5}'" local file = io.popen (command) iface = file:read ("*a") local dirname = debug.getinfo(1, "S").source:sub(2):match("(.*[/\\])") conky.config = { . . . -- Lua Load lua_load = dirname .. 'vr.lua', lua_draw_hook_post = 'main', }; |
||||
Anmeldungsdatum: Beiträge: 6053 |
das sind zwei unterschiedliche Variablen die da ausgelesen werden! Im ersten Teil (der "file" enhält) wird das Netzwerk Interface ausgelesen. Zum besseren Verständnis einfach mal die genutzten Befehle im Terminal anwenden:
grep im Teil nach der Pipe holt dann mein Interface: enp7s0 Innerhalb der conkyrc, vor dem Textbereich nutze ich dann iface als Template: template0 = iface, Meine Anzeige funktioniert also unabhängig davon ob ich per Lan oder Wlan ins Netz gehe. file wird also nur temporär genutzt für das LUA io.popen Command und auch nur zur Ermittlung des Netzwerk Interface. local dirname = debug.getinfo(1, "S").source:sub(2):match("(.*[/\\])") holt den Namen des Conky Verzeichnis und das Laden des LUA Script funktioniert auch nur so, wenn das Script innnerhalb des Conkyverzeichnis ist. Du solltest Dich etwas mit LUA beschäftigen. Grundwissen aneignen u.s.w. Wird sonst nur frustrierend... |
||||
Anmeldungsdatum: Beiträge: 680 |
Danke! Bleys, habe das Auslesen des Netzw.Interfaces gleich mal eingebaut, stand eh auf der Liste. 👍 |
||||
Wikiteam
Anmeldungsdatum: Beiträge: 1129 |
Das mit den zwei Variablen war mir schon klar. Das ändert aber doch nichts daran, dass lua_load = file, lua_draw_hook_post = 'main', funktionieren sollte. |
||||
Anmeldungsdatum: Beiträge: 6053 |
Das bezweifel ich jetzt mal...
Ernsthaft? So schwer zu verstehen sind diese beiden Zeilen doch nicht o_O command = "/usr/bin/ip route show|grep default|awk '{print $5}'" local file = io.popen (command) file enthält nach Ausführung das aktuell genutzte Netzwerk Interface... Die letzte Zeile iface = file:read ("*a")
Das war falsch. *a steht für read all. Wird Zeit das ich mal wieder ein neues Conky entwerfe... |
||||
Anmeldungsdatum: Beiträge: 6053 |
Conky horizontal. Außer dem Kalender ist alles per LUA erstellt. |
||||
Anmeldungsdatum: Beiträge: 2627 |
Ich kenne mich mit Conky nicht aus, und nutze es auch nicht. Aber einen Hinweis zur Verschlankung der ersten Zeile hätte ich, da awk die Aufgabe von grep in diesem Fall gleich mitübernehmen kann: command = "/usr/bin/ip route show | awk '/default/{print $5}'" Ich hoffe es ist mir niemand böse darüber, dass ich diese kleinen Hinweis hier mal einstreue. |
||||
Anmeldungsdatum: Beiträge: 6053 |
Perfekt, Danke! Der Hinweis hat mir gerade gefehlt um in LUA "if process running" nach zu bauen: local result = os.execute("ps -U root -u root -N | awk '/audacious/{print $4}'") |
||||
Anmeldungsdatum: Beiträge: 6053 |
Die Methode per template ermittelt nur einmal beim Start von Conky das genutzte Netzwerk Interface. Hier dann noch die automatisches Erkennen des gerade aktuellen Netzwerk Interface wenn es im laufenden Betrieb gewechselt wird. Lua Script (inet.lua): do function conky_net(typ) command = "/usr/bin/ip route show | awk '/default/{print $5}'" local file = io.popen (command) iface = file:read ("*a") file:close() if typ == '1' then return (conky_parse(string.format('${%s %s}','addr', iface))) elseif typ == "2" then return (conky_parse(string.format('${%s %s}',"downspeed", iface))) elseif typ == "3" then return (conky_parse(string.format('${%s %s}',"upspeed", iface))) else return iface end end end Die notwendigen Zeilen innerhalb der conkyrc: conky.config = { -- Lua Load lua_load = '~/.conky/inet.lua', }; conky.text = [[ IP: ${lua_parse net 1} Downspeed: ${lua_parse net 2} Upspeed: ${lua_parse net 3} ]]; Die LUA Funktion kann natürlich auch in ein vorhandenes LUA Script außerhalb! der Main Funktion eingefügt werden. Dann ohne do - end. |
||||
Anmeldungsdatum: Beiträge: 6053 |
Horizonatale Version und vertikale Version. Bis auf den Kalender mit LUA gebaut. |
||||
Anmeldungsdatum: Beiträge: 6053 |
Einfaches Now Playing Conky. conkyrc:
Skript für die mpris Abfrage des Players. Im Beispiel ist das Clementine. Das Skript funktioniert auch mit jedem anderem Player der mpris unterstützt. Einfach alle Vorkommen von "clementine" ersetzen. meta.sh:
|
||||
Anmeldungsdatum: Beiträge: 6053 |
Conky Kalender kpl. in LUA geschrieben. Läßt sich in vorhandene Conkys einbauen. Position des Kalenders wird durch Angabe von x,y bestimmt. LUA Skript:
|
||||
Anmeldungsdatum: Beiträge: 6053 |
Wenn ich mir den Thread so ansehe, scheint es nur wenig Interesse an Conky zu geben. Ich poste irgendwie immer nur für mich selbst 😉 Also.. schreibt mal kurz hier falls noch Interesse besteht. |