Commit Briefs

Omar Polo

-etags ... || true

improves the error that most make implementation given when etags is not present: it doesn't seem scary anymore.

Omar Polo

grabkey only on the targeted windows

now we grabkey() only on the window that matches what the user requested. That is, given match class 'Firefox' on "C-n" do "<Down>" we only bind C-n on windows that match the class Firefox, and not on the root window as we did before. In order to do this, we traverse the tree during startup and grabkey on matching windows, than we subscribe also to SubstructureNotify so that when a window gets mapped we receive an event. There are still some downsides to this. Firefox uses also '/usr/local/lib/firefox/firefox' as class name on my machine, and sometimes it seems like we don’t grab the key at the first try (maybe Firefox changes the class after the window gets mapped?)

Omar Polo

make grabkey accept the target window as parameter

This is needed so we can later grabkey on particular window and not on the root one.

Omar Polo

exec only on key press

it seems to me the most sensible approach



This repository contains no tags


.gitignorecommits | blame
LICENSEcommits | blame
Makefilecommits | blame
README.mdcommits | blame
config.mkcommits | blame
lex.lcommits | blame
parse.ycommits | blame
star-platinum.1commits | blame
star-platinum.ccommits | blame
star-platinum.conf.5commits | blame
star-platinum.hcommits | blame

# star platinum

`star-platinum` is a key binding manager for x11.  It acts primarily
as a translator: the canonical example is to Emacs-ify various
programs by customizing how some key are handled.

Check out the [manpage](star-platinum.1) for more information.

## Building

`star-platinum` depends on `xlib` and needs a C compiler, `yacc` and
`lex` to compile.  With that in place, it's as easy as


OpenBSD' `lex` and `yacc` were tested, as well as `bison` 3.3.2, GNU
gcc 4.2.1 and 8.4.0, and clang 10.0.1

Configuration for the build process can be found in ``, but
you usually don't need to modify it: passing the variables to make
should be enough.  For instance, to build with `gcc`

    make CC=gcc

`bison` can be used instead of `yacc` by changing the `YACC` variable

    make YACC=bison

Unless you are compiling on OpenBSD, you probably want to change the
default `CFLAGS` and `LDFLAGS`.

If `etags` is available, a `TAGS` file is created.  Note however that
`etags` is **not needed** for building: it's only a support tool used
to aid the development.

## FAQ

 - it does not seems to work!

   There’s currently a limitation, star-platinum won’t work with
   reparenting window manager (such as the heavier DE, but also some
   lighter WM like stumpwm or i3).

 - the name is a jojo reference?

   Sort of.  I was listening to 「sono chi kioku」, the fourth opening,
   while I was playing with the idea of translating the key.  Given
   that I'm generally bad at naming things...