403Webshell
Server IP : 107.13.46.68  /  Your IP : 216.73.216.11
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux mariOS 6.8.0-51-generic #52-Ubuntu SMP PREEMPT_DYNAMIC Thu Dec 5 13:09:44 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /bin/mint-remove-flatpak
#!/usr/bin/python3

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GLib, Gdk

import sys
import os
import gettext
import subprocess

from pathlib import Path
from mintcommon.installer import installer
from mintcommon.installer import dialogs
from mintcommon.installer.misc import check_ml

# i18n
gettext.install("mintinstall", "/usr/share/linuxmint/locale")

class AppUninstaller:
    def __init__(self, desktopFile):
        self.desktopFile = desktopFile

        self.error = None
        self.installer = installer.Installer().init(self.on_installer_ready)
        self.progress_window = None
        self.progress_bar = None
        self.pkg_name = None

    def on_installer_ready(self):
        pkg_name = self.get_fp_name()

        if pkg_name is None:
            print("Package for '%s' not found" % self.desktopFile)
            self.on_finished(None, 1)

        self.pkginfo = self.installer.find_pkginfo(pkg_name)

        if self.pkginfo and self.installer.pkginfo_is_installed(self.pkginfo):
            self.installer.select_pkginfo(self.pkginfo,
                                          self.on_installer_info_ready, None,
                                          self.on_uninstall_complete, self.on_uninstall_progress, use_mainloop=True)
        else:
            print("Package '%s' is not installed" % pkg_name)
            self.on_uninstall_complete(None)

    def on_installer_info_ready(self, task):
        self.task = task
        if self.installer.confirm_task(task):
            self.installer.execute_task(task)
        else:
            print("cancel task")
            self.installer.cancel_task(task)

    def on_uninstall_progress(self, pkginfo, progress, estimating, status_text=None):
        if self.progress_window is None:
            self.progress_window = Gtk.Dialog()
            self.progress_window.set_default_size(400, -1)
            self.progress_window.set_title(_("Removing"))
            self.progress_window.connect("delete-event", self.dialog_delete_event)

            box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, valign=Gtk.Align.CENTER)
            self.progress_window.get_content_area().pack_start(box, True, True, 0)

            self.pkg_name = Gtk.Label(max_width_chars=45, wrap=True)
            box.pack_start(self.pkg_name, True, False, 6)
            spinner = Gtk.Spinner(active=True)
            spinner.set_size_request(36, 36)
            box.pack_start(spinner, True, False, 0)
            box.show_all()
            self.pkg_name.set_label(pkginfo.get_display_name())

            self.progress_window.run()

    def dialog_delete_event(self, widget, event):
        self.installer.cancel_task(self.task)

    def on_installer_info_error(self, task):
        pass

    def get_fp_name(self):
        path = Path(self.desktopFile)

        if "flatpak" not in path.parts:
            return None

        return path.stem

    def on_uninstall_complete(self, task):
        if task.error_message:
            print("Could not remove %s: %s" % (task.pkginfo.name, task.error_message))

        if self.progress_window is not None:
            # let the window be visible long enough to know what it's doing (uninstalls are fast)
            Gdk.threads_add_timeout_seconds(GLib.PRIORITY_DEFAULT, 1, self.destroy_window, None)

        Gtk.main_quit()

    def destroy_window(self, data=None):
        self.progress_window.destroy()
        return False

if __name__ == "__main__":

    # Exit if the given path does not exist
    if len(sys.argv) < 2 or not os.path.exists(sys.argv[1]) or not sys.argv[1].endswith(".desktop"):
        print("mint-remove-flatpak: Single argument required, the full path of a desktop file.")
        sys.exit(1)

    mainwin = AppUninstaller(sys.argv[1])
    Gtk.main()

    exit(1 if mainwin.error else 0)

Youez - 2016 - github.com/yon3zu
LinuXploit