====================================================================================================================
     Herminux - An extra lightweight modern linux distribution by Hermit
============================================================================

Installation instructions without Live-CD, from folder:

To install Herminux on a disk partition (e.g. /dev/sda1) first you need to extract the Herminux to the parent folder of this README.txt, e.g.:
cd ..
tar -xf Herminux-i486.tar.xz

Once you have the Herminux-xxx folder in the parent folder you have some ways to install to the selected partition:

1.By hand: Simply format/clean the partition then copy the contents of 'base' and 'gui' folders to the root directory of it. Install/configure bootloader manually.

2. By the 'install-herminux' shell-script (in the current folder where this README.txt is found), e.g.:
sh install-herminux.sh ../Herminux-i486 sda1
(The script will ask whether you want to format the target partition and to install bootloader into MBR. If you run the script without parameters it spits out a help.)

3. By the Makefile (if you have development tools so 'make' command is in your PATH):
make install
Architecture and destination-partition is set at the Makefile's beginning, but you can modify Makefile or override the values by giving the variables externally, e.g.:
make install ARCH=i486 INSPART=sda1


Building Herminux for a different architecture involves the 'Makefile', which is supposed to automatically build all the system from start to end if things go right.
Prepare by extracting the Herminux-sources.tar.xz package to the parent folder of this README.txt. The Makefile will look for the source-tarballs in that directory.
The source-packages are structured into folders (base,boot,gui,programs/base,programs/gui) just like the configuration files inside 'buildcfg' and 'runtimecfg' in this folder.
You need at least 2GB free space as working area on this drive to hold the generated binaries and intermediate folders. The 'intermediate' and 'made' folders can be deleted afterwards.

Good luck with the Makefile (I made it by hand to be as readable and structured as possible) and don't hesitate to ask me if anything is unclear at: hermitsoft@users.sourceforge.net
(Type 'make help' to see the possible targets...)


Test Machines: MacMini2011(2GB RAM,4x2.5GHz), Asus EEEPC701 (512MB RAM,900MHz), P4 home-assembled PC (2GB RAM, Core2Duo-2.5GHz?)
-------------- Compaq Deskpro(64MB RAM, 450MHz), P1 laptop (40MB RAM,133MHz),
               Raspberry PI ModelA (ARM-700MHz,256MB RAM), Huawei u8220 smartphone


====================================================================================================================
Hungarian alphanumeric list for UTF8 testing: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 áéíóöőúüű
(see utf-8 testing txt files in 'runtimecfg/test' folder, utf-8 setting tips at the end of this document)
====================================================================================================================
This is a description how Herminux was built from ground up:
============================================================

I. BASE SYSTEM (commandline)
----------------------------

0.FILESYSTEM-FOLDERS (the most essential folders for Linux to work, based on Linux FileSystem Hierarchy Standard):
Start from a host-system (I used Arch Linux), create a directory for the folders below:
/     - the root folder, set by GRUB-loader with 'root=' parameter. Essentially the main folder of drive the system is loaded from.
/bin  - for the most basic and essential system-wide binaries
/boot - for kernel-images (e.g. 'bzImage') and possible GRUB-loader configuration (/boot/grub/grub.cfg)
/dev  - kernel uses this as a mount-point for its '/dev' filesystem which includes all recognized devices
/etc  - for system-wide configuration/init files (e.g. 'inittab' to control system-startup/shutdown, usernames, passwords, etc.)
/lib , /lib64 - they are both symlinks to '/usr/lib' folder (idea taken from Arch linux, all system libs in one place)
/mnt  - usually this folder is used as mount-point for block-devices in '/dev' folder. Mount-points should be created with mkdir (dynamically if /mnt is temporary)
/proc - kernel's virtual filesystem where it exposes its runtime configurations/operations to programs that need them
/root - the home folder for the root user (administrator/superuser) (other users can have private folders in '/home' if needed)
/sbin - for essential/basic system-wide binaries that are supposed to be run by the 'root' user
/tmp  - the usual folder for applications to put temporary data in (e.g. temporarily decompressed archives to view their content) (maybe volatile tmpfs ramdisk)
/usr  - folder for system-resources, contains many important subfolders
 /usr/bin     - system-wide binaries to be used by the base system
 /usr/lib     - system-wide runtime (.so) and buildtime(.a) libraries to be called by binaries (with help of 'ld')
 /usr/include - would be needed for the compilers to get header-files of buildtime-libraries ('.a' archived or source-form)
 /usr/lib64   - on 64bit systems it would be a separate folder for 64bit libraries, but in Herminux it's only a symlink to /usr/lib
 /usr/local   - separate bin,lib,share,etc. folders for the extra programs installed on the base system (local user programs)
 /usr/sbin    - system-wide binaries to be run by superuser (root)
 /usr/share   - mostly non-executable resources (icons,manuals,fonts,etc.) accompanying the programs in /usr/bin, /usr/local/bin
/var  - used by many programs to get/give information (e.g. Xorg log in /var/log, downloaded packages in /var/cache, preserved temp. data in /var/tmp etc.)
        (/var/run is set to be a temporary virtual filesystem in memory, just like /tmp, and /var/log & /var/lock are linked to it, causing less disk-writes)

1.KERNEL(an xz-compressed self-extracting file. Monolithic if includes modules, drivers and firmware, xz-compressed): 
/boot/herminux-kernel 
 -GRUB can load it, but it restarts after 30 seconds when doesn't find /sbin/init and /etc/inittab
/lib/modules  - place for kernel-modules (drivers,etc.) that are not built into the kernel-image at compile-time (lsmod,modprobe)
/lib/firmware - place for binary blobs of firmware needed for some closed-source devices, if not compiled into the kernel

2.GLIBC (stripped, containing only libraries needed by the base Herminux system's binaries): 
/lib
 -Provides libc and ld-linux.so which is required to load the applications written in C
 -Also some other libraries comprise the core of Herminux, that are frequently used by apps:
  -libm for high precision mathematic operations
  -libpthread for thread-handling in many apps
  -libnss and libresolv for username/dns/etc. name resolutions
  -libncursesw as the requirement for 'nano' and other tools like 'mc'/'partimage'/'parted' (needs 'linux' terminfo in /usr/share/terminfo)
  -liblzma used by 'xz' command (used instead of stripped down busybox built-in 'xz')
  -other glibc libraries frequently needed by many apps: libattr,libcap,libdl,librt

3.BUSYBOX: 
/bin/busybox , symlinks to it in /bin, /sbin, /usr/bin, /usr/sbin
 -Provides the 'ash' shell and many basic commandline tools for Linux (highly configurable what can be added)
 ('VI' is not included as it's hard to use, replaced by 'nano' which requires 'libncursesw'. Also 'xz' is replaced by original 'xz')
 -According to Busybox building info, you need to set 'setuid' bit for '/bin/busybox' executable...
 
4.Configuration/init files:
/etc
 /etc/inittab : The most important config file used by SysV-init (/sbin/init) which is called by the kernel itself at startup (process 0)
                In Herminux it contains many startup-operations like mounting/unmounting filesystems, setting keymap, (auto) logging in, logout & shutdown tasks
                (On newer systems, like current Arch Linux, modern 'systemd' is used, which does tasks in parallel, speeding up boot-time, does auto-mount,etc.)
 /etc/group , /etc/passwd : root user wouldn't exist ('noname') without these files (for more secure password use '/etc/shadow' instead), 'adduser' expands them
 /etc/hostname : this simple text file contains the name given to the machine (hostname), used as identification-string many times
 /etc/profile : This script is run by the interactive login shell after logging into 'tty' consoles. Can be used to set environment-variables, start X, etc.
            (More user scripts can be put in home folders, if all present, executed in this order: ~/.bash_profile , ~/.bash_login , ~/.profile, ~/.bash_logout)
 
 5.Build-tools (compile,make,etc.):
 Glibc (full), Bash, archivers, Binutils (assembler, strip, etc.), GCC (gcc,g++,etc. compilers), make, automake, autoconf, pkg-config, Perl, Python, XML, ...
  
 
 II. DESKTOP - GRAPHIC BASE SYSTEM (Core GUI on top of BASE SYSTEM)
 ------------------------------------------------------------------
 
 6.Xorg-server
 -------------
  a.build-time dependencies (depends on what are enabled in configuration)
  b.runtime requirements
   -drivers
   -xkeyboard-config,xkbcomp
  
 7.X-Window basic programs  -  good sources for small programs are Amigo linux, sourcefiles.org, FreshPorts.org and of course search pages like ixquick.com
 -------------------------
  a.JWM
  b.xinit - not necessary, a startx script can call Xorg and JWM directly, and can also contain their default parameters, user parameters in '/etc/desktop'
  c.rxvt,mlterm,urxvt - the most area-vs-feature efficient ones
  
 8.X-Window extras
 -----------------
  a.fonts
  b.cursors
  c.bitmaps,icons
  d.screensavers (xscreensaver, default settings: /usr/lib/X11/app-defaults/XScreenSaver, but $HOME/.xscreensaver can override its settings)
                 (run 'xscreensaver' daemon, or run /usr/libexec/xscreensaver/... programs directly, add '-root' parameter for animated desktop-background)
  e.system event sound effects
 



==================================================================================================================== 
 Herminux ToDo and a sea of collected information
===================================================
'-' to do / less important
'*' error / important
' ' done

Live-CD:
--------
-make LiveCD work (with background-image at bootmenu)

Raspberry-PI port:
-A boot partition with FAT32 type and a system partition with ext4 type on the SD-card, plus a SWAP partition is preferred in order to compile big sources
-boot-partition needs to contain these: bootcode.bin (2nd-stage bootloader,no SDRAM), start.elf (GPU-firmware), kernel.img, cmdline.txt, (optional: loader.bin (3rd-stage bootloader), config.txt)
-kernel.img (copied from src/arch/arm/boot/Image) inside the boot partition should be given (kernel=xxx.img in config.txt to use other name) (Can it be on the ext4 partition called from the boot-partition?)
-edit 'cmdline.txt' on boot-partition to set kernel root-partition and kernel-parameters
-set 'config.txt' (GPU settings, called by start.elf) for HDMI-CVBS-resolution/overscan/standard and video-memory size (in 16MB steps, 16MB is the minimum, 128MB is the maximum)
-boot process: -at startup GPU runs 1st stage bootloader from ROM on SoC which loads 2nd stage bootcode.bin to L2 cache from SDCARD while CPU & SDRAM is off; 
               -bootcode.bin enables SDRAM and loads 3rd-stage loader.bin into it;  loader.bin (may be in bootcode.bin) reads GPU-firmware (start.elf);  start.elf reads config.txt, kernel.img and cmdline.txt
!IMPORTANT: Upstream (non Raspberry-specific) vanilla kernels after 18.09.2014 don't boot with stock RPI bootloader! Use Downstream RPI kernel source or U-Boot from Stephen Warren, which also supports multiboot
            Or use Eric Anholt's linux branch, which also supports modesetting driver (DRI2) and 2D/3D acceleration for VideoCore4 (vc4) GPU (using DMA and VPU/GPU)
            (add VC4 driver to raspberry-kernel: copy /drivers/gpu/drm/vc4 and set /drivers/gpu/drm/Kconfig and /driver/gpu/drm/Makefile, modify dependency in drm/vc4/Kconfig from ARCH_2835 to ARCH_2708)
-U-boot (stephen warren's) supports USB keyboard. If no boot.scr found, interactive mode comes in. type 'help' for help.  e.g.:  ext4ls mmc 0:2 /boot
-BareBox (U-boot 2) seems better, at least more straightforward and complete with hush shell - if it only worked :<
-CMA mode for Raspberry means dynamic/automatic allocation of video-memory (can be enabled in config.txt via cma_lwm,cm_hwm,etc. settings)


Android-phone port (Pulse Huawei u8220): (XDA-developers forum is a good source of information)
-ClockWorkMod .img should be installed to 'recovery' partition of the phone with 'fastboot' linux tool (and telephone started with Volume-down + Red-endcall pressed)
-ClockWorkMod recovery (start with Red-endcall + Menu button pressed at startup)  (or fastboot linux-app through USB) can install .img/.zip to 'boot' and 'system' partitions
-extracting/rebuilding .img files (are in yaffs2/ext2...ext4 format): 'AOSP mkbootimg/umkbootimg', mtd-utils , 'Android Kitchen' tool or  
 (or 'mount -o loop boot.img /mnt'  (bzImage (the kernel), 'boot.img-ramdisk' (initrd))  (download 'yaffs2utils' from its webpage and build it)
 ('boot.img' ('boot' partition) is what's mounted under '/' and '/dev/mtd/mtd1', 'system' partition is mounted under '/system', 'userdata' under '/data', 'recovery' under /dev/mtd/mtd2)
 zipping to custom ROM: cd into directory, then:  zip -r ../archivename.zip ./*
-repacking initramfs to cpio: go into initramfs folder, then:   find . | cpio --create --format='newc' | gzip > ../initramfs.cpio.gz   
 cd..; mkbootimg --kernel zImage --ramdisk initramfs.cpio.gz --cmdline "mem=128M console=ttyMSM2,115200n8 console=ttyUSBCONSOLE0 console=ttyHSUSB0' --output boot.img  (tty0 shows kernel with amonra, but loops)
-startup,console: kernel calls /init directly which is configured via init.rc (init's source is found in Android source github under platform/system/core/init)  (can be replaced to sherpya/gnurou android-busybox)
 (other shell: platform/external/mksh, fbterm, fbconsole , fbcon (selectable as kernel option as Y or Module 'fbcon'), Linux Kernel can be compiled wit support for userpsapce 'con2fbmap' ; 'kmscon' for drm/kms)
-ClockWorkMod source can be found inside CyanoGenMod github tree: 'android_bootable_recovery' , the main part is 'recovery.cpp' ; AmonRa, Philz Touch and TWRP are also available as source-codes on github
-check console: property_get("ro.boot.console",console); sprintf(console_name,sizeof(console_name),"/dev/%s",console); fd = open(console_name, 0_RDWR | O_CLOEXEC, 0);
-writing to /dev/tty0 (screen console) from c:  int fd = open("/dev/tty0",O_WRONLY | O_CLOEXEC) ; if fd(>=0) const char* msg="blabla1\nblabla2\n" ; write(fd,msg,strlen(msg)); close(fd);
-build c program statically and stripped (to avoid libc.so and other dependencies:  gcc xxx.c -static -s   (can use arm-linux-gnueabihf-gcc  or arm-linux-androideabi-gcc for ARM target instead of gcc)
-USE TOM GIORDANO 2.6.29 kernel cyanogen_u8220_defconfig for Pulse (bugs in other's msm7201a_defconfig: halibut misses CONFIG_MSM_N_WAY_SMSM, CONFIG_HUAWEI_CAMERA, CONFIG_USB_AUTO_PID_ADAPTER, MDDI_TC... etc.etc.)
 (still need to comment out '-Werror' parameters in the Makefile for full configuration, also bug: /arch/arm/mach-msm/board-trout.c remove 'linux' before '../../../drivers..' )
*WORKING SCENARIO: amonra 'zImage' + initramfs.cpio.gz: amonra 'init' and '/sbin/herminux' statically linked writing to tty0 compiled with arm-linux-androideabi, init.rc: 'service herminux /sbin/herminux'
-/dev/tty:process's own; /dev/tty0:current console; /dev/console:virtual collection,set in kernelparameter,if more set, console is output to more ttys ; /dev/tty1..tty6: virtual terminals (by Ctrl+Alt+F1..F6)
-u-boot (2015.1) doesn't seem to support Qualcomm 'msm' SoCs (there were patches on git for msm7x27 though), alternatives: Qualcomm's LK (CAF), RedBoot, Barebox (uboot2), (LoLo, bootman, AKernelLoader, FREELDR)
*'kexec-loader' boots full kernel from current (small booted) kernel using 'kexec' command
-huawei8220 kernel (and CyanogenMod) maintainer: Tom Giordano, kernel: https://github.com/TomGiordano/kernel_huawei_u8220 (NO: UART-debug,ICS-Microclock-MK712-Touchscreen,backlight-control,Qualcomm-OTG; YES:fb-logo)
-framebuffer (examples taken from amonra-recovery 'minui/graphics.c' which uses 'linux/fb.h' which contains blitting/filling) memcpy is used to copy to current framebuffer, front/back framebuffer flips/alternates
-XIP for bootloader (in-place kernel from ROM, doesn't eat much RAM, ideal for bootloader that's run only at bootup) - selectable in kernel 'menuconfig' 
-to rebuild 'init' this is needed: 'CyanoGenMod/android_system_core' at GitHub , then:  arm-linux-androideabi-gcc init/init.c -I"include" -DHAVE_ANDROID_OS (android platform/external/libselinux (include & src needed)
-to be able to use console in own init program, /dev/tty0 need to be populated (mkdir("/dev"..., mknod("/dev/tty0"... )
-to boot '/hermiboot' instead of '/init' at bootup, append kernel command-line in the mkbootimg for 'boot.img' with:  'rdinit=/hermiboot' (if 'noinitrd' isn't given as kernel-parameter. In that case 'init=...' is the way)
-to fit boot.img into the huawei u8220 boot partition, 'adb' needed to be deleted...
-'kexec_file_load' is a built-in kernel function, usage example can be found in 'kexec-tools' source's 'kexec/kexec.c' named 'do_kexec_file_load' - problem: this system call is only implemented since kernel-3.17,
 (use 'kexec_load' instead, present since kernel-2.6.13: it has no glibc wrapper either, should be called with syscall() function of 'sys/syscall.h' )
-android doesn't have kexec built into, so need to use lower level constructs in 'hermiboot'
-Kernel booting for ARM can be found in linux-kernel source 'Documentation/arm/Booting'
-to build android busybox, ndk should be in /opt/anrdoid-ndk/..., and arm-linux-androideabi-gcc path should be given in $PATH (/etc/profile)... touch,net,mtdev,deb-mk,etc. needs disabled to build
*SIMPLEST CROSS-PLATFORM SD-CARD BOOT SOLUTION: giving 'root=/dev/mmcblk0p2 rw noinitrd init=/sbin/init mem=128M console=null' kernel boot parameters for boot.img, and flash it to recovery (so herminux-u8220-kernel fits)
 (maybe bit harder, but not as hard as kexec, and cross-platform way: calling 'hermiboot' and 'chroot'-ing from it, then 'fork()'-'execve()' to call real /sbin/init)
 IMPORTANT: the root partition (sd-card mmcblk0p2) must have a /dev folder, so older kernel, like u8220 2.6.29 can mount dev tmpfs, and console can be used)
*stdout (file number 1) can be redirected to /dev/tty0 to see printf/etc. :  freopen("/dev/tty0","w",stdout);


Tablets, Kobo, Nook e-book readers: - ?


base-system (kernel,busybox,/etc config-files,folders,base-tools, common libs & resources): intel-386 processor support was dropped since linux-3.8 (in 2012?), minimal is 486 (3.7 still has 386 support)
-------------------------------------------------------------------------------------------
 build newest, partly monolithic (important usb,disk,vga,sound-drivers built-in) REALTIME kernel, not-included modules as separate 'drivers' (pre-defined 'xxx_defconfig' can be found in arch/x86/configs/ )
 enable FUSE in kernel for ntfs support
*ash-history after power-off on each tty
*X should only start once on one terminal at login (/etc/profile, startx)
*fontset UTF8/i18n of tty terminals (ISO8859-1,2,15 codepages, etc.) (kmscon/fbterm)
 loadkmap should accept kmaps without path & extension, or use loadkeys instead -> solution: created 'kmap' Herminux-script
 rebuild glibc libraries from scratch
-mouse-buttons and scrolling in tty linux terminals should work (gmp, ncurses)
-reset screen properly when shutting down, prevent mc colours bleed out
-verbose USB-hotplug events can be supprassed on terminal by setting printk loglevel to 0  (at runtime by echoing the number to '/proc/sys/kernel/printk')
*Huawei (E2121?) 3G modem and pppd doesn't work fine, needs kernel-reconfiguration (now it's recognized as /dev/ptmx,/dev/sg1,/dev/sg2) and proper ppp settings
 remove 'chat' from busybox, using the better one coming with pppd
 add mkfs.ext3 to busybox (now only mkfs.ext2 exists) - busybox 1.23 doesn't support ext3/ext4, so e2fsprogs is needed
*lsusb (and lspci) doesn't print device-names, only numbers (busybox or kernel config issue?)
 (busybox-compilation for 486 (info taken from TinyCore): make CC="gcc -march=i486 -mtune=i686 -Os" CXX="g++ -march=i486 -mtune=i686 -Os -fno-exceptions -fno-rtti") (-mtune=generic might be better choice)
  (then 'make ... install' should include the same CC and CXX variables)
*EEEPC(?), MacMini2011 (b43) and TP-LINK WiFi adapter doesn't work due to firmware issues
*WIFI and DHCP
-auto-mounting sda drives from /etc/profile or ~/.profile, (controllable by mounter tray-app or system settings)

Desktop-environment: (maybe Wayland & Weston too with wlterm, or DirectFB,nanoX,etc.)
-------------------- DIRECTION: Drivers: modesetting(drm,dri,present) also for VC4 of BCM2835 by Eric Anholt (/dev/dri/card0) or as xorg-module, and also fbdev to work on devices without modesetting (/dev/fb0)
Xorg-server:
 rebuild newest Xorg-server+extras, 
*extra (Ati Rage Pro, ES1869, etc) drivers for Kernel/Xorg (bigger ones separated to packages if possible as modules)
-stop tearing - synchronize to VBLANK (movie, window-moving, etc.) - xv/xvmc? compositing? (EGL + compton?,xcompmgr?,compiz?,etc.)
 fontsets in /usr/share/fonts (a mono set for terminals, like unifont, ttf for JWM & X)
 xcursor-themes (is set in /etc/xinitrc with X env.vars, like export XCURSOR_THEME=)
-solve root-account xscreensaver (enable running as root for testing OR using 'xset'/'Xorg' blank time to launch /usr/libexec/xscreensaver files directly)
-change built-in default Xorg-server font and cursor-theme at compile-time? (for better Unicode-coverage?)
 should be brought back after switching screen (ctrl+alt+F1..F4) - it's on terminal 0, and can be put to current or 1st free terminal 
*also, terminal 'size' shouldn't be destroyed when exiting from Xorg
-fontconfig config-file error? (it seems, libXft isn't necessary, but libXfont needs fonts.dir to be created by mkfontsdir, /etc/fonts/fonts.conf needed)
 set keyboard-layouts (without xorg.conf, pseudo xorg.conf during startx script or call 'setxkbmap' with parameters given in /etc/desktop )
 keyboard-layout only works in startx if put AFTER rxvt... why? (was an issue when tried to substitute xinit with startx script)
 xrandr resolution setting at startx: if non-native resolution, mouse disappears when passes screen boundaries, and fonts become small (was an issue in startx-emulated 'xinit' only)
-add animations and sound effects? (visual/sound effects might automatically be disabled while CPU is loaded by apps or winchester is loaded by transfer)
-correct titles in wallpapers where panel covers them
 CURSOR DISAPPEARED ON 32BIT EEEPC with MODESETTING driver. had to comment out lines 432,433,439,447,448 in xorg-server-1.17.1/hw/xfree86/drivers/modesetting/drmmode_display.c
 fbset can be used to set resolution of fbdev on Raspberry PI (with kernel 3.18.10)
 mkfontdir is needed to create font configuration files (for Xorg core fonts, not for fontconfig/Xft)
*touchpad 2-finger scroll should work (tap-clicking is working already)
*RXVT Home/End buttons doesn't work in MC (ncurses) if rxvt is the $TERM variable?! :(
 hgui doesn't draw window-contents on EEEPC until resizing happens - solution: drawing widgets after window creation without waiting for resize/'Expose' events
*hgui font-height=ascent+descent (baseline is between the ascender & descender), but ascent/descent doesn't always contain accents/diacratical-marks!

Toolkits (for C/C++, with direct/binding TCL/Lua scripting support)
---------------------------------------------------------------------------------------------
 TK (tcl, ltcltk Lua-binding - unmaintained?, cpptk - c++ binding) - tcl around 3.7MB(lib-1.3MB), tk around 3MB (lib is 1.4MB)
?Fox (FXLua) - cool GUI, resembles Win95 many times, own filer (PathFinder), calculator, text-editor (adie), controlpanel, screenshot (shutterbug), etc. - libfox around 3.8MB  - if it could be stripped or older version used?
?FLTK (LuaFltk, TclFltk/wish) - fltk librares together around 1...1.1MB
?JUCE (luce) - how small a GUI app can be?
 Motif (LuaMotif, TclMotif) - lesstif library is 1.8MB, and still ugly IMO
 libXaw, neXtaw(Xaw3d-based,NextStep-lookalike) (kinda small, but ugly, hard-to-use stuff, needs libXt)
 IUP (written in C and Lua) - 11MB-source-tar.gz,7MB-binary-tar.gz
?tekUI (made in Lua and C, fb/DirectFb support, 700kbyte minimal-install, 1.3MB full install: 370kb-lib,275kb-example,610kb-share-ui .lua files, lua itself is 760kb full install:236kb-lua,149kb-luac,338kb-liblua.a) - buttons could be beautified a bit
 (minimal needs for graphic HelloWorld.lua button script to run: usr/bin/lua=236kbyte, usr/lib/lua/5.3/tek/=380kbyte, usr/share/lua/5.3/tek/=232kbyte , libXxf86vm=20kbyte )
 Agar? (can work in SDL, GPU and 2D/3D rendering is optimized, bindings?) source-package=2.7MB-tar.gz , uncompressed source = 14MB - couldn't find freetype
 PicoGUI 7.3MB-source! (Tcl binding, can be used with SDL)
 SDL2 (lua-sdl2)
?mtMintKit - around 470kbyte libsdl + 134kbyte libmtmintkit - looks good, mousecursor changes in SDL window, scrollbar-arrow doesn't repeat, can't select text in input field ?
 Curses (Lcurses)
 (VCLua (Lua Visual Controls, small native toolkit library for Win & Linux/GTK2)) - written in pascal
?(GraphApp? (LuaGApp)) - libapp.so = 830kbyte, statically linked simple (demo) apps are around 500kbyte (like 'imagine' picviewer)
 (wxLua) wxX11 - 1.1MB lib + modules
 bash+gtkdialog/xdialog(also-gtk)/xmessage(too-simple), zenity, yad, xmenu, 9menu
 xtpanel - usable from bash, small (170kb), but uses Xt & Xaw, ugly and mouse scrollbutton doesn't work
?GTK1.2 - 1.8MB all libs together (libgtk+glib+libgdk , libgtk itself is 1.3MB)
other GUI-widget toolkits/libraries (mainly C/C++):
?libGx(year2013,185kb-source - needs libCb and libTmr, compiled libGx.a is 426kb, statically compiled demo programs around 280..300kb with only X11 and stdc++ dependencies!, buttons look good, scrollwheel doesn't work, exit-button?) 
 yzone(year2000,120kb-source,make-error:expected-...-before-xor), 
 EZWGL(year1999,900kb-src-tar.gz,make-error:EZ_Png.c-dereferencing-pointer-to-incomplete-type),
 libgui(21kb,SDL+OpenGL-based,no-makefile-just-sources),
 SDL-Widgets(247kb-source,SDL-based,needs SDL_gfx(1MB-source) and SDL_ttf(5.5MB-source!) too)
 aedGUI(year2003, looks good, SDL-based, 700kb source, make-error:extra-qualification-TiXmlDeclaration, SDL_ttf internal copy can be used, SDL_rtf is optional for RTF-documents)
?XForms(year2014, 2.1MB-source-tar.gz, compiled: 890kb-libforms, 247kb-libflimage, not bad! lot of demos, scrollwheel working, established, usable file-dialog, relies only on X11 and XPM ) fontscaling lacks anti-aliasing (Xft?)
 missing/big: LGI, IBTK, Fresco(2.9MB-source-tar.gz-from-2006,Xfresco-needs-gtk), OpenGUI(9.4MB-source-zip), wGui(1.7MB-zip), Zinc(commercial?),Coral(ctGui-404Error),CX
*hgui (Hermit's own GUI-toolkit for X11) - faster to code it than getting and learning a decent one in small size :(

JWM:
 create/get good looking default theme (and other themes) with custom icons (titlebar-buttons,showdesktop-icon)
 disable window-move notification & taskbar-tooltips (no 'coordinates' in system.jwmrc)
 SOLVED: icon issue allow MIDItrk,HerMail,HermIRES,SPRedit icons to appear (_NET_WM_ICON XWMHInts) - jwm-2.3.0 (since snapshot 1095) fixed this (icon.c,icon.h,image.h), 
         also a simpler solution: set all "<IconPath>" for icon folders, name icon to the same as the Executable, or use .desktop file info
-sizes might scale with screen-resolution?
 ugly stertching of background images? now in jwm-2.3.0 scaling mode is supported
 showdesktop sometimes needs 2 button-pressing (focus issue?) - solved in jwm-2.3.0?
 translate to hungarian and add hungarian language po file to source/installation
 disable taskbar popup (show only quicklaunch) (taskbar.c)
 disable titlebar-scrollwheel-'Shade', that can be confusing to people who don't know this feature, when window disappears of accidental scrollwheeling in titlebar (event.c)
 avoid flickering at opaque resizing - hgui double-buffering ?? or don't clear window area when resizing, let the application do it -> no need for double-buffering to avoid flickering
 (tips to remove flickering: bit_gravity member of XWindowAttributes to StaticGravity, use XSetWindowBackground/XSetWindowBackgroundPixmap with 'None' as pixel/pixmap, XDrawImageString to put out strings, use GXxor XOR as XGCValues 'function')
 separator for the tray too (not just for the menu) (menu.c, taskbar.c, spacer.c, tray.h, traybutton.c) - solved with workaround: separator.png as TrayButton, running nothing
-delay of 'placing'/'removing' submenus (like in XP, so user don't have to be as precise when going into it) (menu.c)
*jwm-2.3.0-fast click/release period causes JWM not to recognize 'release' event and miss opening the app corresponding to tray-icon
 jwm-2.3.0-when window is maximized, titlebar-button's active area gets reduced from above (by bordersize) (border.c)
 jwm-2.3.0-remove feature of advancing in taskbar to scrollbutton (taskbar.c)
-create confirmation-window for poweroff/restart (confirm.c) - can and should be a separate script with hgui and countdown
-use HermitGUI for confirmation-dialogs (better looking buttons fitting to desktop-theme? though no XFT antialiasing) (confirm.c, button.c)

mlterm: (other small terminals: xvt,rxvt(mcedit scroll issue after built i486 - needs TERM=rxvt !),aterm(libXt), mlterm,urxvt, st(stterm),nanoterm,nxterm, fbterm,kmscon(libtsm), wlterm(libtsm) for wayland, ), uterm
 rebuild with optimizations in ./configure options
*should be dark colour-scheme by default (cursor not seen in mcedit, blinking cursor might be much better, safer to be visible)


ALSA: (get soundcard-list with 'cat /proc/asound/cards' or 'cat /proc/asound/pcm' ;unmute, set volume with 'alsamixer' ; test with: 'speaker-test' or 'cat <file> > /dev/snd/pcmC0D0' or /dev/audio0)
-----
-minimize size
-set/retain alsamixer-state at startup:     to save: 'alsactl store'   , it is stored in /var/lib/alsa/asound.state or /etc/asound.state (gets loaded at every startup),  reload: 'alsactl restore'


buildtools: (bash, binutils, glibc,glib2, linux-API, gcc, python, perl, make/automake/autoconf, pkg-config, bc, bison, expat, etc.)
-----------
-rebuild from scratch

pacman: is it needed? arch is a bit different, packages requiring systemd won't always work
-------
-rebuild without systemd/udev (older versions?)


SHELL TOOLS
===========

nano:
-rebuild

mc:  (or lightweight alternatives: 
---
-rebuild
*Shift+F6 should work as rename , Shift+F2 as 'Save As', etc...
*Separate terminal in background should work
 ZIP file extraction with uzip for busybox: /usr/lib/mc/extfs.d/uzip -> my $op_has_zipinfo=0
-folders should also be selected when inverting with *
-buttons should show their Shift / Alt versions when Shift/Alt pressed
-screensaver for mc? (like NC had)
*nothing shown in the background
*what takes so long to load sometimes?
*refresh folders frequently (say in every 5 seconds) or when mc window is shown (so no need to press Control+R) every time user needs to see the latest 'news'


NETWORK:
ppp: (wvdial not needed, as it's bigger with more deps)
-should be verbose to see when it connects and to what IP-addresses, signal-strength,etc.:
 type this: 'touch /var/log/pppdebug' ; then add this to /etc/syslog.conf: 'daemon.debug;local2.debug  /var/log/pppdebug' ; then restart syslogd: 'pkill -HUP -x syslogd' ; 
 then to see pppd messages in realtime on commandline: 'tail -f /var/log/pppdebug'
-a full chatscript should be supported, preferably built into /etc/ppp/options
 rebuild
-busybox '/usr/sbin/chat' doesn't work with all ppp-options/chatscript variations, use the one coming with pppd
-created "ppp" and "uppp" to connect and log, and disconnect pppd
(-wvdial,modemmanager,networkmanager(lubuntu))
DON'T SET 'xxxx' or any alphanumeric string as default PIN in the chatscript, simply always ask for the PIN code or ask/save only for the first connection with the modem after startup

links,elinks,hacked-links:
-rebuild a graphic version, probably hacked-links will do everything important

minicom:
-rebuild

cdrtools:
-rebuild

grub:
-rebuild
help:  
grub-install --boot-directory=/mnt/sda1/boot /dev/sda
grub-mkconfig --output=/mnt/sda1/boot/grub/grub.cfg
grub.cfg: 
insmod part_gpt
insmod part_msdos
insmod ext2
set timeout=3
menuentry 'Herminux' {
 set root='hd0,msdos1'
 linux /boot/herminux-kernel root=/dev/sda1 rw nosplash
}

parted:
-rebuild

partimage:
-rebuild

ntfs-3g: (ntfsprogs is now built into. mtools is a separate thing)
-rebuild


GUI TOOLS
=========

Tcl/TK (build tcl first) or Lua+TK (or Xdialog?) frontends for configurations, cdrtools, tar, ppp, grub, parted
 tray applets: keymap, volumeicon, battery, CPU-meter, network-meter and connection, (date+time display/setting), mounter
 volumeicon(?)/XtMixer(Xt)/AbsVolume(gtk) , Mixer.app(GNUstep, doesn't work) , 


DESKTOP-ENVIRONMENTS(nonGTK): EDE-2.1(Equinox-DE,fltk,12.9MB-tar.gz,edelib-1.1MB,3MB-installed), xd640(fltk-utf8), fox-desktop(different programs), (xpde),E17(Enlightenment,EFL-widget-library-56MB-tar.gz,15MB-installed),
                              Etoile(GNUstep-based-(12MB-tar.bz2),light,modular), Mezzo(OpenLook), UDE(Unix Desktop Environment,X11,no-taskbar&buttons-hexmenu)


FLTK? Fox-toolkit? Or TK?

Gtk - needs atk, glib, fontconfig-harfbuzz-cairo&png&svg-pango, gdk-pixbuf ; 
      used: gtk2.24.25, glib-2.44.0 (or 2.34.3), atk-2.16.0, cairo-1.8.10(for-poppler-0.12.4)/1.10.2(needed-by-webkitgtk2.4.9), gdk-pixbuf-2.23.5, pango-1.34.1 (it can still find cairo 1.8.0 (1.7.6+), and gtk2.24.25 / 2.24.27 finds it) 
     (cairo-1.6.4/1.8.0 is too old to find libpng16.pc, modify ./configure script or pkgconfig/cairo.pc accordingly from 'libpng12' to 'libpng16', cairo-1.8.10 is the latest that's below 10MB)
     (gtk-2.6 ./configure can't find pango1.36.8, comment out 'else' errormessage in the ./configure script ; gtk2.6-compile-problems with gdk-pixbuf2.30.8)
     (gtk2.24.27 - undefined reference to 'cairo_region_destroy' - needs at least cairo 1.10?)
     (gtk2.24.5,gtk2.24.25 - missing libEGL.so.1, needs 'make' 2 times to solve this)

File-browser (fox toolkit has a decent one)
-------------------------------------------
non-GTK: mc,worker(excellent, only X11 needed), xfe (fox toolkit, contains xfi,xfw image-viewer and text-editor), Nao File Manager (fox-toolkit), xfiler(of siag), xnc (make error, made in 2002, too old?), xd640/flfile/flfm
GTK:  pcmanfm (needs libfm,libfm-gtk), emelfm2(works), spacefm1.0.0(needs-libudev-143+)

Notepad, Editor, IDE  (mcedit,mcview is good too)
-------------------------------------------------
non-gui: nano, mcedit, textadept(also gtk), MinEd (6.9MB source, Unicode-capable for xterm), jed-devel, puff(doesn't load whole file into memory), zed, lpe, led(small), hte/ht(executables,1.8M), aee(also X11:xae), e3(assembly, less than 10kb), mp(easy-to-use)
non-GTK: xcoral(diectly-Xlib,796kb), Elvis(conflicting types of getline), adie(fox), xfw(inside xfe based on fox-toolkit), Emacs(motif), vim(motif), yudit(hungarian, older:motif, new:standalone), NEdit(motif0.95.2-is-too-new), SM/Editor(motif), 
                   NinjaIDE(python), xedplus(siag), CoolEdit(UTF-8 capable), zoinks (IDE,deprecated-conv), xenon, xed, edith, sted, richtext(rtf), ted(X11-rtf), xae(also-CLI-aee), fte(X11-missing-gpm.h), sam(from-plan9), axe(Xaw), xvile, xd640/flnotepad
GTK: Leafpad(fine,smallest), Gedit(libgnomeui-libgnomeprintui-missing), Beaver(fine), Geany(fine), BlueFish(m4?), Scribes(needs gnome-doc-utils), textadept(lua,scintilla-autocomplete.o-missing),
          tea

Hex-editor: mickey(fltk), bless, ghex, lfhex(large-files), chexedit(ncurses), bpatch(doesn't load the whole file), hexedit, hexcurse(ncurses), hexpert(simple-but-flexible), biew(hex+disass)

PDF/ebook-reader:
-----------------
non-GTK: xpdf(motif/lesstif-works-fine)
GTK: fbreader(libunibreak-autogen.sh;invalid-new-expression-of-abstract-class-type-ZLGtkDialogManager), epdfview( poppler-glib-0.5.0+(0.15.1+-requires-cairo1.10,used0.12.4-requires-cairo1.8.10) )

Calculator(Misc.)
-----------------
x11: Xcalc
fox: fxcalc
gtk: Galculator

Image-viewer: libjpeg,libpng,libgif,libtiff,libXpm, imlib2
-------------
X11-based: feh(176kb,needs imlib2(380kb),libXinerama(7kb),'make curl=0',libidn(3.3MB-tar.gz)), meh(too-few-arg.-to-DGifOpenFileHandle), sxiv(works,65kb,'could not allocate color #555555',needs-imlib2), xloadimage(GCC-no-longer-implements-varargs.h), 
           zgv(deref.pointer-to-incomplete-type), xzgv(cairo-undef.ref.to-XScreenNumberOfScreen), xbitmap(xorg-basic,needs-xaw7-xbitmaps), imlib2_view(has -s 'scale' option, can be used for GUI-scripts to form a good viewer)
non-gtk: xfi (fox-toolkit-based viewer inside xfe package), imagine (graphapp-based)
python-based: imgv, mirage
gtk-based: gpicview(lxde-project,good,small), geeqie, gqview, gtksee(old-save2png:dereferencing-incomplete-pointer), viewnior(needs gnome-libs too), qiv(no-gdk/gdkx.h), paul(scanner-related)
xfce-based: ristretto

Image-Editor:
-------------
X11-Xaw: Xpaint(configure-xaw3dxft-missing), imagemagick(edit,convert,7.6MB-7z), xd640/flpaint
GTK: Mtpaint(too-few-args-for-DGifOpenFileName<-'nogif'solved), gimp(big-19MB; v1.1.8-4MB-fails-pointer-incomplete-deref; v2.2.17-12MB-libgio2-undef.ref.to-g_variant_dict_undef,g_close,etc.; 
     gimp v2.6.12 (needs and used babl0.1.8, gegl0.1.6, freetype link needed to freetype2 folder, and it compiles!), 
     dia(11MB-all-installed), gpaint(drawing.c-undeclared-GTK_RESPONSE_DISCARD), InkScape(big-25MB/19MB;old-v0.44=6.5MB;libgc6.4+-missing), MyPaint(big-37MB), pinta(mono/gnome)

Screenshot: scrot(21kb,needs-imlib(380kb),giblib(38kb)), fbgrab(framebuffer-console->png),xfbgrab(X11-frontend,unfinished), xwd(gimp/ xwud(20kb) can view it - netpbm converts xwd-to-png but compilation error deref.pointer...),  xv(modifierr+converter), greenshot
----------

Music player - codecs: libmpg123, libmad, libFLAC, libmodplug, libsidplay2/libsidplayfp, libvorbis, containers: mp3,flac,ogg,aif, sid, mod,xm,s3m, wma, amr
------------
mpg123, mpg321
Audacious3.6.1 (gtk2,fine)
xmms (v1.2.11 for gtk1.2 works, ugly X11-ish fileselector though, but scroll works), xmms2 (needs waf to build)
deadbeef (compiles, but plugin error ?)
alsaplayer (0.99.81 compiles, but 'install-sh' permission need to be corrected to 755) - when adding tunes, Glib critical error: g_sequence_iter_get_position: assertion 'iter != NULL' failed
lxmusic - needs xmms2-client

Movie Player/mediaplayer: - codecs: mpeg2 (videoCD/DVD) ; mpeg4-II (avi,divx) + mp3 ; mpeg4-advanced(h264)(mp4,mkv,mov) + aac ;   audio: ac3(dolby-surround)
-------------------------    libavcodec (in ffmpeg / libav) - needs 'yasm' and 'ffmpeg' to build  ; containers: mpg,mpeg,mp4,mod,avi,mkv,mov,wmv,3gp,tts
mplayer (ffmpeg) - works fine on framebuffer without gtk/etc. : mplayer -vo fbdev2 xxxxxx.xxx ; built-in 'gmplayer' frontend needs Xvideo to scale/fullscreen 
mpv (libav?) - needs 'waf' to build
vlc  - many config-options, ASCII-art playback on console ; no GTK/SDL?
xine - xine-ui needs xine-lib
parole - 
ffplay (coming with ffmpeg,SDL-based?,gives-segfault), avplay(coming with libav,segfault)
gnome-mplayer (mplayer frontend - needs dbus?)

WordProcessor
-------------
ted(motif), Maxwell(motif), papyrus(tcl-required), pathetic-writer of Siag (complains about missing font), xd640/flwriter
GTK: Abiword 2.7.1 - deps: fribidi 0.10.4, glib,gthread,gobject-2.6.0, libgsf-1.12, wv-1.2.0, gio-2.0, cairo-pdf, cairo-ps, gtk-2.12.0, gtk+-unix-print-2.0, librsvg-2.16.0
                used: fribidi 0.19.4, gtk-2.24.25-and-deps, libgsf-1.14.33, wv-1.2.3, librsvg-2.34.0 - issue: goffice-app.h -> /usr/include/glib-2.0/glib/gmacros.h' : #error "Only <glib.h> can be included directly."
     Abiword 2.8.6 - the same issue,  Abiword 2.9.0 same issue (needs raptor-1.4.17+(used2.0.7), redland1.0.10+(used1.0.15) , rasqual0.9.17+(used0.9.25) )
     Abiword 2.9.4,3.0.1 - needs Boost 1.40.0+ library which is BIG!!! (bz2:32MB+ gz:64MB+) - IS IT BUILDTIME-ONLY dependency?  (then buildchain should be expanded with 'boost') - gtk2 or gtk3 selectable 
                           (cannot convert bool to boolean error -> src/af/util/xp/ut_jpeg.cpp needs some fixing: casting 'true' or 'TRUE' or '1' into 'boolean' in some places which compiler complains about)
                           (.la files were missing for cairo,libpng,x11,etc. - conclusion: .la files really need to be kept in devheader-tarballs for compilations)
QT: Scribus (needs Qt >= 3.3)


Spreadsheet
-----------
TUI-macrocalc, oleo(curses/lesstif), sc(yacc), tsiag(of siag), teapot(curses,also gui), xspread(xorg-gui-too)
GUI-nongtk: siag(neXtaw,Mowitz,slow GUI, doesn't remember window-size, font-issue - solve by copying/installing /usr/local/share/Mowitz/fonts.txt etc properly to the system directory, example-opening segfault?), 
                       abs(Xaw,notbad,nomousescroll), abacus(X11,old,no<iostream.h>), oleo(lesstif,configure-stops-mktime), spreadcat(Motif), teapot(fltk1.3,curses,cmake-sucks), xd640/flspread
GUI-gtk: mtcelledit(Gtk2/Qt,builtin-dep-sources-in-order:libmtkit,libmtimg,libmtgex,libmtcelledit,libmtcedui), gnumeric(needs-gnomeui)
  Gnumeric 1.1.7 - deps: glib,gobject,gmodule-2.0.0, libgsf-1.1.0, gtk+-2.0.0, libxml-2.4.12, libglade-2.0(min.1.99.7), libgnomecanvas-1.113.0, gal-2.0(min.0.0.5), libgnome-1.105.0, libgnomeui-1.106.0, 
                         libgnomeprint-1.114.0, libgnomeprintui-1.114.0


Web-Browser:
------------
-commandline: links, elinks, hacked-links for command-line are the best (w3m and lynx are poorer)
-graphic(nonwebkit): links(-g,glinks,xlinks - fine), hacked-links, Opera(Presto,Qt,closed-source), dillo(poor-rendering-engine), NetSurf(gtk/fb-sdl/etc, no js but not bad for size), Mosaic(outdated,motif), Chimera(athena,xmkmf)
-non-gtk(webkit): NetRider(too basic for webkit), Fifth, Origyn(couldn't get source), xd640/flspider
Arora? Dooble?
-gtk(webkit): Midori-0.5.9(needs:glib-2.32,gtk-2.24,cmake,vala-0.16,libsoup-2.27.90,sqlite-3.0,WebkitGTK+1.8.1(2.8.1-needs-cmake,used2.4.9-needs-ruby),libxml2, libnotify(used0.5.0),libdbus0.7,glib-dbus,libwebp, 'python' symlink to python2, gperf, cairo-1.10+, harfbuzz-icu),  
              Uzbl, NetSurf(gtk-version), Skipstone(gecko,needs-mozilla-includes), surf(no controls)

Search engine alternatives to google:  
         gigablast.com/search (very fast and small,no google by default,seems OK) , duckduckgo.com (insured privacy,no google at all), ixquick.com (private-search,no IP-tracking),
         hotbot.com (90s style interface, uses external sources) , yandex.com (very big Russia-hosted but useful for English, no google/yahoo/M$ involved), and of course Wikipedia


Email-Client(MUA): (mailbox formats: MH(message-handler)/nmh(new-message-handled)/nmml, maildir, mbox, maildrops(Unix) )
------------------
-Commandline: mutt(also usable as commandline), MH/nmh(), mailx(root not allowed),GNU-Mailutils(make error), libremail(how to use), mail(older than mailx), sendmail(busybox has its small version) , getmail(python), 
              fetchmail(gethostbyname error,needs /etc/services), procmail(to retrieve from server), mpop(pop3-retriever,no delivery info)
-TUI: alpine(nosend)/re-alpine(nosend)/pine, mutt(works,SASL/SSL-issues), sup(ruby), ezimail(sasl_getprop missing), Cone(make couldn't find system mail folder), simple mail client(TUI?), Elm(outdated), elmo(segfault)
  Alpine: configure POP/IMAP by entering Setup("S"), then Config("C"), then set "Enable Incoming Folders Collection", restart Alpine, then 'Folderlist->Incoming Folders' Add("A"):
          server name: 'mail.t-email.hu:995/novalidate-cert/user=hermit@t-email.hu/pop3/ssl'  ,  folder to add: 'INBOX'  , give description for it, press enter on folder-name, then give password when requested
  Mutt: create ~/.muttrc file with settings inside, check (system-wide '/usr/local)/etc/Muttrc' for example ; understands 'MH' mailbox format: 'set mbox_type = mh' in .muttrc
        start by giving which mailbox to use 'mutt -f pup://mail.t-email.hu', it asks for password if not given in .muttrc
  Nmh/MH: (add /usr/local/nmh/bin to $PATH), configurable via 'install-mh': ~/.mh_profile (blank line not allowed) lines: Path: <full/$HOME-relative folder> ; Inbox: <relative to 'Path'> ; MailDrop: <path e.g. /var/mail/user or $MAILDROP env.var.> ; 
       for SMTP mail sending, set server in 'mts.conf', to get mails from server for 'inc' use fetchmail & procmail / getmail(python)
       use 'inc' command to populate Inbox mail-folder ( 'inc: -file <path to maildrop folder>' ) ; 'scan'-scan folder ; 'folder'-change folder ; 'show'-display messages ; 'comp'-compose ; 'repl'-reply ; 'refile'-move message to other folder ; 'rmm'-remove
-non-gtk: xmail(X11,languageF),xmh(Athena,Xt),exmh(TclTK-cryptic), postoffice(fltk1.0.x-compileerror),HerMail(fltk,segfaults), Mulberry(X11,6MB-source-tgz,stdc++5!,svn),IshMail(X11/Athena/Motif,make-fails), GNUmail(OpenStep), WanderLust(Emacs), Gnus(Emacs/XEmacs), MH-E(Emacs)
  xmh: needed 'xbitmaps', and to move 'xbitmaps.pc' from '/usr/share/pkgconfig' to '/usr/lib/pkgconfig'  , xd640/flmail
-gtk: TradeClient(gtk1.2), Spruce(gtk1.2.6+,autoconf-suck), Sylpheed(3MB-bz2), Claws(Sylpheed-fork,10MB-source), Thunderbird?(handles MH,maildir) / Netscape-Messenger? / Seamonkey-Mail, GTKmail(gnome?), mmc(my-mail-client,gnome?)

Downloader: Transmission/rtorrent, some youtube-downloader?, ftp/gftp, wget, ssh/vnc, samba-share

Scheduler/Calendar/Finance/Post-It-Noter/Stopwatch/Clock: osmo? 

Hardware/System: hardinfo, gparted, grub-installer

Disk-Cataloguer: gwhere

CD/DVD-writer/burner: flburn

Audio-editor/Zakker:
non-GUI: sox, fluidsynth -a alsa -m alsa_seq -c 1 -z 1 -s -C 20 -R 50 soundfile.sf2   ;   timidity -iA (server), or timidity midifile.mid (player), /usr/local/share/timidity/timidity.cfg -> soundfont xxx.sf2
X11: Xforge, rosegarden2.1pl4(old)
sdl: milkytracker(RtMidi-undefined-references)
fltk: ZynAddSubFx
NON DAW (seems good,source-from-git-only)
fox: ReZound(can use libsoundtouch,libaudiofile,libogg,libvorbis,libvorbisenc,libvorbisfile,libflac,libflac++)
gtk: audacity-2.1.0(needs wxWidgets-2.8.12), swami-2.00 (libinstpatch 'examples' should be deleted in Makefile SUBFOLDER=... to avoid g_object_get error, needs libgnomecanvas-2.0+(used2.30.3),libglade-2.0+(used2.6.4),glib-2.44? )
Qt: qsynth (needs Qt4.4+)


GAME / EMULATOR:
-vice - sdlui or gtk-ui(needs VTE)
 xsudoky (configure error message about architecture in Spanish?)
 xcheckers (works, but complains about: could not allocate color, could not load font lucidasans-14)
-by Joe Wingbermuehle: maze.c (and x86-64 assembly maze.s, text maze generator of different sizes) ; xdiamonds (only Xlib and libXpm needed, 100kbyte)
-FreshPorts.org/games: lincity(for SVGAlib & X11?, 700kbyte packed), xasteroids(libX11,libXext), 3dpong (X11,needs :0 as argument), KnightCap(3d chess, OpenGL/Mesa?, X11,Xt,Xi,broken link),
    ftp.x.org          0verkill (funny ASCII-art network-multiplayer, libXpm?, fine 96kb+datafiles+sprites(1.3M) :), 54321 (SDL, 2/3/4-dimension classic logic games, 3MB source),
                       acm (LAN-oriented flight combat-simulator, X11,Xext, 1.2M source), *affenspiel(X11 only (no libXt!), 13kbyte), afternoon stalker (SDL,flatzebra, 270kb source, can't find SDL_image)
                       alienwave(ncurses shootemup 48kb), aop(simple 9kb Ncurses reflex platform game), bastet (tetris, ncruses, 326kb), linux.maruhn.com/cat/Game/X11.html: blackjack, pente, xamigo, xblast, xmahjongg, xvmahjongg
                       xbomb-2.2b(30kbyte,X11,Xt,ugly minesweeper-clone), ibiblio.org: tetris clones: altris(X-tetris collection),atris,cxhextris,itetris,nct,tetris(for terminals),tetrix,xjewel,xhextris, 3D Tetris (T3D.tar.gz, Xt,Xaw,PEX) 
                       spy vs bob, boulder dash, xtrek, xblackjack, xblockbuster (breakout), xminesweep, XPool (XPoolTable1.3.tar.Z), xtetris-2.5.2.tar.Z, xasteroids, 
                       xlander, xbattle, xhearts(cardgame), missileX, xjewel, xtank, xpilot, xboing, xtet42, xdemineur, xtb, xblast, xboard, spider (cardgame), 
                       nethack, xchomp(pacman-clone), xfallout(xjewel/tetris-like), xsobokan, virtual combat (vircom, 3d), xfortress, xconq, xgolf, mazewar, xpipe man, dodger, jet set willy
-tiny SDL games: Tiny Tetris SDL-v1.3, 54321, ...
-linux-games.com: 
-tuxracer, wolfenstein, gltron, supertux, mega mario


ELECTRONICS: 
-circuit/pcb-design: gEDA-gaf-1.8.2 (gschem) builds&works (1.9.2 unstable has segfault), pcb-20140316 needs OpenGL?!, Eagle? (not opensource), kicad
-circuit simulators: ngspice-26 (and ngnutmeg,xspice) builds&works, gspiceui needs wx,  gnucap/acs too old to compile, LTspice is free and has many models included but runs in Wine only
-programmers: avrdude-6.1 works fine (with pickit2), uisp-20050207 works (with LPT), pk2cmd-1.20 works, muprog-1.254?, libusb-1.0.19 & libusbcompat-0.1.5 works, PonyProg2000-2.07a doesn't compile?
-assemblers/compilers: avra-1.3.0 assembler works, avr32-binutils-2.23.1?, gavrasm didn't build, gputils-0.14.1 (gpasm) works, gpsim-0.27.0 works?, sdcc-3.4.0?
-analyzer:  gtkwave-3.3.54 builds&works, gnuplot-5.0.2 builds&works, nutmeg (part of spice), gwave? xoscope-3.1 doesn't build?


PRINTING,SCANNING: CUPS, xsane, easyscan

SEARCH,DESKTOP-SEARCH: turma?

SF2 sounbank! (small(4MB),medium(64MB),big(256MB)?)

Font-selector: xfontsel 
Font-editor: FontForge(5MB-source,oldname:pfaedit), gbdfed(xmbdfed), gfe, fstobdf, nafe(text-based)  under-dev.:spif, gfonted,  propietary:Fontlab, FontMaster, Font Creator, Adobe Font Developer Kit


-misc. X apps (only relying on Xorg libraries), good-to-have ones with *:
----------------------------------------------------------------------------------------------------
 luit (works: edit Makefile, delete -Werror=implicit)
*mkfontscale, mkfontdir - works
*moonclock (27kb, works: Imake-xmkmf,xorg-cf-files, shows moonphase?!)
 oclock (works, 15kb, a little plot at the top)
 onscreend (works: needs xosd, and font properly configured in .c source, e.g. 'fixed'), run onscreend then type:  echo blabla | putfifo /tmp/onscreen
 rendercheck (works)
 showfont (depends on libfs X font-server)
*transset (12kb, compiles, needs something else to really set opacity between 0..1)
*xapplaunch (no xpm.h, needs motif or Xaw!)
 xauth (works, misses /root/.Xauthority)
*xbacklight (misses xcb-atom, xcb-aux)
*xclipboard (14kb, works but 'CLIPBOARD selection conversion failed messages on Control+C or Copy event)
*xclock (41kb,works, can be made with libXft,libXkb support)
 xconsole (works) e.g. sending to it with 'echo blabla > /dev/console'
*xdaliclock (83kb, works, 'make install doesn't work')
 xdbedizzy (works, 'cannot find matching double-buffer capable visual')
 xditview (works, but WTF is ditroff? - no file-dialog, just type path+name of file)
 xdpyinfo (missing xtst package)
 xdriinfo (needs GL/MESA library)
 xdu (works, but unable to load fontset, cannot convert helvetica to FontStruct)
*xearth (WORKS, 188kb, awesome desktop background, refreshes every 5 minutes)
*xeyes (WORKS,16kb) good to find mouse on screen
 xfd (23kb, works, but can't load any fontset yet)
*xfontsel (31kb,works, starts even if no fonts installed)
 xgamma (needs xxf86vm)
 xgc (works, tests X by graphic-primitives,etc)
 xkeycaps (missing X11/bitmaps/gray)
*xload (10kb, WORKS fine), set to be good looking by 'xload -geometry 20x20 -bg black -fg red -nolabel'  ('-scale 10' for styling)
*xlsfonts (WORKS, 15kb,prints in console what charsets are found on the system) (now at very basic system: 'fixed', 'cursor', 6x13, etc.)
*xmessage (works, 14kb, looks ugly with 2D Xt/Xaw rounded buttons)
 xmodmap (works, 28kb, sets modifier keys for keymap in commandline)
 xphelloworld (needs xprintutil,xprintapputil,xp)
*xplanet (WORKS,2MB (1MB is executable)) to set other planet than Earth, call with e.g. 'xplanet -body venus' , but corresponding jpg should be downloaded
*xrefresh (works,7kb)
 xseticon (missing gd.h)
 xsetpointer (needs xi)
 xsetroot (needs xbitmaps)
*xtacy(works, 126kb, a lot of graphic demos, some static too, can be used as small screensaver or just to test Xorg/speed)
  xtpanel(X11/bitmaps/dot missing, relies upon Xt and Xaw) - to create GUI from script?
*xvinfo (needs xv)
*xmag (works, 33kb, only steady shots)
*xwd (works, 25kb, dumps contents of a Xorg window) - useful for screenshots? or use 'scrot' instead?
 xwud (works, 20kb, to view .xwd screen-/windowdumps)
*xcalc (WORKS,28kb)
 xfinans(works, 143kb, ugly X interface, nonstandard /X11R6/bin kinda bin folder)
 xedit (640kb, Xt+Xaw, but still can't have a file-dialog?)
 xwpe (needs gpm.h) is a development environment with syntax-highlighting?
 bitmap (needs 'xbitmaps')
*xman (WORKS,61kb, fine, good to read man pages in X window)
*xmore (WORKS,6.3kb, good as basic viewer for X, but complains before starting GUI: cannot convert string -adobe-courier-medium... to type FontSet)
 
WindowMaker-legacy dockapps, looking fancy, work in plain X too, best signed with *:
----------------------------------------------------------------------------------------------------------------------
*wmcpuload (27kb, works, looks fine), type 'wmcpuload -w' to display in window  (how to display in panel?)
 wmdf (works but can't recognize -w option, needs /etc/mtab)
 wmifinfo (works, no window-mode option)
 wmix (works,starts but no window-mode option,cannot-install)
 wmmemload (./compile-missing)
 wmnetload (libdockapp-required)
 wmsm (works, no window-mode option)
*wmsmixer (45kb, works & looks fine, not needed -w) -s option for shaped window if possible, -a for smaller window, -position xxx for position, -d xxx for device (other than /dev/mixer)
 wmspaceclock (needs gdu-pixbuf/gdk-pixbuf.h -can't find)
 wmsystray (works but meant as WM dock applet)
 wmtop (works but no window-mode)
 
Tips and what can be taken from Puppy/Damn-Small/Slitaz/etc linux:
------------------------------------------------------------------
Puppy uses 'xload' as 'Tray'/'Swallow' option in system.jwmrc : xload -nolabel -bg black -fg red -hl white
'Iconpath' is given for all icon-places in system.jwmrc
'/etc/mtab' is a link to /proc/mounts
'PATH' & 'LD_LIBRARY_PATH', TERM='xterm', 'GS_FONTPATH', 'LANG=en_US.UTF-8', 'G_FILENAME_ENCODING' is set in /etc/profile
'export GDK_USE_XFT=1' and 'RGBDEF=/usr/share/X11/rgb.txt' in /etc/profile 
tmpfs,devtmpfs,swap are set in /etc/rc.d/rc.sysinit
/root/Startup/ has automatically run apps, like 'freememapplet_tray'
rxvt-menu can be found in /root/.rxvt.menu  (called from .Xdefaults)
keybindings (e.g. suspend-button, control+alt+del taskmanager, print-screen:screenshot) can be found in /root/.xbindkeysrc
'absvolume' v3.91/3.96:'MENU'_BG-variable volume tray-applet by hairywill is ran in /root/.xinitrc
font is set in /root/.Xresources
/run is a symlink to /tmp
test-examples in /usr/share/examples (video/text/etc.)
colour-names and values are in /usr/share/X11/rgb.txt
puppy (scripted-GUI bash+gtkdialog) applications (pprocess,pburn,pfind,pupdial,etc.) are in /usr/local/ and /usr/sbin
puppy /root/.jwmrc menu is generated automatically from template/_root_.jwmrc in /etc/xdg-folder
/root/.jwmrc includes /root/.jwmrc-tray and /root/.jwm/ jwmrc-theme and jwmrc-personal
does JWM have a real 'Dock'? How to use it? could be used for WindowMaker apps like wmsmixer,wmcpuload
applications to 'steal': script-examples/ideas, osmo, xchat, gftp, mhWaveEdit, rubix, xsoldier
                         tray-applets: blinky, xtmix/absvolume, asapm, freememapplet, xload

Stali (static linux) http://sta.li is an interensting source about benefits of static linking all applications.


----------------------------------------------------
commandline examples/tips:
install herminux package: cd / | tar -xf xxx-herminux32.tar.xz
pack into herminux package: tar -cJf xxx-herminux32.tar.xz -C xxx-herminux32 .
find exrpession in files in folder: grep -rinw <foldername> -e "<expression>"  ('w' means: match only a whole word, 'i' means ignoring upper-/lowercase)
.pet extract: rename .pet to .pet.tar.gz and it will be uncompressable
.deb extract: ar xv xxx.deb
extract 7zip with directory-hierarchy: 7za x file.7z  (or .zip)
create iso (for e.g. 'cdrecord burning') from content of current directory: mkisofs -JR -V "label" -o outputfile.iso .
mount iso: mount -o loop <isofile>.iso <mountpoint>
open iso: from midnight commander with help of 'isoinfo' from 'cdrtools' (or 'genisoimage') package
erase rewritable CD/DVD: cdrecord -v dev=/dev/sr0 -sao blank=fast
burn iso to CD/DVD: cdrecord -v dev=/dev/sr0 -sao inputfile.iso
extract cpio: mkdir output | cd output | cpio -idv < ../xxx.cpio
copy only symlinks (with dirs): cp -r -s source dest
set hardware-clock:  date -s "2015-06-02 22:42:00" ; hwclock -w
create patch-file:  '!' style: diff -crB <source-file/folder> <changed-file/folder> > xxx.patch  (-r 'recursive' is needed to create patchfile for entire folders)
                   '+/-' style: diff -Naur <source-file/folder> <changed-file/folder> > xxx.patch
check battery status: /sys/class/power_supply/BAT0/capacity -> cat (or BAT1 or BATx/status or BATx/uevent) (kernel 3.19 onwards: BAT1)  (or maybe: cat /proc/acpi/battery/BAT0/state or BAT0/info or /proc/acpi/ac_adapter/AC0/state)
check power supply: /sys/class/power_supply/AC0
check laptop/netbook LID: /proc/acpi/button/lid/LID/state
check network stats: /sys/class/net/ppp0/statistics/rx_bytes (or tx_bytes)
check time: /sys/class/rtc/rtc0/time (or rtc0/date)
check temperature: /sys/class/thermal/thermal_zone0

UTF-8 tips: use LANG environment variable, and LC_xxx to override particular locale settings , env.variables can be requested with 'locale' command
   (LC_ALL(most priority, also above LANG), LC_CTYPE (charmap), LC_COLLATE (sorting), LC_MONETARY (currency), etc..  )  LC_COLLATE=POSIX or LC_COLLATE=C is the standard ASCII sorting (in ls)
   available locales of the machine can be found in /usr/lib/locales, can be requested with 'locale -a'
   'locale charmap' lists character-encoding in the current locale, should contain UTF-8 if set properly, 'locale -m' lists all available character-encodings
   xterm now supports utf-8 (--enable-wide-chars), set LC_CTYPE=en_GB.UTF-8 before calling xterm, or if xterm doesn't support utf8 inside, use '-u8' option to at least convert inputs/outputs  (6x13 and 9x18 charsets has asian too)
   iso8859 support in UTF8 terminal is 'screen',  iso2022 support in UTF8 terminal is 'luit' and 'pluto' (works on the fly, good for mixed utf8/iso irssi)
   'termios' ioctl is the terminal flow control to kernel

font-configuration:
-------------------
 linux-console fonts: (fbterm/kmscon handles them too)
 --------------------
 linux-console is limited to 256 characters (or 512 with only 8 colors), default is CP437 VGA-style charset, 'kbd' has characters (with builtin 'unimap' unicode translation map) in /usr/share/xkb/consolefonts/ (.psfu/.psfu.gz)
 keymaps to connect pressed keys and appearing characters are found in /usr/share/kbd/keymaps  ,  'showconsolefont' shows available letters & glyphs
 use 'setfont' to set fonts (only in current console), e.g.:  setfont lat2-16 -m 8859-2 (font-name is case-sensitive)  - to revert original if unreadable output comes, type :  setfont
  (to make it permanent, set /etc/vconsole.conf 'FONT' and 'FONT_MAP' variables :  FONT=lat2-16  FONT_MAP=8859-2 )

 server-side-fonts: X core font engine (libfontenc?) (old,no antialiasing, bitmap-fonts,Type1,TrueType,OpenType), XLFD font-descriptions
 ------------------
   check font-paths known by Xorg:  grep /fonts /var/log/Xorg.0.log  or  xlsfonts  (Xorg doesn't search recursively!  add font-path to xorg.conf by : Section "Files"  Fontpath "/usr/share/xxx"  EndSection   (or with: xset +fp "xxx")
   old programs (before fontconfig) still work with XLFD (X Logical Font Description) method: 14 elements separated with hyphen, aliases (like 6x13) can be used too
    fields:  fndry(difference between equal FAMILY_NAME fonts, e.g.courier) , fmly(typeface-name,defined by foundry) , wght(bold/medium) , slant(r:roman,i:italic,o:oblique) , sWdth(normal/narrow/condensed) , 
             adstyl(often empty,value added by foundry) , pxlsz(bodysize) , ptSz(orig.height) , resx(hor.resolution,75/100dpi) , resy(ver.res) , spc(spacing,p:proportional,m:monospace,c:character-cell)  ,  
             avgWdth(arith.mean of width of all glyphs, for proportional it's 0) , rgstry(paired with encoding,e.g.:iso10646,koi8), encdng(charset-encoding)
   xlsfonts, xfontsel are tools to deal with XLFD names ; refresh font database and aliases:  xset fp rehash
   font-names are stored in 'fonts.dir' where the fontfiles are (first row has the number of fonts, next rows hold filename<space>XLFD). it connects XLFD names with fontfiles , searching is done when the first match is found
   mkfontdir is needed to create 'fonts.dir' (reads fonts.scale too, handles only bitmap-fonts) ; mkfontscale is needed to create names for scalable-fonts(e.g.TrueType) in fonts.scale (same syntax as fonts.dir), filenames can't contain spaces!
   aliases: fonts.alias (simple syntax: line beginning with '!' is comment, valuable lines: "alias"<space>fontname/"alias") somewhere in font-path (xorg-fonts-alias package has common X-server aliases), e.g. xterm relies upon 'fixed' alias
   system-wide font installtion: copy them to /usr/share/fonts/  (~/.local/share/fonts for user), chmod 444 for files, 555 for directories, then edit /etc/xorg.conf (or /etc/X11/xorg.conf), update cache: fc-cache -vf

 client-side-fonts: X FreeType (libXft) (libfreetyp,libfontconfig?/pango/cairo?) (newer,has antialiasing)   (check with ldd whether an app can use Xft or only core font-engine )
   to list all available fonts: fc-list
   fontconfig-subsystem's task: locate fonts, perform font-name substitutions, help determine which fonts are suitable for particular languages
   XFT fontconfig-configuration for 'freetype': /etc/fonts/fonts.conf (overwritten by update) /etc/fonts/local.conf (actually xml-files, the latter is preferred for editing)     (/etc/X11/XftConfig for older 1.1 or earlier versions)
     ( fonts.conf has the header: <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd">     then   <fontconfig> xxxxx  </fontconfig>   )
   adding fonts (TrueType-.ttf & Type1-.pfa/.pfb+optional(.pfm/.afm/etc.) formats supported): 
     -create directories (in a way you wish), and add them one-by-one to local.conf/fonts.conf in this syntax (between <fontconfig> and </fonconfig> tags): <dir>/xxx/yyy</dir>  (fontconfig+xft2.x scans subdirectories too recursively)
      (fontconfig dues fonts.cache-1 in each added directory at app-launches, but can be manually by 'fc-cache' command) 
   turn off antialiasing: <match target="font">  <edit name="antialias," mode="assign,">  <bool>false</bool>  </edit>  </match>
   turn on RGB-subpixel-rendering for LCD: <match target="font">  <edit name="rgba" mode="assign>  <const>rgb</const>  </edit> </match>   (values: rgb,bgr,v-rgb,v-bgr)
     LCD-filters (subpixel-result looks better):  <match target="font">  <edit mode="assign" name="lcdfilter">  <const>lcddefault</const>  </edit>  </match>  (values: lcddefault(good for most),lcdlight(faster), lcdlegacy(old cairo), lcdnone)
   turn on hinting: newer BCI(byte-code-interpreter) method, using hinting-info built into the fonts: <match target="font">  <edit name="hinting" mode="assign">  <bool>true</bool>  </edit> </match>   (older autohinter: name="autohint)
     (autohinter doesn't work well together with subpixel-aliasing without infinality patch-set)
     hinting style (how agressively deforms chars): <match target="font"> <edit name="hintstyle" mode="assign">  <const>hintfull</const>  </edit>  </match>   (values:hintnone,hintslight,hintmedium,hintfull)
   create aliases/fallbacks (if a requested font or its character not present): <alias>  <family>sherif</family>  <prefer>  <family>xxx</family>  <family>yyy</family>  </prefer>  </alias>   (first has the priority)
   a ~/.fonts.conf can be called from /etc/fonts/fonts.conf if needed for users: <include ignore_missing="yes">~/.fonts.conf</include>      <include ignore_missing="yes">/etc/fonts/local.conf</include>
    (user-config usually, e.g. in Arch-linux:  $XDG_CONFIG_HOME/fontconfig/fonts.conf, have precedence over /etc/fonts/fonts.conf)
   more useful fonts.conf tags: <cachedir> , <config> <blank><int>0x0020</int></blank>  <rescan><int>30</int></rescan> </config>
   xorg-xfd is responsible to display all fonts with X11 core protocol OR using libXft (useful for rxvt/urxvt font-config)
   apps ignoring fontconfig settings can be configured with ~/.Xresources :  Xft.autohint: 0  Xft.lcdfilter: lcddefault  Xft.hintstyle: hintfull  Xft.hinting: 1  Xft.antialias: 1  Xft.rgba: rgb
   embedded bitmap fonts can be turned on/off with name="embeddedbitmap" property
   
 OpenType (the most comprehensive format) is not supported by freetype2, that's why HarfBuzz (and fribidi) exists as an OpenType implementation (layout+shaping) - pango for GTK and Qt for KDE uses HarfBuzz as unicode-to-glyphs font-backend
   (other free shaping engines: ICU is huge, few programs use it, like Openoffice ; SIL Graphite ; m17n-academic)

 some apps use their own font system

free fonts can be got from xfree86 and e.g. openfontlibrary.org (serif:177,sans-serif:151,Handwriting:72,Display:67,Dingbat:30,Monospaced:29,Blackletter:25)

essential font-categories (Unicode): 
   regular+bold+italic(different-forms-too)/oblique(just slanted)+sizes: monospace/constant-bitmapfont(BDF), proportional bitmapfont (PCF/BDF), PFA/TTF/OTF  - BDF/PCF can be compressed to gz, how about TTF/OTF/PFA?
popular/important typefaces (typefaces have two main categories: Serif, Sans-Serif  ; main typeface-styles: Roman(most-widespread:serif,sans-serif,ornamental,script),Blackletter(old-codex-style),Gaelic(Irish)), Ornamental/Display(LCD/7segment), Cyrillic(Roman/Slavonic), Symbol
  Roman-style typefaces:
    Serif(Roman): (using decoration on end of strokes, probably easier to read in long passages -> used for books/newpapers main text-body): the 3 traditional styles: old-style(Garamond), transitional(Baskerville), Didone/Modern(Didot,Bodoni)
                  Times Roman / Times New Roman (M$), Century Type Family (Derived from original Century Roman: (New) Century Schoolbook/Century Catalog/Century Oldstyle/Century Nova/etc., exceptional legibility/readability, USA courts demand it over one century)
      Old-style:  Garamond (versions:Adobe-Roman,Granjon,Sabon,Stempel;natural feel:small bowl of a & eye of e, W=VV,extenders&serifs-downward-slope,variations in stroke width->resembles handrwiting)
      Transitional(between old/modern): Baskerville, Georgia/Miller(Micro$oft,to be legible in small sizes on computer screen, inspired by Scotch Roman/calligraphy, ball-terminals, larger than resembling Times New Roman), 
                                        Georgia Pro, Cambria (Micro$oft,small-size-readable-on-screen,2004,ClearType-demonstration-in-Vista)
      Didone/Modern: Didot, Bodoni
    (Slab Serif): Antique, Egyptian
    Sans (Sans-Serif) / Grotesque (old term:Gothic): (without-horizontal-lines-at-end-of-strokes->popular for lower-than-printer-resolution computer-screen, less linewidth-variation, stemmed from Slab Serif(Antique/Egyptian)):
      Helvetica (popular Swiss sans-serif typeface, strokes terminate at hor./ver. lines, compact appearance, Linotype subsidiary digitalized it for free?, licensed for iOS/OSX/HP-printers/Apple-LaserWriter),
      Arial: sans-serif typeface metrically equal to propietary (Apple) Helvetica (Microsoft alternative - they released it for free),
      Verdana (Micro$oft, green/humanist, Georgia's font-sister, easily-readable in all sizes on screen, best overall font choice, one of the most legible fonts, square-dot over 'i', 'J' protruding top serif, two 'R' versions (straight/curved tail), 'I' has serif at top&bottom)
      Comic Sans MS (casual non-connecting script typeface for use in informal documents, comic-book inspired), Comic Sans pro
      Old Standard (Baskerville/Google/OpenFontLibrary/FontSpace/etc., modern classicist style, common in late 19th and early 20th century books) 
      other popular examples for decades: Futura, Gill Sans, Univers, Frutiger (Verdana resembles)
    Script typefaces (imitate handwriting/calligraphy, harder to read than sans/serif, useful for logo/invitation/graving/etc.): Coronet, Zapfino
    Mimicry typefaces(Roman alphabet mimicing other languages to make something appear foreign: Arabic,Chinese,Cyrillic,Indic-script,Greek,Hebrew,Kana,Thai,etc.)
  Blackletter typefaces(first letters used with the invention of printing press, referred to 'gothic' sometimes, resembles codex): various forms: textualis, rotunda, schwabacher, fraktur
  Gaelic typeaces (used for Irish language between 1571...1960s, were also made in France/Belgium/Italy, insular letter-forms, Anglo-Saxon language used insular letter form too): forms: manuscript/traditional/modern (angular/uncial features), distinct from Roman/Antique
  Monospaced typefaces(most ar sans-serif/slab-serif,that are easier to read in small sizes): Courier, (Courier New M$), Prestige Elite, Fixedsys, Monaco, Console/Cursor/Teletype, PGothic(Japanese?Micro$oft)
  Effect typefaces (graffiti-like outlines/drop-shadows)
  CJK typefaces(Chinese/Japanese/Korean): Mincho (sherifed glyphs for Extended Latin & Cyrillic sets), Gothic(Goth-style,like sans with squarish cutoff end-caps), Maru (rounded sans serif glyphs for Ext.Latin & Cyrillic)
  Non-character typefaces: 
    Ornamental/Novelty/Display (to decorate a page, e.g. floral borders (fleurons), pictures of animals/objects, themes(WildWest/Christmas/Horror/etc.)), 
    Symbol/Dingbat (symbols (decorative bullets/clock-faces/etc. rather than normal text characters): Zapf Dingbats, WingDings, Marlett(Used by M$ Windose to draw graphic elements/corners of windows/icons), MS Webdings/DingBats

   Lucida (Font-family,OSX,Commercially-licensed),  Calibri Font Family(M$-Win7,2002-to emphasize ClearType capabilities,replaced Times&Arial)


ISO10646 Unicode-capable fonts looking good in X11-corefont without antialiasing: (good brands/foundries: ucs-fonts, imlib2, bitstream-Vera-DejaVu, b&h, adobe, M$, Ubuntu, GNU-FreeFont, Gentium, Luxi )
--------------------------------------------------------------------------------- (other brands: DroidSans-DroidSerif, etl-unicode, STIX/XITS, Liberation(metric-compatible-to-M$-fonts), unifont, SIL, Cardo, Everson Mono, chrysanthi, IBM, Xfree86, Calson, Junicode, SourceCodePro )
Unicode-capable: Arial, bitstreams-Vera-Sans/Serif/Mono, C64 pro (prop&mono), Calson(bold/italic), Charis-SIL, cinema(thin), clean(sizes:6,8,10,12..17), ClearlyU, Comic Sans MS, courier(sizes:11,14,17,20,25,34), Courier New(R/B/I), 
                 dejavu lgc sans, dejavu (lgc) sans light (thin), dejavu (lgc) sans mono, dejavu (lgc) serif, dejavu sans, Doulos SIL, Droid Sans(prop/mono), Droid Serif(regular/italic),
                 east syriac adiabene/ctesiphon (SyrCOM), estrangelo antioch/edessa/midyat/nisibin/quenneshrin/talada/turabdin (SyrCom), 
                 fixed(builtin,sizes:6/8/etc.), FreeMono, Gentium (Book) (Basic/Plus/Alt), Georgia, grunge(thin), *Helvetica(Best-looking,sizes:11,14,17,20,25,34), 
                 Luxi Mono/Sans/Serif, Morpheus, new athena unicode, New Century Schoolbook(sizes:11,14,17,20,25,34), Notepad(handwriting), old standard tt (bold looks better), pet me (64), 
                 serto batnan/jerusalem/kharput/malankara/mardin/urhoy (SyrCOM), Source Code Pro Black/Semibold/Light/Extralight, 
                 times(sizes:11,14,17,20,25,34), Times New Roman(r/b/i), Ubuntu(r/b/i), Ubuntu Condensed/Light/Mono, Verdana
non-Unicode:charter(super-goodlooking,sizes:11,14,17,19,25,33;ISO8859-1), clean(size6,8,10:ISO646-1991,size12:ISO8859-1..5,7..10,13..16), Decker(ISO8859-1), snap(ISO8859-1,scifi,regular,sizes:10,17), Terminal(ISO8859-1,sizes:17,18)
special-charset: Cursor(Adobe), Open Look glyph, symbol(greek-alphabet,sizes:11,14,17,20,25,34), webdings
ugly(medium+regular in default size without antialiasing): 
   Cardo, chrysanthi-unicode, dejavu (lgc) sans/serif condensed, estrangelo nisibin outline, FreeSans, FreeSerif, Junicode, Liberation Mono/Sans/Serif, 
   Linux Biolinum (Keyboard), Linux Libertine (display/initials/mono), mph 2b damase, Quivira, serto jerusalem outline, Source Code Pro (Medium), Yudit unicode
not working in xfontsel(X11 core font) but looks good with Xft: 
   Diavlo (black/bold/light), eb garamond, estrangelo edessa, Goha Tibeb Zemen, Inconsolata, newspaper, Oxygen, Source Sans Pro, STIX (Beautiful!), XITS (Math) , Clocktopia?!
non-relevant: (fang)song ti(GB2312.1980-chinese?), gothic/mincho(KSC5601.1987-Egypt?), Unifont(chinese?)

a quick selection of usable characters (sorted by size):
*6x13.bdf   "-*-fixed-medium-r-*-*-13-*-*-*-c-*-iso10646-*"    size:512kbyte,built into Xorg (6x13B.bdf=159kbyte,6x13O.bdf=95kbyte, 4x6.bdf=94kbyte, 5x8.bdf=155kbyte)
*notepad.ttf "-*-notepad-thin-r-*-*-17-*-*-*-p-*-iso10646-*"    size:31kbyte, imlib2, looks cool, handwritten feel, no ISO8859 support
*decker.ttf "-*-decker-bold-r-*-*-17-*-*-*-p-*-iso10646-*"    size:37kbyte, bold, directfb ISO8859-1 supported, accents stand out
*Vera.ttf   "-*-bitstream vera sans-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:66kbyte, still a bit bold, ISO8859-1,9,15
*VeraBd.ttf "-*-bitstream vera sans-bold-r-*-*-17-*-*-*-p-*-iso10646-*"    size:59kbyte, VeraMono.ttf=49kbyte, VeraIt.ttf=63kbyte, VeraBI.ttf=63kbyte, -||-
*luxirr.ttf "-*-luxi serif-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:88kbyte, not too bad, boldish, ISO8859-1..4,9,10,15 support, (Oblique/italic: luxirri.ttf=86kbyte)
 helvR14.bdf "-*-helvetica-medium-r-*-*-20-*-*-*-p-*-iso10646-*"    size:112kbyte, bold, looks good, simple letters, capital-accents stand out, no ISO8859 support
 ncenR14.bdf "-*-new century schoolbook-medium-r-*-*-20-*-*-*-p-*-iso10646-*"    size:114kbyte, Beautiful,book-like, no ISO8859 support
*Comic.TTF  "-*-comic sans ms-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:126kbyte, freely available from Micro$oft, ISO8859-1..5,9,10,15
 timR14.bdf "-*-times-medium-r-*-*-20-*-*-*-p-*-iso10646-*"    size:130kbyte, good bit gothic style, no ISO8859, bold:timB14:111kbyte, italic:timRI14:130kbyte, timBI14:108kbyte
*Verdana.TTF "-*-verdana-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:139kbyte, not too good, freely available from Micro$oft, ISO8859-1..5,9,10,15 support
*Georgia.ttf "-*-georgia-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:143kbyte, bold,Beautiful, ISO8859-1..5,9,10,15 support 
*Arial.TTF  "-*-arial-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:275kbyte, freely available from Micro$oft, ISO8859-1..5,8,9,10,15
*cour.ttf   "-*-courier new-medium-r-*-*-17-*-*-*-m-*-iso10646-*"    size:302kbyte, monospace, freely available from Micro$oft, ISO8859-1..5,8,9,10,15, wrong y-align?
*Times.TTF "-*-times new roman-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:330kbyte, freely available from Micro$oft, ISO8859-1..5,8,9,10,15 support
*Ubuntu-R.ttf "-*-ubuntu-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:353kbyte, stylish,modern, nearly as precise as M$ fonts, ISO8859-1..5,9,10,15 support
 Ubuntu-M.ttf "-*-ubuntu light-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:341kbyte, bold,simple,stylish,modern, ISO8859-1..5,9,10,15 support
 UbuntuMono-R.ttf "-*-ubuntu mono-medium-r-*-*-17-*-*-*-m-*-iso10646-*"    size:341kbyte, monospace,simple,stylish,modern, ISO8859-1..5,9,10,15 support
*Gentium-R.ttf "-*-gentium-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:362kbyte, stylish,looks good, 'o' a bit ugly, 'M' has thick leg, ISO8859-1..4,9,10,15
 FreeMono.ttf "-*-freemono-medium-r-*-*-17-*-*-*-m-*-iso10646-*"    size:584kbyte, numbers '6' and '9' are a bit ugly (FreeSans ugly, FreeSerif has ugly 'g',etc., ISO8859-1..10,15)
*DejaVuSans.ttf "-*-dejavu sans-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:740kbyte, (DejaVuSansMono.ttf=335kbyte,DejaVuSerif.ttf=367kbyte), ISO8859-1..5,8,9,10,15
 cu12.bdf   "-*-clearlyu-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:1.2Mbyte, Mark Leisher, Unicode (no ISO8859), a bit ugly 'i' character
non-Unicode/special charsets:
-----------------------------
 symb14.bdf "-*-symbol-medium-r-*-*-20-*-*-*-p-*-adobe-fontspecific"    size:27kbyte, greek alphabet symbols, etc. in place of normal letters
 term14.bdf "-*-terminal-medium-r-*-*-18-*-*-*-c-*-iso8859-*"    size:27kbyte, good-looking, only DEC/ISO8859-1, also bold:termB14.bdf=28kbyte
*C64_Pro_Mono-STYLE.ttf "-*-c64 pro mono-medium-r-*-*-17-*-*-*-c-*-iso10646-*"    size:31kbyte, no ISO8859 support
*C64_Pro-STYLE.ttf "-*-c64 pro-medium-r-*-*-17-*-*-*-p-*-iso10646-*"    size:34kbyte, proportional(!) C64 charset, no ISO8859 support
 Webdings.TTF "-*-webdings-medium-r-*-*-17-*-*-*-p-*-*-*"    size:118kbyte, can ruin readability in cases if used as fallback-font accidentally
*PetMe64.ttf "-*-pet me 64-medium-r-*-*-17-*-*-*-*-*-iso10646-*"    size:215kbyte, Best C64 charset, accented Unicode chars too..., supports ISO8859-1,15 too
 PetMe.ttf "-*-pet me-medium-r-*-*-17-*-*-*-*-*-iso10646-*"    size:335kbyte, C128 thin charset, accented Unicode chars too..., supports ISO8859-1,15 too



WIFI-WLAN-configuration (info mainly taken from ArchWiki): 
 a.driver and firmware:
    lspci -v  should show available pci-cards, usb wifi card could be found if loaded with: dmesg | grep usbcore  ,  module might need to be loaded with udev (though it's not perfect, may load wrong module or more conflicting modules)
    ip link  command should spit out some wifi-interface starting probably with 'w', bring the interface up with: ip link set wlan0 up  (if the interface is 'wlan0', but can be other, e.g.: wlp0s26f7u1u3 for TP-LINK TL-WN722N)
      ('ip' is in 'iproute2' package or busybox. interfaces brought up should be seen with 'ifconfig' command, which is part of 'net-tools' or busybox package, modem LED should indicate connection)
    (if SIOCGIFFLAG error message, the card needs the driver-module or firmware.  check loaded firmware: dmesg | grep firmware  - this shows if firmware load error happened, e.g. htc_9271/b43 firmware should be downloaded from manufacturer's page)
    dmesg | grep iwlwifi  to check full output of the module identified earlier if firmware output fails
    for cards not supported by Linux directly, 'ndiswrapper' might be a solution
 b.setting WLAN-connection:   manual: wireless_tools(deprecated), iw/iwconfig, wpa_supplicant(for WPA-WPA2)    automatic: netctl, Wicd, NetworkManager, etc.
    check interface with: iw dev   ,    connection-status: iw dev <interface> link , statistics:  ip dev <interface> station dump  ,  check, if up: ip link show <interface> , 
    check for access-points: iw dev <interface> scan | less     to connect:    iw dev <interface> connect <"essid">     to get IP-address:   dhcpd <interface>


Translation, i18n: gettext
.pot file (e.g. in jwm's po folder) contains the IDs and empty strings. To create a .po file (e.g. hu.po) from the .pot file:   msginit --locale=hu --input=jwm.pot



====================================================================================================================
