วิธีรับข้อมูลหน้าต่างที่แม่นยำ (มิติข้อมูล ฯลฯ ) ใน Linux (X)


22

ฉันจะรับข้อมูลหน้าต่างที่แม่นยำใน Linux ได้อย่างไร ฉันรู้ว่าฉันสามารถใช้ wmctrl เพื่อรับขนาดของหน้าต่างได้ แต่ขนาดที่แท้จริงของหน้าต่างอาจแตกต่างกันไปเนื่องจากการตกแต่งหน้าต่าง ฉันต้องการข้อมูลและวิธีการดังต่อไปนี้:

* precise window dimensions
* precise available screen space (excluding panels like gnome-panel)
* the ability to set a window to be a certain size, including decorations

อะไรจะเป็นวิธีที่ดีที่สุดในการทำเช่นนี้?

ขอบคุณล่วงหน้า!


หากคุณสนใจด้านไพ ธ อนมากขึ้นเราสามารถย้ายข้อมูลไปยังเว็บไซต์น้องสาวของเราเกี่ยวกับการเขียนโปรแกรม StackOverflow.com เพียงแจ้งให้เราทราบ
Gnoupi

@Gnoupi: ขอบคุณ แต่จริงๆแล้วนี่เป็น cross-post จาก SO ตามที่ผู้ใช้แนะนำฉันอาจได้รับคำตอบที่ดีกว่าที่นี่ คำถามเดิมที่stackoverflow.com/questions/3233660/...
mellort

โอเคฉันเข้าใจแล้ว ในกรณีนี้ฉันคิดว่าส่วนไพ ธ อนของคำถามของคุณสามารถแก้ไขได้ รู้รอบบน SU น่าจะใช้คำสั่งอื่นไม่ใช่โปรแกรม คำถามเกี่ยวกับ SO น่าจะเน้นไปที่การถามว่าจะทำยังไงในไพ ธ อน
Gnoupi

รับขนาดหน้าต่างด้วยการตกแต่ง: unix.stackexchange.com/questions/14159/ …
Ciro Santilli 事件改造中心中心法轮功六四事件

คำตอบ:


26

มีบางโปรแกรมบรรทัดคำสั่งที่อาจช่วย:

  • xwininfo: มันทำให้คุณมีขนาดของหน้าต่างไม่รวมการตกแต่งและตำแหน่งที่แน่นอน (ไปที่หน้าจอ) และญาติ (ไปยังพื้นที่สำหรับหน้าต่าง)
  • xdpyinfo: สิ่งนี้ให้ข้อมูลเพิ่มเติมเกี่ยวกับอุปกรณ์หน้าจอของคุณมากกว่าที่คุณอยากรู้ แต่มันก็มีบางแห่งในบางสิ่งบางอย่างที่ส่งออกเช่นตามมาด้วยscreen: #0dimension: 1024x768

มีวิธีรับข้อมูลรวมถึงการตกแต่งหรือไม่?
Victor

6

> ขนาดหน้าต่างที่แม่นยำ

ตัวอย่างต่อไปนี้ (จะทำงานอย่างน้อยใน sh, bash และ zsh) จะพิมพ์รูปทรงเรขาคณิตของหน้าต่างโดยมีและไม่มีกรอบสำหรับหน้าต่างทั้งหมดที่มี "KWrite" อยู่ในตำแหน่ง

windows="$(wmiface findNormalWindows "KWrite" "" "" "" "" "")"
for window in $(echo $windows); do
{
  echo $window
  wmiface framePosition $window
  wmiface frameSize $window
  wmiface windowPosition $window
  wmiface windowSize $window
  echo
} done

> พื้นที่หน้าจอที่มีความแม่นยำ (ยกเว้นแผงเช่น gnome-panel)

xrandr

ตัวอย่างเช่น:

xrandr | head -n1 | cut -d, -f2 | cut -d" " -f3-5

เอาท์พุทในกรณีของฉัน:

4400 x 2560

ไม่แน่ใจว่าจะแยกพาเนลออกได้อย่างไร - ถ้าคุณมีจอภาพมากกว่าหนึ่งจอพวกเขาอาจอยู่กลางหน้าจอเสมือนดังนั้นเรขาคณิตของหน้าจอที่ไม่มีแผงอาจซับซ้อนกว่า "พื้นที่หน้าจอที่มีอยู่"

> ความสามารถในการตั้งค่าหน้าต่างให้มีขนาดที่แน่นอนรวมถึงการตกแต่ง

wmiface setFrameGeometry $window $x $y $width $height

อ่าน wmiface README สำหรับคำสั่งที่เป็นไปได้


2
wmiface ไม่ได้รับการบรรจุด้วย distros (ใด ๆ ?) ทั้งหมด ฉันสามารถติดตั้งบน Mint โดยใช้แพ็คเกจ ubuntu จากที่นี่: kde-apps.org/content/show.php?content=40425 README ที่กล่าวถึงสามารถพบได้ที่นี่: gitorious.org/wmiface/wmiface/source/…
slinkp

ดูส่วนที่สองของความคิดเห็นนี้unix.stackexchange.com/a/156349/84607สำหรับวิธีการอื่นในการรับรูปทรงเรขาคณิตเต็มรูปแบบรวมถึงการตกแต่งโดยใช้การรวมกันของ xwininfo, xdotool และ xprop
slinkp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.