PC Graphics Terminal - replace X with less bloat author Neil Franklin, last modification 2004.03.10 use existing PC hardware, only new software AT+RS232 or PS/2 or USB keyboards and mice ISA/PCI/AGP graphics cards, in bitmap mode, full 24bit use cards as as dumb framebuffers ev 2D accelerator for scrolling, but that is card dependant modelines for using full monitor size like in Xfree or Linux console-tools PC loudspeaker or sound card for audio out initially call from .profile, after login, runs as user program will need SUID for video card setting (or call console-tools for this?) what is needed for then memory mapping the frame buffer? svgalib? ggi? kgi? direct?, what graphics standard for hardware access? login no xdm, but possible login-mode, runs getty/login in one window allow new pty to be same login (comfort, X) or different (flexible, cons) split screen into windows, program replaces X+wm+xterm window frame just 4 sides frame+3Dedge(+border?), for move/resize/menu(close) frameless window possible, for graphical effects or iconised applications ev full screen frameless window, like consoles, but low priority no scrollbar, wastes space, requires widgets or between term and shell a scrollbar operated "less" replacement no buttons, as that also requires widgets built into terminal iconification must be from application, window move/resize/dock/de-frame facult window title, escape seq on/off, as that is app designers stuff window stacking controllable by applications desktop just blank one colour, no picture, use back-stacked window generally no-nonsense design, get stuff done, without troublemakers escape sequences to manipulate window, set/modify size/pos before show auto-appear at standard size/pos if first char recieved is ASCII escape sequences to find size/pos of window and entire screen each window with independant terminal state for each of these an pty to running users shell/programs background/desktop can also run an tty, with prog or cat can do picture ev screen-like feature, each pty has state, windows can swap ptys make this compatible with sshd+screenclient, for connects from remote make pty selector use its own ssh connect to fetch lists f remote screens then for each connection to remote own ssh connection and sshd+ownclient no netwerk awareness, no ports [678]00x, no xhost, no xauth, no holes use ssh from shell or direct, to other system, no X mode, no 6010, no hole then run program in there which is using same escape sequences as local same simplicity, comfort, safety, security as normal ASCII or ANSI progr just port 22 daemon on server, no ports open on workstation output graphics drawn to pixel coordinates, not char coord scroll behaviour like browser, when not enough space for printing for bitmap graphics use 6bit-in-ASCII, uuencode, 64-127 sixel (as in VK100/VT340), mime/base64, pgp ascii armor, or similar bits for 1/2/4/6/8bit gray, 3/6/12/24bit truecolor, 1/2/4/6/8bit invert 1/2/4/6/8bit palette (and gray/truecolor for writing palette definition) compressed mode RLL/fax/gif/png like and possibly also JPEG like LF advances one pixel line, too wide bitmap wraps or dropped, like many chars bitmap is pixels+LF, as many lines as come, no size indicators, cat-able cursor positioning escape sequences for placing on pixel pos cursor als crosshair, inverted or colour, middle unchanged pixel no vector graphics as vector->bitmap better in application no need for complicated vector descriptions and encodings and xlib no user libs, also no need for bloated fits-everyone gtk or kde any program can just send escapes, like today full screen char progr output text, used as indexes in character bitmaps draw line of chars with left/right margin, and top margin from last used in char mode LF advances font hight, ev plus-minus spacer if not enough space with bottom margin, scroll, add background cursor positioning in pixel or chars, so chars can be placed anywhere cursor block or underline, steady or blink, invert, empty if unfocus use existing Linux console or X bitmap or own fonts for default all other fonts from application and computer it is on, no font server 1bit bitmap for font definition, const hight and variable width chars space for multiple loaded fonts, short escape to switch them own font format, ist nothing more than formatted escape bitmap graphic can be drawn with any bitmap editor, any format, convert to escapes output sound also 6bit-in-ASCII for samples and timbre definition samples only sample based output, no older sound generators or midi, do that in apps this is same as only bitmap and doing vector in apps possibly analog to ascii -> font-bitmap als ascii-score -> timbre-samples load an timbre with n same-"instrument" sounds, beep/ctrl-g is sound 0 are automatically synchronous with bitmaps, no lagging problems escape sequence for wait until at least "n" ms since last sync point possibly multiple channel sound, will need sync no mess with n different sound daemons, sync troubles, security holes input keyboard as ascii with escapes, any existing program can work with this keyboard use existing Linux console or X layout definition files possibly extensions if keys with no given representation input mouse also generate escapes, same ones as in xterm, so programs use them no need for hacks like gpm, no support for working with gpm either mouse copy/paste delivers keys or bitmap, depending on what there copy mode for "linear" content and rectangle/block extraction read back as bitmap or text, depending on what there, empty=bitmap ev escape for readback (if superimposing stuff onto what is there) mousewheel scrollback like xterm, but also char/pixel lines sensitive als mouse cursor scroll x/y if paste->drag%drop mode, no scrollbars mouse on window frame elements for active/stack/move/resize/kill/duplicate tools for pnm->escapes (stdout shows), escapes->pnm tool for direct all(->pnm)->escapes with horizontal cut, else wraparound less-like viewer for bitmaps, for photo viewing, and usable from lynx&co bitmap editing tool running direct in window, direct own mbitmap format, for drawing sketches and fonts, and modifying photos port an webbrowser or raw gecko HMTL renderer to this terminal start with dumb tty, add ANSI, then VT100 (or VT340?), then add xterm then add VK100, then expand escape sequences for all other newer stuff