7 ms·
Show HN: Howm – A Vim-like tiling X11 window manager
- maikklein 12y agoInteresting, but you really need to do some showcases.
- TimGremalm 12y agoI agree, please post some screenshots.
- hunt 12y agoYou're completely right- I forgot to upload them and then had no internet access. This imgur album has a couple of gifs: http://imgur.com/a/8aqD9 http://imgur.com/a/8aqD9
- cheery 12y agoWhere's the screenshots?
- dons 12y agoHow does this differ from e.g. xmonad, which uses vi-like keybindings? It's specifically the bulk operators based on movement?
- deweerdt 12y agoxmonad isn't modal. This apparently has three modes: 'normal', 'floating' and 'focus'. i3 also has modes: 'normal' and 'resize'.
- tomjakubowski 12y agoi3 only has two modes by default. You can create whatever modes in i3 you like. set $mediamenu "media: [spc] play/pause [p] prev [n] next" mode $mediamenu { bindsym space exec "playerctl play-pause; i3-msg mode default" bindsym p exec "playerctl previous" bindsym n exec "playerctl next" bindsym Escape mode "default" bindsym $mod+m mode "default" } bindsym $mod+m mode $mediamenu Now $mod+m will enter 'media' mode, with its own set of keybindings.
- dllthomas 12y agoXMonad can presumably be modal if you configure it as such. I've got some modal behaviour out of ratpoison by swapping out my top level key maps.
- pweissbrod 12y agoOne of the reasons I continue development work predominantly in windows OS is its vast support for mouse-free operability. I love vim for the same reason. I tried ratpoison in linux but found it to interfere with application keyboard shortcuts. I also tried AwesomeWM but it wasnt as graceful as the windows key in windows. If someone was to solve this issue elegantly it would compel me to reconsider moving my daily development activities back to linux
- rakoo 12y agoHum... Are we talking about the same Windows ? Have you tried other tiling window managers ? i3 [0] comes to mind, but XMonad [1] and Awesome WM [2] are 2 other popular choices in this domain. There are plenty of others to pick from, too [3]. [0] http://i3wm.org/ http://i3wm.org/ [1] http://xmonad.org/ http://xmonad.org/ [2] http://awesome.naquadah.org/ http://awesome.naquadah.org/ [3] https://en.wikipedia.org/wiki/Tiling_window_manager https://en.wikipedia.org/wiki/Tiling_window_manager
- pmarsh 12y agoI think like any system once you learn all the shortcuts available and use them on a daily basis trying other setups never seem quite as good.
- pweissbrod 12y agoThis might be the case for me
- deweerdt 12y ago> There are plenty of others to pick from, too Alternate link for WM reviews: 30 Window Managers in 30 days: http://crunchbang.org/forums/viewtopic.php?id=18273 http://crunchbang.org/forums/viewtopic.php?id=18273
- sp332 12y agoIn Windows, Alt-Space gives you a menu that lets you move and resize windows without using the mouse. Also in Windows 7 and 8, holding the Windows/Super key and tapping "left" or "right" causes apps to take up half the screen, and "up" maximizes.
- zimbatm 12y agoI like that the whole WM is implemented in two files, a .h for configuration and a .c. The code looks clean and has embedded ascii-art. This looks like a project made with love.
- hunt 12y agoThank you, this is my first proper C project so I have learnt a lot and have come a long way. I have really enjoyed working on it and would certainly describe it as a labour of love.
- johnchristopher 12y agoAm I right you did it for the C language first ? It looks like it would have been easier to implement with Lua in awesome. Nice job!
- joaomsa 12y agoReally dislike software with configuration baked into the code, every key binding and experiment requires recompilation which prevents managing it sanely through a package manager. I get the appeal of "minimal" in this case, but it just doesn't work for me.
- blux 12y agoThis is kind of a default approach for minimal WMs (probably inspired by DWM).
- keenerd 12y agoDo you consider an 85 megabyte configuration parser to be minimal?
- Zikes 12y agoYep, definitely the sort of thing that belongs in a dotfile.
- amackera 12y agoThough that's very understandable I have to disagree. I've been using dwm and st for years now with nothing but love for both of them.
- shapeshed 12y agoI'm another advocate for dwm and st. Compiling dwm takes seconds (it is a small codebase) and keeps configuration out of the core.
- icantthinkofone 12y agoCompile time never trumps best practice.
- dllthomas 12y agoIt's not "we need to keep compile time down to seconds, therefore configure in the source"; it's "compile time is seconds (if that), so there's not much difference between configuring in the source and configuring in a file except complexity". One part of the motivation for the best practice you cite is that compiling can be complicated and take a long time, and configuration changes should be quick. This is a solid argument against that portion of the motivation. Following practices because they are known as best practices when the motivations for those practices don't apply has another name - cargo culting. Edited to add: Which is not to say that this best practice should be simply discarded, but to say that the appropriate response is to point to the other motivations for it and determine whether they are more important than the upsides of configuring in the source.
- deleted 12y ago[deleted]
- gpo 12y agoThis is obviously inspired by dwm, which is cool, but how is it different from dwm?
- hunt 12y agoIt's loosely inspired by dwm in that it uses a similar configuration file and keybinding system. On a technical level, howm uses xcb- a more modern and efficient X protocol binding. dwm uses xlib. From a user's perspective, howm has multiple modes for manipulating different kinds of windows as well as operators, motions and counts. This means that multiple windows can have the same operation performed upon them. For example (assuming that the correct modifier keys are being pressed) pressing "q4w" will lead to 4 windows being closed. howm also has some features that dwm only provides as patches, such as useless gaps and a grid layout.
- Rampoina 12y agoI really love vim keybindings and I use them wherever I can (firefox with vimperator, the shell etc), however I'm not sure that modes make sense on a window manager. In my opininon it doesn't have that many operations, and they don't differ that much from each other, I think that having to think which mode you're on and which one you need to use would only introduce friction and slow you down (in this case the normal mode is not that normal, i switch windows as often or more than I create new ones or switch layouts). Another thing is that the operators, motions, and objects each need its modifier keys; in my opinion that just misses the point of having modes and one of the strong points of the vim keybindings. Because of that it was really hard for me to understand how to use Howm: the first time around I skipped the configuration part and went directly to the examples, and you don't mention anywhere there that q4c (for example) is really Alt_L+q, Alt_L+4, Alt_L+c. When I read the configuration part and the configuration file, to see each keybinding I got it, but still it took some googling to figure out that I needed to use xmodmap to know which keys are the MODXMASK. EDIT: It seems you do mention that the operators, motions and objects need a modifier key, I missed it. Still, I think that it would be clearer if the keys to press were explicitly indicated (like Alt_L+q, Alt_L+4, Alt_L+c)
- hunt 12y agoI have some more ideas for operations to add, this is the first release I have done and so it is lacking some features. I agree that some people might not find certain commands to be in the correct mode. You can change that from the configuration file though. I certainly take your point on board about moving being in normal mode and will have a think about whether or not this should be the default. That's really great feedback about the documentation, I'll make it more obvious which modifiers keys need to be held down. Again, you can change the modifier key used for operators, counts and motions so that howm only uses one modifier key. This is how I had it for most of howm's development. I changed to using two modifier keys as I felt that it was nicer to have a logical separation between the commands and the operators, motions and counts. It also meant that some keys could be reused but with different modifiers.
- Rampoina 12y ago
- cessor 12y agoHarvey, your code looks very nice and expressive with appropriate comments. There is some space for improvements on this matter (well, there always is) but I found it very good to read and easy to follow! Really well done, keep up the good work!
- hunt 12y agoThanks for the kind words! It'd be great if you could tell me what improvements you think would be best, I'm trying to make howm's code as nice as I can. I know that having everything in one file is frowned upon, but I quite like the simplicity of it.