Re: Thinking about the tasklist
- From: Jan Nieuwenhuizen <janneke gnu org>
- To: Elijah Newren <newren gmail com>
- Cc: Havoc Pennington <hp redhat com>, Benjamin Kahn <xkahn ximian com>, desktop-devel-list gnome org
- Subject: Re: Thinking about the tasklist
- Date: Wed, 20 Oct 2004 20:02:30 +0200
Elijah Newren writes:
So, currently it can be done
> No it's not. You either bind a key to an external command via
> gconf[1],
in a silly way
> or you modify Metacity itself if you don't want to run an
> external command.
or not at all. We were talking about why `people were not writing
their own pager/window nav applets'. If the way to `configure'
metacity is to hack it, I guess we found the answer: it cannot be done
[currently].
> Why can't you just use an external command, as Rob previously
> suggested? (I believe you mentioned that your app took a long time
> to start--but why not have that app just always be running in the
> background, and have another app which launches quickly be bound to
> the keybinding and forward the message to your real app?)
Yes, I tried that. In fact, the first version used this hack
WindowMenu *menu;
#include <signal.h>
#include <fcntl.h>
void sig_watcher (int);
void sig_catcher (gpointer, gint, GdkInputCondition);
int signal_fds[2];
void
setup_signal()
{
/* Set up to catch signals */
if (pipe (signal_fds) == 0)
{
long arg;
signal (SIGUSR1, sig_watcher);
gdk_input_add (signal_fds[0], GDK_INPUT_READ, sig_catcher, NULL);
arg = fcntl (signal_fds[0], F_GETFL);
fcntl (signal_fds[0], F_SETFL, arg | O_NONBLOCK);
}
}
/* Catch unix signals, write them to the pipe */
void
sig_watcher(int signum)
{
write (signal_fds[1], &signum, sizeof (signum));
}
/* Get signals from the pipe. *Now* it is safe to call gtk */
void
sig_catcher (gpointer d, gint fd, GdkInputCondition cond)
{
int signum;
while (read(signal_fds[0], &signum, sizeof (signum)) > 0)
window_menu_popup_menu (menu, 0, 0);
}
int
main (int argc, char **argv)
{
...
setup_signal ();
}
and a second app would `killall -USR1 keywise'. But I deleted it
before my first public release of keywise.c, because it's gross, I'm
surely not the only one who needs it, and it will only give you a
couple of key bindings, where eventually I'd like to have about 10.
In addition to the number of bindings, I'd like to be able to change
them dynamically (like in a menu: hover above the window-group or an
individual window, press a key, and have that bound to cycle that
window-group or go to that individual window).
I could hardcode them for myself, but that won't work if you want to
contribute a usable window switching metacity addon. I don't think
that spawning gconf-editor is the way we want to go.
> If Metacity wanted infinite configurability such as Sawfish was
> designed for, Metacity wouldn't have been written--Sawfish was already
> available. (In other words, you can't do this in Metacity. By
> design.)
Ok, I see that. And libwnck is quite an acceptable solution for me,
esp. to test out new ideas, it's just the keybindings.
Jan.
--
Jan Nieuwenhuizen <janneke gnu org> | GNU LilyPond - The music typesetter
http://www.xs4all.nl/~jantien | http://www.lilypond.org
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]