This issue is to make our Windows builds (nightly, CI and release builds) easier and better. And also to satisfy @elextr 's long-time wish to have GTK3 Windows builds :).
My goal is to create Windows builds: - with GTK3 only - for x86_64 (aka amd64 aka 64bit) only - fully automated on a Linux box
I've written a Dockerfile which sets up a cross-compilation environment with mingw64-gcc, wine and a couple other necessary tools. It also bootstraps a minimal MSYS2 environment so packages can be installed with `pacman`. In the resulting build environment we start a script which does: - clone Geany repository if necessary (i.e. if it is not bind-mounted into the container) - cross-compile Geany for Windows 64bit and GTK3 - sign all binaries and installer (if /certificates exist and contains cert.pem and key.pem) - download Geany-Themes for bundling - create GTK3 bundle with all dependencies (including grep and sort) - create the NSIS installer in ${OUTPUT_DIRECTORY} - test the created NSIS installer and compiled Geany - test uninstaller and check there is nothing left after uninstalling
This is already working pretty nicely (even digitally signing the binaries!!). I guess I'll put the Dockerfile and the build script into a new repository.
However there are some tasks left for discussion and to do:
- do you think it is safe to switch to x86_64 builds only? I guess since Windows 7 almost everybody should have a x86_64 installation by default it she didn't anything against it on purpose. But I'm not sure enough and I didn't find proper resources on the net.
- there is a bug on Windows with GTK3 causing the message window to constantly loose some height between starts of Geany (#2591)
- we need to decide which GTK3 theme we use by default: - the default theme (I think it's Adwaita) looks a bit alien on Windows, see screenshots below - there is a "win32" theme natively in GTK3 which can be enabled in GTK3's `settings.ini`, it doesn't look quite right either :(.
I would say let's try with the default theme even GUI elements feel a bit huge. Or we find another good looking theme or someone hacks something. I definitely won't work on this.
Dependant issues and PRs: - [ ] #2591 - [ ] #2590 - [ ] #2572
Geany GTK3 Default Theme: ![Screenshot of Geany GTK3 Default Theme](https://user-images.githubusercontent.com/617017/93713709-2630b000-fb4d-11ea...) Geany GTK3 Win32 Theme: ![Screenshot of Geany GTK3 Win32 Theme](https://user-images.githubusercontent.com/617017/93713710-28930a00-fb4d-11ea...)
One more note about the motivation and further use: with the automated Docker-based build nearly everyone with a Linux system can create Windows release builds (not just me :D) and we don't need a native Windows any more.
We could also use the setup for CI builds and so get ready to use installers for each PR for easy and early feedback from users.
And once working, we'll repeat all this for Geany-Plugins :).
do you think it is safe to switch to x86_64 builds only?
It might be different in different countries, but anecdotally, the large company I work for that issues cheap desktop/laptops to employees and replaces them very slowly has had x86_64 for the last two generations.
IMO, it's your call as the person willing to work on it. Anyone stuck on 32-bit can either use an older version of Geany or contribute the changes to make it build for 32-bit as well.
there is a "win32" theme natively in GTK3 which can be enabled
I noticed in your screenshot you're using the Windows 98-style classic theme on Win7 (or some server version). I wonder if it looks any better when using the native Win8/Win10 theme?
do you think it is safe to switch to x86_64 builds only?
It might be different in different countries, but anecdotally, the large company I work for that issues cheap desktop/laptops to employees and replaces them very slowly has had x86_64 for the last two generations.
IMO, it's your call as the person willing to work on it. Anyone stuck on 32-bit can either use an older version of Geany or contribute the changes to make it build for 32-bit as well.
That sounds reasonable. This is also why I want to distribute only x86_64 + GTK3 and not any possible variation of it as it would make maintenance just harder.
there is a "win32" theme natively in GTK3 which can be enabled
I noticed in your screenshot you're using the Windows 98-style classic theme on Win7 (or some server version). I wonder if it looks any better when using the native Win8/Win10 theme?
Maybe. I can't even switch the theme to any of the more modern ones probably because I deinstalled or disabled some component which is needed for this. I tend to prefer old fashioned Windows look and feel as I'm used too ages ago :). So, yes, you are right: both themes might look way better on a modern Windows theme (which probably most people are using).
Neat, but, if anyone can build it, can they run it to see if it works?
Basically, I agree with what @codebrainz said above.
With Geany-plugins, I wonder it it would be better to just include it in the one install, I would expect (but have no evidence) that most people will install them if they realise they exist.
Neat, but, if anyone can build it, can they run it to see if it works?
As long as you don't expect a GUI :). Seriously, my build script executes the generated installer via Wine, installs Geany, then execute `wine geany --version` to check it is properly installed and can be executed and then uninstall Geany again and check there is nothing left. This is at least some rudimentary testing to get sure all necessary DLLs are included. I didn't try but it should be possible to fully run Geany via Wine.
With Geany-plugins, I wonder it it would be better to just include it in the one install, I would expect (but have no evidence) that most people will install them if they realise they exist.
Tempting idea. It certainly would be a benefit for users.
On the contrary the installer size would be even bigger (not sure how much this is an issue nowadays). But it would increase the burden to make releases of Geany and Geany-Plugins independently of each other. Also it would make the build script and NSIS installer quite big and complex. So, I would keep Geany and G-P builds separated.
But it would increase the burden to make releases of Geany and Geany-Plugins independently of each other. Also it would make the build script and NSIS installer quite big and complex. So, I would keep Geany and G-P builds separated.
I don't think plugins should be together, but it should be easy to install from the main app, like in VSCode.
It should list the plugins available to download.
Geany does not talk to the interwebs, but a plugin could ..... oh wait :)
Seriously, as Geany is mostly distributed by others there is no way to know where to look for such downloads.
@eht16 just being devils advocate, not necessarily pushing for it as I am not a Windows user, but:
On the contrary the installer size would be even bigger (not sure how much this is an issue nowadays).
Geany Windows download == 16Mbytes, Plugins Windows download == 36Mbytes, total 52Mb compared to say Vscode Windows download 62Mbytes, Eclipse hundreds of Mbytes, etc etc as you say I doubt its an issue :)
But it would increase the burden to make releases of Geany and Geany-Plugins independently of each other.
When did that last happen? And only then when the obligatory windows last minute changes stuffed something up :)
Also it would make the build script and NSIS installer quite big and complex.
I can't comment on this, so ok, if its more than just catenating the scripts then thats a problem.
So, I would keep Geany and G-P builds separated.
Ok, so we come back to discoverability, maybe the plugins should be immediately after the Windows download on https://www.geany.org/download/releases/
@eht16 just being devils advocate, not necessarily pushing for it as I am not a Windows user, but:
On the contrary the installer size would be even bigger (not sure how much this is an issue nowadays).
Geany Windows download == 16Mbytes, Plugins Windows download == 36Mbytes, total 52Mb compared to say Vscode Windows download 62Mbytes, Eclipse hundreds of Mbytes, etc etc as you say I doubt its an issue :)
The mentioned sizes for Geany and G-P are valid only for GTK2 builds, with GTK3 at least Geany already is about 30MBytes (because GTK3 needs more dependencies and the Adwaita theme which is huge), plugins might stay at that level. Still, it's probably not an issue.
But it would increase the burden to make releases of Geany and Geany-Plugins independently of each other.
When did that last happen? And only then when the obligatory windows last minute changes stuffed something up :)
It doesn't happen that often, true.
Also it would make the build script and NSIS installer quite big and complex.
I can't comment on this, so ok, if its more than just catenating the scripts then thats a problem.
That's the main reason why I don't want to bundle them.
So, I would keep Geany and G-P builds separated.
Ok, so we come back to discoverability, maybe the plugins should be immediately after the Windows download on https://www.geany.org/download/releases/
That's a good idea. Will do.
@eht16 just being devils advocate, not necessarily pushing for it as I am not a Windows user, but:
On the contrary the installer size would be even bigger (not sure how much this is an issue nowadays).
Geany Windows download == 16Mbytes, Plugins Windows download == 36Mbytes, total 52Mb compared to say Vscode Windows download 62Mbytes, Eclipse hundreds of Mbytes, etc etc as you say I doubt its an issue :)
Maybe most people that use Geany do it because it's a lightweight editor, so maybe should compare size with other lightweight editors.
Notepad++.exe is 3.6MB
And the tendency is to have more plugins, so what now would be 52MB can be much bigger later.
Geany Windows download == 16Mbytes, Plugins Windows download == 36Mbytes, total 52Mb compared to say Vscode Windows download 62Mbytes, Eclipse hundreds of Mbytes, etc etc as you say I doubt its an issue :)
Maybe most people that use Geany do it because it's a lightweight editor, so maybe should compare size with other lightweight editors.
Notepad++.exe is 3.6MB
And the tendency is to have more plugins, so what now would be 52MB can be much bigger later.
Although what is really important is RAM usage, so if unused plugins don't increase RAM, then download size is a not a big problem (only if it gets too big).
### Test for Windows 10 64bits
Download size: Sublime Text Build 3211 x64 Setup.exe | geany-1.36_setup.exe -------------------------------------------|------------------------- 10.675KB | 15.743KB
RAM usage for the same 6 open files: Sublime Text Build 3211 x64 Setup.exe | geany-1.36_setup.exe -------------------------------------------|------------------------- 21.692K | 11.312K
I was going to download Atom to test too, but it's just too big: 172MB
@eht16 what about this? 1.38 is soon to be released and this PR is on the list (and part of the "remove gtk2" project)
If I didn't miss anything, we can close this as soon as its dependencies will be merged (which will happen soon and before 1.38).
Closing this as #2590 is merged.
Closed #2592.
github-comments@lists.geany.org