Suggested improvements
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!
- 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.
- 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
- 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.
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?
-
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
andexec
: -
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.