/usr/lib/python3/dist-packages/DistUpgrade
NameSizeModeActions
__pycache__/-0755rm
apt_btrfs_snapshot.py98730644editdlrm
apt_clone.py335930644editdlrm
dist-upgrade.py1290644editdlrm
distro.py237050644editdlrm
DistUpgradeApport.py50640644editdlrm
DistUpgradeAptCdrom.py126900644editdlrm
DistUpgradeCache.py544130644editdlrm
DistUpgradeConfigParser.py38370644editdlrm
DistUpgradeController.py1038350644editdlrm
DistUpgradeFetcher.py60090644editdlrm
DistUpgradeFetcherCore.py114720644editdlrm
DistUpgradeFetcherKDE.py99500644editdlrm
DistUpgradeFetcherSelf.py20640644editdlrm
DistUpgradeGettext.py30430644editdlrm
DistUpgradeMain.py93170644editdlrm
DistUpgradePatcher.py40180644editdlrm
DistUpgradeQuirks.py467610644editdlrm
DistUpgradeVersion.py210644editdlrm
DistUpgradeView.py168230644editdlrm
DistUpgradeViewGtk3.py346670644editdlrm
DistUpgradeViewKDE.py431220644editdlrm
DistUpgradeViewNonInteractive.py138620644editdlrm
DistUpgradeViewText.py128290644editdlrm
GtkProgress.py40200644editdlrm
MetaRelease.py174680644editdlrm
QUrlOpener.py33210644editdlrm
ReleaseNotesViewer.py76580644editdlrm
ReleaseNotesViewerWebkit.py29830644editdlrm
SimpleGtk3builderApp.py20560644editdlrm
SimpleGtkbuilderApp.py20370644editdlrm
telemetry.py34780644editdlrm
utils.py183490644editdlrm
xorg_fix_proprietary.py40830644editdlrm
__init__.py00644editdlrm
Edit: /usr/lib/python3/dist-packages/DistUpgrade/QUrlOpener.py (3321B)
# QUrlOpener.py # -*- Mode: Python; indent-tabs-mode: nil; tab-width: 4; coding: utf-8 -*- # # Copyright (c) 2014-2018 Harald Sitter # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . try: # 14.04 has a broken pyqt5, so don't even try to import it and require # pyqt4. # In 14.04 various signals in pyqt5 can not be connected because it thinks # the signal does not exist or has an incompatible signature. Since this # potentially renders the GUI entirely broken and pyqt5 was not actively # used back then it is fair to simply require qt4 on trusty systems. from .utils import get_dist if get_dist() == 'trusty': raise ImportError from PyQt5.QtCore import QObject, QCoreApplication, pyqtSlot, QUrl from PyQt5.QtGui import QDesktopServices except ImportError: from PyQt4.QtCore import QObject, QCoreApplication, pyqtSlot, QUrl from PyQt4.QtGui import QDesktopServices import os import subprocess def singleton(class_): instances = {} def instance(*args, **kwargs): if class_ not in instances: instances[class_] = class_(*args, **kwargs) return instances[class_] return instance @singleton class QUrlOpener(QObject): def __init__(self): QObject.__init__(self) self.setParent(QCoreApplication.instance()) def setupUrlHandles(self): # Make sure we don't run a root browser. # NOTE: Qt native API can set an openUrl handler from a QObject # function, pyqt in theory also allows an arbitrary callable. Latter # has been observed to be non-functional so rely on the native handling QDesktopServices.setUrlHandler('http', self, 'openUrl') QDesktopServices.setUrlHandler('https', self, 'openUrl') # NOTE: largely code copy from ReleaseNotesViewer which imports GTK. @pyqtSlot(QUrl) def openUrl(self, url): url = url.toString() """Open the specified URL in a browser""" # Find an appropiate browser if os.path.exists("/usr/bin/xdg-open"): command = ["xdg-open", url] elif os.path.exists("/usr/bin/kde-open"): command = ["kde-open", url] elif os.path.exists("/usr/bin/exo-open"): command = ["exo-open", url] elif os.path.exists('/usr/bin/gnome-open'): command = ['gnome-open', url] else: command = ['x-www-browser', url] # Avoid to run the browser as user root if os.getuid() == 0 and 'SUDO_USER' in os.environ: command = ['sudo', '--set-home', '-u', os.environ['SUDO_USER']] + command subprocess.Popen(command)