diff --git a/README.md b/README.md
index 4635cd6e..01feb3e7 100644
--- a/README.md
+++ b/README.md
@@ -23,12 +23,12 @@ WARNING: recent breaking change: when specifying dlangui library as DUB dependen
Main features:
-* Crossplatform (Win32 and Linux are supported in current version); can use SDL2 as a backend.
+* Crossplatform (Win32, OSX, and Linux are supported in current version); can use SDL2 as a backend.
* Mostly inspired by Android UI API (layouts, styles, two phase layout, ...)
* Supports highly customizable UI themes and styles
* Supports internationalization
* Hardware acceleration using OpenGL (when built with version USE_OPENGL)
-* Fallback to pure Win32 API / SDL / XCB when OpenGL is not available (e.g. opengl dynamic library cannot be loaded)
+* Fallback to pure Win32 API / SDL / X11 when OpenGL is not available (e.g. opengl dynamic library cannot be loaded)
* Actually it's a port (with major refactoring) of GUI library for cross platform OpenGL based implementation of Cool Reader app project from C++.
* Non thread safe - all UI operations should be preformed in single thread
@@ -175,6 +175,10 @@ Mac OSX development using Mono-D
DMD, DUB, git, MonoDevelop with Mono-D plugin must be installed
+Can use SDL2 or X11 as a backend.
+
+Native Cocoa backend - work is in progress.
+
In some directory, e.g. ~/src/d/ :
Clone DlangUI repository
@@ -197,12 +201,14 @@ Clone dependency libraries
git clone https://github.com/Devisualization/image.git de_image
git clone https://github.com/Dav1dde/gl3n.git
git clone https://github.com/p0nce/DerelictCocoa.git
+ git clone https://github.com/nomad-software/x11.git
Open solution file with Mono-D
dlangui-monod-osx.sln
+
Linux development using Mono-D
------------------------------
diff --git a/dlangui-monod-linux.dproj b/dlangui-monod-linux.dproj
index 631734ce..5e7e177f 100644
--- a/dlangui-monod-linux.dproj
+++ b/dlangui-monod-linux.dproj
@@ -175,14 +175,68 @@
true
0
-
+
bin\DebugX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
obj/DebugX11
false
-Jviews
-Jviews/res
-Jviews/res/i18n
-Jviews/res/mdpi
+-Jviews/res/hdpi
+ false
+ libdlangui-monod-linux
+ StaticLibrary
+ true
+ 0
+
+
+ bin\ReleaseX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
+ obj/ReleaseX11
+ false
+ -Jviews
+-Jviews/res
+-Jviews/res/i18n
+-Jviews/res/mdpi
+-Jviews/res/hdpi
+ false
+ libdlangui-monod-linux
+ StaticLibrary
+ true
+ 0
+
+
+ bin\UnittestX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
+ obj/UnittestX11
+ false
+ -Jviews
+-Jviews/res
+-Jviews/res/i18n
+-Jviews/res/mdpi
-Jviews/res/hdpi
false
libdlangui-monod-linux
diff --git a/dlangui-monod-linux.sln b/dlangui-monod-linux.sln
index 1bc9c31e..ba4bb0e6 100644
--- a/dlangui-monod-linux.sln
+++ b/dlangui-monod-linux.sln
@@ -22,6 +22,8 @@ Global
ReleaseMinimal|Any CPU = ReleaseMinimal|Any CPU
UnittestMinimal|Any CPU = UnittestMinimal|Any CPU
DebugX11|Any CPU = DebugX11|Any CPU
+ ReleaseX11|Any CPU = ReleaseX11|Any CPU
+ UnittestX11|Any CPU = UnittestX11|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.Debug|Any CPU.ActiveCfg = Debug|x64
@@ -34,10 +36,14 @@ Global
{075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.Release|Any CPU.Build.0 = Release|x64
{075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64
{075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64
+ {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64
+ {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64
{075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.Unittest|Any CPU.ActiveCfg = Unittest|x64
{075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.Unittest|Any CPU.Build.0 = Unittest|x64
{075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64
{075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64
+ {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64
+ {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64
{0A3A0D08-E4DC-418E-B92B-561CC91C2306}.Debug|Any CPU.ActiveCfg = Debug|x64
{0A3A0D08-E4DC-418E-B92B-561CC91C2306}.Debug|Any CPU.Build.0 = Debug|x64
{0A3A0D08-E4DC-418E-B92B-561CC91C2306}.DebugMinimal|Any CPU.ActiveCfg = DebugMinimal|x64
@@ -48,10 +54,14 @@ Global
{0A3A0D08-E4DC-418E-B92B-561CC91C2306}.Release|Any CPU.Build.0 = Release|x64
{0A3A0D08-E4DC-418E-B92B-561CC91C2306}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64
{0A3A0D08-E4DC-418E-B92B-561CC91C2306}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64
+ {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64
+ {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64
{0A3A0D08-E4DC-418E-B92B-561CC91C2306}.Unittest|Any CPU.ActiveCfg = Unittest|x64
{0A3A0D08-E4DC-418E-B92B-561CC91C2306}.Unittest|Any CPU.Build.0 = Unittest|x64
{0A3A0D08-E4DC-418E-B92B-561CC91C2306}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64
{0A3A0D08-E4DC-418E-B92B-561CC91C2306}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64
+ {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64
+ {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64
{54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.Debug|Any CPU.ActiveCfg = Debug|x64
{54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.Debug|Any CPU.Build.0 = Debug|x64
{54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.DebugMinimal|Any CPU.ActiveCfg = DebugMinimal|x64
@@ -62,10 +72,14 @@ Global
{54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.Release|Any CPU.Build.0 = Release|x64
{54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64
{54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64
+ {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64
+ {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64
{54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.Unittest|Any CPU.ActiveCfg = Unittest|x64
{54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.Unittest|Any CPU.Build.0 = Unittest|x64
{54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64
{54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64
+ {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64
+ {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64
{5BD82AA8-4026-44C2-8957-B4E2932542F0}.Debug|Any CPU.ActiveCfg = DebugX11|x64
{5BD82AA8-4026-44C2-8957-B4E2932542F0}.Debug|Any CPU.Build.0 = DebugX11|x64
{5BD82AA8-4026-44C2-8957-B4E2932542F0}.DebugMinimal|Any CPU.ActiveCfg = DebugMinimal|x64
@@ -76,10 +90,14 @@ Global
{5BD82AA8-4026-44C2-8957-B4E2932542F0}.Release|Any CPU.Build.0 = Release|x64
{5BD82AA8-4026-44C2-8957-B4E2932542F0}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64
{5BD82AA8-4026-44C2-8957-B4E2932542F0}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64
+ {5BD82AA8-4026-44C2-8957-B4E2932542F0}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64
+ {5BD82AA8-4026-44C2-8957-B4E2932542F0}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64
{5BD82AA8-4026-44C2-8957-B4E2932542F0}.Unittest|Any CPU.ActiveCfg = Unittest|x64
{5BD82AA8-4026-44C2-8957-B4E2932542F0}.Unittest|Any CPU.Build.0 = Unittest|x64
{5BD82AA8-4026-44C2-8957-B4E2932542F0}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64
{5BD82AA8-4026-44C2-8957-B4E2932542F0}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64
+ {5BD82AA8-4026-44C2-8957-B4E2932542F0}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64
+ {5BD82AA8-4026-44C2-8957-B4E2932542F0}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64
{8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.Debug|Any CPU.ActiveCfg = Debug|x64
{8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.Debug|Any CPU.Build.0 = Debug|x64
{8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.DebugMinimal|Any CPU.ActiveCfg = DebugMinimal|x64
@@ -90,10 +108,14 @@ Global
{8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.Release|Any CPU.Build.0 = Release|x64
{8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64
{8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64
+ {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64
+ {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64
{8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.Unittest|Any CPU.ActiveCfg = Unittest|x64
{8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.Unittest|Any CPU.Build.0 = Unittest|x64
{8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64
{8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64
+ {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64
+ {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64
{A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.Debug|Any CPU.ActiveCfg = Debug|x64
{A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.Debug|Any CPU.Build.0 = Debug|x64
{A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.DebugMinimal|Any CPU.ActiveCfg = DebugMinimal|x64
@@ -104,9 +126,13 @@ Global
{A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.Release|Any CPU.Build.0 = Release|x64
{A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64
{A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64
+ {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64
+ {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64
{A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.Unittest|Any CPU.ActiveCfg = Unittest|x64
{A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.Unittest|Any CPU.Build.0 = Unittest|x64
{A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64
{A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64
+ {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64
+ {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64
EndGlobalSection
EndGlobal
diff --git a/dub.json b/dub.json
index c32e31b8..91bcea88 100644
--- a/dub.json
+++ b/dub.json
@@ -95,6 +95,18 @@
"libs/windows/x86/SDL2.dll"
]
},
+ {
+ "name": "x11",
+ "versions": ["USE_X11", "USE_OPENGL", "USE_FREETYPE", "EmbedStandardResources"],
+ "versions-windows": ["Unicode"],
+ "dependencies": {
+ "dlib": "~>0.7.0",
+ "derelict-gl3": "~>1.0.16",
+ "derelict-ft": "~>1.0.2",
+ "gl3n": "~>1.2.0",
+ "x11": "~>1.0.9"
+ }
+ },
{
"name": "sfml",
"versions": ["USE_DSFML", "USE_OPENGL", "USE_FREETYPE", "EmbedStandardResources"],
diff --git a/examples/dmledit/dmledit-monod-linux.dproj b/examples/dmledit/dmledit-monod-linux.dproj
index 64b3fbd9..69c38021 100644
--- a/examples/dmledit/dmledit-monod-linux.dproj
+++ b/examples/dmledit/dmledit-monod-linux.dproj
@@ -175,6 +175,7 @@
USE_X11
+ USE_OPENGL
USE_FREETYPE
EmbedStandardResources
@@ -192,7 +193,57 @@
Executable
true
0
- -L-lX11
+ -lX11
+
+
+ bin\ReleaseX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
+ obj/ReleaseX11
+ true
+ -Jviews
+-Jviews/res
+-Jviews/res/hdpi
+-Jviews/res/mdpi
+-Jviews/res/i18n
+
+ false
+ dmledit-monod-linux
+ Executable
+ true
+ 0
+ -lX11
+
+
+ bin\UnittestX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
+ obj/UnittestX11
+ true
+ -Jviews
+-Jviews/res
+-Jviews/res/hdpi
+-Jviews/res/mdpi
+-Jviews/res/i18n
+
+ false
+ dmledit-monod-linux
+ Executable
+ true
+ 0
+ -lX11
diff --git a/examples/example1/example1-monod-linux.dproj b/examples/example1/example1-monod-linux.dproj
index d251586e..d29955c0 100644
--- a/examples/example1/example1-monod-linux.dproj
+++ b/examples/example1/example1-monod-linux.dproj
@@ -195,6 +195,56 @@
0
-lX11
+
+ bin\ReleaseX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
+ obj/ReleaseX11
+ true
+ -lX11
+ -Jviews
+-Jviews/res
+-Jviews/res/hdpi
+-Jviews/res/mdpi
+-Jviews/res/i18n
+
+ false
+ example1-monod-linux
+ Executable
+ true
+ 0
+
+
+ bin\UnittestX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
+ obj/UnittestX11
+ true
+ -lX11
+ -Jviews
+-Jviews/res
+-Jviews/res/hdpi
+-Jviews/res/mdpi
+-Jviews/res/i18n
+
+ false
+ example1-monod-linux
+ Executable
+ true
+ 0
+
diff --git a/examples/helloworld/helloworld-monod-linux.dproj b/examples/helloworld/helloworld-monod-linux.dproj
index 566954c7..64e41d31 100644
--- a/examples/helloworld/helloworld-monod-linux.dproj
+++ b/examples/helloworld/helloworld-monod-linux.dproj
@@ -135,6 +135,7 @@
USE_X11
+ USE_OPENGL
USE_FREETYPE
@@ -151,6 +152,42 @@
+
+ bin\ReleaseX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+
+
+ obj/ReleaseX11
+ true
+ -lX11
+ false
+ helloworld-monod-linux
+ Executable
+ true
+ 0
+
+
+ bin\UnittestX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+
+
+ obj/UnittestX11
+ true
+ -lX11
+ false
+ helloworld-monod-linux
+ Executable
+ true
+ 0
+
diff --git a/examples/spreadsheet/spreadsheet-monod-linux.dproj b/examples/spreadsheet/spreadsheet-monod-linux.dproj
index aaad14b8..2a676cfe 100644
--- a/examples/spreadsheet/spreadsheet-monod-linux.dproj
+++ b/examples/spreadsheet/spreadsheet-monod-linux.dproj
@@ -176,6 +176,7 @@
USE_X11
+ USE_OPENGL
USE_FREETYPE
EmbedStandardResources
@@ -187,6 +188,53 @@
-Jviews/res/hdpi
-Jviews/res/mdpi
-Jviews/res/i18n
+
+ false
+ spreadsheet-monod-linux
+ Executable
+ true
+ 0
+ -lX11
+
+
+ bin\ReleaseX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
+ false
+ -Jviews
+-Jviews/res
+-Jviews/res/hdpi
+-Jviews/res/mdpi
+-Jviews/res/i18n
+
+ false
+ spreadsheet-monod-linux
+ Executable
+ true
+ 0
+
+
+ bin\UnittestX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
+ false
+ -Jviews
+-Jviews/res
+-Jviews/res/hdpi
+-Jviews/res/mdpi
+-Jviews/res/i18n
false
spreadsheet-monod-linux
diff --git a/examples/tetris/src/tetris.d b/examples/tetris/src/tetris.d
index 6d0922cc..0478af09 100644
--- a/examples/tetris/src/tetris.d
+++ b/examples/tetris/src/tetris.d
@@ -34,7 +34,7 @@ extern (C) int UIAppMain(string[] args) {
Platform.instance.uiTheme = "theme_default";
// create window
- Window window = Platform.instance.createWindow("DLangUI: Tetris game example"d, null, WindowFlag.Modal);
+ Window window = Platform.instance.createWindow("DLangUI: Tetris game example"d, null, WindowFlag.Modal, 600, 400);
window.mainWidget = new GameWidget();
diff --git a/examples/tetris/tetris-monod-linux.dproj b/examples/tetris/tetris-monod-linux.dproj
index ff456cca..3b49891c 100644
--- a/examples/tetris/tetris-monod-linux.dproj
+++ b/examples/tetris/tetris-monod-linux.dproj
@@ -173,6 +173,7 @@
USE_X11
+ USE_OPENGL
USE_FREETYPE
EmbedStandardResources
@@ -184,6 +185,57 @@
-Jviews/res/hdpi
-Jviews/res/mdpi
-Jviews/res/i18n
+
+ false
+ tetris-monod-linux
+ Executable
+ true
+ 0
+ -lX11
+
+
+ bin\ReleaseX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
+ obj/ReleaseX11
+ true
+ -lX11
+ -Jviews
+-Jviews/res
+-Jviews/res/hdpi
+-Jviews/res/mdpi
+-Jviews/res/i18n
+
+ false
+ tetris-monod-linux
+ Executable
+ true
+ 0
+
+
+ bin\UnittestX11
+
+
+ USE_X11
+ USE_OPENGL
+ USE_FREETYPE
+ EmbedStandardResources
+
+
+ obj/UnittestX11
+ true
+ -lX11
+ -Jviews
+-Jviews/res
+-Jviews/res/hdpi
+-Jviews/res/mdpi
+-Jviews/res/i18n
false
tetris-monod-linux
diff --git a/src/dlangui/platforms/x11/x11app.d b/src/dlangui/platforms/x11/x11app.d
index c9b280cb..5e3c3032 100644
--- a/src/dlangui/platforms/x11/x11app.d
+++ b/src/dlangui/platforms/x11/x11app.d
@@ -262,7 +262,8 @@ class X11Window : DWindow {
at the top of the window and the name of the minimized window
respectively.
*/
- XSetStandardProperties(x11display, _win, cast(char*)"My Window".ptr, cast(char*)"HI!".ptr, None, cast(char**)null, 0, cast(XSizeHints*)null);
+ char* caption8 = cast(char*)toUTF8(_caption).toStringz;
+ XSetStandardProperties(x11display, _win, caption8, caption8, None, cast(char**)null, 0, cast(XSizeHints*)null);
/* this routine determines which types of input are allowed in
the input. see the appropriate section for details...