Puppy Linux Discussion Forum Forum Index Puppy Linux Discussion Forum
Puppy HOME page : puppylinux.com
"THE" alternative forum : puppylinux.info
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

The time now is Mon 16 Jul 2018, 05:05
All times are UTC - 4
 Forum index » Taking the Puppy out for a walk » Suggestions
IceWM - Alternative idea concept.
Moderators: Flash, Ian, JohnMurga
Post new topic   Reply to topic View previous topic :: View next topic
Page 1 of 1 [7 Posts]  
Author Message

Joined: 07 Mar 2015
Posts: 156

PostPosted: Fri 05 Jan 2018, 15:04    Post subject:  IceWM - Alternative idea concept.  

IceWM - Alternative idea concept.

This is about collecting different ideas on IceWM window manager,
and how to integrate it more closely with PuppyLinuxOS.

Official development of IceWM appears to be stopped at version 1.3.8.. or so.
There is unofficial but maintained fork developed at github
with the latest ( for time of post.. ) version IceWM-BRANCH-1.4.2

I would suggest IceWM-BRANCH- for testing.
It has a lot of bugfixes applied and I have not noticed any
runtime problems with it.
1.4.2 version from git (bbidulock/icewm) builds only with cmake on my system.
While the source looks a lot cleaner than the usual - where it comes to pixmap
related code etc., it appears to have some new and not resolved bugs.

Alternative idea concept - Why?

To provide a version of IceWM that is easy to build for / install on PuppyLinuxOS.
Also to rework some design mistakes, that are kept in mainstream for "legacy theme support".
And to remove overlapping, hidden and/or obsolete features.

Maybe to integrate it with ROX filemanager ( desktop ) and Gtkdialog4 ( settings, dialogs.. )
more deeply, as those come preinstalled with most Puppy versions.
( I would not worry about Puppy versions that use XFCE/Thunar etc. )

Why IceWM ? It has most needed ( and some unneeded ) details already onboard and figured out.
It should be less work to fine-tune it, than start anew with some obsolete wm or to
start picking out the pieces of de and struggle with dependencies.

The difference.

It should be smaller, more simple and solid, starting with the source.
More work for the theme designer and less for the user, to get things going and look right.
Easy to use and update.

In other words, something of a "sport" version, with balanced speed, weight and look.
Not the "light" version that, almost works, while without the features one would be
interested in..

..how ?

For now it would be a place where anyone can make the suggestions.
If You feel like maintaining the project and/or moving it to github etc. please,
do say so. The way I see it, there is a lot of puzzles to resolve first.
Back to top
View user's profile Send private message 

Joined: 07 Mar 2015
Posts: 156

PostPosted: Fri 05 Jan 2018, 15:06    Post subject:  

Some questions, that have crossed my mind..

Are cursors, icewmbg, icesound, icehelp any good, or just overlapping the features
that come preinstalled with Puppy?
Could iceview, wmabout and wmdialog be replaced with Gtkdialog4 ?
"core" fonts, these days?
Is there a real use for icesh?
Is session management ( icesm, ysmapp, wmsession.. ) any use with Puppy?

Problematic compiletime dependency is the translation method. Maybe it could be
managed with MoManager in Puppy, and moved out of the way?

Keep support for *BSD etc. ?
How to simplify compile and reduce the number of options?

Version does not have simple xdg-menu..
What features the "default menu" should support?
There are more ways to provide the menu for IceWM:
( about IceWM menu )
Back to top
View user's profile Send private message 

Joined: 07 Mar 2015
Posts: 156

PostPosted: Fri 05 Jan 2018, 15:09    Post subject:  

Most "unfinished" feature of IceWM is the built-in panel.
Instead of hide/remove.. maybe it could be made more acceptable?
Maybe it was written with very low display resolution in mind..
and, could use more than a pixel to tell the difference for active/inactive
taskbar buttons, or something different than hardcoded 20 pixel items.

Old lxp-icewm 1.2.30 used to have somewhat better take on the panel.
Then, not all of the methods ( and dependencies ) were that good.
TaskButtonSeparatorSize theme option looks usable.
All it does, is leave some space between taskbar buttons.
See example in next posts below..


Drawing of the taskbuttons is a bit more complex.
That would be also one of the few details that needs
writing some new sourcecode.

In general, the method to replace the "10 eq. broken ways" would be something similar
to how the window titlebar is constructed.
taskbuttonAL.xpm taskbuttonAT.xpm taskbuttonAR.xpm, as Active: Left/Title/Right.
taskbuttonAT could be tiled or stretched ( gradient ) .
Same for Inactive and Minimized.

It should be easy to mimic any IceWM ( or other ) theme with this method,
including complex designs, and without the strange 28x600 pixel pixmap workaround.
I don't think there's any good point to hold on to old theme drawing methods,
or to provide more than one look=* .

PS. Is it worth to keep the fallback colors ( missing or bad *.xpm case )
or just fallback to error-grid.xpm ?
 Description   3 pixmaps for taskbutton, TaskButtonSeparatorSize=3, PanelDetailSize=26
 Filesize   29.85 KB
 Viewed   351 Time(s)


Last edited by torm on Mon 22 Jan 2018, 22:03; edited 1 time in total
Back to top
View user's profile Send private message 

Joined: 07 Mar 2015
Posts: 156

PostPosted: Fri 05 Jan 2018, 15:10    Post subject:  

Size of toolbar icons ( width, height ) , clock area( height ) , CPU/RAM/.. meters( height )
By default are hardcoded to 20 pix. Toolbar icons default to SmallIconSize.
Should be set by theme, or fallback to old 20.
For now I already use LargeIconSize for these, as testing.
If there's no better use than "QuickSwitch" for LargeIconSize, it could be
replaced by PanelDetailSize.
Don't know about QuickSwitch widget, anyone uses it? Rolling Eyes
..or the AddressBar?

If possible..

Systray. Should blend in with the rest of the panel.. somehow. Single bg color, how?

CPU and RAM meters could use a separate bg pixmap. To stand out better.
There is something strange about the use of gradient/tile..

Clock. Should use "PanelDetailSize=*" for height as noted above or fallback to old 20.
And ColorNormalTaskBarTextShadow=*
No "ledclock"

What is the actual use for hide-panel button?

Workspace-buttons could use a small "bevel", like 2-3 pixels ..to not look lxpanel-ish

Mailbox status. Maybe it could be optional/external package ?
- support/display of retrovol or freememapplet_tray state
would somehow make more sense.. as those widgets have more regular features.
Well, users with couple of 4TB HDD may find it different.. Confused

That is just my personal view, without going into too deep detail.
There will be, most likely, more changes than stated in the first posts.
Feel free to post any ideas and suggestions.
Back to top
View user's profile Send private message 

Joined: 07 Mar 2015
Posts: 156

PostPosted: Tue 09 Jan 2018, 08:38    Post subject:  

Small steps. Only as experiment.

LargeIconSize vs. PanelDetailSize

In the long run, it would be better to use "PanelDetailSize" - to avoid conflicting
settings ( from legacy theme or preferences file.. ) . For now I will use LargeIconSize
as example, as it allows fast changes without re-write of yicon.cc and yicon.h files.

As base, there will be source of noted in the first post.
Also I will use reference to Geany line numbers ( View -> Show Line Numbers ) so that
anyone who, in general, knows how to configure and compile the source, could experiment with it.

Only matters for panel toolbar "quiklaunch" icons, I think.. ( I could be wrong here.. ) ,
to use icon *Size stated in yicon.cc .
These default to SmallIconSize that is also used for window titlebar and panel taskbar.
For low-resolution display, it would look better SmallIconSize=16 ( default size of most
built-in apps that use *.xpm icons ) for titlebar and taskbar, and ( with panel height
aroung 35 pixels ) to use LargeIconSize=26 for toolbar icons.

Well, to the point..
in objbar.cc line 47 change:
button->setIcon(icon, YIcon::smallSize());
button->setIcon(icon, YIcon::largeSize());
And that should just about do it for toolbar icons.
Note. Remember to change LargeIconSize ( ..if set ) of theme to suitable size, once recompiled.
I used "look=flat" for testing, while some of 9 looks may use
a bit different methods to draw the "button" below the icon..

Another use for LargeIconSize could be CPU/RAM -meters and clock area.
These use plain 20 pixel height, as hardcoded value.
For clock it would break the "ledclock" feature.
"ledclock" is known to not work for all locales, and.. I don't see any good use for it.
So, also the methods for "ledclock" and corresponding pixmaps should be removed.. someday.

For CPU, it would be acpustatus.cc line 120 from:
setSize(taskBarCPUSamples, 20);
setSize(taskBarCPUSamples, largeIconSize);

For RAM, amemstatus.cc line 55, from:
setSize(taskBarMEMSamples, 20);
setSize(taskBarMEMSamples, largeIconSize);

For clock, aclock.cc line 108, from:
setSize(maxWidth, 20);
setSize(maxWidth, largeIconSize);

CPU/RAM -meters and clock can use..

extern ref<YPixmap> taskbackPixmap;

..for "free" and background area of widgets.
Works fine for the clock.
I think, CPU/RAM -meters could use a bevel along with taskbackPixmap, or a separate pixmap
with line-grid etc. provided by theme. Most likely something, that needs to be added to
wmtaskbar.cc as pixmap with path and drawing method.. ?

Note that "width" of CPU-meter and RAM-meter area can have individual value in
preferences, prefoverride and/or theme file. Named as TaskBarCPUSamples and TaskBarMEMSamples
respectively. Width of clock area depends on used format and font ( -size/dpi ) , while
it could be influenced by using whitespaces around the format:
TimeFormat=" %H:%M "
..in same preferences or theme file.
Maybe it would be better to leave the width, height and the background pixmap
of the widgets and icons for the theme to resolve, and only clock format in preferences?
Or clock format in settings of pop-up calendar?
Could get away with less checkboxes/buttons in settings UI.. "Show CPU-usage" y/n etc.

Bye-bye now Wink
Back to top
View user's profile Send private message 

Joined: 07 Mar 2015
Posts: 156

PostPosted: Mon 22 Jan 2018, 22:02    Post subject:  

moved here..


Found in lxp-icewm 1.2.30
Should not break anything and should work also with "vanilla" IceWM.
Those who are not interested, may even not notice it - as it defaults to "zero".
From my point of view, it makes a difference for look=flat

file themable.h and two new lines ( marked with plus sign )
with next line used as reference location.
Note. Plus signs ( here and there ) are just to tell the difference, don't use
them in actual code..


+XIV(int, taskButtonSepSize,                     0)
XIV(int, wsBorderX,                             6)

+    OIV("TaskButtonSeparatorSize",              &taskButtonSepSize, 0, 64,      "Distance between task buttons (default 0)"),
    OIV("BorderSizeX",                          &wsBorderX, 0, 128,             "Horizontal window border"),

.. this should add the option and lines in "preferences" file.
Like this:
# Distance between task buttons (default 0)
TaskButtonSeparatorSize=0 # [0-64]


file atasks.cc and function TaskPane::relayoutNow()
starting around line 436..


void TaskPane::relayoutNow() {
    if (!fNeedRelayout)
        return ;

    fNeedRelayout = false;

    int x, y, w, h;
    int tc = 0;

    TaskBarApp *a = fFirst;

    while (a) {
        if (a->getShown())
        a = a->getNext();
    if (tc < taskBarButtonWidthDivisor) tc = taskBarButtonWidthDivisor;

    int leftX = 0;
    int rightX = width();

    w = (rightX - leftX - 2) / tc;
+   w -= taskButtonSepSize;
    int rem = (rightX - leftX - 2) % tc;
    x = leftX;
    h = height();
    y = 0;

    TaskBarApp *f = fFirst;
    int lc = 0;

    while (f) {
        if (f->getShown()) {
            int w1 = w;

            if (lc < rem)

            f->setGeometry(YRect(x, y, w1, h));
            x += w1;
-           x += 0;
+           x += taskButtonSepSize;
        } else
        f = f->getNext();

by adding: w -= taskButtonSepSize;
and change: x += 0; to: x += taskButtonSepSize;

In general, another theme-related option. Should allow to create a clean look
with a very simple method.
In other words, to tell a difference for the same state taskbuttons.
While it is a working example, I'm not clear if should stay that way or be
replaced by some new method of taskbutton drawing.. in the long run.

Any ideas?

.. at all?
Rolling Eyes

I get the impression it only gets hits from G****e search.. Confused
Back to top
View user's profile Send private message 

Joined: 07 Mar 2015
Posts: 156

PostPosted: Wed 31 Jan 2018, 12:31    Post subject:  

Panel. Default items.

Most of windowmanagers/panels come preloaded with everything-and-what-not on the panel.
Unless it is something that one may need to keep an eye on full-time ( CPU.. ), or access
directly from maximized window ( d'n'd from web-browser.. ) , well.. it's hard to understand them.
Note, that not all users know that it's okay to remove the useless ones, or how to do that.
Aside from "Main" menu, IceWM accepts any number of buttons on toolbar. Only to point
out.. any of them can be used for different menus with submenus, etc. just like "Main" menu has.
So, a very simple to use menu-editor for toolbar-menus, plus auto-updated "Main" menu should
just about clean up the left-hand side of the panel..
Integration with ROX d'n'd features can be tricky, but desireable.

Workspace switch.
How to make more out of using different workspaces?
From what I remember from E17, it's pretty useful feature.
There were some attempts made using JWM, as one may find on the forum.
..can it work anything smoother with IceWM ?

System tray.
IceWM appears to accept items placed /root/Startup,
and ignore the *.desktop files in /root/.config/autostart folder.
Maybe some of less "active" switches/indicators can be placed on ROX pinboard instead?
Like - as ROXApp?

Below is an archive with example ROXApp, based on ROXClock.
Does nothing more than changes an icon and the tooltip, when clicked,
no actual command or feature.
The command can be in AppRun script, some pup_event etc.
Depending on complexity it can have more icons or right-click menu-items, if needed.

On my system, it updates the icon faster on the desktop, than in folder.
Description  for test, ROXApp folder

Filename  test_icon_rox.tar.gz 
Filesize  2.08 KB 
Downloaded  66 Time(s) 
Back to top
View user's profile Send private message 
Display posts from previous:   Sort by:   
Page 1 of 1 [7 Posts]  
Post new topic   Reply to topic View previous topic :: View next topic
 Forum index » Taking the Puppy out for a walk » Suggestions
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum

Powered by phpBB © 2001, 2005 phpBB Group
[ Time: 0.0540s ][ Queries: 15 (0.0060s) ][ GZIP on ]