私は、Ubuntu Precise 12.04の多かれ少なかれ標準的なインストールを実行していますが、Unityデスクトップ環境で日常的なタスクを実行することに非常に満足しています。
ただし、プレイに関しては、LXDEの方がはるかに快適です(背景:現在の状態では、UnityはUnity 2DやLXDEなどよりもはるかに低いフレームレートを実現しています-既知のバグであり、作業中です)。
そのために、ゲーマーユーザープロファイルを作成し、LXDEデスクトップ環境のみを使用するように制限したいと考えています。
これをさらに詳しく説明すると、ブート後にログインするように求められた場合、ログイン画面にゲーマーユーザープロファイルのオプションとしてLXDEのみを表示し、標準ユーザープロファイルには使用するデスクトップ環境を選択するオプションが必要です。
役立つかもしれない洞察を事前に感謝します!
さて、LightDM(ログインマネージャ)を理解しているため、specificユーザーのデスクトップ環境を制限することはサポートされていないようです。それはすべてか無かの取引です。デフォルトでは、ユーザーがデスクトップ環境を選択すると、それがデフォルトのデスクトップ環境になります。次回ログインするとき、別のログインを選択しない限り、デフォルトにログインします。
ただし、ユーザーがこれを変更できないようにすることができます。このユーザーは引き続き別のデスクトップ環境を選択できますが、選択してもデフォルトは変更されません。あなたが人がそれを変えることを心配していないなら、これがこれを行う最も安全な方法であると信じています。あなたがしなければならないことは、.dmrc
ファイル(ホームディレクトリ、つまり/ home/userにある)を編集することだけです。これは、デフォルトのセッションが保存される場所です。そのファイルのSession
変数を任意の値に変更します。つまり、ubuntu
はデフォルトのUnity DE、ubuntu-2d
はUnity 2D、LXDE
はLXDEです。別のDEでログインしてもこれが変更されないようにするには、単に不変(変更不可)にすることができます。
Sudo chattr +i /home/user/.dmrc
これで、不変フラグを削除しない限り、誰もそのファイル(ルートおよびその他のプログラムを含む)を変更できなくなります。
Sudo chattr -i /home/user/.dmrc
このユーザーが別のDEでログインすることを絶対に望まない場合は、これを達成するための本当にハッキングな方法(つまり、ご自身の責任でこれを行う)を見つけました。私はちょっと退屈だったし、これは試して楽しいもののように思えた。 LightDMが見ることができるすべての異なるDEは、/usr/share/xsessions
として.desktop
ファイルとして保持されます。参考までに、ログイン画面に表示したくないものはすべて削除できます(ただし、すべてのユーザーに対しては削除されます)。これらのいずれかを開くと、かなり簡単です。デスクトップ上のすべてのショートカットと同様に、これらは基本的なデスクトップランチャーファイルです。各行にはExec
行が含まれており、ログイン画面でDEを選択すると実行されます(つまり、どのDEが起動されます)。これを利用して、ログインしているユーザーを確認します。ユーザーが制限ユーザーである場合、特定のDEを使用するように強制します。
まず、.desktop
内の各/usr/share/xsessions/
ファイルに対して、/usr/local/bin
内にスクリプトを作成する必要があります。私の例では、Unity DEであるubuntu.desktop
に対してこれを行う方法を示し、制限ユーザー(restricteduser)を使用するようにDEとしてLXDEを使用します。 LXDE.desktopを見ると、Exec
コマンドが/usr/bin/startlxde
であり、TryExec
コマンドがないことがわかります。 ubuntu.desktop
を開くと、Exec
コマンドがgnome-session --session=ubuntu
であり、TryExec
コマンドがunity
であることがわかります。 TryExec
コマンドは、そのように聞こえます。 Exec
コマンドを実行した後、TryExec
コマンドを実行しようとしますが、失敗してもクラッシュしません。
.desktop
ファイルから取得したコマンドを使用して、スクリプトを作成できます。それらを/usr/share/bin
に入れます。 Exec
用とTryExec
用の2つを作成する必要があります。次のようなことをします。
ubuntude.sh
#!/bin/bash
if [ `/usr/bin/whoami` = "restricteduser" ] ; then
/usr/bin/startlxde
else
gnome-session --session=ubuntu
fi
ubuntudetry.sh
#!/bin/bash
if [ `/usr/bin/whoami` != "restricteduser" ] ; then
unity
fi
ログインしているユーザーが制限付きユーザーであるかどうかをテストし、適切なDEを起動しています。次に、それらが実行可能であることを確認する必要があります。
Sudo chmod +x /usr/local/bin/ubuntude.sh
Sudo chmod +x /usr/local/bin/ubuntudetry.sh
ここで、実際のDEの代わりにスクリプトを呼び出すようにubuntu.desktop
を変更する必要があります。ファイル内のExec
行とTryExec
行をコメント化し、次のように置き換えます。
Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh
他のDEについてもこのプロセスを繰り返すだけです。 DEにTryExec
がない場合は、LXDEがTryExec
を使用しないため、detry.shスクリプトを作成する必要もありません。明らかにこれは少しハッキングであり、編集する前にファイルをバックアップする必要がありますが、ユーザーが正しいDEにログインしていることを絶対に確認する必要がある場合は機能します。
debian SqueezeおよびWheezyでは、1行で.xsessionrcを追加することもできます
sTARTUP = XXXをエクスポート
(XXXは強制セッションスクリプトです。上記のExec-Lineを参照してください)ユーザーのホームディレクトリで、ユーザーが選択した内容に関係なく特定のセッションタイプを強制します。
Ubuntuでも動作するはずです。
(/etc/X11/Xsession.d/40x11-common_xsessionrcおよび50x11-common_determine-startupを見て、これが機能する理由を確認してください)
Reverendj1からの答えは私のために働いていませんでした。理由は、Exec =で指定した値が直接実行されず、引数として/ etc/X11/Xsessionに渡されるためです。 (ソース: https://askubuntu.com/a/857420/873016 )
問題の別の解決策:
1。すべての/usr/share/xsessions/.desktopファイルをバックアップします
2。すべての/usr/share/xsessions/.desktopファイルを削除します
3。 /usr/share/xsessions/default.desktopのみを作成します
[Desktop Entry]
Name=Default
Comment=This session is the default session. It will look up the user specific desktop session in ~/.xsession.
Exec=default
「デフォルト」はXsessionの重要なWordであり、ユーザーのディレクトリで特定のセッションを検索します。
4。すべてのユーザー名に対して/home/{username}/.xsessionファイルを作成します。 「キオスクのような」アプリの場合、これは次のようになります。
#!/bin/bash
cd /home/{yourUsername}/ && ./startApplication.py
logout
たとえば別のユーザーが本格的なデスクトップマネージャーを起動できるようにする必要があります。次のようになります。
#!/bin/bash
exec icewm-session
Sudo chmod +x ~/.xsession
Lightdmを使用してubuntu 16.04でテスト済み