আমি কীভাবে বর্তমান ওয়ার্কস্পেসের নামটি সন্ধান করব?


11

বর্তমান কার্যক্ষেত্র (ভার্চুয়াল ডেস্কটপ) এর নাম অনুসন্ধান করার জন্য কোনও বাশ স্ক্রিপ্টের কোনও উপায় আছে কি?

ডেস্কটপে শেলটি তৈরি করা হয়েছিল তার ভিত্তিতে আমার .bashrc ফাইলে আচরণগুলি কাস্টমাইজ করার মতো জিনিসগুলির জন্য এটি সত্যিই দরকারী বলে মনে হচ্ছে।


আপনার উইন্ডো ম্যানেজারটি কী?
জ্যাকব ভিলিজম

আমি উবুন্টুতে ইনস্টল করা দারুচিনি ডেস্কটপ ব্যবহার করছি। আমি ভেবেছিলাম আমি বললাম, তবে আমি যখন প্রশ্নটি সম্পাদনা করি তখন অবশ্যই আমি খুব বেশি টানতে পারি।
ডোনগার

1
দারুচিনিয়ের অধীনে, এটি ডেস্কটপের নামে শেষ শব্দটি দেয়। আমার ব্যবহারের ক্ষেত্রে এটি যথেষ্ট ভাল। ডেস্কটপ =wmctrl -d | grep '*' | sed 's/.* //g'
ডোনগার

উত্তর:


13

আপনি wmctrl -dসমস্ত ওয়ার্কস্পেসের তালিকাতে এটি করতে পারেন । *বর্তমান কর্মক্ষেত্র প্রতিনিধিত্ব করে:

~$ wmctrl -d
0  * DG: 3840x1080  VP: 0,0  WA: 0,25 3840x1055  1
1  - DG: 3840x1080  VP: N/A  WA: 0,25 3840x1055  2
2  - DG: 3840x1080  VP: N/A  WA: 0,25 3840x1055  3
3  - DG: 3840x1080  VP: N/A  WA: 0,25 3840x1055  4

সুতরাং, কেবল বর্তমান পেতে, এর জন্য গ্রেপ করুন *:

~$ wmctrl -d | grep -w '*'
0  * DG: 3840x1080  VP: 0,0  WA: 0,25 3840x1055  1

আশাকরি এটা সাহায্য করবে!


যদি ওপি wmctrl -d
ityক্য

@ জ্যাকবভিলিজম তারপরে যদি কেবলমাত্র একটি ওয়ার্কস্পেস থাকে তবে ওপি সম্ভবত এটি নিয়ে চিন্তা করবে না। :)
টেরেন্স

অবশ্যই তিনি করবেন, তবে তারপরে এগুলিকে ভিউপোর্ট বলা হয় এবং এগুলি থেকে সরাসরি পুনরুদ্ধারযোগ্য নয় wmctrl -d
জ্যাকব Vlijm

@ জ্যাকবভ্লিজম ভাল, একটি জ্বলজ্বল আলো হ'ল ityক্য আর ডিফল্ট থাকবে না এবং 18.04 প্রকাশের পরে চলে যাবে। : ডি
টেরেন্স

আমি আসলে এটি পছন্দ করি এবং এটি সম্ভবত কাঁটাযুক্ত হবে।
জ্যাকব Vlijm

11

Ityক্যতে ভিউপোর্টস

আপনি যদি ইউনিটি ব্যবহার করছেন তবে বর্তমান ভিউপোর্টটি সরাসরি থেকে পুনরুদ্ধার করা যাবে না

wmctrl -d

যেহেতু ইউনিটির ভিউপোর্ট রয়েছে, যা সরাসরি দ্বারা সনাক্ত করা যায় না wmctrl -d। আউটপুট শুধুমাত্র একটি কর্মক্ষেত্র প্রদর্শন করবে:

0  * DG: 5040x2100  VP: 1680,1050  WA: 59,24 1621x1026  N/A
  • যেখানে আমার রেজোলিউশনটি 1680 x 1050 (থেকে xrandr)
  • spanning কর্মক্ষেত্র (সমস্ত viewports) হল 5040x2100। এটি 3x2 ভিউপোর্ট: 5040/1680 = 3 এবং 2100/1050 = 2।
  • আমি বর্তমানে (ভিউপোর্ট-) পজিশনে 1680,1050(x, y)

নীচের স্ক্রিপ্টটি এই তথ্য থেকে বর্তমান ভিউপোর্ট গণনা করে:

#!/usr/bin/env python3
import subprocess

def get_res():
    # get resolution
    xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
    pos = xr.index("current")
    return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]

def current():
    # get the resolution (viewport size)
    res = get_res()
    # read wmctrl -d
    vp_data = subprocess.check_output(
        ["wmctrl", "-d"]
        ).decode("utf-8").split()
    # get the size of the spanning workspace (all viewports)
    dt = [int(n) for n in vp_data[3].split("x")]
    # calculate the number of columns
    cols = int(dt[0]/res[0])
    # calculate the number of rows
    rows = int(dt[1]/res[1])
    # get the current position in the spanning workspace
    curr_vpdata = [int(n) for n in vp_data[5].split(",")]
    # current column (readable format)
    curr_col = int(curr_vpdata[0]/res[0])
    # current row (readable format)
    curr_row = int(curr_vpdata[1]/res[1])
    # calculate the current viewport
    return curr_col+curr_row*cols+1

print(current())

ব্যবহার করা:

  1. ইনস্টল করুন wmctrl

    sudo apt install wmctrl
    
  2. কমান্ড দিয়ে এটি চালান

    python3 /path/to/get_viewport.py
    

    এটি 1, 2, 3 বা বর্তমান ভিউপোর্ট যা-ই হোক না কেন আউটপুট দেয়। এটি স্বয়ংক্রিয়ভাবে সারি / কলামগুলি গণনা করে আপনার ভিউপোর্ট কনফিগারেশনটি অন্তর্ভুক্ত থাকতে পারে।

ব্যাখ্যা

এখানে চিত্র বর্ণনা লিখুন

এই পান্ডুলিপি

  • xrandrসম্ভাব্য অতিরিক্ত মনিটর সহ এক ভিউপোর্ট (রেজোলিউশন) এর আকার পায় ।
  • বিস্তৃত ওয়ার্কস্পেসে বর্তমান অবস্থান পায়
  • আপনার ভিউপোর্ট সেটআপে কলাম / সারিগুলির সংখ্যা গ্যালকুলেট করে
  • সে থেকে এটি বর্তমান ভিউপোর্ট গণনা করে

1
আমি Unক্য সম্পর্কে যতই অনুভব করি না কেন, এই স্ক্রিপ্টটি সত্যিই ভালভাবে কাজ করে! সুন্দরভাবে সম্পন্ন! +1
টেরেন্স

3

কমপক্ষে জিনোম শেল, তবে সম্ভবত অন্যান্য ডাব্লুএম-তেও আপনি সরাসরি জাস্টারভারটি জানতে চাইতে পারেন (যদি ওয়েল্যান্ডে থাকেন তবে কোনও ধারণা নেই)।

[romano:~/tmp] % desktop=$(xprop -root -notype  _NET_CURRENT_DESKTOP | perl -pe 's/.*?= (\d+)/$1/') 
[romano:~/tmp] % echo $desktop
1

মূলত, কমান্ডটি xpropফিরে আসবে

 [romano:~/tmp] % xprop -root -notype  _NET_CURRENT_DESKTOP
 _NET_CURRENT_DESKTOP = 1

এবং তারপরে আপনার যা প্রয়োজন তা পেতে আপনি কিছুটা তথ্য ম্যাসেজ করতে পারেন।


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