我试图找到 startx 用来启动 i3 窗口管理器的配置文件。
奇怪的是,grep -r i3
在~
and 中没有返回相关结果/etc/X11/
。
我检查了我能想到的每个文件。我的~
目录中没有任何.x*
文件。子目录中没有任何.x*
文件/etc/X11
对 i3 有任何引用。我查了一下.xinitrc
,.Xsession
等
但是......当我登录时,我可以运行startx
并且 i3 神奇地启动。我完全困惑。
在 odroid 上运行 Ubuntu,但这应该没什么区别。
如果有区别,我在创建用户之前以 root 身份安装了 i3。
cat /etc/issue
Ubuntu 16.04.1 LTS \n \l
uname -a
Linux odroid 3.10.96-113 #1 SMP PREEMPT Wed Jul 6 22:19:28 UTC 2016 armv7l armv7l armv7l GNU/Linux
Run Code Online (Sandbox Code Playgroud)
正如您在下面看到的,没有地方可以隐藏:
root@odroid:/home/matt# find / -name *xinit*
/var/lib/dpkg/info/xinit.conffiles
/var/lib/dpkg/info/xinit.list
/var/lib/dpkg/info/xinit.md5sums
/var/lib/dpkg/info/xinit.postinst
/etc/X11/xinit
/etc/X11/xinit/xinitrc.d
/etc/X11/xinit/xinitrc
/usr/share/doc/xinit
/usr/share/man/man1/xinit.1.gz
/usr/bin/xinit
root@odroid:/home/matt#
root@odroid:/home# grep -r 'exec i3'
matt/.config/i3/config_bak:bindsym $mod+Return exec i3-sensible-terminal
matt/.config/i3/config:bindsym $mod+Return exec i3-sensible-terminal
root@odroid:/home# cd /etc/
root@odroid:/etc# grep -r 'exec i3'
i3/config:bindsym Mod1+Return exec i3-sensible-terminal
i3/config:exec i3-config-wizard
i3/config.keycodes:bindcode $mod+36 exec i3-sensible-terminal
root@odroid:/etc#
Run Code Online (Sandbox Code Playgroud)
当我运行 startx 时,什么是启动 i3?
i3
似乎是一个 X 窗口管理器。如果它是您系统的默认窗口管理器,则它已在“替代”系统中注册 - 您可以使用update-alternatives --display x-window-manager
. 这意味着这/usr/bin/x-window-manager
是一个符号链接/etc/alternatives/x-window-manager
;这反过来又由“替代品”系统设置为指向i3
。
如果要更改系统默认窗口管理器,root 可以update-alternatives --config x-window-manager
。
如果 Xsession 找到了一个窗口管理器,它将使它成为在会话中启动的默认程序。在 Debian 中,这是在/etc/X11/Xsession.d/50x11-common_determine-startup
.
如果用户想在他们的 X 会话中运行不同的程序,那么他们可以编写一个~/.xsession
启动(或执行)所需程序的程序。