Archive

Archive for the ‘GNOME’ Category

Change the default sort order in Nautilus

February 9th, 2014 1 comment

The default sort order in Nautilus has been changed to sorting alphabetically by name and the option to change this seems to be broken. For example I prefer my files to be sorted by type so I ran

dconf-editor

and browsed to org/gnome/nautilus/preferences. From there you should be able to change the value by using the drop down:

 

Seems easy enough

Seems easy enough

Unfortunately the only option available is modification time. Once you change it to that you can’t even go back to name. This also appears to be a problem when trying to set the value using the command line interface like this:

dconf write /org/gnome/nautilus/preferences/default-sort-order type

I received an “error: 0-4:unknown keyword” message when I tried to run that.

Thanks to the folks over on the Ask Ubuntu forum I was finally able to get it to change by issuing this command instead:

gsettings set org.gnome.nautilus.preferences default-sort-order type

where type could be swapped out for whatever you prefer it to be ordered by.

Great Success!

Great Success!

Create a GTK+ application on Linux with Objective-C

December 8th, 2010 8 comments

As sort of follow-up-in-spirit to my older post I decided to share a really straight forward way to use Objective-C to build GTK+ applications.

Objective-what?

Objective-C is an improvement to the iconic C programming language that remains backwards compatible while adding many new and interesting features. Chief among these additions is syntax for real objects (and thus object-oriented programming). Popularized by NeXT and eventually Apple, Objective-C is most commonly seen in development for Apple OSX and iOS based platforms. It ships with or without a large standard library (sometimes referred to as the Foundation Kit library) that makes it very easy for developers to quickly create fast and efficient programs. The result is a language that compiles down to binary, requires no virtual machines (just a runtime library), and achieves performance comparable to C and C++.

Marrying Objective-C with GTK+

Normally when writing a GTK+ application the language (or a library) will supply you with bindings that let you create GUIs in a way native to that language. So for instance in C++ you would create GTK+ objects, whereas in C you would create structures or ask functions for pointers back to the objects. Unfortunately while there used to exist a couple of different Objective-C bindings for GTK+, all of them are quite out of date. So instead we are going to rely on the fact that Objective-C is backwards compatible with C to get our program to work.

What you need to start

I’m going to assume that Ubuntu will be our operating system for development. To ensure that we have what we need to compile the programs, just install the following packages:

  1. gnustep-core-devel
  2. libgtk2.0-dev

As you can see from the list above we will be using GNUstep as our Objective-C library of choice.

Setting it all up

In order to make this work we will be creating two Objective-C classes, one that will house our GTK+ window and another that will actually start our program. I’m going to call my GTK+ object MainWindow and create the two necessary files: MainWindow.h and MainWindow.m. Finally I will create a main.m that will start the program and clean it up after it is done.

Let me apologize here for the poor code formatting; apparently WordPress likes to destroy whatever I try and do to make it better. If you want properly indented code please see the download link below.

MainWindow.h

In the MainWindow.h file put the following code:

#import <gtk/gtk.h>
#import <Foundation/NSObject.h>
#import <Foundation/NSString.h>

//A pointer to this object (set on init) so C functions can call
//Objective-C functions
id myMainWindow;

/*
* This class is responsible for initializing the GTK render loop
* as well as setting up the GUI for the user. It also handles all GTK
* callbacks for the winMain GtkWindow.
*/
@interface MainWindow : NSObject
{
//The main GtkWindow
GtkWidget *winMain;
GtkWidget *button;
}

/*
* Constructs the object and initializes GTK and the GUI for the
* application.
*
* *********************************************************************
* Input
* *********************************************************************
* argc (int *): A pointer to the arg count variable that was passed
* in at the application start. It will be returned
* with the count of the modified argv array.
* argv (char *[]): A pointer to the argument array that was passed in
* at the application start. It will be returned with
* the GTK arguments removed.
*
* *********************************************************************
* Returns
* *********************************************************************
* MainWindow (id): The constructed object or nil
* arc (int *): The modified input int as described above
* argv (char *[]): The modified input array modified as described above
*/
-(id)initWithArgCount:(int *)argc andArgVals:(char *[])argv;

/*
* Frees the Gtk widgets that we have control over
*/
-(void)destroyWidget;

/*
* Starts and hands off execution to the GTK main loop
*/
-(void)startGtkMainLoop;

/*
* Example Objective-C function that prints some output
*/
-(void)printSomething;

/*
********************************************************
* C callback functions
********************************************************
*/

/*
* Called when the user closes the window
*/
void on_MainWindow_destroy(GtkObject *object, gpointer user_data);

/*
* Called when the user presses the button
*/
void on_btnPushMe_clicked(GtkObject *object, gpointer user_data);

@end

MainWindow.m

For the class’ actual code file fill it in as show below. This class will create a GTK+ window with a single button and will react to both the user pressing the button, and closing the window.

#import “MainWindow.h”

/*
* For documentation see MainWindow.h
*/

@implementation MainWindow

-(id)initWithArgCount:(int *)argc andArgVals:(char *[])argv
{
//call parent class’ init
if (self = [super init]) {

//setup the window
winMain = gtk_window_new (GTK_WINDOW_TOPLEVEL);

gtk_window_set_title (GTK_WINDOW (winMain), “Hello World”);
gtk_window_set_default_size(GTK_WINDOW(winMain), 230, 150);

//setup the button
button = gtk_button_new_with_label (“Push me!”);

gtk_container_add (GTK_CONTAINER (winMain), button);

//connect the signals
g_signal_connect (winMain, “destroy”, G_CALLBACK (on_MainWindow_destroy), NULL);
g_signal_connect (button, “clicked”, G_CALLBACK (on_btnPushMe_clicked), NULL);

//force show all
gtk_widget_show_all(winMain);
}

//assign C-compatible pointer
myMainWindow = self;

//return pointer to this object
return self;
}

-(void)startGtkMainLoop
{
//start gtk loop
gtk_main();
}

-(void)printSomething{
NSLog(@”Printed from Objective-C’s NSLog function.”);
printf(“Also printed from standard printf function.\n”);
}

-(void)destroyWidget{

myMainWindow = NULL;

if(GTK_IS_WIDGET (button))
{
//clean up the button
gtk_widget_destroy(button);
}

if(GTK_IS_WIDGET (winMain))
{
//clean up the main window
gtk_widget_destroy(winMain);
}
}

-(void)dealloc{
[self destroyWidget];

[super dealloc];
}

void on_MainWindow_destroy(GtkObject *object, gpointer user_data)
{
//exit the main loop
gtk_main_quit();
}

void on_btnPushMe_clicked(GtkObject *object, gpointer user_data)
{
printf(“Button was clicked\n”);

//call Objective-C function from C function using global object pointer
[myMainWindow printSomething];
}

@end

main.m

To finish I will write a main file and function that creates the MainWindow object and eventually cleans it up. Objective-C (1.0) does not support automatic garbage collection so it is important that we don’t forget to clean up after ourselves.

#import “MainWindow.h”
#import <Foundation/NSAutoreleasePool.h>

int main(int argc, char *argv[]) {

//create an AutoreleasePool
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

//init gtk engine
gtk_init(&argc, &argv);

//set up GUI
MainWindow *mainWindow = [[MainWindow alloc] initWithArgCount:&argc andArgVals:argv];

//begin the GTK loop
[mainWindow startGtkMainLoop];

//free the GUI
[mainWindow release];

//drain the pool
[pool release];

//exit application
return 0;
}

Compiling it all together

Use the following command to compile the program. This will automatically include all .m files in the current directory so be careful when and where you run this.

gcc `pkg-config –cflags –libs gtk+-2.0` -lgnustep-base -fconstant-string-class=NSConstantString -o “./myprogram” $(find . -name ‘*.m’) -I /usr/include/GNUstep/ -L /usr/lib/GNUstep/ -std=c99 -O3

Once complete you will notice a new executable in the directory called myprogram. Start this program and you will see our GTK+ window in action.

If you run it from the command line you can see the output that we coded when the button is pushed.

Wrapping it up

There you have it. We now have a program that is written in Objective-C, using C’s native GTK+ ‘bindings’ for the GUI, that can call both regular C and Objective-C functions and code. In addition, thanks to the porting of both GTK+ and GNUstep to Windows, this same code will also produce a cross-platform application that works on both Mac OSX and Windows.

Source Code Downloads

Source Only Package
File name: objective_c_gtk_source.zip
File hashes: Download Here
File size: 2.4KB
File download: Download Here

Originally posted on my personal website here.




I am currently running a variety of distributions, primarily Ubuntu 14.04.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.

Samsung Captivate SGH-i896 Meets Linux

November 7th, 2010 2 comments

Yesterday, I picked up the newly launched (in Canada) Samsung Captivate. So far, I’m extremely impressed with the device. The super amoled display is gorgeous, the touch screen is responsive, and the UI is stunning to look at and use. Coming from a Blackberry Curve 8310, this phone is like a digital orgasm.

Once I finished gushing over how awesome this phone is, I decided to try and get it to interact with my Linux Mint 9 Isadora install. For now, I just want to be able to transfer images and music to and from the device, although later on, I’d like to get a development environment set up and try my hand at writing some apps.

My first try at getting the phone to play nicely with Linux was not successful. It took me a little bit of fooling around before I could figure it out, but here goes:

  • On the phone, navigate to Settings > Applications > USB Settings and make sure that ‘Ask on Connection’ is selected
  • Plug your phone into the a USB port, and when prompted, select ‘Mass Storage’ from the dialog that appears on the phone
  • At this point, if you open up your Computer in Nautilus, you should see an icon that says something like SAMSUNG SGH-I896, but you won’t be able to interact with it in any way
  • On the phone, grab the notification bar at the top of the home screen and drag it down
  • In the notifications area, tap USB Connected, and when prompted, select Mount from the dialog
  • Back in Nautilus, the icon under Computer should now say something like SAMSUNG SGH-I896: 14GB Filesystem, and you should be able to read and write to the card

With these steps complete, I was able to interact with the phone through the file system and from within Banshee and FSpot. I’m not sure why the phone won’t allow Linux to mount its storage devices by default when in Mass Storage mode, but this little work around seems to make it behave correctly.

Drop me a line in the comments if you have any Linux/Android compatibility questions, and I’ll do my best to help you out.




On my Laptop, I am running Linux Mint 12.
On my home media server, I am running Ubuntu 12.04
Check out my profile for more information.

One week, three distributions (Day 7: Conclusions)

October 24th, 2010 No comments

Well it’s been an interesting week. I’ve gotten to try out three new distributions and share my thoughts with everyone here. My original goal was to see which one of these distributions offered the best first impression and declare that one as the ‘winner’. However in actually working my way through these great releases I have changed my mind somewhat.

What makes a great distribution great?

This is a very interesting question that I’m sure would generate a wide array of unique and passionate responses. Some prefer ease of use, while others demand nothing less than complete control over what they can tweak. There are people who swear by using nothing but open source solutions, while others are happy to add proprietary code into the mix as well. This is the great thing about Linux, we get so many choices which means we get to decided what we want.

Unfortunately this has also resulted in a bit of distribution zealotry; like choosing Ubuntu over Fedora, or Arch over OpenSUSE is somehow taking a side in some giant war. Instead of all of the infighting we should be celebrating the fact that when Ubuntu comes out with a new piece of user-friendly software, or Fedora introduces a new awesome technology, we can share and integrate it right into all distributions.

So what makes a great distribution great? A distribution is great because it works for you, it suites your needs, fits your personality and lets you do what you want to do. At the end of the day isn’t that what open source is about?

Final thoughts

OK enough of the preachy writing. I think that all of the distributions I have tested this week were very good. They each embody the spirit of open source in their own little ways.

Kubuntu 10.10

Awards: The most improved release. Most likely to recover lost KDE fans.

I was extremely impressed with this release. The folks over at the Kubuntu project deserve a huge round of applause for their continued work on this often forgotten Ubuntu sibling. This release is unlike any other that I’ve tried from Kubuntu, and I hope it marks a turning point in the distribution’s history. If the next release sees anywhere close to the improvement that this release did it may even unseat Ubuntu as the go to Linux release. If you haven’t tried out this release I urge you to give it a shot.

Ubuntu 10.0

Awards: The most refined. Most likely to be installed on a new Linux user’s computer.

Ubuntu makes a return from its last long-term support (LTS) release with this stellar offering. For a release that is meant to experiment with changes, which might eventually be incorporated into a future LTS release, this version feels as polished as ever. The new theme, font, store and integration features make this an absolutely solid release. If you’re an Ubuntu user I’m sure you have already upgraded. If you develop for a different distribution, this might still be worth looking into if only to steal the good parts for your release of choice. Either way I think this release of Ubuntu marks a whole new level of application integration on the Linux desktop and I am excited to see where they go next with it.

Linux Mint Debian Edition

Awards: The most advanced. Most likely to see the fastest improvement.

For people who have been using Debian for a while now this release will feel right at home. It combines the best parts of Debian testing, modern software, stability and thousands of packages, with the Linux Mint team’s renown ability to iron out the kinks in any Linux distribution. I think that this release will see so much improvement in the next couple of months that it has the potential to steal users away from other rolling release distributions with its easy to use desktop. While this current iteration does have some issues I hardly think that they are anything to run away from. For technical users looking for the newest stuff, while hoping avoiding the vast majority of headaches other distributions can cause, this one is for you.

My Choice

For me personally I have been very happy with Linux Mint 9 and look forward to version 10 when it ships later this year. Until then however I think I will be sticking with the one that most closely resembles my current set up. No not Linux Mint Debian Edition, but Ubuntu 10.10. That being said I do look forward to giving Fedora 14 and Linux Mint 10 a ride soon.




I am currently running a variety of distributions, primarily Ubuntu 14.04.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.

One week, three distributions (Day 6: Linux Mint Debian Edition)

October 23rd, 2010 7 comments

To round out the week I installed the newly released Linux Mint Debian Edition (LMDE). Like the other posts I have made I will walk you through my first impressions as well as the general overall feel of the distribution.

Install

LMDE’s install is something quite different from the experiences I had with Ubuntu 10.10 and Kubuntu 10.10. While it is still a very polished installer (complete with a single slide slide-show even!) it does lack a couple of features that make it far less user friendly. Where the other installers basically held your hand in every way, LMDE requires at least some technical understanding in order to complete. For instance there is no friendly auto-partition step, instead LMDE leaves the user to do it manually with GParted. While hardly the end of the world it is enough of a challenge that you could no longer just hand this disc to your non-technical friend and let them have at it. However once that step is complete the installer is very straight forward and rips through the installation in a matter of minutes.

First boot and drivers (oh my!)

I have to say that my first impression of LMDE was a mixed one. On one hand it spewed text everywhere as it booted, which I assume came from its Debian heritage. On the other hand the boot was ridiculously fast. I know it’s been one of Canonical’s goals to make Ubuntu the fastest booting Linux distribution but I have to say that a stock install of LMDE (and maybe even Debian Testing) will easily give that claim a run for its money.

Once at my desktop I was presented with a very familiar Linux Mint set up. If you were to place this desktop next to Linux Mint’s Ubuntu derivative (Linux Mint 9 for instance) I would be very hard pressed to spot any differences.

Unfortunately one thing that was glaringly missing was the lack of the Ubuntu automatic driver detection and install system jockey. Without jockey I had to resort to Fedora-esque measures in order to install the correct driver which is necessary for correct display and power management on my laptop. For reference here are the steps I took in order to install the proprietary ATI driver and setup my X configuration:

1) Run the following command in order to make sure you have the most recent package list

$ sudo apt-get update

2) You may want to now install all available updates so that we start with the most recent kernel

$ sudo apt-get dist-upgrade

3) Install the kernel headers so that we can configure it to work with the ATI driver

$ sudo apt-get install linux-headers-2.6-$(uname -r | sed ‘s,.*-,,’)

4) Install the ATI driver and control panel

$ sudo apt-get install fglrx-control fglrx-driver

5) From there just follow the instructions on my post here in order to generate the new X configuration file and maybe even fix your vsync issues at the same time.

I have read that jockey is currently being ported and will appear in the LMDE repositories so hopefully this small issue will be solved quickly.

Rolling release = LOTS OF UPDATES

One of LMDE’s big selling points is that it is a rolling release, which means that you will continue to get new packages and updates on your system without having to reinstall at 6 month intervals like some other distributions. Strangely though LMDE does not ship with update checking enabled which I found kind of weird. A quick forced check later and I discovered why the team may have made that choice

That’s right, almost 500 updates… Almost every package on my newly installed machine had to be replaced updated. This is definitely a release for people looking for the newest software but could easily lead to update fatigue for everyone else.

32-bit working system vs PAE kernel broken system

One of the unfortunate things about this release is that it only comes in a 32-bit version. As I run a 64-bit processor with 4GB of RAM it irks me to know that I am not using the full potential of my system. I starting looking into Physical Address Extension (PAE) kernels as a solution to this problem. PAE kernels, for those who don’t know, use a system of memory indirection in order to allow a 32-bit processor access to more than 4GB of mappable memory. In the case of Linux the PAE kernel can map up to 64GB of RAM.

After a bit of googling I stumbled upon instructions to install a PAE kernel by simply installing the linux-image-686-bigmem meta-package. Unfortunately this quick fix, as most often is the case, didn’t exactly turn out well and actually broke my GDM system. Without GDM I was unable to log into my desktop and this experiment came to an end. In the interest of time I decided to just reinstall instead of trying to troubleshoot how to fix what I had inadvertently broken.

Software selection

The software selection in LMDE is impressive and in many ways is what Ubuntu’s used to be. Here you will find (pre-installed) Flash, the Java and Mono runtimes, an MP3 codec and even the Gimp. Everything, like the other Linux Mint releases, is designed to make it so that the user does not have to search for solutions to missing functionality.

Because this is a rolling release it doesn’t really make sense for me to review the included software as much as it does to just mention it. For web browsing LMDE, like Ubuntu, ships with Firefox. To send and receive e-mail it calls upon Firefox’s cousin Thunderbird. Instant messaging is handled by Pidgin and your music collection is controlled by Rhythmbox. F-Spot remains as the photo manager, unlike Ubuntu which replaced it with Shotwell, while Gwibber and Totem round out the release.

Conclusion

Currently Linux Mint Debian Edition is somewhat of an enthusiast’s release. It has the potential to be a great rolling release but it’s pretty obvious that right now it needs some work to get there. For instance, why when I updated my software, did my GDM background change to a Debian one? The team over at Linux Mint knows how to polish a distribution and so I’m confident that they will do the same for Debian Edition.

Pros:

  • Rolling release which means you always have the most recent software
  • Still has that Linux Mint charm to it

Cons:

  • The distribution still needs a bit of polish before I could see myself recommending it to all but seasoned Linux users
  • Being a rolling release might result in update fatigue



I am currently running a variety of distributions, primarily Ubuntu 14.04.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.

One week, three distributions (Day 4: Ubuntu 10.10)

October 20th, 2010 3 comments

Continuing where we left off I am now ready to report my first impressions of Ubuntu 10.10. I should start by apologizing a little bit, this post is going up one day late (even though I had already finished writing most of it). With that out of the way let’s begin.

Install

The install, as one would expect, is exactly the same as the one featured in Kubuntu. As noted before I have nothing but praise for this installer and still think it is one of the best, if not the best, installer on any Linux distribution.

‘New’ Theme

The new theme found in this release of Ubuntu is beautiful. It’s hard to place exactly what makes this theme so nice but Canonical has done a wonderful job iterating the old theme from 10.04 and making some subtle changes that have an incredible overall effect.

This level of polish even extends to the new sound menu. Canonical has implemented new sound APIs which allow media players to integrated natively with the sound menu in a way that is just awesome.

Image Shamelessly Stolen Last Minute from Another Website

Heck even the calculator looks better with the new theme!

Software

As with my previous post, I decided to take a look through the default installed software and see how it presents Ubuntu as an all-in-one desktop experience.

Empathy (2.32.0)

The instant messaging client of champions… or at least those who thought Pidgin was too complicated. My understanding for why this client replaced Pidgin was that it was set to offer features (like audio and video calling) that Pidgin was simply too slow at incorporating. Up until this release that reasoning has been nothing more than a pipe dream in my experience. Yes some people have had better luck than others but I have never had it really work all that well. This time however I did get it to work and, after installing the Ubuntu Restricted Extras package, also got it to successfully negotiate a full video call with the proper Windows Live Messenger client.

Evolution (2.30.3)

First off I have to just say “wow”. The first time I used Evolution was back on Ubuntu 8.04 and I absolutely hated it. Now however I’m starting to sing a different tune. Evolution not only looks better but also performs better as well. It includes many features, like calendar and PGP integration, that my favourite e-mail client Thunderbird requires add ons to accomplish.

Furthermore it integrates completely into the Ubuntu message centre which is a nice touch. I can’t even get Thunderbird to minimize to the system tray on Linux. All told I must say that I’m very impressed with with this version of Evolution.

Gwibber (2.32.0.1)

Gwibber is Ubuntu’s answer to all of your social media sources. It has the ability to combine all of your feeds, from Twitter to Facebook, in one convenient location. From there you can easily catch up on what your friends are doing and interact with them, all from one easy to use centralized location.

Unfortunately this universal nature is exactly where the Gwibber experience starts to fail. Because it works with everything it often fails to excel at anything in particular. Because of that I just don’t see myself using this application all that often. It is nice that it integrates into the Ubuntu message centre though.

Firefox (3.6.10)

Ubuntu’s default web browser is Firefox which, let’s be honest, I’m sure you know all about. I will say one thing about this browser though; I hope Firefox 4 improves the speed significantly or I think it will continue to lose users to Chrome.

Transmission (2.04)

For downloading torrents Ubuntu 10.10 continues to ship with the Transmission BitTorrent client. It is a more or less unremarkable client that places a large emphasis on simplicity. It is also the only BitTorrent client I know that warns you not to pirate things.

It also might just be me but for some reason this version of Transmission seems to have more features than I remember.

Rhythmbox (0.13.1)

This version of Rhythmbox contains the Ubuntu One music store which I decided to poke around in for a bit. It seems to be a full capable store with many popular artists.

Unfortunately I did manage to make it crash in a rather hilarious way…

Yes that’s right, the Ubuntu One music store is being run off of a Microsoft IIS web server.

Rythmbox the program also suffers from some annoying issues which were well covered by Jon on one of his previous post. One that particularly annoys me is the encoding options. As long as you stick to the defaults the application is very easy to use, but the second you want to adjust the settings you get stuck trying to decipher GStreamer command line options.

Totem Movie Player (2.32.0)

For video playback we get stuck with Totem. Its not that I think it’s the worst video player in the world, it’s just that it doesn’t do anything particularly well. Back when I was using Kubuntu’s Dragon Player I felt the same way but at least Dragon Player was able to provide video playback devoid of various vsync issues. To be fair though this might be an issue with Compiz vs KWin and not directly related to the video software.

PiTiVi (0.14.5)

PiTiVi, besides having a horrible name, is actually a very good piece of software. It is essentially a Windows Movie Maker clone and makes no excuses for it, which in this case is probably a good thing. Within just a couple of minutes of never using the program before I was able to import the two free clips that come with Ubuntu, one movie and one song, strip the audio from the movie clip and replace it with the song’s audio. One button click later my movie was rendered in glorious 1080p. That’s a lot of p’s!

For those wanting a bit more power, the software also seems capable of rendering to any (logical) combination of containers and codecs you might have installed on your system.

Ubuntu Software Centre (3.0.4)

And finally the big one. This release brings with it the first paid application to the new app store. This has already  been written about quite a lot, and while I think its a good thing, I do have some issues with it. The biggest issue that I have is that with only one application in the store people will probably never check it out again, even if new applications are added later. In my opinion what they should have done was created a beta program that people could opt into and test the store out. That would have given Canonical the feedback they need while still not spoiling the store for potential future users.

Conclusion

This release of Ubuntu is a solid one and deserves much praise. While I could give or take on some of the default included software, but then again who couldn’t, I do think that this release has an overall polish that simply hasn’t been as strong in previous releases. This is what Ubuntu 10.04 should have been from the start and makes me look forward to what is still yet to come.

Pros:

  • An unparalleled polish and sheen that no other distribution has
  • An updated software roster that is showcases some of the best Linux application-desktop integration I have ever seen

Cons:

  • While the polish is nice there really isn’t that much difference from 10.04
  • The Ubuntu Software Centre store release may have been a bit premature



I am currently running a variety of distributions, primarily Ubuntu 14.04.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.
Categories: GNOME, Tyler B, Ubuntu Tags: ,

Linux Media Players Suck – Part 1: Rhythmbox

May 5th, 2010 50 comments

The state of media players on Linux is a sad one indeed. If you’re a platform enthusiast, you may want to cover your ears and scream “la-la-la-la” while reading this article, because it will likely offend your sensibilities. In fact, the very idea behind this series is to shake up the freetards’ world view, and to make them realize that a decent Winamp or iTunes clone need not be the end of the story for media management and playback on Linux.

This article will concentrate on lambasting Rhythmbox, the default jukebox software of the GNOME desktop environment. Subsequent posts will give the same treatment to other players in this sphere, including Banshee, Amarok, and Songbird (if I can find a copy that will still build on Linux). If you’re a user of media players on Linux, keep your own annoyances firmly in mind, and if I don’t mention them, please share in the comments. If you’re a developer for one of these fine projects, try to keep an open mind and get inspired to do better. A media player is not a hard thing to build, and I do believe that together, we can do better.

For the remainder of this article, please keep in mind that I am currently running Rhythmbox under Kubuntu 9.10, so you’ll see it rendered with qt widgets in all of my screen shots. This doesn’t affect the overall performance of the app, but leads nicely into my first complaint:

  1. Poor Cross-Platform Support: There are basically two desktop environments that matter in the Linux world, GNOME and KDE. Under GNOME, Rhythmbox has a reasonably nice icon set that is comparable to other media players. Under KDE, the qt re-skinning replaces those icons with a horrible set of mismatched images that really make the program look second-rate:
    Isn't this shit awful?

    As you can see, these icons look terrible. Note that there isn't even an icon for 'Burn' and the icon for 'Browse' is a fucking question mark.

    This extends to the CD burning and help features too. They rely on programs like gnome-help and brasero to work, but don’t install them with the media player, so when I try to access these features under KDE, I just get error messages. Nice.

    Honestly, who packaged this thing?

    This is just plain stupid. Every package manager has the concept of dependencies, so why doesn't Rhythmbox use them?

  2. The Player Starts in the Tray: Under what circumstances would it be considered useful for a media player to automatically minimize itself to the system tray on startup? It doesn’t begin to play automatically. The first thing that I always do is click on the tray icon to maximize it so that I can select some music to start playing. Way to start the user experience off on the wrong foot.
  3. Missing Files View: This one is just plain stupid. Whenever I delete a file from my hard drive, it shows up under the ‘Missing Files’ view, even though my intent was clearly to remove the file from my library. Further, I use Rhythmbox to put music on my BlackBerry. Whenever I fill it with music, I first delete the files on it. Those files that I deleted from my mobile device? Yeah, they show up under ‘Missing Files’ too, as if they were a legitimate part of my library! So this view ends up being like a global garbage bin that I have to waste my precious time emptying on occasion, and serves no useful purpose in the mean time. Yeah, I deleted those files. What are you going to do about it?

    Seriously, why the hell are these files in here?

    As you can see, I've highlighted the fact that Rhythmbox is telling me that these files are missing from my mobile device. No shit.

  4. Shared Libraries that I can’t Play: So we’ve known for awhile now that Apple broke the ability to connect to iTunes via the DAAP protocol, and that it’s not possible to connect to a shared iTunes library from Linux. If that’s the case, why does Rhythmbox still show these libraries as available? And how come it shows my library under this node? Why would I listen to my own shared library? Finally, I’ve found that even if I’m running Rhythmbox on another machine, I still can’t connect to my shared library. This feature seems to be downright broken – so why is it still in the build?
  5. The GUI and Backend are on One Thread: I keep about half of my music collection as lossless FLAC files. When I want to rip these files to my portable media device, they need to be converted to the Mp3 format. Turns out that Rhythmbox thinks it appropriate to transcode these files on the same thread that it uses to update its GUI, so that while this process is taking place, the app becomes laggy, and at times, downright unusable. Further, the application doesn’t seem to give me any control over the bitrate that my songs are transcoded to. Fuck!
  6. Lack of Playlist Options: Smart playlists in Rhythmbox are missing a rather key feature: Randomness. When filling the aforementioned mobile device with music, I would like to select a random 4GB of music from my top rated playlist. But I can’t. I can select 4GB of music by most every criteria except randomness, which means that I get the same 600 or so songs on my device every time I fill it. This is strange, because I can shuffle the contents of a static playlist; But I cannot randomly fill a smart playlist. Great.

    If you have a device that has a small amount of memory, this feature is essential

    It's funny; I really want to like Rhythmbox, but it's shit like this that ruins the experience for me

  7. Columns: What the fuck. Who wrote this part of the application? When I choose the columns that are visible in the main window, I can’t re-order them. That’s right. So the only order that I can put my columns in is Track, Title, Genre, Artist, Album, Year, Time, Quality, Rating. Can’t reorder them at all, and I have to go into the preferences menu to choose which ones are displayed, instead of being able to right-click on the column headers to select them like I can in every other program written in the last 10 years. This is just ridiculous. I know that the GTK+ toolkit allows you to create re-order-able columns, because I’ve seen it done.

    This is just so incredibly backward. I mean, columns are a standard part of the GTK+ toolkit, and I've seen plenty of other apps that do this properly.

    Why, for the love of God, can't these be re-ordered?

  8. The Equalizer is Balls: No presets, and no preamp. So I can set the EQ, and my settings are magically saved, but I can only have one setting, because there doesn’t appear to be a way to create multiple profiles. And louder music sounds like balls, because I can’t turn down the preamp, so I get digital distortion throughout my signal. It would be better to just not have an equalizer at all.

    I mean, it works. But...

    I mean, it works. But...

  9. Context Menus Don’t Make Sense: Let’s just take a look at this context menu for a moment. There are three ways to remove a song from a playlist. You can Remove the song, which just removes it from the playlist, but not from your library or your hard drive. Alternatively, you can select Move to Trash, which does what you might expect – it removes the song from the playlist, the library, and your computer. I’ve got a problem with the naming conventions here. The purpose of Remove isn’t well explained, and confused the hell out of me at first. In addition, when browsing a mobile device that you’ve filled with music, the GUI breaks down even further. In this case, you can still hit Remove, which seems to remove the song from Rhythmbox’s listing, but leaves the file on the device. So now I have a file on my device that I can’t access. Great. The right-click menu also has the ability to copy and cut the song, even though there is no immediately obvious way to paste it. For that functionality, you’ll have to head up to the Edit menu.

    The right-click context menu

    I'm starting to run out of anger. The 10,000 papercuts that come along with this app are making me numb to it.

  10. No Command Line Tools: Now, normally, this wouldn’t bother me too much. A music library is something that’s meant to have a GUI, and doesn’t generally lend itself to working from the command line. In this case however, command line access to Rhythmbox would be really handy, because I’d like to set up a hot key on my keyboard that will skip songs or pause playback. Unfortunately, there’s no way to do that within the software, and it doesn’t have any command line arguments that I can call instead. Balls.

There you have it, 10 things that really ruin the Rhythmbox experience. While using this piece of software, I felt like the developers worked really hard to build something that was sort of comparable to Apple’s iTunes, and then stopped trying. That isn’t good enough! If we want to attract users to our platform of choice, and keep them here, we need to give them reasons to check it out, and even more to stick around. If I say to you that I want to have the best Linux media player, you tend to put the emphasis on the word Linux. Why not just make the best media player? GNOME is on at least half of all Linux desktops, if not more. Why hinder it with software that gives people a poor first impression of what Linux is capable of? Seriously guys, let’s step it up.




On my Laptop, I am running Linux Mint 12.
On my home media server, I am running Ubuntu 12.04
Check out my profile for more information.

Restore the default Linux Mint 8 theme and colours

January 18th, 2010 3 comments

After playing with the GNOME Appearance preferences on my new Mint 8 installation, I managed to completely lose the color scheme, window decorators and other options for the default Helena theme – which I actually liked.

Due to an unrelated incident that I will blame on an abuse of Compiz (which really doesn’t play nice with the Xinerama extension), I recreated my GNOME profile this morning and saved out the default theme. For my own future reference (and anyone else who doesn’t want to nuke their profile), I’ve uploaded the default Mint 8 theme. Extract it to your ~/.themes/ directory and it will appear in Control Center > Appearance as “Default Mint Theme”.

This theme should theoretically work on any Linux distribution with GNOME, as well, but you’ll need the “Shiki-Wise” control set, “Shiki-Colors-Metacity” window border, and the “GNOME-Wise” icon set for more than just the gray and green hues.




I am currently running various *BSD variants for this Experiment.
I currently run a mix of Windows, OS X and Linux systems for both work and personal use.
For Linux, I prefer Ubuntu LTS releases without Unity and still keep Windows 7 around for gaming.
Check out my profile for more information.

Trying Mint – I likes what I sees.

January 16th, 2010 8 comments

While my initial plan for January was to stick with Windows 7 and perhaps try out Fedora 12, a bad DVD interrupted the Fedora install progress. Out of sheer convenience, I’d planned on running Linux Mint in a VM and had pulled the ISO earlier in the week. “Aha!” I thought. “I’ll install this instead of Fedora and see what’s what.”

My initial impressions are that Mint is perhaps the first Linux distribution that I’d enjoy using on a day-to-day basis. With only a few minor tweaks (activating multiple monitors and using optical out for sound), I have a completely functional desktop environment. Compiz is totally integrated into the experience, degrades gracefully if needed, and is used to enhance the UI rather than provide unneeded eye candy.

Taking a page out of Jon’s book, I also installed Banshee for media playback. What a difference from previous media player experiences – my BlackBerry was automatically detected, synced with my library and folders were built properly in the MediaCard/BlackBerry/music directory. Now, all I need is some better music and I’ll be set!




I am currently running various *BSD variants for this Experiment.
I currently run a mix of Windows, OS X and Linux systems for both work and personal use.
For Linux, I prefer Ubuntu LTS releases without Unity and still keep Windows 7 around for gaming.
Check out my profile for more information.

Linux Mint Helena: C’est fantastique!

December 16th, 2009 No comments

Last night I upgraded to Linux Mint 8 (Helena), x64 edition. Based on Ubuntu 9.10 (Karmic Koala), Helena has so far proven to be absolutely great and the panacea to my Linux problems. By far most of my issues with Gloria seemed to come from hardware incompatibility. Well, those are all in the past now.

Audio

There was a minor issue in Gloria with regards to my computer’s sound. Basically, although my laptop’s volume had something like 15 increments, Gloria shoehorned those into four categories: Really Goddamn Loud, Loud, Barely Audible, and Mute. That is no longer the case – I finally have the full spectrum of sound available on my laptop. At last, I can stream terrible YouTube videos and listen to them in the coffee lounge without being worried what the people ten tables down from me think!

Visual

First off, I have to compliment the appearance of Helena. The default theme is slick and very easy on the eyes, and the default background is excellent. I have approximately 50 wallpapers on my computer, and the fact that I haven’t changed it out of an ADD fit really speaks for the choice.

Now, onto more interesting matters: my media players work, my monitor works, and everything works damn well. In an earlier post, I documented Mint’s inability to take advantage of my brand new 1080p monitor. Unlike my previous experience, changing resolutions was a breeze and – most importantly – my monitor finally worked in full 1080p glory. At last, everything looks absolutely gorgeous. Watching videos has also been a much smoother experience in Helena. I’m not having any difficulty jumping to random spots in video files – previously, this would do anything between slowing down the video temporarily to crashing the media player. (As a note, I have no idea if Helena is actually responsible for “fixing” that last bit, but I’m willing to give them the benefit of the doubt here).

Other bugs

The desktop shift that I occasionally complain about is nowhere to be seen… yet. I never could figure out how to recreate it, so I can’t definitively say whether it has disappeared.

Compliments to the Mint people

Having seen what the open source community can do to improve and support a product, I have to say I’m extremely impressed with the work they’ve done. Just last week I stated that I would probably run a dual boot with Windows 7 as my primary system and Mint or Ubuntu as my secondary system. Well, after installing and using Helena, I have to say I’m strongly considering sticking with Mint and possibly having Windows 7 as a secondary OS for compatibility issues. I can definitely say that I wasn’t expecting a free operating system to work as well as this one does. Bravo.

Categories: GNOME, Linux Mint, Sasha D Tags: