「Web IDE」- 在浏览器中编辑代码

问题描述
有两台笔记本,Laptop0、Laptop1,我们在 Laptop0 中编写代码,并且还会本机的查看其他程序文件。
我们希望在 Laptop0 中编写代码,并且能在 Laptop1 中查看 Laptop0 中的其他代码。
该笔记将记录:我们是如何解决这一问题的,即在 Laptop1 中浏览 Laptop0 中的代码文件。
解决方法
通过在 Laptop0 中运行 Web IDE 服务,然后在 Laptop1 中使用浏览器访问即可。
或者通过文件共享服务,共享 Laptop0 中的程序(但是需要 Laptop1 先挂载,然后才能访问,略有繁琐)。
运行 Web IDE 服务
有很多可选的 Web IDE 方案(我们没有进行对比,对比是件繁琐的事情,我们的需求又比较简单): 1)https://github.com/styfle/awesome-online-ide 2)cdr/code-server: VS Code in the browser 3)……
方法一、我们使用 Eclipse Theia 服务,它基于 VSCode 开发,运行也比较简单:

docker run -it –init \
-p 3000:3000 \
-v “$(pwd):/home/project:cached”
theiaide/theia:next

方法二、或者,重新编译运行 VSCode 程序,以 Web 方式运行:

git clone –depth=1 https://github.com/microsoft/vscode
cd vscode
yarn install
yarn run compile
yarn run web

方法三、使用 teditor 服务,运行即可,可以直接编辑当前目录文件:

npm install -g teditor
teditor

最佳方案
再买新显示器,Laptop0 用作代码编辑,Screen0 用作文档查看,Screen1 用作查看其他程序文件。
参考文献
styfle/awesome-online-ide: 🌩️ A list of awesome online development environments theia-ide/theia-apps: Theia applications examples – docker images, desktop apps, packagings run vscode in browser in a single command – DEV How to Use Git Shallow Clon[……]

READ MORE

「hexedit」- 十六进制编辑器

功能简述
hexedit – view and edit files in hexadecimal or in ASCII
GitHub – pixel/hexedit: View and edit files in hexadecimal or in ASCII
常用命令
在输出中显示颜色,并且每行仅显示 16 个字节:

# hexedit –color –linelength 16 /path/to/file

语法格式

hexedit [-s | –sector] [-m | –maximize] [-l<n> | –linelength <n>] [-h | –help] [filename]

命令描述
hexedit shows a file both in ASCII and in hexadecimal. The file can be a device as the file is read a piece at a time. You can modify the file and search through it.
命令选项
-s, –sector 格式化显示以具有整个区域。在使用该选项后,以“整屏”为单位进行翻页,而非单行。(请自行尝试,难以描述)
-m, –maximize 尝试最大化显示。
–color 显示颜色。当操作系统支持时,该特性才可用。
-l<n>, –linelength <n> 明确指定每行显示 <n> 字节。
-h, –help 显示帮助信息。
参考文献
man 1 hexedit, Version 1.4.2-5[……]

READ MORE

「Linux」- 桌面环境(我们是如何选择 Linux 发行版的)

问题描述
本部分包含了Linux桌面相关的内容。比如,主题设置,窗口管理器,显示管理器,字体,输入法等等。
该部分的文章内容更偏向于软件方面,比如:使用XRANDR命令设置显示器的分辨率。
不涉及硬件方面:指键盘、鼠标、显示器、CPU等等硬件设备的设置,有关「硬件方面」的文章都整理在硬件部分。
该部分笔记及子章节将记录:与 Linux 桌面环境相关的内容,包括桌面环境的概念、组件、设置等等,旨在配置出适用于我们工作的桌面平台(但是不涉及桌面应用程序、快捷工具)。
桌面环境的选择
早期,我们使用 Ubuntu 发行版,所以以前使用 Unity 桌面环境。现在(02/10/2021),我们选择 GNOME 桌面环境,这是 CentOS、RHEL、Ubuntu、Debian 都支持的主要桌面环境(算得上是默认桌面环境)。我们并不研究桌面环境,因此会找比较通用的,即使出现问题容易找到答案。我们也会考虑 LXDE 桌面环境,用在某些低配硬件设备上。在某些方面,比如多显示器切换,LXDE 处理方式不如 GNOME 友好。我们体验过一次 KDE 但是没再用过。
# 02/09/2021 下面是我们补充的 GNOME 桌面截图,GNOME Shell 3.30.2
参考文献
Debian vs Ubuntu DistroWatch.com: Put the fun back into computing. Use Linux, BSD. Wikipedia/Desktop environment Debian/Wiki/Gnome[……]

READ MORE

「GNOME」- GNU Network Object Model Environment

相关链接
Visual overview of GNOME
参考文献
Github/Gnome:https://git.gnome.org/browse/[……]

READ MORE

「GNOME 3」- 常见术语区分(学习笔记)

The Major Components(主要组件)
参考 Components 笔记。
GNOME Shell
GNOME Shell is tightly integrated with Mutter (a compositing window manager and Wayland compositor).
GNOME Shell replaced GNOME Panel and some ancillary components of GNOME 2.
所以,GNOME Shell 是与用户交互的这些界面元素的总称,正如 Shell 是“壳”的意思,也就是指这个桌面环境呈现给用户的元素。
GNOME Theme, GNOME Shell Theme, GTK Theme
GTK Theme 指 GTK 主题,但是这些主题仅能控制应用程序窗口的主题,也就是 GTK 的主题。比如,应用程序界面的 Button、Toolbar、Menubar 等等的显示样式。
GNOME Shell Theme 指 GNOME Shell 主题,通常是指整个桌面环境组建的主题。比如,桌面的 System Tray、Topbar、Activities 等等的样式显示。
当我们提到 GNOME Theme 时,可能包含 GTK Theme 与 GNOME Shell Theme。因为,在一个主题包中,可能即包含 GTK Theme,又包含 GNOME Shell Theme,同时还可能包含鼠标指针的主题。
参考文献
Difference between GTK theme and GNOME shell theme? – Ask Ubuntu[……]

READ MORE

「GNOME 3」- 界面元素、桌面组件、各部分名称(学习笔记)

问题描述
我们需要了解 GNOME 3 桌面的各个组件的名称,比如明确 Dash、View Selector 等等是指桌面的哪部分。不然,使用“窗口顶部的横条”,“左侧的菜单”、“右边的列表”等等说法,是无法准确描述问题,更无法搜索到精确的答案。此外,在阅读文档时,能够知道文档中提到的组建是指桌面的哪个部分;
该笔记将记录:在 GNOME 3 中,我们桌面的各组件的英文名称;
解决方案
Top bar、System status area、Activities Overview、Dash、Window picker、Application picker、Search、Notifications and messaging tray、Application switcher、Indicators tray (deprecated)
如下图片,是当前桌面各个部分的名称:
如下截图,在单击 Activities 按钮(左上角)后,将显示如下界面:
相关链接
Visual overview of GNOME
参考文献
GNOME Shell – Wikipedia More GNOME Shell Customization 1.2. What Is GNOME Shell? Red Hat Enterprise Linux 7 | Red Hat Customer Portal[……]

READ MORE

「GNOME」- 安装桌面环境

GNOME 3.30 on Debian GNU/Linux 10 (buster)
Gnome – Debian Wiki
# 01/27/2019 在 GNOME 中,以定义用于安装特定桌面的任务,直接安装即可:

apt-get install -y task-gnome-desktop

参考文献
Debian/Wiki/Gnome[……]

READ MORE

「GNOME」- 常用配置与管理

问题描述
该部分笔记将记录:在 GNOME 中,完成某些设置、解决某些问题的方法。
dconf, GSetings, gsettings
gsettings简介及常用操作介绍
dconf,存储着 GNOME 3 的配置,是二进制格式,它做为 GSettings 的后端系统存在,暴露出低级 API。在 GNOME 2 时代,类似的角色是 gconf,但它是以 XML 文本形式存储。
GSetings,是一套高级 API,用来操作 dconf 配置。
gsettings,提供对 GSetings 的命令行操作。
User -> gsettings -> GSetings -> dconf -> Binary configuration
更接地气的说法是,dconf 是 GNOME 3 的注册表,gsettings 是一个查询、读取、设置注册表键值的命令行工具。
显示桌面
How To Show Desktop In GNOME 3 GNOME 3.28 Removes Option to Put Icons on the Desktop
像在Windws中,按下Super + D可以显示桌面,再按一次进行恢复。这在GNOME 3中也是可以的,但是需要手动设置。在Settings – Devices – Keyboard中,为Hide all normal windows功能绑定快捷键即可。
但是显示桌面也没有什么用了:在GNOME 3.28中,已经移除桌面功能了,不会再在桌面上显示图标了。如果想要显示桌面图标,只能通过其他应用程序(通常是文件管理器的功能,比如pcmanfm –desktop命令)。
修改工作空间名
Shortcut to rename workspace in Gnome
1)在某些扩展中可能包含修改 Workspace 的方法,但是 2)可以通过 dconf-editor 工具,搜索workspace-names关键字,参数类型是字符串数组,形如[‘W1’, ‘W3’, ‘W4’]格式。
修改标题栏按钮
How do I hide/disable close buttons for GNOME windows?
方法很多,我们是通过修改 GSettings 的 org.gnome.desktop.wm.preferences button-layout 属性,将其设置为 appmenu 即可。
指纹设置
Log in with a fingerprint
Open the Activities overview and start typing Users.
Cli[……]

READ MORE

「GNOME」- 插件及自定义

Ubuntu 21.04 提供的 GNOME Shell Extension
gnome-shell-extension-appindicator – AppIndicator/KStatusNotifierItem support for GNOME Shell gnome-shell-extension-desktop-icons-ng – desktop icon support for GNOME Shell gnome-shell-extension-ubuntu-dock – Ubuntu Dock for GNOME Shell gnome-shell-extension-arc-menu – shell extension designed to replace the standard menu found in GNOME gnome-shell-extension-autohidetopbar – GNOME shell automatic topbar hider gnome-shell-extension-bluetooth-quick-connect – GNOME Shell extension to connect paired Bluetooth devices gnome-shell-extension-caffeine – GNOME Shell extension to keep your computer awake gnome-shell-extension-dash-to-panel – combines the dash and the GNOME main panel into a single panel gnome-shell-extension-dashtodock – dash-to-dock extension for GNOME shell gnome-shell-extension-desktop-icons – desktop icon support for GNOME Shell gnome-shell-extension-disconnect-wifi – disconnect Wi-Fi extension for GNOME shell gnome-shell-extension-draw-on-your-screen – start drawing on your screen and save your beatiful work in a screenshot gnome-shell-extension-easyscreencast – GNOME Shell extension to simplify video recording gnome-shell-extens[……]

READ MORE

「GNOME」- 扩展(Extension)

通过扩展(插件),可以扩展 GNOME 桌面功能。
相关链接
下面的链接是其他人整理的推荐扩展: Top 20 GNOME Extensions You Should Be Using Right Now
安装扩展的常用方法
方法一、使用仓库安装
在发行版的仓库中,一般都包含某些 GNOME 扩展:

apt-cache search gnome-shell-extension | grep gnome-shell-extension

# 比如,安装系统托盘插件(某些发行版中可能没有,或者包名不同)
apt-get install -y gnome-shell-extension-top-icons-plus

安装目录:/usr/share/gnome-shell/extensions
注意事项:建议先从仓库中安装,如果仓库没有该扩展,再考虑其他方式安装。因为在仓库中的扩展已经经过测试,可以与当前发行版桌面环境良好运行。
方法二、通过浏览器安装(推荐)
火狐浏览器有个名为 GNOME Shell integration 的插件,该插件已经与 GNOME Shell 进行整合,最终的结果便是简化插件安装: 1)浏览器访问 GNOME Shell Extensions 站点; 2)找到插件,点击“安装”按钮(在界面中显示为“黑色的开关按钮”); 3)提示用户是否要安装插件,在同意后,插件将被安装到系统中;
该方法需要进行以下几步准备工作: 1)在主机中,安装 chrome-gnome-shell 应用:apt-get install chrome-gnome-shell 2)在浏览器中,安装 GNOME Shell integration 扩展; 3)可以在 https://extensions.gnome.org 直接向本地安装插件,还能查看本地已经安装的插件。
# 07/17/2019 在谷歌浏览器中,安装 GNOME Shell integration 扩展;
# 02/10/2021 浏览器插件 GNOME Shell integration 可以在 Firfox 及 Chrome 中正常使用,但是无法在 Chromium 中使用。在 Chromium 中,访问 GNOME Shell Extensions 站点,页面将显示如下错误信息:

Although GNOME Shell integration extension is running, native host connector is not detected. Refer documentation for instructions about installing connec[……]

READ MORE

「GNOME 3」- 自定义主题

入门学习,参考 How to Modify Style Properties of GNOME Shell Themes – Linux Hint 文章。
官方文档,参考 Projects/GnomeShell/Development – GNOME Wiki! 文档
以及,在文档中提到的 gnome-shell.scss 源码文件,以了解可以修改的属性:
下载第三方主题,访问 GNOME-LOOK.ORG 站点,使用 Pling-Store 安装主题(配合 ocs-url 工具)[……]

READ MORE

「GNOME」- 禁用某些服务及应用

该笔记将记录:在 GNOME 中,某些服务的作用,以及如何禁用他们。
相关链接
How to install minimal Gnome on Ubuntu 20.04 Focal Fossa Linux – LinuxConfig.org
禁用 GNOME Software 服务
autostart – Disable gnome-software from loading at startup – Ask Ubuntu ShowHiddenStartupApplications – Community Help Wiki
在用户登录后,将启动 GNOME Software 服务,但是我们从未使用该服务,因此我们想禁用该服务。
但是下面的这种方法是无效的:

# cp -v /etc/xdg/autostart/gnome-software-service.desktop ~/.config/autostart/
# sed -i “s/NoDisplay=true/NoDisplay=false/g” ~/.config/autostart/gnome-software-service.desktop
# sed -i ‘$a X-GNOME-Autostart-enabled=false’ ~/.config/autostart/gnome-software-service.desktop

# cat ~/.config/autostart/gnome-software-service.desktop
[Desktop Entry]
Type=Application
Name=GNOME Software
Exec=/usr/bin/gnome-software –gapplication-service
OnlyShowIn=GNOME;Unity;
NoDisplay=false
X-GNOME-Autostart-enabled=false

我们只能换种方法,但是风险更高:

# apt-get remove gnome-software

The following packages will be REMOVED:
gnome gnome-core gnome-software task-gnome-desktop
0 upgraded, 0 newly installed, 4 to remove and 10 not upgraded.

# dpkg-query –listfiles gnome gnome-core task-gnome-desktop
/.
/usr
/usr/share
/usr/share/bug
/usr/sh[……]

READ MORE

「GNOME」- 关闭 PackageKit 服务

问题描述
PackageKit,包管理服务,通过 DBus 接口,执行某些简单的包管理任务,比如刷新缓存,安装、更新、移除软件等等。
但是该服务经常占用大量 CPU 资源,非常多,而且一直有人反馈这个问题: https://gitlab.gnome.org/GNOME/gnome-software/issues/512 https://bugs.launchpad.net/appcenter/+bug/1587975 https://www.reddit.com/r/linuxquestions/comments/55q35o/what_is_packagekitd_and_why_does_it_use_so_much/ https://baheyeldin.com/technology/linux/how-avoid-packagekit-consuming-lots-cpu-and-ram-kubuntu-1404.html
鉴于在系统管理中,我们经常使用 YUM/APT 等等的包管理器,从未使用该服务,因此我们决定关闭该服务。
该笔记将介绍:如何关闭 PackageKit 服务。
附加说明
操作系统:Kali GNU/Linux Rolling 软件版本:packagekit 1.0.1-2
关于该笔记分类:在 Debian 10.3 中,桌面环境(graphical.target)会启动 PackageKit 服务,而多用户环境(multi-user.target)不会启动该服务,因此将该笔记分类到桌面环境设置中。
解决办法
目前(09/02/2019),并没有人找到 CPU 占用高的原因。所以,对于这个问题也没有什么解决方案。卸载的有,禁用的有,这那的都有,都是些 workaround 办法。
第一步、禁用服务
由于依赖的原因,还不能直接删除掉。因此只能禁用服务:

systemctl stop packagekit.service
systemctl disable packagekit.service
systemctl mask packagekit.service # 如果不mask的话,它还会启动。

第二步、移除配置(可选步骤)
在 Debian 中,当禁用 PackageKit 服务后,执行 apt-get 安装的最后阶段,会产生错误提示:

Error: GDBus.Error:org.freedesktop.systemd1.UnitMasked: Unit packagekit.service is masked.

这是由 /etc/apt/apt.conf.d/20packagekit 导致的。因为[……]

READ MORE

「GNOME 3」- 在 Dash 中,添加分割符号

问题描述
在 GNOME 的 Dash 中,所有的图标连接在一起,没有分隔。
对于我们来说,这看起来很混乱,使用起来也比较混乱。
我们希望这些图标可以按照类型分隔,希望形成形成下面的效果:
解决方法
第一步、创建分隔符图标

cat > ~/.local/share/applications/_separator.desktop <<EOF
[Desktop Entry]
Type=Application
Icon=/usr/local/share/icons/d3rm/_separator-blank.png
Name=_SEPARATOR_
EOF

# 图片 _separator-blank.png 是透明的

第二步、添加到 Dash 中
在 Activities Overview 中,右键,Add to Favorites,然后在 Dash 中拖动调整位置即可。
参考文献
Can you add separators to Docky? – Ask Ubuntu rpeshkov/plank-spacer: Simple script for adding spacers into Plank How can I put some separators between unity launcher icons? – Ask Ubuntu[……]

READ MORE

「GNOME」- 部分与 Dash 和 Dock 配置相关的插件

Dash to Dock by michele_g
插件功能:将 GNOME Shell 的 Dash 移动到桌面,使其成为 Dock,类似于窗口的任务栏 下载地址:https://extensions.gnome.org/extension/307/dash-to-dock/ 项目仓库:https://github.com/micheleg/dash-to-dock/
针对多显示器,我们希望仅显示当前屏幕所包含的窗口:

# Ubuntu 20.04, dash-to-docker, version: 67ubuntu20.04.5
# https://askubuntu.com/questions/1070001/ubuntu-18-04-get-ubuntu-dock-to-only-display-the-windows-from-the-current-scre
gsettings set org.gnome.shell.extensions.dash-to-dock isolate-monitors true[……]

READ MORE

「GNOME 3」- 通知,配置

问题描述
该笔记将记录:如何设置 GNOME 通知气球,诸如 显示位置 等等,以及其他问题的解决办法。
解决方案
通知气球的修改方法,大致分为两类: 1)通过扩展(GNOME Shell Extensions)实现; 2)或者,通过自定义 CSS 样式来修改通知气球;
修改通知气球的位置
How to Change Screen Notification Position in Ubuntu 18.04 How To Change Gnome Shell Notifications Position How To Move GNOME Shell Notifications How to Change Notification Position on Ubuntu with an Extension – OMG! Ubuntu!
在 GNOME 中,默认通知气球(通知消息)显示在屏幕的上方、正中的位置,有时候会挡住视线。
我们希望可以显示在右下角或者右上角即可,而无需要通知直接弹到“面前”显示,以免影响使用。
Panel OSD by jens(正在使用)
https://gitlab.com/jenslody/gnome-shell-extension-panel-osd
1)如果要调整位置,则需要安装 Panel OSD by jens 扩展 2)将 Horizontal position 与 Vertical position 拖动到 100% 既可显示在右上角。
# 12/17/2022 该项目(GitLab/Jens Lody/gnome-shell-extension-panel-osd)当前已归档。但是我们依旧在使用,其支持我们所使用的 GNOME Shell 3.36.9 桌面环境。在升级到 GNOME4.0 版本后,我们就需要更换其他插件了。
Notification Banner Position(放弃使用)
GitHub – brunodrugowick/notification-position-gnome-extension Notification Banner Position – GNOME Shell Extensions
# 12/17/2022 我们使用 GNOME Shell 3.36.9,其对应的插件功能简单,仅是将通知窗口移动到右上角,无法满足我们的需要,所以我们不再使用该扩展;
Notification Banner Reloaded(我们未使用)
Notification Banner Reloaded – GNOME Shell Extensions GitHub – marcinjakubowski/n[……]

READ MORE

「GNOME 3」- 修改 Topbar 字体(顶部栏字体)、调整默认主题

问题描述
在 GNOME 3 中,在进行字体设置时,我们发现 Topbar 的字体没有修改,因此窗口字体与 Topbar 字体不同。
经过搜索,我们知道,Topbar 的字体是主题负责修改的,无法通过设置(gnome-control-center)进行修改。
该笔记将记录:在 GNOME 3 中,如何修改 Topbar 的字体格式,同时也提供一种调整默认的主题的思路。
解决方案
我们需要自定义 Topbar 主题,按照如下步骤进行操作:
操作步骤
第一步、安装 User Themes by fmuellner 扩展,并启用。这样才能够加载用户自定义主题。同时,这也解决 GNOME Tweaks / Appearance / Shell 的 “Shell user-theme extension not enabled” 问题。
第二步、自定义主题。这里,我们仅需设置 Topbar 主题:

mkdir -pv ~/.local/share/themes/d3rm/gnome-shell/

cat > ~/.local/share/themes/d3rm/gnome-shell/gnome-shell.css <<EOF
stage {
font-family: “Courier 10 Pitch”, Sans-Serif;
font-size: 11pt;
}
EOF

第三步、选择我们自定义主题:GNOME Tweaks / Appearance / Shell / D3rm(目录名首字母大写即为主题名)。此时,将看到 Topbar 已经显示为我们设置的字体。
补充说明
该笔记是后期整理记录的,在我们的印象中,似乎不用重启。但是,如果主题没有加载,则 1)尝试重新打开 GNOME Tweaks 应用(如果先前已经打开过,毕竟需要重新载入变更) 2)或者 Alt+F2 再输入 r 重新加载桌面;
调整默认主题
该方法也演示了如何自定义原有主题,我们可以通过这种方法对 GNOME Shell 主题进行覆盖。
参考 GNOME Shell Customization 笔记。
替代方案(Fontconfig)
还有一种替代方案,使用 Fontconfig 设置字体。在桌面环境下,字体是通过 Fontconfig 库进行加载的,因此我们可以从 Fontconfig 层面,对字体进行“修改”。这里的“修改”是指,配置 fonts.conf 配置文件。
通过配置 Fontconfig 对部分字体进行“重命名”或者设置备用字体,比如将 monospace 指向 Courier 10 Pitch 字体。[……]

READ MORE

「GNOME 3」- 运行应用程序

问题描述
该笔记将记录:与运行应用程序有关的内容,以及常见问题的处理方案。
解决方法
应用程序自启动
How To Launch Startup Applications With A Delay On Linux
GNOME Tweaks / Startup Applications / +
如果需要应用程序延迟启动(避免同时启动而产生的高负载),需要修改 ~/.config/autostart/*.desktop 文件:

[Desktop Entry]

X-GNOME-Autostart-Delay=10

通过快捷键,来运行应用
Setting a key shortcut to run an application in GNOME :: Fedora Docs command line – Running a .desktop file in the terminal – Ask Ubuntu
我们需要设置截图快捷键(运行我们自定义的截图程序),以便在按下快捷键时进行截图。
在 Settings / Devices / Keyboard 中,我们可以添加快捷键,但是有两种方法运行应用: 1)直接指定应用的运行命令; 2)使用 gtk-launch 命令:gtk-launch “xxx.desktop”
我们推荐 2)方法,其中:xxx.desktop 可以为任何 .desktop 文件;无需制定路径,会自行搜索;可以省略 .desktop 后缀。
以单实例运行应用、仅允许应用启动一次
ubuntu – Limit a gui program in Linux to only one instance – Super User
以 HexChat 为例:当收到消息通知时,我们点击图标以查看消息,但是每次都将运行新的 HexChat 实例,而不是显示原有窗口。
我们需要以单实例运行应用,即仅允许应用运行一次。
修改应用程序 .desktop 文件的 Exec 属性(我们以 HexChat 为例):

Exec=sh -c ‘pidof “hexchat” 1>/dev/null 2>&1 && notify-send “HexChat” “This program is already running.” || hexchat’

该方法能够保证:在我们点击图标时,不会重复运行应用。
# 02/11/2021 目前,我们没有找到更好的方案,因为再好的方案都不如应用本身支持。有些方案属于“补丁”,有些方案仅针对我们的场景。[……]

READ MORE

「GNOME 3」- 桌面图标(显示、Ubuntu 20.10、隐藏)

问题描述
在 GNOME 3.28 中,移除了桌面图标功能。虽然桌面没有什么用处,但是有时候也有点用处。
该笔记将记录:在 GNOME 3.28 后,显示桌面图标的方法,以及相关问题处理。
解决办法
方法一、使用插件
使用 Desktop Icons by rastersoft 插件可以显示桌面图标,可以使用该插件进行显示。
注意事项,该插件不能解析应用图标文件(.desktop)
方法二、使用文件管理器
桌面图标,它们多数的都是通过「文件管理器」显示的: 1)在以前 GNOME 支持桌面图标时,是通过 nautilus –desktop 命令。 2)在 LXDE 中,也能支持桌面图标,是通过 pcmanfm –destop 命令。
因此我们可以(1)找一个支持桌面图标的文件管理器(nemo、pcmanfm),(2)在 ~/.config/autostart/ 中创建启动文件来启动桌面。
我们使用 PCManFM 来解决这个问题,因为它比较轻量级别:

cat <<EOF > ~/.config/autostart/pcmanfm-desktop.desktop
[Desktop Entry]
Name=PCManFM Desktop
GenericName=PCManFM Desktop
Exec=pcmanfm –desktop
Terminal=false
Type=Application
StartupNotify=false
EOF

# 实际上并不需要重启,其实退出重新登录就可以了。
reboot

使用 PCManFM 的最大优点是:我们能够直接指定桌面目录,比如 ~/.local/share/applications/ 目录,这样桌面就能显示所有的图标,并能在 Activity 中搜索到。
在 Ubuntu 21.04 中,隐藏桌面图标
20.04 – Gnome deskop icons are gone – How can I bring them back? – Ask Ubuntu Hide Desktop Icons on Ubuntu 20.04
Ubuntu 21.04 内置桌面功能,这是通过 Desktop icons ng (ding) 插件实现的,还有个 Desktop icons 插件(这两个插件不能同时使用)。
但是,这些桌面的插件没有我们需要功能:解析 .desktop 文件,将其作为应用启动图标。
因此,我们将禁用这个插件,而继续使用我们的 PCManFM 的 –desktop 功能。
但是,我们在 GNOME Tweaks / Extensions 中更改[……]

READ MORE

「GNOME」- 登录界面,GDM,GNOME Display Manager

在 GDM3 中,修改用户头像
Change your login screen photo Where is the user’s profile picture stored in Gnome 3?
按照「Change your login screen photo 」中的说明,修改用户头像;
一般是两种方法:1)在 GNOME Control Center / Users 中设置;2)使用 users-admin 程序,修改自己的头像;
但是,第一种方法不显示 ROOT 用户,而第二种方法,当以 ROOT 用户登录时,启动它,界面一直出于加载中的状态;
(亲测有效)你可以手动修改/var/lib/AccountsService/users/root文件,内容大致如下:

[User]
Icon=/var/lib/AccountsService/icons/root
Language=
XSession=
SystemAccount=true

主要是Icon=行,它的值是/var/lib/AccountsService/icons/root图片。!!!修改之后需要重新登录!!!
修改登录界面背景图
thiggy01/gdm-background: A simple graphical tool to change the GDM 3 background of Ubuntu or Pop OS 20.04 and 20.10 juhaku/loginized: Gnome GDM Login Theme Manager. Easy and Fast Login Theme Manipulation
# 07/28/2021 在 Ubuntu 21.04 中,无法通过上面的两个应用修改 GDM 背景;
Oh no! Something has gone wrong error
GNOME HELP/Troubleshooting GNOME HELP/Configuration BASH MANUAL/6.11 Bash POSIX Mode How to disable an option with a bash script?
问题描述
在安装 GDM 之后,启动服务(systemctl start gdm3.service),此时显示错误信息:

Oh no! Something has gone wrong error

或者,在输入用户名与密码之后,不断的退到登录界面;
原因分析
1)修改 /etc/gdm/custom.conf 文件,加入如下行:

[debug]
Enable=true[……]

READ MORE

「GNOME Keyring」

GNOME Keyring 是什么?
GNOME Keyring 是一个守护进程应用,用于管理用户的安全凭证,例如用户名和密码。敏感数据会被加密后存储在用户主目录中的”密钥环文件”中。默认密钥环使用登录密码进行加密,因此用户不需要记住另一个密码;
GNOME Keyring 作为守护程序实现,并使用 gnome-keyring-daemon 为进程名称。应用程序可以使用 libgnome-keyring 库来存储和请求使用密码;
GNOME Keyring 是 GNOME 桌面的组成部分之一。很多系统中都有类似的应用程序,比如 macOS 中的 Keychain Access,再 KDE 桌面环境中的 KWallet;
如果说非要粗暴的解释 GNOME Keyring 是个什么,那你可以把它想象成一个保存密码的软件;
GNOME Keyring Manager
GNOME Keyring Manager(gnome-keyring-manager)是 GNOME Keyring 的用户界面,通过这个用户界面可以查看、添加、删除、修改这些安全凭证;
从 GNOME 2.22 开始,它已被弃用了,已经被 Seahorse 完全取代。Seahorse 与 GNOME Keyring Manager 的作用是相同的;
如何安装 GNOME Keyring?
对于如此重要的一个应用,在大多数以 GNOME 为桌面环境的发行版中已经安装了 GNOME Keyring,如果没有安装的话:

可以使用发行版的包管理器进行安装;
或者可以参考BLFS/gnome-keyring-3.20.0来使用源码编译安装

在 Debian 中,可以执行下面的命令安装 GNOME Keyring:

# apt-get install gnome-keyring

执行下面的命令来启动 GNOME Keyring 守护进程:

# /usr/bin/gnome-keyring-daemon –start –foreground –components=secrets

或者使用 systemd 来启动:

# 其实这个东西不能通过 systemd 来启动,也没有相关的文件,因为 GNOME Keyring 应该由 Session Manager 来启动;

如何使用 GNOME Keyring?
可以使用 Seahorse 来查看、添加、删除、修改这些安全凭证,将 GNOME Keyring 做为一个密码管理器;
如果你是要在程序中使用 GNOME Keyring,那你需要[……]

READ MORE

「GNOME 3」- 菜单分类与菜单条目

问题描述
在桌面环境中,当安装应用程序时,会自动创建菜单条目,并保存到某些分类中。但是: 1)这些菜单分类不符合我们的习惯,我们需要按照自己的需求进行分类; 2)还有部分菜单条目是我们自定义的,也需要在特定菜单分类中显示;
该笔记将记录:在 GNOME 3 中,如何添加自定义菜单条目、自定义菜单分类,以及相关的配置方法。
解决方案
菜单文件(.menu)
https://developer.gnome.org/menu-spec/ https://specifications.freedesktop.org/menu-spec/menu-spec-latest.html
作用: 1)指定 菜单、菜单条目 的顺序、层次结构、合并关系。.menu 文件为 XML 配置文件, 2)文件 /etc/xdg/menus/applications.menu 包含主应用程序菜单布局的定义。
所在目录: 1)系统级配置:/etc/xdg/menus/ 2)用户级配置:$HOME/.config/menus/
目录文件(.directory)
作用: 1).directory文件提供有关菜单的某个条目的信息,例如:该条目名称、工具提示、图标
所在目录 1)系统级配置:/usr/share/desktop-directories/ 2)用户级配置:$HOME/.local/share/desktop-directories/
桌面文件(.desktop)
Desktop Entry Specification
作用: 1)文件 .desktop 提供有关菜单中某个项的数据,如其名称、要运行的命令、图标。.desktop文件还包含了用于确定其在菜单中位置的关键字。 2)文件 ~/.local/share/applications/mimeinfo.cache 包含 MIME 类型信息,这些类型信息将$HOME/.local/share/applications/*.desktop应用程序与.desktop文件中指定的文件类型相关联。
所在目录: 1)系统级配置:/usr/share/applications 2)用户级配置:$HOME/.local/share/applications,并且可以将应用程序添加到右键单击文件时出现的“Open With >”的子菜单中。
常用菜单编辑工具
这些工具或多或少都有缺陷;对于复杂配置,推荐学习菜单系统,然后直接编辑配置文件。
Alacarte(推荐)
菜单编辑工具,安装:

apt-get install alacarte

Meow
菜单编辑工具。 安装参考:http://pnmouge[……]

READ MORE

「GNOME」- 关于选项 Add to Favorites 显示问题

问题描述
当我们打开应用程序之后,在 GNOME 的 Dock 中,将显示应用图标。在应用图标上右键,将显示 Add to Favorites 选项,已将图标固定在 Dock 上,方便下次打开。
但是,有些应用程序却没有 Add to Favorites 选项(比如 Eclipse 应用)。或者在启动应用后,任务栏显示新的图标,而不是显示在已有图标之上。
原因分析
窗口的 WM_CLASS 属性,与在 .desktop 中的 StartupWMClass 属性不匹配。
解决方法
我们这里以 Eclipse 窗口为例:
第一步,执行 xprop WM_CLASS 获取窗口的 WM_CLASS 属性:

# xprop WM_CLASS
WM_CLASS(STRING) = “Eclipse”, “Eclipse”

第二步、修改 Eclipse 的 .desktop 文件的 StartupWMClass 属性:

# eclipse.desktop

StartupWMClass=Eclipse

至此,问题就得以解决(需要重启 Eclipse 之后才显示)。
补充说明
目前(05/31/2021),通过 StartupWMClass 字段并不能指定多个 WM_CLASS 属性,网上给出的解决方案是对窗口进行重命名(12.10 – Set Multiple values for StartupWMClass (to group under same launcher in Unity) – Ask Ubuntu),或者其他 Workaround 解决。
参考文献
gnome shell – Cannot add custom launcher to Ubuntu Dock (‘Add to Favorites’ option does not show up) – Ask Ubuntu Duplicate icons for manually created GNOME launcher items – Ask Ubuntu[……]

READ MORE

「GNOME 3」- 设置窗口焦点跟随鼠标

问题描述
在 Linux 中,桌面有个特性:即使窗口没有获得焦点,鼠标依旧可以滚动。这会让我们误以为窗口获得焦点,而后我们需要输入某些文本时,由于窗口并没有获得焦点,此时我们输入的内容就到了原有焦点的窗口上,有可能毁坏原有内容。
解决办法
设置窗口焦点跟随鼠标,鼠标走到哪个窗口,哪个窗口就获得焦点。
1)安装 TWEAK TOOLS 工具:apt install gnome-tweak-tool 2)gnome-tweak-tool => Windows => Windows Focus => Focus on Hover
注意事项:不同的版本采用名称不同,比如某些发行版叫 Sloppy 而不是 Focus on Hover,但是含义是相同的。
参考文献
How do I set focus follows mouse in Ubuntu 17.10 and later with GNOME 3?[……]

READ MORE

「GNOME 3」- 锁屏、锁屏设置

问题描述
该笔记将记录:在 GNOME 3 中,与锁屏有关的内容,以及常见问题的解决方法。
解决方案
禁用锁屏
Disabling the GNOME automatic screen locking :: Fedora Docs ubuntu – How to disable entirely the GNOME lock screen? – Stack Overflow
在虚拟机中,我们运行 Ubuntu 20.04 TLS 发行版,但是我们并不希望锁屏。
Settings ⇒ Privacy ⇒ Screen Lock ⇒ Automatic Screen Lock ⇒ Off,把能够关闭的全部关闭。
如果过希望彻底禁用锁屏:

# gsettings set org.gnome.desktop.lockdown disable-lock-screen true

当锁屏后,保持屏幕常量(不黑屏)
Unblank screen saver by sun_wang 插件功能:在锁屏后,保持屏幕常亮,而不黑屏。 插件地址:https://extensions.gnome.org/extension/1414/unblank/
关闭黑屏(Blanking Screen)
suspend – Screen keeps turning off on Ubuntu 17.04 after 30 seconds of inactivity – Ask Ubuntu Display Power Management Signaling – ArchWiki
在 Ubuntu 21.04 中,虽然我们在 Power 中关闭 Blank Screen 设置,但是 30s 之后还是会自动黑屏。
我们尝试过这些方法,但是都未生效: 1)gnome – Screen turning off when idle even with power settings disabled – Ask Ubuntu 2)Set screen blanking time 3)Ubuntu 18.04 will not stop blanking screen – Ask Ubuntu
根据提示(How to stop screen going black after 10 min)该问题需要通过 xset 关闭 DPMS 设置:

xset -dpms

如果希望开机自动生效(持久化配置),需要增加:

# /etc/X11/xorg.conf.d/10-monitor.conf
Section “Extensions”
Option[……]

READ MORE

「GNOME 3」- 声音设置、修改闹铃

问题描述
该笔记将记录:在 GNOME 3 中,与声音有关的设置,以及常见问题的解决方案。
解决方案
修改默认的闹钟声音
Change default sounds of gnome-clocks app Converting m4a to ogg
在 GNOME 3 中,我们使用 Clock(gnome-clocks)应用,因为它自带闹钟功能。
但是,我们想要把它换成其他声音,比如我们喜欢的音乐。
操作系统:Kali GNU/Linux Rolling;桌面环境:GNOME Shell 3.30.2;软件版本:gnome-clocks 3.30.1;
第一步、重写声音主题:

# 复制声音主体,到家目录
cp -drv /usr/share/sounds/freedesktop ~/.local/share/sounds/d3rm-freedesktop
cd ~/.local/share/sounds/d3rm-freedesktop # 进入该目录进行后续操作

# 备份原有声音文件
mv alarm-clock-elapsed.oga alarm-clock-elapsed.oga.backup

# 创建新的声音文件
ffmpeg -i “/path/to/Theme from Mission: Impossible.m4a” -acodec vorbis -aq 60 -vn -ac 2 -strict -2 alarm-clock-elapsed.oga

第二步、应用新的声音: 使用 DConf 或者 gsettings 命令修改 org.gnome.desktop.sound.theme-name 为 d3rm-freedesktop 即可。
附加说明: 1)如果 gnome-clocks 被关闭了,闹钟是不会响启的。 2)使用 ogg123 命令来播放 alarm-clock-elapsed.oga 文件,以确定它就是闹钟的声音文件。 3)由于默认的铃声文件是 oga 格式,所以使用 ffmpeg 命令进行了转换。很多多媒体文件都可以使用 ffmpeg 命令进行转换。
关闭报警声音
Turn off error sound on Ubuntu 18.04
问题描述:在终端中,当按下 TAB 键时,会产生蜂鸣声。
解决方案: 1)在 Debian 10 中,在 Setting > Sound > Sound Effects > Alert Volume 中,进行关闭。[……]

READ MORE

「GNOME 3」- 窗口,使用,设置

问题描述
该笔记将记录:在 GNOME 3 中,如何设置窗口(比如,添加边框、设置按钮 等等),以及常见问题的解决方案。
解决方案
Working with Windows
调整窗口标题字体
gnome-tweak-tool Fonts > Window title font
dconf-editor org > gnome > desktop > wm > preferences :: titlebar-font
为窗口添加边框
gnome terminal – How to enable/add window borders in 17.10 & 18.04? – Ask Ubuntu Overlapping dark terminals have no visible border · Issue #287 · numixproject/numix-gtk-theme
在 GNOME 3 中(GNOME Shell 3.30.2),窗口是没有边框的。
当窗口背景色与桌面背景色相同时,无法区分二者,影响使用。比如,我们需要使用鼠标调整窗口边框,但是由于与背景色相同,导致我们很难无法找到窗口边框。
修改 ~/.config/gtk-3.0/gtk.css 文件,添加如下配置:

decoration {
border: 1px solid gray;
background: gray;
}

重启桌面(Alt+F2 => r => ENTER),然后窗口就可以显示边框:

[WIP] 针对特定应用设置边框
# 02/15/2021 目前,1)可以通过 GTK_THEME 为特定应用使用特定主题,比如 GTK_THEME=Red-Dot-Black-GTK meld 命令在启动 meld 应用时,使用 Red-Dot-Black-GTK 主题。但是在主题文件中,我们不知道该如何设置边框,否则可以使用该方法。2)还有一种方案是,在应用指定特定的 gtk.css 文件,但是我们不知道是否支持该特性(至少以前在 GNOME 2 中是可行的)
修改窗口按钮的显示(窗口管理器)
dconf editor the window-button settings function no useable
dconf-editor org -> gnome -> desktop -> wm -> preferences -> button-layout
Q:有时候修改可能不会生效,即使重启也不生效 A:可能的原因是那个按钮属于「GTK3」,[……]

READ MORE

「GNOME」- 监视系统资源(Resource Monitor)

GNOME 3
system-monitor by Cerin
插件功能:系统资源监视工具,显示 CPU MEMORY DISK NET 等等资源使用情况。 下载地址:https://extensions.gnome.org/extension/120/system-monitor 项目仓库:https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet 安装依赖:apt install gir1.2-gtop-2.0 gir1.2-nm-1.0 gir1.2-clutter-1.0
选项 Display in the Middle 可以设置居中显示。
GNOME 42
Resource Monitor by Ory0n
插件功能:系统资源监视工具,显示 CPU MEMORY DISK NET 等等资源使用情况。 下载地址:https://extensions.gnome.org/extension/1634/resource-monitor/ 项目仓库:https://github.com/0ry0n/Resource_Monitor/ 安装依赖:[……]

READ MORE

「GNOME」- 常见问题汇总

通知无法关闭,一直显示
How To Reset Gnome Desktop Settings To Default – Linux Uprising Blog
问题描述
在显示通知后,点击关闭(x)按钮,或者点击通知,都无法关闭通知,并且其他通知也无法弹出。
问题原因
未知。下面是相关问题: Desktop Notifications do not go away · Issue #1040 · RocketChat/Rocket.Chat.Electron Can’t turn off notification in GNOME 3.36.2 : gnome
解决方法
重置所有 GNOME 设置:dconf reset -f /org/gnome/
Unable to lock
问题描述
桌面提示 Unable to lock, Lock was blocked by an application
原因分析
Unity7 and Gnome 3: How to disable “lock was blocked by an application”, so that Gnome3 always locks the screen?
调高日志等级或许会看到原因(我们没有进一步追踪):

# journalctl -n 100

Mar 12 21:59:53 laptop.dc.d3rm.org gnome-shell[1890]: error: Unable to lock: Lock was blocked by an application
Mar 12 22:03:48 laptop.dc.d3rm.org update-notifier.desktop[931690]: /usr/lib/python3/dist-packages/aptdaemon/gtk3widgets.py:47: PyGIWarning: Gdk was imported without specifying a version first. Use gi.require_ver>
Mar 12 22:03:48 laptop.dc.d3rm.org update-notifier.desktop[931690]: from gi.repository import Gdk
Mar 12 22:03:48 laptop.dc.d3rm.org update-notifier.desktop[931690]: /usr/lib/python3/dist-packages/aptdaemon/gtk3widgets.py:48: PyGIWarning: Gtk was i[……]

READ MORE

「GNOME 3」- 重新启动桌面

问题描述
在正常情况下,通过 Alt + F2 => R => Enter 组合即可重启桌面环境。
但是有时候桌面环境会卡住、无响应,不再响应任何按键,那此时应该如何重启桌面,而不是重启电脑呢?
解决方法
该方法要求目标主机已经开启 SSH 服务,因为目标主机已经不响应任何操作,而我们需要想办法获取主机的控制权。
第一步、进入控制台,以获得控制权
首先,通过 查看路由器 或者 使用 fping 命令 等等方法获得网络地址;
然后,使用 SSH 登录主机。如果没有启动 SSH 服务,通过其他方法(USB、其他串口)控制主机也可以(但都需要提前配置);
或者可以尝试 Ctrl + Alt + Fx 以进入虚拟控制台(但是在大多数情况下键盘已经无响应)
第二步、重启或结束桌面环境
方法一、执行如下命令可以重启(频繁执行会导致 GNOME 禁用扩展、强制退出)

killall -HUP gnome-shell

方法二、使用如下命令结束进程(该方法比较稳妥,不会导致应用程序退出)

killall -QUIT gnome-shell

# 09/22/2020 方法二:首次执行是正常的,但是在执行第二次时,会导致桌面退出(应用程序也会退出),需要重新登录。
参考文献
How can I restart GNOME Shell, after it freezes or becomes unresponsive?[……]

READ MORE