우분투에서 창을 이동하거나 크기를 조정하는 키보드 단축키 만들기


3

창에는 다양한 키 조합을 사용하여 창을 특정 미리 정의 된 크기로 조정하거나 화면의 특정 영역 (또는 둘 다)으로 이동할 수 있는 몇 가지 AutoHotkey 스크립트 가 있습니다. 우분투 (그놈)에서 어떻게 이것을 달성 할 수 있는지 궁금합니다.

Linux 버전의 autohotkey에 대한 대부분의 검색은 간단한 키보드 단축키 (키 콤보 X가 앱 Y를 시작하는 등)를 설정하는 것의 중심에있는 것처럼 보였습니다. 스크립팅 창 크기와 최대화 / 최소화 이외의 배치에 대해서는 아무것도 보지 못했습니다.


대답이 너무 모호해서 너무 모호합니다. Compiz를 설치하고 바로 가기 키를 눌렀을 때 미리 설정된 크기로 터미널 창을 여는 데 사용했습니다. 나는 이것이 정확히 당신이 원하는 것이 아니라는 것을 알고 있지만 Compiz를 살펴보십시오.
Andy

특정 크기로 창을 여는 것은 다소 쉽습니다. 트릭은 기존 창을 수정할 수 있습니다.
Herms

최소화 및 최대화는 일반적으로 창 이동에 대해 확실하지 않고 창 이동에 대해 확실하지 않습니다. Xubuntu와 비슷한 질문이 있습니다 ( superuser.com/questions/142195/xubuntu-aero-snap-hotkeys )
wag2639

min과 max는 내가 원하는 것이 아닙니다. 특정 크기를 설정할 수있는 것을 찾고 있습니다. 예를 들어, 내가 창문에서 가지고 있었던 한 가지는 크기를 현재 화면의 90 %로 설정하는 것이 었습니다.
Herms

나는 특정 크기로 여는 것이 쉽다는 것을 알고 있으며, 그것이 당신이 추구하는 것이 아니라는 것을 알고 있습니다 ... 단지 설정을 모호하게 기억하는 것만으로도 거기에 유용한 것이 있다고 생각합니다. 그래도 계속 사용하면 확인하겠습니다!
Andy

답변:


2

쉘 스크립트에서 wmctrl (우분투에서는 기본적으로 설치되지 않지만 패키지 관리자를 사용하여 설치할 수 있음)을 사용하여 창을 이동하고 크기를 조정할 수 있습니다.

다음 스크립트는 현재 창의 크기를 화면 너비와 높이의 90 %로 조정합니다.

#!/bin/sh

set -- $(xwininfo -root| awk -F '[ :]+' '/ (Width|Height):/ { print $3 }')
width=$1
height=$2

wmctrl -r :ACTIVE: -e 0,-1,-1,$((width*90/100)),$((height*90/100))

이것은 Xubuntu에서도 작동합니다.


단일 모니터가 아닌 전체 논리 화면의 총 너비 / 높이를 제공하는 것처럼 보입니다. 모니터 중 하나에 특정한 크기 화면 영역을 얻는 방법은 무엇입니까?
Herms

1
그리고 만약 당신이 기회가 있고 마음에 들지 않는다면, 그것의 각 부분이 무엇인지에 대한 간단한 설명을 줄 수 있습니까? 더 쉽게 사용자 정의 할 수 있습니다.
Herms

"xwininfo -root"는 루트 창에 대한 정보를 인쇄합니다. awk는 출력을 가져 와서 "Width :"또는 "Height :"를 포함하는 행을 선택하고 값을 인쇄합니다. 일반적으로 "awk '/ (Width | Height) : / {print $ 2}'"도 여기에서 작동하지만 얼마 전에 더 오래 버그를 해결하고 익숙해졌습니다. 그런 다음 두 값은 $ 1과 $ 2를 해당 값으로 설정하는 "set-"에 대한 인수로 사용됩니다. 더 나은 가독성을 위해 대신 $ width 및 $ height를 사용하고 싶습니다. wmctrl 호출에서이 변수는 새 창 너비와 높이를 계산하는 데 사용됩니다.
Florian Diesch 2016 년

화면이 여러 모니터에 펼쳐져 있고 조금 시도해 볼 두 번째 모니터가없는 경우 창 크기가 어떻게 모니터의 크기를 얻는 지 모르겠습니다. 어쩌면 xrandr을 사용하여 해상도를 얻은 다음 화면 위치를 사용하여 어떤 모니터인지 확인할 수 있습니다. 회전, 반사, 스케일링 및 모든 가능한 상대 모니터 위치에 대한 모든 옵션을 사용하여 올바르게 설정하면 약간 까다로울 수 있습니다. 아마 그 자체의 질문 가치가있을 수 있습니다 ...
Florian Diesch

추가 정보 감사합니다. Y 좌표 (wmctrl의 Y = 0은 우분투 메뉴 표시 줄 바로 아래에있는 반면 xwininfo의 Y = 0은 화면 상단에 있음)에서 약간의 이상한 점을 발견했지만 그 문제를 해결할 수 있어야합니다. 이것은 여전히 ​​오토 핫키만큼 좋지는 않지만 WM 조각화를 감안할 때 예상됩니다.
Herms

0

@Florian의 답변을 승인하기 위해 ...

#!/bin/bash

$(xwininfo -root | awk -F ': +' '/ (Width|Height):/ { print $2 }')
width=$1
height=$2

wmctrl -r :ACTIVE: -e 0,-1,-1,$((width*90/100)),$((height*90/100))

왜 이것이 더 낫습니까?

[ :]+필드 구분자로 변경 : +하여 콜론을 필요 로하고 그 뒤에 하나 이상의 공백이 아닌 순서대로 공백이 필요합니다.

즉, 왼쪽 상단에 공백이있는 Absolute와 같은 항목을 사용하려고 할 때 더 이상 중단되지 않습니다. 에서 @ 플로리안의 답변에 대한 awk'ing은 Absolute upper-left X: 123초래 upper-left하지에 123.

더 나아가서 이것을 더 잘 확장하는 방법에 계속; 위의 예를 들어서 다음과 같은 것을 할 수 있습니다 ...

set -- $(xwininfo -root | awk -F ': +' '/ (Absolute upper-left X|Absolute upper-left Y|Width|Height):/ { print $2 }')
posX=$1
posY=$2
width=$3
height=$4

wmctrl -r :ACTIVE: -e 0,$((posX+someNumX)),$((posY+someNumY)),$((width+someNumW)),$((height+someNumH))

로 이동 <someNumX, someNumY>하고 크기를 조정하십시오 <someNumW, someNumH>.

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