dwm - Looks like the last update was 6 months ago, but it is a lean and capable window manager. Tried it for the first time last week, and I think I'm hooked. suckless.org thinks like I think a lot of the time
Top 1 reason I'll not even try dwm: this philosophy from the official website http://dwm.suckless.org/ :
> Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions.
~~Have fun within the elite.~~
[edit] : Sorry for the gratuitous bad sentence at the end, I strike it. Using an open-source project doesn't mean to necessarily agreeing with the way the front page of the project is written. So blaming the author is out of topic. Thanks to the original author for let me discover the dwm project threw examples.
I was being slightly facetious, but in all honesty, I'm using dwm on my work computer now. http://dwm.suckless.org/
It could be construed as an act of masochism, but it is blazingly fast and once you customise it a bit(requires a recompile...) and get used to the shortcuts, it's pretty damn good.
I also think advertising it like this is hilarious: "Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions."
The window manager in Windows is DWM, not to be confused with a different window manager available under GNU/Linux also called dwm. A window manager just draws the windows for GUI programs. You can run one without using a full desktop environment.
A desktop environment is a vague concept that usually involves providing the full desktop experience that an end-user would expect. It'll come with a window manager and provide things like desktop icons, backgrounds, and a file browser. It will also usually come with an assortment of other programs that the end-user may find useful, like a text editor. In that regard, you can pretty much build your own desktop environment using a combination of other applications.
>Which Is Compiz?
A window manager. You can install the XFCE desktop environment and replace its window manager (XFWM) with Compiz for example. Since it provides composting you can have interesting effects. Alternatively, you can also get a subset of its features with something like xcompmgr, which provides composting effects to other window managers.
>Metacity?
That is the window manager used by the GNOME 2 desktop environment. You could replace it and keep the rest of the desktop environment if you wish.
>Conky?
None of the above. It's just an application that draws itself on the desktop.
>Is is possible to run a GUI program from just the commandline?
This is an interesting question and it depends on what you mean. If it uses a widget toolkit like Qt4 or GTK, then no. However, if it has framebuffer support then yes. You can for example run mplayer from the commandline and have the video appear in your terminal.
Seriously.
>Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions. There are some distributions that provide binary packages though.
dwm. supports xinerama for multihead. complete customization possible through a simple header file and/or single source file. (recompile needed) use with dmenu for added awesomeness.
awesome and xmonad are both dynamic tiling window managers, based on dwm. They are very different than tmux because their purpose is to avoid manual window placement/configuration as much as possible.
What you're looking for is a manual tiling window manager. ratpoison is based on GNU screen, another multiplexer like tmux, and is exactly what you're looking for because it was made specifically to be an X-based analogue to screen. It supports multiple workspaces but only uses one by default. Window and workspace management is handled through a command line (a literal command line, like tmux's C-b :
), and commands can be bound to keys, much like tmux. If you want to try this one out, prepare to do a lot of reading. Other manual TWMs of note are HerbstluftWM and subtle, two of the more popular WMs on this subreddit; and StumpWM, which is based on ratpoison and is more extensible, but is significantly larger and more complex due to being written in Lisp.
xmonad is Haskell. I don't really know what to recommend to a Fortran programmer. dwm is light as hell.
With Windows, you have very limited options for tiling though. If you can pick up a terminal text editor (Vim, Emacs, Nano), cygwin (not sure about mingw) will build dwm and Awesome WM just fine in my experience.
This comes from people taking pride in creating windows manager that is "customized through editing its source code" (source). Many people would consider this "the best example of Suck".
DWM! :D Custom built :)
I hear lots of good things about AwesomeWM... but It never really struck a chord with me. The only major disadvantage with DWM is the lack of struts support, so its kinda difficult to get a clean system tray :(
I work mostly with full screen windows, or Monocle mode as dwm and the like call it. The trackpad makes it very easy to swipe between spaces and I keep things in a defined order so no matter what app I'm currently using I can quickly get to any other app.
If you like surf, go ahead. It's not like you are supporting them with money or anything. And that would be fine too if that's your choice.
What irks me is their obnoxious attitude when I read stuff like that:
>Because dwm is customized through editing its source code, it's pointless to
make binary packages of it. This keeps its userbase small and elitist. No
novices asking stupid questions. There are some distributions that provide
binary packages though.
There is also allegations of them being far-right, but I am not sure about that. I really don't know. But it's based on threads like these:
From what I remember it's only possible to do so through the tagmasks (configured at compile time, so every time you launch an application it's opened with a specific tag):
http://dwm.suckless.org/customisation/tagmask/
In the documentation http://dwm.suckless.org/ it says that it lacks remote control, which I believe would be needed to achieve what you want.
I might be wrong but it's something that I wanted to do too.
What I do: I clone the git repository, then create a new git branch with my changes. Apply patches, also modify config.h file. Periodically you need to merge changes from trunk into your branch. This can be a pain and confusing, but fortunately dwm and st don't change all that much, so it's usually not too bad.
Look at the "patches" section of the utility you want to modify (link for DWM patches below). You use git to apply the patch files to your branch.
http://dwm.suckless.org/patches/
For better or for worse, suckless programs require some degree of programming proficiency, ideally C programming. The good news is that the C coding style that suckless uses is pretty straightforward in my experience.
Be aware that there's a very common, incorrect definition of "dynamic window manager" that pops up everywhere. It commonly gets defined as "a window manager that offers both tiling and floating windows," but c'mon, how many tilers don't allow for floating windows to some degree? herbsluftwm, and... that's pretty much it.
What's "dynamic" about dynamic tilers is the combination of windows that make up the layout: it changes as windows are brought into and hidden from view. I'd recommend reading this articl about how dwm is intended to be used (there's another one from one of the original developers stored somewhere in the Wayback Machine, but I'm not sure how to find it). It is (or at least was) a unique and brilliantly simple idea.
They are both cited as forks of dwm on Wikipedia, and both sites reference dwm as inspiration.
Language doesn't matter, it's the concept & operations.
See also
- dwm related projects
It sounds like the patch is for the unstable development version of dwm, which hasn't been released yet. How familiar are you with C, programming, or version control systems?
EDIT: It looks like you downloaded the 6.1 patch instead of the 6.0 patch, which is on the exact same page.
Announcement text quote:
Hi,
I've ported DWM to D as a learning exercise and thought I'd share it. The repository can be found here:
https://bitbucket.org/growlercab/ddwm
(Beware, I've only tested it on Arch-Linux 64 bit for about 1 day!)
DWM is a minimalist dynamic window manager from suckless. More details on DWM can be found here
The "cport" branch is where I've done as little as possible to port the C code to D. It really looks like C code and is basically the DWM code compiling with DMD.
Under the "Downloads" section is a build of ddwm-cport to try out if anyone is interested, or build from source as it's pretty easy with dub.
The master branch is where I'm learning D, trying new Phobos functions and D style coding. I'm then comparing how the D-style version performs with DDWM.cport and the original DWM in terms of speed and memory.
I don't expect the master branch to be stable but cport should work fine.
Cheers, Stew
I simply removed the drawsquare function to get rid of the square, as to the colors, that is the status colors patch.
Some other patches that are applied are;
Along with a few visual changes I mage like adding a line at the bottom of the bar, padding around text, able to add padding on the bottom for a second bar with conky, dzen, etc.
> One of the cool things about awesome is that its "config files" are a proper programming language
Check out dwm -- its "config file" is editing the source code and rebuilding :)
dwm on a crappy linux box would work for you. It has a monocle mode (just one full screen window, it's a tiling wm). It can run in about 20MB of RAM, maybe a bit less. Just load that site, put the browser in full screen and you are good to go.
With dwm you can also remove all the keybindings to do anything if you don't want people messing with it.
dwm You could throw it on Debian it shouldn't take more than an hour or so to set up, bonus if you make a preseed installation file and automate it.
But see, each maintainer is going to have her or his definition of 'successful' be quite different. For instance, take this:
'Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions. There are some distributions that provide binary packages though.'
That's the definition of 'success' for this project. Let's not throw everyone into the same tub.
I gotta recomend suckless' dwm. It's highly customizable, and since it's a suckless utility it runs blazing fast (I dare to say the fastest window manager yet), consuming not even a dozen MBs of RAM alone.
It's fairly easy to customize it, since it's just through a C header file. If you want to know how to fully customize it to your taste and how easy it is, I gotta recommend Menta Outlaw's videos on dwm
You may want to look at the code in these patches too, as they implement a layout toggle
> it has full Unicode support
Can you say a little more? I thought that dwm did not support full unicode unless heavily patched (e.g. dwm-pango in Arch Linux's AUR), and as for dwmstatus, the suckless page for it no longer exists:
> The requested document at 'http://dwm.suckless.org/dwmstatus/' doesn't exist
How does slstatus compare to a regular dwmstatus? http://dwm.suckless.org/dwmstatus/ I'm in the process of learning and setting up dwm so I have a ton of questions. Can I ask what you use to manage wifi connections and suspending on close?
The only modifications visible in the screenshot are statuscolors and dualstatus which I modified to display colored text. I'm also using pertag, useless gaps, fancybar, and viewontag.
This is Unixporn. 'Round these parts, calling the MS Windows window manager by name is nigh treasonous. ;) Always like seeing how people's setups have changed over the years, though.
> There's no reason to take away someone's ability to customize their own desktop
Have you ever saw someone be confused because the "computer has no Internet, plz help!", you drop what you're doing, only to find out that they accidentally set Google Chrome to be their default browser, and now the shortcut on their desktop is now different.
I actually had to put up with that last year. From management. I giggle imagining her accidentally switching Desktops on Windows 10, and the inevitable meltdown that will undoubtedly ensue. Not my problem anymore.
"But linux users are more tech savy than that". That's why we can always:
Details:
Applications running are:
Not out of box. There are patches available that let you get more features (like the systray patch for example). You can find all of them here: http://dwm.suckless.org/patches/
You probably want this: http://dwm.suckless.org/patches/uselessgap
That might not be what you're looking for, but perhaps dwm + dmenu would fit the bill. dwm is a tiling window manager (not a desktop environment), and dmenu an app launcher for dwm.
You'll have to compile dwm from source as the configuration is decided at compile-time (!), but dmenu is on slackbuilds.org. Actually, dmenu works just as well as a standalone launcher, so you can pick something else than dwm as a WM/DE.
For dwm, I seriously recommend using the hg version straight from the repository and setting up a patch queue. There's even a tutorial on the suckless.org wiki on how to do it.
However, if you do want to switch over to i3, I won't hold you back. :)
dwm isn't for the faint of heart, but if you're so inclined, it can be found, along with more information, here. I should also mention, I have a number of patches applied, as vanilla dwm doesn't have all the features I would like, but no other WM is as simple, and easy to use/configure. (Once you get the hang of it, of course).
That said, the "look" can probably be accomplished in nearly any tiling window manager with its own panel, and there may even be some standalone panels that you could use with a stacking WM that could be configured to look like this. Hell, you could probably tweak the hell out of Xfce's panel and make it look similar.
I'm telling you with DWM and Xinerama, you can control any number of screens and windows, more than you'll ever want, with a very small set of keybinds, and you'll never have to reach for the mouse !
http://dwm.suckless.org/
I know, I use DWM too ;)
I was trying to think of something that might work a bit more "out of the box" for someone!
Telling people to hack their own C to add tabbed layout tends to put people off the idea :p
Also, why run a separate "tabber" when you can just patch the DWM source!
you run some other tool like feh
as part of your .xinitrc or other x startup commands to set your wallpaper.
same applies to most other features.
No, just warning: I have met plenty of people who persuaded that as a Windows “power users” (whatever it means) they will have no problems with really hardcore Unix tools, and then they were very disappointed. Let me just quote (yes, that IS the true condescension):
> Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions. (from http://dwm.suckless.org/)
Yes, sway is much more user-friendly than that, but it is still not exactly the same as Gnome or KDE. And I am not saying that it is bad, I like sway mostly because of that, but the learning curve is rather steep.
And I didn’t know that the OP has been using i3.
I'd recommend looking at some youtube videos about it before jumping in. It's time consuming to set up how you want it, but I found it educational, honestly kind of fun, and its apparently the lightest xorg window manager in existence
Until a better suggestion is given, if you've got time to invest and want to learn Xlib, you could look at the source for the DWM swallow patch. If I see anything better, I'll update.
https://wiki.archlinux.org/index.php/Comparison_of_tiling_window_managers
Tiling window managers don't use the interface paradigm you envision, but are generally designed to be used with just the keyboard.
I would suggest looking at DWM.
I've spent a significant amount of time lurking here and on /r/unixporn and working on establishing a system that I like. Currently working on making dwm not crash when I disconnect a monitor. I also started a fork of catwm. Yay.
I believe you want to apply one of these three patches: - attachabove - attachaside - attachbottom
I liked the behavior of attachbottom the most.
If your window manager is anything other than a tiling one (1, 2), yes. Otherwise any grouping of pages or tabs within windows is inferior software.
Window management is not inherently sucky, it's just been taken over by the applications because the majority of window managers are historically shit for the end user.
That said, it makes sense for Chromium development to take the outside environment into account; but I urge you to look at alternative software (3) that actively sidestep these problems.
Emacs theme was created with this Then I went in and added bold to some fonts
This is very much a work in progress! I haven't riced in forever, I just thought this picture looked somewhat pretty.
Any chance you could share a patch for this? I've been using the warp patch for years, but yours might be simpler.
And sorry, but I do have to ask: Why use Terminator with dwm? Terminator is pretty much the exact opposite of "suckless," and its selling point is the ability to tile terminals...
> The only reason it's done this was is to make it really hard to configure and use.
err... I only know how to PHP and DWM is my WM of choice. I put it everywhere from my netbook, laptop, to the desktop with two screens. I did figure out how to patch the source code so I could add a system tray, but that's a far cry from actually knowing how to code in C.
I've tried many other WMs, tiling and otherwise, and i keep going back to DWM just because of how simple and no-nonsense everything is.
dwm forever!
>Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions. There are some distributions that provide binary packages though.
> Filesystem Type Size Used Avail Use% Mounted on
> /dev/sdd1 ext4 6.8G 5.4G 1.1G 83% /
> /dev/sdd3 ext4 7.2G 3.4G 3.5G 49% /home
Archlinux running on a little 16GB Sandisk Cruzer USB stick. Graphical environment is DWM!.
8.8G is not too shabby for a fully functional OS i reckon.
Just did. I have two things in mind, I'm trying to get dmenu-recent-aliases to work and got stuck on where to actually invoke it, and then it would be cool to see how to backup with git. Was looking for a video on the later and could not find one, plenty of text based info, but no usable Youtube video.
Edit: Looks like I have some more suggestions... Switched gears from trying to set up dmenu-recent-aliases and wanted to set up the "barebone" dwmstatus posted on suckless. It seems like I'm having a hard time using dwm because I have very little C experience.
>awesome and xmonad are both dynamic tiling window managers, based on dwm.
Nope, they are not. They target the same problem, but neither of them is based on dwm! Ib fact, xmonad is even written in another language than dwm. Awesome is just a high level lua binding for the X library, as far as I can tell.
dwm's bar listens to WM_NAME property, this is set using xsetroot -name. This makes it extremly flexible using simple shell like acpi, awk, sed and other commands to display battery, keyboard, date, etc.
By its nature of being extremely minimal, it doesn't have things like colour in the bar and other things, so you'll need to edit the source code. There are many many patches that can be applied with a simple git apply
Ideally, when talking about the "proper" way to develop software it should be the same for Windows and Linux. As long as you weren't using MS/Win-exclusive products, you are should be able to reuse the most of your tools on Linux and keep your workflow.
If talking about general best practices regarding the dev workflow, this shouldn't be an OS-specific discussion. Most tools can be used on nearly all common platforms anyway. I'm talking about git/mercurial, editors, debuggers, shells, make, autotools etc. (I'm using MSYS2 on Windows anyway...)
Anything more detailed just depends on the kind of project.
> Is there a list where everything should go ? Where should I put user config files ? databases ?
Do you know about the Filesystem Hierarchy Standard? However, some distros have a little bit different conventions, but it's the job of the package maintainers to care about that, not yours.
> I know it's relative to the distro. but still...
But still what? It's relative to the distro, and that's it. Sometimes people put up project sites like dwm. And distro maintainers download the code from there. Or you host it at Github/alternative.
Hey I have made kiosks with Beagle and Pi before and my experience the GPU on the Raspberry PI is better for a dedicated system that requires X GUI applications. Avoid any of the Noob or pre-configured images.
What I've used in the past.
Other advanced options.
I'm using the awesome http://dwm.suckless.org/ window manager. :-)
I had a glance at Syntastic and I immediately rejected it since it was just not to my taste. Way way too many lines of code (9k). Same goes for https://github.com/hallettj/jslint.vim... it should just be two lines to integrate with a third party linting/syntax tool.
I believe it is this one: http://dwm.suckless.org/patches/gaps
Make a backup to be sure when you patch this.... Also take a look at my git (link is in the comments) for a idea on how to set it in you conf.h
I compiled it form source available on http://dwm.suckless.org/ the make will fail but if you look for the error on google you will get the missing dependencies. I don't remember which ones they were :(
It does, as long as customization can be done through code. Which you can with GNOME 3, since the whole ui code is exposed and can be modified, either directly (see /usr/share/gnome-shell/js/ui) or through the extension system.
In this sense, customizing it is no diferent (actually even slightly better) than with some tiling wms (to customize dwm you have to recompile, for xmonad too...); somehow none is bothered about it in that case. I think it might be due to the differences in the communities. From dwms website:
> Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions.
--- and none is really bothered by it.
GNOME's extension ecosystem (the website is a great part of it) is probably the best part of it. People who don't want to put any effort into modifying the UI can look for solutions for their need there; chances are, there already exists something they could use. As long at i exists, it doesn't matter much what the core developers think...
(Sorry for the longish, rantish response, I got a bit carried away).
dwm's developers themselves state that, because it's customised via the source code, it’s pointless to make binary packages of it. If you install a dwm package from the Debian repositories, you won't be able to change its key bindings, colours, etc.
As root, run aptitude build-dep dwm
(or use apt-get
instead) to get the required packages to build dwm from source. You'll also want to install the suckless-tools
package for dmenu, dwm's application launcher.
This is off the top of my head, but it should work:
wget http://dl.suckless.org/dwm/dwm-6.0.tar.gz
tar -xzvf dwm-6.0.tar.gz
make
config.h
with your text editor of choicemake install
as root (su -c make\ install
) to build and install the dwm binaryexec dwm
to the bottom of ~/.xinitrc
. Make sure no other window managers/DEs are set to runstartx
If I've made any mistakes, let me know.
I present to you... tiling window management
> Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions. There are some distributions that provide binary packages though.
SLiM is fine (I use xdm since it is already a part of X, but to each their own), but some of the other recommendations I feel there are better solutions for. Instead of outputting conky to your status bar through xsetroot, it would be better to use a bash script to give you the info you need (date, battery, etc etc). If you need conky a singly bar at the top of your screen won't give you anything more useful than a bash script can provide. For example, all the information provided by the previous poster in his conky configuration can be set pretty simply with a script, such as time or battery status, using sed and awk. The dwm homepage has some examples: http://dwm.suckless.org/scripts/simple_monitors
Second, you shouldn't need feh, just use xsetroot. The whole point of dwm us a small footprint, using things like feh and conky defeats the purpose.
Urxvt is fine, smaller than xterm, but make sure you use the daemon capabilities to get the full effect and usability from it. Transparency and such in a terminal seems counter productive, as it makes it harder to read and concentrate on what is going on, but again, personal preference.
I run ubuntu.
see, the difference between you and I is, while you have expressedan extreme bias, I have none. I used windows workstations for years, and am just as capable on one as I am Linux from the command line, kde, gnome, my chosen dwm or, my personal favorite, mac osx. Of the options, though, osx is the most capable of the three. It has the best confluence of software, user experience, and operating system compatibility.
I understand why you are biased toward open source software. I am sympathetic. But, it is disingenuous to act like everyone else's preferences are born of some common use issues, but yours are not. If you've never attempted to make the comparison, then I don't see what ability you have to say where they each fall in terms of usability. All you need is a few articles on the internet to judge social responsibility. User experience, though, takes actual experience.