Cela semble simple; xdotool
sélectionne le bureau, simule F5 appuyez sur la touche et renvoie le focus à la fenêtre/au programme appelant.
Après avoir googlé, cela ne semble plus simple.
Je dois le faire depuis bash/gnome-Shell.
Des idées?
Ce projet est lié à ce Q&A où les icônes tombent de l'écran gauche dans un tout noir à cause de moniteurs de tailles différentes:
Merci à aide de Podesta J'ai créé ce code:
TestIcons () {
[[ $TestSeconds == "" ]] || [[ $TestSeconds == 0 ]] && TestSeconds=5
local i Position File
for (( i=0; i<${#IconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
File="$ICONS_DIR"/"${IconsArr[((i+ICON_NAME_NDX))]}"
Position="${IconsArr[((i+ICON_COL_NDX))]},${IconsArr[((i+ICON_ROW_NDX))]}"
gvfs-set-attribute -t string "$File" \
'metadata::nautilus-icon-position' "$Position"
done
wmctrl -k on # Show desktop
xdotool key F5 # Refresh desktop (show icon new positions)
sleep $TestSeconds # Pause for view
wmctrl -k off # Restore windows
for (( i=0; i<${#OldIconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
File="$ICONS_DIR"/"${OldIconsArr[((i+ICON_NAME_NDX))]}"
Position="${OldIconsArr[((i+ICON_COL_NDX))]},${OldIconsArr[((i+ICON_ROW_NDX))]}"
gvfs-set-attribute -t string "$File" \
'metadata::nautilus-icon-position' "$Position"
done
wmctrl -k on # Show desktop
xdotool key F5 # Refresh desktop (show icon new positions)
wmctrl -k off # Restore windows
} # TestIcons
Voici à quoi ressemble l'écran:
Le script ci-dessous fonctionne de @ WinEunuuchs2Unix et est la solution finale. Ma réponse originale est à la fin.
#!/bin/bash
TestIcons () {
[[ $TestSeconds == "" ]] || [[ $TestSeconds == 0 ]] && TestSeconds=5
local i Position File
for (( i=0; i<${#IconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
File="$ICONS_DIR"/"${IconsArr[((i+ICON_NAME_NDX))]}"
Position="${IconsArr[((i+ICON_COL_NDX))]},${IconsArr[((i+ICON_ROW_NDX))]}"
gvfs-set-attribute -t string "$File" \
'metadata::nautilus-icon-position' "$Position"
done
wmctrl -k on # Show desktop
xdotool key F5 # Refresh desktop (show icon new positions)
sleep $TestSeconds # Pause for view
wmctrl -k off # Restore windows
for (( i=0; i<${#OldIconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
File="$ICONS_DIR"/"${OldIconsArr[((i+ICON_NAME_NDX))]}"
Position="${OldIconsArr[((i+ICON_COL_NDX))]},${OldIconsArr[((i+ICON_ROW_NDX))]}"
gvfs-set-attribute -t string "$File" \
'metadata::nautilus-icon-position' "$Position"
done
wmctrl -k on # Show desktop
xdotool key F5 # Refresh desktop (show icon new positions)
wmctrl -k off # Restore windows
}
TestIcons
Quelques autres commandes xdotools
qui peuvent être utiles dans une situation similaire:
Si votre gestionnaire de fenêtres a une commande show desktop, il peut être utile de réduire et de ramener toutes les fenêtres. Il est généralement défini sur ctrl+alt+d
:
xdotool key ctrl+alt+d
Si vous souhaitez enregistrer la fenêtre actuellement active, pour la récupérer ultérieurement, vous pouvez utiliser:
myWindow="$(xdotool getactivewindow)"
Ti minimise une fenêtre que vous pouvez utiliser. L'ajouter à une boucle vous permet de minimiser toutes les fenêtres, comme alternative au show dekstop.
xdotool windowminimize $(xdotool getactivewindow)
Pour ramener la fenêtre active que vous avez enregistrée au foyer:
xdotool windowactivate "$myWindow"
Pour fermer la fenêtre active, utilisez:
xdotool getactivewindow windowkill
Et le plus important, toutes ces commandes que vous pouvez utiliser avec la fenêtre active, vous pouvez réellement rechercher et appliquer à des cas spécifiques. Par exemple, rechercher cette fenêtre spécifique, en fonction du titre.
xdotool search --desktop 0 --name "command line - xdotool" windowactivate
Il existe de nombreuses façons différentes de rechercher des fenêtres, en fonction du titre, de la classe, si elles sont visibles, etc. Il peut également manipuler les positions des fenêtres et la souris. La page de manuel de xdotol est très complète. Les combiner avec un script bash donnerait beaucoup de liberté pour réaliser la plupart des choses.