Albert,

On Tue, Dec 19, 2023 at 12:23 PM Albert Palacios <optimi...@gmail.com>
wrote:

> Hi,
>
> I have tried to develop a 'modern' looking theme for GNUstep, but I always
> end up 'overwriting' base functions in ridiculous ways and finding
> obstacles that discourage me.
>

This is our fault because our documentation has been woefully out of date
due to issues with autogsdoc (our tool for documentation generation).
 Also, the documentation is kind of in an obscure place, so it's no wonder
you missed it.  For future reference it is here...

https://gnustep.github.io/developers/documentation.html

That documentation is a bit old, but it is better than what you have now.
;) Which is nothing at all.


> Especially because I think that when changes are made to the original
> code, the theme will fail.
>

Overriding or category-smashing the code is the absolute worst way.   We
have created a class called GSTheme to which all GUI objects delegate their
drawing functions.   This class can be loaded at runtime so as to allow the
GUI to assume a different theme.   Since it is done using a bundle and the
way it is done is by delegating to the GSTheme class it doesn't break the
existing code.


> The themes only work if they are pixel-based and do not change the spacing
> or positioning of the elements, meaning you have a 90s application with
> condensed elements and background textures, whereas now the trend is
> towards spaced elements, flat colors, rounded contours, and transparencies
> (yes, I know that for transparency you need a suitable compositor...).
>
>
Not true.  The Windows theme and native GTK theme are both code-based which
use the native widgets of the OS.  As are several other themes that are
available.  They are not restricted to just pixel-based themes.

Additionally, Mr. Cardoza, who wrote earlier in this list.  Thought as you
do about the theming stuff and I helped him with understanding what could
be done by pointing him to the code.  He contributed code to handle the
menu padding (PRECISELY THE ISSUE YOU POINTED OUT) to GSTheme about two
months ago.


> For example, I have never managed to add more 'padding' to the menus. The
> photo of Agora Desktop a bit further up is completely unrealistic with the
> current GNUStep code. The only way to change the menu items padding
> is overwriting the original functions:
>
> #import "GV+NSMenuItemCell.h"
> #import "GVTheme.h"
>
> @interface NSMenuItemCell (GVThemePrivate)
> - (NSSize)_sizeKeyEquivalentText:(NSString *)text;
> - (NSString *)_keyEquivalentString;
> @end
>
> @implementation NSMenuItemCell (GVTheme)
>
> - (void) calcSize
> {  // … original code ...
>   // Change width
>   _titleWidth = _titleWidth + 50;
>
>   // TODO How to change height ???
> }
>
> @end
>
>
This is an example of what I mentioned earlier (category smashing).  You
don't need to do this.   You should be able to find what you need in the
GSTheme class.


> You can look at the code I've worked with here, although it's probably
> completely wrong due to lack of documentation.
>
> https://github.com/optimisme/GNUStep-Theme
>
> This is not an attack, I really would like to contribute, at least to
> modernize the appearance of GNUStep and/or improve the website (which is
> another huge disaster).
>

Nor it is being taken as one.  Just don't interpret frank responses as any
sort of an attack on you.  None is meant.   I agree that the website needs
some updating.

But seeing your attitude, the main developers, who always vehemently defend
> your opinions, I think it's not really worth it.
>

See.... this is the kind of thing I hate.  Someone comes with a stupid
suggestion like

1) It's ugly
2) Use GTK
3) Abandon all of your work and just re-write it...
4) You guys suck

... and when we give them sane feedback it is seen as "vehemently defend
your opinions" when all we are trying to do is give friendly feedback and
guidance to people who are not doing things properly.   Again, that is our
fault, since we don't document things well.

If you *actually* engage the community by reporting bugs or even by
submitting code you will find that we are a very welcoming and friendly
group.  Don't take redirection as a rebuke of your opinions.  WE WANT YOUR
FEEDBACK.  What we don't want is feedback that is not useful (e.g. Consider
GTK as GUI) because it tells us NOTHING that is going wrong.

Especially regarding aesthetics, it's enough to follow the history of this
> mailing list to see a constant pattern:
>
> • Someone opines that GNUStep is ugly.
> • Then a series of messages like: GNUStep is super customizable, look at
> these beautiful screenshots...
>

Here is the thing...
* The default look is NOT GOING TO CHANGE... it is what it is.  GSTheme
draws it when no other theme is available.
* GNUstep IS customizable, but it is not well documented... so the reason
you don't see a lot of themes is because as you demonstrated no one knows
how to write them.
* The reason you get the responses you do is because the people in the
project have a much different experience than you do because we know the
project better.   This needs to change.

A few things need to be done:
* The website needs to be improved.
* Documentation needs to be more readily available to users.
* GNUstep needs to make a desktop distribution. (this is something we are
working on)

It would be less ridiculous if you stopped saying that GNUStep is beautiful
> and customizable, because it's not. If it were, there would be more updated
> themes and applications. Maybe even a desktop.
>

It is customizable, as pointed out above.... and on that second thing...
well, you can blame ME personally for that last one I suppose.  It was me
who years ago decided to make GNUstep an API ONLY and NOT as desktop.  This
was so that we could focus on being as cross-platform as possible.
Arguably we have done that.  GNUstep is used by many different projects and
companies (Keysight [ https://eggplant.io ], Algoriddim [
https://algoriddim.com ], etc).

We are only now circling back to the idea that we need to create a
reference distribution so that it will help people understand what GNUstep
is truly capable of.

Look, in the end, the project is yours, and I suppose it has been
> profitable for you. Why argue, it's not worth it.
>

No one is arguing with you.  This is called a discussion which is an
exchange of ideas.  A difference of opinion or correcting you where you are
wrong does not imply an argument.   If you feel as though anything I have
said to you or anyone else has said to you or Bruce is wrong or
confrontational or argumentative I ask that you please point it out.   I
will say the same thing to you that I said REPEATEDLY to Bruce:

SUBMIT BUGS... IF YOU FIND SOMETHING WRONG... SUBMIT BUGS!!!!  TELL US WHAT
WE ARE MESSING UP ON!!!  People will be GLAD to engage with you if you do
this.  Try it, you might learn something. :)

Yours, GC


> Albert
>
>
>
> El 19 des. 2023, a les 16:46, bruce <darkoverlordofd...@gmail.com> va
> escriure:
>
> Riccardo, I can agree with everything you say. I’ve looked at pictures of
> gnustep running on mac and windows, and it looks sleek and modern, and
> native.
>
> My experience on unix like does not track with that. It looks brutalistic.
> Not native - it never fits in the desktop. What I hear from most people
> that have tried it is “the 90’s are calling, they want their desktop back”.
> I see a big disconnect between the way gnustep looks on mac/windows, and
> the way it looks on linux/freebsd.
>
> Yes, these are all aesthetic value judgements. But aesthetics matter - ask
> any mac user. I can see if you’re using a business app, ok. But for other
> users, it is often a non-starter.
>
> My experience has been:
> • Wow this is cool
> • Wow this has got a lot of gui glitches
> • Wow this looks old
> • Wow this is hard to use
> • Install something else
>
> But I like the language. I’ve been coding c for 40 years, and objc is
> awesome. I want to code the version with features like arc. Fortunately,
> the freebsd repo has that version. But the linux repos don’t. That
> complicates targeting any app. And I want people to use my app. But
> computer users see these gui issues, and say the app is buggy. I say it’s
> not my app, it’s the way it presents on your os. So they use another app.
> So much for platform agnostic. So much for marketability.
>
>
>
> On Tue, Dec 19, 2023 at 3:00 PM Riccardo Mottola <
> riccardo.mott...@libero.it> wrote:
> Hi,
>
> bruce wrote:
> > I've tried using libobjc2 with the other runtimes from the linux repo. I
> > couldn't get it to work, but it sounds like other people have under
> > certain circumstances.
>
> Building libobjc2 can be from easy, "just works" to a nightmare,
> depending on a platform.
>
> Best, of course, is if it comes ready for your OS.
>
> > Hm, I'll give that a try,.
> > But to build a product, I want to know that my users can install it
> > without all the monkey business. Otherwise it becomes a support
> nightmare.
>
> GCC almost always "just works" if the operating system provides it. If
> you don't need Obj-C2 features for your app, it is usually a very easy
> path and that's why I love it. Except FreeBSD, where you mention
> working. THhere the situation is complicated, because GCC provided has
> its obj-c runtime removed, supposing you to use libobjc2, which won't
> work. SO I abandoned that path, but compiled libobjc2 from sources.
>
> Riccardo
>
>
> --
>
> Bruce Davidson
>
>
>

-- 
Gregory Casamento
GNUstep Lead Developer / OLC, Principal Consultant
http://www.gnustep.org - http://heronsperch.blogspot.com
https://www.patreon.com/bePatron?u=352392 - Become a Patron
https://www.openhub.net/languages/objective_c - OpenHub standings

[image: Mailtrack]
<https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality11&;>
Sender
notified by
Mailtrack
<https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality11&;>
12/19/23,
03:38:45 PM

Reply via email to