XFCE-키 입력시 다른 모니터로 창 보내기


27

듀얼 모니터 설정으로 Xubuntu 11.10을 실행하고 있습니다. 키 입력 (어쩌면 CTRL+ ALT+ SPACE)을 사용하여 선택한 창을 다음 모니터로 보낼 수 있습니다.

그놈에는 swapmonitor창을 다른 모니터로 보낼 수 있는 패키지 가 있습니다. 키 입력으로이 프로그램을 호출하면 동일한 효과를 얻을 수 있습니다.

이것은 XFCE / Xubuntu에서 어떻게 이루어 집니까?


swapmonitorXubuntu 아래에 액세스 할 수 없습니까? 아니면 키보드 단축키를 설정하는 방법을 묻고 있습니까?
ire_and_curses

XFCE에서는 작동하지 않는 것 같습니다. 나는 어떤 옵션이 있는지 알고 싶습니다.
boffin

다중 모니터를 어떻게 설정합니까? 큰 가상 화면 또는 별도의 X 디스플레이? nvidia twinview를 사용하고 있습니까?
Keith

TwinView입니다. 2 개의 Dell 19 인치 모니터가 장착 된 오래된 Nvidia GeForce 카드가 있습니다.
boffin

답변:


27

이것은 얼마 전에 게시되었으며 이미 답변을 얻었지만 아직 답변하지 않은 사람들을 위해 확신합니다.

이 명령을 실행

sudo apt-get install xdotool
sudo apt-get install wmctrl

그런 다음 다음 링크에서 bash 스크립트를 다운로드하십시오 (jc00ke 로의 신용) https://github.com/jc00ke/move-to-next-monitor

개인적으로 루트에 모든 개인 스크립트를 저장하는 디렉토리가 있습니다. 그러나 다운로드 위치는 실제로 귀하에게 달려 있습니다. 실행 권한을 갖도록 변경하십시오. 예를 들어, 스크립트를 move-to-next-monitor.sh로 저장 한 후 다음을 실행하십시오.

chmod 755 move-to-next-monitor.sh
  1. 설정 관리자-> 키보드-> 응용 프로그램 바로 가기
  2. 추가 클릭
  3. 열기를 클릭하여 스크립트로 보냅니다.
  4. 키보드 단축키를 지정하고 보이십시오!

이제 한 화면에서 다른 화면으로 창을 전환하는 키보드 단축키가 있습니다. 두 개 이상의 화면에서 어떻게 작동하는지 잘 모르겠습니다.


링크 된 스크립트는 나 에게이 문제가 있었다 : github.com/jc00ke/bin/issues/1
thejoshwolfe

1
Mint 17.3 및 xfce 4.12, ati 칩셋 비디오 카드 및 3 개의 모니터로 지금까지는 잘 작동했습니다. 내 시스템에서 joshwolfe의 최대화 문제를 보지 못했습니다. 팁 주셔서 감사합니다!
ether_joe

1
@ thejoshwolfe 나는 최대 버전 문제를 해결하는 스크립트 버전을 추가했습니다.
jbrock

1
@ether_joe 세 개의 모니터가있는 경우 도움이 될 수있는 스크립트 버전을 추가했습니다.
jbrock

나는 xfce에 있고, 이것은 악하다. 왼쪽 모니터에서 오른쪽으로 창만 이동하고 내 바탕 화면을 한 번 이상한 상태로 만듭니다.
사바 B.

10

원래 jc00ke가 작성한 위의 스크립트를 약간 변경했습니다.
-광산은 3 대의 모니터로 설정되어 있습니다.
-창의 최대화 여부를 유지합니다.
- 좌우로 사용하여 창을 이동하는 데 사용됩니다 script-name -lscript-name -r각각.
-최소화 된 Chromium 앱이 매우 작고 새 모니터에서 다시 최대화되지 않는 수정 사항을 추가했습니다.
나는 jc00ke에 해당합니다. 이것은 Xfce에서 훌륭하게 작동하지만 Unity의 스크립트에 문제가 있다고 말했습니다. 물론 Unity와 같은 다른 데스크탑 환경에는 이러한 옵션이 창 관리자에 내장되어 있으므로이 스크립트가 필요하지 않습니다.
스크립트를 사용하려면 스크립트를 실행 가능하게 chmod +x script-name하고 다음 두 프로그램을 설치하십시오 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

7

또한 모니터에서 창을 이동시키기 위해 자체 파이썬 스크립트를 만들었습니다.

https://github.com/calandoa/movescreen

용법:

movescreen.py <up|down|left|right>

흥미로운 기능 :

  • 네 방향을 처리
  • 여러 모니터에서 겹치는 창과 같은 특수한 경우 처리
  • 독립적으로 복원 전체 화면 , 최대 수평수직 상태를
  • 파이썬으로 쉽게 새로운 기능을 디버깅하거나 추가하십시오.

1

xdotool 또는 wmctrl과 같은 "이진"종속성에 의존하지 않는 다른 대안 : https://github.com/AlexisBRENON/ewmh_m2m

  • 당신이 그것을 설치할 수 있습니다 pip(수동으로 복사하거나 실행 가능하게 만들 필요가 없습니다.)
  • 레이아웃이 다른 여러 화면을 처리합니다 (가로, 세로, 혼합)
  • 크기가 다른 화면 사이를 이동할 때 창 / 화면 비율 유지
  • 최대화 된 상태 복원 (가로, 세로)

종류.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.