maestral
maestral copied to clipboard
Windows version?
Is it possible to run this on windows or do you plan on adding a windows version?
Unfortunately, this is not possible at the moment. While the core sync-engine is platform independent, parts of Maestral rely on Unix-specific features. For instance, the sync daemon process communicates over a Unix domain socket with the GUI or CLI. In addition, platform dependent directories are used to store settings, sync states, logs, etc., and I have not included any default directories for Windows.
I don't have enough experience with Windows to make the necessary changes. However, if you or anyone else is interested in making the code Windows compatible, I welcome pull requests and I'm happy to help where I can.
I want to look into it when I find time. Currently I am preoccupied with my studies.
AF_UNIX socket support was added to Windows 10 in the April 2018 Update. It's limited, but it seems like it might be enough for Maestral.
But it's not currently exposed by Python on Windows because of the limitations: https://bugs.python.org/issue33408
Another option might be to bring back localhost TCP/IP support when running on Windows, but maintaining both implementations would be a pain. Ref: https://github.com/SamSchott/maestral-dropbox/commit/ea7894788001030b8cde56d2da50731107d1a42a
Yes, I expect that TCP/IP support would be necessary to support Windows for the foreseeable future.
Just to a give a summary of what would be required for Windows support (for me or someone else to come back to):
- Bring back daemon communication via TCP/IP.
- Confirm that path handling is valid for Windows. This should already be the case in most places.
- Investigate how file system events are reported on Windows and look into possible issues (out-of-order events, missing events, different event types, max number of watchable files, etc).
- Maestral relies on a file's
ctime
to check for moved or modified files while it hasn't been running. On Windows,ctime
does not report the time of last metadata change (e.g., renaming) but the file creation time. AFAIK there is no way to get the actual ctime but using the mtime instead might work if it is not user-modifiable. - Add the appropriate app directories for Windows to
maestral.utils.appdirs
(settings, runtime, startup, etc). - Support start-on-login (GUI) in Windows.
- Desktop notification support for Windows. Desktop notifications are sent by the daemon and therefore do not use Qt.
- Check GUI support for windows: while Qt is cross platform, there may still be multiple appearance issues to work around.
As a workaround, it might be possible to use this with WSL? Worth a try
I was wondering why people would prefer to use this on Windows instead of using the official Dropbox client. But then I realized Windows on ARM is now a thing, and Dropbox doesn't seem to want to support that platform.
As a workaround, it might be possible to use this with WSL?
This should be possible but people have seeing varying degrees of success (see #132).
Windows on ARM is now a thing, and Dropbox doesn't seem to want to support that platform
I don't think Maestral will be an easy solution to that, at least in the mid term. There are no official Python builds for ARM Windows and some dependencies might pull in wheels that are not built for ARM Windows either (possibly keyring). With some dedication, it might be possible to get at least the daemon running, but it could be a considerable amount of work.
I was able to install maestral
on Windows11 WSL2 (Ubuntu, wslg) and even configure with qt GUI. And the sync daemon runs so appears to not exhibit https://github.com/samschott/maestral/issues/132
However I cannot subsequently launch the GUI it seems-- at first glance it looks like systray related. I do not see any GUI visible now when trying to launch it. It's not a big issue for me as the CLI suits my purposes but would be interesting to see if somehow could have systray integrate with Windows?!
# WSL prompt in Windows Terminal
$ maestral gui
^C
Traceback (most recent call last):
File "/home/dpc/.local/lib/python3.8/site-packages/maestral_qt/main.py", line 164, in show_when_systray_available
def show_when_systray_available(self):
KeyboardInterrupt
Here are the steps I used to install (and then launch GUI and configure token and storage directory):
pip3 install --user --upgrade maestral[gui]
# ERROR: launchpadlib 1.10.13 requires testresources, which is not installed.
maestral_qt # ... missing lib dependencies
# qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
export QT_DEBUG_PLUGINS=1
# "Cannot load library /.../.local/lib/python3.8/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so: (libxcb-xkb.so.1: cannot open shared object file: No such file or directory)"
sudo apt-get install --reinstall libxcb-xinerama0
# "Cannot load library /.../.local/lib/python3.8/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory)"
sudo apt install libxkbcommon-x11-0
maestral_qt # ... link to dropbox via token obtained in browser login
I was wondering why people would prefer to use this on Windows instead of using the official Dropbox client. But then I realized Windows on ARM is now a thing, and Dropbox doesn't seem to want to support that platform.
Another factor, @9a3eedi, is that on some low-end systems, the 200MB or more of RAM used by the official Dropbox client (even when the settings are changed to prefer using Windows Explorer to browse rather than the new client view) since 2019 can be too great; I have resorted to force-quitting the Dropbox process during the ordinary workday and re-starting it at night, on some systems that I manage.
As a workaround, it might be possible to use this with WSL? Worth a try
I was wondering why people would prefer to use this on Windows instead of using the official Dropbox client. But then I realized Windows on ARM is now a thing, and Dropbox doesn't seem to want to support that platform.
Another factor: in our Lord's year 2022, Dropbox still doesn't provide support for a .ignore
file. And it's a slight pain to have Maestral with .mignore
on one side, which deletes folders such as .mypy-cache
because they're in the .mignore
file, while on the other side the Dropbox client keeps uploading them back :')
Has any further work been done on this? I would love to use this app on Windows. I'm blind, so wouldn't need a GUI, simple command line invocation sounds like a dream come true to me! My use case is that the Dropbox app seems to have gotten more and more bloated over the years. No, I don't want a backup solution, I have Backblaze for that. No, I don't want a password manager, I have BitWarden for that. No, when I plug an external hard drive in, I don't want you to start backing it up, even though I've told you seventeen times already that I do not want you backing up external drives. I just want to sync my Dropbox folder, pause/resume syncing when I want to, and that's it.