1. 26 Dec, 2021 1 commit
  2. 24 Dec, 2021 1 commit
  3. 19 Dec, 2021 11 commits
    • Tinu Weber's avatar
      Update Readme with current state · 628c186d
      Tinu Weber authored
      We've removed the built-time configuration, we've added an RPC
      interface, and the installation procedure has changed a bit as well.
      Before merging this into master, the Readme should reflect the current
      state correctly.
      628c186d
    • Tinu Weber's avatar
      Remove config and legacy_config · acab982e
      Tinu Weber authored
      This is a bit historic. After all, I've been working towards this for
      the past 7 years.
      
      While legacy_config hasn't really been used at all anymore, config.c
      still handled the keymap and buttonmap creation (at least for `normal`
      and `wsm`). These are now moved to more appropriate places.
      
      As part of working on karuiwm.c's _init() and _term() anyway, we also
      slightly rearrange a few of the initialisation and tear-down steps.
      There's still some unwanted dependencies between some of the components
      that prevent a clean LIFO approach to cleaning up the components, but
      that's something for another day.
      acab982e
    • Tinu Weber's avatar
      Remove button binding in legacy configuration · 7631b0bf
      Tinu Weber authored
      Now the default configuration is empty, and the config component's only
      job is now merely to create the keymaps and buttonmaps.
      
      Once those remaining things are moved out to more appropriate places, we
      can get rid of config.{c,h} entirely.
      7631b0bf
    • Tinu Weber's avatar
    • Tinu Weber's avatar
      Remove key binding in legacy configuration · 81116ff2
      Tinu Weber authored
      We currently can't get rid of button bindings because the …_CURRENT
      arguments are not implemented in the relevant parsers yet, but we can
      already get rid of the key-binding part.
      
      This is a lovely day.
      81116ff2
    • Tinu Weber's avatar
      Add init script to be distributed (+ make test init.kwm "official") · 4d82889f
      Tinu Weber authored
      Unlike the one for development testing, this one is meant to be
      installed on end-user systems. It tries to run a user-specific init
      script, and if that doesn't exist, it falls back to running a
      system-wide configuration that seems like a reasonable default
      configuration.
      
      Also, we now ship the init.kwm from our test case.
      4d82889f
    • Tinu Weber's avatar
      Add init "module" · c49c3c03
      Tinu Weber authored
      We have an RPC interface and we have a utility for interacting with that
      interface (karuirpc). And the last step is to get something to
      automatically use that when starting.
      
      The original idea was to have karuiwm itself detect where there are
      karuirpc scripts, and source/invoke the first ones within a given list
      of paths.
      
      But this is something that is more easily and flexibly implemented in
      shell. So the implementation here follows that approach: When starting
      up, invoke a shell script that then takes it from there (invoking a
      karuiwm RPC script at startup).
      
      By default, we invoke `$prefix/share/karuiwm/init` (`init` because it
      feels a bit comparable to how an OS kernel first sets up its own stuff,
      and then passes it on an external component---a "userspace" process in
      the OS case, a shell script in the karuiwm case). The shell script then
      does the rest.
      
      For now, we just use a simplistic, internal init.
      c49c3c03
    • Tinu Weber's avatar
      cstr_split_smart: Fix handling of nested quotes · d76e1c51
      Tinu Weber authored
      Single quotes inside double quotes (and vice versa) should not be
      treated any special way.
      d76e1c51
    • Tinu Weber's avatar
      key_parse_symbol: Also parse some of the XF86 symbols · 67eb4367
      Tinu Weber authored
      These contain, among others, the audio volume and music/media control
      buttons. For now, I'm picking the ones I currently need (not sure if
      there's perhaps a more efficient way of declaring this). Adding new ones
      as users require them.
      67eb4367
    • Tinu Weber's avatar
      buttonmap: Track if active; don't forget to grab button when activating · d5899aad
      Tinu Weber authored
      Partially similar to previous commit in keymap.
      d5899aad
    • Tinu Weber's avatar
      keymap_add_keybind: Don't forget to grab key if keymap is active · b1f13153
      Tinu Weber authored
      This caused a bug where key bindings that were declared after a keymap
      was activated did not work as long as a window was open.
      b1f13153
  4. 12 Dec, 2021 11 commits
    • Tinu Weber's avatar
      buttonmap/keymap: Allow overwriting bindings · 9526fa01
      Tinu Weber authored
      For now, we just have key_map/button_map overwrite anything
      pre-existing, while we don't allow this for the initial legacy config
      setup.
      9526fa01
    • Tinu Weber's avatar
      registry/config: Remove unnecessary sessions · 4b44cdef
      Tinu Weber authored
      Since the registry doesn't associate button/key maps to a session, there
      is no point requiring there to be a session.
      
      We could argue that interacting with the registry should require a
      session in any case, for better tracking, but until we've come up with a
      clear concept of what exactly the registry is supposed to cover, WAGNI.
      
      This also means that there is no point in having a config struct, and
      subsequently no point in having a config_get() function.
      
      I love commits like these.
      4b44cdef
    • Tinu Weber's avatar
      test/xephyr: Run karuiwm with debug mode · 119d8cb7
      Tinu Weber authored
      119d8cb7
    • Tinu Weber's avatar
      karuiwm: Use commandline component for commandline argument handling · f82fc787
      Tinu Weber authored
      This is a bit of breaking change in the sense that one cannot restart
      into this version of karuiwm from an older version, because the session
      savefile is now passed as `savefile=/…`.
      f82fc787
    • Tinu Weber's avatar
      Add commandline and commandline_argument · 71157b02
      Tinu Weber authored
      These two types allow us to represent the (non-optional) arguments
      passed via commandline, through the key=value (or component.key=value)
      notation.
      
      The idea behind the component.key=value notation is to pass each
      "sub-commandline" to its respective component (at least once we start
      modularising the codebase a bit further).
      71157b02
    • Tinu Weber's avatar
      Add cstr_find_char · db6862dc
      Tinu Weber authored
      Allows finding the first occurence of a character within a string (or
      simply checking whether a certain character appears within a string).
      db6862dc
    • Tinu Weber's avatar
      Remove commandline · 8f6aa318
      Tinu Weber authored
      It's been mostly just "warming up" the input handling through the RPC
      anyway, so that little bit of work can also be done in rpc_client
      directly, thereby removing some of the complexity.
      
      Also, the name "commandline" is about to be used for something else
      soon...
      8f6aa318
    • Tinu Weber's avatar
      Add list_concatenate · 4a3f766c
      Tinu Weber authored
      Extends the first list by the content of the second list. The second
      list is consumed.
      4a3f766c
    • Tinu Weber's avatar
      list_find: Operate on read-only list · d40c1d62
      Tinu Weber authored
      d40c1d62
    • Tinu Weber's avatar
      Add cstr_split_once · 541946bc
      Tinu Weber authored
      This is useful for splitting key=value pairs.
      541946bc
    • Tinu Weber's avatar
      Remove kwmctl test script · f2bac5cc
      Tinu Weber authored
      Obsolete since the addition of karuirpc.
      f2bac5cc
  5. 14 Nov, 2021 2 commits
    • Tinu Weber's avatar
      useraction/exec: setsid in child process · 87d2e14c
      Tinu Weber authored
      This causes the child process to become its own session leader, and
      thereby not causing itself to become a zombie after executing (and the
      sanity of the process tree no longer to depend on karuiwm properly
      cleaning up its zombified child process).
      
      Karuiwm is not a process manager, but a window manager. This seems more
      reasonable. Also, it's in line with what suckless' dwm does.
      87d2e14c
    • Tinu Weber's avatar
      karuirpc-rlwrap: Only run with rlwrap if connected to terminal · f33367d7
      Tinu Weber authored
      Turns out dmenu doesn't like it very much if it interacts with karuirpc
      through rlwrap, and this causes the entire WM to hang.
      f33367d7
  6. 13 Nov, 2021 1 commit
    • Tinu Weber's avatar
      Add karuirpc-rlwrap · 05a03d7a
      Tinu Weber authored
      Downstream may want to package this perhaps the other way around:
      
      * karuirpc › /usr/bin/karuirpc-raw
      * karuirpc-rlwrap › /usr/bin/karuirpc (invokes karuirpc-raw)
      05a03d7a
  7. 04 Nov, 2021 1 commit
  8. 01 Nov, 2021 2 commits
    • Tinu Weber's avatar
      Remove statusbar_{update,render} · 114126f9
      Tinu Weber authored
      They were just simple wrappers around statusbar_redraw().
      114126f9
    • Tinu Weber's avatar
      Improve X event handling ‹› X request synchronisation · b07e69e2
      Tinu Weber authored
      First, let xhandle() run in all cases, even if there is no activity on
      the X filedescriptor. This avoids race conditions where we miss events
      happening after handling RPC activity. It still isn't perfect, but it
      seems a little more robust this way.
      
      Second, XSync() after each iteration inside xhandle(), not just at the
      end of an entire _run() loop.
      b07e69e2
  9. 30 Oct, 2021 3 commits
  10. 26 Oct, 2021 6 commits
  11. 25 Oct, 2021 1 commit