新しい仮想端末に切り替えずにバックグラウンドでstartxを実行します。

新しい仮想端末に切り替えずにバックグラウンドでstartxを実行します。

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 …startxxinitXAUTHORITY

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を使用します。これはまだ良い変化です。

関連情報