Bug 452968

Summary: The Save File window sometimes forgets last used directory when it was a kio-fuse mount path
Product: [Plasma] xdg-desktop-portal-kde Reporter: redashesyellowflowers
Component: generalAssignee: Plasma Bugs List <plasma-bugs>
Severity: normal CC: aleixpol, jgrulich, nate
Priority: NOR    
Version: 5.24.4   
Target Milestone: ---   
Platform: Neon   
OS: Linux   
Latest Commit: Version Fixed In: 5.25

Description redashesyellowflowers 2022-04-25 01:27:07 UTC
The Save File - KDialog window sometimes forgets the last directory to which it was pointing, even when the browser's cache was not cleaned. Observed across Brave and Firefox browsers. Also seen on KDE Neon 20.04 and Fedora 35.

1. Open Browser (Brave/Firefox), and attempt to save a file to a non-standard download location (i.e. not the Downloads folder).
2. Wait a few minutes or more.
3. Try to save another file and instead you will be directed to /run/user/1000/doc/random-characters-folder/ which contains a copy of the saved file.

When I try to save a file a second time, I expect to see the directory where I last saved a file. 

But the KDialog seems to save the file in two places. One in the directory where I want it to and secondly in a sub-folder in /run/user/1000/doc/ . From then on, the browser's default download location becomes that folder. Every time I try to save a file, I end up in /run/user/1000/doc/xxx/. 

This is very annoying.

Linux/KDE Plasma: KDE Neon 20.04 and Fedora 35.
(available in About System)

[This is for Fedora 35]
KDE Plasma Version: 5.24.4
KDE Frameworks Version: 5.91.0
Qt Version: 5.15.2

Comment 1 Nate Graham 2022-04-25 16:53:30 UTC
The dialog itself has no memory; it's up to the browser itself to remember the last-visited location and open the dialog there.

However in this case the symptoms indicate that they are remembering it, but there's a bug on out side that causes the past to be changed from what you expect it to be. I believe this will be fixed with https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/merge_requests/84.
Comment 2 Harald Sitter 2022-04-25 20:55:44 UTC
Git commit 390731d731b610e23650c300ac07453ae33fb521 by Harald Sitter.
Committed on 25/04/2022 at 19:12.
Pushed by ngraham into branch 'master'.

reverse url fusing

this actually was defective even with local urls...
as we pass files through the portal the sandbox gets irrelevant portal
paths a la /run/foo/bar/yolo.txt when the sandbox then gives us that
path back, the directory isn't meant to be written to, much less shown
to the user to begin with.

to deal with this scenario we now do a reverse resolution dance on
savefile. notably we first ask the portal to translate the portal file
name in /run to the actual file name underneath it. we then run that
path through kio-fuse in case it was fuse mounted

this renders /run to /home/foo/yolo.txt or when it was fuse mounted for
example smb:///foo/yolo.txt

the effective end result is that when you open a file in okular from a
samba share and then save-as, the file save dialog will show the smb://
url not the fake /run url

A  +18   -0    data/org.freedesktop.portal.Documents.xml
M  +3    -0    src/CMakeLists.txt
M  +66   -3    src/filechooser.cpp