KDE Baloo не индексирует файлы, которые расположены на других файловых системах за пределами домашнего каталога, в частности, если каталоги Загрузки, Видео и Музыка находятся на внешнем жёстком диске, а из домашнего каталога на них указывают символические ссылки (симлинки). Предлагаемое решение состоит в том, чтобы заменить символические ссылки на Mount-mapping. Баш-портянка, приведённая ниже, автоматизирует этот процесс.
Вступление
Автор метода — ChatGPT, исправлено мной.
Диск DATA должен быть примонтирован в fstab.
В первую очередь — нужно заменить симлинки, которые вы делали, на обычные пустые папки Загрузки, Видео и Музыка.
Выдохнули?? — ПРИСТУПИМ!
Создание сценария
Создаём файл /usr/local/bin/bind-mount-downloads.sh следующего содержания:
#!/usr/bin/env bash
USER_NAME="$PAM_USER"
USER_ID=$(id -u "$USER_NAME")
# Фильтр: монтировать только если UID >= 1000 (обычные пользователи)
if [ "$USER_ID" -lt 1000 ]; then
echo "Skip bind mount for system user UID=$USER_ID"
exit 0
fi
# Получаем домашнюю папку пользователя по UID
HOME_DIR=$(getent passwd "$USER_ID" | cut -d: -f6)
# Список пар: Исходник → Назначение (только имя папки)
FOLDERS=("Загрузки:Загрузки" "Музыка:Музыка" "Видео:Видео")
# Корень исходных папок
SOURCE_ROOT="/run/media/DATA"
for entry in "${FOLDERS[@]}"; do
SRC_NAME="${entry%%:*}"
DEST_NAME="${entry##*:}"
SOURCE="$SOURCE_ROOT/$SRC_NAME"
TARGET="$HOME_DIR/$DEST_NAME"
# Пропускаем итерацию, если источник не существует
if [ ! -d "$SOURCE" ]; then
continue
fi
# Пропускаем итерацию, если цель не существует
if [ ! -d "$TARGET" ]; then
continue
fi
# Эти папки ОБЩИЕ ДЛЯ ВСЕХ ПОЛЬЗОВАТЕЛЕЙ.
# Восстанавливаем права
find "$SOURCE" -type d -exec chmod 777 {} +
find "$SOURCE" -type f -exec chmod 666 {} +
sync # Записать дисковый кэш
# Проверяем mountpoint
mountpoint -q "$TARGET" && continue
echo "Bind-mount: $SOURCE -> $TARGET"
mount --bind "$SOURCE" "$TARGET"
done
sudo chmod +x /usr/local/bin/bind-mount-downloads.sh
Подключение PAM-модуля
Ищем файл
- /etc/pam.d/common-session ИЛИ
- /etc/pam.d/common-session-noninteractive (На некоторых дистрах) ИЛИ
- /etc/pam.d/sshd ИЛИ
- /etc/pam.d/system-login (На Арче и подобных)
В конец этого файла добавляем строку:
session optional pam_exec.so /usr/local/bin/bind-mount-downloads.sh
ПОЗДРАВЛЯЮ!!! ВЫ РАСКУКОЖИЛИ КДЕ-БАЛУ!!!