The design goals of HOTDOG include:
- Graphical user interface based on retro computer systems including Hot Dog Stand (Windows 3.1), Amiga Workbench, Atari ST GEM, Mac Classic and Aqua
- Custom lightweight Objective-C foundation
- Bitmapped graphics, low DPI displays
- No Unicode support by design
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.
$ sh makeUtils.sh
$ perl build.pl
To run the window manager:
$ ./hotdog runWindowManager
To run the iPod style interface:
$ ./hotdog
Aqua mode uses 'compton' for window drop shadows and 'feh' to set the wallpaper.
Some of the Perl scripts use the JSON module.
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).
Hot Dog Stand 1280x1024
Atari ST GEM 1280x1024
Amiga Screenshot 1280x1024
Mac Classic 1280x1024
Mac Color 1280x1024
Mac Platinum 1280x1024
Aqua 1280x1024
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.
This is a preliminary version of the home screen with Windows 3 icons.
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:
- hotdog-music-listAlbumsForArtist:.py
- hotdog-music-listArtists.py
- hotdog-music-listSongsForArtist:.py
- hotdog-music-listTracksForAlbum:.py
These scripts can be modified as desired.
Currently requires Python modules mutagen and pillow.
To show albums:
$ hotdog show AlbumListNavigation
Click on an album to list the tracks:
To show songs:
$ hotdog show SongListNavigation
To show artists:
$ hotdog show ArtistListNavigation
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:
- hotdog-contacts-list.py
- hotdog-contacts-printFile:.py
These scripts can be modified as desired.
Currently requires Python modules vobject and pillow.
To show list:
$ hotdog show ContactListNavigation
Click on a row to show details:
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
$ hotdog show LockScreen
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.