这个建议的补丁似乎添加了一个额外的设置,可以从其他地方进行管理(可能是从gsettings
?)
无论如何,既然unlockDialog.js
文件需要修改,我选择了一种更直接的方法:在这个文件中直接禁用模糊效果。
修改后的文件——依赖于gnome-shell的gresource叠加功能——可以保存在用户的主目录中,方便随时进行后续编辑。
实现修改的步骤
- 从
libgnome-shell.so
二进制库中提取unlockDialog.js
文件,
- 将其建立为“gresource叠加”,以便gnome-shell以这种提取的形式使用它,
- 然后稍微修改提取的副本。
第一和第二步在这里详细解释:
Ubuntu 20.04上gnome-shell的UI javascript文件在哪里?(看起来很多,但实际上所做的更改并不多。)
对于第三步,修改
unlockDialog.js
的副本,有几种不同的方法。
应用建议的代码更改的挑战
现在让事情变得复杂的是,这个文件随着时间的推移不断变化,根据你拥有的确切版本,可能很难弄清楚如何应用任何更改建议。
这是unlockDialog.js的样子,目前写作时位于
gnome-3-36
分支(提交为
6b20eb8e
)。
然而,建议的补丁参考了一个较早的状态,自那时以来,该文件经历了this和this的修改;两者都修改了关于模糊的部分。
考虑到这一点,我试图提出可能保持相关性的最简单的修改。
修改unlockDialog.js
的想法
想法1:
最简单的解决方案是更改BLUR_SIGMA
变量的值:
const BLUR_BRIGHTNESS = 1;
const BLUR_SIGMA = 0;
这将导致一个清晰的背景图像,与在正常桌面登录后的外观完全相同且未经修改。
(请注意,一旦将BLUR_SIGMA设置为0,即使BLUR_BRIGHTNESS小于1,也不会产生任何效果;实际上,只要SIGMA为0,编辑BLUR_BRIGHTNESS似乎是多余的。)
想法2:
如果您担心性能问题,可以完全阻止应用图形效果。然而,考虑到BLUR_SIGMA = 0似乎使整个效果无效,我认为已经没有太多额外开销了。
_updateBackgroundEffects() {
const themeContext = St.ThemeContext.get_for_stage(global.stage);
_updateBackgroundEffects() {
return true;
const themeContext = St.ThemeContext.get_for_stage(global.stage);
在`_updateBackgroundEffects()`方法中放置`return true;`(作为第一行,除非你有理由不这样做),可以绕过该方法中位于`return`语句之后的代码。
然而,在这样做之前,请先查看代码块的内容,并尝试确定该方法是否执行了其他外部方法可能依赖的操作。如果你发现了类似的情况,请尝试在这样的声明之后添加`return`语句。(撰写本文时,第一行的`return`语句(如上例)没有出现问题。)
(顺便说一下,你也可以简单地注释掉`effect.set({ ... });`代码块。)
关于Idea 2的说明:
我在想:“我们甚至可以省去首次定义效果的步骤吗?”所以我注意到了这一行:
let widget = new St.Widget({
effect: new Shell.BlurEffect({ name: 'blur' }),
});
但是阅读
这里的提交信息会发现,删除它可能会导致错误;所以最好还是保险起见,将这行代码保留在原位。
我现在非常开心,因为自从我安装了20.04以来,锁屏背景的昏暗特性让我感到非常沮丧。
不过现在问题也解决了。