提示和技巧

Hiding the default browser (Firefox)

If you’re using another browser than the one installed by default (Firefox) then you can hide the default one from the interface via the following commands:

# For Fedora 39 and earlier: $ sudo cp /usr/share/applications/firefox.desktop /usr/local/share/applications/ $ sudo sed -i "2a\\NotShowIn=GNOME;KDE" /usr/local/share/applications/firefox.desktop

# Fedora 40 and later: $ sudo cp /usr/share/applications/org.mozilla.firefox.desktop /usr/local/share/applications/ $ sudo sed -i "2a\\NotShowIn=GNOME;KDE" /usr/local/share/applications/org.mozilla.firefox.desktop

$ sudo update-desktop-database /usr/local/share/applications/ ```

== Reenabling the default browser (Firefox)

If you want to make the default browser (Firefox) visible again after hiding it, you can follow these steps:

``` $ sudo rm -f /usr/local/share/applications/*firefox*.desktop $ sudo update-desktop-database /usr/local/share/applications ```

== Enabling RPM Fusion repos

[CAUTION]
====
This section discusses third-party software sources not officially affiliated with or endorsed by the Fedora Project. Use them at your own discretion. Fedora recommends the use of free and open source software and avoidance of software encumbered by patents.
====

Users may want to take advantage of the non-free software that is made available via the https://rpmfusion.org/[RPM Fusion] repos in order to use the proprietary NVIDIA drivers, multimedia codecs, or other software not distributed as part of Fedora.

The first time you install the RPM Fusion repos, you need to install the versioned RPMs:

    $ sudo rpm-ostree install \
        https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
        https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
    $ reboot


Once you have rebooted into the new deployment, you can run the following command to remove the “lock” on the versioned packages that were installed previously. This will enable the RPM Fusion repos to be automatically updated and versioned correctly across major Fedora version rebases:

    $ sudo rpm-ostree update \
        --uninstall rpmfusion-free-release \
        --uninstall rpmfusion-nonfree-release \
        --install rpmfusion-free-release \
        --install rpmfusion-nonfree-release
    $ reboot

For more information, see https://discussion.fedoraproject.org/t/simplifying-updates-for-rpm-fusion-packages-and-other-packages-shipping-their-own-rpm-repos/30364[this thread] on the Fedora Discourse site.

== 使用 Toolbx

=== 检查你是否位于一个 Toolbx 容器中

如果你经常使用 Toolbx 执行各种任务并使用多个 Toolbx 容器,有时可能会搞不清楚自己是在主机上还是在 Toolbx 容器中执行命令。毕竟目前没有任何命令告诉你正在哪个 Toolbx 容器中工作。

为了缓解这种情况,你可以在 `~/.bashrc` 末尾添加下面的 shell 别名:

  alias istoolbx='[ -f "/run/.toolboxenv" ] && grep -oP "(?<=name=\")[^\";]+" /run/.containerenv'

当你打开一个新的 Shell 的时候,你就能使用一个新的命令 `istoolbx`:

* 当你在主机执行这个命令,它会以返回值 1 退出
* 当你在 Toolbx 容器执行这个命令,它会以返回值 0 退出同时打印当前 Toolbx 的容器名称

当然你也可以在 `~/.bashrc` 添加下面的内容,这样子你的 Bash 提示符中就能直接包含 "[toolbox <name>]" 了:

function is_toolbox() { if [ -f "/run/.toolboxenv" ] then TOOLBOX_NAME=$(cat /run/.containerenv | grep -oP "(?⇐name=\")[^\";]+") echo "[${HOSTNAME} ${TOOLBOX_NAME}]" fi }

现在你就可以将 `is_toolbox` 包含在 `PS1` 变量中而无需再手动执行别的命令来确认你是否在 toolbox 中了。

例如:``` export PS1="\[\e[31m\]\`is_toolbox\`\]\e[m\]\[\e[32m\]\\$ \[\e[m\]\[\e[37m\]❱\[\e[m\] " ```

如果你不在 toolbox 中,它就会显示为 `$ ❱`

如果你在一个名为 "default" 的 toolbox 它则会显示为 `[toolbox default]$ ❱`

=== 在 Toolbx 里运行 Host 上的应用程序

当你希望在 Toolbx 中使用一些 host 上的工具如 `podman`, `nmcli` or `rpm-ostree`,你可以使用预置的 `flatpak-spawn` 命令:

  $ flatpak-spawn --host podman --help

如果你运行某个应用需要到 `sudo` 权限,你必须为 `sudo` 添加 `-S` 选项:

  $ flatpak-spawn --host sudo -S rpm-ostree status

如果你发现自己经常遇到在 Toolbx 容器中运行 host 上工具的场景,你可以自己创建一个简短的预置脚本(*在 Toolbx 容器内*):

1. 在终端中执行上面的命令以定义 `istoolbx` 别称

2. 请确保你在一个 Toolbx 容器内,如果你在 host 上使用这个命令你可能得不到任何输出!

     [toolbx]$ istoolbx
     <Toolbx container name here>

3. 当你确定你在一个 Toolbx 容器时, 执行:

    [toolbx]$ echo -e '#!/bin/sh\nexec /usr/bin/flatpak-spawn --host flatpak "$@"' | sudo tee /usr/local/bin/flatpak 1>/dev/null && sudo chmod +x /usr/local/bin/flatpak

你现在有一个可用的 `flatpak` 命令,它允许你与 `flatpak` 交互,就好像您在主机上运行该命令一样。

== 使用 `ostree`/`rpm-ostree`

=== 追踪基本系统上的变动

基于 `ostree` 的操作系统中的某些目录是用户可写的,例如 `/etc`。 您可以使用以下命令快速了解在 `/etc` 下更改的文件:

  $ sudo ostree admin config-diff

要获得更详细的差异,你可以使用:

  $ sudo diff -yrW200 --suppress-common-lines --color=always /usr/etc /etc 2>/dev/null

NOTE: 这是因为 ostree 在 `/usr/etc` 下保留了 `/etc` 目录未经修改的副本。
       您的所有更改都直接应用于 `/etc`。

== 使用 Flatpak 应用

=== 从 CLI 直接访问 Flatpak 应用程序

使用 Flatpak 应用程序而非传统方式安装的应用程序最显着的变化是不能再直接从 CLI 调用应用程序:

  $ evince
  bash: command not found: evince

你需要这样子调用它们:

  $ flatpak run org.gnome.Evince

此外,大多数 Flatpak 应用程序将其内部二进制文件导出到一个与安装方式相关的位置:

* 如果你的 Flatpak 应用是系统级别安装的,你可以在 `/var/lib/flatpak/exports/bin/` 找到它们
* 如果你的 Flatpak 应用是用户级别安装的,你可以在 `$HOME/.local/share/flatpak/exports/bin/` 找到它们

[NOTE]
====
如果你不确定某个 Flatpak 应用是怎么安装的,你可以使用这个命令:

  $ flatpak list --app --columns=name,installation
====

你可以将这些目录添加到 `$PATH`:

  $ org.gnome.Evince

或者为你的 shell 设置别称是它们在 CLI 中可用:

  $ alias evince="flatpak run org.gnome.Evince"
    # or alias evince="org.gnome.Evince"
  $ evince