web-dev-qa-db-ja.com

現在のワークスペースの名前を検索するにはどうすればよいですか?

Bashスクリプトが現在のワークスペース(仮想デスクトップ)の名前を検索する方法はありますか?

これは、シェルが作成されたデスクトップに基づいて.bashrcファイルの動作をカスタマイズするような場合に非常に役立ちます。

10
DonGar

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

そのため、現在のみを取得するには、*のgrepを使用します。

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

お役に立てれば!

13
Terrance

Unityのビューポート

Unityを使用している場合、現在のビューポートを直接取得することはできません

wmctrl -d

unityにはwmctrl -dによって直接検出されないビューポートがあるためです。出力には1つのワークスペースのみが表示されます。

0  * DG: 5040x2100  VP: 1680,1050  WA: 59,24 1621x1026  N/A
  • 私の解像度は1680 x 1050です(xrandrから)
  • スパニングワークスペース(すべてのビューポート)は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、または現在のビューポートが何であれ出力します。ビューポート設定に含まれる可能性のある行/列を自動的にカウントします。

説明

enter image description here

スクリプト

  • xrandrから1つのビューポートのサイズ(解像度)を取得します。可能な追加のモニターも含まれます。
  • スパニングワークスペース上の現在の位置を取得します
  • ビューポート設定の列/行の数を計算します
  • それから、現在のビューポートを計算します
10
Jacob Vlijm

少なくともGnome Shellでは、おそらく他のWMでも、Xserverに直接問い合わせることができます(Waylandの場合はわかりません)。

[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

そして、あなたは必要なものを得るために少し情報をマッサージすることができます。

3
Rmano