> the themes in linux control everything about the widgets, that means > everything on my desktop looks the same (not in terms of application > design, but buttons, scrollbars, borders, colours of active/inactive > titlebars, shades, translucency, etc). > > if you need a custom look, you either need to build a themeing engine > into lazarus, or write a gtkrc file for your app (the right way, imo). > then you can control everything. if you just need a colour for your > form, doesn't a panel work? (coloured panels work for me in gtk2, at > least).
First of all, Linux is not GTK+. There are other toolkits around, like Qt and FLTK which have their own theming stuff. However X11, the windowing system that is mostly used in Linux and other UNIX environments (which is *NOT* even guarranteed that it will be the one used - i've seen some other UIs which use the framebuffer directly) does not dictate a specific window look or behavior. While GTK+ came to be a well known and widely used toolkit (which is something that can be said about Qt too), it doesn't make it "the way Linux looks like". While you can restrain yourself to not use anything non-GTK, if you open a non-GTK program (like a Qt program, a FLTK program, a Motif/Lesstif program, a Tcl/Tk program, etc) it will not look the same as the rest. This is because there is no universally acceptable theme engine that applies to all toolkits. I'm not going to argue if this is good or bad, but thats the fact. Secondly, even if there was a "Linux theme engine", the same applies to Windows programs. Windows in fact *have* a theme engine and even since Windows 3.0 (i think) you were able to change the current theme to something else. However as i see, the Win32 backend allows you to change colors, while GTK+ does not. While i can accept that doing such a thing in GTK+ is a very low priority (which would imply, however, that GTK+ is not finished and if 1.0 has to have GTK+ 1.2 finished then it has to provide this functionality too), i find the answer of not doing it because the theme engine dictates look as a cheap excuse (because otherwise if you really believe this, then rip off the code that changes colors in Win32 from LCL too - there is a theme engine there much older and widely used than GTK+'s). And third, what you propose here is a platform-specific solution. Lazarus is supposed to be "write once, compile everywhere" not "write once (while praying that your code will work in other interface), compile everywhere (to find bugs and missing features in other interfaces and platforms)". In the very worst case (which is a hack) Lazarus should create the gtkrc file transparently from the user/programmer. Of course i think the best solution for all these problems would be a crossplatform toolkit that sits below LCL and has a constant behavior no matter what the system is. fpGUI seems to be such a kit, but setting Lazarus to compile with this toolkit is failing due to some missing unit. Kostas _______________________________________________ Lazarus mailing list [email protected] http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
