# Athena Widgets/Xaw implementations



## sidetone (Aug 4, 2021)

Athena Widgets (Xaw) uses Xt (X toolkit Intrinsics) to interface XCB and Xlib. Xaw is part of Project Athena which has a larger scope beyond graphical widgets. Project Athena was started by MIT, with support from IBM and Digital Equipment Corp.

x11-toolkits/neXtaw, x11-toolkits/Xaw3d and x11-toolkits/libxaw3dxft are implementations of Xaw (x11-toolkits/libXaw). Xaw3dxft is an extended version for Unicode fonts of Xaw3d. Most Xaw (Athena Widgets) applications are compatible with these implementations. Some programs that use these implementations also use the main Xaw libraries. These four Xaw implementations are under the MIT license.

https://simson.net/clips/1989/1989.TechRev.Athena.pdf
http://web.mit.edu/6.933/www/final.pdf
https://www.x.org/releases/X11R7.7/doc/libXaw/libXaw.html
https://www.informit.com/articles/article.aspx?p=18227
*How to use 3D Xaw implementations*
pkg info -D Xaw3d gives a hint. It states to rename the original Xaw libraries to Xaw2d names. Then, it says to link the targets of Xaw to the library of the implementation. Because the versions weren't listed in the /usr/local/lib/, I improvised based on the versions that were there.

Go to the directory, /usr/local/lib/, then, move libXaw.so.7 to libXaw2d.so.7, and libXaw.so.6 to libXaw2d.so.6. After that, link both libXaw.so.6 and libXaw.so.7 to libXaw3d.so.8.

`cd /usr/local/lib
mv libXaw.so.7 libXaw2d.so.7
mv libXaw.so.6 libXaw2d.so.6
ln -s libXaw3d.so.8 libXaw.so.7
ln -s libXaw3d.so.8 libXaw.so.6`

To use another implementation, replace the target of libXaw3d.so.8 in the link with libXaw3dxft.so.8 or with libneXtaw.so. To remove the link, use `rm libXaw.so.?`, then use another Xaw target. To go back to the original Xaw, link the corresponding library files back to libXaw2d.so.7 and libXaw2d.so.6.

*Screenshots*




The screenshot above shows programs that by default run with Xaw3d.





The screenshot above shows programs that by default are installed with Nextaw and Xaw3dxft.





The above screenshot shows programs after being run with Xaw, then upgraded to working with Xaw3d, Xaw3dxft and Nextaw, there's a major visual difference according to the versions they use. This image is in higher resolution, to make it easier to see comparisons.



Spoiler



To get the last screenshot, I left the programs running, then changed the settings, starting new processes of the programs, for enough to make a screenshot showing a few of the same programs, side by side.

In these, the output with Nextaw looks consistently the best out of these implementations. However, some of these programs can't be restored visually, once they are resized excessively. Also, some programs are difficult to close.



Xaw3d and Xaw3dxft seem to give the same visual appearance. Their main difference is in text fonts.

The above screenshots are on CTWM.


*Comparison to Motif*
Motif also uses Xt to interface with Xlib and XCB.

x11-toolkits/open-motif seems to actually be ICS's (Integrated Computer Solutions, Inc.) Motif, not Open Motif. Open Motif is actually, http://www.opengroup.org/openmotif/, and is licensed under IBM Public License (IPL) 1.0. Motif's license change to LGPL 2.1 came after Lesstif (x11-toolkits/lesstif) was started as a toolkit implementation, in order to pressure ICS to open Motif's license. Lesstif is obsolete now.

Interestingly, x11-toolkits/open-motif uses a Xaw library as a dependency, at least on FreeBSD's ports.


----------



## hruodr (Aug 4, 2021)

I like how my desktop looks like with `twm`.


----------



## mer (Aug 4, 2021)

Old School or for those around at that time "CDE"


----------



## kpedersen (Aug 4, 2021)

Ooh, I am interested in Xfig. I might try it out.

Currently I use Dia but Gtk is basically a dying technology at this point and I am looking to move away from it.

I don't suppose Xfig has anything suited for class diagrams does it? Not a deal breaker however.


----------



## hruodr (Aug 4, 2021)

kpedersen said:


> I don't suppose Xfig has anything suited for class diagrams does it? Not a deal breaker however.


I know it since tens of years. 

It is a nice, lightweight, stable, easy to use program, although limited, not a CAD program.


----------



## eternal_noob (Aug 5, 2021)

kpedersen said:


> Gtk is basically a dying technology


How is that? Did i miss something?


----------



## kpedersen (Aug 5, 2021)

eternal_noob said:


> How is that? Did i miss something?


It seems to be struggling to maintain itself. Building on Windows is flakey and if they can't even manage that, I don't think they will be able to keep up with X11 once they move towards Wayland. They are stretched too thin.


----------



## sidetone (Aug 9, 2021)

Athena variants which aren't in the FreeBSD ports tree, http://www.efalk.org/Widgets/:

Xaw-XPM - this one is supposed to be great visually, but has incompatibilities with other Xaw applications; uses XPM libraries
Xraw - Motif look
Xaw95 - Windows 95 look
XawM (Xaw Modern) http://xawm.sourceforge.net/ - code based on Xaw3d; borrows features from NeXtaw. (last release: 2002)
Xaw+ (Xaw Plus) - based on Xaw; lacks features; lacks portability


----------



## kpedersen (Aug 9, 2021)

sidetone said:


> Athena variants which aren't in the FreeBSD ports tree, http://www.efalk.org/Widgets/:


Nice. I didn't actually know about many of these.



sidetone said:


> XawM (Xaw Modern) http://xawm.sourceforge.net/ - based on Xaw3d; borrows features from NeXtaw (This implementation hasn't had updates since 2013)


I thought this was amusing. From their website _"Xaw with Modern look and feel"_

This is a perfect example of why anyone calling something "modern" looking is absurd. The word modern dates so badly in GUI systems it is quite funny. Normally it simply suggests someone hasn't been really dealing with computers long enough to experience previous design changes and fashions.

It was fun to be reminded by many of these widgets that Motif used to be the absolute pinnacle of UI perfection and everyone was trying to clone it. Now it seems to be that slightly slimy macOS look that everyone has identified as UI perfection.


----------



## sidetone (Aug 9, 2021)

NeXtaw looks acceptable, and compared to Xaw and Xaw3d, it looks great. XawModern was modern enough when it was last updated. less than 10 years ago


----------



## sidetone (Sep 13, 2021)

*NeXtaw appearances*



Appearance of nextaw applications on jwm.

For configuring NeXtaw:

```
cd /usr/local/lib
mv libXaw.so.6 libXaw2d.so.6
mv libXaw.so.7 libXaw2d.so.7
ln -s libneXtaw.so libXaw.so.6
ln -s libneXtaw.so libXaw.so.7
```



hruodr said:


> I like how my desktop looks like with `twm`.


This screenshot shows a few NeXtaw linked applications on TWM.






*Function of Xaw on terminal emulators*
On x11/xterm and japanese/kterm, the xaw implementations adjust scroll bar appearance, when these programs are started with the -sb option. When the cursor is over these terminals, plus those without a scrollbar, it can be scrolled by mouse wheel. Nextaw has the most functional scrollbar.

On xterm, Athena toolkits have another function for toolbar appearance, when this option is compiled in.



From left to right: xaw, xaw3d, xaw3dxft, nextaw.


----------



## sidetone (Mar 10, 2022)

Xaw, Xaw3d and Xaw3dxft have slow release or maintenance cycles of every few years. NeXtaw hasn't had an update in about 20 years.

Xaw and Xaw3d are maintained by X.org. The latest maintenance release of Xaw was in 2021. Xaw3d has been maintained by X.org since 2012, and its latest release was in 2018. Previously, D. J. Hawkey Jr. took maintenance of Xaw3d from its original author, Kaleb Keithley, in 2003. There are Xaw3d implementations of the same name which aren't the official version. Xaw and Xaw3d are at https://gitlab.freedesktop.org/xorg/lib/ (ftp://ftp.x.org/pub/xorg/individual/lib/).

The latest release of Xaw3dxft was in 2020. It is a relevant project forked from Xaw3d. The sources of x11-toolkits/libxaw3dxft are specifically located at https://sourceforge.net/projects/sf-xpaint/files/libxaw3dxft/.

*Components*
libXmu is a library of miscellaneous utilities used by Athena Widgets. Athena Widget implementations and their dependency of libXmu requires libXt (X toolkit intrinsics). libXt is also required by other toolkits. libX11 and libXext are other common dependencies of these Athena toolkits. libXext is a library which contains a combination of legacy and obsolete libraries, which many are still in use. Xpm is a dependency of xaw, xaw3d and xaw3dxft, used for xpm (pixmap) and xbm (bitmap) images. While Xpm is required, it may be meant to be optional.

Xaw and Xaw3d don't have *internationalization support* in the form of Unicode. NeXtaw, which is based on Xaw3d 1.5, has extended fonts, but not through Unicode nor as extensive as this standard. Xaw3dxft has extended fonts through libXft's ability to use Unicode. Other Athena Widget implementations lack libXft, or even seem to not use legacy font libraries of libXfont and libfontenc.

These Athena Widgets lack _accessibility technologies_ such as screen readers or alternative input devices.

viewres(1)





> The viewres program displays a tree showing the widget class hierarchy of the Athena Widget Set.



https://www.x.org/wiki/guide/client-ecosystem/

*Screenshots of Athena Widget applications which don't have buttons*





x11/xmascot, x11/xballoon


----------



## sidetone (May 16, 2022)

made with graphics/dia is based on:




Xaw3dXft (x11-toolkits/libxaw3dxft) dependencies:





Xt (X Toolkit Intrinsics; x11-toolkits/libXt) dependencies:


----------



## hunter0one (Sep 25, 2022)

Just followed your guide here for Xaw3D as the description instructions no longer apply. With today's status quo, I'm in love with these old and crusty toolkits.


----------



## sidetone (Sep 25, 2022)

hunter0one said:


> Just followed your guide here for Xaw3D as the description instructions no longer apply.


I thought something in the ports configuration broke that applies which affected those manual instructions and of changing settings. What you said could be another explanation for what I noticed that was different.

In my opinion, x11-toolkits/libxaw3dxft is the way to go, even if it's not (yet) sponsored at Xorg. The port for x11-toolkits/xaw3d isn't up to date as the description, download location, contacts, Readme files and name are old, and it changed hands upstream since then. Updating that port also to take the now upstream name of _libxaw3d_ required testing for all of the ports which depended on it. libxaw3d is actually maintained on Xorg and its mirrors, unlike the obsolete version that's in FreeBSD ports. In my opinion, it's better to migrate away from libxaw and libxaw3d (xaw3d), and adapt Xaw programs to libxaw3dxft.

In the images, the newer implementation of libxaw3d looks like the images from libxaw3dxft. Also, libxaw3dxft is the only one of the ones still updated which has Internationalization support which is a must by a communities and the programming world which demand it. The description points to the correct website, but doesn't point to the correct page which shows programs which have patches for, as that one makes more sense for the home directory.


libxaw3dxft points to http://sf-xpaint.sourceforge.net/, but https://sourceforge.net/projects/sf-xpaint/files/ shows the description and file directory of libxaw3dxft, applications and patches rather than just xpaint. This location makes more sense of what patches and programs are tailored for this version. I meant to get this web directory updated for the homepage of it in ports.


----------



## hunter0one (Sep 25, 2022)

sidetone said:


> In my opinion, it's better to migrate away from libxaw and libxaw3d (xaw3d), and adapt Xaw programs to libxaw3dxft.


I thought libxaw3dxft was just an extension to libxaw3d, not a replacement in itself. Actually looks much nicer. I will give that a try instead, thanks.


----------



## sidetone (Sep 26, 2022)

The www location was adjusted for x11-toolkits/libxaw3dxft to a place that shows the directory location of libxaw3dxft [https://sourceforge.net/projects/sf-xpaint/files/], instead of the dead-end xpaint page, which those projects are related. It also has applications and additional upstream patches which use libxaw3dxft.

The appearance of libxaw3dxft-1.6.2h and libxaw3d-1.6.3 (not in FreeBSD ports) is about the same. From FreeBSD it doesn't look so, because the version of libxaw3d (x11-toolkits/xaw3d) in ports is from 2008 and of the 1.5 releases, when the upstream versions of it are from 2020 and 2022. I have built and tried libxaw3d-1.6.3 in the past to see its appearance in comparison to libxaw3dxft-1.6.2.h and of the obsolete version of xaw3d in ports.

Most updates of libxaw3d-1.6 series were customizations for building tools. It also seems that the dependencies of libxaw3dxft are a little cleaner than libxaw3d.

libxaw3dxft-1.6.2h latest release is from 2020-July [https://sourceforge.net/projects/sf-xpaint/files/libxaw3dxft/]. This version has internationalization support.

The obsolete port of x11-toolkits/xaw3d is of version 1.5 from 2008, which uses the repository [http://slackware.cs.utah.edu/pub/slackware/slackware64-13.1/source/x/xaw3d/].

The updated upstream of xaw3d is at https://gitlab.freedesktop.org/xorg/lib/libxaw3d. It's named libxaw3d, is at version 1.6.4 and is currently updated. The most recent release was in August 2022 [https://www.mail-archive.com/xorg-announce@lists.x.org/msg01411.html]. "convert ISO8859-1 encoded source files to UTF-8" is mentioned in the notes, but not sure what this means in terms of Internationalization support, as the alternative libxaw3dxft has needed xft support. For reference, for what was applicable earlier this year, the previous release of 1.6.3 was in June 2018 [https://www.mail-archive.com/xorg-announce@lists.x.org/msg01115.html].




hunter0one said:


> Just followed your guide here for Xaw3D as the description instructions no longer apply.


I misread this the first time I saw it. I thought the bug needed to be found or the updated way needed to be shown, so thought someone may have needed to update that.


----------



## hunter0one (Sep 26, 2022)

sidetone said:


> The www location was adjusted for x11-toolkits/libxaw3dxft to a place that shows the directory location of libxaw3dxft [https://sourceforge.net/projects/sf-xpaint/files/], instead of the dead-end xpaint page, which those projects are related. It also has applications and additional upstream patches which use libxaw3dxft.
> 
> The appearance of libxaw3dxft-1.6.2h and libxaw3d-1.6.3 (not in FreeBSD ports) is about the same. From FreeBSD it doesn't look so, because the version of libxaw3d (x11-toolkits/xaw3d) in ports is from 2008 and of the 1.5 releases, when the upstream versions of it are from 2020 and 2022. I have built and tried libxaw3d-1.6.3 in the past to see its appearance in comparison to libxaw3dxft-1.6.2.h and of the obsolete version of xaw3d in ports.
> 
> Most updates of libxaw3d-1.6 series were customizations for building tools. It also seems that the dependencies of libxaw3dxft are a little cleaner than libxaw3d.


 I am not educated on fonts, but after replacing the libraries with libxaw3xft, Athena applications have higher quality fonts than the default and the buttons generally look better except for xterm's scrollbar which I use a black on white color scheme for so the scrollbar is pitch black with that "Hazard stripes" pattern of white (here is an image I took before I remembered you also posted a similar xterm comparison). I also noticed the scrollbars in libxaw3dxft function a lot better, you can drag instead of having to just click where you want the bar to be.






sidetone said:


> I misread this the first time I saw it. I thought the bug needed to be found or the updated way needed to be shown, so thought someone may have needed to update that.


I was meaning the `pkg info -D` description.


----------



## hunter0one (Oct 11, 2022)

Are there any Athena-based web browsers?

I believe old versions of Netscape or Firefox had the options of being built with Motif, but not sure about Athena.

I particularly like Athena more because its kept its permissive license over time.


----------



## sidetone (Oct 12, 2022)

hunter0one said:


> Are there any Athena-based web browsers?
> 
> I believe old versions of Netscape or Firefox had the options of being built with Motif, but not sure about Athena.
> 
> I particularly like Athena more because its kept its permissive license over time.


I don't think there are. There's just small and medium sized applications for Athena Widgets.

It would have to be ported, if any Athena Widgets browser existed anywhere. If there happened to be one, it wouldn't likely be a standards compliant one like Firefox or those.

Hardly anything is built with libxaw3dxft, as most other applications are built for other xaw toolkits, but those are meant to also be used on libxaw3dxft. If something like Firefox or something else were to be made for the most updated or any Athena Widgets implementation, it would take a community or the browser upstream wanting to do that. I don't see that part happening. A light nonstandard compliant browser, maybe.


----------



## hunter0one (Nov 6, 2022)

Here is a webpage that shows a bunch of different Xaw implementations not included here:


			Survey of Widget sets


----------

