top | item 27796443

Using IceWM and a Raspberry Pi as my main PC, sharing my theme, config and some

268 points| todsacerdoti | 4 years ago |raymii.org | reply

180 comments

order
[+] pygar|4 years ago|reply
Years ago, as a kid, when the only computers I had access to were cobbled together hand-me-downs and machines people would throw away I used to do this kind of thing. Like the author, I settled on IceWM after trying Fluxbox/JWM/FVWM/"Window Maker" and all the various forks with minor variations.

It was fun to tinker, but it's questionable if I learnt anything useful other then how to get hobby DEs working on ancient hardware. I guess tangentially I gained an intermediate knowledge of Linux command line tools and some networking concepts.

PuppyLinux [0] ended up being my choice for easy defaults after DSL [1] stagnated. I'm glad to see it's still going and has developed its own ecosystem. Even after I could buy reasonable computers, for a while I took some pride in squeezing performance out of budget computers but ultimately, now that I need to be productive to get paid, it's nice to have computers that "just work" with modern software.

[0] https://puppylinux.com/ [1] https://en.wikipedia.org/wiki/Damn_Small_Linux

[+] ineedasername|4 years ago|reply
You also gained a comfort level poking around in moderately complex system that could break if you did something wrong, and then force you to step through problem solving to fix it. This is a very important skill. (Though it's also important to understand when potentially breaking something, even temporarily, is low stakes vs. something to be avoided at all costs)

It's a skill I like to call a "video game mentality" that I think was probably influential in the rise of technology: video games gave players the ability to push buttons and experiment in all kinds of ways with a technological system but in a very low stakes environment.

I don't think I would have been nearly as comfortable poking around and tweaking system variables in my first computers running Windows 3.X and 95 if I didn't have years of experience poking around in other pixel-based environments in the form of videogames. I would break things, panic, realize that whatever it was, it was fixable, go through trial and error, learn to find other people and resources to help, fix the problem, and do it all over again at some point.

[+] j4yav|4 years ago|reply
I had the exact same experience, but a fairly clear flow into my career. My own tinkering led to a job at a local computer store fixing computers when I was about 15, and then a job as a build engineer at 18. This was in the 90s so there weren’t a ton of college students with computer experience to compete with, and I think there was more openness to non-traditional candidates.

My last job was product director for a major CI/CD platform, so there’s a pretty clear breadcrumb trail all the way back to tinkering with Linux on old hardware to now.

The Linux command line and scripting was part of it, but the real deeper lesson was that computers are understandable and if you are persistent you can fix or improve nearly anything, or assemble something new and useful by building on what’s available to you.

[+] RuggedPineapple|4 years ago|reply
>Years ago, as a kid, when the only computers I had access to were cobbled together hand-me-downs and machines people would throw away I used to do this kind of thing. Like the author, I settled on IceWM after trying Fluxbox/JWM/FVWM/"Window Maker" and all the various forks with minor variations.

I had one of those original EeePC's years ago, 900 mhz celeron in like 2008, 800x480 screen, just woefully out of date. Ended up running Fluxbox just because of ram usage. With an actual WM it couldn't stream The Daily Show smoothly. I really do love playing with low spec systems.

[+] daniel_iversen|4 years ago|reply
> it's questionable if I learnt anything useful other then how to get hobby DEs working on ancient hardware

I did similar things, and on one hand I feel it’s ok that it’s not all “useful” - it was a hobby after all, but on the other hand I do feel it had benefits - you learned patience, creative thinking, problem solving, and working on those projects for a long stretch of time almost has a meditative effect I felt. I’m sorry that a lot of modern kids probably don’t get to experience this as much as everything is pre-packaged, system-on-a-chip, non-fixable etc. (And people are more careful of how they dispose of computers due to privacy).

[+] lelandbatey|4 years ago|reply
Wow, Damn Small Linux, what a throwback! That was how I was first ever able to run and interact with a Linux system back as a teen. I had no computer with Administrator access, but I found a zip file with DSL, a QUEMU.exe, and a .bat file which would run QUEMU and boot DSL, cause I couldn't figure out how. I never even got it to save to a persistent disk, I had to boot and re-do all the changes I'd figured out the prior time. What an amazingly educational little thing that was!
[+] earksiinni|4 years ago|reply
Wow, this took me down memory lane. Puppy Linux and its crazed Windows 95-esque dialogue boxes (remember Puppy Unleashed?) will forever hold a soft spot in my heart.

Not sure how it is anymore, but Puppy Linux circa 2008 was like the GeoCities of operating systems, glorious in its own unpolished way. Vector Linux, too, which I believe was Puppy's ancestor.

[+] LAC-Tech|4 years ago|reply
> Years ago, as a kid, when the only computers I had access to were cobbled together hand-me-downs and machines people would throw away I used to do this kind of thing.

That was me well into my 20s :) Win2k broke, and I was broke, so the only option was to install linux.

It paved the way for me to get into programming, not so much shell scripts, but just the powerful idea that computer systems were malleable things you could change - something not really obvious for those of us who cut our teeth on MS Windows.

[+] winrid|4 years ago|reply
Same! Ubuntu 6.04 with Gnome worked surprisingly well on a 450mhz PIII.
[+] an_opabinia|4 years ago|reply
> it's nice to have computers that "just work" with modern software

Yeah I never understood people who work with computers all day economizing on their computers. Even from scalpers you’ll pay ~$6500 for top of the line parts and peripherals, which is about the cost of a high school student’s violin.

[+] prvc|4 years ago|reply
>KDE is my desktop environment of choice. KDE5 is rock-solid, configurable in any way possible and works great. It treats you like a responsible adult instead of a child like GNOME does these days, and after XFCE switched to GTK3, the RAM usage is on-par, more often than not a bare KDE install (Debian or Arch) uses around 300MB ram. This is with Baloo (search indexer) and Akonadi (PIM database backend) disabled.

The GNOME Foundation's supposed rationale for removing basic functionality from its desktop is to help inexperienced users, and international users. However, those are precisely the same users who are more likely to have a shortage of computing resources. GTK's bloat is really indefensible.

[+] nextos|4 years ago|reply
If you are reasonably experienced and constrained by resources, a great option is to use a window manager without a desktop environment.

That's my setup because it has fewer moving parts and lower latency, as there are only a handful of processes running and no compositor.

[+] zdragnar|4 years ago|reply
> and international users

I might be mistaken here, but it seems to me that the international users who want a simple experience are already well served by smartphones (android or otherwise).

The international users who are going to install linux on a laptop are the tinkerers and fiddlers and the self motivated learners who aren't going to be motivated by a dumbed down, inaccessible interface.

[+] andrekandre|4 years ago|reply
its kind of ironic if you think about it, youd think removing features and simplification should allow for more optimization not less...
[+] stjohnswarts|4 years ago|reply
Yeah but if you don't like it, you can just leave it alone and it's perfectly functional. That said I use Pop_OS! which is gnome based and fine. I like the defaults just fine. I have used all sorts of DE over the years, in the end I decided I didn't really care :) . KDE is fine, Gnome is fine, xmonad is fine.
[+] lobstrosity420|4 years ago|reply
The idea that the GNOME DE or GTK3/4 are resource intensive is a meme with little basis in reality.
[+] zxzax|4 years ago|reply
I find it pretty disappointing that these type of articles and the resulting comments like yours often can't seem to praise something like IceWM or AwesomeWM without also bashing GNOME or XFCE or something else because of "bloat." Who cares? Do you even care? I don't think you do, you'll just delete that desktop and move on and use whatever you want, and that's the whole point.

Also, your characterization of GNOME's rationale is totally wrong. The goal was never to make a desktop with no features, it was more to make a desktop that is streamlined towards certain functionality. If that's not for you, then use a desktop that's more streamlined towards what you want. There's plenty to choose from. What is the real problem?

Edit: I also want to address another common misconception that I see -- the GNOME Foundation does not direct development in a top down fashion and does not impose any rationale on the project. If some feature was removed, it was probably because an individual volunteer working on it decided that it wasn't worth spending time on that anymore, possibly because the need was better filled by a different project.

[+] marcodiego|4 years ago|reply
I used a Pi 2 as a desktop from 2017 to the end of 2019. Apart from using window maker, I didn't made many changes to use it as a desktop. Also, since it is an under powered machine by today standards, using it as a desktop gave me the feeling of a 90's workstation. I even compiled the latest available GTk 1.x version and xmms for a better retro feel.

It is possible to use the modern web if you keep the number of tabs low and switch heavier sites like gmail to the html mode. An ad blocker is needed and Youtube is watchable if you use the h264ify extension so it uses the hardware decoder and avoids modern video compression codecs.

I could even run libreoffice with Portuguese orthographic and grammatical checkers. It is slow, you can't run other tasks simultaneously but it works.

Want to watch movies? If it is 1080p or smaller encoded with h264 it is totally doable. Even streaming in 720p is doable. You won't be able to easily watch netflix though.

So, yes a 2GB Pi 2 is good enough for light browsing, light text editing, listening to mp3, watching movies and compiling software from early 2000's.

Things you can't comfortably do with it:

  - Meetings: encoding and decoding with any codec that is not supported by the hardware is just too slow to be usable.

  - Video editing: same as above. Also not enough RAM.

  - Compiling large code bases: libreoffice and mozilla will probably fail on anything with less than 8Gb RAM. I could compile OpenCV on it, but it took hours.

  - Keep many tabs open: you can if the sites are wikipedia-like. Anything more complex and the system starts swapping. Magic Sysrq-f is your friend in such situations.

  - Modern IDE's: no way. Try gnu-nano or emacs/vi. Want to develop GUI apps? Use Lazarus-ide. Anjuta+Glade probably work stably with recent Gtk+3.x versions.

  - Games: at the time I used it, the driver didn't support desktop OpenGL. Emulators for old consoles ran great, emulation station ran great, it is possible to run Quake but that is it.
[+] msk-lywenn|4 years ago|reply
I’ve been trying to use a pi4 as a desktop, with xfce, and was a bit disappointed. It’s usable but less than an old iPad. So I was surprised you got by with a pi2! I’ll have to give that h264ify a go.

For games, I was super pleasantly surprised to rediscover old open source games that I had completely forgot and actually love: frozen bubbles, neverball and monsterz :)

[+] geokon|4 years ago|reply
How do you handle multitasking? Do you shut down what you're doing and then switch to something else? I feel this creates a lot of friction. It could be good in a way b/c you don't get easily distracted :)

I remember in earlier KDE5 version you could suspend activities (in the KDE world this is sorta similar to a desktop - or a group of running applications). This would free up a lot of resources and could mean you can have a lot of applications "open" at once, but they're all in a frozen state. At some point this features was removed. I'm guessing it didn't play nice with a lot of applications. But I haven't been able to find anything equivalent.

You can sorta accomplish something similar by going into the task managed and suspending a task, but it's not ergonomic. Maybe someone has a good alternative?

[+] deckard1|4 years ago|reply
You can't really compare the Pi 2 to a 4. That's like comparing a 486 or Pentium to a Ryzen.

The Pi 4 is a serious device. 1GbE, USB 3.0. It demolishes the previous Pi devices across the board in performance. I think this is where people get confused by others using the Pi4 as a NAS or server or whatever. There is this misunderstanding of just how equipped the Pi is today.

> Video editing: same as above. Also not enough RAM.

I wouldn't even do this on my Macbook Pro with 16GB of RAM. Anything less than a workstation with gobs of RAM is just asking for a headache. Unless you're just chopping together the random video for the family once a year.

[+] everdrive|4 years ago|reply
> - Keep many tabs open: you can if the sites are wikipedia-like. Anything more complex and the system starts swapping. Magic Sysrq-f is your friend in such situations.

I ran a Raspberry Pi 3 as a desktop for a little while, and I believe I ran into the same problem. In most of my Linux installations, I format the drives without swap. I've never had a problem with it. But, I didn't know how to disable swap on the pi3.

[+] bear8642|4 years ago|reply
> but that is it.

The python demo games that come pre-installed are quite fun. The list includes snake, 15-slide puzzle, and fun flood it clones

[+] jejones3141|4 years ago|reply
Amen about compiling large codebases. It took the better part of a day to compile MAME. zram is your friend.
[+] brody_hamer|4 years ago|reply
> Using noscript to disable javascript in Firefox has also helped tremendously.

Id love to see a browser extension that disables JavaScript after its consumed a set number of cycles.

A page wants to asynchronously load a sidebar, great. A page wants to continuously resize and repaint an affixed element? Nope. You’re cut off.

[+] noisy_boy|4 years ago|reply
What I would like to see is a tree based handling setup. Everything my bank opens (direct child or descendent): let it through even if it is a usually blacklisted domain because, yiu know, banking is kinda important for me. Same domain via a website I couldn't care less about, blacklist away as per rules.
[+] artificialLimbs|4 years ago|reply
Considering setting up another account to upvote this again...

Why does my machine, when the lid is closed with 1 browser tab open, need to spin the fans at full blast? It's a no from me.

[+] euske|4 years ago|reply
What kind of apps that a typical Linux programmer would need to run these days? For me, they are

- terminal (shell, editor)

- web browser (email client, file viewer, etc.)

- clock

With these, I only need a bare minimum window manager (fvwm2 in my case). In my view, KDE/GNOME are made not to scare away beginners and there isn't much productivity gain in using these environments. Once you're used to using Unix/Linux, you can graduate them and start using a more lean setup (while you don't have to, of course). One thing I can see might be handy is the System Settings / Control Panels apps. Other than that (and inertia), what are the reasons that people stick to these environments?

[+] pjmlp|4 years ago|reply
You just replicated my DG/UX experience with IBM X Windows terminals in 1995.

Maybe we don't have to be frozen in time and rather use modern tooling?

[+] jude-|4 years ago|reply
I have the same question. The longer I've used Linux as my main OS, the less I've needed a desktop environment. My setup for the last half-decade has been basically the same as yours, and I've found it to be more productive than KDE/GNOME (or Windows or MacOS) ever were.
[+] bigpeopleareold|4 years ago|reply
I use KDE now, but not much of it really. I do mostly the same things - terminal/browser/some utilities/text editor. I used lighter WMs in the past and they were interesting, but I didn't have time to sufficiently get past the experimental stage with them. Since I really don't do much, it's easier to just get something with easy and stable defaults with only a few changes I need for a setup.
[+] swiley|4 years ago|reply
I like to have dvcs and a terminal multiplexer in the VTE. I do email over ssh and pdfs in mupdf which is way lighter than the browser. I also mess with gEDA some.

But yeah, gnome etc is overkill if `sudo vim etc/blah` doesn't scare you and you only speak english.

My gf does freak out editing networks and such and also needs her thai IME to just work so she runs gnome.

[+] herbst|4 years ago|reply
I run atom and terminator (a tiling terminal emulator) in my dev environment. Its rather heavy for 'just' development. On the other side it runs without any issues on my T420. Which is a cheap old laptop.

I also love Gnome. For me this is the best, not in your way, desktop environment ever done. For me however :)

[+] cortesoft|4 years ago|reply
Don't you also need to run whatever you are programming? So a compiler/interpreter, REPL, maybe a database, docker, k8s, etc? I assume most devs still want to be able to compile and test locally?
[+] LeoPanthera|4 years ago|reply
I've been using lxqt on my Pi 400. It's the closest thing to a "light" KDE that I can find, and I like it a lot. The only problem is that the version on the Raspbian repository is quite out of date. You can get a slightly less old version by enabling backports. I wish there was a good rolling distribution for the Raspberry Pi. openSUSE Tumbleweed is probably the best but it's been glitchy for me and I haven't figured out how to netboot it.
[+] jah|4 years ago|reply
I ran into two problems when trying to switch to a Raspberry Pi 4 8GB as a desktop replacement in mid-2020:

- A noticeably laggy screen update when running urxvt. Any action which caused large amounts of text to scroll on the screen (e.g. a file listing or paging through a man page) would cause a bit of a visual stutter. I was running with with XFT fonts enabled, so maybe that was a contributing factor. Web page scrolling also seemed to lag a bit too if I recall correctly.

- Lack of gamma support for blue light filters such as redshift or f.lux

I'm crossing my fingers there are improvements to these areas in the future.

[+] sprash|4 years ago|reply
The general perception of IceWM as a minimalist Windows 95 clone hides the fact that it is indeed a very powerful fully fledged tool for window management. Just icewm-winoptions file and the icesh program enable so much opportunities for automation, it makes the average tiling window manager look tame and primitive.
[+] cpach|4 years ago|reply
When I went to senior high back in the early 00s I shared a flat with three friends. None of them had their own computer. I had a spare IBM PC with an old Pentium processor which I lent to one of my room mates. I installed Debian, IceWM and Abiword for her. She had no previous experience with Linux, but with this setup she was able to write her school essays and save them to floppy in order to print them out at school. (We didn’t even have a router in the flat.) It worked really well and was much more stable than Win 98/XP :)
[+] Syonyk|4 years ago|reply
That's not the hard part of using a Pi as a desktop PC...

I've been using them for light to moderate desktop use for years now. The important things in desktopping a Pi, as far as I'm concerned:

- Fix the storage. The SD card is fine for a toy. It will not withstand actual daily use, either in "delivering sane performance" or "handling a lot of random writes without dying in a year." Get a USB to SSD adapter and a cheap 32GB or 64GB SSD from eBay - doesn't have to be fast, doesn't have to be new. It's radically better than an SD card in any use case that resembles desktop use. You can either boot straight from USB, or, to improve compatibility with weird USB to SSD adapters, boot from the SD card, mount root from the SSD, and use the SD card for swap or something (see below).

- Enable zswap if you're not on a 4GB or 8GB Pi4. It should be a module included in the Pi kernel now (I had to argue for a while to get it included). This is not zram - this is zswap. There's a huge difference. It's a compressed swap system that can flush out old or poorly compressible pages to the actual swapfile - which, since you're now fronting it with a compressed swap region in RAM, can be over on the SD card. The bulk of the stuff written to it will never be used again, unless you're just massively overcommitting RAM, at which point nothing really will help. I think around the 5.x kernels, z3fold starts working, though I've not seen a real practical difference between z3fold (up to 3 compressed pages per page of RAM) and zbud (only two compressed pages), as long as same filled pages are enabled - that will crunch a page of 0s down into a "Got it, all 0s, done!" note and not bother wasting space compressing it.

- Set the governor to performance. 'sudo cpufreq-set -g performance' The stock governor is really bad about ramping up, and leads to lag in typing, especially if you're using the atrocities that are modern "desktop" apps (Electron). Eventually, the system will spin up and do something useful, but you improve the performance and responsiveness rather substantially by just pinning the cores to their fastest speed and letting them stay there. I'm sure there's some measurable power difference doing this if you're concerned about the absolute lowest power, but it's not substantial, and "race to idle" solves a lot. If you're using a Pi as a desktop, try it - you'll like the change.

- Use adblockers. It's amazing how much CPU time the internet spends on stuff that is advertising, tracking, and generally evil. Most websites behave a lot better once you remove that garbage.

Otherwise... once you've done that, they're actually quite capable little systems! The Pi4 with 4GB or 8GB is the best option right now, and for most people I'm not sure the 8GB really gains you much - I have one, use it fairly heavily, and rarely see any RAM pressure past about 4GB. But it does make up for some slow disk.

I've written about some of this more extensively over on my blog over the years, if anyone wants more details - link is in my profile.

[+] BasicObject|4 years ago|reply
I've never needed more than IceWM. Great window manager. Easy to configure too. Glad development has picked up on it.
[+] lifeisstillgood|4 years ago|reply
My dumb, barely related question - how far away is VR/AR from having the necessary pixel resolution to be able to have a fake emacs/vim floating in space three feet from my eyes?

At that point there is a change in the ergonomics and location of coding / most desktop work.

[+] squarefoot|4 years ago|reply
What is the status of video acceleration on the desktop, wrt surfing the web or playing videos from the browser or a player? I used the various Raspberries as main media player with Kodi for years with great results, but the desktop experience using Raspbian+XFCE has always been awful, I mean the slugginess due to lack of video acceleration when playing videos, which otherwise is present and works great in Kodi; normal desktop usage was fine. It should be related to the video acceleration being among the closed blobs that not all distros include, but I thought it had been already reverse engineered before. My last attempt at it was about 6 months ago though.
[+] gorgoiler|4 years ago|reply
Raspberry Pi is a great form factor with popular, documented hardware support for doing weird IO while consuming very little power.

Browsing the web in 2021, on the other hand, requires Watts.

> Using noscript to disable javascript in Firefox has also helped tremendously

It’s this kind of thing that made me switch to a Lenovo M93p for my desktop. It’s a great form factor with perfect Linux hardware support. You can also feel good about recycling someone else’s unwanted hardware.

I really wanted the pi to work out but it just couldn’t handle the JS heavy stuff I use in the day job (webmail, task-tracking, information management / CRM.)

[+] war1025|4 years ago|reply
We've been using a Raspberry Pi400 (the computer in a keyboard model) as a media center pc for a little over 6 months now. It plays amazon and netflix videos fine, handles the netflix browsing UI pretty well, but has been rather painful for selecting shows on Amazon for a few months now. Not sure what they changed because it worked great when we first got it.

I'm not sure whether it was the best choice or not, but we figured we'd fall back to a regular pc if we needed to, and so far we haven't been bothered enough to do that.

[+] sudhirkhanger|4 years ago|reply
I feel like as soon as you start using Firefox and Chrome on these highly customised low-powered machines the power/ram saving customisation goes down the drain.
[+] dysoco|4 years ago|reply
There is something appealing about using a low-resource PC with a limited selection of software installed in order to be free from distractions that could otherwise stop me from being productive and write some code or learn something.

I know the problem is mine from not having discipline and not my modern desktop's fault for being able to run games, but still, I almost want a separate PC for this.

[+] rcarmo|4 years ago|reply
I mostly just used OpenBox for a long time, but my 8GB Pi 4 is running Ubuntu MATE and it works great as a desktop driving a 29” ultrawide (1080p tall).

I’m actually running it from a Class 10 SD Card (external SSDs require unwieldy cases for the place it needs to slot in), and speed is fine for Firefox and VS Code use.

[+] swiley|4 years ago|reply
I did this in college with FVWM but I also had a (less powerful) netbook.

Computers are way cheaper if you know Linux.