कमांड लाइन के माध्यम से स्क्रीन पर विंडो के आकार और एप्लिकेशन का स्थान कैसे सेट करें?


33

मैं चाहता हूं कि फ़ायरफ़ॉक्स विंडो एक विशिष्ट आकार में खोली जाए, और स्क्रीन पर एक शेल कमांड का उपयोग करके स्थान, उदाहरण के लिए:

firefox myfile.html size 800x600 location bottom-left

क्या ऐसी कोई आज्ञा है?


मैं ऐसा करने में कामयाब रहा (इस मंच की मदद से), हालांकि अगर आपको कोई अन्य समाधान मिल जाए, तो कृपया मुझे बताएं क्योंकि यह शायद अधिक मजबूत होगा: unix.stackexchange.com/questions/40209/…
इमानुएल

जवाबों:


20

यहां योकाई द्वारा उत्तर का एक सामुदायिक संस्करण है जो रुडोल्फ ओलह द्वारा पेश किए गए उदाहरणों को शामिल करता है ।


आप xdotoolखिड़की के आकार और स्थान को नियंत्रित करने के लिए नामक उपकरण का उपयोग कर सकते हैं । इतना ही नहीं, किसी भी स्क्रिप्ट आप में लिखने bashका उपयोग करते हुए xdotool, एक पूरी तरह से विस्तृत विंडो के साथ काम करने के लिए सेटअप किया जा सकता है और यह विंडो का आकार सेट करने के लिए और एक्स पटकथा जा सकता है: जोड़ तोड़ द्वारा y निर्देशांक mousemoveऔर clickआदेशों।

  1. विंडो आईडी ढूंढें:

    xdotool search --onlyvisible --name firefox
  2. विंडो का आकार सेट करें

    xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
  3. खिड़की को हिलाएं

    xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y

उदाहरण के लिए, अगर फ़ायरफ़ॉक्स के लिए विंडो आईडी 123 है तो आप ऐसा करेंगे:

xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080

नीचे-बाएँ स्थिति को आपके स्क्रीन रिज़ॉल्यूशन के आधार पर पता लगाना होगा।


1
वहाँ के साथ एक बग है xdotool, wmctrlआदि .. और Ubuntu, XFCE (मेरे पास है): यदि विंडो पहले से ही पूर्ण स्क्रीन मोड में शुरू किया है, आप इसे अब और नहीं ले जा सकते हैं: bugs.launchpad.net/ubuntu/+source/unity/ + बग / 971147
ThePhi

19

जहां तक ​​मुझे पता है, यह संभव नहीं है क्योंकि फ़ायरफ़ॉक्स खिड़की को नियंत्रित करने के लिए आदेशों को स्वीकार नहीं करता है। यह भी (ज्यादातर) विंडो मैनेजर की जिम्मेदारी है, इसलिए मुझे संदेह है कि ऐसा करने के लिए कभी भी पैरामीटर होंगे। हालाँकि, आप विंडो को wmctrl से नियंत्रित कर सकते हैं , लेकिन यह थोड़ा मुश्किल है:

#!/bin/sh

firefox -new-instance -new-window "http://www.reddit.org" &

# Process ID of the process we just launched
PID=$!

# Window ID of the process...pray that there's     
# only one window! Otherwise this might break.
# We also need to wait for the process to spawn
# a window.
while [ "$WID" == "" ]; do
        WID=$(wmctrl -lp | grep $PID | cut "-d " -f1)
done
# Set the size and location of the window
# See man wmctrl for more info
wmctrl -i -r $WID -e 0,50,50,250,250

इसे करने के लिए अधिक चतुर तरीके हो सकते हैं, और फ़ायरफ़ॉक्स के साथ कुछ अंतर-समस्याएँ हैं (जैसे कि कोई अन्य उदाहरण नहीं चल रहा है) लेकिन यह आपको जाना चाहिए।


1
जरा ध्यान दें। यदि विंडो अधिकतम हो, तो आकार परिवर्तन काम नहीं करेगा। तो आपको इस संपत्ति को पहले निष्क्रिय करना होगा: wmctrl -i -r $ WID -b remove, maximized_vert; wmctrl -i -r $ WID -b remove, maximized_horz; उसके बाद मैं फ़ायरफ़ॉक्स विंडो का आकार बदलने में सक्षम था।
ka3ak

3

अतीत में मैंने एक HTML दस्तावेज़ बनाया है जो जावास्क्रिप्ट के साथ विंडो का आकार निर्धारित करेगा, फिर उस पृष्ठ पर पुनर्निर्देशित करूँगा जिसे मैं चाहता था। यह एक बेवकूफ हैक है, लेकिन हे, यह काम करता है।


ऐसा लगता है कि यह अब काम नहीं करता है। जाहिरा तौर पर, window.resizeTo का केवल तभी प्रभाव पड़ता है जब विंडो एक पॉपअप होती है जो window.open के माध्यम से बनाई जाती है।
हुगोमग

2

मुझे नहीं लगता कि यह केवल शेल कमांड द्वारा संभव है, क्योंकि इसका आपके विंडो मैनजर से कोई लेना-देना नहीं है।
मैंने wmctrl और डेविलस्पी के बारे में सुना है जो इसे प्रभावित कर सकते हैं। लेकिन मुझे संदेह है कि इसे प्राप्त करने का एक तरीका है जो आपके उदाहरण में लिखा गया है जितना सरल है।


1

मेरे द्वारा हमेशा ऐसा ही किया जाता है। हालाँकि, मैं DevilsPie2 का उपयोग करता हूं, क्योंकि यह अधिक मजबूत है। यह LUA स्क्रिप्टिंग भाषा का उपयोग करता है, जो बहुत मुश्किल नहीं है।

यहां थंडरबर्ड के लिए मेरी लुआ स्क्रिप्ट है, जिसे मैं खुलने पर दूर की निगरानी (लैपटॉप स्क्रीन) पर खोलना चाहता हूं:

if (get_window_name()=="Mozilla Thunderbird") then
   pin_window()
   set_window_geometry( 50, 10, 1220, 780 )
end

where 50 = X coordinate (for upper-left corner of the window)
      10 = Y coordinate ( " " )
    1220 = window width
     780 = window height

इसे सेट करने के लिए, आप अपने होम कॉन्फ़िगरेशन में एक निर्देशिका बनाएँ (Ubuntu- जैसे वितरण पर) जिसका नाम devilspie2 है, जैसे /home/$USERNAME/.config/devilspie2

थंडरबर्ड के लिए, मैंने thunderbird.lua बनाया, हालांकि फ़ाइल नाम कोई मायने नहीं रखता। मेरे पास प्रत्येक एप्लिकेशन के लिए एक अलग फ़ाइल नाम है, यदि आप चाहें तो सब कुछ एक स्क्रिप्ट फ़ाइल में डाल सकते हैं। लॉगिन करते समय स्वचालित रूप से शुरू करने के लिए devilspie2 सेट करें, जैसे /home/$USERNAME/.config/autostart/devilspie2.desktop

आपके लुआ लिपि में उपलब्ध विभिन्न विकल्पों के बारे में अच्छे पृष्ठ का लिंक यहां दिया गया है: https://github.com/gusnan/devilspie2/blob/master/README

एक नोट: स्क्रिप्ट को निष्पादन योग्य नहीं होना चाहिए। मेरा 664 है और काम ठीक है। मेरे द्वारा नियंत्रित अन्य कार्यक्रमों में से कुछ में openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload, और yad हैं। मैं उन पर pin_window का उपयोग करता हूं ताकि वे सभी डेस्कटॉप पर दिखाई दें, साथ ही एप्लिकेशन के आधार पर अन्य कमांड।


LXDE के साथ काम नहीं करता है। बिल्कुल नहीं खिड़की की घटना को मान्यता दी जाती है (कुछ भी नहीं चल रहा है जब मुद्रित होता है devilspie2 --debug)
जॉन स्मिथ वैकल्पिक

0

यह स्थिति की समस्या को हल नहीं करता है, लेकिन कम से कम आप आयाम सेट कर सकते हैं:

firefox -width 200 -height 500
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.