Opened 4 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: pett
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 pett, 4 years ago

Cc: pett added
Component: UnassignedInput/Output
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionUnwanted Desktop

comment:2 by pett, 4 years ago

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

in reply to:  3 ; comment:3 by Tristan Croll, 4 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 Tom Goddard, 4 years ago

Summary: Unwanted DesktopOneDrive 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 pett, 4 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.

in reply to:  6 ; comment:6 by Tristan Croll, 4 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

in reply to:  7 ; comment:7 by goddard@…, 4 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.


in reply to:  8 ; comment:8 by Tristan Croll, 4 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 Tom Goddard, 4 years ago

comment:10 by pett, 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

in reply to:  11 ; comment:11 by Tristan Croll, 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

in reply to:  12 ; comment:12 by Tristan Croll, 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 Tom Goddard, 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 Tom Goddard, 3 years ago

Summary: OneDrive changes Windows ~/Desktop expansionMicrosoft 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.

in reply to:  15 ; comment:15 by Tristan Croll, 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:

in reply to:  16 ; comment:16 by Tom Goddard, 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.

Note: See TracTickets for help on using tickets.