The best kittens, technology, and video games blog in the world.

Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Sunday, September 13, 2026

First impressions of Omarchy Linux

Cat image generated by Grok

For a very long time, I used Windows for gaming and OSX for everything else, but recently there's been a lot of hype around the Omarchy distro by DHH, so I decided to give it a quick try.

My first impressions are awful.

How to try it

This part is actually very smooth. You can go to the Try Omarchy website, download a small launcher, and run it as a QEMU app. This is a much easier experience than booting from USB sticks or setting up a dual boot.

The launcher / installer asks you some basic questions, but notably fails to ask you about your keyboard layout and region, or to autodetect them from your existing system. So it decided to use a UK QWERTY keyboard without asking, even though the system uses Dvorak. Dvorak isn't too common, but various regional keyboard layouts are, so it's still a stupid thing to miss. And in any case, why the hell did it pick UK QWERTY and not at least US QWERTY?

Inside Omarchy

I'm running a 4K monitor, and Omarchy decided not to do any kind of UI scaling, so all the text is unreadable. To make matters worse, it uses an extremely low contrast theme (light grey on darker grey). I even did an accessibility check from a screenshot, and the contrast ratio is just 1.52:1. Accessibility recommendations are 4.5:1, and it's painful to read even when resized, let alone when everything is already too tiny.

So I already had two things to do before I could even really try the system: UI scaling and keyboard layout.

Launching apps

You can use Win+Space to start the launcher, and it has, or can download, a browser (Chromium) and editor (VSCode), the two most important apps. Settings, on the other hand, are completely missing. There's no way to change the UI scale, keyboard layout, or do any of the basic things you'd expect from a settings menu on every other operating system ever made (probably even GNOME and KDE have them, but it's been ages since I last used either).

Default editor

I tried to look for some input settings, and the best I could do was edit the raw input.lua file. This isn't a serious solution for such a basic thing, but I tried. And Omarchy went full retard and launched Neovim.

I cannot think of a worse default choice for any operating system in the history of operating systems. I tried to close it, but while all the other windows had an X in the corner to close them, Neovim's window somehow lacked one.

Let's list all the issues at this point:

  • completely wrong UI scale
  • dramatically low contrast, going against all accessibility guidelines
  • wrong, vibe-guessed keyboard layout
  • utterly retarded editor choice
  • unclosable window

The fails just kept piling up higher and higher.

Editor settings

I somehow remembered how to exit Neovim, on the wrong keyboard layout and unable to read anything in its window.

Two settings I could find in the launcher were Editor (Setup > Defaults) and Editor (Install). OK, I can at least switch to VSCode.

But to change the keyboard layout, I still needed to edit input.lua. I uncommented the file, then tried a lot of combinations of layout and variant, like "dvorak", "en / dvorak", and a few others. Nothing worked, so I asked AI, and it finally told me the right combination was "us / dvorak".

That worked, but I got a popup about two errors in some hl.gesture stuff that had nothing to do with what I edited. I can comment it back out, but I ran into another issue - that error message wasn't possible to select and copy&paste! How the hell are people supposed to google or AI error messages if they can't be copied?

At least copy and paste between Windows and Omarchy worked just fine - that was helpful for getting Omarchy running at all.

Operating system with sane defaults

Anyway, this was a good point to stop this experiment. Yes, I could vibe config my way out of it, and get UI scale, contrast, and everything else working. But Omarchy proclaims itself as "a distribution that ships Arch + Hyprland with sane defaults".

By now, it's clear to me that the defaults are anything but sane, being a mix of things that are unimplemented (settings system), questionable (no keyboard layout selector), broken (UI scaling, contrast), and retarded (Neovim). If I wanted vibe coded Arch Hyprland distro, I'd likely be better off vibe coding it myself.

Maybe they'll make good use of that $18.5m in funding to get it all to a saner state. But in its current state, 2026 is also not going to be the Year of the Linux Desktop.

Wednesday, July 01, 2015

Linux ecosystem in 2015 is still shit for ideological reasons

The Naming of Cats by litratcher from flickr (CC-BY)

My gaming box used to be dual boot between Windows 7 and Kubuntu but I ran into a really bizarre failure mode - something weird happened to my primary SSD that made BIOS hang up during POST - disk was otherwise perfectly fine, I could boot to LiveCD and connect it with SATA hotswap, and after I copied data from it and formatted it it works fine again.

I was too tired after debugging all this to bother with setting another dual boot system, so I just installed Windows 7 on this box, as I mostly use cygwin+sshd for stuff I used to dual boot to Kubuntu anyway.

Still, there's some things that OSX, Windows, and cygwin can't do, and it would be nice to have some kind of access to Linux environment every now and then.

And here's the problem:
  • Linux LiveCDs I tried come with nouveau driver
  • nouveau driver never worked, and it will never work, it's not just slow, it invariably crashed the LiveCD over and over a few minutes after boot
  • I can manually edit boot options to specify nomodeset every time I boot the thing. That stops crashing but instead I get a hideous low resolution and barely usable system - something barely tolerable when I just need it just for some data recovery, not for anything more.
Well, not a big deal. I'll just use a different LiveCD, right? Well, no. Googling was futile, and against all my experience I asked on one of stackoverflow spinoffs. And again - mods invariably turned to be total douchebags and closed the question. Like it happens every single time these days. The fate of stackoverflow which went from zero to really good and then got crushed by mod abuse into its current worthless state - pretty much the moment they decided to create spinoff sites - it would make a good sad Pixar movie. These days I'd probably have better luck asking technical questions on youtube comments.

Anyway, as far as I can tell, there's just no way to do this. The best thing I could find are some hacks to setup a LiveUSB with persistent data, and install working nvidia drivers there. And it's always some massively error prone process with 20+ steps, half of them specific to whichever particular version of the system the instructions were made for, and probably doesn't work if I try it on the most recent one.

It's really ridiculous. Ideological purity is cute, but not if I end up unable to use any Linux whatsoever.

Why do you think desktop Linux lost to OSX so quickly? It's just shit like that. This is merely another example of so many. In Linux world dumb ideology triumphs over basic usability.

In theory Linux on desktop should have won by now. At least up to OSX usage levels of "won". Linux development environment is vastly superior to OSX's, user interface can be better than OSX (except no distro ever bothers setting up sensible defaults, so it takes forever to get there), and it has much better compatibility with Windows ecosystem.

And in spite of all that, almost nobody uses it, and that never changed. Technology is there (Android easily won phone wars, and that's Linux too), and Microsoft's repeated blunders with Vista, Windows 8, etc. created opening after opening for alternative systems to emerge, but Linux distros didn't even try to make something that's just usable. Even technical people just pay extra for OSX instead.

Nothing indicates that it will ever change.

Friday, December 10, 2010

My Christmas wishlist - redcar and desktop Linux

And we are back by fofurasfelinas from flickr (CC-NC-ND)

Who would have thought my blog would be so high on OSX vs Linux. Well, this subject never gets old, so here's another instalment.

For personal reasons which Facebook aptly calls "It's complicated" I haven't had much time to update this blog recently.

I have so many things I'd like to write about - but marginal utility of time keeps getting in a way - with a lot of my previously free time no longer available, I have to make decisions which of too many things I'd like to do I should drop or postpone, hopefully starting from the least important of them.

And just like nearly everybody else, I keep confusing important with urgent - this blog is never really urgent - no cat will die if I leave writing for another day or week - but it surely is not the least important of all things I could be doing, or have been doing in the last month or so. So quadrant two, here I come!

Macs suck

GPU in my MacBookPro failed, so I'm temporarily back on Linux, on a desktop box which I was using mostly for gaming.

I will probably stay on Linux for quite some time, even after I get my laptop back. And they're really slow with repairs - I will forgive them only if they keep my hard drive undisturbed like they promised - my backups were not terribly up to date (about a month old) and what's worse - didn't include everything (just imagine - I don't have kitten picture downloader compatible with the most recent flickr API and I have to download kittens manually!). Now I backup everything to two independent external USB disks just to be sure, so I was prepared for this kind of backup failure, but I don't backup as often as I should - mostly because dual backup is such a pain.

Anyway, all cost of switching from one system to another must be paid up front - all the time necessary to setup and upgrade the new system, to change my habits and so on. Once the cost is paid (and with this post it will mostly be so), I can as well continue using it - so I might very well wipe out OSX and install Ubuntu on the laptop once I get it - I haven't decided it yet.

Well, first here's the list of the most important things how Linux (kUbuntu, old install upgraded to 10.4) is way better than OSX:
  • Polish Dvorak keyboard, thanks to divide. I kept meaning to write one for OSX, but never quite did it. You can write keyboard layouts for OSX as XMLs these days, but sadly there seems to be no way to get XMLs of existing layouts as starting point.
  • apt-get. Seriously, MacPorts is such a pile of fail compared to apt-get, it's just ridiculous. Imagine that - with apt-get you can upgrade system without breaking anything. It just works! I know, it's crazy!
  • I mostly develop for EC2, so quite a few things are easier on Linux than on OSX.
  • konsole and virtual desktops completely destroy Terminal.app and Spaces.
Sadly from this point it only gets worse.

Rum Tum Tugger by Trish Hamme from flickr (CC-NC-ND)

Desktop Linux sucks


When you keep using the same system for long, you stop noticing some problems - you just get used to them, just like Congolese got used to malaria.


And this is actually a big fucking deal. People "in charge" of desktop Linux - be in GNOME, KDE, or whatever - are mostly old-timers. They got so used to all the fail present in desktop Linux, it doesn't seem like a big deal to them.

The last non-Linux system they used regularly is probably Windows XP or something even older - they have only very faint idea what progress the closed source world have made with OSX and even Windows 7. Did I ever mention I sort of like Windows 7? Not for development of course, but you just don't see fail jumping at you all the time like it used to be on XP and Vista.

Anyway, the first impression I had once I switched from OSX to KDE was:
Are they fucking trying to reimplement Windows XP here?

I am deeply disturbed by what I've seen. KDE not only lacks all the awesome new stuff you get in OSX, it also lacks all the awesome old Unix stuff you get in OSX.

Let's start with the basics - a text editor. Control-A and Control-E don't work. A shortcut as convenient as Control-A instead does something as incredibly useless as selecting entire document. Control-E seems to do nothing. Just like Control-D. Control-K deletes entire line, which is broken, but at least only halfway so.

Fine, whatever, I thought - Windows noobs also use KDE, and if they want such broken shortcuts it's their problem - I'll just go to keyboard settings and switch to Emacs mode.

It's such a shame I haven't been recording myself, as the very moment I realized they removed Emacs mode I produced such an awasome stream of Polish and English swear-words that you could write a research paper about bilingual cursing based on it.


And amazingly, even mcedit lacks Emacs keybindings these days. How is it even possible that even the supposedly most noob-friendly operating system OSX has standard Emacs keybindings, but Linux doesn't even support them as an option any more? It doesn't even seem possible to set them up shortcut by shortcut.

At least they still work in konsole+bash, and in gtk-based programs if you add gtk-key-theme-name = "Emacs" to your ~/.gtkrc-2.0.

Unfortunately even that much barely works. In some contexts Control-F means forward, in some it means search. Control-W changes meaning between close tab and delete previous word - it's an unreliable mess.

They way OSX does it is simple - one modifier key (Control) is used for text editing, another (Command) for application control. I understand Linux cannot really follow this way, but would it really be that difficult to have a single global mapping between key presses and actions?

When you think about it most programs use the same shortcuts:
  • text editing (control-A, control-E, ...)
  • copy&paste (command-C, command-V, command-X)
  • undo stack control (command-Z, command-Y)
  • document/tab control - save (command-S), load (command-L), close document/tab/window (command-W), new (command-N) etc.
  • switching between tabs - command-1/2/3/..., control-pageup/pagedown etc.
  • application control - let's not get into application/window/sdi/mdi mess, there's time for everything and it isn't now - mostly quit (command-Q)
  • window control - maximize, minimize etc.
  • system control - like switching between windows/applications, making screenshots, locking screen, some dashboard, start menu, volume up/down/mute - the list is pretty long, but they're global by definition
There are very few applications that really need more than a few important shortcuts to this list. Some of them are important applications (Office, Photoshop, Emacs), but you'll be mostly using these anyway.

I would be surprised if GNOME/KDE lacked infrastructure for this (what's gtk-key-theme if not half of this?) - it just that nobody bothered doing this consistently. Or if they did, their efforts were blocked by some old-timer whose last recollections of life outside desktop Linux is Windows 3.11.
My Christmas wish: Good keybindings for Linux that won't make me miss OSX, or Linux from a decade ago.

It cannot be that hard, as Linux used to have those before losing them very recently.
Kočka z Mincovní by abejorro34 from flickr (CC-NC)

Redcar

Let's continue the story. Kate and gedit were various levels of unusable due to keybindings, as was mcedit in Emacs mode which I mostly use over ssh instead of real Emacs. I could try the actual Emacs, but after a few years of TextMate it just isn't the same. Not even close.

Fortunately the totally awesome Daniel Lucraft wrote a TextMate-like editor in JRuby redcar. Every time I check it it gets more and more awesome, and it's safe to say it's already far better than any other editor you can get on Linux.

Of course I wouldn't be myself if I didn't start bitching. So here's my quick list of easy improvements to redcar.

Any of these will make a great Christmas gift for me:
  • Context menu absolutely needs TextMate-like "Filter through command" features and all its options (mostly "input selection / output selection", "input selection / output create new document", and "input document / output create new document", but others are occasionally useful as well). This is easily one of top five most useful features of TextMate ever and it's really not that hard.
  • Getting a lot of common bundles/plugins/snippets/whatever-else-it-is-using with a single command. Batteries included you know.
  • Tab size control really needs to be visible by default. I'm sure this is one of the first thing requested by half of the redcar users, so why not just do it?
  • Support for Control-A and Control-E, seriously. Patch on github.
  • Syntax highlighting often breaks. Now making it unbreakable would require massive architectural charget, but can we at least get easy refresh shortcut, or refresh on switching tabs (if edited since last switch)? Most documents are not that huge, so it shouldn't be a major performance problem, right?
  • Does it really need to create .redcar directories everywhere? It creates ~/.redcar/ already, won't that be enough?
  • Unixy interface like mate command. Right now starting redcar ~/some/dir from console makes it stay there and keep producing java.lang.IllegalArgumentException stack traces. It's definitely a good thing for developing redcar, but would it be possible to get some command line switches to make redcar fork away like mate command does?
  • TextMate-compatible Control-K - it should delete everything between cursor and end of line (right), or delete linebreak if cursor is already at end of line. Right now in redcar pressing Control-K multiple times doesn't do anything useful. Patch on github.
  • Can we get some sort of 2D selections? Even Firefox has them for tables with control-mouse. I understand they might be too hard architecturally, but it would be pretty awesome. Ctrl+B does exactly that already.
  • Control-T (search file) should ignore spaces like in TextMate. I know this behaviour is irregular, but it just makes so much more sense to me to search for "login ctr test" like in TextMate than for "loginctrtest" redcar wants. By the way history for Control-T is pretty awesome.Patch on github.
  • Search and replace within selection.
  • Not in TextMate but would be awesome: support for filtering by full path with Control-T, like login/index.
That was a lot of bitching - but then isn't this exactly what this blog is made for?

Yes, I'm aware of official redcar wishlist and I might convert some of this bitching to requests and maybe even - imagine that - patches (I've been doing quite a lot of JRuby lately, so I'm no longer scared of JVM). Just not now. Marginal utility of time, "it's complicated", delegate if possible and so on... You know, the usual excuses for not contributing.

EDIT: I fixed a few easy ones at github.

I'm not done yet


Silly me, I thought I would be able to include my Ruby standard library wishlish in this post - this will have to wait, there are two weeks left so I might find an evening for that as well - and that will be a ridiculously long list - and judging from reactions to my preliminary post about Ruby stdlib it will make everybody hate me even more than they hate me now.

So just a few minor additions to my Christmas wishlish, just in case robot Santa or spirit of Kwanzaa or your personification of gift giving of choice happens to be deluded enough to think I was nice enough that my wishlist so far is somehow not yet long enough:
  • Is there anything like OmniFocus for Linux?
  • Sound system on Linux is still broken in 2010. Skype mysteriously cannot find my microphone, even after spending far too much time trying various alsamixer and Skype options. Rebooting to Windows on same hardware - zero problems, works out of the box. Can we please get this?
  • System settings are just dreadful. Why cannot we have everything in one place, instead of some options in General, some in Advanced, some inside various programs, and some who knows where. This has always been a big weakness of Linux, but total lack of progress is disturbing. Even something as simple as telling Linux to automatically mount an external disk is nontrivial - in dolphin there's nothing like it in context either on disk icon on sidebar, or disk mountpoint directory in /media. Searching "usb" or "external" in system settings also returned nothing. It turns out I need to switch to "Advanced" tab and search for "removable". I seem to recall this used to work far better than that, but maybe that was GNOME. Is anybody working to improve this situation?
By the way is there any major reason for using KDE versus GNOME these days? It used to be so that GNOME had much worse Windows-itis and hypernoobemia than KDE, but these days I'm getting the impression that noobness rankings changed from Mac > Windows > GNOME > KDE to Mac > Windows > KDE = GNOME > Mac. Yes - somehow Macs dominate both total noob and expert user part of the spectrum.

Or actually - the person who does the most to fulfil my wishlist gets to decide KDE vs GNOME for me.

    Wednesday, April 21, 2010

    OSX vs Linux

    The Ipad2 is finally revealed :-) by RolfSteinar from flickr (CC-NC-ND)

    I hate OSX and yet I use OSX because alternatives (by which I mean Linux, obviously) seem even worse. Here's a very short list of pros and cons as I see them.

    Most important things:
    • OSX pro: TextMate. I really cannot use any other editor without feeling physically ill, they just do everything wrong. There are some attempts at getting semi-decent editors for Linux like redcar, but I have no idea how good they are.
    • OSX con: MacPorts - source based distribution systems are just failful, and MacPorts is far more failful than most. It is completely routine that upgrade will leave you with broken packages - neither upgradable nor downgradable.
    • Linux pro: apt-get. I wouldn't even seriously consider any Linux without apt-get for anything.
    Extra points:
    • Linux pro: same software on desktop and servers. It saves me a lot of complications, 32bit vs 64bit is annoying enough without OSX vs Linux.
    • Linux pro: better development tools. strace, ltrace, and LD_PRELOAD for example. It is system made for developers by developers and it shows.
    • Linux pro: virtual desktops. Spaces on OSX doesn't work and it will never work as long as OSX stays Application-centric instead of document-centric like Windows and Linux GUIs.
    • Linux pro: better internationalization. Especially if I want to type in multiple languages. There's proper Polish Dvorak keyboard for example. (I remember I once haxored such for Windows 95 by editing binary drivers... these were good times).
    • Linux pro: Amarok. It's vastly more awesome than any OSX music playing program, especially shit like iTunes. Even old Winamp is far better than iTunes.
    • Linux pro: shell. Ubuntu bash has smart tab-completion, command not found suggests what to install, and everything else in shell got as much attention to detail as GUI got for OSX.
    • Linux con: Support for laptop hardware. Last time I tried it, even something as simple as getting external monitor in and out was a massive pain.
    • Linux con: GUI usability: Now that Windows 7 finally catched up, KDE is in general the second least polished GUI, the absolute worst being GNOME of course. It's not just looks, it's all the minor things that make it work seamlessly.
    • Linux con: GUI programming. C++ based Qt, and fake-OO-C based Gtk are both massive pain in the ass compared to even less than amazing Cocoa. There are Ruby etc. bindings for all, but it's just like putting lipstick on a pig. Everyone develops GUI for web these days - that even dealing with MSIE6 and all ridiculous web limitations is still far less pain than desktop GUI programming shows how bad it is.
    • OSX pro: It's prettier. Font rendering is a particularly good example
    • OSX pro: Omnifocus. Every other GTD software I tried was so bad I simply stayed with paper, but Omnifocus suckiness is fairly moderate.
    • OSX pro: Development for mobiles. Right now the only categories of mobiles are iPhones and turdbricks - one needs OSX, the other nobody wants to develop for. It might change in 2-5 years, but right now I need OSX if I wanted to develop for OSX.
    • OSX con: Support for laptop hardware. It's ridiculously bad, even though it's Apple's own hardware. The only way to turn off laptop monitor is by sacrificing a chicken (put computer to sleep; wake it up without fully opening the laptop screen; then maybe it will work, maybe not) - and routine software upgrade broke the "turn off trackpad when mouse is in" option.
    iPad stand by Veronica Belmont from flickr (CC-BY)

    I see no chance of OSX ever catching up with Linux before I get old.

    Linux would need at least a decent editor - and if redcar won't work, I'm out of hope - Emacs and vim are stuck in 80s and haven't improved the slightest since I started using Linux. All KDE/GNOME-based editors are made without any clue.


    Laptop hardware support gets better each year, while Mac seems be to getting worse somehow, so that problem doesn't bother me that much. And I can live with ugly fonts and less GUI polish.

    I might miss Omnifocus a bit, but that's definitely something I can live without, especially since Omnifocus is OK but not that awesome, and fairly moderate amount of GUI programming should make it possible to make something more or less as good, if only GUI programming wasn't such pain.

    So I'm quite tempted to switch to Linux. Am I missing some big pro or con of either system?

    Saturday, April 10, 2010

    First look at kUbuntu 10.4 Lucid Lynx or why I hate KDE4

    Close lynx by Tambako the Jaguar from flickr (CC-ND)

    One thing that still amazes me is how in 2010 operating systems still require ridiculous amount of work from inserting installation DVD to having a semi-decent system - even though no technical reasons prevent that from being a 5 minute zero-click operation.

    First, installer decided to crash a few times. It is only beta 2 I've been testing, not final release - but seriously, that just shouldn't happen. Random installer crashes a couple of weeks before Long Term Support release?

    Next there's a few classic system configuration questions - region, timezone, keyboard - and shouldn't they just set the defaults based on DHCP + geoip? Anyway, it's a small issue compared to those to come.


    And here we come to my first big complaint - partitioning. First, why the fuck do they still use swap partitions instead of swap files like every other operating system? Don't make it more difficult for users for some marginal gain in performance. If they cared about performance that much they wouldn't be using KDE, you know. And second - how about some sane defaults? There was an ext3 partition from some old Linux and ntfs partition on that computer, but I had to manually tell the installer what I want to do with them - as if it was so difficult to suggest / and /media/c or somesuch so as defaults.

    Did I mention installer was ridiculously slow? Did they use framebuffer graphics driver or what? Anyway, a few clicks, and the system is installed - this is of course only the beginning.

    Go to the OSX-ripoff system settings panel (Applications > Settings > System Settings), and let's start fixing things.

    It's been an ancient tradition in all operating systems I know that mouse and keyboard defaults are designed for old people with Parkinson's - so we need to go to keyboard, reduce repeat delay and increase repeat rate to saner values. Of course unlike every system since probably Windows 3.11 KDE didn't even bother including test box in its keyboard speed configuration dialog. Seriously guys? If you cannot get even something as obvious as that right, what chance do you have for even chasing the 2x overpriced Apple, let alone Microsoft?

    It's even worse when it comes to configuring mouse. Instead of one mouse speed slider there are 6 confusing numeric entry boxes. Tip: increase the first from 2x to 5x to restore sanity.

    While in keyboard and mouse settings I was wondering if I can make one of special keys launch a browser - but application launching didn't seem to be available anywhere. And I stumbled upon something really ridiculous - monitor brightness controls are under "KDE dæmon". With a ligature. You're trying to outhipster Macs or what? Seriously, fix that spelling - or even better label these "monitor settings" or something like that.

    hello by elekesmagdi from flickr (CC-NC)

    Now it was time to install some software to make the system useful. Konsole was hidden deep is "Applications > System" and I needed to scroll down to get to it. I know it's a trivial inconvenience, but even Windows fucking 95 had that right. Do not use tiny constant height widgets for Start menu - and to add insult to injury make them use huge icons. It can only display 8 programs without scrolling, and they're not even arranged in any sensible order (it's supposedly alphabetic, except "Konsole" is under T for "Terminal"). Are you trying to repeat the spectacular success of "let's throw away everything and reinvent GUI" OLPC?

    So I was looking for apt-something, and because it was not obvious I just typed "apt" in the program search box - it came with literally 15 results, and KPackageKit was not even in the first half.

    While I looked around the menu I accidentally clicked Akregator - there's zero pixels of inactive margin between clickable areas to run programs - Fitts' Law called me and told to says hello - and instantly proceeded to quit it. Instead of quitting it showed me the "You're not gonna catch me, I'm going to stay in the system tray" message - I tried looking for it but the system tray in fresh KDE is as filled with unnecessary garbage as a Windows 98 installation which has been running since literal year 1998. Why do I need half of that? Anyway, I located some icon which looked like Akregator, asked it to quit and it proceeded to enrage me with "Are you sure you want to quit Akregator" dialog? What kind of question is that? I've told you to quit twice in the last 30 seconds you dumb program! And there are no unsaved documents or anything there - you're a fucking RSS reader! If there were unsaved documents you should tell me about them - and there is never ever under any circumstances any reason why a program should ask if it should quit or not, other than unsaved documents. How is it that every minute of using KDE I stumble upon such a basic usability failure?

    So, KPackageKit started - let's install Firefox because you won't catch me using Konqueror even for web testing and I'm the kind of person who still tests in IE6. Actually I wanted to check if Firefox is maybe already installed - the useless Konqueror is prominently displayed in Start menu, but maybe Firefox is somewhere there. So I typed "firefox" in start menu search box and clicked on something called "Mozilla Firefox Web Browser Installer" - the only result this time. It steals the whole screen for some reason (all right, some video came installers use fullscreen mode, but I've never seen any regular installer do that before...) and when I click "Install"... it tells me that "Requested packages are already installed".

    So is Firefox installed or not? KPackageKit search for firefox only lists "kubuntu-firefox-installer" package - exactly the same one which fails so hard. I even tried to search for "iceweasel" - in case kUbuntu shares Debian's obsession with legalistic minutiae of its trademark amendment to DFSG but no. I typed "firefox" in Konsole to get "Program 'firefox' is not installed. You can install it by typing sudo apt-get install firefox" - apt is the most awesome thing that ever came out of Linux - but when I tried that I've been told firefox package is not available.

    Wait, did they even get apt repository listings? I assumed they must have done it automatically, as KPackageKit showed no button or anything suggesting that manual action was required - but "sudo apt-get update; sudo apt-get install firefox" actually did the trick. I wrote a whole post about configuring Firefox 3.6 a couple of months ago, so I won't be repeating myself now.

    Faces of God by Unitopia from flickr (CC-NC-ND)

    So, time for some serious package installation. Now I've noticed something I'm rather ambiguous about. Dragging a window to the left or right edge of the screen semi-maximizes it to full height / half width - which is an idea so brilliant that if I ever meet the person who came up with it they're getting some free booze. Unfortunately X is also the only graphics system with usable virtual desktops (if any of you ever mentions Mac Spaces, God is going to drown some puppies) - and usable virtual desktops work even better if screen edges move between desktops - especially since by default there are no keyboard shortcuts to move windows either - Mouse and Keyboard > Global Keyboard Shortcuts > Window to Desktop 1 > Custom > Ctrl+Shift+F1 etc. fixes that fortunately. I like having both ways of moving stuff from one virtual desktop to another, but at a very least one way should be provided, no? (right clicking on title bar doesn't count)

    So package installation. First, 159 packages got updated since beta 2 release - maybe not that surprising so shortly before the big release. And upgrading programs with apt is such a joy after suffering of MacPorts.

    Back to Firefox for a moment. Why is there no Bing in default search engines list, when they have ever obscure ones nobody uses like ask.com and creative commons? Is it all Firefox or just kUbuntu's? It's not a big deal by any means, but if you want Microsoft to offer users choice of browser with its operating system, why not offer users choice of search engine with your browser? And speaking of browser choice - why nobody asks me which browser I want as default? Because the answer is very much not Konqueror. Konqueror is the MSIE of ... well, of not-Microsoft. I have about as much interest in using Konqueror as I have in using Safari or IE. Basically, default browsers for all platforms somehow suck massively, and all sane people use Firefox... or maybe Opera. So I went to youtube to see if Flash works. I've been greeted with the usual "Missing plugins" message, so I clicked some buttons - and the relevant plugins have not been found obviously - why would it work if it can rather not? Fortunately apt-get install flashplugin-installer worked - by this time I abandoned pretty much all hope of installing anything from GUIs and went straight to good old console, as if it was 1999 and I was still using Debian 2.1 slink... By the way did you know youtube had ads? Wow, sometimes I don't realize how different the Internet for smart people is from the Internet for everybody else.

    Crazy Kitten? // Nikkor 50mm 1.4 by Merlijn Hoek from flickr (CC-NC-ND)

    This installation guide/diary gets ridiculously long, and we're still quite far from a usable system. From memory I just typed apt-get install build-essential irb1.8 irb1.9 octave3.2 unrar ttf-mscorefonts-installer mplayer mc git subversion mongodb - I'm sure I forgot half the programs needed, but I'll figure them out someday. By the way, how hard would it be to just have apt-get install everything? Yes, there will be a couple of conflicts, complicated packages, and such, but 90% of packages should be installable everywhere without any hassle. I couldn't find Sun Java, and I know past Open Source javas like Kaffe and gcj were essentially useless - but I'll give that OpenJDK a try. Once. Like I did with Tesco Value.

    At this point the system is reasonably close to usable except for a few things which I'll keep open:
    • Why don't PageUp / PageDown / Home / End work in Konsole (or xterm)? They work in Firefox just fine and my keyboard is not unusual - just awesome.
    • How do I make Konsole and Firefox start when I log in? It's right there in dock menu on Mac, so it shouldn't be too hard in KDE either.

    Monday, May 07, 2007

    Quake-style console for KDE - yakuake

    yakuake screenshot by taw (public domain)I played with harnir's fvwm-crystal (screenshots) for a few days. I'm back to KDE now, but one feature was simply too awesome to miss - the Quake-style konsole.

    It turns out KDE supports Quake-style konsole too with yakuake package (sudo apt-get install yakuake). Before that I used to keep multitab konsole on virtual desktop 1 (empty now), but I like yakuake much more. The only thing I changed was key binding from truly horrible F12 to Alt-` (run yakuake, press down arrow in lower right corner, select Change Access Key...).

    You can see yakuake on the screenshot. It supports multiple tabs, automatically hides when it loses focus, and is based on KDE konsole, which in my experience tends to be a much better terminal emulator than all xterm-based stuff.

    Thursday, July 27, 2006

    Polish localization of Linux sucks

    The ducks from CuteOverload, as usual.
    And unless we do something about it it's going to suck forever. And as long as localizations suck, we'll never be able to fix Bug #1.

    In the last few years some things got fixed about i18n - all sane distros use UTF-8 only, have fonts that cover most of the world preinstalled (including CJK), and contain packages with input method switch (scim).

    What is needed now is:
    • Instant feedback mechanism - when the translation sucks, the user should be able to correct it easily and submit it upstream as easily. This requires some serious changes in i18n infrastructure, but there is no way we'll be able to have quality localizations to hundreds of languages without instant feedback.
    • Consistency of the translation (like not using "Skopiuj" form half of the time in place of "Kopiuj").
    • Quality check - the translations are often plain wrong. Wrong is worse than unlocalized.
    • Translation of everything. Everything. If something is not translated, it should be considered a serious bug.

    Sunday, July 23, 2006

    gaim sucks

    Partial list of gaim's suckiness, as far as gadu gadu protocol support is concerned:

    • gaim does not support search (really, it doesn't, not even a bit). You can't check in the public directory with whom are you speaking.
    • gaim does not quietly reconnects if the connection is broken, even when i use a plugin for that (yeah, there's an actual plugin to get half-sane behaviour). With the plugin, it will pop-up the contact lists. Without it, it will flood me with error messages. And connection to gadu gadu servers gets broken all the time.
    • gaim does not encrypt connections to gadu gadu servers, and it does not support end-to-end encryption
    • gaim does not support emoticons
    • gaim does not display the last few old messages when opening a chat and does not have single keystroke history. You actually have to open history (Conversation menu > View log), then select month from the tree view, then select day, and then scrool down. Seriously, the guy who designed this UI must have been stoned.
    • on your contact list, you cannot have inactive contacts shaded out and on the bottom. You either see no inactive/hidden contacts (what's lame, because half of the people are in hidden state all the time), or you have them sorted alphabetically (what's even lamer, because you can't see who's there).

    Sunday, July 02, 2006

    Linux permissions system rant


    Hello, today I want to rant about Linux permission system and how totally broken it is.

    Summary of the system: In the Linux permission system each program gets one User-ID and a set of Group-IDs. Objects in the file system belong to some user, and may also be accessible to some group. Processes with the same User-ID can control each other (stop, look inside etc.). Also any process with User-ID 0 (root) can do whatever it wants to the system, including changing own User-ID/Group-IDs. Some executable files on the system may have SETUID/SETGID flag set, what means that when they're run they get an extra User-ID/Group-ID.

    This is pretty much the same system Unix had 20 years ago. I think we should drop it completely and get a one that actually works.

    Here's a short list of things that are wrong with the system:

    • Group-IDs are per-process, not per-user. So if user fred is added to group audio, so he can play music on the computer now, the programs he is running still aren't in group audio ! So he has to log out and log in again before the change is effective. Reboot after every change ? Is it Windows 95 or what ?
    • Of course the permission system isn't even supposed to run like that. The only user who can control audio should be the one that is currently logged-in to the physical console. One that is logged remotely should not have any access to the audio system. This is pretty much unimplementable with the current permission scheme.
    • There are no sandboxes, in particular there are no sandboxes for normal users. So it's impossible to run untrusted programs without risk.
    • There is no real nouser/nogroup. Each program in nouser/nogroup can mess with other programs in nouser/nogroup.
    • There are no per-process root sandboxes either. So one cannot start a foobard server in a way that even if the server is compromised, it has access to nothing outside. If the server runs as foo User-ID it can mess with other servers with the same User-ID. Even if there's no other program with the same user-id now, it can still create a SETUID binary and control servers running with the same User-ID in the future.
    • Normal users cannot install programs using standard interfaces. They should be able to install whatever they want for themselves (even if system-wide instalations still require administrator permissions).
    • For single-user systems, having to remember user and administrator password is silly. Well, Ubuntu is a bit better here using sudo instead of a root account.
    • Users cannot make public only one subdirectory of their home directory without granting some access to their whole directory. One might want public ~/public_html/ and private everything else. It can't be done (unless public_html is outside the normal directory hierarchy).
    • There are no guest accounts, which would be created just for one session without being able to affect other guests.
    So it sucks for single-user desktop, it sucks for multi-user desktop, it sucks for public access terminals, and it sucks for the server. Why are we still keeping it ?

    Thursday, June 22, 2006

    Network hacks

    The usual Linux penguins are not cute enough, so we have a cuter polar animal for this post. So, I did some truly evil things to my network yesterday. :-D

    Physical setup
    The main computer is runs Ubuntu Linux and has two 100MBit ethernet interfaces, eth0 and eht1. eth0 is connected to the laptop, eth1 is connected to the router. Laptop runs Windows XP, and is connected to the main computer. The router is overfirewalled in a particularly fascist way and is beyond my control. This was the reason why I did the whole hack thing. Somewhere on the Internet there are HTTP Tunnel servers. Everyone can connect to them using encrypted connections to port 80, for greater anonymity or simply to get around stupid firewalls.
    Layer 1
    The first layer of the setup was just a normal network. Router gives the main computer IP through DHCP. Desktop-laptop connection is statically set up, I may change it to use DHCP later, but it's more convienient to leave it static during frequent reconfiguration time. Desktop is NATing laptop, and is getting NATed by router, nothing unusual:
    ifconfig eth0 192.168.1.1
    echo 1 >/proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -j MASQUERADE -o eth1
    
    Layer 2
    Now let's get to the funny things. The unfortunate thing is that HTTP Tunnel client runs only on Windows. If it wasn't for that, there would be no need to have a setup as elaborate as this. So I installed HTTP Tunnel on the laptop. It provides SOCKS4/5 server on 192.168.1.2:1080. Now it is possible to anonymously use the Internet from either the laptop or the desktop, at least from the apps that support SOCKS4/5. However, configuring SOCKS4/5 in every single app isn't very convenient, so...
    Layer 3
    And now the fun part. I configured iptables so that it lets connection on the local network and to whitelisted ports through without:
    /sbin/iptables -t nat -A OUTPUT -o lo -j RETURN
    /sbin/iptables -t nat -A OUTPUT -d 127.0.0.1 -j RETURN
    /sbin/iptables -t nat -A OUTPUT -d 192.168.0.0/16 -j RETURN
    /sbin/iptables -t nat -A OUTPUT -p tcp --dport 22 -j RETURN # SSH
    /sbin/iptables -t nat -A OUTPUT -p tcp --dport 80 -j RETURN # HTTP
    /sbin/iptables -t nat -A OUTPUT -p tcp --dport 443 -j RETURN # HTTPS
    /sbin/iptables -t nat -A OUTPUT -p udp --dport 53 -j RETURN # DNS
    
    And to forward all other connections to transocks server:
    /sbin/iptables -t nat -A OUTPUT -p tcp --syn -j DNAT --to-destination 127.0.0.1:1211
    
    So connections to slashdot.org:80 goes straight, while connections to irc.freenode.net:6667 get redirected to 127.0.0.1:1211. This is almost the right thing, however you can probably see a little problem here - how the heck does transocks know where the user wanted to get connected. That's the best part. Kernel remembers the original destination and we can get to it using:
    getsockopt(clientfd, SOL_IP, SO_ORIGINAL_DST, (struct sockaddr *)&dstaddr, &dstlen);
    
    Now transocks connects to the specified SOCKS4/5 server (configuration in /etc/socks.conf), and the server connects to the right website through a tunnel.
    In the end
    So the complete path the connection goes through is:
    • An application on desktop tries to connect to irc.freenode.net:6667
    • iptables redirect connection to transocks desktop:1211
    • transocks on desktop reads the original destination using getsockopt
    • transocks connects to SOCKS4/5 server (HTTP tunnel client) on laptop - 192.168.1.1:1080
    • HTTP Tunnel client on laptop tries to connect to HTTP Tunnel servers
    • desktop NATs the connection and lets it through
    • router NATs the connection again and lets it through
    • HTTP Tunnel server connects to irc.freenode.net:6667, wow :-D
    The transocks trick also works perfectly with SSH tunneling (ssh -D 1080 fred@your.shell.account). Oh and by the way, compiling transocks is not trivial, just contact me if you need some support here :-)

    Wednesday, June 07, 2006

    Xgl

    Modern graphic cards consist of 90% 3D hardware and 10% 2D, just for the sake of backward compatibility, but so far only the games used the 3D hardware !

    Here comes Xgl. Instead of having boring 2D windows, it uses full 3D to achieve a lot of cool effects, some of them ever actually useful:

    • multidesktop cube
    • real transparency (alt+mouse wheel over any window), if you have too many windows open
    • instant zooming by mouse wheel (so useful for webcomics that have small fonts)
    • and of course plenty of eye candy :-D
    The cool stuff can't be presented on a screenshot, you simply have to try it on your own. Or at least watch a movie.

    Unfortunately, Xgl is still quite difficult to configure. The solution is, as usual, downloading a LiveCD. Kororaa LiveCD comes with preconfigured Xgl, it should work on most ATI, nVidia and even some Intel graphic cards. Enjoy :-)