Bonjour,

sous Fedora Cinnamon, nous ne pouvons pas désinstaller une application via le menu de Cinnamon. Cette fonctionnalité n’est disponible que sous Linux Mint. Or, je viens de trouver sur le net un script provenant de la communauté Manjaro permettant de réaliser cette chose.

Voici le lien concernant ce script. Malheureusement, certaines commandes proviennent de pacman. Or, je ne connais pas d’équivalent sous Fedora pour celles-ci (exemple : pacman -Qoq et pacman -Rpc). Concernant la commande pacman -Rc, elle équivaut à dnf remove ou autoremove. Et le –noconfirm à –assumeno.

Si l’un d’entre vous est spécialiste de Python, peut-être pourrait-il l’adapter pour Fedora Cinnamon ?

Remarque: je vous fourni le script provenant de Linux Mint :

 #!/usr/bin/python3
 import gettext
 import os
 import subprocess
 import sys
 import gi
 gi.require_version('Gtk', '3.0')
 from gi.repository import Gtk
 import mintcommon.aptdaemon
 \# i18n
 gettext.install("mint-common", "/usr/share/linuxmint/locale")
 class MintRemoveWindow:

 def __init__(self, desktopFile):
     self.desktopFile = desktopFile
     process = subprocess.run(["dpkg", "-S", self.desktopFile], stdout=subprocess.PIPE)
     output = process.stdout.decode("utf-8")
     package = output[:output.find(":")].split(",")[0]
     if process.returncode != 0:
         if not self.try_remove_flatpak(desktopFile):
             warnDlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.YES_NO, _("This menu item is not associated to any package. Do you want to remove it from the menu anyway?"))
             warnDlg.set_keep_above(True)
             warnDlg.get_widget_for_response(Gtk.ResponseType.YES).grab_focus()
             warnDlg.vbox.set_spacing(10)
             response = warnDlg.run()
             if response == Gtk.ResponseType.YES:
                 print ("removing '%s'" % self.desktopFile)
                 subprocess.run(["rm", "-f", self.desktopFile])
                 subprocess.run(["rm", "-f", "%s.desktop" % self.desktopFile])
             warnDlg.destroy()
         sys.exit(0)
     warnDlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK_CANCEL, _("The ollowing  packages will be removed:"))
     warnDlg.set_keep_above(True)
     warnDlg.get_widget_for_response(Gtk.ResponseType.OK).grab_focus()
     warnDlg.vbox.set_spacing(10)
     treeview = Gtk.TreeView()
     column1 = Gtk.TreeViewColumn(_("Packages to be removed"))
     renderer = Gtk.CellRendererText()
     column1.pack_start(renderer, False)
     column1.add_attribute(renderer, "text", 0)
     treeview.append_column(column1)
     packages = []
     model = Gtk.ListStore(str)
     dependenciesString = subprocess.getoutput("apt-get -s -q remove " + package + " | grep Remv")
     dependencies = dependenciesString.split("\\n")
     for dependency in dependencies:
         dependency = dependency.replace("Remv ", "")
         model.append([dependency])
         packages.append(dependency.split()[0])
     treeview.set_model(model)
     treeview.show()
     scrolledwindow = Gtk.ScrolledWindow()
     scrolledwindow.set_shadow_type(Gtk.ShadowType.ETCHED_OUT)
     scrolledwindow.set_size_request(150, 150)
     scrolledwindow.add(treeview)
     scrolledwindow.show()
     warnDlg.get_content_area().add(scrolledwindow)
     self.apt = mintcommon.aptdaemon.APT(warnDlg)
     response = warnDlg.run()
     if response == Gtk.ResponseType.OK:
         self.apt.set_finished_callback(self.on_finished)
         self.apt.remove_packages(packages)
     elif response == Gtk.ResponseType.CANCEL:
         sys.exit(0)
     warnDlg.destroy()
 def try_remove_flatpak(self, desktopFile):
     if not "flatpak" in desktopFile:
         return False
     if not os.path.exists('/usr/bin/mintinstall-remove-app'):
         return False
     flatpak_remover = subprocess.Popen(['/usr/bin/mintinstall-remove-app', desktopFile])
     retcode = flatpak_remover.wait()
     return retcode == 0
 def on_finished(self, transaction=None, exit_state=None):
     sys.exit(0)
 if **__name**__ == "**__main**__":
 # Exit if the given path does not exist
 if len(sys.argv) < 2 or not os.path.exists(sys.argv[1]):
     sys.exit(1)
 mainwin = MintRemoveWindow(sys.argv[1])
Gtk.main()

A comparer avec celui provenant du site Manjaro. La commande : if name == “main” comporte 2 underscore pour name et main comme indiqué dans le script pour Manjaro.

Edit Nicosss : Correction balises Markdown -> Voir FAQ

L’équivalent de ton pacman -Rpc qui veut dire -R, –remove -p, –file -c, –cascade c’est rpm.

Pour ton script il faudrait changer les répertoires et les programmes comme pacman ou mintinstall.

Sinon mon, avis c’est totalement contre productif comme programme et surtout ça va te désinstaller les dépendances sans que tu ne le vois avant, bref ne t’étonnes pas après que ton système ne fonctionne plus. Alors que tu peux utiliser dnfdragora si tu veux une appli. graphique ou sudo dnf en terminal.
My 2 cents.