Out on the tiles

I’ve been experimenting with tiling window managers recently. I tried out awesome and xmonad, and read documentation on several others including dwm and wmii. The prompt cause is that I’ve been doing a lot of surgery on large repositories recently, and when you get up to 50K commits that’s enough to create serious memory pressure on my 4G of core (don’t laugh, I tend to drive my old hardware until the bolts fall out). A smaller, lighter window manager can actually make a difference in performance.

More generally, I think the people advocating these have some good UI arguments – OK, maybe only when addressing hard-core hackers, but hey we’re users too. Ditching the overhead of frobbing window sizes and decorations in favor of getting actual work done is a kind of austerity I can get behind. My normal work layout consisted of just three big windows that nearly filled the screen anyway – terminal, Emacs and browser. Why not cut out the surrounding cruft?

I wasn’t able to settle on a tiling wm that really satisfied, though, until my friend HedgeMage pointed me at i3. After a day or so of using it I suspect I’ll be sticking with it. The differences from other tiling wms are not major but it seems just enough better designed and documented to cross a threshold for me, from interesting novelty to useful tool. Along with this change I’m ditching Chatzilla for irsii; my biggest configuration challenge in the new setup, actually, was teaching irssi how to use libnotify so I get visible IRC activity cues even when irsii itself is hidden.

One side effect of i3 is that I think it increases the expected utiliity of a multi-monitor configuration enough to actually make me shell out for a dual-head card and another flatscreen – the documentation suggests (and HedgeMage confirms) that i3 workspace-to-display mapping works naturally and well. The auxiliary screen will be all browser, all the time, leaving the main display for editing and shell windows.

It’s not quite a perfect fit. The i3 model of new-window layout is based on either horizontally or vertically splitting parent windows into equal parts. While this produces visually elegant layouts, for some applications I’d like it to try harder to split space so that the new application gets its preferred size rather than half the parent. In particular I want my terminal emulators and Emacs windows to be exactly 80 columns unless I explicitly resize them. I’ve proposed some rules for this on the i3 development list and may try to implement them in the i3 codebase.

I’m not quite used to the look yet. On the one hand, seeing almost all graphics banished from my screen in favor of fixed-width text still seems weirdly retro, almost as though it were a reversion to the green screens of my youth. On the other hand, we sure didn’t have graphical browsers in another window then. And the effect of the whole is … clean, is the best way I can put it. Elegant. Uncluttered. I like that.

Even old Unix hands like me take the Windows-Icons-Mouse-Pointer style of interface for granted nowadays, but i3 does fine without the I in WIMP. This makes me wonder how much of the rest of the WIMPiness of our interfaces is a mistake, an overelaboration, a local peak in design space rather than a global one.

I was willing enough to defend the CLI for expert users in The Art of Unix Programming, and I’ve put my practice where my theory is in designing tools like reposurgeon. Now I wonder if I should have been still more of an – um – iconoclast.

85 comments

  1. “enough to create serious memory pressure on my 4G of core (don’t laugh, I tend to drive my old hardware until the bolts fall out)”

    …I find myself trying to imagine what 4GB of core would look like (and wondering if 4GB of core were ever made!) I think the biggest core rack was 128kB (with the biggest core-using computer using eight of those for 1MB) which means you’d have 32768 racks. That must be an impressive computer room! … ;p

  2. What I’ve personally found to be a good balance between a WIMP and a tiling window manager is using tmux. http://tmux.sourceforge.net/ I find that tmux is practically a tiling window manager for terminal-type stuff (vim, shells, python interpreter.) Then I run everything else that’s graphical (mostly web browsers), outside of that. I never could get used to using a tiling wm for my whole desktop, though.

  3. > I want my terminal emulators and Emacs windows to be exactly 80 columns unless I explicitly
    > resize them.

    Eric – you do know that you can buy off-the-shelf 132-column line printers now, right? You don’t have to be trapped in the 70s any more. Oh, and ditch the platform shoes while you’re at it …

    1. >you do know that you can buy off-the-shelf 132-column line printers now, right?

      You’re advocating 132-column printers and you think I’m trapped in the 1970s? Tu quoque, dude…get thee to a 110-baud teletype!

      Actually, the reason I stick with 80-column windows is because I suspect that’s the width most other people will read my code in, so I want to keep it readable at that width. 80 columns is sort of a Schelling point in the range of possible screen widths.

  4. Have you looked into stumpwm? That’s what I use, and it’s very good (if unfortunately now seeming kind of dead).

    For me, “tiling” is not nearly as much of a consideration as “keyboard-driven”; having to use the mouse to do WM tasks when most of my interaction was through terminal windows anyway.

  5. I still think that 80 columns is a good width for code, because it’s the sweet spot between compactness and readability.

    “Schelling point”…EXPN?

  6. @esr –

    I would be interested to know what distro you run. And how much of your day-to-day environment you build from source, as opposed to just downloading the latest package from that distro’s package repositories.

    I’m running CentOS 6 on an eight-year old Dell laptop (yeah, 32-bit with only 4 Gbytes of “core” – that’s RAM to you whippersnappers!), and >90% of the time I’ve only got browsers and rxvt windows open. My third biggest use case is LibreOffice. But I’m not doing serious software development right now.

    @HedgeMage – same questions.

    Thanks!

    1. >I would be interested to know what distro you run. And how much of your day-to-day environment you build from source

      Ubuntu. And not much of it. (Though I just built git from source to avoid a bug in stream-dumping – older versions failed to quote operands in R ops properly.)

  7. In terms of Window Managers I’m very sad that IceWM is no longer in development. It was/is a piece of very fast C++ code with a small memory footprint, and it was damn-near infinitely configurable via text-based configruation files. If you wanted icons, there was a very light, fast icon manager who’s name I forget, and it was very easy to make IceWM look really modern and aesthetically pleasant via theming. I could probably do an apt-get but the project hasn’t been maintained in several years and I’m worried it might get into a fight with some other piece of code.

    ItceWM fit really nicely into the sweet spot between “light and fast” and “I want a nice looking desktop.” I’d love to see someone take over the project and make it sing. Unfortunately, my programming time is spoken for and I don’t have the C++ chops to make it go.

  8. > Now I wonder if I should have been still more of an – um – iconoclast.
    That pun was the whole point of the post, wasn’t it?

  9. @John Bell

    My main box is a 2nd gen Core i5 (4 processor cores at 2.6GHz ea.) with 8GB core (aka RAM). I run Funtoo Linux (http://funtoo.org), a source-based Linux distribution; everything on my system is custom-compiled to my specs. Yes, I may be a bit of a control freak. ;)

    I tend to hover around 1GB of ram usage unless I’m compiling something, doing serious database munging for my web development work, editing graphics, or something similarly memory-intense. At the moment I have 6 terminals open doing various low-resource things like ssh sessions, two browsers each with a handful of tabs open, i3’s ibar with istatus giving me some stats, conky open to get a RAM usage estimate, Pandora playing via the pianobar app in another terminal, claws-mail running for email, emacs running for…well, everything else…and I’m using 862MiB of memory. :)

  10. @esr

    While you can’t set character width easily, it’s possible in your i3 config to set a default pixel width for windows/containers of a particular class. Experiment a little and you’ll get it right. If that isn’t powerful enough control, you could always run devilspie, but one of the things I like about i3 is that for my purposes, it provides enough control of application window display natively that I don’t need to bother with devilspie.

  11. Increase your font size until you hit 80 chars wide.

    That’s a bit fiddly, but surely less so than dragging windows around.

    (Delighted user of i3 for a couple years. Transplanted from fvwm2.)

    1. >Increase your font size until you hit 80 chars wide.

      What? And give up precious line depth in my Emacs windows? You speak foolishness and blasphemy, sirrah!

  12. > That must be an impressive computer room! … ;p

    and warm, too! Core memory was never what one might call, “low power”

  13. Welcome to the tiled word, Eric. I’ve been using i3 for a few weeks now and came to the same conclusion: it fits pretty much like a glove with one exception: a bug where if you mouse too fast from one screen to another, the WM will reset the cursor to the center of the window you just left. The i3 devs appear to acknowledge this bug, but not want to do anything about it.

    Nevertheless, i3 and awesome are the only two WMs I’ve found where multi-monitor, historically a problem for Linux, seems to Just Work (although maybe xmonad and the rest do the same; it wouldn’t be hard). Part of that is the whole idea of a “desktop” which I loathe: when you have two monitors, what do you have? Two desktops? Or one big desktop that spans them both? If the latter, what if they are two different resolutions? Could you have an odd-shaped, nonrectangular desktop? And on and on and so forth. Tiling WMs solve the problem by dispensing with the desktop outright and constraining any windows which appear to fit in the displayable space.

    I’m not quite used to the look yet. On the one hand, seeing almost all graphics banished from my screen in favor of fixed-width text still seems weirdly retro, almost as though it were a reversion to the green screens of my youth. On the other hand, we sure didn’t have graphical browsers in another window then. And the effect of the whole is … clean, is the best way I can put it. Elegant. Uncluttered. I like that.

    The thing that I like to compare it to is the WOPR display from WarGames. Especially if you can arrange things to have one large window in the center of your FOV (perhaps an Emacs instance) and surround it with peripheral windows that give you different textual or graphical views on what you’re doing. Whichever production designer for WarGames was responsible for that display (it was a complete fiction; NORAD at the time only wished they had something as ostentatious) certainly knew something about display ergonomics for professionals. Much can be said for being able to switch tasks just by moving your eyes and maybe your pointer; not even an Alt-Tab is necessary.

    Some of us, of course, like to go whole-hog with the retro look and use the Glass Tty VT220 font in a full-screen monochrome xterm to revive the green-screen era on our fully modern swanked out desktops.

    Even old Unix hands like me take the Windows-Icons-Mouse-Pointer style of interface for granted nowadays, but i3 does fine without the I in WIMP. This makes me wonder how much of the rest of the WIMPiness of our interfaces is a mistake, an overelaboration, a local peak in design space rather than a global one.

    Nah. It’s an iron law of user interface design that recognition is better than remembering, so every piece of functionality a user should want to access should be available through something they can visually identify. Icons are the easiest way to achieve this. i3 is strictly for power users only — the sort of person who is perfectly comfortable with the muscle-memory commands of vi or emacs. Remember that an increasing number of programmers — despite having vi and emacs at their disposal for $0 and being smart enough to learn them — pay good money for something like SublimeText, an editor that affords vi- or emacs-like power while conforming to a more conventional UX.

    The UI revolution has already happened: it’s the shift from a “document-centric” interface to an “activity-centric” one. Suddenly the industry realized — holy shit! Not everything that can be done with a computer is some sort of office task. We need to stop thinking in terms of documents and start thinking in terms of just asking the user what they would like to do. The OLPC XO was the vanguard here; but as always, Apple contributed the most to popularizing the model with iOS and its grid of “apps”.

    Document-centric thinking (a holdover, I believe, from the Xerox Star) was so pervasive that in the 90s, Microsoft’s version of the model-view-controller model was called “document-view”. I learned to stay the hell away from MFC after encountering that garbage.

    1. >I’d like to second StumpWM.

      While the idea of a tiling window manager written in Lisp has strong attractions for me, according to the docs it only seems to do the old and busted Xinerama thing rather than Xrandr. Since I plan on going multi-monitor shortly (like, possibly tomorrow) this is a blocker.

  14. “Some of us, of course, like to go whole-hog with the retro look and use the Glass Tty VT220 font”

    I need to figure out why my 3270 font looks weird in some uses and fix it…personally, I think it’s even more readable than VT220.

  15. I’ll be happy to go to an icon-less environment the moment all the application developers read (and understand) TAoUP, particularly its advice about the Rule of Silence. :)

    (Launch a GUI app from an icon in a window manager, and all its diagnostic output goes either to log files or to /dev/null, as it _should_ by default. Launch one from a command line, and too often suddenly the xterm/rxvt/whatever that you’re trying to use for real work is cluttered with unnecessary and distracting status messages from programs that are perfectly capable, if they wanted to, of launching alert boxes for important notifications and remaining silent about unimportant ones. If I were a developer trying to debug the software, this might be useful, in which case I’d use a “-d” or “-v” switch to turn it on. But I’m not. I’m just a guy trying to get work done, who doesn’t want his shell windows to get polluted with unimportant content spewed by programs running in the background.)

    A world in which this situation were otherwise would be a better world than this one, no doubt. But until/unless we get there, I doubt I’ll be interested in giving up icon-based launch of the GUI apps I use.

  16. @Jay Maynard “I still think that 80 columns is a good width for code, because it’s the sweet spot between compactness and readability.

    “‘Schelling point’…EXPN?”

    I hadn’t actually heard it before, but I figured you had probably pretty much defined it. Then I scrolled down…

    @esr: “>’Schelling point’…EXPN?

    “http://en.wikipedia.org/wiki/Focal_point_%28game_theory%29”

    Clicked on the link, and proceeded to almost fall out of my chair laughing.

    What else I found amusing was @Garrett “Eric – you do know that you can buy off-the-shelf 132-column line printers now, right?” seemed to be playing the same game I was with his “I find myself trying to imagine what 4GB of core would look like…” yet his comment gets all the attention. Of course, that’s probably because 80 columns is something that people actually give a bit of occhi di pernice about ;)

  17. @lelnet
    Assuming you’re calling programs from your $PATH, check out dmenu. It was designed to work well with dwm, but I use it pretty much everywhere, and is a great, sane way to get around calling those pesky, noisy programs.

  18. Dude! ESR now uses the same window manager as me. Neat. I’m being a bit juvenile perhaps, but I do get a kick out of that.

    I was frustrated trying to learn the basics of Linux through distros that do large amounts of the configuration with tools specific to them, so I ended up using Arch Linux. This left me with the decision of picking my own window manager. Anytime I’d used GNOME or KDE, I’d always tried to configure them to minimize mouse usage. I type very fast and hate having to move my hand from homerow. When I found out about tiling window managers, they sounded perfect.

    The first I tried was XMONAD, which simply required too much hacking for a relative newbie such as myself to be able to deal with. It’s defaults weren’t very usable, and it was pretty ugly. When I found i3, I found the absolute perfect wm for me. I can’t see myself ever switching.

  19. @lelnet: Just use dmenu. It’s essentially a run box. alt-d pulls it up, and its just a black bar across the top of your screen. Handles auto completion well too.

  20. I need to figure out why my 3270 font looks weird in some uses and fix it…personally, I think it’s even more readable than VT220.

    Is it a True/OpenType font or a bitmap font?

  21. If you always work from home and what you’re working on is text based, why not just move the distro work and reposurgen dev to a headless server box and SSH into it? Or is researching new window managers a welcome diversion?

    1. >why not just move the distro work and reposurgen dev to a headless server box and SSH into it?

      Because not everything I work on is text-based.

  22. @ESR

    What would you say the learning/adaptation curve for someone accustomed to WIMP is?

    @HedgeMage
    What is the correct protocol for innocently complementing a lady on her looks on the Internet without coming off as a creep?

    — Foo Quuxman

  23. One mistake that I have noticed in a lot of “minimal” window managers (both tiling and otherwise) is rejecting the title bar out of some misguided idealism – while it’s fine to say that, in an ideal world, if an application wants to display a caption it should do so in its own space, the reality we have is that window managers are expected to provide it and many applications use this space for information that’s not necessarily duplicated elsewhere.

    From the screenshots I have found, i3 does not do this, but it’s not uncommon in general – ratpoison and xmonad do, and several others (dwm, awesome) apparently only show the title for the active window. Of non-tiling WMs, 9wm and miwm do this, and wm2/wmx gets an honorable mention for its unreadable vertical titlebar.

    (I have not used all of these window managers; for some I am relying on screenshots of what may be a default setting for a configurable feature)

  24. Jeff, it’s a TrueType conversion of the bitmap font supplied with x3270. It works pretty well – in some apps. In others, it doublespaces horizontally for no reason I’ve been able to figure out. But then, I’m not a font geek.

  25. xmonad is the tiling window manager for Haskell hackers. If you are one, the amount of power you can get out of just a line or two of Haskell is tremendous. If you ever find yourself Really Into Haskell, try it again!

  26. As someone who grew up on MS-DOS, I always cringe when I see that the two major alternatives are WIMP and CLI. It is said that there is one thing the *nix world learned from the MS-DOS world and that was Midnight Commander. I think this seems right, but what is more important is the paradigm, where you navigate textmode menus and data entry fields with the cursor keys and choose with Enter. This paradigm was popularized in the MS-DOS world, CA-Clipper took it to perfection when he created a whole UI paradigm out of two kinds of “forms”, the “browse” with the menu and the data entry mask.

    If the CLI is about programmability at the price of intiuitivity and ease of making errors, if the WIMP is about clueless nontechnical users, the textmode-menus-navigate-with-cursor-keys paradigm is about after some minimal learning use the software lightning fast and get lots of stuff done fast.

    Yet somehow it never really stuck in the *nix world – Midnight Commander seems to be primarily the tool of older sysadmins who moved over from the Microsoft world to *nix, and very vew *nix applications borrowed this paradigm. I have seen one Debian package manager to borrow it, forgot the name, otherwise hardly any.

    Why?

    1. >Yet somehow it never really stuck in the *nix world

      Sure it did. Go fire up mutt. There are lots of other examples as well.

  27. It works pretty well – in some apps. In others, it doublespaces horizontally for no reason I’ve been able to figure out. But then, I’m not a font geek.

    Sounds like a possible Unicode problem.

    If the CLI is about programmability at the price of intiuitivity and ease of making errors, if the WIMP is about clueless nontechnical users, the textmode-menus-navigate-with-cursor-keys paradigm is about after some minimal learning use the software lightning fast and get lots of stuff done fast.

    This is one of the things I do like about KDE, over-heavyweight as it may be for some here: Virtually all of the desktop/WM actions are exposed as DBUS methods, and it’s trivial to set keybindings to the useful ones in the Settings program. I end up mostly using full-screen tabbed windows (Web, terminal, Eclipse), and I can switch between them or reorganize them (e.g., tile left-right) without having to take my hands off the keyboard.

  28. I’ve been using XMonad for about a year now and I’m completely hooked. I now use it both on my work laptop and my home desktop beast. I can’t image going back to a regular window manager. I haven’t tried i3 so I can’t comment on the differences.

    One thing I really like about XMonad is just the pure geek awesomeness of a WM built in Haskell. The XMonad configuration file is Haskell source which gives one an excuse to learn something about this great language. My current configuration is shared on github for anyone who’d like to use it for ideas or give me any feedback.

    https://github.com/marcsaegesser/dotfiles/tree/master/.xmonad

  29. Yet somehow it never really stuck in the *nix world – Midnight Commander seems to be primarily the tool of older sysadmins who moved over from the Microsoft world to *nix, and very vew *nix applications borrowed this paradigm. I have seen one Debian package manager to borrow it, forgot the name, otherwise hardly any.

    dselect

    There’s a whole world of curses-based apps out there you know.

  30. Jeff, it’s a TrueType conversion of the bitmap font supplied with x3270. It works pretty well – in some apps. In others, it doublespaces horizontally for no reason I’ve been able to figure out. But then, I’m not a font geek.

    I think I know which font you’re using. And I think I know why you’re seeing horizontal spacing issues: it appears to have buggy font metrics. Xterm makes its own guesses as to glyph width, so that it can support monospaced output even with a proportionally spaced font. (Try “xterm -fa verdana” and see!) Apps like Emacs, I think, just use the font’s own glyph width info.

    I take it you’ve contacted the author of that font?

    A possible workaround (if you’re on x11) is to use the bitmap fonts from the x3270 package — or else, the bitmap font of the MIT CADR’s screen font which is floating around on the net somewhere. The CADR font looks similar to the 3270 font and is clearly based on it, but is (imho) more readable. In particular the 6’s and 9’s are annoying, being difficult to tell at a glance from b’s and 4’s.

  31. Yet somehow it never really stuck in the *nix world – Midnight Commander seems to be primarily the tool of older sysadmins who moved over from the Microsoft world to *nix, and very vew *nix applications borrowed this paradigm. I have seen one Debian package manager to borrow it, forgot the name, otherwise hardly any.

    Older sysadmins swear by cp, rm, mv, pwd, etc.

    Whenever I see midnight commander being deployed it is on the desktops of the kids over at /r/unixporn…

    Anyway, the world is pretty much awash in curses programs to do every conceivable task. If this sort of thing really is your cup of tea, though, you may want to check out the Free Pascal Compiler. It comes with an open source reimplementation of Borland’s Turbo Vision API — long considered the best of the old DOS TUI’s — that works best on the Linux console but also works well on any ncurses-supporting terminal. It’d be an ideal first choice for correcting a perceived dearth of TUI application software.

  32. Sorry, Jay, I linked you to an Arch pkgbuild for the LispM font. The actual font appears to have vanished.

  33. Jeff: “I take it you’ve contacted the author of that font?”

    I am the author of that font, or at least the one I’m trying to get working. I’ve distributed it some, but not a great deal.

    If you want to try it, check out the font itself. I also have the FontForge file I used to make it for folks who might want to poke at it.

  34. >I’d like to be able to publish screenshots, but I have not figured out how to do that yet.

    What, does the PrtSc key do nothing in that setup?

  35. @esr –

    >I’d like to be able to publish screenshots, but I have not figured out how to do that yet.

    Um, Eric – ImageMagick?

    Here’s a little shell script I use with it to capture screenshots. The 5-sec. sleep is to let me get the right window to the front, etc. When the cursor changes to a large, dotted “+”, I know I can select the rectangle of interest.

    
    #!/bin/sh
    # captures screenshots, picks sequential names
    # 2012-10-01    JDBell
    #
    
    cd ~/Images
    let N=$(ls screenshot.[0-9]*|wc -l)
    echo -n "Capturing 'screenshot.$N'..."
    sleep 5
    import "png:screenshot.$N"
    echo 'Done' 1>&2
    echo 1>&2
    
    
  36. > 4G of core (don’t laugh, I tend to drive my old hardware until the bolts fall out)

    Get off my lawn esr, i am using wmii on 1¼G of core since now almost 5 years. :p

  37. Print-screen key doing a screenshot is a function of the desktop environment or the window manager; if you’re using a minimalist one, it probably doesn’t provide it out of the box. I map print-screen to run xfce4-screenshooter, myself.

  38. I switched to XMonad about a year ago. I budgeted myself about a week to get used to it, because of course your initial impression of any huge change in WM is always negative (“how do I do this thing I’ve done so often in the old system that I can’t even express how to do it because it’s muscle memory? argh!”). I was stunned when I realized at hour 2 that I wasn’t ever going back. I’d have switched a lot earlier if I’d realized that’s how it was going to go.

    My advice to anyone who is considering it is that they are broadly similar to each other, but that if you want to use one of the ones where the “configuration” is actually a program, do go ahead and stick to a language you know. I chose XMonad because I already knew Haskell and most of the other good choices at the time I did not know (Lua) or did not really want to use (C). XMonad is a horrible way to try to learn Haskell; it assumes you’re already pretty familiar with it. But it works pretty well, and I have pulled off a couple of stunts that a conventional window manager wouldn’t work well with (keyboard shortcuts to resize a window to 1024×768 for browser size testing, direct integration with DBus to do various things from the WM, etc).

  39. Jay, my apologies. I thought you were using this version, which appears to have the same issues, at least when I attempt to use it in Emacs.

    Maybe it’s Emacs which is bugged?

  40. @Foo. I started using it as a recent Linux convert and had very little difficulty whatsoever. It takes about 48 hours before it starts feeling natural in my experience. If you enjoy it, you’ll want to install a similar plugin for your browser. pentadactyl for firefox or vimium for chrome. They’ll make your browser keyboard drivable as well. The only weakness there seems to be flash.

  41. > I’d like to be able to publish screenshots, but I have not figured out how to do that yet.

    claims credit for most of the world’s image software, because he ‘wrote’ giflib, then got rid of it, then took it back last year…

    but can’t figure out how to post a screenshot to his blog.

  42. Go to for screenshots: xwd -out /tmp/shot.pcx && convert /tmp/shot.pcx /tmp/shot.png.

    I still use WindowMaker. It’s not been touched in centuries I think, but if you want minimal but functional… it’s still more than servicable. I can’t let go of “winshade” either, which WM happily supports.

  43. I just gave i3 a try, but, for better or for worse, I’m a young whippersnapper who grew up on Win 3.x / Win9x, and as a result I’m a very mouse-addicted type (*real* mice please, no trackpads) and don’t have much tolerance for interfaces that depend on lots of magic key combos. It’s not that I’m entirely keyboard-phobic, I do well in command line environments and l’m a big fan of the start-menu search features of Vista and Win7, as well as the Unity Dash (though I loathe the rest of Unity), but the more commands of the form +key I have to learn, the less likely I am to use an interface.

    @lelnet:
    >Launch a GUI app from an icon in a window manager, and all its diagnostic output goes either to log files or to /dev/null, as it _should_ by default. Launch one from a command line, and too often suddenly the xterm/rxvt/whatever that you’re trying to use for real work is cluttered with unnecessary and distracting status messages from programs that are perfectly capable, if they wanted to, of launching alert boxes for important notifications and remaining silent about unimportant ones.

    I’m more annoyed by this from the gui-side. Generally, when I launch a graphical application from a terminal, I opened that terminal window for the express purpose of running that, and only that application (often to get debug output), so I don’t mind it getting spammed with debug output. The problem for me is the tendency for output to go to /dev/null when run from an icon, so that I have to relaunch an application in a terminal after a problem and try to reproduce it.

  44. Apt-get install scrot on your machine and say “scrot desktop.png” to take a screenshot to desktop.png.

    Scrot is fairly powerful and can be configured at the command line to e.g., timestamp the screenshot names, generate thumbnails, etc.

  45. If you launch from the window manager, often the output will go to either .xsession-errors or to the TTY from which you launched X. (If you did that. I don’t know where it goes if you’ve got a display manager auto-launched at boot.)

    1. >I just tried scrot and I’m liking it more than I did xfce4-screenshooter.

      Noted. I’ll try it when my main machine is up again.

      (Evrerybody else: It’s been a rough day. An attempted graphics-card update failed about as badly as it could have short of something catching fire. Recovery tomorrow…I hope. Details in my stream on G+.)

  46. Your computer has core memory? I suppose you’re still wearing bell-bottoms and clogs, then? And Catherine still has Farrah Fawcett hair and Fairaisle sweaters?

  47. While everyone’s posting their favorite way to take a screenshot, here’s a classic from before I discovered imagemagick: xwd [-root] | xwdtopnm | pnmtopng > file.png

    @KV do you know about import? If you have convert, you should have it, and it’ll let you skip the xwd stage. Also, the format xwd generates is not PCX, as far as I know.

  48. I enjoyed the minimalist LWM — http://www.jfc.org.uk/software/lwm.html . All it does is:
    1) open new xterms
    2) minimize windows
    3) show you a list of windows to restore

    Memory usage was in the kilobytes! I tended to keep a small xterm window off to one corner to use as a “launcher”; eg. “netscape &”. Yes, this was a few years ago :)

    The project doesn’t have many updates, but then, I don’t think it needs many!

  49. @Justin Andrusk –

    Isn’t this for exploiting Windoze boxen? Betcha you can’t find one of those at Eric’s house at all.

    Besides, think of what would happen if you did manage to root one of his systems…. (HINT: remember the title of this blog….)

  50. >Isn’t this for exploiting Windoze boxen? Betcha you can’t find one of those at Eric’s house at all..

    Although Winblows is probably the prime target, it’s an exploitation framework that has a whole range of different target types such as Linux, Unix, Printers, Mac OS, VNC, etc.. See the link below for some of the Linux specific ones.

    As to rooting one of Eric’s home systems I think it would just take time, effort, and his express written permission ;) Along with possible social engineering one of his neighbors.

    http://www.metasploit.com/modules/framework/search?utf8=%E2%9C%93&osvdb=&bid=&text=linux&cve=&msb=

  51. > While the idea of a tiling window manager written in Lisp has strong attractions for me, according
    > to the docs it only seems to do the old and busted Xinerama thing rather than Xrandr. Since I plan
    > on going multi-monitor shortly (like, possibly tomorrow) this is a blocker.

    That’s odd, because I use xrandr from the command line to change resolution when attaching my laptop to a projector, or using VirtualBox to run old Windows versions for retro-gaming.

    Perhaps the docs are out of date, or perhaps my setup is atypical of StumpWM configurations because it’s built upon Linux Mint? Either way, xrandr works for me, at least for simple cases.

    1. > use xrandr from the command line to change resolution when attaching my laptop to a projector, or using VirtualBox to run old Windows versions for retro-gaming.

      Hm. OK, I’ll look into this when I have extricated myself from my current graphics-card mess.

  52. > As to rooting one of Eric’s home systems I think it would just take time, effort, and his express written permission ;)

    Or just parking in the street alongside his house. Doubtless that the WiFi is easily penetrated at Chez Raymond.

  53. Isn’t this for exploiting Windoze boxen? Betcha you can’t find one of those at Eric’s house at all.

    Eric mentioned once that Cathy has a Windows laptop she needs for work.

  54. “Yet somehow it never really stuck in the *nix world – Midnight Commander seems to be primarily the tool of older sysadmins who moved over from the Microsoft world to *nix, and very vew *nix applications borrowed this paradigm. I have seen one Debian package manager to borrow it, forgot the name, otherwise hardly any.

    Why?”

    The Debian pkg manager you’re thinking of is either aptitude or dselect, by the way. Basically, once you leave the world of simple command line programs and terminal-like applications based on interactive prompts, you might as well bite the bullet and use full-blown graphics. (Tile-based WMs fit neatly into this approach, BTW). TUI made a lot of sense back when people used character-based “glass terminals” and video modes, but nobody does that anymore. Maybe it could be useful when working across a network with little bandwidth available, but even there, “web apps” just have better semantics properties. Now, if only we had better languages than ECMAScript for programming on the web client…

    1. >Basically, once you leave the world of simple command line programs and terminal-like applications based on interactive prompts, you might as well bite the bullet and use full-blown graphics.

      I disagree. TUIs still have important uses, especially for programs you may have to run remotely over ssh. Trying to set up full-blown graphics in that situation is often more trouble than it’s worth for the amount of time you’ll spend on any one connection.

      This is why I stick with mutt as my mail reader. If I have to ssh to someplace that is collecting mail for me, I know it will work. Use of vi to remote-edit configuration files is another important case.

  55. ESR, I agree on this. However, this use case broadly reflects technical constraints of ssh and commonly found software installs The comment I was replying to was asking why TUI have not gotten more popular in the *IX world, so pointing to the feature set of ssh, or to the fact that mutt and vi are likely to be found on any given system is perhaps not so relevant.

  56. > Use of vi to remote-edit configuration files is another important case.

    Why not scp the file in, edit it, and scp it back?

  57. Why not scp the file in, edit it, and scp it back?

    Why not simply remote-edit with Sublime Text? /troll

  58. For irc, “erc” in emacs connecting to znc and bitlbee feeds all my chat sources into one interface.

    If emac’s terminal mode worked well enough, I’d get rid of terms, too. Then there is driving the web browser which I do with gnugol and other tools…

    How I feel about web interfaces to simple questions? Bring back netnews!

    http://nex-6.taht.net/posts/Screen_Space/

  59. > If emac’s terminal mode worked well enough, I’d get rid of terms, too.

    Check out multi-term – it’s pretty good, although not good enough for some (presumably) ncurses-based console UIs. In particular, don’t use it for apt-get :) But for most other uses, especially dev-related tasks like Git, it’s fine.

  60. THANK YOU for bringing i3 to my attention. I have been using tiling WMs for about a year now (after getting sick of unity) and have used dwm, xmonad, awesome, and qtile before i3.

    i3 has the best out-of-the-box multi-monitor support of any of them. Its workspace/monitor model – exactly one workspace per screen; zero or one screen per workspace – is The Right One. All it took was one simple xrandr command and everything worked correctly.

    It also has the simplest configuration file out of any of the WMs I have tried. What’s more, I hardly had to do any configuration because it comes with sensible defaults.

    Overall I am very happy with i3 and am now using it at home and at work.

    Highly recommended.

    1. >Highly recommended.

      Yeah, i3 pretty much blows every other tiling wm out of the water unless (like me) you’re such a huge fan of Lisp that stumpwm is interesting on those grounds alone.

      It’s not so much that any one thing about i3 is uniquely compelling (though the excellent multi-monitor support nearly rises to that level) it’s that everything fits. It’s tasteful, polished, and a coherent whole – well thought out, meticulously engineered, and even well documented. Makes the competition look like crude half-finished hacks.

      The only thing that’s missing is an option to natural-size windows when splitting a container. That is, instead of exactly bisecting the parent horizontally or vertically, I want the option to tell it to get the relevant size for the new window from the application’s size hint. Mainly so my terminal emulators and Emacs windows will try to make themselves exactly 80 characters wide.

      Adding this is on my to-do list.

  61. A way to get windows with 80 columns in i3 would still be really helpful. I had exactly the same experience. I didn’t try the xmonad module which seems to be able to enforce the main window to stay with 80 columns, because it doesn’t seem to be so elegant.

Leave a Reply to esr Cancel reply

Your email address will not be published. Required fields are marked *