Opened 5 years ago
Last modified 3 years ago
#4567 assigned defect
Microsoft OneDrive changes Desktop location so ~/Desktop does not exist or is not writable
| Reported by: | Tristan Croll | Owned by: | Tom Goddard |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Input/Output | Version: | |
| Keywords: | Cc: | Eric Pettersen | |
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
The following bug report has been submitted:
Platform: Windows-10-10.0.19041
ChimeraX Version: 1.1 (2020-09-09 22:22:27 UTC)
Description
(More of an FYI/Windows annoyance than a ChimeraX bug per se): I just attached my machine to my University's OneDrive account, and it seems it quietly switched my desktop to C:\Users\tic20\OneDrive - University of Cambridge\Desktop (and similar for my Pictures directory). Now "save ~/Desktop/..." no longer works... is there some way to point directly to the designated Desktop folder without spelling it out explicitly?
OpenGL version: 3.3.0 NVIDIA 426.00
OpenGL renderer: GeForce GTX 1070/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: ASUSTeK COMPUTER INC.
Model: GL502VS
OS: Microsoft Windows 10 Home (Build 19041)
Memory: 34,292,408,320
MaxProcessMemory: 137,438,953,344
CPU: 8 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz"
PyQt version: 5.12.3
Compiled Qt version: 5.12.4
Runtime Qt version: 5.12.9
Installed Packages:
alabaster: 0.7.12
appdirs: 1.4.4
Babel: 2.8.0
backcall: 0.2.0
blockdiag: 2.0.1
certifi: 2020.6.20
chardet: 3.0.4
ChimeraX-AddH: 2.1.3
ChimeraX-AlignmentAlgorithms: 2.0
ChimeraX-AlignmentHdrs: 3.2
ChimeraX-AlignmentMatrices: 2.0
ChimeraX-Alignments: 2.1
ChimeraX-Arrays: 1.0
ChimeraX-Atomic: 1.6.1
ChimeraX-AtomSearch: 2.0
ChimeraX-AxesPlanes: 2.0
ChimeraX-BasicActions: 1.1
ChimeraX-BILD: 1.0
ChimeraX-BlastProtein: 1.0.1
ChimeraX-BondRot: 2.0
ChimeraX-BugReporter: 1.0
ChimeraX-BuildStructure: 2.0
ChimeraX-Bumps: 1.0
ChimeraX-BundleBuilder: 1.0
ChimeraX-ButtonPanel: 1.0
ChimeraX-CageBuilder: 1.0
ChimeraX-CellPack: 1.0
ChimeraX-Centroids: 1.1
ChimeraX-ChemGroup: 2.0
ChimeraX-Clashes: 2.0
ChimeraX-Clipper: 0.15.0
ChimeraX-ColorActions: 1.0
ChimeraX-ColorGlobe: 1.0
ChimeraX-CommandLine: 1.1.3
ChimeraX-ConnectStructure: 2.0
ChimeraX-Contacts: 1.0
ChimeraX-Core: 1.1
ChimeraX-CoreFormats: 1.0
ChimeraX-coulombic: 1.0.1
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 1.0
ChimeraX-DataFormats: 1.0
ChimeraX-Dicom: 1.0
ChimeraX-DistMonitor: 1.1
ChimeraX-DistUI: 1.0
ChimeraX-Dssp: 2.0
ChimeraX-EMDB-SFF: 1.0
ChimeraX-ExperimentalCommands: 1.0
ChimeraX-FileHistory: 1.0
ChimeraX-FunctionKey: 1.0
ChimeraX-Geometry: 1.1
ChimeraX-gltf: 1.0
ChimeraX-Graphics: 1.0
ChimeraX-Hbonds: 2.0
ChimeraX-Help: 1.0
ChimeraX-HKCage: 1.3
ChimeraX-IHM: 1.0
ChimeraX-ImageFormats: 1.0
ChimeraX-IMOD: 1.0
ChimeraX-IO: 1.0
ChimeraX-ISOLDE: 1.1.0
ChimeraX-Label: 1.0
ChimeraX-ListInfo: 1.0
ChimeraX-Log: 1.1.1
ChimeraX-LookingGlass: 1.1
ChimeraX-Map: 1.0.1
ChimeraX-MapData: 2.0
ChimeraX-MapEraser: 1.0
ChimeraX-MapFilter: 2.0
ChimeraX-MapFit: 2.0
ChimeraX-MapSeries: 2.0
ChimeraX-Markers: 1.0
ChimeraX-Mask: 1.0
ChimeraX-MatchMaker: 1.1
ChimeraX-MDcrds: 2.0
ChimeraX-MedicalToolbar: 1.0.1
ChimeraX-Meeting: 1.0
ChimeraX-MLP: 1.0
ChimeraX-mmCIF: 2.2
ChimeraX-MMTF: 2.0
ChimeraX-Modeller: 1.0
ChimeraX-ModelPanel: 1.0
ChimeraX-ModelSeries: 1.0
ChimeraX-Mol2: 2.0
ChimeraX-Morph: 1.0
ChimeraX-MouseModes: 1.0
ChimeraX-Movie: 1.0
ChimeraX-Neuron: 1.0
ChimeraX-Nucleotides: 2.0
ChimeraX-OpenCommand: 1.2.1
ChimeraX-PDB: 2.1
ChimeraX-PDBBio: 1.0
ChimeraX-PickBlobs: 1.0
ChimeraX-Positions: 1.0
ChimeraX-PresetMgr: 1.0
ChimeraX-PubChem: 2.0
ChimeraX-Read-Pbonds: 1.0
ChimeraX-Registration: 1.1
ChimeraX-RemoteControl: 1.0
ChimeraX-ResidueFit: 1.0
ChimeraX-RestServer: 1.0
ChimeraX-RNALayout: 1.0
ChimeraX-RotamerLibMgr: 2.0
ChimeraX-RotamerLibsDunbrack: 2.0
ChimeraX-RotamerLibsDynameomics: 2.0
ChimeraX-RotamerLibsRichardson: 2.0
ChimeraX-SaveCommand: 1.2
ChimeraX-SchemeMgr: 1.0
ChimeraX-SDF: 2.0
ChimeraX-Segger: 1.0
ChimeraX-Segment: 1.0
ChimeraX-SeqView: 2.2
ChimeraX-Shape: 1.0.1
ChimeraX-Shell: 1.0
ChimeraX-Shortcuts: 1.0
ChimeraX-ShowAttr: 1.0
ChimeraX-ShowSequences: 1.0
ChimeraX-SideView: 1.0
ChimeraX-Smiles: 2.0
ChimeraX-SmoothLines: 1.0
ChimeraX-SpaceNavigator: 1.0
ChimeraX-StdCommands: 1.0.4
ChimeraX-STL: 1.0
ChimeraX-Storm: 1.0
ChimeraX-Struts: 1.0
ChimeraX-Surface: 1.0
ChimeraX-SwapAA: 2.0
ChimeraX-SwapRes: 2.0
ChimeraX-TapeMeasure: 1.0
ChimeraX-Test: 1.0
ChimeraX-Toolbar: 1.0
ChimeraX-ToolshedUtils: 1.0
ChimeraX-Tug: 1.0
ChimeraX-UI: 1.2.3
ChimeraX-uniprot: 2.0
ChimeraX-ViewDockX: 1.0
ChimeraX-Vive: 1.1
ChimeraX-VolumeMenu: 1.0
ChimeraX-VTK: 1.0
ChimeraX-WavefrontOBJ: 1.0
ChimeraX-WebCam: 1.0
ChimeraX-WebServices: 1.0
ChimeraX-Zone: 1.0
colorama: 0.4.3
comtypes: 1.1.7
cxservices: 1.0
cycler: 0.10.0
Cython: 0.29.20
decorator: 4.4.2
distlib: 0.3.1
docutils: 0.16
filelock: 3.0.12
funcparserlib: 0.3.6
gdcm: 2.8.8
grako: 3.16.5
h5py: 2.10.0
html2text: 2020.1.16
idna: 2.10
ihm: 0.16
imagecodecs: 2020.5.30
imagecodecs-lite: 2020.1.31
imagesize: 1.2.0
ipykernel: 5.3.0
ipython: 7.15.0
ipython-genutils: 0.2.0
jedi: 0.17.2
Jinja2: 2.11.2
jupyter-client: 6.1.3
jupyter-core: 4.6.3
kiwisolver: 1.2.0
line-profiler: 2.1.2
lxml: 4.5.1
MarkupSafe: 1.1.1
matplotlib: 3.2.1
msgpack: 1.0.0
netifaces: 0.10.9
networkx: 2.4
numexpr: 2.7.1
numpy: 1.18.5+mkl
numpydoc: 1.0.0
openvr: 1.12.501
packaging: 20.4
parso: 0.7.1
pickleshare: 0.7.5
Pillow: 7.1.2
pip: 20.2.2
pkginfo: 1.5.0.1
prompt-toolkit: 3.0.7
psutil: 5.7.0
pycollada: 0.7.1
pydicom: 2.0.0
Pygments: 2.6.1
PyOpenGL: 3.1.5
PyOpenGL-accelerate: 3.1.5
pyparsing: 2.4.7
PyQt5-commercial: 5.12.3
PyQt5-sip: 4.19.19
PyQtWebEngine-commercial: 5.12.1
python-dateutil: 2.8.1
pytz: 2020.1
pywin32: 228
pyzmq: 19.0.2
qtconsole: 4.7.4
QtPy: 1.9.0
RandomWords: 0.3.0
requests: 2.24.0
scipy: 1.4.1
setuptools: 49.4.0
sfftk-rw: 0.6.6.dev0
six: 1.15.0
snowballstemmer: 2.0.0
sortedcontainers: 2.2.2
Sphinx: 3.1.1
sphinxcontrib-applehelp: 1.0.2
sphinxcontrib-blockdiag: 2.0.0
sphinxcontrib-devhelp: 1.0.2
sphinxcontrib-htmlhelp: 1.0.3
sphinxcontrib-jsmath: 1.0.1
sphinxcontrib-qthelp: 1.0.3
sphinxcontrib-serializinghtml: 1.1.4
suds-jurko: 0.6
tables: 3.6.1
tifffile: 2020.6.3
tinyarray: 1.2.2
tornado: 6.0.4
traitlets: 5.0.4
urllib3: 1.25.10
wcwidth: 0.2.5
webcolors: 1.11.1
wheel: 0.34.2
WMI: 1.5.1
Change History (16)
comment:1 by , 5 years ago
| Cc: | added |
|---|---|
| Component: | Unassigned → Input/Output |
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → Unwanted Desktop |
comment:2 by , 5 years ago
follow-up: 3 comment:3 by , 5 years ago
From a little bit of reading, apparently things can get a bit funky with respect to the "magic" that OneDrive does behind the scenes. Came across this little snippet at https://stackoverflow.com/questions/53491811/how-to-find-path-to-desktop-in-python, which successfully finds the correct path:
from win32com.shell import shell, shellcon
desktop = shell.SHGetFolderPath (0, shellcon.CSIDL_DESKTOP, 0, 0)
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 26 April 2021 19:24
Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #4567: Unwanted Desktop
#4567: Unwanted Desktop
------------------------------------+-------------------------
Reporter: Tristan Croll | Owner: Tom Goddard
Type: defect | Status: assigned
Priority: normal | Milestone:
Component: Input/Output | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
Notify when closed: | Platform: all
Project: ChimeraX |
------------------------------------+-------------------------
Comment (by Eric Pettersen):
Hi Tristan,
In most cases ChimeraX is using os.path.expanduser("~/Desktop") to
find the Desktop. You may be able to affect this with environment
variables (by setting os.environ) as per the expanduser documentation for
Windows:
On Windows, USERPROFILE will be used if set, otherwise a combination of
HOMEPATH and HOMEDRIVE will be used. An initial ~user is handled by
stripping the last directory component from the created user path derived
above.
Changed in version 3.8: No longer uses HOME on Windows.
--Eric
--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4567#comment:2>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker
comment:4 by , 5 years ago
| Summary: | Unwanted Desktop → OneDrive changes Windows ~/Desktop expansion |
|---|
This seems like either a OneDrive or a Python bug, or maybe no bug at all and is the expected behavior. Before hacking ChimeraX to use something other than os.path.expanduser("~/Desktop") I'd like to know who's bug this is. It is unlikely I will find time to research this.
Also what does "save ~/Desktop/... no longer works" mean? Doesn't it save to OneDrive/Desktop? Or does it give some error because OneDrive/Desktop is not writable?
comment:5 by , 5 years ago
God forbid I'm not suggesting we use something other than expanduser(). I was just suggesting some possible personal workarounds.
However, if saving to ~/Desktop actually fails, maybe we want to do something error-handling-wise, if we don't already.
follow-up: 6 comment:6 by , 5 years ago
It fails because "~/Desktop" still tries to expand to C:\Users\tic20\Desktop, which no longer exists.
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 26 April 2021 22:24
Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #4567: OneDrive changes Windows ~/Desktop expansion (was: Unwanted Desktop)
#4567: OneDrive changes Windows ~/Desktop expansion
------------------------------------+-------------------------
Reporter: Tristan Croll | Owner: Tom Goddard
Type: defect | Status: assigned
Priority: normal | Milestone:
Component: Input/Output | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
Notify when closed: | Platform: all
Project: ChimeraX |
------------------------------------+-------------------------
Comment (by Tom Goddard):
This seems like either a OneDrive or a Python bug, or maybe no bug at all
and is the expected behavior. Before hacking ChimeraX to use something
other than os.path.expanduser("~/Desktop") I'd like to know who's bug this
is. It is unlikely I will find time to research this.
Also what does "save ~/Desktop/... no longer works" mean? Doesn't it save
to OneDrive/Desktop? Or does it give some error because OneDrive/Desktop
is not writable?
--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4567#comment:4>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker
follow-up: 7 comment:7 by , 5 years ago
That is horrifying, Microsoft OneDrive makes your Desktop folder at the standard location no longer exists. Almost hard to believe. Isn't the Desktop directory a normal directory on your disk -- how is it made to disappear? It sounds like Python doesn't handle the insanity of Microsoft nicely.
follow-up: 8 comment:8 by , 5 years ago
Agreed - there was clearly some quite "interesting" decision-making that went into this. If I check the properties of my Desktop folder, its location is now: "C:\Users\tic20\OneDrive - University of Cambridge\Desktop".
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 26 April 2021 23:31
To: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Cc: pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>
Subject: Re: [ChimeraX] #4567: OneDrive changes Windows ~/Desktop expansion
#4567: OneDrive changes Windows ~/Desktop expansion
------------------------------------+-------------------------
Reporter: Tristan Croll | Owner: Tom Goddard
Type: defect | Status: assigned
Priority: normal | Milestone:
Component: Input/Output | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
Notify when closed: | Platform: all
Project: ChimeraX |
------------------------------------+-------------------------
Comment (by goddard@…):
{{{
That is horrifying, Microsoft OneDrive makes your Desktop folder at the
standard location no longer exists. Almost hard to believe. Isn't the
Desktop directory a normal directory on your disk -- how is it made to
disappear? It sounds like Python doesn't handle the insanity of Microsoft
nicely.
}}}
--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4567#comment:7>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker
comment:9 by , 4 years ago
This post discusses the same issue with no proposed solution
https://stackoverflow.com/questions/60742419/python-os-cannot-get-path-to-desktop-on-one-drive
comment:10 by , 4 years ago
There is a One Drive Python SDK that seems totally unsuitable for our use due to authentication issues: https://github.com/OneDrive/onedrive-sdk-python
follow-up: 11 comment:11 by , 4 years ago
With a little updating to Python 3, the solution at https://stackoverflow.com/questions/626796/how-do-i-find-the-windows-common-application-data-folder-using-python/626927#626927 works:
import ctypes
from ctypes import wintypes, windll
CSIDL_DESKTOPDIRECTORY=0x10
_SHGetFolderPath = windll.shell32.SHGetFolderPathW
_SHGetFolderPath.argtypes = [wintypes.HWND,
ctypes.c_int,
wintypes.HANDLE,
wintypes.DWORD, wintypes.LPCWSTR]
path_buf=wintypes.ctypes.create_unicode_buffer(wintypes.MAX_PATH)
result = _SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, 0, 0, path_buf)
print(path_buf.value)
C:\Users\tristan\OneDrive - University of Cambridge\Desktop
Full list of available queries is at https://www.nirsoft.net/articles/find_special_folder_location.html.
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 04 February 2022 19:53
Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #4567: OneDrive changes Windows ~/Desktop expansion
#4567: OneDrive changes Windows ~/Desktop expansion
------------------------------------+-------------------------
Reporter: Tristan Croll | Owner: Tom Goddard
Type: defect | Status: assigned
Priority: normal | Milestone:
Component: Input/Output | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
Notify when closed: | Platform: all
Project: ChimeraX |
------------------------------------+-------------------------
Comment (by pett):
There is a One Drive Python SDK that seems totally unsuitable for our use
due to authentication issues: https://github.com/OneDrive/onedrive-sdk-
python
--
Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/4567#comment:10>
ChimeraX <https://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker
follow-up: 12 comment:12 by , 4 years ago
... although looks like that's using an older, deprecated Windows API. The new approach is documented at https://docs.microsoft.com/en-us/windows/win32/shell/knownfolderid, and there's a Python wrapper at https://gist.github.com/mkropat/7550097.
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 04 February 2022 20:17
To: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Cc: pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>
Subject: Re: [ChimeraX] #4567: OneDrive changes Windows ~/Desktop expansion
#4567: OneDrive changes Windows ~/Desktop expansion
------------------------------------+-------------------------
Reporter: Tristan Croll | Owner: Tom Goddard
Type: defect | Status: assigned
Priority: normal | Milestone:
Component: Input/Output | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
Notify when closed: | Platform: all
Project: ChimeraX |
------------------------------------+-------------------------
Comment (by Tristan Croll):
{{{
With a little updating to Python 3, the solution at
https://stackoverflow.com/questions/626796/how-do-i-find-the-windows-
common-application-data-folder-using-python/626927#626927 works:
import ctypes
from ctypes import wintypes, windll
CSIDL_DESKTOPDIRECTORY=0x10
_SHGetFolderPath = windll.shell32.SHGetFolderPathW
_SHGetFolderPath.argtypes = [wintypes.HWND,
ctypes.c_int,
wintypes.HANDLE,
wintypes.DWORD, wintypes.LPCWSTR]
path_buf=wintypes.ctypes.create_unicode_buffer(wintypes.MAX_PATH)
result = _SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, 0, 0, path_buf)
print(path_buf.value)
C:\Users\tristan\OneDrive - University of Cambridge\Desktop
Full list of available queries is at
https://www.nirsoft.net/articles/find_special_folder_location.html.
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 04 February 2022 19:53
Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; pett@cgl.ucsf.edu
<pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #4567: OneDrive changes Windows ~/Desktop
expansion
#4567: OneDrive changes Windows ~/Desktop expansion
------------------------------------+-------------------------
Reporter: Tristan Croll | Owner: Tom Goddard
Type: defect | Status: assigned
Priority: normal | Milestone:
Component: Input/Output | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
Notify when closed: | Platform: all
Project: ChimeraX |
------------------------------------+-------------------------
Comment (by pett):
There is a One Drive Python SDK that seems totally unsuitable for our use
due to authentication issues: https://github.com/OneDrive/onedrive-sdk-
python
--
Ticket URL:
<https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/4567#comment:10>
ChimeraX <https://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker
}}}
--
Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/4567#comment:11>
ChimeraX <https://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker
comment:13 by , 4 years ago
Another idea is there is supposed to be a OneDrive environment variable that gives the OneDrive folder.
https://stackoverflow.com/questions/26771265/get-onedrive-path-in-windows
That may not account for whether OneDrive is enabled.
Although this ticket is assigned to me I don't plan to work on it since the solutions look so fragile and I don't use OneDrive or Windows. It will take a lot of bug reports before I could justify working on this time sink, and likely future maintenance burden.
comment:14 by , 3 years ago
| Summary: | OneDrive changes Windows ~/Desktop expansion → Microsoft OneDrive changes Desktop location so ~/Desktop does not exist or is not writable |
|---|
Another case of this problem #8020.
ChimeraX also tries to change the current directory to ~/Desktop at startup and if that directory does not exist then the current directory is going to be some system location that is not writable. If we ever found a way to reliably detect OneDrive and know which desktop directory to use than the startup code should also chdir to that directory.
follow-up: 15 comment:15 by , 3 years ago
One simple workaround would be to catch when the standard Desktop directory isn't found, and bring up a file browser asking the user to point to it? On Mon, Nov 14, 2022 at 7:35 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:
follow-up: 16 comment:16 by , 3 years ago
That is possible, could ask, and then save the answer as a preference so it doesn't ask every time you start ChimeraX. But some heuristic code could simply search and find the OneDrive desktop folder (it often has an account name in the folder name). I think it is simpler to find the desktop, but haven't done it because only a few people have reported it and I am hoping that Microsoft makes it a bit easier to find if I give them time.
Hi Tristan,
On Windows, USERPROFILE will be used if set, otherwise a combination of HOMEPATH and HOMEDRIVE will be used. An initial ~user is handled by stripping the last directory component from the created user path derived above.
Changed in version 3.8: No longer uses HOME on Windows.
--Eric