ghaerr / microwindows Goto Github PK
View Code? Open in Web Editor NEWThe Nano-X Window System
License: Other
The Nano-X Window System
License: Other
Hello,
I am seeking a viable small footprint alternative to Xorg for a special project that will need to run just one application that is an RDP/VNC client and normally can run on X11 systems like Linux.
I am wondering if Nano-X has a small footprint when coupled with the X11 compability library NX11.
The Openindiana OS (https://www.openindiana.org/) is based on Solaris and can run many Linux applications that have been ported but currently uses Xorg and for my project, I need something significantly smaller than Xorg.
Any information or suggestions would be greatly appreciated.
for georgp as i can't see how to pm here>
Do you want some help with finding spelling problems and the like as it's nice to see that nano-x / microwindows is moving again. I can't code anymore, but I can at least proofread / quality-check for you if it's any help?
I can also build if that's of use, I work with Puppy Linux and would build on one of it's versions (either in or out of container types).
When trying to build with allegro 5.2.x the build fails with following error:
es/nanox/microwindows-master/src/obj/drivers/scr_allegro5.o /home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c
/home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c: In function 'init_allegro':
/home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c:134:31: error: 'ALLEGRO_MOUSE_EMULATION_5_0_x' undeclared (first use in this function)
al_set_mouse_emulation_mode(ALLEGRO_MOUSE_EMULATION_5_0_x);
^
/home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c:134:31: note: each undeclared identifier is reported only once for each function it appears in
/home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c:136:4: warning: passing argument 2 of 'al_register_event_source' makes pointer from integer without a cast
al_get_touch_input_mouse_emulation_event_source());
^
In file included from ../../../../../lib_include/android_arm/allegro5/base.h:50:0,
from ../../../../../lib_include/android_arm/allegro5/allegro.h:26,
from /home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c:15:
../../../../../lib_include/android_arm/allegro5/events.h:249:15: note: expected 'struct ALLEGRO_EVENT_SOURCE *' but argument is of type 'int'
AL_FUNC(void, al_register_event_source, (ALLEGRO_EVENT_QUEUE*, ALLEGRO_EVENT_SOURCE*));
^
../../../../../lib_include/android_arm/allegro5/internal/alconfig.h:175:57: note: in definition of macro 'AL_FUNC'
#define AL_FUNC(type, name, args) type name args
^
Hi, I have an embedded Linux application that was previously using Microwin v0.91 (2005) and running on an old Arm CPU.
Now I'm porting the project to a new system (i.MX6 UL, armv7l) using the latest version of microwin.
My source code is well tested (>15 years of life) and was previously running without issues.
I have spent a few days adjusting the build config for this new system and the graphic library works as expected, APART from an issue that can be troublesome. We draw popups on our display and we need to backup the raster below the popup with GrCopyArea and restore it back after the popup gets deleted. Unfortunately, GrCopyArea seems not to work: it copies 0s to the raster when we try to restore the area below the popup, therefore after the popup is deleted we get a black spot below it.
I have debugged this and can't find anything wrong (from my little understanding of microwin guts). I reached one of the low level functions (rasteropGeneralLow) and can't see anything wrong (like a failed assert, a return before really copying the data, etc). The only thing I noticed is that the source and dest pitch are different: src pitch 8, dst pitch 16
What could be wrong?
The display is 1 bit only (the pixels can be on/off). These are some of the important fields in the config file:
SCREEN_PIXTYPE = MWPF_PALETTE
SCREEN_DEPTH = 1
SCREEN = FB
SCREEN_WIDTH = 128
SCREEN_HEIGHT = 64
MICROWIN = N
NANOX = Y
NUKLEARUI = N
NX11 = N
ENGINE = N
TINYWIDGETS = N
LINK_APP_INTO_SERVER = Y
HAVE_SHAREDMEM_SUPPORT = Y
It seems that this repo isn't very active since the last update was almost a year ago, how often will you update this repo?
http://www.microwindows.org seems down.
make[1]: se entra en el directorio '/home/vita/Desktop/microwindows-master/src/mwin'
make[2]: se entra en el directorio '/home/vita/Desktop/microwindows-master/src/mwin/winlib'
make[2]: se sale del directorio '/home/vita/Desktop/microwindows-master/src/mwin/winlib'
Compiling engine/font_freetype2.c ...
/home/vita/Desktop/microwindows-master/src/engine/font_freetype2.c:56:10: fatal error: 'ft2build.h' file not found
#include <ft2build.h>
^~~~~~~~~~~~
1 error generated.
make[1]: *** [/home/vita/Desktop/microwindows-master/src/Makefile.rules:556: /home/vita/Desktop/microwindows-master/src/obj/engine/font_freetype2.o] Error 1
make[1]: se sale del directorio '/home/vita/Desktop/microwindows-master/src/mwin'
make: *** [/home/vita/Desktop/microwindows-master/src/Makefile.rules:481: subdir-/home/vita/Desktop/microwindows-master/src/mwin] Error 2
In ArchLinux looks like I have everything needed installed already:
[vita@desktop src]$ sudo pacman -Ss freetype
extra/freetype2 2.13.2-1 [instalado]
Font rasterization library
extra/freetype2-demos 2.13.2-1 [instalado]
Freetype tools and demos
extra/freetype2-docs 2.13.2-1
Freetype documentation
extra/haskell-gi-freetype2 2.0.4-29
freetype2 bindings
extra/libxft 2.3.8-1 [instalado]
FreeType-based font drawing library for X
multilib/lib32-freetype2 2.13.2-1 [instalado]
Font rasterization library (32-bit)
multilib/lib32-libxft 2.3.8-1 [instalado]
FreeType-based font drawing library for X (32-bit)
yacc -d fileio.y
Compiling y.tab.c...
lex fileio.l
"fileio.l":line 54: Error: Too many transitions
Try using %a num
make[2]: *** [lex.yy.c] Error 1
i'm using posix compatible lex https://github.com/sabotage-linux/lex as lex program, and it requires that the maximum number of transitions be specified with the %a directive. apparently the build system assumes that lex is a symlink to flex oslt.
It seems I am having a problem with SDL2.
This is what I am getting with all my applications in Emscripten (WebAssembly) (Mouse is moving and working)
Mouse is working but all Windows are black.
I am not 100% sure it is SDL2 problem but I am now also getting this error in my browser (which is ignored) caused by the call to SDL_CreateRenderer
emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.
Everything works fine in my SDL2-Windows but not SDL2-Emscripten.
I also saw this : https://emscripten.org/docs/porting/emscripten-runtime-environment.html
which recommends When using SDL you will probably need to set the main loop.
So could it be the problem? Because SDL2 now uses the renderer?
On macOS, it's <machine/endian.h>
but on other platforms it's simply <endian.h>
. To cover both of them, please include <sys/types.h>
instead.
This is the error message on MSYS2 MINGW64:
In file included from C:/msys64/home/Administrator/microwindows/src/engine/devdraw.c:15:
C:/msys64/home/Administrator/microwindows/src/include/swap.h:30:10: fatal error: 'machine/endian.h' file not found
#include <machine/endian.h>
^~~~~~~~~~~~~~~~~~
1 error generated.
make[1]: *** [/home/Administrator/microwindows/src/Makefile.rules:556: /home/Administrator/microwindows/src/obj/engine/devdraw.o] Error 1
make[1]: Leaving directory '/home/Administrator/microwindows/src/mwin'
make: *** [/home/Administrator/microwindows/src/Makefile.rules:481: subdir-/home/Administrator/microwindows/src/mwin] Error 2
This is my proposed solution's source: https://stackoverflow.com/questions/27073837/fatal-error-endian-h-file-not-found
Is there any chance more functionality could be added so wxWidgets X11 target could work via NX11? It'd be a nice alternative to FLTK. The microwindows code in wxWidgets doesn't really support anything, so targeting the X11 target would be better.
I see that this project has the nx11 library for libx11 but it would be nice to see a wrapper for libxcb. I'm sure you may have thought of this but how would you implement this?
After switching to a different tty and killing my initial xorg session I still get this same error.
Error opening /dev/fb0: No such file or directory. Check kernel config
Cannot initialize screen
I am using the linux-fb config and my framebuffer drivers are loaded as well
Hello Greg,
what is the "best" solution to load and display a BMP bitmap file with actual 0.94 version?
The following code doesn't work.
image = GdLoadImageFromFile( filename, 0 );
hdcMem = CreateCompatibleDC( hdc );
hbmp = CreateCompatibleBitmap( hdcMem, SCREENX, SCREENY );
hbmpOrg = SelectObject( hdcMem, hbmp );
DrawDIB( hdcMem, 0, 0, image );
StretchBlt( hdc, x, y, dx, dy, hdcMem, 0, 0, image->width, image->height, MWROP_SRC_OVER );
DeleteObject(SelectObject(hdcMem, hbmpOrg));
DeleteDC(hdcMem);
I got the following error:
/home/root/microwindows-0.94pre/src/drivers/genmem.c:144: gen_allocatememgc: Assertion `psd == &scrdev' failed.
When I display the bitmap file (8 bit palette image) with
GdDrawImageFromFile(hdc->psd, x,y,dx,dy, filename,0);
only the top half of the bitmap is displayed.
Hello there!
I am currently working with a project which uses 2018-2019 year old modified branch ( unfortunately history is lost there... ) v0.93 I require to switch from using 16bit color scheme to 24bit.
In principle only changing config file and rebuilding should be needed? Or is there something else that needs to be handled? My project uses prebuilt nano-X (screen X11) and some of the headers.
I've encountered strange behavior while writing tiling window manager using Nano-X. When I resize windows, sometimes old border remains on the screen.
Notably this happens only when I increase left window size, but not right.
Here is a simple program to reproduce: https://git.flygrounder.ru/flygrounder/microwindows-border-bug/src/branch/master/src/main.c
I try to port an existing microwindows program from i.MX6 (32 Bit code, 16 Bit framebuffer) to i.MX8 (64 Bit code, 32 Bit framebuffer).
I can compile the libs and demo programs. When starting mdemo (or any other microwindows programs), the program crashes.
It looks like tbe initial erasing of the framebuffer is not working and there are writes outside of the allowed framebuffer memory.
Should the code work with a 64Bit compiler?
Uwe
hi, today i wanted to try out the MW_FEATURE_RESIZEFRAME feature (#26) so i went looking for some win32 sample programs and found this http://www.winprog.org/tutorial/
here is a small sample program i wanted to compile against microwindows (simple_window.c)
#include <windows.h>
const char g_szClassName[] = "myWindowClass";
// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;
//Step 1: Registering the Window Class
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// Step 2: Creating the Window
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"The title of my window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
NULL, NULL, hInstance, NULL);
if(hwnd == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// Step 3: The Message Loop
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
but it seems WNDCLASSEX isn't implemented in microwindows. are there any plans to add this ?
Hello, Greg !
My workaround
change line:116 in src/demos/nanox/Makefile from
ifeq ($(FRAMEBUFFER), Y)
to
ifeq ($(SCREEN), FB)
I don't know if it's correct solution, but works for me.
Regards,
Julian.
It would make easier to write package for linux distribution.
Hi,guys,
the function
int GdConvertEncoding
(const void *istr, MWTEXTFLAGS iflags, int cc, void *ostr,
MWTEXTFLAGS oflags)
int the file devfont.c can not convert a multi-language UTF8 string to UTF-16 string but ASCII.
so I add the iconv lib to make this function can convert multi-language UTF8 string to a right way.
maybe someone need it. by the way in config need add libiconv and libcharset
devfont.c
I cant compile MicroWindows on Ubuntu for Emscripten.
Linking mwapp.html ...
emcc -O3 -I./nx11/X11-local -I/usr/include/freetype2 -I/usr/include/libpng16 -lfreetype -s USE_SDL=2 -s USE_ZLIB=1 -s USE_FREETYPE=1 -s USE_LIBPNG=1 -I/usr/include/freetype2 -I/usr/include/libpng16 -lfreetype -Iinclude -I/usr/include/freetype2 -I/usr/include/libpng16 -lfreetype -DEMSCRIPTEN=1 -DMULTIAPP=1 -DHAVE_FREETYPE_2_SUPPORT=1 -s WASM=0 -s TOTAL_MEMORY=67108864 -s ERROR_ON_UNDEFINED_SYMBOLS=0 -o bin/mwapp.html ./demos/mwin/mwapp.c ./demos/mwin/mwdemo.c ./demos/mwin/mwdemo2.c ./demos/mwin/mwmine.c ./images/demos/mwin/mwmine/mineflag.c ./images/demos/mwin/mwmine/mineface.c ./images/demos/mwin/mwmine/minefacelost.c ./images/demos/mwin/mwmine/minebomb.c ./images/demos/mwin/mwmine/minedone.c ./images/demos/mwin/mwmine/minehitfalse.c lib/libmwin.a
wasm-ld: error: unknown file type: winmain.o
emcc: error: '/home/proddik/Projects/emsdk/upstream/bin/wasm-ld -o /tmp/emscripten_temp_7l3m8tws/mwapp.wasm /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libfreetype.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libfreetype.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libfreetype.a -L/home/proddik/Projects/emsdk/upstream/emscripten/system/local/lib -L/home/proddik/Projects/emsdk/upstream/emscripten/system/lib -L/home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm /tmp/emscripten_temp_7l3m8tws/mwapp_0.o /tmp/emscripten_temp_7l3m8tws/mwdemo_1.o /tmp/emscripten_temp_7l3m8tws/mwdemo2_2.o /tmp/emscripten_temp_7l3m8tws/mwmine_3.o /tmp/emscripten_temp_7l3m8tws/mineflag_4.o /tmp/emscripten_temp_7l3m8tws/mineface_5.o /tmp/emscripten_temp_7l3m8tws/minefacelost_6.o /tmp/emscripten_temp_7l3m8tws/minebomb_7.o /tmp/emscripten_temp_7l3m8tws/minedone_8.o /tmp/emscripten_temp_7l3m8tws/minehitfalse_9.o lib/libmwin.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libSDL2.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libpng.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libz.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libfreetype.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libgl.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libc.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libcompiler_rt.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libc++-noexcept.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libc++abi-noexcept.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libdlmalloc.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libpthread_stub.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libc_rt_wasm.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libsockets.a -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --allow-undefined --import-memory --strip-debug --export-table --export main --export stackSave --export stackRestore --export stackAlloc --export __data_end --export __wasm_call_ctors --export __errno_location --export malloc --export free --export setThrew --export realloc --export testSetjmp --export saveSetjmp --export memalign --export memset --export emscripten_GetProcAddress --export strstr -z stack-size=5242880 --initial-memory=67108864 --no-entry --max-memory=67108864 --global-base=1024' failed (1)
How fix it?
i built only the microwindows part, and now runapp fails because it looks for a nano-X binary
I built dev86 (ELKS's development environment) and elks from github source yesterday and today tried to build nano-x/microwindows with the config.elks settings.
This resulted in compilation errors beginning with:
src/engine/devdraw.c:1124.13: error: duplicate case in switch
This code is switching several constants that have different hex values but are identical in the least-significant 16-bits. This appears to be breaking the 16-bit compilation.
Hello!
I'd be great if there were ... the most recent information on that topic I've found is this one https://www.fltk.org/articles.php?L1352 from 2014, despite fltk being advertised prominently on the README.md of this repository .. are the instructions given there still valid?
Thanks for info and/or adding a few words on the topic!
Mathias
Hi all,
I have a custom keypad served with uinput (or now with libevdev) in linux-arm host. This keypad is not hooked to any tty, but it creates just /dev/input/eventX device. I checked the repo and kbd_event.c is now deprecated. My question is what is the recommended solution to my setup? Should I bring back kbd_event.c into the compilation or there is another way the event device can be somehow redirected to tty and then standard kbd_tty.c driver could be used?
I dont use X11.
Thank you for you suggestions,
Michael
http://www.microwindows.org/ points to pages such as http://htmlpreview.github.io/?https://github.com/ghaerr/microwindows/blob/master/doc/faq2.html, but the real thing has moved to http://htmlpreview.github.io/?https://github.com/ghaerr/microwindows/blob/master/doc/html/faq2.html. Same for the http://htmlpreview.github.io/?https://github.com/ghaerr/microwindows/blob/master/doc/NXlib%20programming%20and%20reference%20manual.html link.
Hello :)
I am having troubles to get nanox + allegro running on android. Allegro and its examples work fi
ne, but when starting an nanox demo application, it seems to run but the screen keeps black.
Here is the config I used to build nano-X.a:
config_android_arm.txt
Here is a part of the android logcat:
LogCat.txt
Thanks in advanced, and thank you for this project :)
I've compiled microwindows for Centos 8, with all standard libraries.
I've selected NANO-X to be compiled as well as the other libraries.
I set LINK_APP_INTO_SERVER = Y
Compiles fine, but on running any demo I see the window open briefly and then the message
Floating point exception (core dumped).
If I set LINK_APP_INTO_SERVER = N
the compile completes, but I get
nxclient: bad readblock -1, errno 104
nxclient 15577: Corrupted packet
when I use runapp, eg
./runapp demo-nuklear-demo
Currently 5 display servers: Xorg; Xenocara; Arcan; Nano-X; Wayland, which can be used on Unix-like, Xorg is being deprecated, only a few devs and Oracle maintain it, Wayland invents the wheel and has a lot of design problems.
https://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-in-c.html
https://way-cooler.org/blog/2020/01/09/way-cooler-post-mortem.html
https://www.reddit.com/r/linux/comments/wwsiaf/writing_a_wayland_compositor_is_much_harder_than/
Nano-X has a lot of potential, but it lacks a port for *BSDs and new releases, which makes adoption difficult in distro repositories.
Hi,
I was wondering, can the Nano-X server and the client be in different hosts and communicate through the internet? If so, how? Upon reading the documentation, I have not seen any information related to this (may well be because I am a poor reader too).
I'm trying to port a few programs to DOS, which use X11 library, and I found this library. According to the Readme.md
, Nano-X and Microwindows seems to be two names refer to the exact same thing. I was thinking about if this library has functions required by the program, so I looked for X11's header files and I found some at src/nx11/X11-local/X11 and I couldn't find Xrender.h
which is needed by the program. After a while, I found this website. It says:
It says Nano-X and Microwindows are two different things. I looked around on the website, and I found this file names djgppn.zip
. This is a djgpp installation and in djgpp/include/X11
there are much more X11 header files.
So here are my questions:
Thank you!
Hey all, another thread for a new topic. So I'm planning around with the innards of nanowm and have noticed that while trying to theme it similarly to Win16, it mis-calc's the size of the client's borders, causing the client area overflows by 1px.
I'm sure I am doing something, but I'm curious what it would be.
I will post more in a bit, as I'm on my phone right now.
Thanks!
I have a strange issue which I can not figure out.
This is the code I have
HDC hDCMem = CreateCompatibleDC(hdc);
HBITMAP bitmap = CreateDIBSection(hDCMem, &bi, DIB_RGB_COLORS, (VOID**)&lpBitmapBits, NULL, 0);
HGDIOBJ oldbmp = SelectObject(hDCMem, bitmap);
BitBlt(hDCMem, 0, 0, width, height, hdc, 0, 0, SRCCOPY);
`
and this is result of hDCMem
Obviously some cliping happening somewhere.
and hdc came from BeginPaint and WMPaint event.
Can you point me to how this happens? What variables should I look at?
Anyway it seems mostly ok, what is not ok, I guess is, the 0,0 of the resultant bitblt. I think what I want is that window get drawn from 0,0.
But funny thing is if I change
BitBlt(hDCMem, 0, 0, width, height, hdc, 0, 0, SRCCOPY);
to for example
BitBlt(hDCMem, 0, 0, width, height, hdc, 80, 80, SRCCOPY);
you get this
You would think that picture would shift to 0,0 but no!
I am kind of going crazy over this :D
Searching the mailing list, changelog, and google give indications that gtk 1.2 is/was working with nano-x.
I could not find any actual instructions, like you made for fltk. :-(
I have gtk compiled against NX11 and nano-x from this git page for armv7.
Tried a number of gtk programs with similar issue.
Any movement of a gtk scrollbar, or hitting enter in a multi line text widget freezes the gtk app. The nano-x window is stll movable, but have to kill the gtk app from a terminal.
Most other widgets seem to work fine.
Compiling same gtk stack against X11 works as expected.
Are there instructions for configuring gtk 1.2 to work properly with nano-X ?
My nano-x config is :
ARCH = LINUX-NATIVE
SHAREDLIBS = Y
SHAREDLINK = N
DEBUG = N
OPTIMIZE = Y
VERBOSE = Y
THREADSAFE = Y
PARALLEL = N
SCREEN = FB
MOUSE = DEVMICEMOUSE
KEYBOARD = SCANKBD
SCREEN_WIDTH = 1024
SCREEN_HEIGHT = 768
MICROWIN = N
NANOX = Y
NUKLEARUI = Y
NX11 = Y
ENGINE = Y
TINYWIDGETS = Y
FBEMULATOR = N
MICROWINDEMO = N
MICROWINMULTIAPP = N
NANOXDEMO = Y
HAVE_VNCSERVER_SUPPORT = N
VNCSERVER_PTHREADED = N
LIBVNC = -lvncserver
INCVNC =
LINK_APP_INTO_SERVER = N
NANOWM = Y
HAVE_SHAREDMEM_SUPPORT = Y
HAVE_FILEIO = Y
HAVE_BMP_SUPPORT = Y
HAVE_GIF_SUPPORT = Y
HAVE_PNM_SUPPORT = Y
HAVE_XPM_SUPPORT = Y
HAVE_JPEG_SUPPORT = Y
INCJPEG =
LIBJPEG = -ljpeg
HAVE_PNG_SUPPORT = Y
INCPNG =
LIBPNG = -lpng
INCZ =
LIBZ = -lz
HAVE_TIFF_SUPPORT = N
INCTIFF =
LIBTIFF = -ltiff
HAVE_PCF_SUPPORT = Y
HAVE_PCFGZ_SUPPORT = Y
PCF_FONT_DIR = "fonts/pcf"
HAVE_FREETYPE_2_SUPPORT = Y
HAVE_HARFBUZZ_SUPPORT = N
INCFT2LIB = /usr/include
LIBFT2LIB = -lfreetype
FREETYPE_FONT_DIR = "fonts/truetype"
HAVE_T1LIB_SUPPORT = N
T1LIB_FONT_DIR = "fonts/type1"
INCT1LIB =
LIBT1LIB = -lt1
HAVE_FNT_SUPPORT = Y
HAVE_FNTGZ_SUPPORT = Y
FNT_FONT_DIR = "fonts/fnt"
ERASEMOVE = Y
UPDATEREGIONS = Y
NOFONTS = N
NOCLIPPING = N
USE_EXPOSURE = Y
VTSWITCH = Y
FBREVERSE = N
GRAYPALETTE = N
HAVETEXTMODE = Y
SCREEN_PIXTYPE = MWPF_TRUECOLORARGB
SCREEN_DEPTH = 8
gtk 1.2.10 was configured as : ./configure --disable-nls --disable-glibtest
Tried 2 different tarballs for gtk 1.2.10, same outcome.
Since the purpose of this project was to be a small and stable window system, I thought this would go great with the ideals of sel4. In attempt to porting this project to the sel4 microkernel I am getting an error compiling however, when i compile for linux I get no such error.
`[1/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip2.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winclip2.c:7:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winclip2.c:7:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)
../projects/microwindows/src/mwin/winclip2.c: In function ‘MwSetClipWindow’:
../projects/microwindows/src/mwin/winclip2.c:73:3: warning: implicit declaration of function ‘GdSetClipRegion’; did you mean ‘MwSetClipWindow’? [-Wimplicit-function-declaration]
GdSetClipRegion(hdc->psd, NULL);
^~~~~~~~~~~~~~~
MwSetClipWindow
../projects/microwindows/src/mwin/winclip2.c:80:8: warning: implicit declaration of function ‘GdAllocRectRegion’ [-Wimplicit-function-declaration]
vis = GdAllocRectRegion(x, y, x+width, y+height);
^~~~~~~~~~~~~~~~~
../projects/microwindows/src/mwin/winclip2.c:80:6: warning: assignment to ‘MWCLIPREGION *’ {aka ‘struct *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
vis = GdAllocRectRegion(x, y, x+width, y+height);
^
../projects/microwindows/src/mwin/winclip2.c:85:6: warning: implicit declaration of function ‘GdAllocRegion’ [-Wimplicit-function-declaration]
r = GdAllocRegion();
^~~~~~~~~~~~~
../projects/microwindows/src/mwin/winclip2.c:85:4: warning: assignment to ‘MWCLIPREGION *’ {aka ‘struct ’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
r = GdAllocRegion();
^
../projects/microwindows/src/mwin/winclip2.c:114:4: warning: implicit declaration of function ‘GdSetRectRegionIndirect’; did you mean ‘CreateRectRgnIndirect’? [-Wimplicit-function-declaration]
GdSetRectRegionIndirect(r, &sibwp->winrect);
^~~~~~~~~~~~~~~~~~~~~~~
CreateRectRgnIndirect
../projects/microwindows/src/mwin/winclip2.c:115:4: warning: implicit declaration of function ‘GdSubtractRegion’; did you mean ‘SubtractRect’? [-Wimplicit-function-declaration]
GdSubtractRegion(vis, vis, r);
^~~~~~~~~~~~~~~~
SubtractRect
../projects/microwindows/src/mwin/winclip2.c:146:3: warning: implicit declaration of function ‘GdIntersectRegion’; did you mean ‘IntersectRect’? [-Wimplicit-function-declaration]
GdIntersectRegion(vis, vis, wp->update);
^~~~~~~~~~~~~~~~~
IntersectRect
../projects/microwindows/src/mwin/winclip2.c:161:2: warning: implicit declaration of function ‘GdDestroyRegion’; did you mean ‘MwDestroyWindow’? [-Wimplicit-function-declaration]
GdDestroyRegion(r);
^~~~~~~~~~~~~~~
MwDestroyWindow
[3/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winclip2.c:7,
from ../projects/microwindows/src/mwin/winclip.c:4:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void)0)
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winclip2.c:7,
from ../projects/microwindows/src/mwin/winclip.c:4:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)
[4/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winevent.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winevent.c:13:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winevent.c:13:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)
[5/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/windefw.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/windefw.c:10:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/windefw.c:10:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)
[6/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winexpos.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winexpos.c:11:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winexpos.c:11:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)
[7/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winfont.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winfont.c:8:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winfont.c:8:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)
[8/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip1.c.obj
FAILED: projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip1.c.obj
/usr/bin/ccache /usr/bin/gcc --sysroot=/host/build -I../projects/microwindows/src/include -I../projects/microwindows/src/mwin/../include -Iprojects/musllibc/build-temp/stage/include -m64 -march=nehalem -D__KERNEL_64__ -g -nostdinc -fno-pic -fno-pie -fno-stack-protector -fno-asynchronous-unwind-tables -ftls-model=local-exec -mtls-direct-seg-refs -std=gnu11 -MD -MT projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip1.c.obj -MF projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip1.c.obj.d -o projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip1.c.obj -c ../projects/microwindows/src/mwin/winclip1.c
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winclip1.c:5:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winclip1.c:5:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)
../projects/microwindows/src/mwin/winclip1.c: In function ‘MwSetClipWindow’:
../projects/microwindows/src/mwin/winclip1.c:37:23: error: ‘MAX_CLIPRECTS’ undeclared (first use in this function); did you mean ‘MWCLIPRECT’?
MWCLIPRECT cliprects[MAX_CLIPRECTS]; /* clip rectangles /
^~~~~~~~~~~~~
MWCLIPRECT
../projects/microwindows/src/mwin/winclip1.c:37:23: note: each undeclared identifier is reported only once for each function it appears in
../projects/microwindows/src/mwin/winclip1.c:89:3: warning: implicit declaration of function ‘GdSetClipRects’; did you mean ‘MwSplitClipRect’? [-Wimplicit-function-declaration]
GdSetClipRects(hdc->psd, 1, cliprects);
^~~~~~~~~~~~~~
MwSplitClipRect
../projects/microwindows/src/mwin/winclip1.c: In function ‘MwExcludeClipRect’:
../projects/microwindows/src/mwin/winclip1.c:176:18: error: ‘MAX_CLIPRECTS’ undeclared (first use in this function); did you mean ‘MWCLIPRECT’?
if (newcount > MAX_CLIPRECTS - 3) {
^~~~~~~~~~~~~
MWCLIPRECT
[10/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winmain2.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winmain2.c:7:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void)0)
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winmain2.c:7:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)
[13/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winres.c.obj
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winres.c:15:
../projects/microwindows/src/mwin/winres.c: In function ‘mwResCompare’:
../projects/microwindows/src/include/windef.h:175:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
^
../projects/microwindows/src/mwin/winres.c:67:7: note: in expansion of macro ‘HIWORD’
if ((HIWORD(res1) == 0xFFFF) || (HIWORD(res2) == 0xFFFF)) // OK: Not pointer. Checks high word of resource DWORD.
^~~~~~
../projects/microwindows/src/include/windef.h:175:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
^
../projects/microwindows/src/mwin/winres.c:67:35: note: in expansion of macro ‘HIWORD’
if ((HIWORD(res1) == 0xFFFF) || (HIWORD(res2) == 0xFFFF)) // OK: Not pointer. Checks high word of resource DWORD.
^~~~~~
../projects/microwindows/src/mwin/winres.c: In function ‘mwIsSameType’:
../projects/microwindows/src/include/windef.h:175:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
^
../projects/microwindows/src/mwin/winres.c:261:6: note: in expansion of macro ‘HIWORD’
if (HIWORD(id) == 0xFFFF) {
^~~~~~
../projects/microwindows/src/mwin/winres.c:268:19: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
if (w == LOWORD((DWORD) id))
^
../projects/microwindows/src/include/windef.h:174:37: note: in definition of macro ‘LOWORD’
#define LOWORD(l) ((WORD)(l))
^
../projects/microwindows/src/mwin/winres.c: In function ‘resDialogTemplate’:
../projects/microwindows/src/mwin/winres.c:541:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
*extra++ = (WORD)menu; // OK: No string menus yet, menu id always passed as WORD.
^
../projects/microwindows/src/mwin/winres.c:542:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
extra++ = (WORD)classname; // OK: No string classes yet, class id always passed as WORD.
^
[15/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/wingdi.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/wingdi.c:7:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void)0)
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/wingdi.c:7:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)
../projects/microwindows/src/mwin/wingdi.c: In function ‘FillRect’:
../projects/microwindows/src/mwin/wingdi.c:787:24: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
crFill = GetSysColor((int)obr-1); // OK: Not pointer. Convert to int then decrement.`
Also to note, sel4 is based on the cmake build system
Any thoughts on cosmopolitan libc and microwindows?
A bit of a stretch?
The driver name is miss-spelled.
diff --git a/src/drivers/Objects.rules b/src/drivers/Objects.rules
index 14de022..31e777b 100644
--- a/src/drivers/Objects.rules
+++ b/src/drivers/Objects.rules
@@ -152,7 +152,7 @@ endif
# Linux /dev/input/mice driver
ifeq ($(MOUSE), DEVMICEMOUSE)
-MW_CORE_OBJS += $(MW_DIR_OBJ)/drivers/mou_micedev.o
+MW_CORE_OBJS += $(MW_DIR_OBJ)/drivers/mou_devmice.o
endif
# Tslib touchscreen driver
osdep.c file is not referenced in src\contrib\makefiles_nr\Makefile-drivers.
Does it is intended?
It looks like the emscripten build might have some issues on Macos X 10.15.2. I'm using the latest emsdk and running the 'make-emscripten' build. Mostly seems to work except I get errors about:
....../microwindows/src/nanox/srvnonet.c:11:10: fatal error: 'emscripten.h' file not found
and also missing ft2build.h
It does build to completion, but the resultant 'binary' doesnt run.
I did notice that I had to use
emsdk install latest-fastcomp & emsdk activate latest-fastcomp
as well.
The sources compile fine, however a black screen is displayed when I try and run any of the demo applications compiled.
Hi,
According to your github page nano-X can run on Windows. I have a microcontroller running ubuntu and showing GUI on screen on LCD using nano-X. Now for monitoring purpose in control room we want same screen view on our Window 10 app as well (it is getting data from micrcontroller). We just want send a dynamic data while static gui data should be in Window app. So is there way to compile nano-X on Window 10 with Microsoft using either Microsoft Visual C++ or Cygwin. Do I have to change Makefiles significantly for that or will it work without significant rework ?
I have opened a thread on the Easy board [url]https://easyos.org/forum/index.php?topic=21.0[/url] for nano-x.
keef has built sucessfully, but not yet in a container, we shall see what progresses.
With version 0.91, Microwindows show correctly png images but with the last version (0.94pre) doesn't show the image with correct colors.
After compiled with this config file you can run demo-composite or demo-blit directly on console.
Other thing i'm getting error when i compile with vnc server.
I used:
Hi,
Thanks for your great API. I am using it for a very interesting project, and will soon also contribute back my changes to your code, but meanwhile I was wondering if you have any plans to have Scrolling APIs implemented? like ScrollWindowEx?
Also what is that black lines always appearing at lower right of screen? Is it a known bug or something?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.