www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Dynamic Bindings to libui (x-platform GUI)

reply extrawurst <stephan extrawurst.org> writes:
Hey folks,

libui is a crossplatform GUI lib written in C. This makes it a 
perfect candidate to be used in D!

What they say about libui on their site:
"Simple and portable (but not inflexible) GUI library in C that 
uses the native GUI technologies of each platform it supports."

find libui on github:
https://github.com/andlabs/libui

So here are the inofficial Derelict Bindings to it: 
https://github.com/Extrawurst/DerelictLibui

I tested them on both windows and mac osx so far. Any linux user 
is welcome to test it on there aswell.

Let me know if you find any issues.

-Stephan
May 24 2016
next sibling parent Basile B. <b2.temp gmx.com> writes:
On Tuesday, 24 May 2016 at 20:52:54 UTC, extrawurst wrote:
 Hey folks,

 libui is a crossplatform GUI lib written in C. This makes it a 
 perfect candidate to be used in D!

 What they say about libui on their site:
 "Simple and portable (but not inflexible) GUI library in C that 
 uses the native GUI technologies of each platform it supports."

 find libui on github:
 https://github.com/andlabs/libui

 So here are the inofficial Derelict Bindings to it: 
 https://github.com/Extrawurst/DerelictLibui
Thx !
 I tested them on both windows and mac osx so far. Any linux 
 user is welcome to test it on there aswell.
Look at the pull requests ;)
 Let me know if you find any issues.

 -Stephan
May 24 2016
prev sibling next sibling parent reply Zekereth <viserion.thrall gmail.com> writes:
On Tuesday, 24 May 2016 at 20:52:54 UTC, extrawurst wrote:
 Hey folks,

 libui is a crossplatform GUI lib written in C. This makes it a 
 perfect candidate to be used in D!

 What they say about libui on their site:
 "Simple and portable (but not inflexible) GUI library in C that 
 uses the native GUI technologies of each platform it supports."

 find libui on github:
 https://github.com/andlabs/libui

 So here are the inofficial Derelict Bindings to it: 
 https://github.com/Extrawurst/DerelictLibui

 I tested them on both windows and mac osx so far. Any linux 
 user is welcome to test it on there aswell.

 Let me know if you find any issues.

 -Stephan
I had to comment out instances of uiControlVerifyDestroy on Linux. Seems libui was updated and removed/moved that function: Removed uiControlVerifyDestroy(); that is now part of uiFreeControl() itself. Other than that it seems to work great on Linux. Thanks for this!
May 24 2016
parent Basile B. <b2.temp gmx.com> writes:
On Wednesday, 25 May 2016 at 00:56:00 UTC, Zekereth wrote:
 I had to comment out instances of uiControlVerifyDestroy on 
 Linux. Seems libui was updated and removed/moved that function:

 Removed uiControlVerifyDestroy(); that is now part of 
 uiFreeControl() itself.
There's no problem when you build libui from the git submodule. Actually I think it's safer to do this because the C shared lib and the bindings are in sync.
May 24 2016
prev sibling next sibling parent reply Mike Parker <aldacron gmail.com> writes:
On Tuesday, 24 May 2016 at 20:52:54 UTC, extrawurst wrote:
 Hey folks,
 So here are the inofficial Derelict Bindings to it: 
 https://github.com/Extrawurst/DerelictLibui

 I tested them on both windows and mac osx so far. Any linux 
 user is welcome to test it on there aswell.

 Let me know if you find any issues.

 -Stephan
Cool. I've got this project on my github watchlist and have had a Derelict binding on my TODO list. I was waiting for it to get out of alpha status. I don't particularly like maintaining bindings to libraries I can' t be sure are going to keep a stable API. Doesn't look like it's been changing too much though.
May 24 2016
parent extrawurst <stephan extrawurst.org> writes:
On Wednesday, 25 May 2016 at 02:34:03 UTC, Mike Parker wrote:
 On Tuesday, 24 May 2016 at 20:52:54 UTC, extrawurst wrote:
 Hey folks,
 So here are the inofficial Derelict Bindings to it: 
 https://github.com/Extrawurst/DerelictLibui

 I tested them on both windows and mac osx so far. Any linux 
 user is welcome to test it on there aswell.

 Let me know if you find any issues.

 -Stephan
Cool. I've got this project on my github watchlist and have had a Derelict binding on my TODO list. I was waiting for it to get out of alpha status. I don't particularly like maintaining bindings to libraries I can' t be sure are going to keep a stable API. Doesn't look like it's been changing too much though.
Yeah I know what you mean about stability but thats the reason why I am not using a specific release of libui but simply submodule to the exact version I am compatible with. Also some other libs I am having on my rodadmap do use use any tags/versions ;( like nuklear wich is next on my list: https://github.com/vurtun/nuklear Cheers, Stephan
May 25 2016
prev sibling next sibling parent reply Nick Sabalausky <SeeWebsiteToContactMe semitwist.com> writes:
On 05/24/2016 04:52 PM, extrawurst wrote:
 So here are the inofficial Derelict Bindings to it:
 https://github.com/Extrawurst/DerelictLibui
Some D-oriented docs and example code would be nice.
 find libui on github:
 https://github.com/andlabs/libui
Hmm:
 uses the native GUI technologies of each platform it supports
 ...
 Windows: Windows Vista SP2 with Platform Update or newer
 Unix: GTK+ 3.4 or newer
 Mac OS X: OS X 10.7 or newer
Drives me nuts when people count "Always uses GTK on Linux" as "Native UI". It's like those programs that do everything completely Ubuntu-centric whenever possible and then advertise "Linux Support". I *really* wish GTK would just die already.
May 25 2016
next sibling parent extrawurst <stephan extrawurst.org> writes:
On Wednesday, 25 May 2016 at 16:47:30 UTC, Nick Sabalausky wrote:
 On 05/24/2016 04:52 PM, extrawurst wrote:
 So here are the inofficial Derelict Bindings to it:
 https://github.com/Extrawurst/DerelictLibui
Some D-oriented docs and example code would be nice.
There is a plain conversion of the libui example: https://github.com/Extrawurst/DerelictLibui/blob/master/source/app.d
 [..snip GTK rage..]
May 25 2016
prev sibling parent reply Kagamin <spam here.lot> writes:
On Wednesday, 25 May 2016 at 16:47:30 UTC, Nick Sabalausky wrote:
 Drives me nuts when people count "Always uses GTK on Linux" as 
 "Native UI". It's like those programs that do everything 
 completely Ubuntu-centric whenever possible and then advertise 
 "Linux Support". I *really* wish GTK would just die already.
https://github.com/andlabs/libui/pull/80
Nov 16 2016
parent Nick Sabalausky <SeeWebsiteToContactMe semitwist.com> writes:
On 11/16/2016 03:50 AM, Kagamin wrote:
 On Wednesday, 25 May 2016 at 16:47:30 UTC, Nick Sabalausky wrote:
 Drives me nuts when people count "Always uses GTK on Linux" as "Native
 UI". It's like those programs that do everything completely
 Ubuntu-centric whenever possible and then advertise "Linux Support". I
 *really* wish GTK would just die already.
https://github.com/andlabs/libui/pull/80
Yea, I spotted that. Looks nice, I hope it gets merged, but I'm not holding my breath: - As its notes say, it is still incomplete to finish it - Plus it's just been sitting unmerged since May - The libui author himself still maintains he doesn't want Qt support and feels it's redundant since Qt exists (which makes me wonder what he feels the point of his own lib is in the first place, since, why use libui when Qt exists and can do native look&feel on everything *including* GTK-based environments?). :( Anyway, I'm glad there's D bindings for this, but I do wish the libui author would change his stance and allow a Qt backend, because that would make this a very attractive lib. *Or* maybe GTK could just add support for Qt themes (without then removing the feature in a point release), but we all know that will never happen :/
Nov 16 2016
prev sibling next sibling parent reply ketmar <ketmar ketmar.no-ip.org> writes:
great lib (libui). sadly, no GNU/Linux support in there yet. 
gtk+3 is complete crap, and it doesn't even *have* to present in 
system (it isn't in my case). and libui cannot fallback to gtk+2. 
it's sad: i was very excited by the nice C UI library (even if it 
is actually a wrapper).

let's hope libui author will make a working GNU/Linux version.
May 26 2016
parent reply Basile B. <b2.temp gmx.com> writes:
On Thursday, 26 May 2016 at 17:17:00 UTC, ketmar wrote:
 great lib (libui). sadly, no GNU/Linux support in there yet. 
 gtk+3 is complete crap, and it doesn't even *have* to present 
 in system (it isn't in my case). and libui cannot fallback to 
 gtk+2. it's sad: i was very excited by the nice C UI library 
 (even if it is actually a wrapper).

 let's hope libui author will make a working GNU/Linux version.
Mmmh...it works on linux. You just have to install gtk3-devel (>3.10 is OK) from the official package manager of your distro, then run make in the libui submodule folder. It's even probably the platform where it's the easyer to setup.
May 26 2016
parent ketmar <ketmar ketmar.no-ip.org> writes:
you probably misunderstood my post. ;-) i absolutely don't want 
to install gtk+3, it's not "native" for my system, no other app 
is using it. that means "no GNU/Linux support" for me.
May 27 2016
prev sibling parent reply helxi <brucewayneshit gmail.com> writes:
On Tuesday, 24 May 2016 at 20:52:54 UTC, extrawurst wrote:
 Hey folks,

 libui is a crossplatform GUI lib written in C. This makes it a 
 perfect candidate to be used in D!

 What they say about libui on their site:
 "Simple and portable (but not inflexible) GUI library in C that 
 uses the native GUI technologies of each platform it supports."

 find libui on github:
 https://github.com/andlabs/libui

 So here are the inofficial Derelict Bindings to it: 
 https://github.com/Extrawurst/DerelictLibui

 I tested them on both windows and mac osx so far. Any linux 
 user is welcome to test it on there aswell.

 Let me know if you find any issues.

 -Stephan
Hi, I'm on Arch Linux (64-bit). `dub --config=test` gives me the following error: (Please be noted that I have libui installed in my system already) $ dub --config=test Performing "debug" build using /usr/bin/dmd for x86_64. derelict-util 2.1.0: target for configuration "library" is up to date. derelict-libui 0.3.0+commit.2.g079a15e: target for configuration "test" is up to date. To force a rebuild of up-to-date targets, run again with --force. Running ./lib/DerelictLibui derelict.util.exception.SymbolLoadException ../../.dub/packages/derelict-util-2.1.0/derelict-util/source/derelict/ut l/sharedlib.d(177): Failed to load symbol uiControlVerifyDestroy from shared library libui.so.0 ---------------- ??:? void* derelict.util.sharedlib.SharedLib.loadSymbol(immutable(char)[], bool) [0xd457b00a] ??:? void* derelict.util.loader.SharedLibLoader.loadSymbol(immutable(char)[], bool) [0xd45792aa] ??:? void derelict.util.loader.SharedLibLoader.bindFunc(void**, immutable(char)[], bool) [0xd4579300] ??:? void derelict.libui.libui.DerelictLibuiLoader.loadSymbols() [0xd4576983] ??:? void derelict.util.loader.SharedLibLoader.load(immutable(char)[][]) [0xd457912a] ??:? void derelict.util.loader.SharedLibLoader.load(immutable(char)[]) [0xd45790a4] ??:? void derelict.util.loader.SharedLibLoader.load() [0xd4578f87] ??:? _Dmain [0xd45783a4] Program exited with code 1
Jan 08 2018
parent rikki cattermole <rikki cattermole.co.nz> writes:
On 09/01/2018 1:32 AM, helxi wrote:
 On Tuesday, 24 May 2016 at 20:52:54 UTC, extrawurst wrote:
 Hey folks,

 libui is a crossplatform GUI lib written in C. This makes it a perfect 
 candidate to be used in D!

 What they say about libui on their site:
 "Simple and portable (but not inflexible) GUI library in C that uses 
 the native GUI technologies of each platform it supports."

 find libui on github:
 https://github.com/andlabs/libui

 So here are the inofficial Derelict Bindings to it: 
 https://github.com/Extrawurst/DerelictLibui

 I tested them on both windows and mac osx so far. Any linux user is 
 welcome to test it on there aswell.

 Let me know if you find any issues.

 -Stephan
Hi, I'm on Arch Linux (64-bit). `dub --config=test` gives me the following error: (Please be noted that I have libui installed in my system already) $ dub --config=test Performing "debug" build using /usr/bin/dmd for x86_64. derelict-util 2.1.0: target for configuration "library" is up to date. derelict-libui 0.3.0+commit.2.g079a15e: target for configuration "test" is up to date. To force a rebuild of up-to-date targets, run again with --force. Running ./lib/DerelictLibui derelict.util.exception.SymbolLoadException ../../.dub/packages/derelict-util-2.1.0/derelict-util/source/derelict/ut l/sharedlib.d(177): Failed to load symbol uiControlVerifyDestroy from shared library libui.so.0 ---------------- ??:? void* derelict.util.sharedlib.SharedLib.loadSymbol(immutable(char)[], bool) [0xd457b00a] ??:? void* derelict.util.loader.SharedLibLoader.loadSymbol(immutable(char)[], bool) [0xd45792aa] ??:? void derelict.util.loader.SharedLibLoader.bindFunc(void**, immutable(char)[], bool) [0xd4579300] ??:? void derelict.libui.libui.DerelictLibuiLoader.loadSymbols() [0xd4576983] ??:? void derelict.util.loader.SharedLibLoader.load(immutable(char)[][]) [0xd457912a] ??:? void derelict.util.loader.SharedLibLoader.load(immutable(char)[]) [0xd45790a4] ??:? void derelict.util.loader.SharedLibLoader.load() [0xd4578f87] ??:? _Dmain [0xd45783a4] Program exited with code 1
https://github.com/Extrawurst/DerelictLibui/issues/7
Jan 08 2018