Ubuntu 20.04 上 gnome-shell 的 UI javascript 文件在哪里?

莱文特

我在 Debian 网站上找到了 gnome-shell UI js 文件的源代码:

https://sources.debian.org/src/gnome-shell/3.38.2-1/js/ui/

然后我也在这里找到了这个答案,它指出这个路径/文件前段时间存在于 Ubuntu 中:

/usr/share/gnome-shell/js/ui/windowManager.js

但是,现在我js/usr/share/gnome-shell/.

我在整个/分区中搜索了“lightbox.js”和“windowManager.js”,但没有找到。

我在哪里可以找到这些文件,如果我想更改其中一些硬编码变量的值,我需要克服哪些障碍?

莱文特

答案兼容:
Ubuntu 20.04.2
gnome-shell 版本:3.36.4
显示服务器:X.Org Server

重要的提示:

在更改 gnome-shell 的文件时犯任何错误都可能导致图形会话陷入僵局。仅当您熟悉系统恢复的常用方法时才尝试它。

此外,在此答案中执行更改将需要额外的工作流程来谨慎处理 gnome-shell 更新,如下所述。

修改功能

在 Ubuntu 20.04 上,gnome-shell 的 javascript 文件通常打包在文件中:

/usr/lib/gnome-shell/libgnome-shell.so

要覆盖它们,需要提取主题文件的副本,并要求 Gnome 使用这些副本。

下面我提供了一个抽象的、与任务无关的漫游。要查看针对特定实际任务的类似过程,请参阅此答案

要修改的文件副本可以组织在任意位置,在本次演练中,我使用以下位置:

~/.gnome-shell-custom-overlays/

要启用此“自定义平台”,需要将以下行放入~/.profile

export G_RESOURCE_OVERLAYS="/org/gnome/shell=$HOME/.gnome-shell-custom-overlays"

要使其生效,需要注销并重新登录。

关于依赖项的说明:

在我的机器上运行这个程序之前,我已经libgtk-3-dev安装了这个包。它用于开发/调试,就像资源覆盖功能似乎如此。因此,现在我无法确定是否尊重G_RESOURCE_OVERLAYS环境变量取决于此包的存在...以防万一,准备安装它。

设置主题文件:

可以列举libgnome-shell.so如下内容

gresource list /usr/lib/gnome-shell/libgnome-shell.so

下一步是提取要修改的文件。让我们使用一个示例,其中该文件位于 gnome-shell 的ui/子目录中。

mkdir ~/.gnome-shell-custom-overlays/ui

gresource extract /usr/lib/gnome-shell/libgnome-shell.so \
/org/gnome/shell/ui/fileName.js > ~/.gnome-shell-custom-overlays/ui/fileName.js

调整:

要查看自定义文件的调整效果,似乎有必要在每次编辑后重新加载 gnome-shell。可以r通过运行命令对话框(由Alt+显示F2发出命令来快速完成

在这一点上,您应该有一个工作覆盖,它通过重新启动而持续存在。

恢复注意事项:

如果修改尝试去错了,应该可以切换到虚拟控制台环境(如Ctrl+ Alt+ F3)。从那里,注释掉该G_RESOURCE_OVERLAYS~/.profile并随后重新启动应该解除覆盖,从而具有恢复系统的能力。

使用 G_RESOURCE_OVERLAYS 的注意事项

此功能可能主要用于调试和开发,而不是永久使用。

系统的稳定性可能会受到影响:当我第一次启用此功能时,我看到一些以前没有遇到过的声音设置异常,以及一些窗口闪烁。gnome-shell 的几次重新启动和(几次?)重新启动(s?)解决了它,从第二天开始我没有遇到任何进一步的异常。

此外,在“日志”应用程序中,我可以看到使用 G_RESOURCE_OVERLAYS 的事件记录在“安全”部分,因此值得考虑。

关于在使用 G_RESOURCE_OVERLAYS 时接收系统更新:

以下部分完全是猜测,我无法确认其中是否有效;然而,考虑以下因素可能会有所帮助:

如果 gnome-shell 收到更新,我认为自定义 gnome-shell 文件可能会失去兼容性,甚至可能导致桌面损坏。

我相信在这种情况下,可以通过~/.profile(如恢复部分所述)暂停使用 G_RESOURCE_OVERLAYS 功能,随后重复从新的 中提取主题文件libgnome-shell.so,并以兼容的方式重新应用修改。

如果更新导致此类不兼容事件,我推测一些风险涉及在执行更新的配置阶段时桌面已经崩溃;我可以预见在这种情况下对其他系统造成的重大附带损害。(我可能错了。)

尽管如此,出于这个原因,我会考虑让 gnome-shell 更新与其他更新分开安装,以便该事件不会干扰其他软件包的安装。

一层控制,为了稳定:

为了管理上述风险,可以将 gnome-shell置于holdstatus 状态,以防止安装更新,直到准备好处理它们为止。

该过程如下所示:

  • 持有 gnome-shell: sudo apt-mark hold gnome-shell
  • 和平地生活多久
  • 当 gnome-shell 有可用更新时,它会显示在更新对话框中,但它的复选框将被取消选中,因此不会被安装
    • 应该能够继续这样,直到准备好执行更新
    • 准备好更新时,请按照以下步骤操作
  • 运行更新程序,让每个更新都安装,除了 gnome-shell 的
    • 必要时重新启动,然后再次运行更新程序,以确保除了 gnome-shell 之外,目前没有其他更新可用
  • 在 中禁用 G_RESOURCE_OVERLAYS ~/.profile,然后重新启动 gnome-shell
    • 通过验证缺少 UI 自定义来确认 G_RESOURCE_OVERLAYS 确实没有使用
  • 取消 gnome-shell: sudo apt-mark unhold gnome-shell
  • 运行更新程序并让 gnome-shell 这次更新
  • 重新启用 G_RESOURCE_OVERLAYS~/.profile并重新启动 gnome-shell
    • 如有必要,处理任何不兼容的后果
      • 这可能涉及再次禁用 G_RESOURCE_OVERLAYS(如有必要,从虚拟控制台),并使用更新的、这次兼容的修改重新建立覆盖的文件
  • 再次达到稳定状态后,再次暂停 gnome-shell
    • 当新的更新到达时重复上述过程

将修改后的文件编译回 libgnome-shell.so

我认为,如果不是永久依赖资源叠加功能,而是将修改后的文件编译回libgnome-shell.so(因为更新不会导致不兼容事件;而是libgnome-shell.so一次性重写)我认为可以避免更新的风险.

然而,不幸的是,这项任务似乎依赖于大量的 Gnome 和/或 Ubuntu 开发人员专有技术;仅仅围绕代码编辑器的敏捷性似乎并不能解决问题。

编译器 glib-compile-resources 需要一个 XML 格式的要编译的资源列表,并且它的输出不能轻易地重新附加到现有的 .so ELF 文件

来源

猜测是,您缺少 gnome-shell 的低级部分使用的 C 代码,该代码与 JavaScript 资源位于同一库中

如果您通过从源代码(例如在 jhbuild 中)编译获得 gnome-shell [...]

如果您从 Debian、Ubuntu [...] 等发行版获得 gnome-shell,您将需要应用您的 JavaScript 更改作为对该发行版的 gnome-shell 包的本地更改,使用本地更改重建 gnome-shell 包版本号,并安装新包。

来源

从源代码编译整个 gnome-shell 是一个不小的特性。实际上它的影响如此广泛,显然它可能出错的地方太多了,我个人觉得它使选择的合理性受到质疑。

不过,如果您可以分享在 Ubuntu 上下文中成功编译 gnome-shell 的实际步骤,请提交答案。


参考文献/文献:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在ubuntu 16.04上安装gnome-shell

来自分类Dev

Steam 在 Ubuntu 上在哪里存储文件?

来自分类Dev

使用GNOME Shell 3.24.1在Ubuntu GNOME 17.04上编写键

来自分类Dev

使用GNOME Shell 3.24.1在Ubuntu GNOME 17.04上编写键

来自分类Dev

Ubuntu GNOME和Gnome Desktop或仅在Ubuntu上安装Gnome Shell有什么区别?

来自分类Dev

带有Gnome Shell的Ubuntu 11.10中的垃圾箱在哪里?

来自分类Dev

我在哪里可以在 ubuntu 20.04 上找到 gnome-alsamixer?

来自分类Dev

如何在Ubuntu 14.04上获取gnome Shell 3.12

来自分类Dev

如何在Ubuntu 14.04上获取gnome Shell 3.12

来自分类Dev

Ubuntu上的“ mod_wsgi”文件在哪里?

来自分类Dev

Ubuntu上的PHP可执行文件在哪里?

来自分类Dev

在哪里可以找到UBUNTU上的.curlrc文件?

来自分类Dev

Ubuntu 上的“mod_wsgi”文件在哪里?

来自分类Dev

装有Ubuntu-20-04的HP Elitebook上的触摸板按钮不起作用

来自分类Dev

带有 Ubuntu-20-04 的 HP Elitebook 上的触摸板按钮不起作用

来自分类Dev

在 Ubuntu 20.04 上从 GNOME Tweak Tool 启用扩展程序时 GNOME Shell 崩溃

来自分类Dev

gnome-shell永久20-30%+ CPU使用率(17.10上的3.2.1版)

来自分类Dev

Ubuntu Gnome在哪里存储键盘快捷键配置文件?

来自分类Dev

无法通过 Ubuntu 20 上的 tinyvncserver 打开终端/没有 gnome 面板

来自分类Dev

GNOME Shell中的挂起/休眠按钮在哪里?

来自分类Dev

Shell函数在Linux上存储在哪里?

来自分类Dev

GNOME Shell上的通知错误?

来自分类Dev

Ubuntu 18.04 - 错误地安装了 gnome-shell-common 现在没有 UI

来自分类Dev

Ubuntu Gnome眼镜/扩展日志存储在哪里?

来自分类Dev

Ubuntu Gnome眼镜/扩展日志存储在哪里?

来自分类Dev

ubuntu 18.04(gnome)系统监控工具的github在哪里?

来自分类Dev

为什么窗口快照无法在Ubuntu 12.04 + gnome Shell上运行

来自分类Dev

在搜索路径中找不到JS模块“ tweener”,Ubuntu 20.10上的Gnome shell扩展错误

来自分类Dev

为什么窗口快照无法在Ubuntu 12.04 + gnome Shell上运行

Related 相关文章

  1. 1

    在ubuntu 16.04上安装gnome-shell

  2. 2

    Steam 在 Ubuntu 上在哪里存储文件?

  3. 3

    使用GNOME Shell 3.24.1在Ubuntu GNOME 17.04上编写键

  4. 4

    使用GNOME Shell 3.24.1在Ubuntu GNOME 17.04上编写键

  5. 5

    Ubuntu GNOME和Gnome Desktop或仅在Ubuntu上安装Gnome Shell有什么区别?

  6. 6

    带有Gnome Shell的Ubuntu 11.10中的垃圾箱在哪里?

  7. 7

    我在哪里可以在 ubuntu 20.04 上找到 gnome-alsamixer?

  8. 8

    如何在Ubuntu 14.04上获取gnome Shell 3.12

  9. 9

    如何在Ubuntu 14.04上获取gnome Shell 3.12

  10. 10

    Ubuntu上的“ mod_wsgi”文件在哪里?

  11. 11

    Ubuntu上的PHP可执行文件在哪里?

  12. 12

    在哪里可以找到UBUNTU上的.curlrc文件?

  13. 13

    Ubuntu 上的“mod_wsgi”文件在哪里?

  14. 14

    装有Ubuntu-20-04的HP Elitebook上的触摸板按钮不起作用

  15. 15

    带有 Ubuntu-20-04 的 HP Elitebook 上的触摸板按钮不起作用

  16. 16

    在 Ubuntu 20.04 上从 GNOME Tweak Tool 启用扩展程序时 GNOME Shell 崩溃

  17. 17

    gnome-shell永久20-30%+ CPU使用率(17.10上的3.2.1版)

  18. 18

    Ubuntu Gnome在哪里存储键盘快捷键配置文件?

  19. 19

    无法通过 Ubuntu 20 上的 tinyvncserver 打开终端/没有 gnome 面板

  20. 20

    GNOME Shell中的挂起/休眠按钮在哪里?

  21. 21

    Shell函数在Linux上存储在哪里?

  22. 22

    GNOME Shell上的通知错误?

  23. 23

    Ubuntu 18.04 - 错误地安装了 gnome-shell-common 现在没有 UI

  24. 24

    Ubuntu Gnome眼镜/扩展日志存储在哪里?

  25. 25

    Ubuntu Gnome眼镜/扩展日志存储在哪里?

  26. 26

    ubuntu 18.04(gnome)系统监控工具的github在哪里?

  27. 27

    为什么窗口快照无法在Ubuntu 12.04 + gnome Shell上运行

  28. 28

    在搜索路径中找不到JS模块“ tweener”,Ubuntu 20.10上的Gnome shell扩展错误

  29. 29

    为什么窗口快照无法在Ubuntu 12.04 + gnome Shell上运行

热门标签

归档