Une place pour une véritable innovation. Partagez vos propres utilitaires créés avec la communauté Manjaro.
Questions et discussions sur la programmation et le codage.
Répondre

[kde]krunner plugin pour nos scripts bash

#1Messageil y a 3 ans

:bjr:
Plugin krunner (ultime?) qui nous permet de créer nos propres plugins/actions avec un script bash

Existe quelques plugins krunner, mais la liste est extrêmement restreinte. Ici ce plugin arrive avec aucune fonctionnalité si ce n'est de pouvoir créer nos propres plugins en bash !

Les possibilités sont infinies :pompom: et limitées que par notre connaissance de bash :triste:

Quelques copies écran d'actions ajoutées :






---------
Installation (pas encore dans aur):

wget https://raw.githubusercontent.com/papajoker/krunner-shell/master/resources/PKGBUILD
makepkg -sfci
---------
Usage:
On va créer des "actions" qui vont être déclenchées dans krunner en ajoutant :

Une action a deux choses:
- retourne une liste texte dans krunner
- peut éventuellement déclencher un programme

---------
configuration / code
Un seul script bash regroupe nos actions dans le fichier ~/.config/krunnershell.sh
l'action about: va lister les actions disponibles pour le plugin

Dans ce fichier bash il faut donc créer 1 ou 2 fonctions bash pour une action
  • match_action() {...} retourne une liste de textes
  • run_action() {...} optionnel, un click sur la ligne va déclencher cette fonction run()
match_***(), nous pouvons mettre 3 colonnes avec le séparateur || (voir exemple "manjaro:") ; cette fonction reçoit en paramètre le texte saisit dans krunner
La première colonne est passée en paramètre à la fonction run_***()

Exemples:
Action manjaro: qui va afficher nos sites web et nous permettre d'y aller

match_manjaro(){
  echo "https://forum.manjaro.org/new||Forum||Help"
  echo "https://www.manjaro.fr/forum/search.php?search_id=active_topics||Fr Forum||fr"
  echo "https://www.manjaro.fr/forum/repo-compare.php||Branches compare||fr"
  echo "https://www.manjaro.org/||Web||main"
  echo "https://repo.manjaro.org/||Mirrors||pacman"
  echo "https://discover.manjaro.org/||Discover||Apps"
}
run_manjaro(){
  qdbus org.kde.plasmashell /org/kde/osdService showText 'manjaro' "MANJARO"
  xdg-open "$1"
}
Action man: qui va rechercher dans man et afficher le man dans notre navigateur web

match_man(){
  while read -r name id sep txt; do
    echo -e "${name}||${name}:\t${txt}"
  done < <(man -k "$1")
}
run_man(){
  qdbus org.kde.plasmashell /org/kde/osdService showText 'help' "$1"
  man -Thtml "$1" >"/tmp/krunner-man.html" && xdg-open "/tmp/krunner-man.html"
}
Action radio: pour écouter nos radios favorites (ici, avec clementine ou vlc)

match_radio(){
  tmp="/tmp/krunner-radios.lst"
  echo -n "" > "$tmp"
  echo "http://ais-sa2-dal01-1.cdnstream.com:80/1989_64.aac||Rock mix||rock" >> "$tmp"
  echo "http://node1.mingusradio.com:7646/rock||Mingus radio||rock" >> "$tmp"
  echo "http://stream.punkrockers-radio.de:8000/mp3||PunkRockers||punk"  >> "$tmp"
  echo "http://94.23.26.22:8090/live.mp3||Punk fm||punk"  >> "$tmp"
  grep -i "$1" "$tmp" --color=never  # avec grep on filtre notre liste (par genre,non)
}
run_radio(){
  if pacman -Qq clementine 2>/dev/null; then
    qdbus org.mpris.MediaPlayer2.clementine /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.OpenUri "$1" ||clementine "$1"
    return 0
  fi
  if pacman -Qq vlc 2>/dev/null; then
    qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.OpenUri "$1" || vlc "$1"
    return 0
  fi
}
D'autres exemples de code/actions à la page du projet


-------------------------------------
petit truc
krunner n'est pas très large et pour nos plugins maison il peut-être intéressant de voir plus de texte.
Ceci est possible en modifiant notre thème kde:
https://gitlab.manjaro.org/papajoke/kru ... nner-width (ici pour le thème breeze)
Répondre