diff -uNr a/popper_config.py b/popper_config.py --- a/popper_config.py 2010-12-03 23:58:31.126132000 +0800 +++ b/popper_config.py 2010-12-04 01:33:07.209999955 +0800 @@ -394,7 +394,7 @@ start, end = self.filter_text.get_bounds() cfg.set('filter', 'filter_text', self.filter_text.get_text(start, end)) - cfg_file = user_folder + ".popper/popper.cfg" # folder: /home/user/.popper/popper.cfg + cfg_file = os.path.join(popper_configdir, "popper.cfg") # folder: $XDG_CONFIG_HOME/popper/popper.cfg with open(cfg_file, 'wb') as configfile: cfg.write(configfile) headline = self.headline.get_text() # always write headline.. @@ -639,7 +639,7 @@ dialog = gtk.FileChooserDialog("Open..", None, \ gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, \ gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) # create file dialog - dialog.set_current_folder(user_folder + ".popper") # set default folder + dialog.set_current_folder(os.path.expanduser("~")) # set default folder dialog.set_default_response(gtk.RESPONSE_OK) # set default button to OK response = dialog.run() # show file dialog if response == gtk.RESPONSE_OK: # if OK clicked @@ -816,7 +816,7 @@ def read_config(): # read config file or create it cfg = ConfigParser.RawConfigParser() - cfg_file = user_folder + ".popper/popper.cfg" # folder: /home/user/.popper/popper.cfg + cfg_file = os.path.join(popper_configdir, "popper.cfg") # folder: $XDG_CONFIG_HOME/popper/popper.cfg if not os.path.exists(cfg_file): # create a fresh config file cfg.add_section('general') cfg.set('general', 'autostart', 1) @@ -919,7 +919,7 @@ def update_desktop_file(headline): desktop_content = "[Desktop Entry]\nEncoding=UTF-8\nName=%s\nIcon=applications-email-panel\nType=Application\nCategories=Network;\nExec=popper.py\nStartupNotify=false\nTerminal=false" % headline - desktop_file = user_folder + ".popper/popper.desktop" # folder: /home/user/.popper/popper.desktop + desktop_file = os.path.join(popper_configdir, "popper.desktop") # folder: #XDG_CONFIG_HOME/popper/popper.desktop f = open(desktop_file,'w') f.write(desktop_content) f.close() @@ -928,8 +928,8 @@ # Autostart ============================================================ def create_autostart(): - curdir = os.getcwd() # get working directory - exec_file = os.path.join(curdir, "popper.sh") # path of the shell script to start popper.py + curdir = os.getcwd() # get working directory + exec_file = os.path.join(curdir, "popper.sh") # path of the shell script to start popper.py content = "\n" + \ "[Desktop Entry]\n" + \ @@ -941,26 +941,26 @@ "Name=Popper\n" + \ "Comment=Email notifier for the indicator menu" - autostart_folder = "%s/.config/autostart/" % (user_folder) + autostart_folder = os.path.join(xdg_configdir, "autostart") if not os.path.exists(autostart_folder): - os.popen("mkdir -p " + autostart_folder) - autostart_file = autostart_folder + "popper.sh.desktop" + os.makedirs(autostart_folder, 0700) + autostart_file = os.path.join(autostart_folder, "popper.sh.desktop") f = open(autostart_file, 'w') f.write(content) # create it f.close() def delete_autostart(): - autostart_folder = "%s/.config/autostart/" % (user_folder) - autostart_file = autostart_folder + "popper.sh.desktop" + autostart_folder = os.path.join(xdg_configdir, "autostart") + autostart_file = os.path.join(autostart_folder, "popper.sh.desktop") if os.path.exists(autostart_file): - os.popen("rm " + autostart_file) # delete it + os.remove(autostart_file) # delete it # Main ================================================================= def main(): - global cfg, user_folder, keyring, VERSION + global cfg, xdg_configdir, popper_configdir, keyring, VERSION VERSION = "0.24" try: @@ -972,10 +972,10 @@ gettext.textdomain('popper_config') _ = gettext.gettext - user_folder = "/home/%s/" % (os.popen("whoami").read()[:-1]) # folder: /home/user/ - popper_folder = user_folder + ".popper" # folder: /home/user/.popper - if not os.path.exists(popper_folder): - os.popen("mkdir -p " + popper_folder) # create: "/home/user/.popper" if not exists + xdg_configdir = glib.get_user_config_dir() # folder: $XDG_CONFIG_HOME + popper_configdir = os.path.join(xdg_configdir, "popper") # folder: $XDG_CONFIG_HOME/popper + if not os.path.exists(popper_configdir): + os.makedirs(popper_configdir, 0700) # create: "$XDG_CONFIG_HOME/popper" if not exists cfg = read_config() # get configurations keyring = Keyring() diff -uNr a/popper_config.sh b/popper_config.sh --- a/popper_config.sh 2010-12-03 23:58:31.126132000 +0800 +++ b/popper_config.sh 2010-12-04 02:33:31.317999949 +0800 @@ -1,17 +1,21 @@ #!/bin/bash -if [ ! -d ~/.popper ]; then - mkdir ~/.popper -fi -if [ -f ~/.popper/popper_config.log ]; then - rm ~/.popper/popper_config.log -fi + +[ ! "$XDG_CONFIG_HOME" ] && XDG_CONGIF_HOME=~/.config +[ ! "$XDG_CACHE_HOME" ] && XDG_CACHE_HOME=~/.cache +popper_configdir="$XDG_CONFIG_HOME"/popper +popper_cachedir="$XDG_CACHE_HOME"/popper + +popper_log="$popper_cachedir"/popper_config.log +popper_config_log="$popper_cachedir"/popper.log +popper_pid="$popper_configdir"/popper.pid + +mkdir -p "$popper_configdir" +mkdir -p "$popper_cachedir" cd `dirname $0` -python popper_config.py >> ~/.popper/popper_config.log 2>&1 -# Restart Popper.py -if [ -f ~/.popper/popper.pid ]; then - kill $(cat ~/.popper/popper.pid) -fi -if [ -f ~/.popper/popper.log ]; then - rm ~/.popper/popper.log +python popper_config.py > "$popper_config_log" 2>&1 + +# Restart Popper.py and log if popper.py is running and runned by popper.sh +if [ -e "$popper_pid" ] && [ -e "$popper_log" ]; then + kill $(cat "$popper_pid") + python popper.py > "$popper_log" 2>&1 fi -python popper.py >> ~/.popper/popper.log 2>&1 diff -uNr a/popper.py b/popper.py --- a/popper.py 2010-12-03 23:58:31.126132000 +0800 +++ b/popper.py 2010-12-04 01:34:21.851999979 +0800 @@ -39,7 +39,7 @@ import pynotify import indicate import gobject -import gtk +import gtk, glib import time import email from email.header import decode_header @@ -380,14 +380,14 @@ def write_pid(): # write Popper's process id to file - pid_file = user_path + 'popper.pid' + pid_file = os.path.join(popper_configdir, 'popper.pid') f = open(pid_file, 'w') f.write(str(os.getpid())) # get PID and write to file f.close() def delete_pid(): # delete file popper.pid - pid_file = user_path + 'popper.pid' + pid_file = os.path.join(popper_configdir, 'popper.pid') if os.path.exists(pid_file): os.popen("rm " + pid_file) # delete it @@ -414,7 +414,7 @@ self.limit = 7 # max. indicator menu entries self.messages = [] # empty message list self.reminder = Reminder() # create Reminder object - desktop_file = os.path.join(user_path, "popper.desktop") # path of the desktop file + desktop_file = os.path.join(popper_configdir, "popper.desktop") # path of the desktop file self.server = indicate.indicate_server_ref_default() # create indicator server self.server.set_type("message.mail") self.server.set_desktop_file(desktop_file) @@ -848,7 +848,7 @@ def load(self): # load last known messages from popper.dat remember = cfg.get('indicate', 'remember') - dat_file = user_path + 'popper.dat' + dat_file = os.path.join(popper_configdir, 'popper.dat') we_have_a_file = os.path.exists(dat_file) # check if file exists if remember == '1' and we_have_a_file: f = open(dat_file, 'r') # open file again @@ -863,7 +863,7 @@ def save(self, mail_list): # save mail ids to file - dat_file = user_path + 'popper.dat' + dat_file = os.path.join(popper_configdir, 'popper.dat') f = open(dat_file, 'w') # open the file for overwrite for m in mail_list: try: @@ -904,7 +904,7 @@ # Main ================================================================= def main(): - global cfg, user_path, mailserver, indicator, autostarted, firstcheck + global cfg, popper_configdir, mailserver, indicator, autostarted, firstcheck try: # Internationalization locale.setlocale(locale.LC_ALL, '') # locale language, e.g.: de_CH.utf8 @@ -914,14 +914,14 @@ gettext.bindtextdomain('popper', 'locale') gettext.textdomain('popper') - user_path = "/home/%s/.popper/" % (os.popen("whoami").read()[:-1]) # set path to: "/home/user/.popper/" + popper_configdir = os.path.join(glib.get_user_config_dir(), "popper") # set path to: "$XDG_CONFIG_HOME/popper/" autostarted = False # default setting for command line argument cmdline = sys.argv # get command line arguments if len(cmdline) > 1: # do we have something in command line? if cmdline[1] == 'autostarted': autostarted = True write_pid() # write Popper's process id to file - cfg = read_config(user_path + 'popper.cfg') # get configuration from file + cfg = read_config(os.path.join(popper_configdir, 'popper.cfg')) # get configuration from file mailserver = MailServer() # create MailServer object if mailserver.keyring_was_locked: firstcheck = False # required for correct sortorder in indi menu diff -uNr a/popper.sh b/popper.sh --- a/popper.sh 2010-12-03 23:58:31.126132000 +0800 +++ b/popper.sh 2010-12-04 02:29:08.954999949 +0800 @@ -1,7 +1,10 @@ #!/bin/bash -if [ -f ~/.popper/popper.log ]; then - rm ~/.popper/popper.log -fi + +[ ! "$XDG_CACHE_HOME" ] && XDG_CACHE_HOME=~/.cache +popper_cachedir="$XDG_CACHE_HOME"/popper +popper_log="$popper_cachedir"/popper.log + +mkdir -p "$popper_cachedir" cd `dirname $0` -python popper.py autostarted >> ~/.popper/popper.log 2>&1 +python popper.py autostarted > "$popper_log" 2>&1