xwoaf - rebuild

For discussions about programming, programming questions/advice, and projects that don't really have anything to do with Puppy.
Message
Author
goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

xwoaf - rebuild

#1 Post by goingnuts »

Now and then I have tried to rebuild xwoaf (x window on a floppy) as I have always been fascinated by this gem done by Terry Loveall in 2004/2005. I actually became a Puppy user after playing with xwoaf for a while - as a naturally next level of tiny distribution choice at that time.

This time I almost succeeded - almost in the sense that it is not a perfect copy of the original - but close enough taking the lack of some of the original sources in consideration...

I have used a modified pupngo toolchain capable of building all but the original mail client.

Updated 20170124: Kernel-build now possible within the toolchain - download additional xwoaf-build-package_kernel.tar.gz and follow instructions in below referenced howto.

The howto is here as well as downloads of the toolchain and the build system.
Update 20171022: xwoaf-rebuild-4.0 now available - Most linux GUI applications on a floppy ever. Configured for sound support running qemu. Build system available all-in-one chroot environment 100Mb tar.gz file with all sources, patches and buildscript. Visit for download.
floppy image and iso image.
youtube video
Citation from xwoaf-rebuild-4.0 help:
"Welcome to xwoaf-rebuild 4.0

xwoaf-rebuild builds upon the giant work done by Terry Loveall, getting a working linux desktop with web browser, text-editor, filemanager and other daily tools - everything in the size of a 1,4Mb floppy disk - the one and only Xwoaf. Visit copy of Terry's original web-page here. For a (almost always outdated) description of the work with xwoaf-rebuild - visit this web-page.

Most graphical applications are based on XawPlus widget toolkit - giving a more modern look of the applications than the Athena widget toolkit (Xaw). Also a slight reduction in size on disk has been achieved.

Busybox-1.1.2 is the back engine delivering all the cli commands needed to boot and supplies backend programs for the various graphical applications. It is patched to contain extlinux-3.01a, pr from textutils-1.9 and the full losetup from util-linux-2.10s. extlinux helps the script "install2hd", pr gives pretty print in console applications and the full losetup works with kernel 2.2.26.

While original xwoaf was based on dynamic linked binaries, all (2!) binaries in xwoaf-rebuild are static linked. Busybox is not upxed (as this slows down execution a lot) but mcb_xawplus is. Creating xwoaf-rebuild has been an iterative process where the limit of applications and functionality you can put on a floppy has continued to increase. There are still potential for adding even more stuff - both by patching the source code (shared functions/global constants) but also using lzma to compress various directories which can be uncompressed with

tar -xaf "lzma-compressed-tared-directory"

via /etc/sysinit at boot-time.

xwoaf-rebuild is a tribute to Terry Loveall and an encouragement to target application code and distribution building for size/functionality.
What is in this release?

* Desktop
Jwm
Desklaunch
Torsmo
Xsetroot Filemanager
* * Browser
xvl
jpeg2gif
* Xterm
* Calculator
* Calendar and planner
* Text editor
* Games
* Screenshot
* Unarchiver
Xmessage
* Linux kernel
* Install to harddisk
* Mounting CD-rom and file-images
* Banner or xpm-image viewer
* Run
* Setting keyboard locale
* Setting screensize
* Lock screen
* Sound - xtmix and minimp3

Desktop

The desktop uses jwm-0.23 in various ways. The menu can be regenerated by running the script /bin/fixmenu - settings in /usr/share/application/*.desktop determines which menu-items are shown.

The desktop icons are created by Desklaunch-1.1.7. The icons can be moved by pressing "alt"-key and left-mouse-button. The icons can be re-created by running the script /bin/fixicons which looks in /usr/share/applications for *.desktop files, in which the programs various settings are defined.

The information view in top left part of the desktop is done by torsmo-0.14. Here you can view the running status of various processes. Configuration of torsmo is done via editing file /root/.torsmorc.

The desktop background color is provided by xsetroot-1.5. The color can be changed using script /bin/setbackground.
Filemanager

xfilemanager-0.5.0 is the system filemanager. Different filetypes are shown with different images. Double click on a file will execute defined commands configured in /root/.xfmrc.
Browser

Chimera-1.70 (quite heavy patched) is the webbrowser. To surf the www you need internet access and xwoaf-rebuild has a quite limited number of ethernet drivers. If booted via qemu, network should be running. Chimera also act as an imageviewer as it is capable of showing gif, bmp, png and jpg images. Internal gif support and the external converters - xvl and djpeg-6b - handles images for chimera. With internet access chimera handles all but https webpages, including downloading of files. Also local filebrowsing is possible. Printing can be done to files - either plain-text, PostScript-formated or pdf.
Xterm

rxvt-2.6.4 is the xterm. Build with a minimum of settings - a fast and powerfull colour vt102 terminal emulator.
Xcalc

xcalc-1.15 is an advanced calculator. Styled with colors which make it look a lot more attractive than the way you normally see xcalc.
Xcalendar

xcalendar-3.0 is a calender application with the ability to store memos for every day. The entries are saved in /root/Calendar as text-files and can be edited there or used for other purposes.
Text editor

xed-1.0 is the plain text editor. You get various options after loading documents - search, replace, jump to line, copy, paste and print. It is even possible to call sed for command editing purpose. The printing is done via text2pdf-1.1 so the file will be printed in directory /root as a pdf-file.
Games

Two games are included: xtet42-2.21 is Tetris - actually a one or two player version of Tetris.

xminesweep-2.0 is the classic minesweep game.
Screenshot

xsnap-1.3 is able to take a screenshot of the desktop or a specific window. Draw area to be snapped with the mouse, for help press "h", to save the image press "p". Image will be located in /root as "snapp0001.xpm" with increasing number if several snapshots are done.
Unarchiver

guitar is a script using busybox tar, gunzip and unzip to view or decompress common archives. The grafic is done with xmessage-1.0.1.
Install to harddisk

You can install xwoaf-rebuild to harddisk using script "install2hd". Be aware that this will erase everything on the harddisk.
Linux kernel

The kernel is Linux-2.2.26. It is carefully configured to get the most features with the least size. Additional modules can be loaded if needed but no modules are shipped on the floppy and therefore should be installed and configured after xwoaf-rebuild has been installed to harddisk. The kernel dot.config is included in /etc/modules. A major breakthrough in terms of reducing kernel size has been a modified patch (LZMA initrd) by Ming-Ching Tiew/mctiew@yahoo.com
Mounting CD-rom and file-images

Mounting a CD-rom is done by the command prompt. The CD-rom is device /dev/hdc. Create a mountpoint (ex.: mkdir -p /mnt/hdc), mount /dev/hdc on the mountpoint (ex.: mount /dev/hdc /mnt/hdc) - and files on the CD-rom is available via xfilemanager at /mnt/hdc. Script /bin/cdmount handles this. Script /bin/floppymount does the same with floppy disk.

Mounting a file-image is a two-step operation. First setup the image on a loop device (ex.: losetup /dev/loop0 file-image), then mount the loop device on a mountpoint (ex.:mount /dev/loop0 /tmp).
Banner or xpm-image viewer
xban2-0.2 - a show banner or xpm-image viewer. Called by xfilemanager when dbl. click on xpm-files.

Options:
-f "path to image" User defined image. Only xpm-image!
-t time User defined time to show image - default 5 sec.
-d Show window decorations.
-v Use as image viewer (disable timer).
-x value Position of image x-value (ex. 600).
-y value Position of image y-value (ex. 400).
-h, --help Display this help text and exit.

Run
xcmd-1.05 - X single line run command. X run command with optional single parameter - just write the command you want to execute. Allows line editing with mouse and keyboard. Find it in the menu.

Setting keyboard locale

Keyboard locale can be set by running setkbd. 29 language settings possible. This script is normally run as first thing after boot but can be accesed by icon on the desktop.
Setting screensize

The depth and screensize of the desktop can be changed by running the script setresolution - access via desktop icon.
Lock screen

Pupslock locks your screen. To unlock enter password. Pupslock is configured via /root/.pupslockrc. Options are:

-pu "path to image" User defined image. Only xpm-image!
-p Use build in image.
-s XX Activate screen saver function. XX seconds delay.
-bc "background color" Ex. "#fffacd" or steelblue.
-t Use transparent image background if appropriate.
-a Disable ctrl+alt+backspace (needs xmodmap).
-h, --help Display this help text and exit.

xautolock (for detailed options use xautolock -h) is configured in /root/Startup/xautolock_rc and locks the screen after 10 minuttes of inactivity by calling pupslock. A notice is issued 60 seconds before locking. Shutdown of system is done after 20 minuttes of inactivity.
sound and Xtmix

The kernel is configured with support for soundblaster and should work with qemu soundcard. xtmix is a mixer application able to adjust various sound properties. mp3 files can be played by minimp3 - by double click an mp3-file in xfilemanager the file is automatic played."
Attachments
xwoaf-rebuild.png
(162.37 KiB) Downloaded 1048 times
Last edited by goingnuts on Sun 12 Nov 2017, 18:11, edited 6 times in total.

slavvo67
Posts: 1610
Joined: Sat 13 Oct 2012, 02:07
Location: The other Mr. 305

#2 Post by slavvo67 »

Looks like a nice, back to Puppy basics. As Puppy keeps getting more bloated, it's really nice to see some of these projects pop-up. Not sure if I want to take the time to rebuild but do you have a copy of your rebuild? Maybe you can post it to the Puppy Derivatives section with a link from here? It would be nice if you can share it with us real puppy lovers!

All the best and thanks!

Slavvo67

User avatar
Keef
Posts: 987
Joined: Thu 20 Dec 2007, 22:12
Location: Staffordshire

It lives!!

#3 Post by Keef »

Got the toolchain to complete the build with no problems on Slacko.
The iso would not boot with Qemu, but did a manual frugal install to HDD (ext2 partition) and it booted fine with grub4dos.
USB mouse working as well.

[EDIT] Re the ISO - Image.gz is not getting copied to the isomaster directory. I think there was an error message about this, so I copied it manually. It did not end up in the iso though (just mounted it to check).

TeX Dog
Posts: 287
Joined: Wed 06 Jul 2016, 17:57

#4 Post by TeX Dog »

OK interested, C or ASM? can it be compiled for different chipset. IF floppy sized then it could be its own bootloader in ISO format, let me know if any interest.

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#5 Post by goingnuts »

slavvo67: It is not a Puppy derivative - but I will make an iso-image and a floppy image available for test. The build takes about 10 minutes though. At some point I thought that one might be able to create a Puppy-like floppy distribution - but I think 1.44 MB is too limiting to get something really useful.

Keef: Thanks for testing! I re-tested on P412 and can confirm your findings concerning Image.gz not in the iso. I will fix that and update the build process. USB-support? Did you use the 2.2.25 kernel?

TeX Dog: This is done with normal linux mostly C packages - hacked by Terry Loveall. I just wanted to share my toolchain and buildscript - as xwoaf has inspired me to go the linux way and start "hacking" open source code. One could look for better applications to replace the ones from the original - I have found it hard to find some - but suggestions are very welcome. The toolchain comes from build-root so other chipsets should be possible although I never tried and have no intention to - at the moment :) .

User avatar
Keef
Posts: 987
Joined: Thu 20 Dec 2007, 22:12
Location: Staffordshire

#6 Post by Keef »

goingnuts

I just ran everything as is. I believe it is the 2.2.25 kernel it ends up with.

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#7 Post by goingnuts »

Keef: Cool - might be your bios handles the usb/keyboard and make them work even with a kernel that knows nothing about usb.

Updated buildscript so it now perform as announced. Also added link to final iso and floppy images. iso image can be burnt to CD the usual way - the floppy image can be put on a floppy by doing "cat xwoaf_rebuild.img >/dev/fd0"

User avatar
ally
Posts: 1957
Joined: Sat 19 May 2012, 19:29
Location: lincoln, uk
Contact:

#8 Post by ally »


TeX Dog
Posts: 287
Joined: Wed 06 Jul 2016, 17:57

#9 Post by TeX Dog »

inspiring effort and results. It's so easy to forget that just 64K memory once rocked the world with potential, Then the magic One Meg. etc.

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#10 Post by goingnuts »

ally: Thank you! :D
I have tried to do a floppyimage with xawplus applications (xcalc, xfilemanger, xcalendar and xe) as an example of a different focus eliminating email client and web browser. To have room for this I needed to upx Xvesa though...But it gives a dnd filemanager, a descent text editor, a more capable calculator and a more featured calendar. Xaw applications are still extremely complicated to "style" for me but it should be possible to make them even more good looking.
xwoaf_rebuild2.img
Edit: Added xmessage to the floppyimage...
Attachments
xwoaf-rebuild2.png
(130.08 KiB) Downloaded 894 times

User avatar
BarryK
Puppy Master
Posts: 9392
Joined: Mon 09 May 2005, 09:23
Location: Perth, Western Australia
Contact:

#11 Post by BarryK »

goingnuts,
Do you know about Linkx:

https://sourceforge.net/projects/linkx/

Wouldn't that be a nice addition to xwoaf?!
[url]https://bkhome.org/news/[/url]

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#12 Post by goingnuts »

BarryK: Did not know that one - thanks. I think it gets too big to fit on the 1.44Mb floppy though. I have worked with chimera-1.72.01 with compiles to 752K static linked and it could be on the floppy - but it reduces the amount of other applications that the floppy can hold.
chimera-1.72.01 need some patching to work properly and I haven't been able to get it stable enough to be a realistic choice.
On top of that, the very limited ethernet drivers included (ne2k-pci/8390) the chance to get connected from a real computer is limited.
But one can modify and make own balanced set of applications as long as the floppy size is not extended...

dillo-0.7.3m is much more stable - but it is quite hard to get the size down to fit on the floppy.

User avatar
BarryK
Puppy Master
Posts: 9392
Joined: Mon 09 May 2005, 09:23
Location: Perth, Western Australia
Contact:

#13 Post by BarryK »

goingnuts,
On your xwoaf webpage, you wrote that 1diskx cannot be found anymore.

You can get it from this most unlikely URL:

http://soundproofingforum.co.uk/soundpr ... oofing.htm

I have just now run "unrar x mungdev20100301.rar"

It has image files for using in qemu.
[url]https://bkhome.org/news/[/url]

User avatar
BarryK
Puppy Master
Posts: 9392
Joined: Mon 09 May 2005, 09:23
Location: Perth, Western Australia
Contact:

#14 Post by BarryK »

BarryK wrote:goingnuts,
On your xwoaf webpage, you wrote that 1diskx cannot be found anymore.

You can get it from this most unlikely URL:

http://soundproofingforum.co.uk/soundpr ... oofing.htm

I have just now run "unrar x mungdev20100301.rar"

It has image files for using in qemu.
It has 'hda.img' and 'hdb.img' in it, intended to be used in vmware.
I wonder how we could open those files, without having vmware?
[url]https://bkhome.org/news/[/url]

User avatar
BarryK
Puppy Master
Posts: 9392
Joined: Mon 09 May 2005, 09:23
Location: Perth, Western Australia
Contact:

#15 Post by BarryK »

1diskx source is also available from here:

http://www.ibiblio.org/pub/Linux/X11/xutils/

However, it has the 'mdesk' binary, no source. I think that first link has all of the source -- it is also much later, 2010, whereas 1diskx-1.2.1 is dated 2003. I know that it got up to version 1.2.13, but those sources have gone.

Anyone got vmware installed?
[url]https://bkhome.org/news/[/url]

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#16 Post by goingnuts »

Thanks Barry! They are nice findings - especially if the mdesk source "at last" is released. It's like Christmas - lot of presents :D

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#17 Post by technosaurus »

although many of these have been lost to the interwebs, it is still possible to build most of them. We have preserved tinyX on github; jwm is still maintained and we now have alternatives to rxvt (st). In my experiments with nanosaurus, I built a kernel image with a builtin initramfs that included jwm, rxvt and a basic "init" in under 1MB. Since then I have produced patches to allow jwm to use stb_image instead of libjpeg and libpng and nanosvg instead of cairo ... and suckless terminal is now as good as if not better than rxvt. Netsurf now has basic javascript support and can be buiilt using using xcb (and linux framebuffer) backend which would allow using something like what slitaz uses for configuration dialogs instead of gtkdialog (it uses busybox httpd and html forms - no javascript technically required). I briefly experimented with nuklear (see github) as a replacement for gtk+ GUIs and though it seems to be on par with gtk+, I would need to find/write a glib replacement to fully replace gtk+. I should have some development time after the new year, so let me know what you would like to see in the new year (and hopefully a new laptop for development)... more jwm improvements? replace gtk/gtkdialog? minimal init system? GUI multicall binary(ies)? porting X11 apps to xcb?

I have done a ton of experiments over the years, but I don't do a lot of "marketing", so I really don't know what people want/like. The only projects that got much interest seemed to be the stuff the end users actually see like my jwm-tools and simple icon tray or small SVG icons; however I would have expected more interest in my DNS caching experiment that significantly improved browsing speed (up to 30000%) or my sysvinit replacement scripts that improved boot speed by 2000%.
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
BarryK
Puppy Master
Posts: 9392
Joined: Mon 09 May 2005, 09:23
Location: Perth, Western Australia
Contact:

#18 Post by BarryK »

technosaurus wrote:although many of these have been lost to the interwebs, it is still possible to build most of them. We have preserved tinyX on github; jwm is still maintained and we now have alternatives to rxvt (st). In my experiments with nanosaurus, I built a kernel image with a builtin initramfs that included jwm, rxvt and a basic "init" in under 1MB. Since then I have produced patches to allow jwm to use stb_image instead of libjpeg and libpng and nanosvg instead of cairo ... and suckless terminal is now as good as if not better than rxvt. Netsurf now has basic javascript support and can be buiilt using using xcb (and linux framebuffer) backend which would allow using something like what slitaz uses for configuration dialogs instead of gtkdialog (it uses busybox httpd and html forms - no javascript technically required). I briefly experimented with nuklear (see github) as a replacement for gtk+ GUIs and though it seems to be on par with gtk+, I would need to find/write a glib replacement to fully replace gtk+. I should have some development time after the new year, so let me know what you would like to see in the new year (and hopefully a new laptop for development)... more jwm improvements? replace gtk/gtkdialog? minimal init system? GUI multicall binary(ies)? porting X11 apps to xcb?

I have done a ton of experiments over the years, but I don't do a lot of "marketing", so I really don't know what people want/like. The only projects that got much interest seemed to be the stuff the end users actually see like my jwm-tools and simple icon tray or small SVG icons; however I would have expected more interest in my DNS caching experiment that significantly improved browsing speed (up to 30000%) or my sysvinit replacement scripts that improved boot speed by 2000%.
Yes, I see so many interesting projects, that have been forgot or lost, bits and pieces that could be put together to build a new kind of radically small, lean-and-mean Puppy.

That is very good news about netsurf!

A new pup built with xlib apps, tinyx, and gtk 1.2, would be great. There were such nice gtk1.2 apps that we abandoned. Also there were some very interesting projects, such as xft support in gtk1.2, for antialiased fonts -- there was a git site for that.

A suppose a good start would be to collect everything we can find and put it into a repository somewhere, somewhere that is not going to go away.
Unfortunately, I had a huge collection of old stuff on a usb hard drive that got stolen -- my place got burgled several years ago.

Then setup a build environment, which is not the easy part. Personally, I favour being very conventional and use glibc -- it avoids so many hassles.

Maybe a project like OpenEmbedded or Yocto would be a good tool to use.
I mention those two, as I had very good experiences with them:
http://barryk.org/news/?viewDetailed=00361
http://barryk.org/news/?viewDetailed=00367

Regarding T2, I give up. The problem is, only Rene, the maintainer, is the only one maintaining it, and only just barely. It has been like this for years. Rene compiles for a mips target, arm is totally neglected.
EDIT: no, haven't really given up on T2. Keep saying I will, but then go back and play with it some more.

I'm just "thinking out loud" here.
Last edited by BarryK on Fri 23 Dec 2016, 11:11, edited 1 time in total.
[url]https://bkhome.org/news/[/url]

User avatar
ally
Posts: 1957
Joined: Sat 19 May 2012, 19:29
Location: lincoln, uk
Contact:

#19 Post by ally »

I have archived goingnuts efforts here:

http://archive.org/details/puppylinux?and[]=goingnuts

I can upload anything you want saving to the archive

:)

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#20 Post by goingnuts »

BarryK wrote:
BarryK wrote:goingnuts,
On your xwoaf webpage, you wrote that 1diskx cannot be found anymore.

You can get it from this most unlikely URL:

http://soundproofingforum.co.uk/soundpr ... oofing.htm

I have just now run "unrar x mungdev20100301.rar"

It has image files for using in qemu.
It has 'hda.img' and 'hdb.img' in it, intended to be used in vmware.
I wonder how we could open those files, without having vmware?
Here is how to "easy" access the content of hda.img:

Code: Select all

#create a directory to unpack the mungdev20100301.rar
mkdir mungdev
#and move mungdev20100301.rar to this directory
#then run
unrar e mungdev20100301.rar
#convert hda.img to raw image for qemu
qemu-img convert -O raw hda.img hda.raw		#the -O is -O as in Oliphant
#now you can boot qemu with this command:
qemu -m 128 -boot c -hda hda.raw
#or mount the disk and access the content via your file browser
mkdir mnt
mount -o loop,offset=32256 hda.raw mnt

#hdb.img seems to be an empty harddisk
BUT: I find no source for mdesk. In /home/mungkie you find 1diskxwin-soundproofing.tar.bz2 and after extraction you can find the bin mdesk in /home/mungkie/1diskwin-soundproofing/mdesk-1.2.0 but no source. I might have overlooked it though...

technosaurus: You really have contributed with many unique solutions and your nanosaurus was great inspiration! The gtk-1.2 road is well documented but if one aims for 1.44Mb floppy its still too large. I thought of gtkdialog-1 reduced to xpm-graphics and with some features removed - then scripting all apps - but it seem still to be too big...
XawPlus gives smaller bins than Xaw (and they look better) but they drag in Xt and friends - and Xaw is not always stable or user-friendly.
The McTools widget set is smaller than GTK-1.2 and use only X11, Xau and Xpm - but until now I have not been able to do a single app with it myself. That could be a new project for very tiny (but advanced) GUI apps.

ally: Thanks a lot!

Add: If you choose to run the hda.raw within qemu cd to home/mungkie and run ./createsystem.sh
It will build most things but when it comes to mdesk it stops and says "You need to upgrade". It should be possible to get it running though by manually creating the rest of the root - but I still havent seen any of the apps in mdesk running. It seems to hold Xvesa, mterm, xawterm, game, calc, paint, gifr, pty, mdesk, menu, dial, cscript, rxvt, xhost, wm, usk, vncviewer, fspanel, rdesktop, ssh, xpmroot and xfm - impressive...
Attachments
snap0017.png
(85.41 KiB) Downloaded 468 times

Post Reply