Postcards From Linux Part 3:
Mouse vs. Keyboard

By Shamus Posted Monday Dec 24, 2012

Filed under: Personal 88 comments

splash_linux.jpg

My adventure into the world of Linux-using continues. With regard to the holy war of GUI interfaces vs. the POWER OF THE COMMAND LINE, I have to say that I see this as a false dichotomy. A menu lets you know what can be done, where stuff is, and what the options are. Once you know these things, a command line is [sometimes] the fastest way to do them. In the terminal I feel blind. In a windowed situation I feel like it’s too many steps to reach certain options.

You know what interface paradigm I always loved? Games made with id Tech 4 and Source engines. (Doom 3 and Half-Life 2, respectively.) You’ve got your menus and sliders and checkboxes and whatnots, but if you need to get into the crazy stuff you tap tilde and you’ve got sleek command line interface with text coloring, command history, script execution, and autocomplete. Yes, I know operating systems are more complex than videogames, but there’s a lot of value in this hybrid approach.

An interesting problem I like to think about: How can you use the GUI to teach the user to use the command line? I know this is heresy to the purists, but I see a lot of value in it. However it worked, it would have to be like keyboard shortcuts: When you look at a menu it usually lists the keyboard shortcuts for the stuff you’re doing. You can use the menu or the shortcut, and it’s up to the user when they want to make the mental investment of learning to do things the optimal way. If you select the same thing again and again, you’ll get irritated enough to memorize the shortcut. However, you never have to memorize anything and are free to do almost everything with the mouse. Repetition will create a desire for optimization which will create willingness to learn.

For me, a great example of this is MySQL. I use it once every six months or so. These intervals are so far apart that I don’t remember the commands. I have to look up every command, every time. One example of a dozen:

select database_foo

Hey, why didn’t that work?

select database_foo;

Nope. Damnit. uhhh…

SELECT database_foo

No. Fine. Google search. Oh right!

use database_foo

Okay, got it. I’m sure I’ll remember that next time. Now lets see…

delete table foo;

What? Why didn’t that work?

You get the idea. I can’t learn this stuff because I use it so rarely. This is a situation where you’d want to use a menu. Yes, it’s way slower to click-click-click your way through a GUI, but it’s faster and less frustrating than doing a search for every command.

When it comes to a GUI / terminal hybrid interface, I’m not sure how you could present this information. I’m not even sure it’s possible. But it’s still an interesting problem I like to think about.

Anyway, the stuff I’ve been working on…

IDE

Code::Blocks IDE for Linux Mint

You might remember from last time that I was completely baffled at trying to get a simple thing working. I got this sorted out with some help from a Linux-savvy friend. Here was his advice, which worked for me:

  1. As I’d already discovered: Don’t download libraries and source from the web unless you’re doing something really unusual or exotic, which should not be your first steps in programming on Linux. Also don’t use the Software Manager. While better, it still won’t give you all the parts you need. Instead…
  2. Use the Synaptic Package Manager. This should be your go-to place for getting libraries.
  3. When you’re looking for foo, it will probably be listed in the manager as libfoo. That’s the binaries so that you can use foo. However, if you want to write code with foo then you need libfoo-dev. These rules are not written in stone and there are exceptions, but this should help you narrow that initial search.
  4. Those long dependency chains we see in Windows? You know, where you need to install library B, which depends on C, which depends on D. The synaptic package manager mostly untangles this for you. However, it might be good to go up the chain a bit. Instead of installing B, maybe look and see if there is library A and install that instead. You’ll get B as part of the deal, and a whole lot of inter-dependence and path-sorting should get sorted out in the process. For example, I wanted the GTK library. By downloading the gnome-common package I got GTK, all the stuff that GTK needs, and all of the stuff to use GTK in various IDEs.

Disclaimer: The above is very rudimentary and probably factually correct in places. I said I got advice. I didn’t magically learn the entire system in a couple of days.

At any rate, I can code now. I’m not doing anything serious. I’m just making bits of things compile and getting a sense of how it all works. My sense at this point is that using libraries in Windows is always a pain in the ass. By contrast, on Linux it’s either trivial or impossible. So that’s kind of interesting.

Keyboard Shortcuts

CHECK8 THIS BOX TO STOP7 TYING SEVENS 1AND ONES ALL THE TIME.

On Windows, if you have NumLock off (so the keypad is in navigation mode) then pressing shift doesn’t alter the behavior of the keys. If you’re on a line of text, then pressing shift+num7 home (num 7) should select everything from the current cursor position to the beginning of the line.

On Linux, this will just type a seven.

This has been driving me crazy. It’s a small thing, but it’s deeply ingrained into my typing habits. I can see the merits of both systems and I don’t think either one is “wrong”. But I’ve got a quarter century of muscle memory behind using shift-num7 to select to the beginning of a line, and it’s proving difficult to overcome. The worst part is, I’m most likely to make this mistake when I’m already agitated and fighting with some other problem. As I hammer away, looking for a solution to an unrelated problem I end up typing more and more random numbers or accidentally clearing things I’ve typed. Ease-of-use issues like this form little negative feedback loops for me where frustrations compound and proliferate mistakes, leading to more frustrations.

I figured this was just the cost of making the switch. I mean, this is a pretty rare typing habit and it’s not like Linux coders are falling over themselves to accommodate every tiny little whim of Windows refugees.

But as it turns out, there is a solution. It’s easy. (Just slightly hard to find.) Under System Tools»System Settings»Keyboard Layout»Layouts tab, there’s an options button at the bottom of the dialog that takes you to a massive list that must encompass every conceivable keyboard configuration option, no matter how trivial, obscure, esoteric, novel, or odd. In that list is an option to make the shift-numpad relationship work like in Windows.

Wine

Paint Shop Pro 8 on Linux Mint

Paint Shop Pro is an off-brand image editing software. It doesn’t just stand in the shadow of Adobe Photoshop, it is eclipsed by it. Version 8 came out in 2003, and was one of the last entries into the now-extinct mid-market image editing software. Since then, the market has fragmented into two distinct camps:

  1. Simple software for touching up photographs: Brightness, contrast, color, cropping, borders. This stuff is either cheap or free, and is designed to be used by the proverbial grandpa trying to digitize his yellowing photo albums before he drops dead.
  2. Professional image manipulation software which can do anything and everything. You can photoshop things, paint digital pictures, create logos, restore old photographs, or whatever other kind of pixel-pushing you need to do. These things typically cost hundreds of dollars.

The extinct(?) mid-market stuff had 90% of the features of the top-tier stuff for 25% of the price. I bought Paint Shop Pro 8 sometime around 2004 or so. I think I paid $40, marked down from $70. This was a sweet spot for me with regards to price and features. A few years later Corel bought the developer and I can’t really tell what they’re doing with it these days. The feature list makes it sound like they gutted it, but maybe they’re just playing up with “simple tool for home photos” angle because that’s a bigger market than “bloggers who need to fiddle with things a bit”.

In any case, I’ve been using PSP8 for the better part of a decade now. That’s a long time to stick with a single version of something, and even now I’m not feeling any urge to upgrade. The software does everything I need it to do, I know how to use it, it’s stable, and it’s paid for. It is not possible to improve on this situation.

I was really worried about this when moving to Linux. The open source alternative on Linux is called GIMP, which is notorious for its interface. I’ve used it in the past and thought it felt like someone had taken all the tools in the toolbox and tied them together like Christmas lights. This might seem like a good idea until you actually try to use them this way.

I tried Wine, the program that lets old Windows programs run on Linux. It worked flawlessly here. PSP8 might be a little slower now, but it’s otherwise the same tool I’ve been using for years.

 


From The Archives:
 

88 thoughts on “Postcards From Linux Part 3:
Mouse vs. Keyboard

  1. Faguss says:

    How can you use the GUI to teach the user to use the command line?

    I think an example might be phpMyAdmin. After every operation (click) on the interface it displays the command line that was executed. So incidentally you can learn MySQL.

    1. Ingvar says:

      SMIT (the AIX admin GUI thing, may no longer be around) used to do that from the early 90s up uptil at least the early 00s. Mostly famous for having a running man icon and if whatever yo utried doing failed, the running man would fall over.

      Didn’t help that AIX admin commands were like those on no other unixoid OS around, but if you wanted to see what your form-filling-out would do, you simply pressed (IIRC) F6.

      1. Sabrdance (Matthew H) says:

        STATA does something similar. Which is a good thing, because the documentation for that program is horrendous.

    2. Factoid says:

      With Server 2012, Microsoft is now embracing the same philosophy. Every operating system command is a powershell script, essentially. The powershell is color coded, autocompleting and has a nice help system built into it.

      They don’t teach you the powershell commands every time you click a button, but I would bet there’s going to be third party software that can capture those commands as you’re navigating and display them.

  2. Ingvar says:

    One of the ideas I have been toying with is a graphical command pipeline editor, where you can construct your impressive (or not) command line by dragging progams onto a canvas and hooking their input/outputs together using, heh, pipes.

    But that always flouders on “but why not be able to do shell loops, and conditionals, and…” and at that point my brain goes “GUIs are hard, let’s keep typing”.

    1. Kyte says:

      Do it the same way graphical editors (I think Shamus blogged about one (Sketch I think?) here) work for loops and such (or Word works math equations, for that matter): You drag-drop the construct, which has gaps into which you can drag-drop commands/more constructs. So you drag-drop a While (Condition) (Command) and then Condition has some simple stuff (or typeable, or whatever) and Command is the same as the cmd line itself.

    2. HarveyNick says:

      I think you’re basically talking about Apples Automator.

  3. I believe Blender literally lists the Python command corresponding to each menu item as a tooltip.

  4. Tuck says:

    Mid-market image editing software isn’t extinct: Paint.NET!

    I use it for everything from photo post-processing to icons to web images to random graphical needs. It’s got a great interface, and there are tons of plugins for all sorts of needs if the base software doesn’t cover it.

    Totally free, and only a 3.5MB download. Far better than PSP8, in my opinion (I used PSP for years, Paint.NET replaced it).

    But it doesn’t run on Linux, not even under Wine. There’s a less-fully-featured Linux clone: http://pinta-project.com/

    1. Eric says:

      Agreed, Paint.NET is good for virtually any small image editing job. Comes recommended from me as well. I like the workflow and interface of Photoshop more but it’s hard to deny how easy and fast Paint.NET is.

      Of course, standard MS Paint is actually very good for basic tasks now as well, so it’s questionable whether anyone even needs a mid-tier image editor.

    2. Paint.net (Windows) is a great little editor for most of what you need at the great price of free with donations taken for those who feel guilty getting so much without paying. I have to say on Linux that I normally work on the GIMP modified to look close to Photoshop (once upon a time I used PS for work so I know that interface and stock GIMP looks like a UI designed by someone who believes in the command line rather than reading a book on HCI before they started building the GUI).

      The GUI stuff (WIMP is a discoverable interface, the command line is traditionally not and being able to manual search for commands is all well and good but you need to know what the command is to find it in some cases and a GUI showing you all the options and restraining your input to valid options is a lot easier than reading through the command line options help) is something that gets solved with exposing a macro mode in the GUI. Command macros (rather than recorded macros that track your click/typing chain and don’t expose the underlying commands as a string) are basically why all programs that want to automate some things need a command line interface, because you build your macro language from the exact same stuff as the command line. Linking a recording macro to the command macro is the answer. Press red record button, do activity in GUI, get back command macro which is written in CLI language that does what you just did. n future you can know what the CLI way of doing something you did in the GUI was by reading the recorded macro files. Anyone who says only CLI or only GUI is the true answer needs to just think about this unification of both and realise they need to stop fighting for one camp when having both is clearly the right answer. I will spend a lot of my time in a GUI (for a start because when I was first using a WIMP driven system in the mid 80s I couldn’t read/write that well due to my age, it was the first way I interacted with a PC and always feels natural on these computers with mice and displays that are not limited to ASCII output) thanks to the discoverability but the CLI is also invaluable and basic things like piping make it very powerful for chaining programs together in ways you can’t do with GUI only apps.

    3. Volfram says:

      Paint.NET and Gimp both have one major deal killer for me: they do not support tablet pressure sensitivity. Paint.NET even did at one point and then removed the feature. This defeats the entire reason why I have a tablet!

      I actually have a copy of PSP X2($25, on sale from around $60) which comes out any time I need to do something that can’t be done in XNView(free image viewing and adjustment suite). As far as I can tell, nothing has actually been *removed* from the earlier versions(I used PSP7 for a while), so I suspect they’ve just changed their marketing angle.

      1. Tse says:

        Holy… really? Now Gimp starts sounding even more useless, compared to Photoshop.
        I used Corel Painter for a while. I find it more intuitive for drawing than Photoshop, it’s made to act like you’re actually drawing something, it has a lot of brushes with predictable behaviours, it even simulates watercolour mixing. Then I had to draw vector images, so I switched to Illustrator. It’s great for that purpose. Between these two programs I have everything I need for drawing. I only use Photoshop for image correction of photographs.
        Well, it would be proper to say I USED these programs, because my career took a different turn. Now my expensive PC is only taxed when gaming.

      2. Kelhim says:

        Of course GIMP supports pressure sensitivity.

        You just have to check the correspondent box in the tool box. It’s right under “Brush Dynamics”.

        There you will find many more advanced options, too.

        1. Scerro says:

          Heads up, the new version of GIMP (2.8), broke tablets. You need to use 2.6 to really have tablets work properly.

          2.8 makes me angry for that and making me use export now.

          1. Kelhim says:

            Haven’t tried tablets with 2.8 (maybe it’s a personal problem of yours), but export is a reasonable change in the long run.

          2. mystran says:

            The export thing is REALLY nice for working with stuff like GUI composition where you might want to do several iterations, but ultimately want the result in a flat format for fast and easy loading. Previously you had to use “save as” manually to export to whatever your target format was (I usually use PNG), since in practice you still want the full composition structure (as XCF) for future editing.

            The export makes this total non-issue: it remembers what the export file was, so saving as target format is a single keyboard shortcut, while saving the “working process” is another keyboard shortcut. Makes the common process of “saving and exporting” much easier.

            Sure it’s a tiny additional pain if you only ever want to edit something once, but anything more complex it’s a HUGE time saver. Combined with the hierarchical layers support (finally) these two features have certainly boosted my GUI graphics productivity in GIMP by an order of magnitude.

            As for 2.8 and tablets.. technically it works on Windows at least. Usability-wise I agree it was kinda easier previously, though I find that GIMP’s tablet support was always a bit weird. Feature-wise it can still do more than previously; hopefully next version they replace the UI with something that’s a bit faster to work with.

          3. Alex says:

            GIMP 2.8 does support tablets and pressure sensitivity (I know this because I use GIMP 2.8 these days), but it’s not turned on by default.

            Also, I recommend that you turn off color management, as it appears to cause crashes to the desktop – obviously a horrible experience for a program used to create content.

        2. Volfram says:

          Last time I tried GIMP(because tablet drivers were acting up, admittedly around 3 years ago), that box was grayed out and there was a note on both the GIMP and Paint.NET websites saying that pressure support had been removed.

          Lucky for me, rolling back my tablet drivers to an earlier version fixed the problem.

          Oh, and for TSE: Paintshop Pro supports vectors as well. Probably not quite as in-depth as in Illustrator. I used PSP7 to vectorize an Elijah Wood autograph I got from one friend to use in a birthday present for another.

    4. 4th Dimension says:

      Strange. Considering that Paint.NET is supposed to be a .NET app, I find it strange that it wouldn’t work under Linux with Mono installed. With some library wrangling of course.

    5. sam says:

      Doesn’t Paint.NET need Mona? Mona is a linux/osx port of MS .net framework.

    6. sam says:

      Doesn’t Paint.NET need Mono? Mono is a linux/osx port of MS .net framework.

    7. NihilCredo says:

      I second the recommendation for Paint.NET. I actually do use Photoshop for doing real digital manipulation, restoring old photos, etc. but for the more common tasks, it’s great to not have to wait for the beast to load. Also the Paint.NET UI is outrageously intuitive.

      For stuff like crop/resize/rotate/add text however it’s already overkill, nowadays a good image viewer will do that. I use and love IrfanView, you just press F12 and get a basic palette of tools that’s roughly comparable to Windows 7 Paint.

    8. Factoid says:

      I’ll have to try it again. THe last time I used it I was constantly frustrated by slow response times, laggy display and browser crashes. And this was on a very nice computer. It’s been a year or two since I played with it.

  5. Kelhim says:

    To be fair, GIMP’s multi-window interface is very nice if you happen to have two monitors. And there is a new optional single-window mode for some months now.

    Note: I do not want to start one of the many fruitless GIMP vs. PS and vice versa discussions. Oh, please, no …

    1. Jason says:

      I use GIMP every day. It is very powerful after you’ve figured out how it works, and where all the filters are. Recently I had to make a custom brush for doing pixel work, since the stock brush cannot do a 2×2 or 4×4 pixel square.

    2. Factoid says:

      The multiwindow mode has one amazingly bad flaw that I can’t believe nobody has ever corrected. You have to click to change window-focus every single time. That means if you use the toolbar to select a brush or fill tool, you have to click once to focus the toolbar window, then another time to select the tool, then again to reselect the image window, and again to actually use the tool. 4 clicks for what should be a 2 click operation.

      Single window mode finally made gimp usable. I love it now.

      1. arnsholt says:

        That might be a unixism of GIMP. Old-school Unix windowing systems tended (I think) to have focus-follows-mouse, so that you didn’t actually have to click to change the focus. It still sucks in a world where almost noone uses focus-follows-mouse, of course.

      2. Zukhramm says:

        Tried just now to see, and for me, on Windows, clicking a button in a window other than the active one both switches focus and activates the button.

      3. xKiv says:

        I wouldn’t know if this is GIMP’s fault, doesn’t happen to me … but I have my window manager set to “sloppy mouse focus”, which means that windows get focus immediately when I move mouse cursor over them (don’t have to click when I want to type into another window, don’t have to *raise* the window to type into it). I am not sure what would happen if I set it to “click to focus”.

  6. Neko says:

    The “GUI which also teaches commandline” idea is an interesting one. The thing with a lot of commandline programs, though, is that you spend most of the time specifying some action up-front before invoking it; the corresponding GUI would be some big dialog where you configure a page of checkboxes and comboboxes etc. before hitting a shiny red “Go!” button.

    My gut feeling is that a hybrid file manager / terminal would be the way to go. Many commands that are “interesting” do some operation on a number of files, then get out of your life. The file manager could be used to select a bunch of input files (and output dirs?) interactively, then toolbar buttons and/or context menus could select what to do with those files. At the bottom it’d show you what commandline you were building up, along with a “Go” or “Cancel” button.

    The kind of data that the bash-completion package has accumulated might be useful to have for this project.

    1. “GUI which also teaches commandline” I guess is kinda what the start search bar in windows is in a basic form.
      Then there is the free PowerShell thingy for windows, by microsoft as well, never tried that one.

  7. gah says:

    “The open source alternative on Linux is called GIMP”

    No. GIMP is merely ONE alternative. Try Krita.

    1. Bryan says:

      > merely ONE alternative

      …Welcome to Linux! :-)

      Not that I mind of course, or I wouldn’t keep using it. But yeah, there are almost always ten other ways to do whatever you’re looking at. They may or may not work for you of course.

    2. Kelhim says:

      Krita is an excellent program, albeit more focused on drawing and painting. It’s less of an alternative for extensive photo manipulations.

      1. Duneyrr says:

        Woah, never knew about this one, thanks!

  8. Kylroy says:

    “My sense at this point is that using libraries in Windows is always a pain in the ass. By contrast, on Linux it's either trivial or impossible.”

    I think you could replace the word “libraries” with damn near anything in this statement and it would remain true.

    1. Lazlo says:

      Interesting, a lot of times I feel the same, but in reverse. At heart I’m a networking guy, and the iproute2 and iptables tools are sublimely powerful. They are not, however, generally intuitive to… well, most of the people that I’ve talked to about them. So I can make Linux do amazing feats of network acrobatics, while in windows there’s a nice gui for setting an IP address and if I want to do something fiendishly convoluted, I often come to the conclusion that the only way I could do it is to install VMware and build a linux VM to do the routing for me in front of the windows box.

      Windows also seems insistent on making the command line more difficult to use than it needs to be. Way back when I admin’d windows networks, being a command line sort of person, I’d use it for a lot of things. There are a few useful things in there, but one thing that always made me tear my hair out was that the cmd processor has a fully functional for loop that, while not being able to take input on stdin, can iterate through lines generated by a command, but the command line for showing users “net user” would output the list of users in 3 columns, and there was no way to change that.

      So Shamus, your idea for the gui that teaches the command line seems like a really good idea to me, though it seems like it’s mostly useful for single commands or systems or what-have-you, and easiest to do when the GUI is just a front-end to running a command (which often is the case). The thing is, to me the real power is not so much a single command that could either have a gui or I could read the hopefully informative man page on, but the synergy of lots of little tools. ‘ls img*[0-9].{jpg,jpeg,gif} | xargs mogrify….’ I’ve not seen a gui that could do something like that, but if there was one… I’m not entirely sure it’d be any easier to use than the command line.

  9. Tse says:

    I’m not a programmer, but I do use a lot of different software. The most basic one is AutoCAD. It uses a command line with configurable commands and icons for every single possible action. The command line is always visible, unless turned off. It gives status updates and directions as well as a history of user actions. Using an icon just inputs and executes a command in the command line. Even shortcuts like ctrl-s get transformed into commands. It’s an archaic way to do things, newer software uses shortcuts with modifiers from the ctrl, alt and shift keys, but seeing what command your action invokes is very helpful when learning to use the software.

    1. 4th Dimension says:

      And I was about to mention AutoCAD.

  10. Anorak says:

    Glad to know you didn’t give up in a fit of rage. I’d have understood if you did – most people do, as evidenced by the comments on your last postcard.

    The command line thing – I think you’re right about people’s usage of it. For tasks you don’t do often, it’s easier to navigate an interface with tool tips and help and so on.

    Replacing the command line entirely just leads to horrendously complicated GUIs though, that become bloated and unweildly, and difficult to navigate. This is often the case in Windows Server.

    As for learning the terminal via a gui, I don’t think there are many people actively trying to do that. Someone above mentioned PHPMyAdmin, but I don’t know if that gives you a clear idea of how to do the same thing via the SQL cli.

    Paint Shop Pro working fine in GIMP is great, but I doubt it would run the latest version of Photoshop flawlessly. Anyone tried?

    Shamus, if you see this: what video card do you have, and which drivers are you using in Mint? Have you tried any 3D games at all, like TF2?

    1. Rick says:

      I’m not sure about CS6, but CS5 works pretty good.

  11. I use the corel branded (now) “paintshop pro photo X2” for pretty much everything. It’s a couple versions behind (I think they’re up to X4 or X6 now or something) but it does everything I want it to do, with the exception of behaving strangely with Nvidia’s normal map filter plugin, for which I have to boot up GIMP.

    I -hate- GIMP. The interface was clearly designed by somebody who has never had to do anything quickly.

    Anyway, I just wanted to chime in here and say that I think PSP was better off when it was still Jasc, but the corel versions aren’t bad. And they typically cost <$50 which is far superior to whatever ridiculous bullshit adobe is charging for photoshop.

    1. NihilCredo says:

      Adobe does have Photoshop Elements for something like $70.

      I have no idea if it’s any good, but that and not Photoshop is clearly their offer to compete with programs like PSP.

  12. maxoverdrive says:

    Interesting note:

    If you were using unity, and tapped alt, you get what they call a ‘hud’ which is like a console for currently running apps.

    From what I can tell it searches the gui menu structure and presents you with those options via autocomplete! :)

    Mostly useful when unity craps out and loses the gui menu, but still, I think it’s a step in the right direction

    PS: gimp2.8 is pretty nice, it even has the option to turn off the multiple window gui that people have been whining about for years

    also: much faster startup, and uses your gpu for graphics processing! what’s not to like?

    1. AyeGill says:

      I was not aware of this. Very neat. Thank you.

  13. Wedge says:

    “How can you use the GUI to teach the user to use the command line?”
    This is an interesting idea, but I see a major problem with it: command-lines and GUIs are completely different, and, more importantly, require a different method of thinking. Trying to design a GUI around the command-line (or vice-versa) would necessarily hamstring the GUI, preventing it from playing to its strengths.

    As an example, let’s look at a pretty basic use case, exploring a filesystem. In a GUI file explorer, to change directories, you simply click on a directory. How could you use this to teach the cd command? You could change it so that changing directories required going to File->Change Directory. I think we can all agree that would be awful. Ok, that’s right out, how about if we had some kind of tooltip? So when you moused over a directory foo it gave you a tooltip that said “cd foo”. That could work, although I’m not sure how it would induce the user to want to use the command-line over just double-clicking the thing that’s already right in front of their face. The big problem with this is that it hides the true power of the cd command. If I want to go from my home directory ~ to some deeply nested directory, say ~/foo/bar/baz, in the GUI I have to double-click foo, then double-click bar, then double-click baz. In the command line I can type cd foo/bar/baz/–how do you represent this in the file explorer sitting in ~? What about tab-completion, how does that even make sense in a graphical context?

    This sort of thing is called impedance mismatch. It’s impossible to bring the two together without severely affecting one or the other (or both), which is why I don’t think this is a good idea for an end-user environment to pursue. I would rather developers continue the excellent work they’ve done in recent years (thanks largely to Canonical) in bringing the standard of Linux’s GUI interfaces up to par. An end-user should never have to touch the command-line unless they want to, and these days, 99% of the time they don’t. On the other hand, if you’re a developer, I think it’s perfectly reasonable to expect people to learn how to use their tools–especially in the era of the internet, where finding a decent intro to the command-line requires five minutes on Google.

    I do think, however, your idea would make a very neat tool specifically to teach the command-line! Imagine a terminal window that also had a menu bar on top with common commands, like cd, ls, etc. Then if you wanted to change directory, you could go to File->Change Directory, browse for the directory you want in a standard graphical file window, hit OK and then the command-line would fill in cd foo/bar/baz and automatically hit enter so you could see what the command-line is. It would give a newbie the power of the command-line with the added feature of discoverability, and the ability to dig something up in the GUI when they’ve blanked on the exact command. There are still weaknesses to this approach–you can’t add *every* command, since the number of possible commands is infinite (write a script, drop it anywhere in $PATH and set the +x bit and voila! New command) but it would be a very good tool to add discoverability to the command-line for those who are interested in going down that path.

    1. Bryan says:

      > (thanks largely to Canonical)

      Die in a fire, unity. If I wanted to use a Mac, I know how to find one.

      (Yes, only half joking. It’s *really*, *really* not an interface I want to keep using, but hey whatever.)

    2. Zukhramm says:

      It doesn’t have to be a program able to do everything a graphical program and a command line program, just one that, every time you do something notes “Hey, next time if you don’t want to bother with all this, just type this command instead!”

  14. Vagrant says:

    This might sound strange. I could have sworn that you once made a night before Christmas spoof but now I cant find it. does it exist or am i confusing you with someone else?

  15. namaps says:

    I just wanted to say I’m really, really enjoying more text (as opposed to video) content on this blog. I almost stopped checking when all the posts were nothing but Spoiler Warning (not that I dislike Spoiler Warning, but I rarely both am in an environment where I can watch a video AND have the time to watch it).

    1. Norman Ramsey says:

      Yes!!! Yay text! Shamus, we’re in it for the writing!

    2. Bubble181 says:

      Agreed in full.
      The text accompanying (sp?) the Spoiler Warnings is usually funny enough for me to bother to come and read :p

  16. COMPLETELY OFF TOPIC, BUT I’M DESPERATE…

    Does anyone know how I can reach Josh or Randy of Twenty Sided’s official Guild Wars 2 guild – the Eikosi League?

    This guild is currently stuck in limbo because none of its leaders have logged into the game in weeks.

    I would like to add new members and make the guild active again, but nothing can be done until leadership is transferred to someone who is currently playing the game.

    Thanks!

    1. X2-Eliah says:

      On that note, how are people doing in GW2? Is the overall userbase still populated, or are things more calm and level now? (Also, how’s the guild?)

    2. Shamus says:

      Sorry for not getting baack to you. This is something I keep meaning to talk to Josh about.

      I can’t log in to GW2 right now because of this Linux business. Josh is travelling. I’ll see if we can sort this out and get you running again.

      1. Thank you Shamus!

        The player population in the game has dropped significantly. Or, at least, it has on the server where the D20 guild is located.

        Thankfully, the game adjusts according to the number of players in any given map area, so you can still complete objectives, even if you’re the only person doing them at the time.

      2. krellen says:

        Jarenth has been around, and he’s got those permissions; could you work through him?

  17. I attempted to post a comment regarding needing to locate Josh or Randy of D20’s Eikosi League.

    When I clicked on the “Post Comment” button, my browser hung.

    My comment appears to have been lost in the internet ether and did not get posted.

    Now I can’t make another attempt to post the comment because I get an error message stating that I’m making a duplicate post.

    Help?

    1. 4th Dimension says:

      It seems it was actually posted. Maybe it arived after you refreshed the page?!?!

  18. Jacob Albano says:

    Shamus, I’m not sure if you’ve realized this due to Linux GUI conventions being different from on Windows, but you can move those Codeblocks toolbars around so they’re not taking up so much vertical space. You can even hide some of them entirely from the View -> Toolbars menu.

  19. Scerro says:

    I moved from using PS:CS2 in high school to GIMP. At one time it was just as fast for me to do things in GIMP, or I could do them faster. I remember the first time opening GIMP and ragequitting it a minute and a half later due to not being able to find how to do the simplest of things. Switching just takes a little bit of time, and lots of patience.

    I’m not familiar with PSP in the least, but GIMP just has things in different places than photoshop, and 95% of the features that most people use. The selection tools aren’t as good, but with layer masks they’ve become obsolete in my experience.

    GIMP 2.8 annoys me to no end, however. Changing how files are saved(Oh ho, lets make them EXPORT instead of SAVE now to do the exact same thing. It’s a pure limiting distinction, doesn’t help anything), as well as it broke all tablet support. So, I have 2.6, which is still a great version, and what I recommend.

    1. Deadfast says:

      Ugh…

      “You can use this dialog to save to the GIMP XCF format. Use File→Export to export to other file formats.”

      If you know what exactly I did wrong and what exactly I should have done instead why don’t you just stop wasting my time and do it?

    2. Kelhim says:

      The distinction serves a purpose. XCF is the format which keeps information about layers, paths, etc., and in versions prior to 2.8 these were lost after saving in a different format and then closing the program.

      Ctrl+E is not that much of a change, and you could always switch the keyboard shortcut to Ctrl+S.

      I find it amusing that people prefer an out-dated version only to avoid a simple interface change, which can easily be reverted.

      1. X2-Eliah says:

        Paint.net allows you to save in its proprietary format, that keeps all the layers etc. (.pdn), and in any other format you want, through the normal ‘save as…’ option. Quicksave (‘save’, ctrl+s) saves the file *in the format it is currently open as*.

        I don’t see how that is any less logical, or indeed less convenient that setting all save options only as proprietaries and stuff like png, jpeg, bmp and so on as ‘export’.

        1. Zukhramm says:

          You only have a shortcut to the latest saved format instead of both an image format and the editors format at the same time.

  20. Lupinzar says:

    I still have the belief that Linux is best suited for running servers, very specific applications (you can do some cool stuff on embedded systems these days), or tinkering. Windows, unfortunately, for me is still the best “I need to do a bit of everything on my desktop” OS. Of course MS is continuing to sweep power-user features under the carpet, so maybe that will change in a few years.

  21. David says:

    While you’re going through this, I decided that my birthday gift to myself would be to spend the time to learn how to be proficient with Vim. I struggled with whether or not it’d be worth it. But I decided that I could make Vim be the text editor I use nearly always, so I’m forging ahead. (As opposed to your MySQL example, where you just won’t be using it enough to remember the commands.) As you’d probably expect, it’s really difficult unless you make the effort to get to know it. Once you do, it actually is very rewarding. http://david.dlma.com/blog/happy-birthday-me-i-got-you-vim

  22. Rosseloh says:

    I’m glad to see WINE worked out for you. I don’t think I’ve ever had it work for me, for even the simplest applications. That’s one of the reasons I keep Windows on my laptop and only use Linux in a virtual machine.

  23. Khazidhea says:

    Merry Christmas!

    1. el_b says:

      Merry Christmas!

      1. Tse says:

        Merry Christmas! Честита Коледа!

  24. If you ever decide that PSP is insufficient to your needs, I’ll recommend Photoshop Elements. Priced for the (higher) mid-market, it has most of the tools that you need unless image manipulation is your job.

    Frankly, even a professional photographer can usually get away with Elements and Lightroom, never using full Photoshop at all.

  25. Mr. Son says:

    Ah, Paint Shop Pro. I used PSP7 for years. Until I got an art tablet, which is easier to use with my Photoshop. I still whip it out now and again for certain small things I can do faster or easier with it.

    The mid-tier art programs market has really died while I wasn’t paying attention? Damn. *Is sad* I’d better keep a strong and careful hold on my PSP7 disc.

  26. Tetracyclic says:

    You know what interface paradigm I always loved? Games made with id Tech 4 and Source engines. (Doom 3 and Half-Life 2, respectively.) You've got your menus and sliders and checkboxes and whatnots, but if you need to get into the crazy stuff you tap tilde and you've got sleek command line interface with text coloring, command history, script execution, and autocomplete.

    Shamus, I can highly recommend Guake, a terminal emulator for Linux that is accessed by hitting F12 at any time. The terminal drops down from the top of the screen, id Tech/Source style.

  27. Ralph says:

    Other people have said all this but I will say it as well:

    1) On windows atleast, Paint.net is da bomb for mid-range image editing/manipuation. Use when infanview wont cut it and you CBA open photoshop.

    2) There are many programs to give your linux desktop a quake style terminal.

    3) For mysql, use phpmyadmin. You had apache and php installed anyway right?

    4) Wish I got to spend Christmas day coding.. 8-p

    1. Rick says:

      Indeed I take Guake for granted until I go to use it on a computer that doesn’t have it!

  28. Shamus this is “a bit late in the game” but did you look at possibly using http://www.fltk.org/ as the GUI with http://www.fltk.org/applications/articles.php?L898 (a lightweight 2D rendering engine for when you don’t need 3D rendering) example: http://www.antigrain.com/screenshots/pictograms.png

    1. Shamus says:

      I did. I looked at several. Of course, I can’t remember the details of each or what I did/didn’t like about each of them now.

      1. *nod* Myself I’m leaning towards writing my own Windows / Linux GUI lib (none of the current GUI’s seem to be close to what I need.)

  29. Mark says:

    Try “Gimpshop”. It’s GIMP with some UI tweaks to make it less shit. It even has a plugin called “deweirdifier” that consolidates the millions of separate windows into just 3.

    1. Kelhim says:

      GIMP already has a single-window mode. And the “millions of separate windows” in multi-window mode have always been three by default. I don’t see the benefit of Gimpshop in this day and age.

  30. Jabrwock says:

    GIMP’s interface reminds of when I downloaded Blender to see if it would satisfy my video needs.

    If you know what you are doing, it’s a very powerful tool. If you are a noob, it’s a nightmare of menus and buttons. And the tutorials are like you described in a an earlier post, devoted to one specific task, good luck figuring out a “not quite the same” scenario.

  31. Christy O'Reilly says:

    Hi Shamus, long time reader, first time poster.

    The compiling thing is annoying indeed, especially when trying to satisfy the dev dependencies for a package, but apt has your back!

    sudo apt-get build-deps packagename

    will install all the development libs you need for compiling (there may not be a hyphen in build-deps, check the manpage with “man apt-get”)

    Stick with Linux, Ubuntu and its derivatives especially have a really helpful community! =) I picked up Ubuntu 3 years ago and haven’t looked back, apart from gaming. Linux is like heaven for programmers! =)

    All the best,

    Christy

  32. In the IDE section: “The above is very rudimentary and probably factually correct in places.” Should be “The above is very rudimentary and probably factually incorrect in places.”

  33. Geoff says:

    “An interesting problem I like to think about: How can you use the GUI to teach the user to use the command line?”

    Maya (a 3D modeling package) actually does this for scripting. Maya uses a proprietary language called Mel Script (though they actually have hook ins so you can code directly in Python as well now) which can allow you to do all the basic manipulations of objects as well as more complicated tasks like creating interfaces, loops, etc.

    In their console editor, they echo all commands executed by the user in Mel Script. So as a budding scripter, if you wanted to figure out how to set translation values on an object through script, you could simply set those values using the GUI editor and it would print out the script line for manipulating that object to whatever values you set. From there its pretty easy to reverse engineer the script and create code to, say, run the same translation offset on an array of selected objects.

  34. Zak McKracken says:

    “How can you use the GUI to teach the user to use the command line?”
    This, exactly.

    A good user interface will educate the user and let them do the things in whichever way they feel is appropriate.

    Doing this with a command line interface is not all easy, though.
    Some good python IDEs have a “namespace browser” that will give you all existing names (including names of commands) in a tree complete with explanation — but i know no incarnation of this for the Linux console.
    What I have found to be helpful are these things: “man [somecommand]” will give you the manual page for some command in the terminal. But entering “man:[somecommand]” in the adress line of the file manager will give you that man page in a graphical window where you can search for strings, click on stuff, have some yntax highlighting, and it can sit next to the terminal window where you are still trying to work out all the necessary arguments. At least with KDE, alt+F2 will open a single command line where you can put any command, web or local file adress or again said man:[something] and get the same result.
    That and the mouse buffer (select with the mouse, insert with middle click make living with the console much easier

    For selecting to the beginning (or end) of a line, I just use shift+home (shift+end), and to the beginning of the whole text shift+ctrl+home (shift+ctrl+end).
    holding ctrl will enable you to move (and with shift select) the cursor word by word.

    … I know, though, how difficult changing habits can be. Whenever I’m on windows I try and paste URLs or filenames with just a middle click and then realize I forgot to do the crtl+c/ctrl+v dance.

  35. The compiling thing is annoying indeed, especially when trying to satisfy the dev dependencies for a package, but apt has your back!

    sudo apt-get build-deps packagename
    Domino Qiu Qiu
    will install all the development libs you need for compiling (there may not be a hyphen in build-deps, check the manpage with “man apt-get”)

    Stick with Linux, Ubuntu and its derivatives especially have a really helpful community! =) I picked up Ubuntu 3 years ago and haven’t looked back, apart from gaming. Linux is like heaven for programmers!

Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun. Your email address will not be published. Required fields are marked*

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="http://en.wikipedia.org/wiki/Darth_Vader">Darth Vader</a> on Wikipedia!

You can quote someone like this:
Darth Vader said <blockquote>Luke, I am your father.</blockquote>

Leave a Reply to xKiv Cancel reply

Your email address will not be published.