ユーザー名でDISPLAY値を取得する

ユーザー名でDISPLAY値を取得する

ログインしたユーザーのDISPLAY値を取得するには、次のコマンドを実行します。

$ loginctl list-sessions
   SESSION        UID USER             SEAT            
        c2       1000 asif             seat0               
        c3       1001 john             seat1

次に、次のコマンドで SESSION 値のいずれかを使用します。

$ loginctl show-session -p Display -p Active c3
Display=:20
Active=yes

わかりましたDisplay=:20。ログインしたユーザーのユーザー名またはuidでこの値を簡単に取得する方法はありますか?

私も仕事をするために次のシェルスクリプトを書いたが、非常に冗長になった。

#!/bin/bash
clear
BASEDIR=$(dirname $0)
CUID=`id -u` 
SESSIONS=`loginctl list-sessions`
readarray -t SESSIONS <<< "$SESSIONS"
for LN in "${SESSIONS[@]}"
do
    W=($LN)
    SID="${W[0]}"
    USD="${W[1]}"
    USR="${W[2]}"
    SET="${W[3]}"
    if [ $CUID == $USD ]; then
        SINFO=(`loginctl show-session -p Display -p Active $SID`)
        DISPL="${SINFO[0]}" 
        DISP=( `echo $DISPL | cut -f2 -d=` )
        export DISPLAY=$DISP && /usr/bin/python $BASEDIR/run.pyw
    fi
done

私はLinux Mint XFCEを使用しています。

ベストアンサー1

これは、指定されたユーザーの表示を表示するスクリプトです。

このスクリプトの名前を指定しますshowuser

#!/bin/bash
loginctl show-session $(sudo loginctl -a show-user $1 | grep Display | sed 's/Display.//g') | grep Display

スクリプトを実行してユーザー名を入力すると、ディスプレイが返されます。

例:

~$ ./showuser john
Display=:20

おすすめ記事