বাশ স্ক্রিপ্ট থেকে উইন্ডো সর্বাধিক বা কমিয়ে আনা হয়েছে কীভাবে তা নির্ধারণ করবেন


11

আমার একটি বাশ স্ক্রিপ্ট রয়েছে যা আমার উইন্ডোজগুলি ডুয়াল-স্ক্রিন সেটআপে বাম স্ক্রিন থেকে ডান স্ক্রিনে নিয়ে যায়। বর্তমানে এটি যেভাবে কাজ করে তা হ'ল উইন্ডো আইডিগুলি সাইক্লিং করে যা প্রদত্ত হয় xdotool search --onlyvisible --maxdepth 2 --class ""এবং তারপরে পর্দার প্রস্থে ডানদিকে নিয়ে যায়। এটি ইতিমধ্যে কাজ করে ... যতক্ষণ না প্রশ্নে থাকা উইন্ডোটি সর্বাধিক বা ছোট করা না হয়।

উইন্ডোটির বর্তমান অবস্থা যাচাই করার জন্য যা দরকার তা হল। আমি একটি উত্তর পেয়েছি যা সেই বিটগুলি যুক্ত করতে এবং মুছে ফেলার উপায় সরবরাহ করে, তবে সেগুলি ইতিমধ্যে সেট করা আছে কিনা তা যাচাই করার উপায় কোথায়?

যদি এক্সডটুলের মাধ্যমে করা সম্ভব না হয় তবে উপরে উল্লিখিত কমান্ড দ্বারা প্রদত্ত উইন্ডো আইডিটি পুনরায় ব্যবহার করা উচিত।


আপনি devilspieঠিক কী ধরণের উইন্ডো কাজ করতে ডিজাইন করা হয়েছে তাও দেখতে পারেন । সুতরাং পুনরায়
পুনর্নির্মাণ

উত্তর:


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

একটি উইন্ডোতে যা সর্বোচ্চ (h + v) হয় এবং একই সময়ে বা ছোট হয়

_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
    
  • পদ্ধতি ওয়েল্যান্ডে কাজ করবে না!


1
দুর্দান্ত পরামর্শ +1। একটি মন্তব্য হিসাবে, আমি এটি চেষ্টা করেছি (লিনাক্স, এক্স 11 এর অধীনে) এবং কিছুটা ভিন্ন ফলাফল পেয়েছি। যখন উইন্ডো না লুকানো থাকে বা সর্বাধিক _NET_WM_STATE(ATOM)হয় না, তবে উত্তর হিসাবে প্রদর্শিত হয় না, খালি মান দিয়ে উপস্থিত হয় না। পরিবর্তে, এটি আউটপুট মোটেও নেই।
1024

@ জন 1024 আহ, ধন্যবাদ! এটি উত্তরে যুক্ত করবে।
জ্যাকব ভিলিজম

আমার সিস্টেমে এটি উভয় ক্ষেত্রে প্রদর্শিত হয়, এমনকি খালি থাকলেও।
v010dya

আমি যুক্ত করতে চাই যে উইন্ডো আইডিটি সিসিমাল নম্বর হিসাবে দেওয়া যেতে পারে, তাই হেক্সে রূপান্তর করার দরকার নেই। এই ক্ষেত্রে যদি কেউ সাহায্য করবে।
v010dya

@ v010dya ধন্যবাদ! আপডেট উত্তর দেখুন।
জ্যাকব ভ্লিজম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.