startx
は、新しい仮想端末に新しいXサーバーを作成できます。ただし、バックグラウンドで実行しても、 Sudo startx &
、それでも新しい仮想端末に自動的に切り替わります。古い仮想端末を維持したまま、新しい仮想端末を作成することはできますか?
また、新しい端末のファイル名を知るにはどうすればよいですか? (以前は、tty
を使用して新しいウィンドウでチェックインできますが、古いウィンドウで同じことをするにはどうすればよいですか?)
X.orgを使用していると仮定すると、これは可能ではないようです。 Xサーバーは-novtswitch
と呼ばれる オプション をサポートしますが、これは、Xサーバーが起動するときではなく、終了するときにのみ適用されます。 Fedoraバグ#246267 での議論を考えると、このオプションは起動時にも適用されたようですが、Xサーバーが多くのハードウェアでクラッシュする原因となったため削除されました:Xサーバーはアクセスする必要があります起動時のビデオハードウェア。
次善の策は、短いフリッカーを別のvtに許可して、元に戻すことです。 Linuxでは、 openvt
を使用して新しい仮想端末でコマンドを実行し、 chvt
を使用して元に戻すことができます。
~/.xinitrc.chvt
を含むスクリプトを作成する
#!/bin/sh
echo "New X session running on vt$X_FGCONSOLE" >"$ORIGINAL_TTY"
chvt "$ORIGINAL_FGCONSOLE"
exec ~/.xinitrc
そして走る
ORIGINAL_FGCONSOLE=$(fgconsole) ORIGINAL_TTY=$(tty) openvt -s -- sh -c 'export X_FGCONSOLE=$(fgconsole); startx ~/.xinitrc.chvt -- vt$X_FGCONSOLE'
(startx
はワイルドカードを含む引数を台無しにするため、~/.xinitrc.chvt
ではなく別のスクリプトsh -c …
が必要です。また、startxの別の癖のために絶対パスを渡す必要があります。または、xinit
を直接呼び出して、独自にXAUTHORITY
を設定してください。)
このスクリプトを実行している場所によっては、fgconsole
を実行する権限がない可能性があります(「コンソールを参照するファイル記述子を取得できませんでした」)。これは、/dev/console
を開くことができなければ実行できないため他のユーザー(実際にはroot)が所有している場合。そうでなければ、元のコンソールに戻る方法を見つける方法がわかりません。 rootアクセス権がある場合の1つの解決策は、ORIGINAL_FGCONSOLE=$(fgconsole) …
を
ORIGINAL_FGCONSOLE=$(Sudo fgconsole)
fgconsole
を実行して次の行を追加することで、ルートにvisudo
を実行する権限をアカウントに付与します
zzy ALL = (root) NOPASSWD: /bin/fgconsole
アカウントに適用される他の行の後。 fgconsole
プログラムのバグを除外しても安全です。
¹ Linuxを使用している場合はX.orgを使用しており、Linuxを使用していない場合でも、X.orgを使用していることには大きな変更があります。