Beiträge von Bleys im Thema „[c++] Frage zu Conky“

    Es waren und sind auch französisch sprachige Entwickler an Conky beteiligt. own_window_colour dürfte da seinen Ursprung haben. Einfach ein Sprachfehler. Ich vermute mal sie haben das nie angepasst weil das zu Fehlern bei unzähligen aktiven Conkys führen würde.

    Komplett falsch. Wie war das noch bei Alarmstufe Rot 2? Der Anfang einer Katastrophe ist eine Vermutung :)

    color und colour sind beide englische Wörter für Farbe. In den USA ist "color" der richtige Begriff für Farbe und in allen! anderen englischsprachigen Ländern steht für Farbe das Wort colour. Keine Ahnung warum ich colour mit französisch assoziiert habe.

    Es waren und sind auch französisch sprachige Entwickler an Conky beteiligt. own_window_colour dürfte da seinen Ursprung haben. Einfach ein Sprachfehler. Ich vermute mal sie haben das nie angepasst weil das zu Fehlern bei unzähligen aktiven Conkys führen würde.

    In der deinem Code sind keine Anführungszeichen...funktioniert aber...

    Warum?

    In Deiner Version wird per cut aus einer Datei gelesen. Das Ergebnis ist ein String und die müssen in Anführungszeichen gesetzt werden. Der ganze Vergleich in dieser Version ist daher eigentlich sinnlos.
    Mit dem nativen Conky Befehl battery_percent hast Du eine Ganzzahl die dann auch korrekt mit Ganzzahlen verglichen werden kann. Zitat aus der Beschreibung zu if_match:

    Zitat


    Recognised left and right side types are:
    double - Argument consists of only digits and a single dot.
    long - Argument consists of only digits.
    string - Argument is enclosed in quotation marks (")

    Valid operands are: '>', '<', '>=', '<=', '==', '!='.

    conky.config = {
    .
    .
    .
    color1 = '#ff0000',
    color2 = '#ff8000',
    color3 = '#ffbf00',
    color4 = '#80ff00',
    color5 = '#00ff00',
    };
    conky.text = [[
    ${color1} ${if_match ${battery_percent BAT0}>20}${color2}${endif}${if_match ${battery_percent BAT0}>40}${color3}${endif}${if_match ${battery_percent BAT0}>60}${color4}${endif}${if_match ${battery_percent BAT0}>80}${color5}${endif}${battery_percent BAT0}
    ]];

    Ich nochmal...

    also über den Befehl Hwmon funktioniert das nicht bei jedem Sensor.

    ${hwmon asus cpu_fan} und es passiert nichts....über den exec Befehl ist die Drehzahl vorhanden.

    Mache ich was falsch?

    Viel :)

    Der Aufbau ist immer gleich. hwmon wertet Dateien aus die auf _input enden! Sensors listet deinen Fan unter dem Namen CPU_Fan. Nach der sensors Ausgabe ist das der einzige Fan für den Sensor Asus. Im entsprechenden hwmon Verzeichnis heißt die Datei für diesen Temp Sensor dann: fan1_input

    Die entsprechende Zeile für Conky:

    ${hwmon asus fan 1}

    Nebenbei fällt mir noch auf das Deine sensors Ausgabe relativ mager ist. Hast Du

    sudo sensors-detect

    ausgeführt?

    Der Conky Befehl exec führt einen Terminal Befehl aus. Diese Befehle lassen sich also leicht prüfen:

    sensors coretemp-isa-0000 | grep 'Package id 0' | cut -c13-21}

    Ohne Intel CPU tste ich das dann mit Deiner sensors Ausgabe:

    ralf@Nexus:~$ echo 'Package id 0: +91.0°C (high = +100.0°C, crit = +100.0°C)' | cut -c13-21
    : +91.0°
    ralf@Nexus:~$ 

    Wenn Du die Original Befehle weiter nutzen möchtest muss cut angepasst werden:

    ralf@Nexus:~$ echo 'Package id 0: +91.0°C (high = +100.0°C, crit = +100.0°C)' | cut -c16-17
    91
    ralf@Nexus:~$ 

    Ach ja... der Fehler. Der Cut Befehl für den Package Wert gibt das aus:

    : +91.0°

    Und der if Befehl prüft damit auf => 30

    Wie schon erwähnt, die nativen Conky Funktionen zu nutzen vermeidet Fehler und macht es auch noch sehr viel einfacher.

    Im Verzeichnis /sys/class/hwmon/ findest Du für jeden Sensor in Deinem System ein hwmon[0-x] Verzeichnis. In jedem dieser Verzeichnisse gibt es ein Dokument name. Dieses Dokument enthält jeweils den Namen des Sensors wie er von Conky direkt angesprochen werden kann. coretemp ist wahrscheinlich hwmon0 bei Dir. Kontrolle über den Inhalt des name Doks.

    Dann enthält das Verzeichnis für jeden Temperatursensor das Dokument tempx_input. Das enthält jeweils die aktuelle Temperatur und wird in Conky wie in meinem ersten Beitrag beschrieben angesprochen:

    ${hwmon sensorname temp x}

    Für Drehzahlen eines Fans ist das Dok fanx_input zuständig:

    ${hwmon sensorname fan x}

    Für Spannungen inx_input:

    ${hwmon sensorname in x}

    der hwmon Befehl in Conky läßt auch Anpassungen des Wertes zu. Faktor und Offset.:

    ${hwmon k10temp temp 1 0,8 10,0} 

    würde den ausgelesenen Wert mit 0,8 multiplizieren und dann 10 dazu addieren.

    Wenn Du im hwmon Verzeichnis für coretemp nicht sicher den Temperaturwert für das Package finden kannst, nimm den temp1 Sensor von acpitc. Ist der Wert des gleichen Sensors per acpi

    ${hwmon acpi temp 1}

    Als erstes würde ich die Resourcen fressenden exec, grep, cut u.s.w. Befehle gegen einen nativen Conky Befehl austauschen. Eleminiert gleichzeitig ein paar Fehlerquellen.

    Aus

    ${exec sensors coretemp-isa-0000 | grep 'Core 0' | cut -c13-21}

    wird dann

    ${hwmon coretemp temp 1}

    für Core 0. temp 2 für Core 1 u.s.w. Aktuell habe ich keinen Intel PC zum nachsehen welche Werte Sensors für coretemp ausgibt. "Package id" ist aber eher selten. Da vermute ich dann auch den Fehler.

    Poste mal die Ausgabe von sensors im Terminal.

    Just for Fun: