10

If I have dolphin open and I'm working in the terminal or on Windows files might be moved or added. How would I go about to make sure it updates the status of a directory of real time?

Presently I cannot even use back to update and constantly have to reopen dolphin, verry annoying

Kristopher Ives
  • 5,419
  • 2
  • 27
  • 36
user140393
  • 446
  • 10
  • 24

6 Answers6

6

The way in order to refresh Dolphin is to press F5. However, this would be manual.

In order to continuously refresh, an automatic solution, create a bash script that runs on boot. This bash script should press F5 every five seconds if Dolphin is open. Create a file named dolphin-update in /usr/local/bin with the following contents:

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

You may need to first create it as root and then change the owner to your user:

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

Ensure that it has executable permissions:

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

Now we need that to run on boot. To do that run sudo crontab -e and add the following line to the end of the file:

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

This script will run on boot.

You should now have a continuously refreshing Dolphin!

There are some caveats to this script.

  • If you open Dolphin, go to another application where F5 triggers something, (eg Chromium refreshes the page), the script will still run and be a constant annoyance. Solution: Close Dolphin when not actively using it.
  • As a cron job is used, if your computer crashes, the script will not run on boot. However this is a problem with cron not the script.

What the script means, line by line:

  • #!/bin/bash - shebang to run with bash
  • while true; do - run continuously
  • PID=$(pgrep "dolphin") - find the process ID of a dolphin instance. This is purely there to check whether there is even a instance of Dolphin running.
  • if [ "$?" -ne "0" ]; then - check the result of whether there is a Dolphin instance running. If there is, then ...
  • xdotool key 'F5' - press F5
  • fi - end the if block
  • sleep 5 - wait 5 seconds before repeating the process
  • done - end the while block
fosslinux
  • 3,771
  • 4
  • 28
  • 46
  • The answer is really putting together all that was said under this question.- As far as I can tell, in Kubuntu 18.04 the non-refresh thing *rarely* happens (while I *have* seen it happen, hence the bounty). Given the caveats you mention (especially the first one) I hesitate using the script (given that manual F5 is an easy enough solution too).. - I guess my question is naive, but do you think the script could be improved further in order for it to run only when a file/folder is created or deleted? - I guess not. –  May 16 '18 at 08:37
  • @cipricus It is possible, I did look into it, however it would require a daemon like `tracker` from GNOME. These daemons require very high CPU resources and disk usage, slowing down the rest of the system. So not easily, no. – fosslinux May 16 '18 at 20:40
  • what do you think about [this answer](https://askubuntu.com/a/1037231/47206), namely the `whenever it has focus` part? the automatic refreshing in relation to focus is as good as `when a file/folder is created or deleted` part that I mentioned, isn't it? –  May 17 '18 at 09:50
  • @cipricus yes it is. **:D @MilosPavlovic** – fosslinux May 17 '18 at 22:37
  • @cipricus Thank you for giving me the bounty. I'm not sure that I entirely deserve it, it is not a full solution. But thanks anyway. – fosslinux May 21 '18 at 00:40
4

This seems to be a bug still active in Kubuntu 18.04, where Dolphin would not always automatically refresh and show instantly changes made by another program, in which case manual refresh is needed. F5 seems to work fine for this purpose now.

  • 1
    `xdotool` is to automate the refresh from a script. – solsTiCe May 15 '18 at 07:56
  • @solsTiCe - Thanks for pointing that out. The other answer doesn't provide the full solution though, only describes it. –  May 15 '18 at 07:59
1

Next script uses xdotool to send F5 key to reset dolphin window whenever it has focus. Save it, make it executive and run it on boot.


#!/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
  • what is the differences between the two answers? you should post them under one answer for convenience anyway. –  May 17 '18 at 09:53
  • once the window gets focus how often does the script refreshes it? –  May 17 '18 at 09:54
  • Once dolphin gets the focus, every 5 seconds. You can change the **sleep** interval. –  May 17 '18 at 14:49
  • so, I'm a bit embarrassed by the success of my bounty post :) , what I'll do is grant it to @ubashu and then grant a new one for you too. Unifying your two answers would be good. –  May 20 '18 at 08:49
  • It should be used fixed by inotify. It's useless answer. If you have 10^6 files you will be stuck on such update. – RedEyed Jun 01 '18 at 19:26
1

OP's original question is almost 5 years old. There is a master bug posted in 2009 with 15 duplicate bugs pointing to it. The bug fix appeared in Debian (comment # 58) after OP's question was posted.

The report that this bug is still happening in 2018 by a new bug report is a little misleading because the user that filed the report (Jeremy9856) has posted a dozen comments trying different solutions:

  • updated the number of allowed kernel inotify watches
  • disabling tlp which puts drives to sleep
  • do mkdir / rmdir several time to trigger the problem
  • Another user (comment #10) tested a one-liner and states the problem doesn't exist while true ; do mkdir abc ; sleep 1 ; rmdir abc ; sleep 1 ; done
  • when there is an accent in the path (eg. /home/jeremy/Téléchargements/Séries)

The last comment by Jeremy9586 states:

Well I removed the symlinks of the folders inside /home (Desktop, Downloads, etc...) that pointed to /media/Data and used kde settings (in applications) to change the places of these folders and I didn't had the problem for about a week !

So can it be related to the symlinks ?


Summary

The bug the OP had was first reported in 2009 and solved in 2013.

The bug the new bounty points to appears to have nothing to do with refreshing file list in general and need to press F5. The bug was caused by symbolic links between /home and /media/home.

WinEunuuchs2Unix
  • 99,709
  • 34
  • 237
  • 401
  • The latest bug is happening only rarely on my system. –  May 21 '18 at 07:48
  • @cipricus The rare bugs are hardest to pin down. Every couple months when rebooting grub and selecting a distro a tiny little fist will appear on a black screen and I have to cold boot. Although annoying when it happens, the many hours to fix are too expensive compared to the 10 seconds of lost time. – WinEunuuchs2Unix May 21 '18 at 12:29
1

I agree this is a problem with Dolphin. I don't use it, but was testing some bash scripts I wrote on a KDE VM and discovered that although Dolphin does real time updating when in the home folder, it doesn't do it when on /dev/shm. I found your question here and upvoted, because this still needs to be answered.

What I resorted to using in my script is: xdotool key 'F5'

Which worked for my script, but isn't exactly real time. My script generates a bunch of files and you can't see it happening, but as soon as done, it "presses" 'F5' and the files are visible.

Colin Keenan
  • 266
  • 1
  • 4
  • could you provide more details so that anyone could use your solution? –  May 15 '18 at 08:00
  • 1
    Just a shell script with an infinite loop will do the trick `while true; do sleep 5; xdotool key 'F5';done`. However xdotool only works in X11 not in wayland. – solsTiCe May 15 '18 at 08:22
  • @solsTiCe - (I'm in KDE. ) Would you post the full script and full details on how/when to run it? –  May 15 '18 at 16:31
  • the problem is this *rarely* happens. so I wonder whether it's worth adding the script –  May 15 '18 at 16:50
  • @solsTiCe - the script was posted with full details in a new answer –  May 16 '18 at 08:39
  • I think there was a misunderstanding. I had a script that opened dolphin and created files with the expectation that the user would be able to see what files the script was creating. That didn't happen, so I had my script use xdotool key 'F5' so the user could see what was happening. This was not a solution to the problem. At the time, I personally was not using dolphin (or KDE). I've since switched to KDE on Arch Linux and I have not seen this issue in a long time. – Colin Keenan May 16 '18 at 13:11
0

xdotool can send F5 key to dolphin on mouse-enter event or whenever it's window gets focus.

These commands run indefinetely so you can set one of them to run on boot.

Finds the window with class dolphin and sends the F5 whenever mouse pointer enters window:

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

Finds the window with class dolphin and sends the F5 whenever dolphin gets focus:

xdotool search --onlyvisible --class dolphin  behave %@ focus key F5
  • `whenever mouse pointer enters window` - that sounds great. is the other answer you posted better in any way? –  May 17 '18 at 09:56
  • This is the manual way of refreshing the window and requres to move the mouse pointer away from the dolphin and back in. Or in the case of second command giving focus to another window and then focusing dolphin again. In the other answer it's automatic. –  May 17 '18 at 14:44