web-dev-qa-db-ja.com

root以外として別のXセッションでアプリケーションを起動します

非ルートアプリケーションのセッションでルートとしてXサーバーを起動する方法は?

次のようなものでなければなりません

xinit 'su -c openbox user' -- :1

しかし、働いています:)

4
kolypto

一時的な.xinitrcファイルを作成するのが唯一の方法のようです。スクリプトは次のとおりです。

#!/usr/bin/env bash

username="$USER"
let xdisplay=${DISPLAY:1}+1

# Temporary xinitrc
temp_xinit="$(tempfile -p '.xinit' -s 'rc')" || exit
trap "rm -f -- '$temp_xinit'" EXIT

# Launch X
echo "Sudo -u $username $@" > "$temp_xinit"
Sudo xinit "$temp_xinit" -- :$xdisplay

使用例:

$ Xnew.sh /usr/local/games/braid [..options...]
2
kolypto

試してみてください

su -c 'startx openbox -- :1' user

編集:また実行してみてください

X :1 &
su -c 'DISPLAY=:1 openbox &' user
3
user1686