Ubuntu에 사용할 수있는 동적 다중 모니터 친화적 인 데스크탑 환경이 있습니까?


14

랩톱을 사용하여 하루 동안 (물리적) 직장에서 다른 직장으로 마이그레이션하고 가능한 경우 외부 모니터에 연결하는 것을 좋아합니다.

또한 멀티 태스킹을 많이해야하므로 주어진 시간에 많은 창을 열고 구성 할 수있는 많은 (가상) 작업 공간이 있습니다.

그러나 외부 모니터를 연결 / 연결 해제 할 때마다 신중하게 모든 배열이 사라졌습니다. 이것은 나를 정말로 화나게한다 .

두 번째 모니터를 연결 / 연결 해제 할 때 창을 그대로 두는 데스크탑 환경이 있습니까? 또는 모니터 배열 당 창 배열을 기억 하는가? 본사 (노트북 화면 상단의 17 인치 모니터)에서 평소 직장 (노트북 화면 왼쪽의 21 인치 모니터) 또는 동료의 책상 (노트북 화면의 오른쪽 19 인치 모니터)으로 이동했을 때, 창은 모니터가 마지막으로 연결되었던 위치로 끝나거나 모니터를 본 적이없는 경우 그대로 둡니다.

통일 된 외부 모니터를 다루는 방식은 저를 슬프게 만들고, 추가 모니터를 모두 연결하지 않았 으면 좋겠습니다. 일단 연결하면 마치 데스크톱 컴퓨터를 바닥에 못 박는 것처럼이 배열에 연결됩니다.


이것은 창 관리자에서 발생합니까? 그놈 3, KDE, LXDE, XFCE?
Braiam

모르겠어요 그것은 화합으로 일어난다.
artm

이것에 대한 좋은 해결책을 찾았습니까? 우분투를 장착 한 Dell 노트북을 사용해야했지만 MacBook Pro에 익숙합니다. Mac에는 각 모니터 구성의 창 위치를 기억하기 때문에 필수라는 Stay라는 프로그램이 있습니다. 모니터를 연결하면 모든 창이 원래 위치로 이동합니다. 두 번째 모니터를 연결하면 모두 다시 움직입니다. 플러그를 뽑으면 모두 원래 있던 곳으로 돌아갑니다. 또한 Mac은 모든 창을 볼 수 있도록 Stay가 없어도 충분히 똑똑합니다. 이 우분투 랩톱에서 화면이 아닌 창을 계속 찾아야합니다.
Greywire

Stay on linux와 같은 것을 찾을 수 없습니다. 개별 명령에서 모든 정보와 제어를 얻을 수있는 것처럼 보이며 아래 스크립트가 가깝습니다. 필요한 기능을 얻기 위해 이러한 기능을 개선하기 위해 노력하고 있습니다.
Greywire

내가 잃어버린 것 같은 소리를 유지하십시오. 아니요, 해결책을 찾지 못했습니다.
artm

답변:


10

두 가지 셸 스크립트를 제공합니다. 그것은 당신 이 창 위치와 크기의 배열저장하는 데 도움이 될 것 입니다. 원하는 창 배열이 어긋나면 이러한 스크립트를 사용하여 모든 창에 대해 정확한 창 크기와 위치로 해당 배열 을 복원 할 수 있습니다 .

wmctrl아직 설치 하지 않은 경우 설치 해야합니다. 터미널을 통해 설치

sudo apt-get install wmctrl

창 구성을 저장하는 스크립트

# Script_Name: save_window_conf.sh
#!/bin/bash
if [ -f $HOME/.my_windows_config.txt ]; then
    echo -e "Information: Previous configuration file \"$HOME/.my_windows_config.txt\" already exists.\nTo save a new configuration remove it manually using the following command,\n\n\trm $HOME/.my_windows_config.txt"
    exit 1
else
    wmctrl -p -G -l | awk '($2 != -1)&&($3 != 0)&&($NF != "Desktop")' | awk '{print $1}' | while read mywinid
    do
        xwininfo -id "$mywinid" >> $HOME/.my_windows_config.txt
    done
fi

실행시 위 스크립트는 열려있는 모든 창의 창 위치와 크기를 .my_windows_config.txt홈 디렉토리에 이름이 지정된 파일로 저장합니다 . 숨겨진 텍스트 파일입니다.

Windows 구성을 다시로드하는 스크립트

# Script_Name: load_window_conf.sh
#!/bin/bash

file=$HOME/.my_windows_config.txt
declare -a mywinid
declare -a x
declare -a y
declare -a width
declare -a height

nl=$(cat "$file" | grep xwininfo |wc -l)

for i in $(seq 1 $nl)
do
    mywinid[i]=$(cat "$file" | grep "xwininfo" | awk -v p="$i" '{if(NR==p) print $4}')
    x[i]=$(cat "$file" | grep "Absolute upper-left X" | awk -v p="$i" '{if(NR==p) print $NF}')
    y[i]=$(cat "$file" | grep "Absolute upper-left Y" | awk -v p="$i" '{if(NR==p) print $NF}')
    width[i]=$(cat "$file" | grep "Width" | awk -v p="$i" '{if(NR==p) print $NF}')
    height[i]=$(cat "$file" | grep "Height" | awk -v p="$i" '{if(NR==p) print $NF}')
done

for it in $(seq 1 $nl)
do
    wmctrl -i -r "${mywinid[$it]}" -e 0,"${x[$it]}","${y[$it]}","${width[it]}","${height[it]}"
done

두 번째 스크립트를 실행하면 모든 창에 대해 정확한 크기로 창 위치를 복원합니다.

용법

이 스크립트를 $HOME/bin/디렉토리 에 저장하십시오 . 에 추가 $HOME/bin/하십시오 PATH. 이를 위해이 줄을 끝에 추가하십시오.$HOME/.bashrc

PATH=$HOME/bin:$PATH
export PATH

이름만으로 스크립트를 실행할 수 있습니다. 스크립트 실행 권한을 부여하십시오.

chmod +x $HOME/bin/save_window_conf.sh
chmod +x $HOME/bin/load_window_conf.sh

에 구성을 저장하려면 $HOME/.my_windows_config.txt

모든 창을 열고 조정 한 후 터미널에서 실행하면

save_window_conf.sh

에서 구성을 다시로드하려면 $HOME/.my_windows_config.txt

load_window_conf.sh

문제가 해결되기를 바랍니다. 스크린 샷이 있습니다.

여기에 이미지 설명을 입력하십시오


와, 고마워, 이것은 유망 해 보인다. 스크립트를 사용해 보겠습니다.
artm

@ artm 나는 약간의 결함과 오타를 편집 했으므로 이제는 괜찮아 보입니다. Unity와 Gnome-fallback-session에서 테스트했으며 gnome3에서 작동해야합니다. 문제가 발생하면 알려주십시오.
souravc

@artm 제거 할 때 결정해야합니다 .my_windows_config.txt. 기존 창에 대해 동일한 창 구성을 여러 번로드하려는 경우이를 유지하려고 할 수 있습니다. 그러나 완전히 새로운 세션을 시작하면 해당 창 ID가 달라지고이 경우에서 이전 구성 파일을 제거하는 것이 좋습니다 $HOME/.my_windows_config.txt. 새 구성을 저장하기 전에 구성 저장 파일을 수동으로 제거해야합니다.
souravc

Ubuntu 18.04의 XFCE4에서 중력 (-e 매개 변수의 첫 번째 "0")을 31로 변경해야했습니다. 그렇지 않으면 창이 원래 위치에서 약 31px 아래로 복원되었습니다. 기본 XFCE 패널의 크기 일 수 있습니다. 코드 감사합니다!
akom

-1

일반적인 가이드는 여기에 있습니다 : 해상도

동적 해상도에 대한 솔루션은 Xorg & XrandR 또는 Xinerama에 가깝습니다.


설정 방법 : 네 가지 방법

  1. .xprofile과의 세션 별.

  2. xrandr 도구를 사용하여 동적으로

  3. xorg.conf에서 설정하여 정적으로.

  4. Xrandr 그래픽 프론트 엔드 GUI.

정답은 여러 모니터에 대한 설정이 저장되지 않은 것입니다

작업 공간에서 창 관리 를 해결하기 위해 Compiz Config Manager가 제공 하는 프로파일 링 시스템을 사용할 수 있습니다


2
해상도 또는 디스플레이 배열에 문제가 없습니다. 예상대로 작동합니다.
artm

따라서 모든 데스크탑 환경은 당신에게 친숙합니다. 공개적으로 비난하지 마십시오.
스위프트

나는 누구를 비난하지 않습니다. 모니터를 연결 / 연결 해제 할 때 열린 창을 그대로두기를 원합니다.
artm

공식적으로 참조 할 수있는 네 가지 솔루션이 있습니다. 내 대답은 당신의 "광기"를 적절하게 다루고;)
swift

2
오, 스스로 해보십시오 : 각 작업 공간에서 창을 연 다음 원래 화면 상단에 나타나는 모니터를 연결하고 창이 끝나는 곳을 확인하십시오. 그런 다음 모니터가 연결되었을 때 xrandr이 윈도우가 무작위로 점프하는 것을 중지시키는 것과 관련이 있는지 알려주세요.
artm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.