Для того, чтобы мы могли работать с PCManFm от имени root'а, нам понадобятся:
# По умолчанию в Ach уже должен быть установлен polkit.
# Если мы проверим:
ps aux | grep polkit
# то получим что-то вроде:
polkitd 1374 0.0 0.0 385764 12608 ? Ssl 12:46 0:18 /usr/lib/polkit-1/polkitd --no-debug --log-level=notice
# То есть у нас уже работает демон polkitd.
# Нам нужен только GUI-агент, чтобы ...
# ... графическая программа могла запускать ...
# ... графическое окно для ввода пароля.
# Поэтому установим polkit-gnome и gvfs:
sudo pacman -S polkit-gnome gvfs
# Далее мы запускаем GUI-агент:
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
# Или лучше так:
nohup /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 >/dev/null 2>&1 &
# И после этого мы можем в PCManFM открывать папки вот так:
admin:///root
# Чтобы запускать GUI-агент автоматически при входе в систему, добавим в ~/.config/sway/config:
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
pkexec env DISPLAY=$DISPLAY \
XAUTHORITY=$XAUTHORITY \
WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR pcmanfm
# pkexec
# - спрашивает пароль через polkit, а не через sudo
# - учитывает правила доступа polkit (можно разрешить/запретить разным пользователям запускать разные программы)
# - по умолчанию сбрасывает все переменные окружения (это сделано специально ради безопасности, чтобы root-программы не получили случайно небезопасные переменные от твоей сессии).
Графические приложения должны знать:
Когда pkexec сбрасывает окружение, этих переменных нет. Поэтому мы руками «передаём» их через env ... pcmanfm.
Что происходит в итоге:
sudo -E pcmanfm
# Но обычно рекомендуют pkexec, а не sudo pacman,потому что
# ... sudo под Wayland/X11 ломает доступ к сокету дисплея.