Підказки і настанови

Приховування типової програми для перегляду інтернету (Firefox)

Якщо ви користуєтеся іншою програмою для перегляду інтернету, ніж типова (Firefox), ви можете приховати типову програму з інтерфейсу за допомогою таких команд:

# Для Fedora 39 та раніших: $ 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 та пізніші: $ 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/ ```

== Повторне вмикання типового браузера (Firefox)

Якщо ви хочете зробити типовий браузер (Firefox) знову видимим після його приховування, ви можете виконати такі дії:

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

== Вмикання сховищ RPM Fusion

[CAUTION]
====
У цьому розділі наведено поради щодо сторонніх джерел програмного забезпечення, які офіційно не пов'язано із Проєктом Fedora і не схвалено його учасниками. Користуйтеся ними на свій розсуд. Fedora рекомендує користуватися вільним програмним забезпеченням із відкритим кодом і уникати програмного забезпечення, поширення якого обмежено патентами.
====

У користувачів може виникнути потреба у використанні програмного забезпечення, яке не є вільним і яке доступне зі сховищ https://rpmfusion.org/[RPM Fusion], для користування закритими драйверами NVIDIA, мультимедійними кодеками або іншим програмним забезпеченням, яке не поширюється як частина Fedora.

=== First installation

Під час початкового встановлення сховищ RPM Fusion вам слід встановити RPM відповідних версій:

    $ 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

Then continue with the next section to prepare your system for major Fedora updates.

=== Major Fedora updates

Щойно ви завантажите нову рознорнуту систему, ви зможете віддати вказану нижче команду для вилучення «блокування» пакунків версій, які було встановлено раніше. Це увімкне сховища RPM Fusion для автоматичного оновлення і належного використання версій для основних переходів за версіями Fedora:

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

Щоб дізнатися більше, ознайомтеся із https://discussion.fedoraproject.org/t/simplifying-updates-for-rpm-fusion-packages-and-other-packages-shipping-their-own-rpm-repos/30364[цією гілкою обговорення] на сайті Fedora Discourse.

== Робота з Toolbx

=== Визначення того, чи перебуваєте ви у контейнері Toolbx

Якщо ви часто користуєтеся Toolbx для виконання різноманітних завдань і використовуєте декілька контейнерів Toolbx, стає важко стежити за тим, виконуєте ви команди в основній системі чи у контейнері Toolbx. Крім того, у поточній версії немає команди, яка б повідомила вам, у якому з контейнерів Toolbx ви працюєте.

Для полегшення виконання цього завдання ви можете додати таку альтернативу командної оболонки наприкінці вашого файла `~/.bashrc`:

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

Коли ви відкриєте нову командну оболонку, у вас буде доступ до нової команди — `istoolbx`. Ця команда поводитиметься так:

* Якщо команду виконано з основної системи, вона поверне код виходу 1
* Якщо команду запущено з контейнера Toolbx, буде повернуто код виходу 0 і виведено до консолі назву поточного контейнера Toolbx

Якщо вам подобається більш автоматизоване рішення, варто додати до вашого `~/.bashrc` вказаний вище фрагмент, який змінить ваш запит bash на такий, що міститиме рядок «[toolbox <назва>]»:

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: `$ ❱`

А у toolbox із назвою «default» ось так: `[toolbox default]$ ❱`

=== Запуск програм з Toolbx в основній системі

Потреба у запуску може виникнути, якщо ви хочете взаємодіяти із програмними інструментами основної системи, наприклад `podman`, `nmcli` або `rpm-ostree`, не полишаючи контейнера Toolbx. Ви можете скористатися для виконання цього завдання програмою `flatpak-spawn`, яку включено до базового пакунка:

  $ flatpak-spawn --host podman --help

Якщо програмі, яку ви хочете викликати, потрібен доступ `sudo`, слід додати параметр `-S` до команди `sudo`, ось так:

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

Якщо ви використовуєте команди, подібні до наведеної вище, часто для доступу, наприклад, до команди flatpak з контейнера Toolbx, ви можете створити самі короткий нетиповий скрипт-обгортку (*у контейнері Toolbx*). Для цього виконайте такі кроки:

1. Визначте альтернативу `istoolbx` (для зручності) за допомогою згаданої вище команди у вашому терміналі

2. Переконайтеся, що ви перебуваєте у контейнері Toolbx. Якщо наступна команда нічого не виводить, ймовірно, ви усе ще перебуваєте в основній системі!

     [toolbx]$ istoolbx
     <Тут буде назва контейнера Toolbx>

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 зберігає незмінену копії каталогу `/etc` у
      `/usr/etc`. Усі внесені вами зміни записуються до `/etc` безпосередньо.

== Робота з програмами Flatpak

=== Безпосередній доступ до програм Flatpak з інтерфейсу командного рядка

Найпомітнішою відмінністю користування програмами Flatpak від користування звичайними програмами є те, що такі програми не можна безпосередньо викликати з інтерфейсу командного рядка, ось так:

  $ evince
  bash: команду не знайдено: evince

Замість цього, виклик можна здійснити так:

  $ flatpak run org.gnome.Evince

Крім того, більшість програм Flatpak експортують власні двійкові внутрішні файли каталозі, який залежить від каталогу встановлення:

* Для програм Flatpak, які встановлено з віддалених сховищ `system`, ці каталоги можна знайти у `/var/lib/flatpak/exports/bin/`
* Для програм Flatpak, які встановлено з віддалених сховищ `user`, ці каталоги можна знайти у `$HOME/.local/share/flatpak/exports/bin/`

[NOTE]
====
Якщо ви не певні, до якого встановлення належить програма Flatpak, ви можете скористатися такою командою для виведення потрібних даних:

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

Ви можете або додати ці каталоги до змінної `$PATH`:

  $ org.gnome.Evince

або налаштувати `alias` командної оболонки так, щоб вони стали доступними інтерфейсу командного рядка, ось так:

  $ alias evince="flatpak run org.gnome.Evince"
    # або alias evince="org.gnome.Evince"
  $ evince