web-dev-qa-db-fra.com

Xbindkeys lance correctement l'application pour la première fois seulement

Lorsque je mets la ligne suivante dans ~/.xbindkeysrc GNOME lance correctement l'application vlc.

"vlc"
   XF86Calculator

Le problème est que j'aimerais exécuter un script Shell. Lorsque je mets ce qui suit dans ~/.xbindkeysrc GNOME ne lance pas mon script mais la calculatrice.

"/home/menteith/bin/audio.sh"
   XF86Calculator

Pourquoi donc? Le script est exécutable et fonctionne comme prévu lorsqu'il est exécuté à partir de la ligne de commande.

MISE À JOUR Grâce à @PRATAP, je sais que lorsque j'utilise un programme compilé dans ~/.xbindkeysrc (c'est-à-dire pas un script bash) et appuyez sur XF86Calculator pour la première fois, il lance mon programme, mais lorsque j'appuie sur XF86Calculator pour la deuxième fois, je lance la calculatrice à la place.

MISE À JOUR 2

Grâce à @Raffa, j'ai essayé une autre solution. J'ai écrit un programme C simple:

#include <stdio.h>
#include <stdlib.h>

int main() {
  puts("Starting now:");
  system("killall -s1 xbindkeys; /home/menteith/bin/audio");
  return 0;
}

Il tue xbindkeys puis exécute le wrapper, qui à son tour exécute le script. Cependant, cela ne fonctionne toujours pas. Après la deuxième fois et la prochaine fois, calculator est lancé.

MISE À JOUR Mon script a basculé entre l'audio du moniteur (HDMI) et l'audio du PC.

#!/usr/bin/env bash

output=$(pactl list cards |grep 'Active Profile:' | cut -d ':' -f 3)

if [ $output == "analog-stereo" ]; then
    out="hdmi-stereo"
else
    out="analog-stereo"
fi

echo test
# Set the choosen card profile as sink
pactl set-card-profile "alsa_card.pci-0000_00_1f.3" "output:${out}"


# Set the default sink to the new one
pacmd set-default-sink "alsa_card.pci-0000_00_1f.3.${out}" &> /dev/null

# Redirect the existing inputs to the new sink
for i in $(pacmd list-sink-inputs | grep index | awk '{print $2}'); do
    pacmd move-sink-input "$i" "alsa_card.pci-0000_00_1f.3.${out}" &> /dev/null
done
2
menteith

Première étape:

Premièrement: Je suggère de modifier le ~/.xbindkeysrc fichier en effaçant d'abord le fichier, puis copiez et collez le code suivant dans le fichier en remplaçant Key_Name avec votre nom de clé réel pour qu'il ressemble à ceci:

"sh /home/menteith/bin/audio.sh && killall -s1 xbindkeys"
Key_Name

Deuxièmement: redémarrez xbindkeys en exécutant la commande suivante dans le terminal:

killall -s1 xbindkeys

Enfin: essayez la clé configurée et voyez si elle fonctionne comme prévu.


Deuxième étape:

Veuillez inspecter les paramètres système sous Raccourcis clavier comme dans l'image ci-dessous:

enter image description here

Si une touche de raccourci est configurée pour Lancer la calculatrice ici, elle doit être désactivée. Sinon, cela pourrait interférer avec xbindkeys et capturer la touche de raccourci empêchant votre script de s'exécuter et d'exécuter la calculatrice à la place.


Troisième étape:

Un autre endroit à examiner est le /usr/share/X11/xkb/symbols/pc fichier.

Premièrement: ouvrez le fichier dans l'éditeur gedit en exécutant la commande suivante dans le terminal:

Sudo nano /usr/share/X11/xkb/symbols/pc

Deuxièmement: recherchez une ligne contenant XF86Calculator dedans. Cela ressemblera à ceci:

key  <Key_Name> {   [XF86Calculator]    };

Mettez cette ligne en commentaire en ajoutant un // avant comme ceci:

//key  <Key_Name> { [XF86Calculator]    };

Prenez note du Key_Name dans <Key_Name> et enregistrez et fermez le fichier.

Troisièmement: modifiez votre ~/.xbindkeysrc fichier remplaçant XF86Calculator avec la clé Key_Name à l'étape Deuxièmement ci-dessus. Ça devrait ressembler à ça:

"sh /home/menteith/bin/audio.sh && killall -s1 xbindkeys"
Key_Name

Enregistrez et fermez le fichier.

Quatrièmement: Vider le cache des paramètres xkb en exécutant la commande suivante dans le terminal:

Sudo rm -rf /var/lib/xkb/*

Cinquièmement: redémarrez votre système pour activer votre nouvelle configuration xkb ou rechargez la nouvelle configuration xkb en définissant une disposition de carte xkb en utilisant la commande suivante dans le terminal:

setxkbmap -layout us

Enfin: lancez xbindkeys en exécutant la commande suivante dans le terminal:

xbindkeys -f ~/.xbindkeysrc

Essayez ensuite votre raccourci clavier. Si rien ne se passe, redémarrez xbindkeys en exécutant la commande suivante dans le terminal:

killall -s1 xbindkeys

Maintenant, essayez à nouveau votre raccourci clavier et voyez si cela fonctionne comme prévu.

Bonne chance

1
Raffa

Solution

Je l'ai essayé sur Ubuntu 19.10

contenu de myscript.sh fichier.

#!/bin/bash

notify-send "Script Ran Successfully"

contenu de .xbindkeysrc fichier.

"/bin/bash $HOME/myscript.sh"
XF86Calculator

Une fois connecté,

courir xbindkeys --poll-rc. la clé XF86Calculator doit exécuter votre script.

Référence pour l'option --poll-rc https://wiki.archlinux.org/index.php/Xbindkeys et voir le commentaire sous la réponse dans ce lien https: // askubuntu. com/a/1126410/739431

enter image description here

1
PRATAP