I love how a "customizable tiling window manager" somehow requires the user to learn an unusual programming language and a dozen of inscrutable keyboard shortcuts.
It made my 24inch screen at the time far more manageable but it was supremely frustrating if I sometimes wanted a certain window to remain in a certain position without being disturbed.
> "customizable tiling window manager" somehow requires the user to learn an unusual programming language and a dozen of inscrutable keyboard shortcuts
Languages are our best tool for expressivity.
And a well-designed language is better than an ad hoc configuration language any day of the week (see e.g. vimscript for how not to do configuration).
By choosing to use a full language for configuration, we have made possible an enormous ecosystem of user-contributed components -- because the configuration language was rich enough to support them.
I think the parent is asking why it's not possible to have a plugin system + a simple config file (or GUI config app).
There are a lot of common things that people do with XMonad, so I'm sure that a number of them could be consolidated into plugins with simple config options.
You can always write a configuration extension that takes $your_favorite_text_format into the data structure that configures xmonad.
In fact, there is a text-based configuration system (implemented on top of the full-language configuration system) that does as you describe in the contrib repo somewhere. You could also easily do e.g. JSON, or YAML or whatever.
And that's possible because we use a full language as the base layer. So "dumber" config systems can be layered on top without changing anything.
I'm not arguing against the full language base layer. I'm saying that the op is complaining that he/she needs to learn Haskell to create an XMonad config.
Even if I want to use one of those libraries, I still need to create an xmonad.hs file, and import the library. Vs having an xmonad binary that determines libraries/etc from a config file, and all code-level customizations are libraries/modules.
XMonad users by definition already know at least a minimal amount of how to create their XMonad config file. That's like saying: "We created a Linux distro for the masses and it didn't appeal to power users, therefore nobody wants it."
You're also dismissing the possibility that is just sucked, and was not an improvement in configuration interface.
YAML configuration is possible, if you want. Just load the YAML file in your xmonad.hs config, and translate it (using the regular config language) into the Config data type xmonad actually uses.
You could implement all sorts of funky config formats, by translating them down to the underlying (richer) format. Go nuts!
Personally I believe that optimizing for the technical user is much more important than user-friendliness in developer tools, especially window managers and text editors. Most people don't have the desire or the motivation to write full-featured developer tool extensions, but those who do should have the full power of a language like Haskell at their fingertips.
I think the fact that no one has bothered to write a limited configuration format is telling. It seems to indicate that people who have learned Haskell don't see any benefit in it and appreciate the flexibility offered to them.
> I think the fact that no one has bothered to write a
> limited configuration format is telling.
Specious reasoning. There are a lot of people that just know enough Haskell to fiddle with their XMonad config and/or copy-paste bits from other people's XMonad configs.
I'd say the ratio of XMonad users who would build a easy-config system to total XMonad users is small. You're trying to claim that total XMonad users = X, and since X people are using it without creating the 'new system,' it means that no one sees the utility in it.
No, I'm saying that of all the XMonad users who know Haskell, none has bothered to write an alternative configuration system. That is, once you know Haskell you seem to no longer find interest in such a system.
If it's just the choice of language that's the issue, try wmii. The default config is written in Bourne shell, but all of the actual interaction between the config and the wm is done through a plan9-style api, so you can configure it in any language you want. The Ubuntu package comes with sample configs written in Python and Ruby in addition to Bourne shell.
Try awesome[1]. It uses Lua, which is probably a more familiar language(I never learned Lua, but am still able to make minor changes to the config file, something I wouldn't try with Haskell). That, combined with a few other things, is what made me move from xmonad to awesome.
love how a "customizable tiling window manager" somehow
requires the user to learn an unusual programming language
and a dozen of inscrutable keyboard shortcuts.
It doesn't require that, but up until now the only people that cared about "customizable tiling window managers" were people that wanted to do so. Most of these window managers are created by programmers/terminal junkies that would prefer that most things be a text interface. Just look at ratpoison and stumpwm. They're made to have an Emacs-like interface to the window manager. How accessible is an Emacs interface to a non-technical user?
> "customizable tiling window manager" somehow requires the user to learn an unusual programming language and a dozen of inscrutable keyboard shortcuts
You might be interested in the tiling window manager I wrote with Node.js (mixu/nwm on github). It's very much inspired by xmonad and dwm, but the engine is Javascript running in Node.js with a native extension for X11 operations/events.
All layouting decisions are made in JS - in fact, the C++ binding doesn't even know the position of the windows or the dimension of the monitors; it's all tracked in JS. It should be easier to customize, though definitely not as battle-tested as xmonad.
How does it differ from existing tiling window managers, except the JavaScript spin? It sounds interesting, but it always makes me think twice if the only motivation for a new project is to do the same in a different language.
It made my 24inch screen at the time far more manageable but it was supremely frustrating if I sometimes wanted a certain window to remain in a certain position without being disturbed.