Hi, For GNOME 3 to more reliably do application tracking, we will be associating through startup-notification. Some background here: http://lists.freedesktop.org/archives/xdg/2010-February/011321.html However for startup notification to work, for compatibility reasons, the upstream .desktop file must have StartupNotify=true. It's come to my attention that a lot of .desktop files are missing this, even though they use GTK+. I've written a quick script which heuristically examines installed apps (attached); if someone writes the script which checks the whole repository, that'd be cool. If you maintain a desktop app, please check for StartupNotify=true, and if your app uses GTK+ or Qt, then please submit a patch *upstream* to add it, and at your option apply that patch in Fedora. Here's sample output from the script on my workstation, which shows a vast swath of system-config-* missing it; others of these are false positives since they're not user-visible apps. [walters@megatron gtk+ (master)]$ ~/bin/verify-startupnotify.py '/usr/share/applications/system-config-date.desktop' probably needs StartupNotify=true '/usr/share/applications/nm-pptp.desktop' probably needs StartupNotify=true '/usr/share/applications/emacs.desktop' probably needs StartupNotify=true '/usr/share/applications/nm-openvpn.desktop' probably needs StartupNotify=true '/usr/share/applications/mimeinfo.cache' probably needs StartupNotify=true '/usr/share/applications/system-config-boot.desktop' probably needs StartupNotify=true '/usr/share/applications/redhat-userinfo.desktop' probably needs StartupNotify=true '/usr/share/applications/livna-config-display.desktop' probably needs StartupNotify=true '/usr/share/applications/redhat-authconfig.desktop' probably needs StartupNotify=true '/usr/share/applications/mount-archive.desktop' probably needs StartupNotify=true '/usr/share/applications/fedora-liveusb-creator.desktop' probably needs StartupNotify=true '/usr/share/applications/virt-manager.desktop' probably needs StartupNotify=true '/usr/share/applications/mutter.desktop' probably needs StartupNotify=true '/usr/share/applications/palimpsest.desktop' probably needs StartupNotify=true '/usr/share/applications/redhat-userpasswd.desktop' probably needs StartupNotify=true '/usr/share/applications/gnome-shell.desktop' probably needs StartupNotify=true '/usr/share/applications/spring-installer.desktop' probably needs StartupNotify=true '/usr/share/applications/redhat-system-control-network.desktop' probably needs StartupNotify=true '/usr/share/applications/fedora-empathy.desktop' probably needs StartupNotify=true '/usr/share/applications/ca-installer.desktop' probably needs StartupNotify=true '/usr/share/applications/jpackage-logfactor5.desktop' probably needs StartupNotify=true '/usr/share/applications/redhat-email.desktop' probably needs StartupNotify=true '/usr/share/applications/paperbox.desktop' probably needs StartupNotify=true '/usr/share/applications/fedora-vagalume.desktop' probably needs StartupNotify=true '/usr/share/applications/eclipse.desktop' probably needs StartupNotify=true '/usr/share/applications/javaws.desktop' probably needs StartupNotify=true '/usr/share/applications/redhat-web.desktop' probably needs StartupNotify=true '/usr/share/applications/my-default-printer.desktop' probably needs StartupNotify=true '/usr/share/applications/system-config-users.desktop' probably needs StartupNotify=true '/usr/share/applications/transmission.desktop' probably needs StartupNotify=true '/usr/share/applications/nvidia-settings.desktop' probably needs StartupNotify=true '/usr/share/applications/springlobby.desktop' probably needs StartupNotify=true '/usr/share/applications/redhat-system-config-network.desktop' probably needs StartupNotify=true '/usr/share/applications/metacity.desktop' probably needs StartupNotify=true '/usr/share/applications/qt4-qtconfig.desktop' probably needs StartupNotify=true '/usr/share/applications/gnome-glade-2.desktop' probably needs StartupNotify=true '/usr/share/applications/spring.desktop' probably needs StartupNotify=true '/usr/share/applications/compiz-gtk.desktop' probably needs StartupNotify=true '/usr/share/applications/jpackage-chainsaw.desktop' probably needs StartupNotify=true '/usr/share/applications/mozilla-thunderbird.desktop' probably needs StartupNotify=true '/usr/share/applications/nm-connection-editor.desktop' probably needs StartupNotify=true '/usr/share/applications/alacarte.desktop' probably needs StartupNotify=true '/usr/share/applications/nm-vpnc.desktop' probably needs StartupNotify=true '/usr/share/applications/redhat-usermount.desktop' probably needs StartupNotify=true '/usr/share/applications/defaults.list' probably needs StartupNotify=true '/usr/share/applications/manage-print-jobs.desktop' probably needs StartupNotify=true [walters@megatron gtk+ (master)]$
#!/usr/bin/python import os import sys import subprocess import StringIO startup_notification_implementors = ['libgtk-x11-2.0.so.0()', 'libQtGui.so.4()'] for filename in os.listdir('/usr/share/applications'): filepath = '/usr/share/applications/'+ filename if not os.path.isfile(filepath): continue f = open(filepath) has_startupnotify = False binary = None for line in f: if line.startswith('StartupNotify=true'): has_startupnotify = True break if has_startupnotify: continue pkg = subprocess.Popen(['rpm', '-qf', filepath], stdout=subprocess.PIPE, stderr=sys.stderr).communicate()[0] uses_implementor = False for line in StringIO.StringIO(subprocess.Popen(['rpm', '-q', '--requires', pkg], stdout=subprocess.PIPE, stderr=sys.stderr).communicate()[0]): for implementor in startup_notification_implementors: if line.startswith(implementor): uses_implementor = True break if not uses_implementor: print "%r probably needs StartupNotify=true" % (filepath, )
-- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel