jkh@pcsbst.UUCP (jkh) (04/02/89)
... .. if (i == len) printf("\033]2;%s: ~%s\007", host,&wd[i]); else printf("\033]2;%s: %s\007", host,wd); ... Oh urg! This seems to be going about it the wrong way, if you're going to write a program to do this.. Also, you're probably a lot better off just writing aliases to echo the appropriate escape sequences than you are hacking up a program and having to suffer the startup time. I believe that several people have already posted examples of this.. However, if you MUST have an exec for some reason or another, I would suggest something like: ---- #ifndef lint static char *rcsid_setname_c = "$Header: /usr/NSA/projects/X11.3/secret/xxxxxx/<deleted>/<encoded>/<deleted>/setname.c,v 1.0 89/04/2 14:39:57:11 #6 Exp $"; #endif lint #include <X11/copyright.h> #include <X11/Xlib.h> /* * setname.c * * Version: 1.0. * Revision level: 0. * Security classification: Low. * Funded-By: NSA Contract #100243SSNA-06 * Project-Number: 30023-10A4 * Programmer: #6 * Inspected-By: #32 */ main(argc, argv) int argc; char *argv[]; { Display *dpy; Window victim; char *id; if (argc != 2) { fprintf(stderr, "Usage: %s <new-title>\n", argv[0]); exit(1); } dpy = XOpenDisplay(0); if (!dpy) { fprintf(stderr, "%s: Can't open display.\n", argv[0]); exit(2); } if (!(id = getenv("WINDOWID"))) { fprintf(stderr, "%s: Can't get WINDOWID from environment.\n", argv[0]); exit(3); } victim = atol(id); if (victim) { XStoreName(dpy, victim, argv[1]); XSync(dpy, 0); } else fprintf(stderr, "%s: Bad window ID '%s'.\n", argv[0], id); } Of course, you could get fancier and accumulate multiple arguments, if specified (instead of having to surround a title containing spaces with quotes), or add a -i flag to do a XSetIconName() rather than a XStoreName() (allowing one to name the icon). These are left as an exercise to the bored reader with nothing better to do. Actually, it just occurred to me that such a program does have a use, though in a much less verbose form (do all the checks done above, but just exit if you find an error, don't print anything). I.E: #include <X11/Xlib.h> main(argc, argv) int argc; char *argv[]; { Display *dpy; Window victim; char *id; if (argc == 2 && (dpy = XOpenDisplay(0)) && (id = getenv("WINDOWID")) && (victim = atol(id))) { XStoreName(dpy, victim, argv[1]); XSync(dpy, 0); } } You could alias various commands like "cd", "pushd", "popd" and whatever to print the CWD by invoking this program, but not suffer from extraneous garbage being printed when you log in via an ordinary ascii terminal (do people still use those?) or use a shell under EMACS. Jordan P.S. Just tested the above. A *lot* faster than sending esc's and a whole lot less obnoxious in terms of potential side-effects.-- -------- Jordan Hubbard PCS Computer Systeme GmbH West Germany UUCP: {uunet,decwrl}!pyramid!pcsbst!jkh ARPA: jkh@violet.berkeley.edu "I'd like a burrito please." "Was?" "Uh. Ich moechte ein Mexicanische 'Burrito', bitte." "Hahahahahahaha.. Das ist ein guter Witz. Du bist toll.." "Hey! It's real easy, just take some cheese, some meat and some beans and roll it up like this.." "Raus!"
news@bnr-fos.UUCP (news) (04/13/89)
I tried writing out the same binary characters (and the same ASCII ones) from a mainframe program running via tn3270. It didn't change the icon label (I'm suffering from only uwm on this machine.) Any ideas? It does work perfectly for xterms. P.S. is tn3270 a standard tool or something we dredged up? I have no man page for it. Sigh. utgpu!bnr-vpa!bnr-fos!hwt%bnr-public | BNR is not | All that evil requires hwt@bnr (BITNET/NETNORTH) | responsible for | is that good men do (613) 765-2337 (Voice) | my opinions | nothing.