You are not logged in.
so, recently I've been getting into WM source, and want to start hacking something of my own. It's for my own amusement (similar to Spook WM) mainly, and I'd like to design something of that scale.
I ask you all, what features are important in *your* WM? What is most important? Least important? Are there any features from another WM that you love, but just don't use it?
For me, I need heavy keyboard support. But that doesn't mean it has to only support the keyboard.
I'm just looking around for curiosity's sake... and ideally I'd like to skip eye candy discussions for now. If I get really into this, then maybe Ill start doing some theming and pretty stuff like that.... but for now it's a bit of pipe dream...
Offline
Nice idea you had. I normally use a widely employed WM/DE but I will not specify which as to keep this topic WM atheistic (sp). What I'd want of a WM is kind of like a great amalgamation of the best features one can find in all WM, such as tabs, heavy keyboard integration, full freedesktop.org compliance and many more that I do not remember now. I know it is a megalomanical (sp) dream but I'd like KDE's extensibility, flux/blackbox speed and small memory footprint but most of all I want a WM (and I know I'm being crazy thinking this) that kind of learns how the user operates and how he or she wants the windows positioned, grouped, in what virtual desktop, etc. I know some already do this, but I want something that learns.
Finalizing, I wish you the best of luck and will be looking forward to see the work, whatever you might decide to do, and help if possible.
Cheers.
Offline
Definitely keybinding support. I hate having to take my hands off the keyboard. I'm also a heavy user of virtual desktops. You might want to look at evilwm for a small, functional wm to work on.
I have nothing to say, and I am saying it.
Offline
Things I like about PekWM:
1. Transparent and extensive configuration of menu files, etc. (could be better, though)
2. A 'startup' file that serves as a post-WM xinitrc
3. autoproperties (you should really check this out)
4. It aims to be pretty standards compliant. They're just starting up the development again, so maybe more to come?
However, it feels a little wispy, or lightweight, to me.
What I like about Windowlab:
You can hold the windows key (or meta 4 for the delusional
), and click inside or outside a window and push against the sides of the window to resize it, as a quick and sloppy feature. It's very cool.
However, it's too too uncompliant with standard, etc.
Blackbox 0.7:
1. It feels right
2. It's just elegantly pretty
3. It doesn't force itself upon me like a drunken sailor
Also, supporting GTK theming would be a bonus. Otherwise, you might be left with fugly windows forever.
fffft!
Offline
Features I can't live without:
multiple workspaces. (two is enough for me)
Keybindings with easy configuration (meaning a textfile with sane syntax, so no xml crap). Both wm commands and external commands must be supported.
Features which would be nice to have:
Window grouping like the cvs version of Fluxbox has.
A rightclick menu like *box has may be useful, though not a must. No need to name it fancy, neither for subemenu support.
It would be cool if the root background window was a console where you can type commands and stuff (one for each workspace or something). Though this can be done by a background fullscreen xterm or something I suppose.
Restrictions:
No clutter at all. No taskbars, icons or whatever. Nothing more than thin window/titlebars to make handling windows easier. Borders around windows are ok.
Nice and clean code, very small binary.
Offline
All my Linux life, I've been looking for something as modular and customizable as Litestep for Windows. You could extend that sucker with anything. THe only thing I've seen that remotely resembles it (besides E17) is JD4X but its not stable yet.
The goal is not what the wm should do, but how easy you can extend it to do otherwise. If that was possible, there would only need to be one window manager.
Dusty
Offline
heh, it appears that people interested enough to post think like me... clean, small, keyboard integration, etc...
I've been looking at some code bases for starting points... aewm is the classic start, but I seem to like lwm a bit more... and wmx has some nice clean code...
Still, I'm going to start from scratch... I really just want to get my hands dirty... kinda like those gear-heads who build their own cars from some pistons they found in a junkyard 8)
Offline
All my Linux life, I've been looking for something as modular and customizable as Litestep for Windows. You could extend that sucker with anything.
Never used LiteStep on Windows... can you give me the 'jist of it? It might be nice to work on a very heavy modular architecture.... I'll have to give that some thought.... what could be extended and how?
Offline
My priorities in a WM are:
1. Keyboard Support
2. Keyboard Support
3. Fast & small (manages windows and nothing else)
4. Configurable (preferably with a powerful scripting language, such as kahakaki & python, or ion & lua)
5. Per-app preferences (aterm opens with no border, firefox opens fullscreen, etc)
6. Workspaces
Personally I like tiling window managers (ion3, specifically), but if I were to use a traditional WM, I'd probably use Blackbox or Windowlab.
Offline
Litestep info. I like the idea of it being really modular. That's something that is sorely missing from *nix WMs. If you want it to be modular, you have remember to make the API clean and keep everything that isn't low level out of the main core. Libs are also good, naturally. I run into this problem all the time when designing projects for the web. It's very easy to accidently integrate some code that does something specific, only to later have to somehow move it out of the core of the code.
Things that I like in WMs:
Themability. I don't mean lots of eye candy, but extensive themability. If you can't change the look of something, I won't use it.
Easy configuration. Either a GUI tool or easily modified config files. Openbox has an excellent system for this.
Multiple workspaces. A must have, always.
Standards compliance. It's just important for any project.
Fast, simple, responsive. I like things that work faster than I can think, it makes my life easier.
Those are the important ones. But it sure would be nice to have a SVG-themable WM. The idea of using SVG for themes makes me giddy. :oops:
·¬»· i am shadowhand, powered by webfaction
Offline
litestep.net isn't loading... it looks like maybe the vibrant community has fallen. I find it hard to believe, it was really strong. My first touch with open source software. Ah, the memories...
Anyway, Litestep was a core set of classes that basically managed other classes through an rc.conf file. It was originally based on NeXtStep, but the modular system was different. Dozens (hundreds) of people developed modules for Litestep. Basically, modules were whatever you wanted them to be. There were several taskbars, several hotkey managers, some really interesting wharf (dockapp) implementations, menus, etc. Most of the modules were also completely themeable -- font, border colours, gradients, etc. I think litestep core actually had some kind of theming engine that the modules leveraged.
Basically, you could put together your own system by downloading and customizing different modules. Mostly though, people distributed full litestep themes, which were basically collections of modules some people had selected from those available and a special step.rc file that customized the colours and behavior of each.
If you can get your hands on the litestep core and port it to Linux... hehehe.
Seriously though, Litestep is the only WM (ok, In windows they called it a Desktop Shell) that I ever felt did everything I needed. And Linux doesn't have anything like it!
Dusty
Offline
ok, well it looks like litestep and all its relatives are dead.... from what I gather by looking at some readmes is that each module exported "bang" commands... !dosomething... how were these commands used? I' missing some important pieces of information. Given a good modular system, I would like to try to implement it, but I need to understand the system here...
edit http://www.purels.org ??
Offline
sounds like a good project.
just to add my two cents I would like a wm/dm to be
*extendable (for all the fancy stuff like taskbars and such)
*standard compliant
*xml config files
*if possible, written in qt
btw, which language are you planning to use ?
anyway, I wish you the best of luck on this project.
Offline
Window grouping like the cvs version of Fluxbox has
someone clarify that for me, please? i'm almost certain this has been a feature of fluxbox since the beginning
if possible, written in qt
would that be light weight binary with massive dep? serious question - not flaming.
um, i would like, mor ethan anything, some really intelligent window placement - fluxbox pisses me off when it comes to this - and the old fluxbox tabs were the greatest, i have no clue why they got rid of them.
i also like right click menus, but i'd be liking it with script support ala openbox
i'd also say xml is the way to go config file wise, tho i hate it myself - daft standard
Offline
Since when are lightweight WMs written in Qt?
Hmm... !bang commands were how the modules interfaced with the core if i remember correctly. They were event commands.... I think.
The modules were started by the running theme. They modules had to be installed for the theme to work, or else it would error out and go back to the previous theme. Each theme consisted of the actual theme (artwork), modules (sometimes), module configuration (placement, options, etc.), menus, and extra stuff. The "extra stuff" was usually !bang commands and extra theme stuff that would extend the theme.
I think that Litestep itself consited of a taskbar, a workspace switcher, a desktop manager (no icons, just wallpaper/effects), and a system tray. There was a graphical configuration program and theme switcher. Themes skinned the whole interface in completely different ways, but skins were shell specific, not module specific.
Themes were a lot like GTK themes, but usually (always?) consisted of pixmaps, not defined by colors, gradients, etc. The colors of Windows UI were also set by the theme however.
Here are some themes/screenshots of various Litestep themes: http://www.customize.org/list/ls . Those are just a few, but there are some good ones in there, some that show the eyecandy possible, and some that just aren't good at all.
![]()
·¬»· i am shadowhand, powered by webfaction
Offline
ok, well it looks like litestep and all its relatives are dead.... from what I gather by looking at some readmes is that each module exported "bang" commands... !dosomething... how were these commands used? I' missing some important pieces of information. Given a good modular system, I would like to try to implement it, but I need to understand the system here...
edit http://www.purels.org ??
I feel like a part of me has died, discovering litestep is no longer the community it once was. I suppose they all switched to Linux same as me...
But if that can happen to LS, can it happen to Linux too.
I feel so old.
Purels looks like its based on Litestep, yes. The configuration looks similar to the old step.rc.
IIRC, bang commands weren't the essence of litestep configuration. Seems to me, bang commands were ways of combining other actions (ie scripts), but I'm not sure. I don't recall using them much, as I didn't get into the actual scripting, just configuration (I was just a kid
).
Theoretically, you could use a programming language to script and configure it (Aegis, anyone?). The syntax of the configuration files isn't overly important.
I based some of my modular design decisions in Ensmer on the Litestep system, or what I recalled of it; you may be interested in my design papers.
I think litestep worked like this:
There was the main litestep core; this parsed configuration files and delegated to the modules. Then you could download .dll files for each of the modules; I wasn't a C or C++ programmer at the time, so I never once looked at the code. These presumably told the litestep core what configuration options (color, location on screen, actions, etc) were available. Each module had an item in the step.rc file where the configuration options were placed. God there were some kickass themes available too, more beautiful than anything I've seen for any Linux wm, even Enlightenment...
The key was that if you didn't want desktop icons, you didn't load that module. If somebody wanted desktop icons and that module wasn't available, they could write it and plug it into Litestep and distribute it. If you wanted a taskbar, you had several options. Systray, same thing. Desktop Pager, Wharf, etc.
Now I think of it, this was all for desktop management, you couldn't customize the window manager with litestep. So it wasn't a WM at all. But the theory could be applied. If you wanted to use tabs, that's an option, if you like ion-style window tiling you can load the module, if you prefer floating windows, load that module, if you want to mix the two... man that'd be fun to code. 8) You could customize window decoration modules, keyboard shortcut modules, everything. You could go from fully minimalistic (don't load any modules but the bare minimum) to full desktop system all using the same program.
Wow, I'm having a vision. Its pushing midnight though, so I better go to bed. If I have any weird dreams about infinite workspaces, window zoom, or some other interesting modular WM phenomenon, I'll be sure to let you know. :-D
Dusty
Offline
Changed my mind and started searching google. I can't let go of this bit of my past... its like a reminder of a long lost girlfriend... well maybe it is, I've never had one.
How to Code a litestep module
Litestep docs circa 2000, I'm pretty sure I used the b24.6 release...
Darkstep fork of litestep, used to be out of favour, but looks like its a little more active now, check out those screenshots. It can look like ANYTHING! BUT it looks like darkstep was forked before litestep went modular, because I don't see any third party modules there...
LS-universThe FAQ here tells you what a bang command is, and has everything else too
I feel better, having found that last one.
Dusty
Offline
What I'd like to see in a WM, in no specific order:
- mutliple workspaces
- easily customisable keybindings
- full keyboard support
- no blinking, whirrling, bouncing thingamajigs
- NO context menus!
- Ion / WMI-like window management--it's a WM, so it should manage my windows for me
- if floating workspaces are implemented: snap-to-edges (configurable)
- sane button grouping (if there are buttons)--I hate it when "close" and "maximise" are next to each other
- freedesktop.org notification area / tray icon support
- if there's a task bar, it should be similar to Window Maker's app icons
- should integrate nicely with existing DMs like GNOME or KDE
My favorite WM is Ion, but it doesn't play too well with the whole GNOME framework, at least for me. And I am really fond of automounting USB sticks and the like ...
93,
-Sascha.rb
Offline
Shoot, how did I miss this thread for so long. I have an 'X Toolkit Intrinsics' book sitting on my shelf, hatching spiders from the cobwebs it's collected. You guys' ideas are pretty interesting. I'll be sure to check back here and see what you guys have found.
In my personal opinion, the 'perfect WM' would be an even 'simpler' WMI, withouth the 'VI' syntax and menu bars. The WM I have the greatest affection for to date has to be 'sawfish'. When you booted that sucker up, you got nothing but a blank screen. I could do without the lisp 'hybrid' scripting though.
Offline
umm, holy crap that's alot to take in at 12:30 at night...
I'm to lazy to quote everyone... so in no particular order...
about qt : I doubt I'd do it in Qt... I'm a fan of lightweight... though if you read below, I think I may implement something that would allow usage of Qt.
about gnome support (someone mentioned ion): in order to work nice with other DEs (gnome, kde, maybe xfce), you need full EWMH support... which is kinda a mess... it's straightforward, but it's just nasty... so I'd hold off on that until later
about windowmaker taskbar: ick! I've never seen a windowmaker theme that looked nice to me. sure it was functional, but you could implement the same thing with buttons that weren't half the size of your screen and had silly atari style pictures on them... heh, don't hurt me WM fans... I like the idea, but it just never looks too good to me
now the big one: litestep and all that modular jazz...
I was debating for a bit working on a very modular framework... before I had read through some of this litestep stuff, Dusty had stated that "everything was a module" and "you could load whatever you want" - which got me thinking (of course).
My initial idea was to modularize the drawing frameworks... (this relates to above) - say it ends up with 4 modules - one for Xlib rendering, one for cairo rendering, another for gtk rendering, and a final one for Qt... each module would be loadable by the end user... and each one would handle drawing of the window decorations...
from there it's not hard to add things like fluxbox style desktop menus, or advance (wmi/ion style) keyboard interfaces with simple modules.
hell, each module could even have its own configuration style to allow one to make xml based menus with one module or even use fluxbox menus with another module...
modules for launch bars and "slits/slots/wharfs" would be simple too (but that seems messy in my head now... talks to the core, which tells the rendering engine to draw something, which responds back to the bar... icky)
now the requirements here are an efficient modular framework, seeing as alot of the work will be done across process boundries, and an event mechanism to determine which module slots up with what core event...
I'll think on this tomorrow and try to sketch an idea together....
Offline
In my personal opinion, the 'perfect WM' would be an even 'simpler' WMI, withouth the 'VI' syntax and menu bars. The WM I have the greatest affection for to date has to be 'sawfish'. When you booted that sucker up, you got nothing but a blank screen. I could do without the lisp 'hybrid' scripting though.
try tinywm I linked in the OT forum...
hell, you can always try "xinit xterm" which is funny sometimes... though I have actually tried "xinit firefox"
Offline
some more thinking on the modular topic:
things such as EWMH compliance (mentioned above) could be implemented as a module as well...
in order to get the most out of it, it would have to allow for some modules to be compiled into the core... which won't be easy... hmmm
anyway, I need to think more on module communication... as that will make all the difference...
Offline
I simply like the feature of openbox, where if I scroll my mouse wheel up over the window bar, it shades the window. Such a feature should be standard in All Wm's
(I forget the real name for this. What's it called, Window shading?)
Offline
EWMH compliance is an important thing, not something that should be implemented in a module.
Second, window managers are not written in QT, they are written in Xlib. QT does not have functions for window managing.
For me, what would be important is:
Keyboard controllable
Scriptable (using lua? ferite?)
Simple config files,
Tabbable windows,
what would be really good is the ability to turn tiling window managment on. ala ion.
a real bonus, although its seperate from the wm, is a settings daemon, like xfce-mcs-manager or gnome-settings-daemon -for example, in gnome this provides keyboard shortcuts, keyboard settings, theme and more.
Offline
People keep talking about tiling and tabbed window managing. It's looking more and more that if you do what the people want, you are basically going to create a themable ... thing ... that manages windows and does other WM stuff through plugins. I can't imagine that it would be rational to have a legacy and tiling/tabbed window manager running with the same core and keep it lightweight.
Sounds like a big project you are starting Phrak.
I wish you the best of luck with it. If I could code the broad side of a barn, I would offer my help.
·¬»· i am shadowhand, powered by webfaction
Offline