arthurchoung / HOTDOG

X11 Window Manager with Windows 3.1 Hot Dog Stand, Amiga Workbench, Atari ST GEM, Mac Classic and Aqua UI
GNU General Public License v3.0
310 stars 9 forks source link
objective-c window-manager

HOTDOG

Download

Installer ISO based on Slackware64 (1.28 GB)

Minimal ISO based on Slackware64 that runs from RAM (192 MB)

Boot with Legacy BIOS.

If using VirtualBox, 3D acceleration should be enabled.

This is a multilib system, the only 32-bit application included is Wine.

It comes with the 64-bit gcc only, so the included gcc cannot create 32 bit binaries.

It is a stripped down system that does not include systemd, wayland, elogind, polkit, pulseaudio, or NetworkManager.

http://fmamp.com/download/

Hot Dog (Linux) on a (USB) stick

To write the image to a USB drive:

$ dd if=/path/to/file.iso of=/dev/sdX bs=1M

/path/to/file.iso is the file name of the image file.

/dev/sdX is the USB device to write the image to.

Run as root. Be careful not to write to the wrong drive.

Webpage

https://fmamp.com/hotdoglinux/

Overview

The design goals of HOTDOG include:

HOTDOG uses a custom lightweight Objective-C foundation on top of the GCC Objective-C runtime. The style of Objective-C is completely different from the one Apple uses, everything is basically id.

Alternatively, it is possible to use an older version of the GNUstep Objective-C runtime that uses the old object struct layout (located in external/libobjc2). This requires everything to be compiled with clang, and allows for the use of Objective-C 2.0 features such as NSFastEnumeration and NSArray/NSDictionary literals, as well as blocks and libdispatch (with the appropriate libs). However, the GCC runtime has better performance, so it is the default.

By design, Unicode is not supported.

Low DPI displays are preferred, since the graphics are bitmapped and fixed in size.

HOTDOG does not use Automatic Reference Counting. It causes problems with type-checking during compilation (it is too strict).

HOTDOG is an acronym that stands for Horrible Obsolete Typeface and Dreadful Onscreen Graphics.

How to compile and run

$ sh makeUtils.sh

$ perl build.pl

To run the window manager:

$ ./hotdog runWindowManager

To run the iPod style interface:

$ ./hotdog

Notes

Aqua mode uses 'compton' for window drop shadows and 'feh' to set the wallpaper.

Some of the Perl scripts use the JSON module.

Screenshots

WinMac 1280x1024

WinMac is a combination of the Windows 3.1 window borders and font, the classic Mac menu bar, and dialogs featuring CATS from Zero Wing (All your base are belong to us).

WinMac Screenshot

Hot Dog Stand 1280x1024

Hot Dog Stand Screenshot

Atari ST GEM 1280x1024

Atari ST Screenshot

Amiga Screenshot 1280x1024

Amiga Screenshot

Mac Classic 1280x1024

Mac Classic Screenshot

Mac Color 1280x1024

Mac Color Screenshot

Mac Platinum 1280x1024

Mac Platinum Screenshot

Aqua 1280x1024

Aqua Screenshot

iOS 4/5/6

This is an attempt to recreate iOS 4/5/6 with simplified graphics that would be suitable for the 8-bit or 16-bit era.

Home Screen

This is a preliminary version of the home screen with Windows 3 icons.

Home Screen

Music

A music browser in the style of the old versions of iOS.

Displays a list based on the files in the current directory, using the output of the following scripts:

These scripts can be modified as desired.

Currently requires Python modules mutagen and pillow.

To show albums:

$ hotdog show AlbumListNavigation

Music Screenshot Album

Click on an album to list the tracks:

Music Screenshot Track

To show songs:

$ hotdog show SongListNavigation

Music Screenshot Song

To show artists:

$ hotdog show ArtistListNavigation

Music Screenshot Artist

Contacts

A vcf/vcard browser in the style of the old versions of iOS.

Displays a list based on the files in the current directory, using the output of the following scripts:

These scripts can be modified as desired.

Currently requires Python modules vobject and pillow.

To show list:

$ hotdog show ContactListNavigation

Contacts Screenshot List

Click on a row to show details:

Contacts Screenshot Detail

Calendar

Displays a calendar using the output of 'cal' for the actual calendar.

The script 'hotdog-calendar-listEvents.py' reads .ics files in the current directory and lists the event dates, which are highlighted in yellow.

These scripts can be modified as desired.

Currently requires Python module vobject.

To show a yearly calendar:

$ hotdog show CalendarInterface

Calendar Screenshot Year

Lock Screen

$ hotdog show LockScreen

Lock Screen

Legal

Copyright (c) 2020 Arthur Choung. All rights reserved.

Email: arthur -at- fmamp.com

Released under the GNU General Public License, version 3.

For details on the license, refer to the LICENSE file.