startx
新しい仮想端末から新しいXサーバーを作成する機能。しかし、バックグラウンドで実行しても、つまり。sudo startx &
、まだ自動的に新しい仮想端末に切り替わります。既存の端末を維持しながら新しい仮想端末を作成できますか?
また、新しい端末のファイル名をどうやって知ることができますか? (以前はtty
新しいウィンドウを使用してチェックインできましたが、以前のウィンドウで同じ機能をどのように実装しますか?)
ベストアンサー1
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'
~/.xinitrc.chvt
(ワイルドカードを含むパラメータを混乱させる可能性があり、startxの別の特性のために絶対パスを渡す必要があるため、別のスクリプトが必要です。または直接呼び出して自分で設定してください。)sh -c …
startx
xinit
XAUTHORITY
fgconsole
このスクリプトを実行している場所によっては開くことができるはずです/dev/console
が、他のユーザー(実際にはroot)がそれを持っている場合は実行権限がない可能性があります(「コンソールを参照するファイル記述子を取得できません」)。そうしないと、元のコンソールに戻る方法が見つかりません。ルートアクセス権がある場合の1つの解決ORIGINAL_FGCONSOLE=$(fgconsole) …
策
ORIGINAL_FGCONSOLE=$(sudo fgconsole)
次の行を実行して追加して、アカウントfgconsole
にrootとして実行する権限を付与します。visudo
zzy ALL = (root) NOPASSWD: /bin/fgconsole
あなたのアカウントに適用される他の行の後ろに。プログラムにバグがない限り、これは安全ですfgconsole
。
1 Linuxを使用する場合はX.orgを使用し、Linuxを使用しない場合はX.orgを使用します。これはまだ良い変化です。