एक चल रहे एप्लिकेशन के विंडो आयाम सेट करना


28

मैं उबंटू (xfce या gnome) के भीतर और कमांड लाइन के माध्यम से एक एप्लिकेशन शुरू करने की कोशिश कर रहा हूं और सोच रहा था कि क्या किसी दिए गए ऐप के दिए गए विंडो के आयाम सेट करने का कोई सामान्य तरीका है जो वर्तमान में चल रहा है?

जवाबों:


18

यदि आप कुछ स्थापित करते हैं तो यह करना आसान है xdotool। तो आप कर सकते हैं:

xdotool search --name "window name" windowsize 300 400

खिड़की के शीर्षक में दिखने वाले नाम या रेग पूर्व के साथ "विंडो नाम" को बदलें (आप विंडो क्लास और कई अन्य चीजों द्वारा भी खोज सकते हैं), और विंडोज़ के बाद प्रदर्शित होने वाले दो नंबर क्रमशः चौड़ाई और ऊंचाई हैं। (आप पर्केंट्स आदि का उपयोग भी कर सकते हैं) man xdotoolएक बार इसे इंस्टॉल करने के बाद देखें ।

यदि आप ल्यूसिड या पहले के हैं, तो मैं एक नया संस्करण प्राप्त करने के लिए xdotool वेबसाइट पर जाने की सलाह देता हूं ।

उदाहरण के लिए, फ़ायरफ़ॉक्स का आकार बदलने के लिए:

xdotool search --name "Mozilla Firefox" windowsize 1024 768

3
वहाँ कैसे सजावट (शीर्षक पट्टी) के बिना फुलस्क्रीन खिड़की का आकार बदलने के लिए कोई रास्ता नहीं है? और स्क्रीन पर सटीक स्थिति सेट करें (जैसे x = 0, y = 0)? मैं इसे अधिकतम mplayer के लिए 800x600 x = 0 y = 0 पर जाने के लिए सेट करने का प्रयास कर रहा हूं और फिर कुछ मिनटों के बाद उसी फुलस्क्रीन मोड में। धन्यवाद
पीटर

15

अगर विंडो मैनेजर Xlib का समर्थन करता है तो वहाँ है। यह विंडो के आकार को 500x300 पर सेट करने के लिए पायथन का उपयोग करता है:

WIDTH, HEIGHT = 500, 300
import Xlib
import Xlib.display

display = Xlib.display.Display()
root = display.screen().root
windowID = root.get_full_property(display.intern_atom('_NET_ACTIVE_WINDOW'), Xlib.X.AnyPropertyType).value[0]
window = display.create_resource_object('window', windowID)
window.configure(width = WIDTH, height = HEIGHT)
display.sync()

हार्ड पार्ट को विंडो आईडी मिल रही है; उपरोक्त कोड में इसे सक्रिय विंडो की आईडी मिली। यदि आप दूसरी आईडी चाहते हैं, तो आप प्रत्येक विंडो का शीर्षक और पीआईडी ​​नियंत्रित करने के लिए कुछ इस तरह का उपयोग कर सकते हैं, और इसके आधार पर सही आईडी चुनें:

windowIDs = root.get_full_property(display.intern_atom('_NET_CLIENT_LIST'), Xlib.X.AnyPropertyType).value
for windowID in windowIDs:
    window = display.create_resource_object('window', windowID)
    name = window.get_wm_name() # Title
    prop = window.get_full_property(display.intern_atom('_NET_WM_PID'), Xlib.X.AnyPropertyType)
    pid = prop.value[0] # PID

Xlib

जब मुझे print pidमिलता है <Xlib.protocol.request.GetProperty serial = 15, data = {'bytes_after': 0, 'property_type': 6, 'value': (32, array('I', [5810L])), 'sequence_number': 15}, error = None>... वास्तविक पीआईडी ​​को अलग करने के लिए कोई सुझाव?
कावेरीम

NVM। यह संभव नहीं लगता है, लेकिन मैं के माध्यम से एक वैकल्पिक हल कर सकते हैं name
कावेरीम

1
@ खावेरिम हम्म। मुझे लगता है कि जब से मैंने इसे लिखा था, तब से यह एपीआई बदल गया था, जो कि केवल पीआईडी ​​हुआ करता था। मैं इस सवाल का जवाब अद्यतन, आपके द्वारा दिए गए मान ले जाना चाहते हैं get_full_propertyऔर कर .value[0]( valueएक है सरणी )
माइकल Mrozek

1
अजगर Xlib के माध्यम से स्थापित किया जा सकता है: sudo apt-get install अजगर-एक्सलिब (उबंटू पर)
टॉम

4

XFCE के लिए विशिष्ट pyxfce है जो आपको अजगर भाषा का उपयोग करने की अनुमति देगा । Pyxfce एक एपीआई है, जो अन्य बातों के अलावा, आपको विंडो मैनेजर के साथ संवाद करने की सुविधा देता है । कमांड लाइन से इसका उपयोग करने के लिए आपको पहले एक स्क्रिप्ट तैयार करनी होगी।

आपके उपयोग के आधार पर, एक्स विंडो आईडी का उपयोग करके एक्स-आधारित एपीआई का उपयोग करने का महत्व (जैसे कि एक और जवाब में अजगर-एक्सलिब या xdotools का उपयोग करके) बनाम अन्य जो स्ट्रिंग्स से मेल खाते विंडो टाइटल्स (जैसे wmctrl) का उपयोग करते हैं, यह है कि कोई भी नहीं हो सकता है विंडोज़ के बीच भ्रम, जिसके संबंधित शीर्षक में समान कीवर्ड हो सकते हैं।



0

मैंने पाया कि wmctrl ने मुझे सबसे अच्छा अनुकूल बनाया। यह एक छोटे पैकेज के रूप में, उबंटू के लिए और रास्पियन के लिए उपलब्ध है, और अन्य डिस्ट्रो के लिए भी संभव है।


हमारे पास एक उत्तर है जो wmctrl का उल्लेख करता है , लेकिन हमारे पास एक उत्तर नहीं है जो दिखाता है कि इसका उपयोग कैसे करना है; क्या आप प्रदर्शन के साथ अपने उत्तर का विस्तार कर सकते हैं, बस लोग इसे ले सकते हैं और इसे अपने विशेष उपयोग के लिए अनुकूलित कर सकते हैं? धन्यवाद!
जेफ स्कालर

यदि मेरे पास एक उदाहरण था, तो मैंने इसे निश्चित रूप से जोड़ा था। फिर भी, यह नहीं है कि मैनपावर किस लिए हैं?
कारेल एडम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.