13 ms·
A tiling window manager written in Rust
- ecaron 12y agoI really, really, really want to move to using a tiling window manager. Watching YouTube videos of people using them well, you can't help but think "Damn, they're really crazy efficient". But I can't find one that has good enough documentation that I can learn it on my own (and since nobody else at my office uses it, somebody has got to be first.) I'd love to get into http://i3wm.org/ http://i3wm.org/ but can't find anything to push me over the ledge, so I keep resigning myself to checking out projects like the one in OP and thinking "Wouldn't that be nice..."
- Sir_Cmpwn 12y agoI use i3 and I love it. You can steal from my config if you like: https://github.com/SirCmpwn/dotfiles/blob/master/i3/config https://github.com/SirCmpwn/dotfiles/blob/master/i3/config
- langseth 12y agoI use awesomeWM, http://awesome.naquadah.org/ http://awesome.naquadah.org/, we have about 10 converts in our office now. It seems to be fairly well documented and has plenty of addons to make it look better (although I use just the bare minimum). I just wish I could find a decent tilinging manager for OS X (divvy and amethyst do not fit my requirements)
- auxym 12y agoI tried awesome, and was somewhat disapointed by a community that felt 'dead'. Searching google for answers to questions I had often yielded old, out-of-date answers not relevant to the current version. I did however appreciate the ease of configuring it with Lua. If I feel like trying a tiling wm again, I think I'd go with xmonad. From reading, it seems to have decent defaults, and it'd a good opportunity to start playing with Haskell. I wish integrating tiling wm's with regular DE's, even lightweight ones (lxde, xfce) would be more popular. When switching all out to awesome, I missed the conveniences like a tray with wifi and sound volume. I just want a DE, with tiling windows!
- S4M 12y agoThere [0], how to use xMonad with xfce, I followed the instructions and it worked fine. I didn't have any problem to roll back either. https://www.haskell.org/haskellwiki/Xmonad/Using_xmonad_in_XFCE https://www.haskell.org/haskellwiki/Xmonad/Using_xmonad_in_X...
- Symmetry 12y agoIf you're running Ubuntu then if you apt-get install xmonad gnome-panel a GNOME with Xmonad option will appear in your login screen. Then you have to create an xmonad configuration that works with GNOME like so import XMonad import XMonad.Config.Gnome main = do xmonad $ gnomeConfig in .xmonad/xmonad.hs and everything will work.
- rkrzr 12y agoMind = blown. That's awesome, I'll have to give this a try. I used to run XMonad on Arch, but then I switched to Ubuntu a couple of years back and got with the Unity program. But if I can have the best of both worlds, I'm sold. The icing on the cake would be if a drop-down terminal like Tilda still works with this hybrid setup as well.
- th0br0 12y agoI've been using xmonad for ... well, guess it's been the past 3 years now. Never had to change the config or adapt to API changes as I had with LUA and things just work. Plus, it's quite performant (although it has some input-looping related quirks sometimes) and hardly takes up any memory. Can only recommend it to people new to the tiling wm scene.
- chriswarbo 12y agoI used Enlightenment 16 in Gnome 2 for years, but Gnome 3 seems to take more of an everything-or-nothing approach. These days I'm using Xmonad standalone, plus Xmobar as a kind of pipe-driven, text-only notification area. If I ever need a system tray, I run trayer (and curse whoever designed the program that requires it!).
- estebank 12y agoTry spectacle. It's pretty simple and straightforward. You cannot do advanced layouts, but splitting the screen in halfs both vertically and horizontally with the keyboard makes Mac OS X much more bearable.
- ianyh 12y agoWhat about Amethyst didn't fit your requirements? I know it's still buggy, I'm just curious if there's any specific ones or if it's just generally not useful to you.
- bombtrack 12y agoI tried several for OS X and landed on using Moom [0]. The layout snapshots is really handy to jumpstart the day and put everything in place. Keyboard shortcuts allow resizing and moving windows around. It's highly configurable, so you can add or remove features as you see fit. I'd give the free trial a spin. [0] http://manytricks.com/moom/ http://manytricks.com/moom/
- darklajid 12y agoI'm running i3wm. I wouldn't consider myself an expert and found the change (I'm otherwise a Gnome kind of guy) easy enough. Is there anything specific you have trouble with?
- fla 12y agoI was in a similar situation and ended happy with bspwm beacause it's very minimal and simple to figure out.
- spain 12y agoi3 is pretty easy to learn and configure I'd say having dabbled with most of the popular window managers bar Xmonad. Nowadays I just use the Xfce window manager.
- Yen 12y agoI'm a fan of i3wm. It has fairly good documentation (I learned it on my own, primarily from the documentation), and a relatively active irc channel. The nicest things about a tiling manager? You can control nearly everything from the keyboard. It's very quick and easy to set up side-by-side windows (or side/top-bottom, and so on), and resizing one automatically resizes the other. It really helps on smaller screens, since by default everything is full screen with minimal window decoration. Some nice features of i3wm in particular - well developed manual control, most layouts can be expressed as the composition of simpler layouts, and the config file is just a config file, not a full fledged program. Also, it's worth remembering that on Linux you can have multiple WMs installed at the same time. You can log in to i3wm, and if there's something you really can't figure out, you can log out and switch to gnome/kde/etc. I don't know if there's a way to switch WMs without shutting down the whole x session though. Would be interested to know if it's possible.
- DSMan195276 12y ago> I don't know if there's a way to switch WMs without shutting down the whole x session though. Would be interested to know if it's possible. Some WM's support the '--replace' flag (Both the WM being replaced and the one you're starting have to support it). If you run a new WM with the '--replace' flag, the old WM will shutdown and the new WM will take-over all the windows it was handling. This is only switching WM's though, so you can't really switch into Gnome or KDE doing this and then switch-out. i3 doesn't support it though (It would have a bit of a hard time supporting it anyway), so you can't do it with i3. If you can't do it that way though, then just have your X session start a terminal on screen instead of a WM. The X session will stay live as long as that terminal stays open, so you can start and kill any number of WM's as you want as long as your other programs don't mind it. Not everything shuts down very cleanly though, so you might not be able to start and close Gnome and then start KDE in the same session. You should be able to kill i3 and start openbox or xfwm though, for example.
- Shish2k 12y ago> You can control nearly everything from the keyboard Personally I'm still waiting for a tiling WM with mouse support - having used a few keyboard based WMs, and having used Eclipse, I find Eclipse to be by far the nicest. The only problem being that it's an application panel manager, not an X windows manager :( The features I want from a WM: http://shimmie.shishnet.org/v2/_images/ae13a6ed6a5d725f34d10cf386a5901f/3171%20-%20eclipse%20screenshot.png http://shimmie.shishnet.org/v2/_images/ae13a6ed6a5d725f34d10...
- robertfw 12y agoI use I3 and highly recommend it. I used to use Awesome - i3 has felt much easier to work with and configure. The docs are pretty good. I can't go back to a non-tiling manager now!
- S4M 12y agoI used to use xmonad, but ditched it because it wasn't working well with Android Studio. I read somewhere that other tiling window managers have problems to display Android Studio under some video drivers. Now I'm back to the default window manager of xfce4, which is ok since I tend to use only emacs and a browser, so I have have one workspace for each.
- deleted 12y ago[deleted]
- foobarqux 12y agoThere is a problem with tiling window managers and Java GUIs. The fix is to export an environment variable whose name you can find on the XMonad faq.
- S4M 12y agoThanks for the tip! I gonna give xMonad another chance!
- chriswarbo 12y agoThere's a program called "wmname" specifically designed for this: http://tools.suckless.org/wmname http://tools.suckless.org/wmname Just run "wmname LG3D" then restart any open Java programs. LG3D is "Looking Glass 3D", a Java window manager http://en.wikipedia.org/wiki/Project_Looking_Glass http://en.wikipedia.org/wiki/Project_Looking_Glass . It's quite amusing that Java's UI toolkit contains special-cases to avoid breaking their demos.
- vidarh 12y agoIt took me an evening to get fully switched to i3wm. It's simple, and fast, and easy to understand and configure.
- kornakiewicz 12y agoI use i3 since about two months. I got same issues like you and here's my advice: install i3 and try to use it, after 2-3 days you'll be able to move windows, switch them or run apps with only keyboard (keybindings are pretty intuitive, but you need to try). Don't try to use it for every task or force yourself to use only it - I hate it when have to deal with some windows apps in wine, which are opening alerts and windows like shit, and then simply switch to gnome or sth. Don't try to customize everything at once, but rather slowly find your real needs and google around how to make your system your best tool.
- mhd 12y agoI've been using them on and off, and the first thing I'd like to mention is that they're in no way magical -- both when it comes to using them (which is mostly knowing a few shortcuts and internalizing the layout system), but also in regard to how much they help you. Sure, they certainly do look snazzy, especially when coupled with the movie hacker-approved unified dark color scheme. New windows pop up and quickly assume their rightful space and everything just looks so darn tidy. But for certain usage patterns, that doesn't get you a lot. Even if you're popping up disposable shell windows left and right, you might also do that within screen/tmux, where the window manager doesn't come into play at all (or have some drop-down quake-like console). Also, your running applications and especially their different configurations might not change that often, in which case you're really saving yourself some manual layout fiddling once. So a lot of people would perform pretty much the same with just alt-tab window cycling and virtual desktops (which seem orthogonal to the whole deal). I mean, if you look at the vast majority of screenshots, you don't even see that much work. The obligatory IRC client, fake-GUI music players and/or file managers and probably an editor with the configuration file or some minor coursework open. It's not exactly Scotty and his Mac Plus. Having said that, I'd add my vote to i3wm, as it isn't as ideologically pure as some others (you still have window titles if you want them, and the layout remains somewhat manual). Plus a rather readable configuration format, even if the default configuration is seemingly intended to drive vi-users mad. My alternative would be bspwm, the binary space partitioning wm. A lot more minimal, but the automatic layout algorithm is rather tractable and one certainly wouldn't be confused with too many options.
- jff 12y ago> I mean, if you look at the vast majority of screenshots, you don't even see that much work. The obligatory IRC client, fake-GUI music players and/or file managers and probably an editor with the configuration file or some minor coursework open. It's not exactly Scotty and his Mac Plus. Well, this applies to all WM screenshots ever, not just tiling window managers. The main problem with WM screenshots is that you want to show how it looks, show off some features, but my actual work is generally spread across many virtual desktops, each with just a few windows (mostly xterm)
- 12y ago
- shmulkey18 12y agoSame here, but I prefer a WM that supports (for want of a better term) "packing" 80 column wide Xterms and Emacs windows into the screen and doing static placement of things like Pidgin. The tiling WMs I've briefly looked at all seem to re-size windows to fill the available screen real estate; I'm old school and want my Xterms and Emacs windows to be 80 chars wide. Are there any tiling WMs which support this layout style or can be easily configured to do so?
- jff 12y agoI use StumpWM, but it can be a real pain in the ass to get running and configured. I like that it has static layouts: you manually split the screen into panes and windows go in those panes, rather than everything resizing & shuffling whenever you open a terminal. I also really like the keybindings, which are by default all preceded by C-t, so you'd hit "C-t c" to open a new terminal--this avoids the whole "window manager ate all my alt-key combinations" problem you'll run into with i3 and a lot of other WMs. The problem is that it's Common Lisp, so the binary is huge and it takes a long time to start up, and sometimes it crashes in interesting ways. But on the other hand, it's Common Lisp, so you can connect to it from Emacs and play with the code... at least until you crash it. I'm thinking about trying the new Guile window manager that popped up here a few days back, it looks like it has a StumpWM-esque style and maybe Guile is a little more light-weight/less flaky than most Common Lisp implementations.
- spain 12y ago> I'm thinking about trying the new Guile window manager that popped up here a few days back, it looks like it has a StumpWM-esque style and maybe Guile is a little more light-weight/less flaky than most Common Lisp implementations. Thanks for bringing this to my attention! I'm a StumpWM fan too and it looks like Guile-WM has promise. Here's the homepage for anyone else interested: http://www.markwitmer.com/guile-xcb/guile-wm.html http://www.markwitmer.com/guile-xcb/guile-wm.html
- jff 12y agoI was just about to switch over to Guile-WM on my desktop today, but it doesn't look like it has virtual desktop support, which kind of kills it for me for the time being. Otherwise it ticks pretty much all the right boxes.
- photex 12y agoVirtual desktops are so amazingly useful that it's hard to imagine why a tiling WM wouldn't adopt them.
- jqm 12y agoI like i3 quite a bit. It was easy to pick up and a huge improvement over KDE for what I do. Especially on the laptop. The 3 second X startup is nice too. It did take a little work to get it set up and comfortable.
- johnmaguire2013 12y agoDo i3. It's one of the easiest to learn and the only way I was able to get into tiling window managers. I outgrew it when I got a 4K TV as it wasn't able to handle it well, but as others have said, it's "less pure" of a window manager. It's extremely dynamic, easy to move things around, and easy to resize. If you've used vim before it'll be even easier.
- lewaldman 12y agoMate... I will tell you that the one that I find have the easier learning curve is AwesomeWM. The main advantage of it tho, is not the tiling window managing facilities... But the run-or-raise plugin. It allows you to run (start) or raise (go to the window) of any application with an assigned shortcut. Mine are: Mod+e - Emacs Mod+u - Browser (Conkeror) Mod+y - Browser (Chromium) Mod+k - Konsole Mod+. - Keepass Mod+x - Pidgin chat window Mod+i - Skype chat window The choice of shortcuts may seen arbitrary, but I'm a Dvorak user and all the keys are easily accessible. With this setup, from my editor I'm a Mod+u / Ctrl+g g to a search on google, and from there I'm a Mod+k from my terminal (from where I run tmux... ;P) and a Mod+e from Emacs. I'm also using a dropdown terminal with another tmux where I have access, from any where on my system just pressing F1, to my MTA (mutt), file manager (mc), IRC (irssi), Music player (cmus) and a root shell. Honestly... With this setup there is definetly no going back... Every thing on the tips of my fingers... Some shortcut away. I almost feel part of the machine! :)
- serge2k 12y agoIf anyone else was confused about where the rest of the code is, https://github.com/Kintaro/wtftw-core https://github.com/Kintaro/wtftw-core
- codingbinary 12y agoAuthor here. I am sorry about the confusion. It happened later in the project when I split it into 3 components (4 as soon as I add Wayland support). I should probably mention that in the Readme. Thank you.
- vog 12y agoIs it really helpful to have different components of the same project in separate repositories? Are they really that independent? Four independent components for a single window manager seems a bit high to me. Regarding modularization, I tend to prefer Fowler's criterium that a component should contain code which is usually changed together. So, if you have one component where 95% change slowly and 5% change often, you should split it. However, if you have two components that you almost always have to change at the same time, you should merge them.
- codingbinary 12y agoThat's why I split it. The window system interface is pretty much done. The main module won't change by much. 95% of the work is done in the core module. The main module is merely for the executable and rarely changes. I've split it up because the xlib (and future wayland) modules need to refer to the core as a library, so the main module has nothing to do there. Though I admit that part of the reason is earlier attempts with dynamic libraries, but that was more hassle than it needed to be. I could merge the core back into the main module, but I'll wait a bit until I do that, just to be sure.
- TheHydroImpulse 12y agoYou could take advantage of having a single git repo for multiple cargo packages. This has worked extremely well for me. It was a lot easier having a single git repo to manage and control but still have separate packages for each of the different pieces. You could have the main package become the executable and have the core and various other packages in there, too.
- kion 12y agoThis is the sort of thing I hope to see a lot more of from Rust. Things that would traditionally be done in C/C++ moving to a new language with modern features. I'm very hopeful this trend will continue.
- zellyn 12y agoI thought tiling window managers were traditionally written in Haskell :-p
- hedwall 12y agoWMII, dwm, awesome, i3 are all written in C (and Lua).
- Igglyboo 12y agoHe's making a joke about xmonad
- lake99 12y agoHaskell is used for just one of them. https://wiki.archlinux.org/index.php/Comparison_of_tiling_window_managers https://wiki.archlinux.org/index.php/Comparison_of_tiling_wi...
- colordrops 12y agoMy understanding is that C++11 and eventually C++14 have plenty of modern language features. How does Rust compare?
- Dewie 12y agoRust doesn't have C++98, C++ version "C with classes", and so on. Less flippant answer; the usual arguments are that Rust is more memory safe, and hopefully less complex and with fewer gotchas compared to C++. It's still relatively complex - inherently, due to what it tries to do - but people seem to be of the opinion that it is much less complex than C++.
- 12y ago
- FraaJad 12y agoThere is a tutorial by the author which goes into more details: https://kintaro.github.io/rust/window-manager-in-rust-01/ https://kintaro.github.io/rust/window-manager-in-rust-01/
- codingbinary 12y agoThe first part is merely a rough setup. Tutorial is unfinished. At the moment I am writing my thesis, but I'll try to do a few parts over the holidays.
- scott_s 12y agoI think that's better to link to, instead of the code itself.
- neumino 12y agoOnce you have started to use a tiling window manager (Awesome WM in my case), you can't go back, it's just a huge boost of productivity for developers - especially when you come from OS X where dragging/resizing windows is a real pain.
- brandonbloom 12y agoshrug I've heard this argument many times, but this is clearly a different strokes situation. I set my window layout up once at the start of a multi-hour working session. Most of the time, that's either 1) a large MacVim window and a terminal or 2) that plus a browser. It takes ~10 seconds to get it how I like it. After that, cmd+tab works just fine. Even on my 27" display, I usually prefer to have a little overlap where all three windows rest in such a way as to permit the most relevant bits to be visible simultaneously, while allowing for overall larger space when an individual app is focused. Tiling window managers tend to distort windows to less than ideal proportions, as they strictly eliminate overlap. That said, I utilize splits (ie tiling) within vim to great extent.
- dbpatterson 12y agoObviously it's personal, but the main issue I've always had with Alt-Tab is that as soon as you have more than 2 windows, getting to a specific application is now something you have to think about (or hit key, look, possibly hit key again). Since I'm often doing web development, I usually have a terminal open, an editor, and a web browser. Except for terminals, I pretty much always have everything full screen - the benefit is that Super-1 gets me to terminal(s), Super-2 gets me to my editor, and Super-3 gets me to the browser.
- deleted 12y ago[deleted]
- cant-be-serious 12y ago>tiling >rust edgy as fuck
- jherdman 12y agoMy apologies if this is a really naive question, I don't really do this kind of low level systems programming. Do most projects of this sort not have tests, or are they just hard enough that they don't really pay off?
- deleted 12y ago[deleted]
- codingbinary 12y agoAs for the xlib stuff, I can't really write tests for that. But I will write a more extensive test suite for the core components, especially the ones in src/core.rs For the methods in window_manager.rs, they often depend on the window system, but that shouldn't be a problem as I could simply insert a dummy interface. Tests will follow. Last weeks were just filled with thesis and preparations for my last exam. So I used the coding for relaxation and kinda omitted the tests. I know, I know...behaviour.
- Heurtebise 12y ago> As for the xlib stuff, I can't really write tests for that. I do that by wrapping the C APIs into traits. I have some macros that generate both the proper implementations with ffi calls and mock implementations. Then I can write extensive tests for the high level binding's low level behavior using properly set up mocks.
- 0x420 12y agoSay, which distro is that in the first screenshot?
- Animats 12y agoThis requires Xephyr, which is another window manager, running on top of X. What is the Rust part actually doing?
- steveklabnik 12y agoThat's just for testing.
- codingbinary 12y agoXephyr is just for testing. You can run wtftw completely standalone when you use it in your .xinitrc for example. It's still a bit buggy though. Works perfectly fine here. Been using it as my default WM for 2 weeks straight now. But some bugs do seem to creep up on other machines.
- tomjakubowski 12y agoXephyr isn't a window manager. It's an X display server that runs inside a window on another host X server.
- sgt 12y agoSo clearly Rust is ready for tiling window managers. When will Rust be ready for the web (at least to the level of where Go is right now) ?
- zcdziura 12y agoWhat makes you think that it isn't already?
- sgt 12y agoSeems it's far from being mature enough to use in production - from a couple of sources including: http://arewewebyet.com/ http://arewewebyet.com/
- thinkpad20 12y agoWhat is it that makes writing an HTTP client so hard? It seems bizarre that a project like teepee could have been in active development for 8 months or more, and still not be anywhere near usable.
- carllerche 12y agoWell, http://github.com/carllerche/curl-rust http://github.com/carllerche/curl-rust has been working great for me. Sure, it uses libcurl so it isn't pure Rust, but that doesn't make it not work :-)
- sgt 12y agoTeepee is mainly a HTTP server though - I can imagine that the HTTP client part of the library is more trivial.
- TheHydroImpulse 12y agoThe web ecosystem in Rust is still very early. There have been some awesome efforts recently in pushing a full-featured http library [0] (Hyper is now powering Servo [1]). The web ecosystem can't expand fully without a strong http library and previously, an unmaintained rust-http was used. The next issue, if we're talking about high-performance http is asynchronous I/O which Rust doesn't currently bundle with (now that Rust has dismantled it's green threading runtime and is now sticking with native threading). However, mio [2], a lower-level Rust library in providing proper I/O abstractions that support async apis and the like is progressing pretty well. The awesome part about Rust is that you have full control over the system. This allows one to build something like mio even though Rust doesn't support async I/O or a more efficient threading model, etc... [0]: https://github.com/hyperium/hyper https://github.com/hyperium/hyper [1]: https://github.com/servo/servo/pull/4198 https://github.com/servo/servo/pull/4198 [2]: https://github.com/carllerche/mio https://github.com/carllerche/mio
- heinrich5991 12y agoCan you tell how much `unsafe` code you used? And if you did, for what purposes?
- codingbinary 12y agoExcept for 2 exceptions, only for interfacing with xlib, as the calls to rust-xlib involve raw pointers (because rust-xlib is just a plain c-binding wrapper around xlib). The 2 exceptions are: loading of the config library. The config file is compiled to a dynamic lib at startup, and I need to read the symbol out of that library to access the configure function. The DynamicLibrary module is unfortunately unsafe. The second exception is in one of the default handler methods, managing the on-the-fly restart of the WM (akin to xmonad). This involves a call to execvp in the libc:: module, and therefore also unfortunately requiring an unsafe block (split into 2 unsafe block, for pointer handling and calling).
- spain 12y agoI find it funny that it seems like any conversation about a particular tiling window manager will eventually turn into a conversations about window managers in general. So to continue the trend, I used to use tiling wm's until I learned about Emacs. Emacs lets me do away with tiling mostly because it itself supports it in a way, namely C-x 2 and C-x 3. I can run all my shells and gdb's right inside Emacs. Nowadays I usually either have one fullscreened Emacs window, Firefox, 1 external terminal, and maybe LibreOffice open on my laptop. I don't mess around with moving them around and resizing them. For me, it's enough to simply have workspaces to manage all of them (I use C-M-[np] to switch back and forth through them, Caps Lock is remapped to Control). It's true though that the benefits of tiling window managers isn't just the tiling itself, but often that they're programmable and configurable through plain text files. There's also the benefit of lower resource consumption if you run it bare. As for what I actually use? Xfwm4 gets the job done.
- chriswarbo 12y agoSounds like my exact setup, except I use Conkeror as a browser (it's an Emacs-like UI on Firefox's engine). I also use Xmonad as my (tiling) window manager, even though I usually cycle through fullscreen windows on various desktops, as you say.
- codygman 12y agoDo you just install from source? Or do you use any of the debs? Which one? Are you on Debian or Ubuntu?
- chriswarbo 12y agoI use NixOS. In /etc/nixos/configuration.nix I added the line: services.xserver.windowManager.xmonad.enable = true; services.xserver.windowManager.default = "xmonad"; Then ran `nixos-rebuild --switch` to use the new config.
- sjolsen 12y agoI'll second using Emacs as the primary graphical shell. It shouldn't really be surprising that it's good for that task, since the interface is (or so it seems to me) heavily influenced by Genera's X interface. If Emacs let you display an external program such as Firefox in a buffer, I'd as well do away with Openbox and just run Emacs.
- rudolf0 12y agoIs it just me, or does Rust code always seem very clean and tidy? I haven't seen a Rust project yet where the code seemed "ugly". It's such a pleasure to look at compared to C++ (though nested generics are still a pain).
- bwilliams 12y agoI agree, with the exception of to_string() and as_slice() all over the place when dealing with a lot of text.
- steveklabnik 12y agoto_string() will still be a thing, but many uses of `as_slice()` should be fixed by using &foo instead of foo.as_slice() in many cases.
- FreeFull 12y agoIf you want to see ugly code, you could look at the compiler's source code. A lot of code in it is clunky because it has evolved since Rust was a very young language, with gradual changes rather than full rewrites.
- zobzu 12y agoThe actual code: https://github.com/Kintaro/wtftw-core https://github.com/Kintaro/wtftw-core
- yoanizer 12y agoIt really leaves me shrugging my shoulders when I see titles like "such and such written in such and such language/framework". Like saying that writing a window manager in Rust (or whatever) is interesting just because it is in Rust. Tell me, what does it bring to the table compared to other window managers ?
- exDM69 12y ago> Tell me, what does it bring to the table compared to other window managers ? This kind of window managers are often coupled to a programming language and the end user is expected to modify the source to their liking. For example, dwm is written in C, Xmonad in Haskell, awesome in Lua and there's even ones written in Scheme and Common Lisp. In all of these, the idea is that the source code is the configuration, and you're expected to hack on it. Of course there's some appeal in just doing it in another programming language, even if it has been done before. A tiling window manager is a few thousand lines of code, so it's a neatly sized practice project.
- rpedroso 12y agoWriting a window manager in Rust is interesting precisely because it's written in Rust. I wouldn't be surprised if this homebrewed WM didn't hold up in features or performance to alternatives like xmonad, dwm, Awesome, i3, etc. However, the linked repo is an interesting way to showcase both a relatively new technology (Rust) and the innards of WMs, which most people don't look at very often. It gives non-Rust-users a glimpse into Rust's features and capabilities, and a glimpse at how simple (150 loc + 125 lines of config) a window manager can be. I found it insightful.
- deleted 12y ago[deleted]
- SkyMarshal 12y agoDon't miss the tutorial at the end of the github page either: https://kintaro.github.io/rust/window-manager-in-rust-01/ https://kintaro.github.io/rust/window-manager-in-rust-01/ Potential trend - instead of learning a new language with Hello World or blog/chat app, it's now via tiling wm.