bbidulock / icewm

A window manager designed for speed, usability, and consistency
Other
585 stars 98 forks source link

Window south and east borders are darker, which is bad if borders are narrow #581

Closed qsmodo closed 3 years ago

qsmodo commented 3 years ago

With win95 or Helix themes and this in prefoverride:

BorderSizeX=2
BorderSizeY=2
ColorNormalBorder="blue"
ColorActiveBorder="red"
TitleBarHeight=0

This is how two windows look:

borders

It seems this dark south and east borders effect is present in other elements of Icewm (maybe to give it a 3d/Motif look?), but as the picture shows it harms windows with narrow borders because they are harder to see, thus also harder to determine which window has focus when one does not use title bars.

In my opinion it would be useful to have an option DarkSouthEastBorders which one could set to 0 to make the border 100% monochromatic.

gijsbers commented 3 years ago

It's not a good idea to add more options for non-pixmap themes, because they are antique. What could be considered is a patch like this:

diff --git a/src/ypaint.cc b/src/ypaint.cc
index d783100a..24d44852 100644
--- a/src/ypaint.cc
+++ b/src/ypaint.cc
@@ -731,7 +731,7 @@ void Graphics::drawBorderW(int x, int y, unsigned wid, unsigned hei, bool raised
         setColor(bright);
         drawLine(x, y, x + w - 1, y);
         drawLine(x, y, x, y + h - 1);
-        setColor(YColor::black);
+        setColor(dark.darker()); // YColor::black);
         drawLine(x, y + h, x + w, y + h);
         drawLine(x + w, y, x + w, y + h);
         setColor(dark);
@@ -741,7 +741,7 @@ void Graphics::drawBorderW(int x, int y, unsigned wid, unsigned hei, bool raised
         setColor(bright);
         drawLine(x + 1, y + h, x + w, y + h);
         drawLine(x + w, y + 1, x + w, y + h);
-        setColor(YColor::black);
+        setColor(dark.darker()); // YColor::black);
         drawLine(x, y, x + w, y);
         drawLine(x, y, x, y + h);
         setColor(dark);

But you need to evaluate this for as many classic themes as possible and also for scrollbars.

qsmodo commented 3 years ago

Thank you for the patch, Gijsbers. What about pixmap themes? To be honest I use a custom theme, so I guess I could just adapt it to Look=pixmap.

With "classic themes" do you mean the ones packaged with Icewm?

gijsbers commented 3 years ago
qsmodo commented 3 years ago

I tried the patch but the borders still look the same :/

gijsbers commented 3 years ago

I tested this patch and it definitely changes the border as intended. I compile it and then start it like this from the source directory: ./icewm -d :1 -c /tmp/c -t win95 where /tmp/c contains your settings.

gijsbers commented 3 years ago

red shows the top right corner.

qsmodo commented 3 years ago

Thank you, but as the picture shows the right corner is still dark, although admittedly a little less dark then before (which I did not notice when testing). Clearly that is not a 100% #FF0000 monochromatic border.

gijsbers commented 3 years ago

A new option for old looks is to be avoided. The old code always draws a black line. The patch draws a darkened color, which seems more logical. In this case the color becomes #710000. The advantage of the old looks is that they use little memory and are fast, but if you have just a 2 line border, then a pixmap is fast too.