สร้างแป้นพิมพ์ลัดเพื่อย้าย / ปรับขนาดหน้าต่างใน Ubuntu


3

ใน windows ฉันมีสคริปต์ AutoHotkeyสองสามตัวที่ให้ฉันกดปุ่มชุดต่าง ๆ เพื่อปรับขนาดหน้าต่างตามขนาดที่กำหนดไว้ล่วงหน้าหรือย้ายไปยังบางพื้นที่ของหน้าจอ (หรือทั้งคู่) ฉันสงสัยว่าฉันจะทำสิ่งนี้ได้อย่างไรใน Ubuntu (gnome)

การค้นหาส่วนใหญ่ที่ฉันทำสำหรับ autohotkey รุ่น linux นั้นดูเหมือนจะอยู่กึ่งกลางเพียงตั้งค่าแป้นพิมพ์ลัดอย่างง่าย (key combo X เปิดแอป Y และอื่น ๆ ) ฉันไม่เห็นอะไรเกี่ยวกับขนาดและตำแหน่งของสคริปต์นอกเหนือจากการขยาย / ย่อให้ใหญ่สุด


จะไม่เพิ่มเป็นคำตอบเพราะมันคลุมเครือเกินไปฉันกลัว - ฉันใช้เพื่อติดตั้ง Compiz และฉันใช้เพื่อเปิดหน้าต่างเทอร์มินัลด้วยขนาดที่กำหนดไว้ล่วงหน้าเมื่อฉันกดปุ่มทางลัด ฉันรู้ว่านี่ไม่ใช่สิ่งที่คุณต้องการ แต่ลองดูที่ Compiz - อาจมีบางอย่างที่นั่น
Andy

การเปิดหน้าต่างที่ขนาดเฉพาะนั้นค่อนข้างง่าย เคล็ดลับคือความสามารถในการปรับเปลี่ยน windows ที่มีอยู่ล่วงหน้า
Herms

ย่อเล็กสุดและขยายใหญ่สุดมักจะสร้างไว้ในตัวจัดการหน้าต่างของคุณไม่แน่ใจเกี่ยวกับการย้าย windows - ฉันมีคำถามที่คล้ายกันสำหรับ Xubuntu ( superuser.com/questions/142195/xubuntu-aero-snap-hotkeys )
wag2639

ขั้นต่ำและสูงสุดไม่ใช่สิ่งที่ฉันต้องการ ฉันกำลังมองหาบางอย่างที่ฉันสามารถกำหนดขนาดเฉพาะได้ ตัวอย่างเช่นสิ่งหนึ่งที่ฉันมีใน windows คือการกำหนดขนาดเป็น 90% ของหน้าจอปัจจุบัน
Herms

ฉันรู้ว่าการเปิดในขนาดเฉพาะนั้นเป็นเรื่องง่ายและฉันรู้ว่าไม่ใช่สิ่งที่คุณกำลังตามมา ... มันเป็นเพียงความทรงจำที่คลุมเครือในการตั้งค่าเครื่องของฉันทำให้ฉันคิดว่าอาจมีบางสิ่งที่มีประโยชน์สำหรับคุณที่นั่น หากฉันยังใช้อยู่ฉันจะตรวจสอบให้คุณ!
Andy

คำตอบ:


2

ในเชลล์สคริปต์คุณสามารถใช้ wmctrl (ไม่ได้ติดตั้งโดยค่าเริ่มต้นใน Ubuntu แต่คุณสามารถติดตั้งโดยใช้ตัวจัดการแพ็คเกจ) เพื่อย้ายและปรับขนาดหน้าต่าง

สคริปต์ต่อไปนี้ปรับขนาดหน้าต่างปัจจุบันเป็น 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
และถ้าคุณมีโอกาสและไม่รังเกียจคุณช่วยอธิบายสั้น ๆ เกี่ยวกับสิ่งที่แต่ละส่วนนั้นมีไว้เพื่ออะไร (ส่วนใหญ่จะเป็น awk) หรือไม่? จะทำให้การปรับแต่งนั้นง่ายขึ้น
Herms

"xwininfo -root" พิมพ์ข้อมูลบางอย่างเกี่ยวกับหน้าต่างรูท awk ใช้เอาต์พุตของมันเลือกบรรทัดที่มี "Width:" หรือ "Height:" และพิมพ์ค่า "awk '/ (ความกว้าง | ความสูง): / {print $ 2}'" ใช้งานได้ที่นี่เช่นกันฉันแค่ต้องการอีกต่อไปเพื่อแก้ไขข้อบกพร่องในช่วงเวลาที่ผ่านมาและคุ้นเคยกับมัน จากนั้นทั้งสองค่าจะใช้เป็นอาร์กิวเมนต์สำหรับ "set -" ซึ่งตั้งค่า $ 1 และ $ 2 เป็นค่านั้น เพื่อการอ่านที่ดีขึ้นฉันต้องการใช้ $ width และ $ height แทนดังนั้นฉันจึงตั้งค่าให้เหมาะสม ใน wmctrl เรียกใช้ตัวแปรนี้เพื่อคำนวณความกว้างและความสูงของหน้าต่างใหม่
Florian Diesch

ฉันไม่ทราบวิธีการทำให้ขนาดของจอภาพเป็นหน้าต่างถ้าหน้าจอของคุณถูกยืดบนจอภาพหลายจอและฉันไม่มีจอภาพที่สองรอบลองบิต อาจมีใครสามารถใช้ xrandr เพื่อรับความละเอียดแล้วใช้ตำแหน่งหน้าจอเพื่อค้นหาว่ามันคือจอภาพใด การทำให้ถูกต้องด้วยตัวเลือกทั้งหมดสำหรับการหมุนการสะท้อนการปรับขนาด ... และตำแหน่งจอภาพญาติทั้งหมดที่เป็นไปได้อาจทำให้ยุ่งยาก บางทีมันอาจจะคุ้มค่าคำถามของตัวเอง ...
Florian Diesch

ขอบคุณสำหรับข้อมูลพิเศษ ฉันสังเกตเห็นความแปลกประหลาดเล็กน้อยกับพิกัด Y (wmctrl ของ Y = 0 อยู่ด้านล่างแถบเมนูอูบุนตูในขณะที่ xwininfo ของ Y = 0 เป็นด้านบนของหน้าจอ) แต่ฉันควรจะแก้ไขมันได้ สิ่งนี้ยังคงไม่ดีเท่า autohotkey แต่อาจเป็นเพราะการแยกส่วนของ 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 ด้านบนซ้ายที่มีช่องว่างอยู่ ในคำตอบ @ Florian ของ awk'ing สำหรับAbsolute upper-left X: 123จะส่งผลให้ไม่ได้อยู่ในupper-left123

เพื่อเพิ่มเติมต่อไปเกี่ยวกับวิธีการขยายที่ดีกว่านี้; คุณสามารถใช้ตัวอย่างด้านบนและทำบางสิ่งเช่น ...

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.