The collected works of squeen - Page 5

I posted a news item ( http://www.nekochan.net/wiki/weblog/archives/2003_12.html ) that explained how to integrate the rss with xscreensaver. The Nekoware versions of both these are the ones I run.
Very exciting news. Go dex, go!
Outstand! This is really first class work and a huge job. Thanks!
nekonoko wrote:
hamei wrote:
chervarium wrote: The newly introduced host and dig commands (from the BIND distribution)


Is there a standalone < dig > around here or should I look in neko_BIND ? (I searched, really.) Kinda hate to further decimate the bandwidth for a small utility - looks like everyone is testing out squeen's new script right now :)


No kidding ... use the mirrors people! :D


My bad. Sorry!
Who wants to volenteer their mirror site to be the FTP default for tardist2inst?
Should I randomize it? If so, which sites should be on that list?
Dex,

Again I just wanted to thank you for the awesome work here. I really enjoyed *finally* seeing glmatrix running on an MGRAS Octane this past weekend.
My octave usage is limited since that is not the only error I've bumped into.
I tried a few weeks ago another port to nekoware, but it was not a determined effort and I gave up for now (may errors).

Basically, last year I got sick and tired of Mathworks dropping IRIX and Octave's C++ spagetti code so started writing a MATLAB compatable replacement in C using lex and yacc. It's native IRIX with threading. shared-memory, Motif GUI, a real-time/parallel processing Simulink replacement and an OpenGL Performer multi-pipe visualization back-end that kicks STK's (Satellite Tool Kit) ass. Unfortunately, since it is work realated (a front-end to our simulator) I cannot release the code unless I can get permission to GLP it. So far it's working out really nice. It's surprising how simple the whole parser is, certainly not worth $50K/yr for maintainace (what we pay for all of our licenses).

Also, I really find it absurd that Octave is such a non-portable pain-in-the-ass since it's a command line program---but that seems to be standard fare for C++ apps (e.g. Celestia, OpenOffice, AbiWord, etc.). Oh well...

That said, I'm gonna try for neko_octave again at some point, just 'cause nekoware wouldn't be complete without it. :)
Thanks foetz. A very welcome addition!
I'll give it a go shortly. I'm still trying to track down what all pushed my neko_mozilla unstable.
foetz,

Very nice work on neko_firefox. A clean little app. Nice touches include have http://www.nekochan.net as the default home page and the naive indigo magic desktop fonts in the toolbar. Thank you.

One nit (and I put it to all the nekoware maintainers)...foetz has embedded all the support libs (gtk1 etc.). This is both desirable (stablity/independance) and undesireable (size). I'm inclined to let it slide (like the general absence of build instructions) for this particuar critical/core app, but.....

What's best? The problem from my point of view is that it's awefully seductive to include as it, but breaks a couple of precedents <foetz you rascal!>.



BTW I'm still in a pickle with the neko_mozilla-1.8a5.
When I load just neko_mozilla and a few core packages -- STABLE
When I load all of nekoware -- UNSTABLE.
I don't want to go to 1.8b1 (thanks foetz!) until I can unravel this mystery.
It's slow debugging, since mean time between crashes is >1 hour of use.
foetz wrote:
well, it's not a real static build. i just included the needed libs right into the main folder.
the firefox startup script takes external ones first so you won't get into trouble regarding
double installations.

further i know that i broke some nekoware rules and i told steve why. i don't want (can't) to explain this
deeper. i just ask you to respect it. it's the best i can do for now.

anyway i think we can enjoy a stable and fast neko-customized browser with a neat sized tardist.


Didn't intend to razz you foetz -- you know we all love what you do for the community. Looks like Neko put firefox in nekoware, and that's the end of the discussion as far as I'm concerned. Mostly I was just commenting on the included libs.

I'm running firefox on the Tezro. Smooth as silk. Thanks again!
This is very nice! I've always wanted to do something like this. I've tried it with the neko_dvdrtools package and a SCSI Yamaha CRW2100SZ. Although it said it burned a CD I haven't verified it yet.. A few questions for you.

1) Please, please please! Tell me how did you get your tabs to look so good!?! I'm using the Motif 2.1 Notebook widget but my tabs look this this

Attachment:
notebook.jpg
notebook.jpg [ 86.96 KiB | Viewed 318 times ]


2) Do you plan to open source the app for collaboration?

3) IRIX has a method of setting user capabilities (man capabilities). If you put the user's name in /etc/capability such as

Quote:
squeen:CAP_DEVICE_MGT+eip:CAP_DEVICE_MGT+eip


a non-root user would be able to burn a CD. However, you also need to log in with privelages enables (e.g. su squeen -C "CAP_DEVICE_MGT+eip"). What I have done in the past is have the program check if capabilities are enabled and if not use a system() command to run itself in a capabilities enabled shell.

Again, awesome work. Thanks!
jimmer wrote:
The SGI style tabs in CDWriter are a function of using the ViewKit VkTabbedDeck component. 'man VkTabbedDeck' for all the information ;)
jimmer

Thanks! Unfortunately I'm a C/Motif purist.

Thanks again for cdwriter. I am having some problems with it however. I have verified that nekoware dvdrecord works with my SCSI CD-R drive, but CDWriter thinks (I believe) that its a CD-ROM.

Quote:
dvdrecord -scanbus
dvdrtools v0.2.1
Portions (C) 2002-2005 Ark Linux <[email protected]>
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program; see the file COPYING. If not, write to the Free Software
Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
Based on:
Cdrecord 1.11a15 (mips-sgi-irix6.5) Copyright (C) 1995-2001 Jörg Schilling
Using libscg version 'bero-0.5a'
dvdrecord: Warning: using inofficial version of libscg (bero-0.5a '@(#)scsitransp.c 1.81 01/04/20 Copyright 1988,1995,2000 J. Schilling').
scsibus0:
0,0,0 0) *
0,1,0 1) 'SEAGATE ' 'ST373405LC ' '0003' Disk
0,2,0 2) 'SEAGATE ' 'ST3146807LC ' '0007' Disk
0,3,0 3) 'SGI ' 'ST318404LC ' '3126' Disk
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) *
1,1,0 101) *
1,2,0 102) 'TOSHIBA ' 'CD-ROM XM-6401TA' '1015' Removable CD-ROM
1,3,0 103) 'YAMAHA ' 'CRW2100S ' '1.0K' Removable CD-ROM
1,4,0 104) 'MATSHITA' 'DVD-RAM SW-9581 ' 'B102' Removable CD-ROM
1,5,0 105) *
1,6,0 106) *
1,7,0 107) *


So it grays out the bottom half of the first page (speed, etc.).
It will make me an iso image, but no burn.
Any thoughts?
Where can I get big.xml, I'd like to run it on the Onyx350?
Dex,

Are you saying the problem was suppoesed to be fixed in 7.4.x but was not? Or is it some sort of unintentional linking particular to the YafRay make? Just curious. And thanks for the hard work.

BTW, I really would like to run YafRay on the Onxy, but I need to learn it's basic commands. And (as usually) I'm behind on my projects. I'm porting some C++ code over to C for another little IRIX based effort (a user space driver for a National Instruments multifunction DAQ board). What a convoluted, intentionally obscured language! It's not just unframilarity on my part, I really can't stand the C++ design philosophy---my engineering mottos are more in line with

Antoine de Saint-Exupery wrote: A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.


C++ seems to have the opposite goal (intellectual masturbation and "black-box" product!). My C code version is much shorter and "at-a-glance" understandable as to what is really taking place. Here one last quote

Paul Graham wrote: Historically, languages designed for other people to use have been bad: Cobol, PL/I, Pascal, Ada, C++. The good languages have been those that were designed for their own creators: C, Perl, Smalltalk, Lisp.


Sorry, didn't mean to rant. As you can guess, this has been on my mind a bit. Good gravy, I'm a dinosaur. :(
skywriter wrote: welcome to the club


Here's one more:
Grocho Marx wrote: I don't care to belong to a club that accepts people like me as members.
Here are my times - sorry about the mixed format

Code: Select all

time yafray big.xml
Onyx350 R16K@1GHz
real 297.993
user 295.881
sys  0.554

354.180u 0.218s 5:56.34 99.4% 0+0k 0+0io 0pf+0w

time yafray -c 2 big.xml
Onyx350 R16K@1GHz
367.348u 0.863s 3:26.11 178.6% 0+0k 0+0io 0pf+0w
try the neko_freeciv2 tardist. Works fine.
I love C. C++ gives me nightmares. The K&R book is not only definative it is also simple, practical and well written. It's all you will ever need in C (+ man pages!).

For Unix C programming (Unix and C are tightly coupled), I like Advanced Programming in the Unix Environment by W. Richard Stevens and also The UNIX Programming Environment by Kernighan and Pike.

The Windows System: Programming and Applications with Xt by Douglas Young is a great GUI programming manual.

OpenGL Programming for the X Windows System by Mark Kilgard will get you going on graphics.
SGI put Motif 2.2.2 on the Prism -- for the life of me I can figure out why.
I have to disagree. There are choices in computer manufacturers and operating systems. If folks are unwilling to exercise that choice it's not the leading companies fault---they are doing their half of the equation by trying to grab as much busine$$ as possible. I am sick to M$ products. I don't use them any more, but I still fight daily with folks at work about using non-windows operating systems to get the job done. They agrue sticking with the majority is cheaper and easier (i.e. better supported). I counter-argue that performance is critical, they say "better is the enemy of good enough", with windoze being good enough (for them). The truth is there is no perfect solution. Every viable platform/language/OS is a compromise---it's up to us to make it work anyways.
Do a man pciba.
The PCI Bus Adpater makes getting those addresses very easy.
The hwgraph entry is due to the pciba. Same method.
I compiled the nekoware bash, although I'm not a full-time bash user, it has worked alright for me. I can try to recompile with the option specified abive.
When Alias dropped IRIX like a hot potato, they lost all my sympathy. Instant karma.
I went from Word to Framemaker (IRIX v5.5) about five years ago and it was like a breath of fresh air. However, it still lacked a few features and Adobe's support was lacking. I was without a real word processing "home" until I learned LaTeX, now I'll never go back!

OO is a neccessity however, since I'm constantly sent M$ Office documents by co-workers (ack PowerPoint!). Getting a better (i.e. better importing) version on IRIX is a priority with me, although I doubt I'll every author anything in it.
Quicktime 7 on IRIX. Really! :)
A bit off topic but I enjoyed this from "How To Be A Hacker"
4. Help keep the infrastructure working

The hacker culture (and the engineering development of the Internet, for that matter) is run by volunteers. There's a lot of necessary but unglamorous work that needs done to keep it going — administering mailing lists, moderating newsgroups, maintaining large software archive sites, developing RFCs and other technical standards.

People who do this sort of thing well get a lot of respect, because everybody knows these jobs are huge time sinks and not as much fun as playing with code. Doing them shows dedication.

5. Serve the hacker culture itself

Finally, you can serve and propagate the culture itself (by, for example, writing an accurate primer on how to become a hacker :-) ). This is not something you'll be positioned to do until you've been around for while and become well-known for one of the first four things.

The hacker culture doesn't have leaders, exactly, but it does have culture heroes and tribal elders and historians and spokespeople. When you've been in the trenches long enough, you may grow into one of these. Beware: hackers distrust blatant ego in their tribal elders, so visibly reaching for this kind of fame is dangerous. Rather than striving for it, you have to sort of position yourself so it drops in your lap, and then be modest and gracious about your status.

gr_osview is going to hurt performance if running simultaneously.
Ressurecting this thread on a tangential note :
I thought it worthwhile to document the occassional (and not so occasional) Xscreensaver problem I've had since the first IRIX Xscreensaver built here. Basically, when I "jog" the keyboard or mouse to wake the system up, Xscreensaver will crash the Xserver instead of giving me the password prompt. This seems to only happen on Vpro graphics (V6/V12). The IR3/4 and Octane with MMX are stable. The error in the SYSLOG is

Quote:
Nov 29 22:07:41 4A:holmesIV unix: WARNING: odsy board 0: ILLEGAL_OUT_FORMAT received
Nov 29 22:07:41 1A:holmesIV unix: ALERT: odsy board 0: Graphics error
Nov 29 22:07:41 5A:holmesIV unix: NOTICE: odsy board 0: dmawait_timeout=0x1
Nov 29 22:07:41 7A:holmesIV unix: odsy flags: 0xffffffff82001900<GEN_LOCK_INTR,CFIFO_HW_FLAG,CTXSW_DONE,DMA_DONE_FLAG,ILLEGAL_OUT_FORMAT>
Nov 29 22:07:41 7A:holmesIV unix: odsy status0: 0x10024280<CFIFO_ENABLED,CFIFO_LW,XRFIFO_LW,RASTER_SYNC_SRC=unset,CFIFO_SYNC_SRC=unset,DMA_SYNC_SRC=unset>
Nov 29 22:07:51 3B:holmesIV Xsession: squeen: fatal IO error 131 (Connection reset by peer)
Nov 29 22:07:51 3D:holmesIV tfxd[6355]: caught XIO error
Nov 29 22:07:52 3B:holmesIV xdm[1534]: Server for display :0 terminated unexpectedly: 2304
Nov 29 22:07:55 3D:holmesIV Xsgi0[7140]: odsyKernInit: attaching for brdnum=0


If y'all have any thoughts, I'd love to poke around the source code some.
:)
Also interested in the CPU load info code!:)
I found this in the 6.5.28 release notes

Quote:
4.4 Operating System


4.4.1 Bugs fixed in IRIX 6.5.28

+ 919019: ILLEGAL_OUT_FORMAT error on glDrawPixels


Unfortunately, the Xscreensaver error still occurs under Vpro in 6.5.28.

Quote:
Jan 11 08:52:14 4A:holmes4 unix: WARNING: odsy board 0: ILLEGAL_OUT_FORMAT received
Jan 11 08:52:14 1A:holmes4 unix: ALERT: odsy board 0: Graphics error
Jan 11 08:52:14 7A:holmes4 unix: odsy flags: 0xffffffff82001100<GEN_LOCK_INTR,CFIFO_HW_FLAG,CTXSW_DONE,ILLEGAL_OUT_FORMAT>
Jan 11 08:52:14 7A:holmes4 unix: odsy status0: 0x10024280<CFIFO_ENABLED,CFIFO_LW,XRFIFO_LW,RASTER_SYNC_SRC=unset,CFIFO_SYNC_SRC=unset,DMA_SYNC_SRC=unset>
Jan 11 08:52:24 1A:holmes4 unix: ALERT: RAD thread held off for more than 32 mS
J


I grep hunted all of the Xscreensaver source for glDrawPixels but was surprised to find no occurances.

Still a bug lunking in the IRIX video drivers?
Like an autopsy, I think there are lessons that can be learned from poking around in the corpse. It's not really about blame at this point, just wisdom. This rise-excess-fall cycle is ubiquitous in human endeavors. For this crowd (relatively young and moving into or towards lead roles in society), it may help avert future dissaster.

When I was a pre-teen, my favorite comic book was the X-men. It was right after issue 100 that it caught my eye and was about to begin its sustained surge of popularity. The lesson that it impressed upon me it, in the simple terms for that day "The worst thing that can happen to anything is for it to become popular." Strange when you think about it, but almost always true---sucks the quality right out of it. Now almost 25 years later, I'm still trying to figure out exactly why that is. The closest I've come to an answer is that it attracts the wrong kind of people.

The other (related) eternal puzzle is catagorized in my mind as "Why did the Beatles break up?".

So I now add: "Where did SGI go wrong?"

and on a more positive note: "How did Apple turn it around?"
GeneratriX wrote: ...And anyone noticed also that:

1) When Apple uses Intel processors, we say "-wishes do come true!"
2) When Apple uses ATI graphic pipelines we say: "-Oh!!! ...That means it’s screaming fast. Up to 256MB GDDR3 graphics memory!!!"
3) When Apple uses to have on their site the yin-yan logo, with the legend: "UIniversal Binary: Software just works", we said: "-oh geez!; it is a miracle... they managed to run Mac apps inside the intel-OSX!!! Geniouses!!!"
4) When Apple uses SATA drives we say: "-bloody hell!!! ...they will provide an amazing 250GB 7200-rpm Serial ATA hard disk drive!!! Cool!!!"



I didn't really mean to compare Apples to oranages :) , but since I'm talking to SGI shortly about my concerns with the Prism, I'd like to address the points Diego brought up (and get some responses).

Brombear is excatly right.

1) SGI brought in faster processor (great!) but dumped a better (i.e. more robust, more parallel/scabale friendly) OS (IRIX). So we downgraded to Linux. We're hoping now that some of the functionality can be restored (e.g. real-time). Also, very little effort made to help the developer port over IRIX apps--RapidTransit=no thanks, wrong "broken" Motif version (2.2), no SGI widgets, header conflicts in shared memory arenas/semaphores, extension functions missing from OpenGL libs. No RGB image lib. The list gets longer the more we try.
2) ATI graphics cards are faster vertex processor than InfiniteReality, but in all other areas inferior (e.g. color depth, multisample, pixel read, image processing, memory size, overlays, etc...). They do however support a few more modern OpenGL extension like Shaders. Unfortunately, as I recently discovered, the drivers are wicked broke and barely work. What's more, the interface to OpenGL (i.e. SGI's openGL libs and headers) have adopted the PC cluster fuck API (extension wrangler my ass!) Shameful for a system with *known* graphics configurations!! Again, feels like a downgrade.
3) who cares? --- Taosim rules --- whatever...
4) The research I've done on SATA drives shows thay have slower seek times, less bandwidth and are less reliable than SCSI. The only thing they have going for them is that there are cheap vs. size. But if you are paying $200,000 for a supercomputer, do you really care is SGI saved $300 when they resell you drives? Hell no! ANOTHER downgrade. Whos is architecting these systems for SGI---Linux geeks fresh out of school?

Apple is a consumer product. iLife-style and all that. For hitting their mark I applaud Apple. The products are real works of art---quality in interface design, mid-level performance at an everyman cost. but SGI is trying to sell HPC. The big $$'s means you had better put something *extra* in those machines that the average high-schooler can't get off ebay. Cutting edge technology---because for real science and engineering ALL computers are way, way, WAY too damn slow. NUMA link is good, but the real-time and RASC are only marginal, and the graphics suck.

What's been eating me lately...a growing fear if you will, is an attitude that SGI has been giving me in regard to the Prism. I'm sure it due to limited resources, but I keep bumping into the attitude of either

1) It's SuSe Linux....there's nothing we can do about it.
-or-
2) It's ATI graphics...there's nothing we can do about it.

To which I find myself being forced (and I really do mean forced) into replying: "Then I'll have to find some other vendor that will provided an integrated system that performs." My only problem is figuring out where to go next for HPC---I just don't have the time to gin something together myself. That should really be SGI's targeted niche---folks with more money than time (or computer smarts :) ). And the systems they deliver should seem like magic---not a jumbo-size version of last year's PC trash.

One last comment: Could you see Apple saying "It's BSD unix...there's nothing we can do about it?"

\rant
For the other Vpro users out there I have a theory I'm testing. I think only the Really Slick Screensavers (neko_rss) hacks are causing the Xserver crash. I've set the screensaver to flurry and been up 2 days so far. Here's hoping!

[b]Edit[\b]: It's been more than a week, which is *much* longer than the mean-time between crashes I was experiencing. Looks like the GL in the Really Slick Screensaver may be throwing V12 cards for a loop.
I finally found a sliver of time to do something I've been itchin' to try. I wrote a very small app that uses libXft and freetype2 to draw anti-aliased text in a X window. It is pure X and doesn't require Xt or any toolkit like Motif, GTK+ or Qt. Basically, Keith Packard has replaced the core X font calls with equivalents. Here's the little app, which I post here because there doesn't seem to be anything like it on the web. The closest is here: http://www.keithp.com/~keithp/render/Xft.tutorial

xfthello.c

Code: Select all

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#ifdef HAVE_XFT
#include <Xft/Xft.h>
#endif

#define DEFAULT_BDWIDTH 1 /* border width */

#ifdef HAVE_XFT
char *text = "Hello Xft";
#else
char *text = "Hello X11";
#endif

Display *dpy;

int main( int argc, char *argv[] )
{
int                     ytext, wtext, htext, gravity, geo_mask;
int                     Done = 0, highlight = 0, force_expose = 0;
XSizeHints              xsh;
XWMHints                xwmh;
unsigned long           fgpix, bgpix;
Window                  mainW;
XSetWindowAttributes    xswa;
#ifdef HAVE_XFT
XftFont                 *font;
XftDraw                 *xftdraw;
XRenderColor            xrcolor;
XftColor                xftcolor, hlcolor;
XGlyphInfo              extents;
#else
GC                      gc;
XGCValues               gcvals;
XFontStruct             *font;
#endif
XEvent                  event;
char                    user_geo[80];

/* open connection to X display */
dpy = XOpenDisplay( NULL );

/* set up font */
#ifdef HAVE_XFT
font = XftFontOpenName( dpy, DefaultScreen( dpy ), "morpheus-18" );
#else
font = XLoadQueryFont( dpy, "-*-helvetica-medium-r-normal--20-*-*-*-p-100-iso8859-1" );
#endif

/* colors */
fgpix = BlackPixel( dpy, DefaultScreen( dpy ) );
bgpix = WhitePixel( dpy, DefaultScreen( dpy ) );

/* position and size of top window (XSizeHints) */
#ifdef HAVE_XFT
XftTextExtents8( dpy, font, (XftChar8 *)text, strlen(text), &extents );
ytext = extents.height - extents.y;
wtext = extents.width - extents.x;
#else
ytext = font->max_bounds.ascent + font->max_bounds.descent;
wtext = font->max_bounds.width / 2 + XTextWidth( font, text, strlen(text) + 4 );
#endif
htext = ytext + 4;
xsh.flags = ( PPosition | PSize | PMinSize );
xsh.height = htext + 10;
xsh.min_height = xsh.height;
xsh.width = wtext;
xsh.min_width = xsh.width;
xsh.x = 50;
xsh.y = 50;

/* construct a geometry string */
sprintf( user_geo, "%dx%d+%d+%d", xsh.width, xsh.height, xsh.x, xsh.y );

/* process geometry specification */
geo_mask = XWMGeometry( dpy, DefaultScreen(dpy), user_geo, NULL/*def_geo*/,
DEFAULT_BDWIDTH, &xsh, &xsh.x, &xsh.y, &xsh.width, &xsh.height,
&gravity );

/* check geometry bitmask and set size hints */
if ( geo_mask & (XValue|YValue) ) xsh.flags |= USPosition;
if ( geo_mask & (WidthValue|HeightValue) ) xsh.flags |= USSize;

/* create top level window */
mainW = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y,
xsh.width, xsh.height, DEFAULT_BDWIDTH, fgpix, bgpix );

/* set window manager properties */
XSetStandardProperties( dpy, mainW, "xhello", "xhello", None, argv, argc, &xsh );

/* set window manager hints */
xwmh.flags = (InputHint|StateHint);
xwmh.input = False;
xwmh.initial_state = NormalState;
XSetWMHints( dpy, mainW, &xwmh );

#ifdef HAVE_XFT
/* Xft draw context */
xftdraw = XftDrawCreate( dpy, mainW, DefaultVisual(dpy,DefaultScreen(dpy)),
DefaultColormap( dpy, DefaultScreen(dpy) ) );
/* Xft text color */
xrcolor.red = 0x0;
xrcolor.green = 0x0;
xrcolor.blue = 0x0;
xrcolor.alpha = 0xffff;
XftColorAllocValue( dpy, DefaultVisual(dpy,DefaultScreen(dpy)),
DefaultColormap( dpy, DefaultScreen(dpy) ), &xrcolor, &xftcolor );
/* Xft highlight color */
xrcolor.red = 0xafff;
xrcolor.green = 0xafff;
xrcolor.blue = 0xffff;
xrcolor.alpha = 0xffff;
XftColorAllocValue( dpy, DefaultVisual(dpy,DefaultScreen(dpy)),
DefaultColormap( dpy, DefaultScreen(dpy) ), &xrcolor, &hlcolor );
#else
/* create graphics context */
gcvals.font = font->fid;
gcvals.foreground = fgpix;
gcvals.background = bgpix;
gc = XCreateGC( dpy, mainW, (GCFont|GCForeground|GCBackground), &gcvals );
#endif

/* set window attributes */
xswa.colormap = DefaultColormap( dpy, DefaultScreen(dpy) );
xswa.bit_gravity = CenterGravity;
XChangeWindowAttributes( dpy, mainW, (CWColormap|CWBitGravity), &xswa );

/* select inputs */
XSelectInput( dpy, mainW, ExposureMask|ButtonPressMask|EnterWindowMask|LeaveWindowMask );

/* make window visible */
XMapWindow( dpy, mainW );
printf("click on the window to exit\n");

/* retrieve and process events */
while ( !Done ) {
XNextEvent( dpy, &event );
if ( event.xany.window == mainW ) {
switch ( event.type ) {
case EnterNotify:
case LeaveNotify:
if ( event.type==EnterNotify) highlight = 1;
else highlight = 0;
force_expose = 1;
case Expose:
if ( event.xexpose.count == 0 || force_expose ) {
int            x, y, itmp;
unsigned int   w, h, utmp;
Window         wtmp;

if ( XGetGeometry( dpy, mainW, &wtmp, &itmp, &itmp, &w, &h, &utmp, &utmp )==0 )
break;
XClearWindow( dpy, mainW );
#ifdef HAVE_XFT
x = ( w - extents.width ) / 2;
y = htext + ( h - htext + extents.height )/2;
if (highlight) XftDrawRect( xftdraw, &hlcolor, x, y-extents.height, wtext, extents.height  );
XftDrawString8( xftdraw, &xftcolor, font, x, y, (XftChar8 *)text, strlen(text) );
#else
x = ( w - XTextWidth( font, text, strlen(text) ) ) / 2;
y = htext + ( h - htext + font->max_bounds.ascent - font->max_bounds.descent )/2;
XDrawString( dpy, mainW, gc, x, y, text, strlen(text) );
#endif
force_expose = 0;
}
break;
case ButtonPress:
Done = 1;
printf("good-bye!\n");
break;
default:
break;
}
}
}

/* close connection to display */
#ifdef HAVE_XFT
XftDrawDestroy( xftdraw );
XftColorFree( dpy, DefaultVisual(dpy,DefaultScreen(dpy)),
DefaultColormap( dpy, DefaultScreen(dpy) ), &xftcolor );
XftColorFree( dpy, DefaultVisual(dpy,DefaultScreen(dpy)),
DefaultColormap( dpy, DefaultScreen(dpy) ), &hlcolor );
#else
XFreeGC( dpy, gc );
#endif
XDestroyWindow( dpy, mainW );
XCloseDisplay( dpy );

return(0);
}



and the (GNU) Makefile that will built it.

Code: Select all

SHELL = /bin/sh

CFLAGS = -O0 -g -Wall
CPPFLAGS = -I. -I/usr/X11R6/include -L/usr/X11R6/lib
XFTFLAGS = -DHAVE_XFT -I/usr/nekoware/include -I/usr/nekoware/include/freetype2 -I/usr/nekoware/include/X11 -L/usr/nekoware/lib -Wl,-rpath -Wl,/usr/nekoware/lib

# uncomment for Apple OS X
#XFTFLAGS = -DHAVE_XFT -I/usr/X11R6/include/X11 -I/usr/X11R6/include/freetype2

LDFLAGS =  -L.  -L..
LIBS = -lX11
XFTLIBS = -lXft

%.o: %.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $(XM) -o $@ $<

.PHONY: all
all: xhello xfthello

xhello: $(OBJS) xhello.c
$(CC) $(CFLAGS) $(CPPFLAGS) xhello.c -o xhello $(LDFLAGS) $(LIBS);

xfthello: $(OBJS) xhello.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(XFTFLAGS) xhello.c -o xfthello  $(LDFLAGS) $(XFTLIBS) $(LIBS);

.PHONY: clean
clean:
rm -f ./*.o; rm -f ./xhello ./xfthello;


Note: you have to uncomment one line if you want to build it on the Mac. Also, it builds two versions. The old X11 style fonts (xhello) and the new Xft anti-alised fonts (xfthello). Have a peek at the results.

Image

What am I going to do with this newly acquired knowledge?....Only time will let! :twisted:

Cheers!
Wonderful new. Congradulations! :!:
Don't let all the effort that lies ahead daunt you--it pays big dividends! :D
heh heh. Nekoware fork! :D
I was thinking of getting one of these D-Link access points in order for my Octane at home to talk with the Mac Powerbook Airport.

http://www.dlink.com/products/?sec=0&pid=326

Can anyone recommend a better product? I don't have a Windoze machine - so I'm hoping the claim of web-based set-up is valid.

Thanks in advance.
Thanks for the feedback sum][one. Much appreciated.
lewis wrote: ...mad custom code...
UNIX/IRIX = freedom! Gonna miss ya' old girl.
If you are behind a secure firewall you can use rlogin to remotely log into the other system from a shell. Once the login is completed your $DISPLAY environment variable will be set correctly so that the remote apps will pop up on you local display. OpenGL graphics apps will be noticably slower, bet regular X/GUI stuff wiill run fine. You can run the remote toolchest/whatever then if you choose from that shell window.

There is also neko_tightvnc is you want the whiole desktop remotely.

BTW, you signature quote is mispelled ( off not of ). :)