Je suis en cours d'exécution Xubuntu 11.10 avec une configuration à double moniteur. Je cherche à créer une frappe (peut-être CTRL + ALT + SPACE Ce qui me permettra d'envoyer une fenêtre sélectionnée sur le moniteur suivant.
Dans GNOME, il y a un package appelé swapmonitor
qui est capable d'envoyer la fenêtre à l'autre moniteur. Appeler ce programme avec une frappe frappe le même effet.
Comment est-ce fait dans Xfce/Xubuntu?
Cela a été posté il y a quelque temps et je suis sûr que vous avez déjà reçu votre réponse, mais pour ceux qui ne l'ont pas fait.
Exécutez ces commandes
Sudo apt-get install xdotool
Sudo apt-get install wmctrl
Ensuite, téléchargez le script Bash à partir du lien suivant (crédit à JC00ke) https://github.com/jc00ke/move-to-next-monitor
Personnellement, j'ai un répertoire dans ma racine où je stocke tous mes scripts personnels. Cependant, où vous le téléchargez, c'est vraiment à vous. Changez-le pour avoir des autorisations afin que vous puissiez exécuter. Par exemple, enregistrez les scripts comme boucle-to-next-monitor.sh, puis exécutez ce qui suit
chmod 755 move-to-next-monitor.sh
Vous avez maintenant un raccourci clavier pour changer une fenêtre de 1 écran à un autre. Je ne sais pas comment cela fonctionne avec plus de 2 écrans.
J'ai apporté des modifications au script ci-dessus mentionné, à l'origine rédigé par JC00ke.
[.____] - Le mien est mis en place pour trois moniteurs.
[.____] - Il maintient si la fenêtre a été maximisée ou non.
[.____] - Il est utilisé pour déplacer la fenêtre à gauche ou à droite avec l'utilisation script-name -l
et script-name -r
respectivement.
[.____] - J'ai ajouté une solution où les applications de chrome lorsqu'ils sont minimisées sont très petites et ne maximisent plus à nouveau sur le nouveau moniteur.
[.____] J'ai correspondu avec JC00ke. Bien que cela fonctionne bien sur XFCE, il a dit qu'il avait des problèmes avec son script dans l'unité. Bien sûr, d'autres environnements de bureau tels que Unity n'auraient pas besoin de ce script, car de telles options sont intégrées au gestionnaire de fenêtres.
[.____] Pour utiliser le script, faites-la exécuter chmod +x script-name
et installer les deux programmes suivants, Sudo apt-get install xdotool wmctrl
.
#!/bin/bash
#
# Move the current window to the next monitor.
#
# Also works only on one X screen (which is the most common case).
#
# Props to
# http://icyrock.com/blog/2012/05/xubuntu-moving-windows-between-monitors/
#
# Unfortunately, both "xdotool getwindowgeometry --Shell $window_id" and
# checking "-geometry" of "xwininfo -id $window_id" are not sufficient, as
# the first command does not respect panel/decoration offsets and the second
# will sometimes give a "-0-0" geometry. This is why we resort to "xwininfo".
screen_width=$(xdpyinfo | awk -F" |x" '/dimensions:/ { print $7 }')
screen_height=$(xdpyinfo | awk -F" |x" '/dimensions:/ { print $8 }')
window_id=$(xdotool getactivewindow)
case $1 in
-l )
display_width=$((screen_width / 3 * 2)) ;;
-r )
display_width=$((screen_width / 3)) ;;
esac
# Remember if it was maximized.
window_state=$(xprop -id $window_id _NET_WM_STATE | awk '{ print $3 }')
# Un-maximize current window so that we can move it
wmctrl -ir $window_id -b remove,maximized_vert,maximized_horz
# Read window position
x=$(xwininfo -id $window_id | awk '/Absolute upper-left X:/ { print $4 }')
y=$(xwininfo -id $window_id | awk '/Absolute upper-left Y:/ { print $4 }')
# Subtract any offsets caused by window decorations and panels
x_offset=$(xwininfo -id $window_id | awk '/Relative upper-left X:/ { print $4 }')
y_offset=$(xwininfo -id $window_id | awk '/Relative upper-left Y:/ { print $4 }')
x=$((x - x_offset))
y=$((y - y_offset))
# Fix Chromium app view issue of small un-maximized size
width=$(xdotool getwindowgeometry $window_id | awk -F" |x" '/Geometry:/ { print $4 }')
if [ "$width" -lt "150" ]; then
display_width=$((display_width + 150))
fi
# Compute new X position
new_x=$((x + display_width))
# Compute new Y position
new_y=$((y + screen_height))
# If we would move off the right-most monitor, we set it to the left one.
# We also respect the window's width here: moving a window off more than half its width won't happen.
if [ $((new_x + width / 2)) -gt $screen_width ]; then
new_x=$((new_x - screen_width))
fi
height=$(xdotool getwindowgeometry $window_id | awk -F" |x" '/Geometry:/ { print $5 }')
if [ $((new_y + height / 2)) -gt $screen_height ]; then
new_y=$((new_y - screen_height))
fi
# Don't move off the left side.
if [ $new_x -lt 0 ]; then
new_x=0
fi
# Don't move off the bottom
if [ $new_y -lt 0 ]; then
new_y=0
fi
# Move the window
xdotool windowmove $window_id $new_x $new_y
# Maintain if window was maximized or not
if [ "${window_state}" = "_NET_WM_STATE_MAXIMIZED_HORZ," ]; then
wmctrl -ir $window_id -b add,maximized_vert,maximized_horz
fi