我有一台将在少数用户和我之间共享的机器。其他用户来自Windows环境;我认为 Xfce 对他们来说很棒,但对我自己来说,我总是想使用 i3。
所以我正在寻找的行为是:
如果我登录,我希望 i3 被选中,
如果其他人登录(甚至是新添加的帐户),他们将获得 Xfce4。
我发现只有两种方法可以做到:
启用用户列表,它会记住每个用户的最后选择,
但我想避免暴露列表(这里的用户名也很短,因此键入它们实际上要快得多)。
每次手动切换,
但这很麻烦,如果我忘记将其切换回来,可怜的人就会被 i3 弄糊涂。
是否可以覆盖单个用户的选择?即使我的用户设置忽略了开关并且无论如何总是使用 i3 也没关系。
(这是 Debian Jessie,顽固地坚持使用 SysV init;使用 lightdm。不过,我也对 lightdm 之外的解决方案感兴趣。)
我正在尝试查找 Chromium 存储会话存储的文件。在~/.config/chromium/Default/Session Storage
有这似乎看好几个文件:
user@desktop-04:~/.config/chromium/Default/Session Storage$ ls -hl
total 44K
-rw------- 1 user students2016 33K Mar 10 13:25 000005.ldb
-rw------- 1 user students2016 5K Mar 10 13:50 000005.log
-rw------- 1 user students2016 0 Mar 10 13:12 LOCK
-rw------- 1 user students2016 284 Mar 10 13:25 LOG
-rw------- 1 user students2016 97 Mar 10 13:25 MANIFEST-000001
Run Code Online (Sandbox Code Playgroud)
我可以在 中找到键/值对,000005.log
但这只是日志。不是存储信息的实际文件。检查其他文件不会显示 Chromiums 会话存储中的数据。怀疑它在000005.ldb
. 但不知道如何访问它。我对它做了一个 hexdump 没有给我任何有用的信息。
有谁知道会话存储确切存储在哪个文件中,也许还知道我可以使用哪个工具访问它?
如果我打开终端并执行w
命令,它将显示:
user tty7 :0 12:04 39:56 36.87s 0.06s /sbin/upstart -
Run Code Online (Sandbox Code Playgroud)
现在,如果打开terminator
或xterm
执行w
命令,那么它将在w
命令的输出中显示它的条目,例如
user tty7 :0 12:04 39:56 36.87s 0.06s
/sbin/upstart -
user pts/2 :0.0 12:50 1.00s 0.02s 0.00s w
Run Code Online (Sandbox Code Playgroud)
但是当我打开gnome-terminal
或时它不会显示新条目xfce4-terminal
。为什么它为终结者而不是 xfce4-terminal 显示新会话?
有没有办法从正在运行的tmux
会话中分离所有终端,除了我实际使用的终端?
看起来有点奇怪,但这样做的意义在于为最终用户远程会话保留一些“持久性”层,同时确保用户仅在“一个外壳”上使用系统。
正如解释在这里,人们很容易根据用户名创建会话:
if [[ "$TMUX" == "" ]] &&
[[ "$SSH_CONNECTION" != "" ]]; then
# Attempt to discover a detached session and attach
# it, else create a new session
WHOAMI=$(whoami)
if tmux has-session -t $WHOAMI 2>/dev/null; then
tmux -2 attach-session -t $WHOAMI
else
tmux -2 new-session -s $WHOAMI
fi
fi
Run Code Online (Sandbox Code Playgroud)
但我也想确保最后一个连接的终端是唯一一个仍然连接到用户tmux
会话的终端。
它有办法做到这一点吗?我也接受基于screen
(或其他多路复用器)的解决方案;)