ログインしたユーザーの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