web-dev-qa-db-fra.com

Ajouter un élément dans le menu contextuel dans Dolphin

Est-il possible d'ajouter de nouveaux éléments dans le menu contextuel dans Dolphin (KDE Plasma) si je fais un clic droit sur quelque chose?

Je voudrais créer un script appelé Déplacer vers les applications , qui affichera niquement si je clique avec le bouton droit sur un . desktop file puis il le déplacera vers /usr/share/applications/ dossier. Ou existe-t-il un moyen plus rapide de déplacer les fichiers . Desktop vers /usr/share/applications/ dossier.

3
tomsk

Vous pouvez créer un Menu Service pour faire ce que vous voulez.

  • Créez le dossier ~/.local/share/kservices5
  • Créez le dossier ~/.local/share/kservices5/ServiceMenus
  • Dans ~/.local/share/kservices5/ServiceMenus créez un fichier de texte brut appelé move.desktop

Collez le contenu suivant dans move.desktop

[Desktop Action move-file]

Exec=/usr/lib/x86_64-linux-gnu/libexec/kf5/kdesu mv "%U" /usr/share/applications

Name=Move file
Icon=document-send

[Desktop Entry]
Actions=move-file

MimeType=application/x-desktop;

ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel

L'utilisation de MimeType=application/x-desktop; garantit que cette entrée du menu contextuel ne sera visible que lorsque le fichier cible est un fichier . desktop .

Ceci est une image du menu contextuel de Dolphin avant de créer le menu de service:

Dolphin context menu before creating the service menu

Dans la capture d'écran suivante prise après création du menu de service, vous verrez une entrée supplémentaire, Déplacer le fichier :

Note the Move file entry

Cliquer sur Déplacer le fichier vous demandera votre mot de passe car vous souhaitez déplacer un fichier dans /usr/share/applications .

Password required

Après avoir fourni votre mot de passe, le fichier sélectionné sera déplacé vers /usr/share/applications :

File is now removed from its original location and is now in */usr/share/applications*

Notez que le propriétaire n'est pas le même que les fichiers .desktop déjà présents. Vous devrez corriger cela comme vous le souhaitez:

File ownership differs


Si vous devez modifier la propriété/les autorisations, vous pouvez modifier le Exec= ligne comme celle-ci (pour changer de propriétaire):

Exec=printf %U | xsel -b -i && /usr/lib/x86_64-linux-gnu/libexec/kf5/kdesu mv "%U" /usr/share/applications && cd /usr/share/applications && /usr/lib/x86_64-linux-gnu/libexec/kf5/kdesu chown root:root $( basename $(xsel -b -o) )

Les étapes supplémentaires impliquent l'utilisation de printf et xsel pour mettre le chemin du fichier dans le presse-papiers, puis en utilisant nom de base pour supprimer tout sauf le nom de fichier. Bien sûr, vous aurez encore besoin de kdesu! Je ne sais pas s'il y a un chemin plus court!

4
DK Bose