यह कैसे निर्धारित किया जाए कि विंडो को बैश स्क्रिप्ट से अधिकतम या न्यूनतम किया जाए


11

मेरे पास एक बैश स्क्रिप्ट है जो मेरी खिड़कियों को बाईं स्क्रीन से दाईं स्क्रीन में दोहरी स्क्रीन सेटअप में ले जाती है। वर्तमान में जिस तरह से यह काम करता है वह खिड़की आईडी के माध्यम से साइकिल चला रहा है जो xdotool search --onlyvisible --maxdepth 2 --class ""उसके द्वारा दिया गया है और फिर स्क्रीन चौड़ाई द्वारा दाईं ओर ले जाता है। यह पहले से ही काम करता है ... जब तक कि प्रश्न में खिड़की अधिकतम या न्यूनतम न हो।

तो क्या जरूरत है खिड़की की वर्तमान स्थिति की जांच करने का एक तरीका है। मुझे एक उत्तर मिला है जो उन बिट्स को जोड़ने और हटाने का तरीका प्रदान करता है, लेकिन अगर वे पहले से ही सेट हैं तो जांच करने का तरीका कहां है?

यदि xdotool के माध्यम से करना संभव नहीं है , तो ऊपर बताए गए कमांड द्वारा प्रदान की गई विंडो आईडी का पुन: उपयोग करना संभव है।


आप यह भी देख सकते devilspieहैं कि इस तरह की खिड़की के काम को करने के लिए कौन सा डिज़ाइन किया गया है। तो कोई ज़रूरत नहीं है, बस कॉन्फ़िगर करें
Ciprian Tomoiagă

जवाबों:


11

विंडो स्थिति पर जानकारी प्राप्त करें

आप कमांड से जानकारी (और भी बहुत कुछ) प्राप्त कर सकते हैं:

xprop -id <window_id>

जो आप विशेष रूप से ढूंढ रहे हैं उसे पाने के लिए:

xprop -id 0x04c00010 | grep "_NET_WM_STATE(ATOM)"

आउटपुट जैसा दिखेगा:

_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_HIDDEN

एक खिड़की पर जो अधिकतम (एच + वी) है और एक ही समय में, या बस कम से कम

_NET_WM_STATE(ATOM) =

(या बिल्कुल भी आउटपुट नहीं) अगर उनमें से कोई भी मामला नहीं है।

ज्यादा मस्ती

बेशक, विभिन्न भाषाओं का उपयोग करके, आप नीचे दिए गए अजगर स्निपेट की तरह, Wnck का उपयोग कर सकते हैं । ( विंडो-शफलर से स्निपेट )। टुकड़ा एक सूची आउटपुट, खिड़की नाम दिखा + या तो Trueया False(कम से कम)।

#!/usr/bin/env python3
import gi
gi.require_version('Wnck', '3.0')
from gi.repository import Wnck


def get_winlist(scr=None, selecttype=None):
    """
    get the window list. possible args: screen, select_type, in case it is
    already fetched elsewhere. select type is optional, to fetch only
    specific window types.
    """
    if not scr:
        scr = Wnck.Screen.get_default()
        scr.force_update()
    windows = scr.get_windows()
    if selecttype:
        windows = [w for w in windows if check_windowtype(w, selecttype)]
    return windows

wlist = get_winlist()
for w in wlist:
    print(w.get_name(), ",", w.is_maximized())

आउटपुट जैसा दिखता है:

Wnck.Window - Classes - Wnck 3.0 - Mozilla Firefox , True
Postvak IN - vlijm@planet.nl - Mozilla Thunderbird , True
Showtime , False
settingsexample.vala - Visual Studio Code , False
*Niet-opgeslagen document 1 - gedit , False
desktop_weather , False
Tilix: Standaard , False

एनबी

  • xpropदोनों हेक्स (उदाहरण के लिए आउटपुट से wmctrl) और दशमलव (उदाहरण के लिए आउटपुट से xdotool) आईडी को समान रूप से उपयोग करेगा या तो उपयोग करेगा:

    xprop -id 111371626
    

    या

    xprop -id 0x06a3656a
    
  • Wayland पर काम नहीं करेंगे तरीके!


1
बहुत बढ़िया सुझाव +1। एक टिप्पणी के रूप में, मैंने इसे (लिनक्स, एक्स 11 के तहत) आज़माया और थोड़ा अलग परिणाम मिला। जब एक खिड़की न तो छिपी होती है और न ही अधिकतम _NET_WM_STATE(ATOM)होती है, तो जैसा कि उत्तर में दिखाया गया है, खाली मान के साथ दिखाई देती है। इसके बजाय, यह आउटपुट में बिल्कुल नहीं है।
जॉन 1024

@ जॉन 1024 आह, धन्यवाद! इसे उत्तर में जोड़ देंगे।
जैकब व्लिजम

मेरे सिस्टम पर यह किसी भी स्थिति में दिखाया जाता है, भले ही खाली हो।
v010dya

मैं जोड़ना चाहता हूं कि विंडो आईडी cecimal नंबर के रूप में दी जा सकती है, इसलिए हेक्स में बदलने की कोई आवश्यकता नहीं है। बस मामले में यह किसी की मदद करेगा।
v010dya

@ v010dya धन्यवाद! अद्यतन उत्तर देखें।
जैकब व्लिजम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.