Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
29.10.2020, 23:59:29

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
Statistiken
  • Beiträge insgesamt: 691577
  • Themen insgesamt: 55984
  • Heute online: 694
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  Conky Sammelthread - Alles rund um Conky - Fragen, Probleme, Anregungen !  (Gelesen 35985 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Ich benutze Gnome
und was noch?
Die Syntax der conkyrc sieht etwas altmodisch aus.
Erste Zeile: background yes ?
Bei mir steht da: background = false,
(conky version 1.10.8 )
« Letzte Änderung: 13.10.2020, 06:18:34 von aexe »

Moin,
Die Syntax der conkyrc sieht etwas altmodisch aus.
genau das hatte ich versucht in Antwort #404 aufzuklären.
Bei den Usern werden zwei Versionen, alte und neue Syntax im LUA-Format der .conkyrc oder ~/conky/conky.conf verwendet.

Bei dir @witesoul (Willkommen im Forum) muss es sich um das alte Format handeln, damit ist m.M.n. keine Transparenz möglich.

Meine ins neue LUA-Format konvertierte ~/conky/conky.conf sieht in dem Abschnitt wie folgt aus:
-- Create own window instead of using desktop (required in nautilus)
own_window = true,
own_window_hints = 'undecorated,below,skip_taskbar',
own_window_transparent = true,-- yes
own_window_argb_visual = false,-- yes
own_window_argb_value = 35,-- Transparenz 0-255
own_window_type = 'normal',-- normal

background = false,

-- Use double buffering (reduces flicker, may not work for everyone)
double_buffer = true,

verwendet wird: conky-all 1.10.8-1build3
Edit: conkyrc ins neue Lua Format konvertieren: https://github.com/brndnmtthws/conky/wiki/Convert-to-new-1.10-syntax
« Letzte Änderung: 14.10.2020, 07:39:32 von kuehhe1 »

Ich verwende die alte Syntax und habe die Transparenz einfach mit einem Bild umgesetzt:
${image ~/.Conky/images/Black_35%.png -p -5,-5 -s 165x1200}  # Hintergrund (Workaround)

Ich habe Version conky 1.10.8 compiled Tue May 15 07:41:03 UTC 2018

Die Vorlage habe ich von der HP https://wiki.ubuntuusers.de/Conky/

Kann ich die auch als Lua implementieren? Oder was für ein Unterschied soll das sein!?!

Das mit dem Bild im Hintergrund ist eine super Idee. Werde das mit Gnu Image recht einfach machen können. Denke ich ;D

Falls es jemand brauchen kann: Schwarz mit 35% Deckkraft

Ich verwende die alte Syntax und habe die Transparenz einfach mit einem Bild umgesetzt:
${image ~/.Conky/images/Black_35%.png -p -5,-5 -s 165x1200}  # Hintergrund (Workaround)

... und Dein Wetter funzt ! ;D

Kannst Du den Bereich des Conky mal online stellen? meiner geht nicht mehr , da es diese Seite die es bereitstellt nicht mehr gibt ... :'(

Ich hole mir die Werte mit einem Skript und in Conky lese ich dann die Werte direkt aus dem RAM.
Auszug
### Wetter ###
# Aktuelle Temperatur
${color}${font Ubuntu Condensed:size=31}${goto 7}${voffset -1}${execi 300 cat ${CONKY_DATA}/MAIN_TEMP}\
${if_match "$template8" == "metric"} °C${else}${if_match "$template8" == "imperial"} °F${else}${if_match "$template8" == "default"} K${endif}${endif}${endif}${font}
# Beschreibung
${color1}${font Ubuntu Condensed:size=11}${goto 10}${voffset -3}${execi 300 cat ${CONKY_DATA}/WEATHER_DESCRIPTION}${font}
# Luftfeuchte und -druck (oder Wind)
${color}${goto 30}${voffset 2}${execi 300 cat ${CONKY_DATA}/MAIN_HUMIDITY} % \
#${color}${goto 105}${execi 300 cat ${CONKY_DATA}/MAIN_PRESSURE} hPa
# Wind
${color}${goto 105}${execi 300 cat ${CONKY_DATA}/WIND_SPEED}${if_match "$template8" == "metric"} m/s${else}${if_match "$template8" == "default"} m/s${else}${if_match "$template8" == "imperial"} mi/h${endif}${endif}${endif}
# Sonnenauf- und untergang
${color}${goto 30}${voffset 6}${execi 300 cat "${CONKY_DATA}/SYS_SUNRISE"} Uhr \
${color}${goto 105}${execi 300 cat ${CONKY_DATA}/SYS_SUNSET} Uhr
\
# 3-Tage-Vorhersage (Text)
${color1}${voffset 5}${goto 10}${execi 300 LANG=${LANG} LC_TIME=${LC_TIME} date +%A} (Heute)
${color2}${goto 10}${font :bold:size=8}${execi 300 cat ${CONKY_DATA}/LIST0_TEMP_MIN}${if_match "$template8" == "metric"} °C${else}${if_match "$template8" == "imperial"} °F${else}${if_match "$template8" == "default"} K${endif}${endif}${endif}\
${color} - ${color4}${execi 300 cat ${CONKY_DATA}/LIST0_TEMP_MAX}${if_match "$template8" == "metric"} °C${else}${if_match "$template8" == "imperial"} °F${else}${if_match "$template8" == "default"} K${endif}${endif}${endif}${font}
\
${color1}${goto 10}${execi 300 LANG=${LANG} LC_TIME=${LC_TIME} date -d +1day +%A}
${color2}${goto 10}${execi 300 cat ${CONKY_DATA}/LIST1_TEMP_MIN}${if_match "$template8" == "metric"} °C${else}${if_match "$template8" == "imperial"} °F${else}${if_match "$template8" == "default"} K${endif}${endif}${endif}\
${color} - ${color4}${execi 300 cat ${CONKY_DATA}/LIST1_TEMP_MAX}${if_match "$template8" == "metric"} °C${else}${if_match "$template8" == "imperial"} °F${else}${if_match "$template8" == "default"} K${endif}${endif}${endif}
\
${color1}${goto 10}${execi 300 LANG=${LANG} LC_TIME=${LC_TIME} date -d +2day +%A}
${color2}${goto 10}${execi 300 cat ${CONKY_DATA}/LIST2_TEMP_MIN}${if_match "$template8" == "metric"} °C${else}${if_match "$template8" == "imperial"} °F${else}${if_match "$template8" == "default"} K${endif}${endif}${endif}\
${color} - ${color4}${execi 300 cat ${CONKY_DATA}/LIST2_TEMP_MAX}${if_match "$template8" == "metric"} °C${else}${if_match "$template8" == "imperial"} °F${else}${if_match "$template8" == "default"} K${endif}${endif}${endif}
\
# Stand
${alignr}${color3}${voffset 2}${font :size=7}Stand: ${execi 300 cat ${CONKY_DATA}/DT}
\
# Wetter-Symbole (Feste Pfade, da "$image" keine Variablen verarbeitet)
# Aktuell
${image /dev/shm/MV_Conky.tmp/weather.png -p 95,718 -s 56x56}\
# Feuchtigkeit und Luftdruck (oder Wind)
${image ~/.harmattan-assets/misc/New-Minty/Comfortable/shadow/humidity.png -p 9,775 -s 16x16}\
#${image ~/.harmattan-assets/misc/New-Minty/Comfortable/shadow/pressure.png -p 85,775 -s 16x16}
${image ~/.harmattan-assets/misc/New-Minty/Comfortable/shadow/wind-2.png -p 85,775 -s 16x16}\
# Sonnenauf- und untergang
${image ~/.harmattan-assets/misc/New-Minty/Comfortable/shadow/sunrise.png -p 9,795 -s 16x16}\
${image ~/.harmattan-assets/misc/New-Minty/Comfortable/shadow/sunset.png -p 85,795 -s 16x16}\
# 3 Tage
${image /dev/shm/MV_Conky.tmp/weather-1.png -p 100,815 -s 30x30}\
${image /dev/shm/MV_Conky.tmp/weather-2.png -p 100,840 -s 30x30}\
${image /dev/shm/MV_Conky.tmp/weather-3.png -p 100,865 -s 30x30}${font}

Und das Skript:
#!/bin/bash

# MV_Conky.sh
# Startet Conky und liefert u. a. Wetterwerte im RAM.
VERSION=190924

### Variablen ###
SELF="$(readlink /proc/$$/fd/255)" || SELF="$0"  # Eigener Pfad (besseres $0)
SELF_DIR="${SELF%/*}"                            # Pfad
SELF_NAME="${SELF##*/}"                          # skript.sh
CONKY_DATA="/dev/shm/${SELF_NAME%.*}.tmp"        # Verzeichnis im RAM (MV_Conky.tmp)
CONKY_CONF="${HOME}/.Conky/MV_Conky"             # Conky Konfiguration
INTERVALL=$((10*60))                             # Intervall in Sekunden
# Für die Abfrage des Traffics
FB_IP='fritz.box'                                # IP der Fritz!Box (Ohne http://)
FB_USER='xxx'                               # Fritz!Box Benutzername (Login)
FB_PWD='xxx'                    # Fritz!Box Passwort (Login)
REQUESTPAGE='/data.lua'                          # Seite mit den Daten
FB_SID=''                                        # SID der Fritz!Box (Max. 20 Minuten gültig)
# Openweathermap-Daten
API_KEY='xxx'
ID='2921473'  # Gelnhausen, DE
_LANG='de_DE.UTF-8' ; L="${_LANG%%_*}"  # Sprache
UNITS='metric'  # Temp Einheit (default, metric, imperial)
# Dark Sky-Daten (forecast.io)
API_KEY_DS='xxx'
LATITUDE='50.204567'
LONGITUDE='9.186373'
UNITS_DS='si'

# Wetterdaten werden im RAM gespeichert
WEATHER_JSON="${CONKY_DATA}/weather.json"    # Aktuelles Wetter
FORECAST_JSON="${CONKY_DATA}/forecast.json"  # Drei Tage Vorschau

### Funktionen ###
f_exit(){
  f_log "Beende $SELF_NAME [$$] und Conky [${CONKY_PID}]"
  [[ -n "$CONKY_PID" ]] && { kill "$CONKY_PID" ;} || killall conky
  #rm -rf "$CONKY_DATA" &>/dev/null
  exit "${1:-0}"
}

f_log(){
  logger -t "$SELF_NAME" "$*"
}

f_get_weather(){
  # Aktuelles Wetter
  curl --silent "api.openweathermap.org/data/2.5/weather?APPID=${API_KEY}&id=${ID}&cnt=5&units=${UNITS}&lang=${L}" \
    --retry 3 --retry-delay 10 --output "$WEATHER_JSON"
  # Vorschau (5 Tage)
  curl --silent "api.openweathermap.org/data/2.5/forecast/daily?APPID=${API_KEY}&id=${ID}&cnt=5&units=${UNITS}&lang=${L}" \
    --retry 3 --retry-delay 10 --output "$FORECAST_JSON"
  # Dark Sky
  #https://api.darksky.net/forecast/[key]/[latitude],[longitude]
  #curl --silent "https://api.darksky.net/forecast/${API_KEY_DS}/${LATITUDE},${LONGITUDE}?lang=${L}&units=${UNITS_DS}" \
  #  --retry 3 --retry-delay 10 --output "$FORECAST_JSON"

  # Wetterdaten im RAM zur Verfügung stellen
  jq -r .main.temp "$WEATHER_JSON" | awk '{print int($1+0.5)}' > "${CONKY_DATA}/MAIN_TEMP"  # Aktuelle Temperatur
  jq -r .weather[0].description "$WEATHER_JSON" | sed "s|\<.|\U&|g" > "${CONKY_DATA}/WEATHER_DESCRIPTION"  # Beschreibung
  jq -r .main.humidity "$WEATHER_JSON" | awk '{print int($1+0.5)}' > "${CONKY_DATA}/MAIN_HUMIDITY"  # Luftfeuchte
  jq -r .main.pressure "$WEATHER_JSON" | awk '{print int($1+0.5)}' > "${CONKY_DATA}/MAIN_PRESSURE"  # Luftdruck
  jq -r .wind.speed "$WEATHER_JSON" | awk '{print int($1+0.5)}' > "${CONKY_DATA}/WIND_SPEED"  # Wind
  printf '%(%-H:%M)T\n' "$(jq -r .sys.sunrise "${WEATHER_JSON}")" > "${CONKY_DATA}/SYS_SUNRISE"  # Sonnenaufgang
  printf '%(%-H:%M)T\n' "$(jq -r .sys.sunset "${WEATHER_JSON}")" > "${CONKY_DATA}/SYS_SUNSET"  # Sonnenuntergang
  # 3-Tage Temperaturen (min/max)
  jq -r .list[0].temp.min "$FORECAST_JSON" | awk '{print int($1+0.5)}' > "${CONKY_DATA}/LIST0_TEMP_MIN"
  jq -r .list[0].temp.max "$FORECAST_JSON" | awk '{print int($1+0.5)}' > "${CONKY_DATA}/LIST0_TEMP_MAX"
  #jq -r .list[0].weather[0].description "$FORECAST_JSON" > "${CONKY_DATA}/LIST0_WEATHER0_DESCRIPTION"  # Beschreibung
  jq -r .list[1].temp.min "$FORECAST_JSON" | awk '{print int($1+0.5)}' > "${CONKY_DATA}/LIST1_TEMP_MIN"
  jq -r .list[1].temp.max "$FORECAST_JSON" | awk '{print int($1+0.5)}' > "${CONKY_DATA}/LIST1_TEMP_MAX"
  #jq -r .list[1].weather[0].description "$FORECAST_JSON" > "${CONKY_DATA}/LIST1_WEATHER0_DESCRIPTION"  # Beschreibung
  jq -r .list[2].temp.min "$FORECAST_JSON" | awk '{print int($1+0.5)}' > "${CONKY_DATA}/LIST2_TEMP_MIN"
  jq -r .list[2].temp.max "$FORECAST_JSON" | awk '{print int($1+0.5)}' > "${CONKY_DATA}/LIST2_TEMP_MAX"
  #jq -r .list[2].weather[0].description "$FORECAST_JSON" > "${CONKY_DATA}/LIST2_WEATHER0_DESCRIPTION"  # Beschreibung
  # Stand
  printf '%(%d.%m.%y %-H:%M)T\n' "$(jq -r .dt "${WEATHER_JSON}")" > "${CONKY_DATA}/DT"  # Datum und Zeit der Daten

  # Wettersymbole, die kopiert werden müssen
  CLR='#e5e5e5'  # Farbe der Symbole
  cp -f "${HOME}/.harmattan-assets/icons/${CLR}__64/shadow/$(jq .weather[0].id "${WEATHER_JSON}").png" "${CONKY_DATA}/weather.png"
  cp -f "${HOME}/.harmattan-assets/icons/${CLR}__32/shadow/$(jq .list[0].weather[0].id "${FORECAST_JSON}").png" "${CONKY_DATA}/weather-1.png"
  cp -f "${HOME}/.harmattan-assets/icons/${CLR}__32/shadow/$(jq .list[1].weather[0].id "${FORECAST_JSON}").png" "${CONKY_DATA}/weather-2.png"
  cp -f "${HOME}/.harmattan-assets/icons/${CLR}__32/shadow/$(jq .list[2].weather[0].id "${FORECAST_JSON}").png" "${CONKY_DATA}/weather-3.png"
}

f_fbtraffic(){
  if [[ -z "$FB_IP" ]] ; then  # Wenn nicht konfiguriert, leere Datei erstellen
    echo '' > "${CONKY_DATA}/traffic"
    return 1
  fi
  # Auf gültiges Login prüfen
  LOGIN_STAT=$(curl --silent "http://${FB_IP}/login_sid.lua?sid=$FB_SID" | grep -c '0000000000000000')

  if [[ $LOGIN_STAT -gt 0 ]] ; then
  echo -n 'Login nötig... '
  challenge="$(curl --silent "http://${FB_IP}/login_sid.lua" | grep -o "<Challenge>[a-z0-9]\{8\}" | cut -d'>' -f 2)"
  #echo -n "\$challenge: $challenge"
  hash="$(echo -n "${challenge}-${FB_PWD}" | sed -e 's,.,&\n,g' | tr '\n' '\0' | md5sum | grep -o "[0-9a-z]\{32\}")"
  #echo " - \$hash: $hash"
  FB_SID=$(curl --silent "http://${FB_IP}/login_sid.lua" --data response="${challenge}-${hash}" --data username="${FB_USER}" \
    | grep -o "<SID>[a-z0-9]\{16\}" | cut -d'>' -f 2)
    echo "OK. (${FB_SID})"
  fi  # Ende der Login-Funktion

  # JSON-Version - Zeile in ein Array  Beispiel: 30503 von 300000 MB
  NETCNT=($(curl --silent "http://${FB_IP}${REQUESTPAGE}" \
    --data "xhr=1&lang=de&page=overview&xhrId=first&noMenuRef=1&no_sidrenew=&sid=${FB_SID}" \
      | jq -r '.data.comfort.func[] | select(.["link"] == "netCnt") | .details'))

  if [[ ${NETCNT[0]:=0} -eq 0 ]] ; then
    echo 'Fehler!' > "${CONKY_DATA}/traffic"
  else
    # --to=iec-i (29,55GiB) --to=si (29.55GB)
    numfmt --from=iec --to=iec --suffix=B --format='%.2f' "${NETCNT[0]}M" > "${CONKY_DATA}/traffic"
  fi
}

trap 'f_exit' EXIT  # Beim beenden den Datenordner löschen

### Start ###
f_log "Starte $SELF_NAME #${VERSION} [$$]"
[[ -z "$API_KEY" ]] && { echo 'OpenWeatherMap API-Key ist nicht gesetzt!' ; exit 1 ;}
until [[ -d "${HOME}/.harmattan-assets" && -d /dev/shm ]] ; do
  f_log 'Warte auf Verzeichnisse...'
  sleep 1 ;  ((cnt+=1))
  [[ $cnt -gt 10 ]] && f_exit 1
done

# Ziel-Verzeichnis erstellen
mkdir --parents "$CONKY_DATA" || { f_log "Fehler beim Erstellen von $CONKY_DATA" ; f_exit 1 ;}
f_get_weather  # Wetter-Daten zum ersten mal laden
#f_linkspeed
f_fbtraffic  # Datenvolumen (Fritz!Box)
export CONKY_DATA  # Die Variable ist in der Conky-Konfiguration nützlich
f_log "Starte Conky mit $CONKY_CONF"
DISPLAY=:0 conky -c "$CONKY_CONF" -d  # Konfig laden und im Hintergrund ausführen
CONKY_PID=$!  # PID merken

while sleep "${INTERVALL:-300}" ; do
  f_get_weather  # Wetterdaten laden
  NEW_KERNEL="$(readlink /boot/vmlinuz)"  # Beispiel: 'vmlinuz-4.10.0-33-generic'
  NEW_KERNEL="${NEW_KERNEL/'vmlinuz-'}"
  ACT_KERNEL="$(uname --kernel-release)"  # 4.10.0-32-generic
  if [[ "$NEW_KERNEL" == "$ACT_KERNEL" ]] ; then
    rm "${CONKY_DATA}/newkwernel" &>/dev/null  # Gleich
  else
    echo "$NEW_KERNEL" > "${CONKY_DATA}/newkernel"  # Neuerer Kernel ist installiert
  fi
  f_fbtraffic  # Datenvolumen (Fritz!Box)
done

exit  # Ende