Comment j’utilise Ansible pour ajouter une fonctionnalité à mon bureau Linux KDE

J’exécute le bureau KDE Plasma sur mon ordinateur car il s’agit d’un environnement flexible avec de nombreuses options de personnalisation. Avoir des choix sur votre bureau ne se limite pas à avoir de nombreux menus et boutons à activer ou à désactiver. Ce que j’aime le plus dans KDE Plasma Desktop, c’est la possibilité d’y ajouter mes propres fonctionnalités. L’une des raisons pour lesquelles cela est possible est KServices, un framework de plug-in simple mais puissant pour gérer les services de bureau.
Dans le bureau Plasma de KDE, un menu contextuel est généralement disponible lorsque vous cliquez avec le bouton droit sur quelque chose, comme un répertoire ou un fichier. Vous pouvez ajouter des éléments au menu contextuel en créant votre propre KService, et vous n’avez besoin de rien de plus qu’une compréhension rudimentaire de Bash pour le faire fonctionner.
Tout d’abord, créez un nouveau répertoire pour votre menu de service :
$ mkdir -p ~/.local/share/kio/servicemenus
Ajouter un .desktop
déposer:
$ touch ~/.local/share/kio/servicemenus/hello.desktop
Ouvrez le hello.desktop
fichier dans un éditeur de texte. UN .desktop
Le fichier est un petit fichier de configuration utilisé par le système de menus du bureau Linux. Voici un simple fichier KServices qui génère un hello.txt
fichier dans le répertoire que vous sélectionnez :
[Desktop Entry]
Type=Service
MimeType=inode/directory;
Actions=Hello
[Desktop Action Hello]
Name=Say hello
Icon=/usr/share/icons/breeze-dark/actions/symbolic/file-library-symbolic.svg
Exec=touch %f/hello.txt
-
Le premier bloc de configuration indique à votre système que ce
.desktop
file est un service plutôt que, par exemple, une application. -
Le
MimeType
indique à Plasma Desktop de n’afficher cette action qu’en option lorsque vous cliquez avec le bouton droit sur un dossier, pas sur un fichier. -
Le
Actions
identifie l’action entreprise lorsque ce service est activé. Le nomHello
est arbitraire et fait référence au bloc de configuration suivant, qui est unDesktop Action
configuration avec le nomHello
.
Voici ce que signifie le bloc de configuration suivant :
-
Le
Desktop Action
définition nomméeHello
. -
Les valeurs pour
Name
etIcon
apparaissent dans le menu contextuel. -
Le
Exec
line est la commande que vous souhaitez exécuter lorsque votre service est sélectionné. A titre de simple démonstration, ce.desktop
file crée simplement un fichier vide appeléhello.txt
à l’emplacement sur lequel vous avez cliqué avec le bouton droit de la souris (représenté par la variable spéciale%f
).
Sauver la .desktop
fichier, puis rendez-le exécutable :
$ chmod +x ~/.local/share/kio/servicemenus/hello.desktop
Démarrez une nouvelle instance du gestionnaire de fichiers Dolphin et créez un dossier vide. Cliquez ensuite avec le bouton droit sur le dossier et accédez à Actions. Dans le Actions menu, un nouveau service est disponible et il s’appelle Dis bonjour parce que c’est ce que votre .desktop
fichier a défini dans le Name
champ.
(Seth Kenlon, CC BY-SA 4.0)
Regardez dans le dossier après avoir exécuté le service pour voir le vide hello.txt
fichier qui a été créé.
Types MIME
Cet exemple de KService ne fonctionne que sur les répertoires car le .desktop
fichier définissant le service spécifie le Mimetype: inode/directory
. C’est ce qui indique à Dolphin de ne pas afficher le service lorsque vous cliquez avec le bouton droit sur un fichier.
À l’aide de types mime, vous pouvez créer des services hautement spécifiques en fonction du type d’objet du système de fichiers que vous sélectionnez lorsque vous cliquez avec le bouton droit. Le perl-file-mimeinfo
forfait fournit un mimetype
commande, que vous pouvez utiliser pour obtenir le type mime de n’importe quel fichier. Installez-le avec le gestionnaire de paquets de votre distribution, puis essayez-le :
$ mimetype example.txt
example.txt: text/plain
$ mimetype Photos/example.webp
Photos/example.webp: image/webp
Exécutables
J’ai démontré un exemple simple “hello world” dans cet article, mais KServices peut être aussi complexe que vous en avez besoin. Le Exec
ligne de votre KService .desktop
peut lancer n’importe quelle application ou script, et le %f
garantit que la cible ou la destination de tout ce qui est lancé correspond à ce sur quoi vous avez cliqué avec le bouton droit de la souris.
Pour mon propre flux de travail, j’avais l’habitude d’utiliser Planter pour construire rapidement un environnement de projet. Dernièrement, cependant, je suis passé à Ansible et à ce KService :
[Desktop Entry]
Type=Service
MimeType=inode/directory;
Actions=planter
[Desktop Action planter]
Name=Create project directory
Icon=/usr/share/icons/breeze-dark/actions/symbolic/folder-new-symbolic.svg
Exec=ansible-playbook /home/seth/Ansible/playbooks/standard_dirs.yaml -e dir=%f
Voici mon playbook Ansible :
---
- hosts: localhost
tasks:
- name: Create directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
with_items:
- '{{ dir }}/video'
- '{{ dir }}/edit'
- '{{ dir }}/audio'
- '{{ dir }}/title'
- '{{ dir }}/render'
- '{{ dir }}/graphic'
- '{{ dir }}/photo'
Lorsque je clique avec le bouton droit sur un répertoire et que je sélectionne Créer un répertoire de projet, les sous-répertoires dont j’ai besoin pour les projets multimédias sont ajoutés à ce répertoire. C’est une fonctionnalité simple pour un ordinateur de bureau et un peu unique pour un flux de travail spécifique, mais c’est la fonctionnalité que je veux. Et grâce à KServices, c’est une fonctionnalité que j’ai. Essayez par vous-même KServices dans KDE Plasma Desktop et ajoutez la fonctionnalité souhaitée.