Conky i poczta Gmail

Uwaga: Ten wpis został utworzony ponad rok temu. Informacje w nim zawarte mogą być nieaktualne!

Jedną z wielu ciekawych funkcji programu Conky jest możliwość sprawdzenia poczty Gmail. Aby to zrobić potrzebny będzie odpowiednio napisany skrypt i kod, który umieścimy w pliku konfiguracyjnym.

1. Na początek stworzymy folder, w którym zapiszemy skrypt. Otwórz terminal (Aplikacje > Akcesoria > Terminal) i wpisz:

mkdir conky

2. Stwórz plik, w którym będzie zawarty skrypt:

gedit conky/gmail

3. Wklej do niego poniższy kod:

#!/bin/bash

gmail_login="twoj_login"
gmail_password="twoje_haslo"

dane="$(wget --secure-protocol=TLSv1 --timeout=3 -t 1 -q -O - \
https://${gmail_login}:${gmail_password}@mail.google.com/mail/feed/atom \
--no-check-certificate | grep 'fullcount' \
| sed -e 's/.*//;s/<\/fullcount>.*//' 2>/dev/null)"

#if [ -z "$dane" ]; then
#echo "Connection Error !"
#else
#echo "GMail: $dane msg(s)"
#fi

if [ -z "$dane" ]; then
echo "Błąd połączenia"
else
let wynik=$dane;
if [ $wynik = 0 ]; then
echo "Nie masz nowych wiadomości."
elif [ $wynik = 1 ]; then
echo "Masz 1 nową wiadomość."
else
if [ $wynik -lt 5 ]; then
echo "Masz $wynik nowe wiadomości."
else
echo "Masz $wynik nowych wiadomości."
fi
fi
fi

Oczywiście pola twoj_login i twoje_haslo uzupełnij odpowiednio :)

4. Zapisz plik (CTRL+S) i zamknij okno edytora. Otwórz terminal, przejdź do katalogu conky:

cd conky

i nadaj prawa do wykonywania pliku gmail jako program:

sudo chmod a+x gmail

5. Teraz zajmij się edycją pliku konfiguracyjnego Conky, wpisz:

sudo gedit ~/.conkyrc

6. Wklej poniższy kod w dowolnym miejscu (oczywiście po słowie TEXT):

${execi 60 ~/conky/gmail}

gdzie execi 60 to ilość czasu w sekundach po którym nastąpi ponowne sprawdzenie poczty (aktualizacja powiadomienia).

Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
  • youlleck

    if [ -z „$dane” ]; then
    echo „Błąd połączenia”
    else
    let wynik=$dane;
    if [ $wynik = 0 ]; then
    echo „Nie masz nowych wiadomości.”
    elif [ $wynik = 1 ]; then
    echo „Masz 1 nową wiadomość.”
    else
    if [ $wynik -lt 5 ]; then
    echo „Masz $wynik nowe wiadomości.”
    else
    echo „Masz $wynik nowych wiadomości.”
    fi
    fi
    fi

    to juz chyba przerost formy nad trescia ;)

  • Mak

    Szkoda, że to nie działa z kontami Google Apps.
    różni się na pewno ścieżka, bo w GA jest @mail.google.com/a/TWOJA_DOMENA/feed/atom
    Ale sama zmiana ścieżki nie pomaga, pokazuje błąd połączenia

  • Hipekhop

    Może i przerost formy nad treścią, ale o wiele ładniej wygląda, a to połowa uroku conky :)

  • ZajOnDz

    błąd połączenia… Dla czego? login i hasło na pewno wpisałem poprawne… :|

  • SABBATH

    mam to samo blad polaczenia ???

  • loginus

    Mój skrypt wygląda tak:

    #!/bin/bash

    gmail_login=”gmail_login”
    gmail_password=”gmail_password”

    data=”$(wget –secure-protocol=TLSv1 –timeout=3 -t 1 -q –user=”${gmail_login}” –password=”${gmail_password}” -O – \
    https://mail.google.com/mail/feed/atom \
    –no-check-certificate | grep ‚fullcount’ \
    | sed -e ‚s/.*//;s/.*//’ 2>/dev/null)”

    #if [ -z „$data” ]; then
    #echo „Connection Error !”
    #else
    #echo „GMail: $data msg(s)”
    #fi

    if [ -z „$data” ]; then
    echo „Connection error”
    else
    let result=$data;
    if [ $result = 0 ]; then
    echo „No new messages.”
    else
    echo „$result new messages.”
    fi
    fi

    działa również z kontami Google Apps – wtedy w miejsce loginu trzeba podać pełny mail w domenie zarejestrowanej w google apps np. janek@kowalski.pl

  • pan_zabka

    Błąd połączenia.

  • pan_zabka

    #!/bin/bash

    gmail_login=”LOGIN” #login do skrzyki
    gmail_password=”PASS” #hasło do konta

    dane=”$(wget –secure-protocol=TLSv1 –timeout=3 -t 1 -q -O – \
    https://${gmail_login}:${gmail_password}@mail.google.com/mail/feed/atom \
    –no-check-certificate | grep ‚fullcount’ \
    | sed -e ‚s/.*//;s/.*//’ 2>/dev/null)”

    if [ -z „$dane” ]; then
    echo „Błąd połączenia!”
    else
    echo „Masz $dane wiadomość(i)”
    fi

    Niby działa, ale dość często mam przez chwilę brak połączenia. Coś jest do poprawki, czy taki urok tego skryptu?

  • suchy1122

    Witam,
    Co nie halo u mnie bo cały czas mam Błąd połączenia
    Nie ważne jaki skrypt podepnę (a mam ich już 4) zawsze to samo…
    Jakieś sugestie.

    PS.
    Wszystko robię identycznie jak w tym tutku.

    Pozdrawiam

    • ArchNagas

      Witam
      Zobacz ten skrypt ,jakby nie działa to wywal -q po wget to zobaczysz dokładnie gdzie masz problem , oczywiście plik musi mieć praw do wykonywania

      #!/bin/bash
      dane=”$(wget -q -O – https://mail.google.com/a/mail.google.com/feed/atom –http-user=janek.kowalski@gmail.com –http-password=haslo –no-check-certificate | grep ‚fullcount’| sed ‚s///g’ )”
      if [ -z „$dane” ]; then
      echo „Błąd połączenia”
      else
      let wynik=$dane;
      if [ $wynik = 0 ]; then
      echo „Nie masz nowych wiadomości.”
      elif [ $wynik = 1 ]; then
      echo „Masz 1 nową wiadomość.”
      else
      if [ $wynik -lt 5 ]; then
      echo „Masz $wynik nowe wiadomości.”
      else
      echo „Masz $wynik nowych wiadomości.”
      fi
      fi
      fi

      • ArchNagas

        sorki wycięło kawałek kodu powinno być
        #!/bin/bash
        dane=”$(wget -q -O – https://mail.google.com/a/mail.google.com/feed/atom –http-user=janek.kowalski@gmail.com –http-password=haslo –no-check-certificate | grep ‚fullcount’| sed ‚s///g’ )”
        if [ -z „$dane” ]; then
        echo „Błąd połączenia”
        else
        let wynik=$dane;
        if [ $wynik = 0 ]; then
        echo „Nie masz nowych wiadomości.”
        elif [ $wynik = 1 ]; then
        echo „Masz 1 nową wiadomość.”
        else
        if [ $wynik -lt 5 ]; then
        echo „Masz $wynik nowe wiadomości.”
        else
        echo „Masz $wynik nowych wiadomości.”
        fi
        fi
        fi

  • ArchNagas

    w miejscu gdzie sed powinno byc
    sed ‚s///g’

  • ArchNagas

    nie przyjmuje znakow
    sed ‚s///g’

    • http://www.ubuntu-pomoc.org Łukasz Schmidtke

      Najlepiej wklej kod np. http://pastebin.com/ i prześlij link.