Desktop app maintainers: Please check for StartupNotify=true

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux