Skip to content

Suggested improvements

Alexander Barbosa edited this page Jul 28, 2019 · 1 revision

While StumpWM is no longer just a twinkle in sabett's eye, some users still consider it imperfect.

Use this as scratch space for coming up with ideas that we can implement going forward!

Projects

  • Revitalize StumpWM
    • Update wiki to remove old information
    • Implement pull requests that have been requested
    • Fix any "easy" bugs from the old bug tracker
    • Release 0.9.8
  • Revamp plugin system
    • After releasing 0.9.8, I(@dbjergaard) want to use git's submodule feature to allow developers of plugins to go at their own pace.

General

  • float-splits, a-la ion3 -- see http://www.theonelab.com/files/float-split.swf for an example of what this is. Link is dead, can we get an example?
  • a tab-list showing the contents of the current frame at the top of the frame.
  • And/or at the side, and/or at the bottom!
  • scrolling text in the modeline for long lines of text that don't fit in their allocated area
  • breaking the mode-line into two lines would also work, and is probably simpler to code
  • give windows in the window list on the modeline a % of the total length allocated instead of an absolute number.
  • Screen's monitor (C-a M) command.
  • I don't know how to do this but i'd love to find out. If anyone has any ideas let me know. --Shawn
  • Emacs's iswitchb/ido function.
  • Pager functionality (e.g. scrolling) in the echo window. For example, the ability to scroll through the (long) output of C-t ?.
  • This is partially addressed by adding columns to the C-t ? output.
  • Exposé- or Skippy- style window switching (thumbnail images of each window).
  • Minor modes!
  • Emacs completing-read-multiple function
  • dynamic tiling, as in larswm and xmonad

Hackability

  • Replace stumpwm's use of 'xdpyinfo -ext XINERAMA' with proper calls to CLX. This requires hacking Xinerama support for CLX. A good start would be parsing libxcb's xml protocol descriptions and generating code from that.

Missing Ratpoison Functionality

The following Ratpoison commands are not implemented, or only partially implemented in StumpWM:

  • clrunmanaged
  • cnext
  • cother #?
  • cprev #?
  • dedicate #?
  • execa
  • execf
  • inext
  • iother
  • iprev
  • license
  • link #probably in stumpwm implicitly?
  • newwm
  • rathold
  • redisplay # already in git
  • redo
  • restart
  • there is soft-restart
  • sdump #not a command; (mapcar 'fdump screen-list)?
  • set #not a command
  • set inputwidth
  • set waitcursor
  • shrink
  • swap
  • tmpwm
  • unalias
  • undo
  • unmanage
  • verbexec #not a command?

Implemented Suggestions

  • It would be nice to have install/uninstall make targets that would also install the info file.

  • Break out some more files? For example, user.lisp is looking kind of cluttered. Maybe the resizing and menu things could be split out like mode-line?

  • commit f394515 broke up user.lisp - it was made 1637 lines shorter :)

  • Fullscreen support (e.g. for mplayer)

  • Emphasize different mode-line items (windows in tho window list, desktops in desktop list) somehow. E.g. define variables *mode-line-window-fg-colors* and *mode-line-desktop-fg-colors* (and the same for background colors) which are lists of color strings. Now the first window name has the colors defined by the first entries of *mode-line-window-fg-colors* and *mode-line-window-bg-colors*, etc. If there are more windows than colors, it simply wraps around.

  • Color is now available in all stumpwm text output

  • Session management: save and restore groups, frames, etc...

  • See fdump.lisp

  • Xinerama support!

  • A variable to control what happens when a new frame is created (pull the current window in it, the last one or maybe something else...)

  • Emacs' describe-key (C-h k) function.

    • Already implemented.
  • Truncation of window titles in the modeline. Some apps (e.g. firefox) sometimes use very long window titles.

  • A variable someone like the clipboard except separate. That one could load the name of the current window into. One could then pull the window out. IE, you are in a frame with emacs, you do C-t somekey to set this variable. Then you go over to another frame, and you do C-t somekey to pull emacs into that frame.

  • I want a mode in-which I don't have to press C-t. Like in vi. So in vi I do commands, then press i to get back to editing. I want to have a mode where n and p go to the next window without me having to press C-t before each n and each p.

  • This is in CVS. see 'command-mode'. --Shawn

  • Similarly, better documentation. Many functions are missing docstrings, and the ones which are documented generally don't give much insight into how to use them usefully.

  • stumpwm now has a fairly fleshed out manual. feel free to send improvements. -Shawn

  • For example, an article explaining how to convert a .ratpoisonrc, or a script to do it automatically, would be useful

  • You can get the manual by(in CVS) doing makeinfo stumpwm.texi(in the stumpwm dir(you may need to do apt-get install texinfo)) then going to emacs and typing C-u C-h i /path/of/stumpwm/stumpwm.info

  • A more elaborate example .stumpwmrc; there are already a number of interesting things one can do, but the packaged example is simple and not very helpful, and in some respects is actually broken.

  • Tab completion for colon and exec:

  • done in CVS

  • Full Emacs-style buffer movements; for example, M-d and M-b (delete the next word, and delete the previous word, respectively) are missing.

  • these are in CVS

  • A ratmenu-like control, to be used by C-t w.

  • done in CVS. bound to C-t " like screen.

  • A more intuitive resize command: the current one demands explicit parameters; the ratpoison one was more intuitive in that you could simply adjust it 'by eye' so to speak. Also, it seems kind of silly to demand both x and y percentages: that's too general a command for easy use.

  • There is an interactive resize command in CVS -Shawn

  • It'd be nice to have the ratwarp feature from ratpoison. I find myself missing it sometimes, although it is a fairly minor feature compared to the other ones here.

  • this is in CVS

  • Also nice would be a formatter for groups; currently mode-line has "%w", which lists screens, but why not groups as well? They could be bound to "%g" or some similar mnemonic.

  • I think this is in CVS now?

  • Perhaps a way to paste from within stumpwm? One can currently get the X selection, and change the internal Stumpwm copy, but so far as I know, there is no way to have a function paste a string to a window, or to change the actual X selection. This could be useful for implementing registers - have 5 or as many different selections as you need, each bound to a key.

  • See stumpwm:set-x-selection. This is documented in the manual.

  • This may just be me, but I think it'd be a good idea if run-or-raise could move between groups - that is, if I have Emacs running in another group, and run-or-raise for Emacs gets executed, I think it'd be a better idea for it to switch to that group and raise the existing Emacs than the current behaviour of running a new Emacs in the original group.

  • this is now in CVS.

  • export all the useful symbols.

  • Largely done now.

  • Matlab-style command history completion for exec and colon, i.e. c-t! firefox, then c-t!xterm, then c-t! fi + "history-up" will bring up firefox as completion answer.