[Howto]Conky에서 Gmail 알림 사용하는 방법

Conky는 윈도우에 사무라이즈 와 같은 프로그램입니다. 시스템 정보를 바탕화면에 표현해 줍니다. 요즘의 위젯과 비슷한 기능 이지만 텍스트와 그래프 등으로 이루어진 간단한 정보를 표현하기 위해 사용합니다.
[attachment=0:2d7k5010]conky.jpg[/attachment:2d7k5010]
이것이 conky입니다. 간단하게 커널의 정보와 cpu, 메모리등을 표현해 줍니다.
자세한 표현방법은 http://wiki.kldp.org/wiki.php/Conky 위키에 나와 있습니다.

우분투에서 conky의 설치법은

시작 –> 시스템 –> 관리 –> 시냅틱 꾸러미 관리자

시냅틱 꾸러미 관리자에서 검색을 클릭한 후
conky를 검색합니다.
conky가 나오면 클릭 하시고 적용을 누르시면 설치가 가능합니다.
또는
sudo apt-get install conky 명령을 터미널에서 직접 타이핑 하셔도 됩니다.

conky의 설정 파일 이름은

".conkyrc" 입니다. 이 파일을 고쳐 주시면 다양한 conky의 모양이나 표현을 설정하실 수 있습니다.

그럼 Gmail알림을 사용해보도록 합시다.
conky만을 이용해 gmail알림을 사용하진 못하고 쉘스크립트를 이용해야 합니다.

".conkyrc" 파일 내에 메일을 표현할 수 있는 출력값을 넣어 줍니다.

[i:2d7k5010]TEXT 아래에 입력[/i:2d7k5010]

[code:2d7k5010]${color1}GMail: ${color}You have ${color3}${texeci 100 python ~/.scripts/gmail.py} ${color}new email(s).
${execi 100 python ~/.scripts/gmail_subj.py}[/code:2d7k5010]

다음 에디터를 사용해 gmail.py라는 파일을 만들어야 합니다.
제목은 gmail.py로 설정해 주시고 저장 경로는 ~/.scripts/gmail.py 로 해주시면 됩니다.

[i:2d7k5010]gmail.py[/i:2d7k5010]

[code:2d7k5010]import os
import string

#Enter your username and password below within double quotes

eg. username="username" and password="password"

username="<username>"
password="<password>"

com="wget -O - https://"+username+":"+password+"@mail.google.com/mail/feed/atom --no-check-certificate"

temp=os.popen(com)
msg=temp.read()
index=string.find(msg,"<fullcount>")
index2=string.find(msg,"</fullcount>")
fc=int(msg[index+11:index2])

if fc==0:
print "no"
else:
print str(fc)
[/code:2d7k5010]

위의 코드 중 "<username>"을 지우시고 자신의 메일 주소를 넣어줍니다.
ex> username="dostevskii@gmail.com"
비밀 번호도 마찬가지로 설정해 주십시오.
그리고 나서 다시한번 username과 password를 입력해야합니다.

com="wget -O - https://"+username+":"+password+"@mail.google.com/mail/feed/atom --no-check-certificate"
ex> com="wget -O - https://dostevskii:xxxxxxxx@mail.google … /feed/atom --no-check-certificate"

위와 같은 식 입니다. password 부분은 자신의 gmail 비밀 번호를 입력해 주시면 되겠습니다.

두번째로 파일을 하나 더 만듭시다.
[i:2d7k5010]gmail_subj.py[/i:2d7k5010]
자장 경로도 gmail.py와 같습니다. ~/.scripts/gmail_subj.py

[code:2d7k5010]import os
import string

#Enter your username and password below within double quotes

eg. username="username" and password="password"

username="<username>"
password="<password>"

com="wget -O - https://"+username+":"+password+"@mail.google.com/mail/feed/atom --no-check-certificate"

temp=os.popen(com)
msg=temp.read()
index=string.find(msg,"<fullcount>")
index2=string.find(msg,"</fullcount>")
fc=int(msg[index+11:index2])

if fc==0:
print ""
else:

vars

intChars = 35 # the number of characters displayed of long subjects
intLimitedSubjects = 0 # 0,1 - disable,enable limiting of displayed subjects
intSubjects = 2 # subjects to display if limiting of displayed subjects is enabled

open the output to read

temp=os.popen(com)
msg=temp.read()

find and display the subjects of the messages

for i in range(1,fc+1): # run for every new email message
# find...
if i != 1: # delete part of the output that has been searched
msg=msg[index2+17:]
index=string.find(msg,"<entry><title>")
index2=string.find(msg,"</title><summary>")
fs=msg[index+14:index2]
msg=msg[index2+15:]
index=string.find(msg,"<author><name>")
index2=string.find(msg,"</name><email>")
ff=msg[index+14:index2]
# these 3 rules are a modification of their original counterparts

  # display&#46;&#46;&#46;
  message = &quot;\&quot;&quot; + fs&#91;&#58;intChars&#93; # display &quot; and first 35 chars of subject
  if len(fs) &gt; intChars&#58;
     message += &quot;&#46;&#46;&#46;&quot; # add '&#46;&#46;&#46;' when subject is longer than 35 chars
  print &quot;From &quot; + ff + &quot;&#58;\n&quot; + message + &quot;\&quot;&quot; # add the end &quot; to the message

  # Limiting of displayed subjects
  if intLimitedSubjects == 1&#58;
     if i &gt;= intSubjects&#58;
        print str(intSubjects) + &quot; out of &quot; + str(fc) + &quot; new messages shown&#46;&quot;
        break
     else&#58;
        continue
  else&#58;
     continue

[/code:2d7k5010]

gmail.py와 같은 방법으로 username과 password를 넣어 줍니다.

그리고 나서 conky를 작동 시키게 되면 메일을 체크하고 표현해 줍니다.

  • conky를 컴퓨터를 켤때마다 자동으로 켜지게 하고싶다면?

시작 –> 시스템 –> 기본설정 –> 세션

시작프로그램(Startup Programs)탭의 더하기(Add)를 누릅니다.

이름 : Conky
명령 : conky
코멘트 : 바탕화면에 시스템 정보를 표시합니다.

확인을 클릭하시면 다음 시작 부터 conky가 자동 시작되게 됩니다.
윈도우의 시작 프로그램과 같은 작업을 합니다.

원본글 : http://ubuntuforums.org/showthread.php?t=631157

[quote="raskolnikov":w64qz6y4]gmail.py
Code:
import os
import string

#Enter your username and password below within double quotes

eg. username="username" and password="password"

username="<username>"
password="<password>"

com="wget -O - https://"+username+":"+password+"@mail.google.com/mail/feed/atom --no-check-certificate"

temp=os.popen(com)
msg=temp.read()
index=string.find(msg,"<fullcount>")
index2=string.find(msg,"</fullcount>")
fc=int(msg[index+11:index2])

if fc==0:
print "no"
else:
print str(fc)[/quote:w64qz6y4]
raskolnikov님, 팁 잘 보고 있습니다. 위 코드(?)에서는 <username>과 <password>만 수정하면 이것이 변수에 저장되어 아래 문구에도 적용이 되는 것 같습니다. 태클 :shock: 은 아니고요, 그냥 읽다가 궁금해서요… :lol:

전 개인적으로 구글앱스를 이용하여 개인 도메인으로 된 이메일을 사용하는데 이와 연결하여 사용하는 방법은 따로 없나요? 지식이 짧은 건지 영어가 짧은 건지 잘 못 찾겠네요~ :cry:

gmail에서의 데이터 양식이 좀 바뀐건지, 저의 경우에는 raskolnikov님이 올려주신 gmail_sub.py파일을 약간 수정해야 돌아가더군요.

index=string.find(msg,"<author>\n<name>") <----이런식으로 \n 추가

파이썬 공부한지 몇일 안되었지만, gmail_subj.py를 약간 재미로 수정해봤습니다(regular expression연습용 ^^;:wink:
메일이 0, 1, 2개일 경우에는 테스트가 되었는데, 더 많은 경우에는 아직 장담은 못하겠네요.
버그가 혹시나 존재하면, 다시 수정하도록 하겟습니다 ㅠㅠ

[code:2t6pwubb]
#!/usr/bin/env python
import os
import re

#Enter your username and password below within double quotes

eg. username="username" and password="password"

username = "아이디"
password = "암호"

com="wget -O - https://"+username+":"+password+"@mail.google.com/mail/feed/atom --no-check-certificate"

temp = os.popen(com)
msg = temp.read()

count number of new mails, and save it at fc

match = re.search(r"<fullcount>(\d)</fullcount>", msg)
fc = int(match.group(1))

if fc != 0:
# vars
intChars = 65 # the number of characters displayed of long subjects
intLimitedSubjects = 0 # 0,1 - disable,enable limiting of displayed subjects
intSubjects = 5 # subjects to display if limiting of displayed subjects is enabled

# find and display the sender &amp; title the messages
name_match = re&#46;search(r'&lt;name&gt;(&#46;*)&lt;/name&gt;\n'+('&#46;*\n'*11+'&lt;name&gt;(&#46;*)&lt;/name&gt;\n')*(fc-1), msg)
title_match = re&#46;search(r'&lt;entry&gt;\n&lt;title&gt;(&#46;*)&lt;/title&gt;\n'+('&#46;*\n'*11+'&lt;title&gt;(&#46;*)&lt;/title&gt;\n')*(fc-1), msg)

for i in range(1,fc+1)&#58;
    if intLimitedSubjects == 1 and i &gt; intSubjects&#58; break
    name  = name_match&#46;group(i)
    title = title_match&#46;group(i)
    if len(title) &gt; intChars&#58;
        title = title&#91;0&#58;intChars&#93; + &quot;&#46;&#46;&#46;&quot; # add &quot;&#46;&#46;&#46;&quot; if length &gt; intChars

    print 'From ' + name + '&#58; &quot;' + title + '&quot;' 

if intLimitedSubjects == 1 and fc &gt; intSubjects&#58;
    print str(intSubjects) + &quot; out of &quot; + str(fc) + &quot;new messages shown&#46;&quot;

[/code:2t6pwubb]