Как обновить файловый менеджер Dolphin в режиме реального времени

Если у меня открыт дельфин, и я работаю в терминале или в Windows, файлы могут быть перемещены или добавлены. Как мне убедиться, что он обновляет статус каталога в реальном времени?

В настоящее время я не могу даже использовать обратно, чтобы обновить и постоянно приходится открывать дельфина, очень раздражает

6 ответов

Чтобы обновить Dolphin, нужно нажать F5. Однако это будет ручным.

Чтобы постоянно обновлять автоматическое решение, создайте bash-скрипт, который запускается при загрузке. Этот bash-скрипт должен нажимать F5 каждые пять секунд, если открыт Dolphin. Создайте файл с именем dolphin-update в /usr/local/bin со следующим содержанием:

#!/bin/bash
while true; do
    PID=$(pgrep "dolphin")
    if [ "$?" -ne "0" ]; then
        xdotool key 'F5'
    fi
    sleep 5
done

Вам может понадобиться сначала создать его как root, а затем сменить владельца на пользователя:

sudo chown username:username /usr/local/bin/dolphin-update 

Убедитесь, что у него есть права на выполнение:

chmod +x /usr/local/bin/dolphin-update

Теперь нам нужно, чтобы запустить при загрузке. Чтобы сделать это запустить sudo crontab -e и добавьте следующую строку в конец файла:

@reboot /usr/local/bin/dolphin-update

Этот скрипт будет запускаться при загрузке.

Теперь у вас должен быть постоянно обновляющийся дельфин!

Есть несколько предостережений к этому сценарию.

  • Если вы откроете Dolphin, перейдите в другое приложение, где F5 что-то запускает (например, Chromium обновляет страницу), скрипт все равно будет работать и будет вызывать постоянное раздражение. Решение: закройте Dolphin, когда не используете его.
  • Как cron Задание используется, если ваш компьютер дает сбой, скрипт не запустится при загрузке. Однако это проблема с cron не сценарий.

Что означает скрипт, строка за строкой:

  • #!/bin/bash - Шебанг, чтобы бежать с Баш
  • while true; do - бегать непрерывно
  • PID=$(pgrep "dolphin") - найти идентификатор процесса dolphin пример. Это просто для того, чтобы проверить, есть ли запущенный экземпляр Dolphin.
  • if [ "$?" -ne "0" ]; then - проверьте результат работы запущенного экземпляра Dolphin. Если есть, то...
  • xdotool key 'F5' - нажмите F5
  • fi - конец if блок
  • sleep 5 - подождите 5 секунд, прежде чем повторить процесс
  • done - закончить блок while

Похоже, что эта ошибка все еще активна в Kubuntu 18.04, где Dolphin не всегда автоматически обновляет и мгновенно отображает изменения, сделанные другой программой, и в этом случае требуется ручное обновление. F5, кажется, отлично работает для этой цели сейчас.

Оригинальный вопрос ОП почти 5 лет. В 2009 году была опубликована основная ошибка, на которую указывают 15 повторяющихся ошибок. Исправление ошибки появилось в Debian (комментарий № 58) после того, как был опубликован вопрос OP.

Сообщение о том, что эта ошибка по-прежнему возникает в 2018 году из-за нового отчета об ошибках, немного вводит в заблуждение, поскольку пользователь, который подал отчет (Jeremy9856), опубликовал дюжину комментариев, пытаясь найти различные решения:

  • обновлен номер разрешенного ядра inotify часы
  • отключение tlp который усыпляет диски
  • делать mkdir / rmdir несколько раз, чтобы вызвать проблему
  • Другой пользователь (комментарий № 10) протестировал однострочник и заявил, что проблемы не существует while true ; do mkdir abc ; sleep 1 ; rmdir abc ; sleep 1 ; done
  • когда есть акцент на пути (например, /home/jeremy/Téléchargements/Séries)

Последний комментарий Jeremy9586 гласит:

Ну, я удалил символические ссылки на папки внутри /home (Desktop, Downloads и т. Д.), Которые указывали на /media/Data, и использовал настройки kde (в приложениях), чтобы изменить места этих папок, и у меня не было проблема около недели!

Так может ли это быть связано с символическими ссылками?


Резюме

Ошибка, о которой ОП была впервые сообщена в 2009 году и устранена в 2013 году.

Ошибка, на которую указывает новая награда, не имеет ничего общего с обновлением списка файлов в общем, и нужно нажать F5. Ошибка была вызвана символическими связями между /home а также /media/home,

Я согласен, что это проблема с Дельфином. Я не использую его, но тестировал некоторые скрипты bash, которые я написал на виртуальной машине KDE, и обнаружил, что хотя Dolphin выполняет обновление в режиме реального времени, находясь в домашней папке, он не делает этого при работе с /dev/shm. Я нашел ваш вопрос здесь и проголосовал, потому что на этот вопрос все еще нужно ответить.

То, что я прибегнул к использованию в моем сценарии: xdotool key 'F5'

Который работал для моего сценария, но не совсем в режиме реального времени. Мой сценарий генерирует кучу файлов, и вы не можете видеть, что это происходит, но как только это будет сделано, он "нажимает" "F5", и файлы становятся видимыми.

Следующий скрипт использует xdotool для отправки клавиши F5 для сброса окна дельфина, когда оно имеет фокус. Сохраните его, сделайте его исполнительным и запустите его при загрузке.


#!/bin/bash
     # indefinite loop
     while  : ; do
         # gets root window property _NET_ACTIVE_WINDOW
         WIN=($(xprop -root _NET_ACTIVE_WINDOW))

         # extracts window id (base seven)
         WIN="${WIN[4]%%","*}"

         WIN="$(printf "%s\n" ${WIN})"  # bypass weird array bug

          # Decimal window id of dolphin
          WindowID="$(xdotool search --class "dolphin" 2>/dev/null | tail -1)"

          # Convert dolphin's win id to base seven
          WindowIDbSeven=$(printf "0x%07x" ${WindowID})

         # test if an acive window id mathes with the dolphin's window id
         if [[ "${WIN}" == "${WindowIDbSeven}" ]]; then
             # sends F5 to dolphin's window id
             xdotool key --clearmodifiers "$WindowIDbSeven" F5
         fi

          # clears array
          WIN=()

         sleep 5
     done

xdotool может отправить клавишу F5 дельфину при событии ввода мышью или всякий раз, когда его окно получает фокус.

Эти команды выполняются неопределенно, поэтому вы можете настроить одну из них для запуска при загрузке.

Находит окно с классом dolphin и отправляет F5 всякий раз, когда указатель мыши входит в окно:

xdotool search --onlyvisible --class dolphin  behave %@ mouse-enter key F5

Находит окно с классом дельфинов и отправляет F5 всякий раз, когда дельфин получает фокус:

xdotool search --onlyvisible --class dolphin  behave %@ focus key F5
Другие вопросы по тегам