Software
Folder Compare
Ericsson Melody Maker
ClanLord Tune Helper
GLterm
Friend's Cabal Essentials
Alessandro Levi Montalcini
USB
Overdrive
Icon
Archiver
DragAnyWindow
Marc Moini
Startup
Doubler
Smart
Scroll
Florent Pillet
PowerGlot
My Deceased Oldies
Vamp
Zilot
LinuxDisks
DieBlo
Black
Beauty
MyTerm
Please, do not ask me where you can find my
oldies, I no longer provide them. |
|
"Innovative like Quartz Extremez, just 6 months earlier!"
GLterm © 2001-2002 Michel
Pollet |
GLterm is a replacement for the Terminal application which ships with MacOS
X. It's made to be faster, and to support more common terminal features. It supports
full ANSI colors, all vt102 protocol, all DEC function keys, and a selection of useful
xterm sequences.
The Big Thing is that GLterm uses X11 .bdf fonts and renders them using..OpenGL.
So it's very fast... as long as you have a working 3D accelerator. It should work
as intended on B&W G3 and up for desktops and on White iBook and up for laptops:
ie a machine whose 3D accelerator is handled properly in OSX. To this date (April
2002) Rage II, II+, Pro are not accelerated.
My extensive tests on:
- iMac DV/400 (ATI Rage 128/8Mb)
- 2*G4@450 (nVidia GeForce 2 MX/64Mb)
- 2*G4@1Ghz (nVidia GeForce 4 MX/64Mb)
Show that it's incredibly fast and very stable on all of these machines.
Be sure to read the "Q&A" section, and the release
notes!
|
|
GLterm is a $10 shareware. Registered users
will get:
- Support. Requests for support from non-registered users will have a near-zero
priority.
- Early notifications and updates. Registered users get the pre-releases, and do
help setting the lists of new features, and their priorities.
- My gratitude.
Please register to help me continue making quality programming for you!
|
Download
Q&A
Q:
|
Using OpenGL to draw text? Are you nuts?
|
A:
|
Well, OpenGL uses the graphic hardware in your mac, graphic hardware that is both
vastly oversized for and vastly underused by most users, most of the time. So instead
of letting it become obsolete peacefully, why not use it for something useful? Beside,
it keeps your computer room warm when in use, isn't that an argument?
New! Apparently it was not such a silly idea after all, since Apple has had that wonderful
innovation to speedup Laggua, into Jaguar, the next major version of MacOS X.
|
Q:
|
Why not use normal Mac fonts?
|
A:
|
Mac fonts don't have all the nifty graphic characters that a terminal emulator needs.
Beside, drawing text with those fonts is slow. And the last thing I want in a terminal
is antialiasing or kerning. I want a fast terminal, not one that looks like a word
processor. Lastly, the "Fixed" fonts GLterm uses comes with a very
small size that can't be matched by Mac fonts. |
Q:
|
Can I make GLterm window transparent, too?
|
A:
|
No, GLterm view is made by OpenGL, outside of Quartz drawing context. So there
is no transparency support. This is also why your window appears blank when collapsed
in the dock. |
Q:
|
Why aren't the page up and down key working?
|
A:
|
They work, they are normal keys used by many terminal programs. If you want to scroll
in the saved lines, use shift page up/down. |
Q:
|
How can I change the terminal window title from zsh?
|
A:
|
GLterm allows a terminal program to change the title of the window, here
is what I use in my own .zshrc:
export PS1="[%n@%m %U%~%u]%# "
case $TERM in
xterm*)
precmd () {print -Pn "\e]0;%m: %~\a"}
;;
esac
|
Q:
|
How can I change the terminal window title from bash?
|
A:
|
Add something like this to your .bashrc: [Thanks Michael!]
case "$TERM_PROGRAM" in
Apple_Terminal)
GLterm)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
export PS1='\!\$ '
;;
*)
export PS1='\u@\h:\W:\!\$ '
;;
esac
|
Q:
|
How can I change the terminal window title from csh/tcsh etc?
|
A:
|
You don't. You shouldn't use csh anyway. Have a look at Csh
Programming Considered Harmful ... then use zsh. |
Q:
|
Why doesn't 'ls' shows files with colors like in linux?
|
A:
|
You need GNU fileutils compiled for it to work, AFAIK, BSD(OSX) 'ls' doesn't support
colors. Refers yourself to GNU repositories to get color-ls |
Q:
|
Why a "Refresh Rate" Preference?
|
A:
|
The Refresh rate is the frequency at which GLterm checks to see if there's
anything new to draw in the terminal. Smaller values will mean less frequent updates
but potentially faster overall performance; bigger values will mean more updates,
hence more drawing, so potentially slower performance, overall. The "Refresh
Rate" Preference defaults to 15 frames per seconds. Note that it doesn't mean
15 frames will be drawn per second – it just means the display is checked for dirty
bits at that rate. |
Q:
|
Why is the text all fuzzy?
|
A:
|
"Pixels" in the OpenGL coordinate system have a very remote correspondence
to screen pixels. In fact, attempting to have a 1:1 ratio between OpenGL coordinates
and screen pixels for texture boundaries (believe it or not, GLterm is drawing
textured rectangles for each letter it draws) proves to be very hard. For example,
ATI and nVidia have shown completely different results.
As an attempt to help control the problem, you can try using a few key combinations
to nudge the 'convergence' of the texture on the screen. Note you might not get a
perfect result, it depends on the card you have. A good idea is to use Pixie (in
/Developer/Applications) to have a closer look. The goal when fixing the convergence
is to have black pixels without 'shadows'.
- Control-Arrow keys will nudge the texture by .005 pixels in the direction of
the arrow. Pressing shift with control will nudge by .05 pixels instead - ten times
as much.
- Control-Home key will save your settings in the preferences.
Update: The fuzzyness problem has vanished for nVidia
cards with MacOSX 10.1.2. It still exists on ATI cards.
|
Q:
|
I'm using two screens, and GLterm appears all garbled on the second screen, why?
|
A:
|
It' s a known 'feature' of MacOS X, I have no idea when they'll fix that. |
Q:
|
Why is it slow on my super <insert a mac model here> ?
|
A:
|
Sorry, GLterm is proven to be fast on a number of graphic cards, provided
that the card has a driver supporting hardware acceleration for 3D on MacOS X. |
Q:
|
My <insert the same mac model here> HAS a graphic accelerator, it's written
on the box!
|
A:
|
Having a graphic accelerator is not enough, you also need it to be supported by MacOS
X. Not only in 2D (aqua drawing etc) but also in 3D. |
Q:
|
When I try to type a <accented letter> it doesn't work, why ?
|
A:
|
GLterm handles Latin-1 translation for keyboard input and rendering. This
allows for most european languages. GLterm doesn't support Unicode nor non-roman
scripts. |
Q:
|
Why can't I find your email address?
|
A:
|
Because it is hidden in plain sight
. I am a freelance developer,
you can contact me directly if you have any need of quality development on
OSX. |
Warranty
GLterm doesn't come with any warranty whatsoever. Use it at your own risk.
I cannot be held responsible for anything happening to you as a result of installing,
possessing and/or using this software.
All trademarks mentioned are the property of their respective owners.
I know that to be trendy and all I should type this section in capital letters, but
I hate my capslock key and typing all that whilst holding the shift key would tire
my poor left pinky.
Acknowledgments
- Paul Williams, for hosting an online version of
the original vt102 manual, and letting me use his version of the original vt100 picture.
- Seb/Sor, for being a nice dwarf and being so much better at photoshopping.
- Whoever made the Fixed font family in X11/Free86.
- Richard Buckle for CLiveResizeAttachment.
- Melchior for debugging the read-me.
Revision History
Version 1.2
Changes:
- Added 8 bits clean support, Latin-1 translation keyboard input and rendering
(ANSI & ISO8855-1 fonts supported)
- BitchX, pine, mutt and other strictly ANSI applications
now render perfectly.
- Added Printing, you can print:
- A screen copy, in full colors with all the gizmos currently visible. This one
can be slow to print, but it's exactly what's on the screen, with cursor, double
sized text etc included.
- A text selection (screen/selected/all) with text style (bold & underline)
and/or text face color (no back color). This one doesn't even have the graphic characters,
but it's really fast (uses Courier font) and reasonably accurate.
- Added a preference checkbox to prevent use of 'fat' boldface (it was reported
it looks ugly with some fonts)
- Changed the way the 'bold' colors are rendered.
- Added a preference to use 'copy-on-select' to emulate X11 clipboard behavior.
- You will need to configure your multi-button mouse yourself to have Paste linked
to the middle button.
- Renamed the font to differentiate those with DEC or ANSI graphic characters.
- GLterm 1.1 will fail to run once you have launched GLterm 1.2. Delete GLterm
preferences if you need to restore 1.1.
- No longer create the first terminal window strictly in top left corner of screen.
- Fixed the infamous 'copy-the-wrong-line' bug.
- Fixed the nearly-as-infamous 'resize' bug.
- Fixed the color inversion problem (especially using pine/mutt)
- Fixed a problem that was preventing 'less' to work on some platforms.
- Fixed a problem with some obscure xterm-specific sequences (set icon title etc)
- Fixed the problem that was preventing large fonts to display properly (I added
2 fonts to the distribution)
Version 1.1
Changes:
- Added support for "Reopening" GLterm. Clicking it's icon in the dock
can automaticaly open a terminal if none are already open.
- You can select not to open a new terminal when GLterm is launched.
- Added support for rectangular selections: Option-click & drag.
- Rewrote the keyboard handling. All the keyboard equivalents are described into
Key.txt and Keymap.txt (in GLterm.app package). You can change and add your own keyboard
macros there if needed.
- Changed the default ALT key equivalent to be Option-Command instead of just Option.
This solves MOST problems for non-US keyboard layouts.
- The keys numlock, =, / and * on the keypad now send the PF1-PF4 sequences.
- To toggle numlock, use command-numlock.
- Added FAT Bold text.
- Fixed a potential crash when Copying text (thanks to Sam Maloney!)
- Fixed a problem that could leave 'zombie' shells after GLterm had quitted.
- Keyboard input now autoscrolls back to bottom of the buffer.
- Cursor no longer diseapear when quitting vi in debian or redhat.
- Tweaked the preference dialog self-documentation.
Version 1.01
Interface Changes:
- Fixed a potential crash when creating several windows.
- Added support for DEC function keys and keypad key sequences.
- Added support for custom colors for foreground/background/cursor/selection.
- Added support for audible terminal beeps.
- Added support for 'login' shells; executes your .profile or equivalent.
- Added support for automatic closing of windows when shell exits.
- Added support for using a shell different from your default shell.
- Redesigned the preference window using a list instead of tabs.
- Added a 'Reset terminal' menu item.
- Added a preference to have a confirmation before quitting.
- Added a preference to allow the use of a text mouse cursor if your card supports
it (nVidia).
Version 1.0b5
Interface Changes:
- Fixed a potential crash when displaying lots of text.
- Delete key sends ^?. Control-delete sends ^H
- Control-space works again (for emacs mark).
- Fixed the window title problem.
- Select-All + Copy works reliably now.
- Sometime creating a new shell created a black window instead, it's now fixed.
Emulation Changes:
- Re-did most of the cursor positioning sequences. Reported to fix all the remaining
problems.
Known Issues:
- Arrow keys do not seem to work in OSX's vi, while they work everywhere else.
I blame Apple on that one...
- The ANSI colors do not match exactly how xterm handles them, especialy on black
background.
Version 1.0b4
Version 1.0b3
Interface Changes:
- Removed all the extra output that was ending up in the Console.
- No need to type return to get the shell prompt when opening a new terminal.
- Option key acts as the "Meta" key like in xterm.
Emulation Changes:
- Fixed a cursor positioning problem involving scrolling region. [thanks James!]
Known Issues:
- Preference window is drawn weirdly at first, change tab to refresh it.
- Window titles can get confused on new windows.
- Sometime, a new window's shell is not responding; close it and open another one.
- Rarely, I had crashes when receiving lots of text to draw at once. I will be
able to fix that one once Metrowerks and Apple get us a working debugger. Right now
gdb crashes on that one. Bloody helpful.
- Arrow keys do not seem to work in OSX's vi, while they work everywhere else.
I blame Apple on that one...
Version 1.0b2
Interface Changes:
- Added a text-cursor for selection, then removed it. It garbles the display on
ATI Rage 128.
- Fixed the default preferences when launching the first time.
- Properly closes the sessions when quitting a shell.
- Checks for a valid shell at startup, gives a (maybe) helpful message if a problem
is detected.
- Returns a proper error message if the OpenGL context couldn't be created.
- Made the "previous/next terminal" work.
Emulation Changes:
- None. Appears to work properly
Version 1.0b1
Interface Changes:
- Input/Output/Display/Scrollback subthreads now lock themselves to prevent races.
- Child processes are properly killed when windows are closed (doh).
- Added a Preferences dialog, kinda.
- Cursor becomes outlined when window is not frontmost.
- Can select text in the window. Double and triple clicks selections are supported.
- Can copy/paste text.
- Added Services menu support.
- Fixed the stupid scrollbar.
- Can drag & drop text and files from the finder to the terminal window.
- Smart enough to replace pathnames starting with the user's home directory with
"~"
Emulation Changes:
- Added support for ISO-6429 (ECMA-48) sequences (save the lock region one) This
fixes remaining known emulation problem.
- Support for show/hide cursor sequences.
- Support for xterm alternate text page (most full screen programs use that).
- Text/Mouse support like xterm. (click the menus in Midnight Commander, vim etc!)
- Support for app/generic arrow keys.
- Dirties/redraw lines only if visible text is to be drawn.
Version 1.0d2
- Fixed the line wrapping problem.
- Added scrollback. Use shift with page-up, page-down, arrow-up, arrow-down, end,
and home to move around in the buffer from the keyboard. (like Linux & X11)
- All movement keys and F1-F11 send xterm sequences (which emacs, mc, etc. understand)
- Fixed the crash when quitting.
- Nice Seb/Sor nicely nicerified the nice icon.
- The scrollbar thumb works, but not the arrows or page region, no idea why.
- Added the carbon event for key repeat.
- Added the carbon event to enable/disable menus. (not perfect)
- Performances are better. Draw & flush only changed lines. Uses 0.0% (!) most
of the time running 'top'
- Added a few preferences (no HI, xml only) for default refresh rate, max number
of lines in scrollback etc.
- Added 'Control' menu with scrolling keys, clear buffer etc.
- Added a 'standard' Carbon windows menu.
- Added Next/Previous terminal commands like in Konsole (shift right/left)
- Added margins around terminal.
- Make all windows share the same GL resources (fonts textures & display lists)
to have optimum memory footprint.
- Added special key combo to work on the convergence problems: Control-arrows move
the 'virtual origin' of pixels. The goal is to have black pixels completely black
without a 'gray shadow'. If you find a good setting, hit control-home to save it
in the preference file.
- There's some preliminary support for the service menu in the app, which does
absolutely nothing for now :-)
Version 1.0d1
- The terminal works, but there's no mouse support nor scrollback.
- The arrow keys don't work.
- The black-on-white default mode is antialiased, which makes text a bit hard to
read. You can edit GLterm default preference (com.buserror.GLterm.plist) and
reverse the colors if you want.
- It sometime crashes when you quit.
- It might also crash doing other things :->
- The vt102 passes 'vttest' but I know there is a small issue with line wrapping.
- Supports double-width and double-height characters (even xterm doesn't!)
- Supports the 'set window title' sequence. The sequence is ESC-]-0;<some text>CONTROL-G
aka "\033]0;some text\007". You can incorporate the sequence in your shell
prompt.
|