vinszent / gnome-twitch

Enjoy Twitch on your GNU/Linux desktop
http://gnome-twitch.vinszent.com
Other
440 stars 41 forks source link

Add Windows build #131

Open ZachBacon opened 8 years ago

ZachBacon commented 8 years ago

Since I'm unaware of a public forum etc I just wanted to share that with some minor adjustments (mind you this is for the older 0.1.0 release) gnome-twitch compiles on windows pretty easily. I've tried the 0.2 release however due to reliance for webkit2gtk (atm most patches for webkitgtk has been mainly for webkit1 version for gtk) compiling is a no go. But I felt like sharing that it's a good code base. gnome-twitch

ZachBacon commented 8 years ago

I also think if the mpv interface is done, technically it would work better than the gst, seems despite having the gstreamer plugins installed local copy of gstreamer isn't loading them correctly.

vinszent commented 8 years ago

Thanks for the info! @riflex is also working on building GT on Windows and I think he even got 0.2.0 working to some extent. I guess I can try to add support for the old GtkWebkit1 API. Also I am working on the MPV backend at this very moment, so should be ready soon.

Also if you are able to get a complete build working at some point, I'd be really happy if you could post the steps you took so I can post Windows builds here for everyone.

ghost commented 8 years ago

Win 10 GT 2.0 I had to put working on it on hold, having my exams pretty soon, but as @DoctorWho11 noticed, gtkwebkit and gst is mainly the source of the compilation problems.

I also ported from meson to cmake, as i'm more comfy with it, but it's still pretty hackish.

ZachBacon commented 8 years ago

the mpv backend would work as long as proper gdk backends were used, also webkit1 api would be nice, I may investigate on patching webkitgtk for webkit2 support, iirc there was a lot of issues to explore and with just one person looking at it... well not exactly fun work.

vinszent commented 7 years ago

I currently have a working Windows build using the GStreamer-Cairo player backend. You can check out the build files here and I will hopefully be able to include a Windows installer for the 0.4.0 release if all goes smoothly.

EDIT: It also uses the deprecated WebKit api using the -Duse-deprecated-webkit flag. Just note that this is buggy and causes the application to appear frozen and Windows pops up the "This application has stopped working" window, but it is actually still running and after a few seconds will come back.

TingPing commented 7 years ago

At a glance only the login dialog uses webkit? Would it be possible to move that out of process, that is a very large dependency for such a small feature.

vinszent commented 7 years ago

It would be possible, by opening the login page in an existing browser and getting the user to manually copy their OAuth token from the url. Also it doesn't always freeze, I've just noticed that it can happen on occassions.

ZachBacon commented 7 years ago

I could potentially wip up a quick nsis based installer which would be effective on any platform nsis is compiled on. So if gnome-twitch is cross compiled for windows on linux it would be simple enough to run makensis to compile the nsis script into a windows installer.

vinszent commented 7 years ago

I already have a Inno setup script in the build directory which creates a Windows installer. I haven't actually tried cross-compiling, I just compile in a Windows VM. Thanks for the offer though!

ZachBacon commented 7 years ago

No problems.

TingPing commented 7 years ago

Should be trivial to cross compile, here is an example cross-file for fedora:

; dnf install mingw64-webkitgtk3

[binaries]
c = '/usr/bin/x86_64-w64-mingw32-gcc'
cpp = '/usr/bin/x86_64-w64-mingw32-g++'
ar = '/usr/bin/x86_64-w64-mingw32-gcc-ar'
strip = '/usr/bin/x86_64-w64-mingw32-strip'
pkgconfig = '/usr/bin/x86_64-w64-mingw32-pkg-config'

[host_machine]
system = 'windows'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'
alfureu commented 7 years ago

Any news on this?

vinszent commented 7 years ago

I created Windows build scripts here, but too be honest it's too much effort for me to maintain. Anybody that wants to take this on is welcome, the current build setup should make it straight forward enough to compile as long as you can get the dependencies.

ZachBacon commented 7 years ago

I could probably maintain unofficial builds. At the moment I'm tracking a webkit gtk issue in getting the newer version to compile for use on the windows platform so that we don't need to rely on shitty old webkit versions

TingPing commented 7 years ago

There are supposedly patches adding win32 waiting to be merged in upstream Webkit.

ZachBacon commented 7 years ago

@TingPing that's what I was talking about. Been tracking that as much as possible. Waiting for a merge to happen.

vinszent commented 7 years ago

I have a whole lot of stuff I need to push to GH, but in my local tree I have implemented a way to login without using the built in browser. It opens an already installed browser and starts a light web server using libsoup. Should simplify a lot of things seeing as WebKit seems to be causing problems in other areas as well (Flatpak, etc).

It will probably be available as a compile time flag to enable logging in with the built in browser.

ZachBacon commented 7 years ago

That's great, libsoup etc are already buildable on windows.

TingPing commented 7 years ago

WebKit seems to be causing problems in other areas as well (Flatpak, etc).

I wasn't aware of any issues with Flatpak?

vinszent commented 7 years ago

Ones like this: https://github.com/vinszent/gnome-twitch/issues/291

imzesok commented 6 years ago

tried to run the windows script as it is, and it didn't compile. here's the log: build-log.txt