Pour autant que je sache, la ligne de code ci-dessous devrait attirer l'attention sur la fenêtre nautile ouverte
xdotool windowactivate `xdotool search --onlyvisible --class nautilus`
Mais je reçois l'erreur
xdotool: commande inconnue: 21043361
Je pense que ce qui se passe, c'est que la commande xdotool interne signale plusieurs ID de fenêtre. Ainsi, la commande externe voit quelque chose comme xdotool windowactivate 12345678 21043361
et ne sait pas quoi faire du deuxième nombre.
Si vous ne vous souciez pas de la fenêtre Nautilus ouverte que vous activez, vous pouvez sélectionner la première:
xdotool windowactivate $(xdotool search --onlyvisible --class nautilus | head -n 1)
Si cela vous dérange, vous voudrez peut-être sélectionner davantage avec --title
ou --maxdepth
.
Pour exclure la fenêtre racine, qui est fournie par Nautilus, cela devrait fonctionner:
xdotool windowactivate $(xdotool search --onlyvisible --class nautilus |
grep -vxF $(xwininfo -int -size -root |
sed -n 's/.*Window id: *\([0-9]\+\).*/\1/p') |
head -n 1)
auteur xdotool ici.
Ce que vous voyez est très probablement qu'il existe deux identifiants de fenêtre. Vous pouvez essayer de déterminer exactement quel ID de fenêtre est celui que vous vouliez, mais dans la plupart des cas, vous pouvez simplement utiliser les fonctionnalités de `` chaînage de commandes '' et de `` pile de fenêtres '' - voir "PILE DE FENÊTRE" et "CHAÎNE DE COMMANDES" dans la page de manuel xdotool.
La solution la plus simple à votre question est d'avoir la recherche xdotool et de passer les identifiants de fenêtre directement à la commande windowactivate, comme ceci:
xdotool search --onlyvisible --class nautilus windowactivate
Ce qui précède effectue une recherche, enregistre les résultats sur la pile de fenêtres, puis appelle windowactivate, qui sans aucun argument s'applique à la première fenêtre de la pile de fenêtres (alias '% 1'). Considérez-le comme un moyen de diriger les résultats de la recherche vers d'autres commandes xdotool au sein de la même ligne de commande.
Voici un autre exemple pour obtenir les titres de toutes les fenêtres google chrome, en utilisant la chose de pile de fenêtres '% @' qui signifie 'toutes les fenêtres de la pile' (contrairement à% 1,% 2, etc. qui sont des fenêtres spécifiques dans la pile)
% xdotool search --onlyvisible --class chrome getwindowname %@
asdf - Google Search - Google Chrome
CNN.com - Breaking News, U.S., World, Weather, Entertainment & Video News - Google Chrome
Ask Ubuntu - Google Chrome
Google Chrome
En général, toute commande qui émet un identifiant de fenêtre (recherche, selectwindow, getactivewindow, etc.) remplira la pile de fenêtres à utiliser avec les commandes chaînées. Autre exemple, tuer une fenêtre (quitte généralement une application) en cliquant dessus:
% xdotool selectwindow windowkill