为了防止 CustomerSideDecorations (CSD),我nocsd
在 Xubuntu 22.04 中添加了:
sudo apt -y install gtk3-nocsd
。
另外,我将此文件添加~/.xsessionrc
到我的主目录:
# 2023-11-16 nach dem Vorschlag von https://github.com/PCMan/gtk3-nocsd
# für Debian-Linux-Varianten neu erzeugt, damit gtk3-nocsd wirkt:
if [ -n "$STARTUP" ]; then
BASESTARTUP=${STARTUP%% *}
BASESTARTUP=${BASESTARTUP##*/}
if [ "$BASESTARTUP" = x-session-manager ]; then
BASESTARTUP=$(basename $(readlink /etc/alternatives/x-session-manager))
fi
if [ x"$BASESTARTUP" = x"${BASESTARTUP#gnome-session}" ] ; then
export GTK_CSD=0
STARTUP="env LD_PRELOAD=/path/to/libgtk3-nocsd.so.0 $STARTUP"
fi
fi
重新启动后,我注意到任务栏上有一个红色的循环感叹号通知,查看其上下文,我看到一个冗长的解释,告诉我存在需要恢复的依赖关系问题并且apt
与之相关
ERROR: ld.so: object '/path/to/libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
(相同的错误消息出现了几次,其中第一个“ERROR”一词的前两个字母丢失了。)我使用 Synaptic 进行搜索,nocsd
得到了两个结果:
gtk3-nocsd
,显示了版本,但在最后一栏中却描述为disabled
。libgtk3-nocsd0
:该条目的三栏内容均合理。
因此,我重新安装了nocsd
第一个,使用 Synaptic。重新启动后,nocsd
不再显示为已禁用。但错误通知仍然存在,基本上与之前相同。因此,我检查了libgtk3-nocsd.so.0
系统中是否存在文件。我在三个地方找到了它,其中两个与有关snap
。另一个是:
/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0
。
首先我检查了环境变量LD_PRELOAD
,发现它是,这绝对是胡说八道。因此我 在 的末尾/path/to/libgtk3-nocsd.so.0
添加了一行 。export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0
/etc/bash.bashrc
重启后,我想检查这个环境变量。在我进入echo $LD_PRELOAD
终端窗口之前,已经出现了一条错误消息
ERROR: ld.so: object '/path/to/libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored
,但随后echo $LD_PRELOAD
显示,在 中的附加行bash.bashrc
已成功定义LD_PRELOAD
。当然,红色圆圈通知仍然在任务栏上,仍然给出与之前相同的解释。
接下来做什么?
答案1
LD_PRELOAD
在替换 中的定义中的占位符后.xsessionrc
,重启后错误消息不再出现。
该文件.xsessionrc
现在内容如下
# ***************************** ~/.xsessionrc *****************************
# 2023-11-18 LD_PRELOAD muß den wirklichen absoluten Pfad zu libgtk3-nocsd.so.0 enthalten.
# 2023-11-16 nach dem Vorschlag von https://github.com/PCMan/gtk3-nocsd
# für Debian-Linux-Varianten neu erzeugt, damit gtk3-nocsd wirkt:
if [ -n "$STARTUP" ]; then
BASESTARTUP=${STARTUP%% *}
BASESTARTUP=${BASESTARTUP##*/}
if [ "$BASESTARTUP" = x-session-manager ]; then
BASESTARTUP=$(basename $(readlink /etc/alternatives/x-session-manager))
fi
if [ x"$BASESTARTUP" = x"${BASESTARTUP#gnome-session}" ] ; then
export GTK_CSD=0
STARTUP="env LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0 $STARTUP"
fi
fi
必须使用libgtk3-nocsd.so.0
文件系统中文件的实际位置!