celeste icon indicating copy to clipboard operation
celeste copied to clipboard

Add Windows/macOS support

Open hwittenborn opened this issue 2 years ago • 11 comments

I have a vision for this to be able to be used on any type of system, with it being the de-facto way to connect to any cloud provider.

This is more of a long-term goal, but it's something I'd really like done still. GTK apps can be themed relatively well on Windows/macOS:

  • Windows: We can use a custom GTK theme, and just make the app use native window decorations. It would give a vibe similar to electron apps, but I think this is suitable considering the available options.
  • macOS: There are some GTK macOS themes out there that could probably work, such as the WhiteSur GTK theme.

Testing these for UI usability (and overall just looking good) will be easier on Windows for me, as I can emulate that inside of a VM. macOS will probably be a bit of a bigger issue as I can't emulate that (I think there's methods to generate macOS ISOs), but if I can find a community member who'd be willing to test those builds that'd work fine as well.

Just throwing this out there in case anyone else ends up wondering about it. Again it's definitely long-term, but I'm definitely interested in it.

hwittenborn avatar Aug 30 '23 03:08 hwittenborn

I might be interested in creating the macOS app. You mention Go in BUILDING.md - is this program really a combination of Rust and Go?

dehesselle avatar Oct 25 '23 11:10 dehesselle

That'd be great @dehesselle!

You mention Go in BUILDING.md - is this program really a combination of Rust and Go?

Celeste itself doesn't use Go, but one if it's dependencies (librclone) uses Go.

hwittenborn avatar Oct 25 '23 16:10 hwittenborn

I took a first stab at this today and discovered there is a dependency on dbus. That's unfortunate because it's an unresolved item on my "todo list of things I haven't figured out yet", and currently I have no plans to work on that. So I'm sorry, but that's it for me for now.

dehesselle avatar Oct 28 '23 12:10 dehesselle

I'm pretty sure macOS doesn't support DBus @dehesselle (and Windows afaik). If I were to get that part fixed would you be open to looking into this still. No pressure if you don't want to, but the DBus still is probably something I should fix on my end.

hwittenborn avatar Oct 30 '23 16:10 hwittenborn

I can compile DBus and it's actually present in package managers like Homebrew, but running/packaging has been troublesome for me. If you create a branch here where you disable usage of DBus and remove it from the dependencies, I'll try again. As a first step it wouldn't even be necessary for Celeste to function correctly (it would be nice if doesn't crash on start), if that makes it easier for you to hack DBus away.

FYI I cannot help with the actual coding, I don't speak Rust.

dehesselle avatar Oct 30 '23 17:10 dehesselle

The macos-no-dbus branch should have the DBus code disabled @dehesselle. There won't be any tray icon, but there's some cross-platform tray icon libraries that I'm looking into that should fix that.

hwittenborn avatar Oct 30 '23 17:10 hwittenborn

I'm getting a failure building the main binary.

error: could not compile `celeste` (bin "celeste") due to previous error; 4 warnings emitted

It's missing some linker flags, this is likely missing -framework CoreIO, but I don't know how the Rust build system works. Is that something easy enough for you to tell me how/where linker flags can be added to play around with this?

= note: Undefined symbols for architecture arm64:
            "_IOIteratorNext", referenced from:
                _initialize in liblibrclone_sys-230b9c177444767d.rlib(000026.o)
            "_IOObjectGetClass", referenced from:
                _initialize in liblibrclone_sys-230b9c177444767d.rlib(000026.o)
            "_IORegistryEntryCreateCFProperty", referenced from:
                _initialize in liblibrclone_sys-230b9c177444767d.rlib(000026.o)
            "_IORegistryEntryGetName", referenced from:
                _initialize in liblibrclone_sys-230b9c177444767d.rlib(000026.o)
            "_IOServiceGetMatchingServices", referenced from:
                _initialize in liblibrclone_sys-230b9c177444767d.rlib(000026.o)
            "_IOServiceMatching", referenced from:
                _initialize in liblibrclone_sys-230b9c177444767d.rlib(000026.o)
            "_kIOMasterPortDefault", referenced from:
                _initialize in liblibrclone_sys-230b9c177444767d.rlib(000026.o)
          ld: symbol(s) not found for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

dehesselle avatar Oct 31 '23 18:10 dehesselle

I think if you put a note on the Rclone forum about this project you'd get lots of Win/Mac users interested.

boboz avatar Jan 11 '24 11:01 boboz

I've found out about the project from a linux magazine, and came here looking/hoping that there's a macOS version - hope you end up adding it to brew :)

Aur0nd avatar Jan 17 '24 16:01 Aur0nd

Getting it into Homebrew is not in scope for me. Would you be interested to work on that?

dehesselle avatar Jan 17 '24 17:01 dehesselle

@dehesselle well you first need to make it work on macos

Aur0nd avatar Jan 24 '24 12:01 Aur0nd