Working with the Windows-like environment of the Pi

UPDATE: After reading this, check out this follow-up post that shows MS Office type applications, e-mail apps, etc.

Perhaps one of the stumbling blocks for some people with “investing” the $35 in a new Raspberry Pi 2 or the $55 in a Banana Pro is that “I don’t really know Linux, and besides, isn’t is all command-line stuff?”

It can be. And yes, most of the things you’d do you can do easiest and most-consistently through the command-line. However, let’s not forget these have “Windows”-like environments too, called X-Windows. But how do you use those?

Q:  Do I have to hook the Pi to my TV?
A:  No, not at all! You can EASILY Remote Desktop in, or launch windows locally.

In fact, you might be surprised how simple this all is – let’s take a look at two different ways to use the most common OS for the Pi’s, Raspbian (a Debian-Linux variant). There are many modern apps available to run directly on the Pi which are worth checking out!

image image image image image image image

“Wait, all of these run on the Pi?”, you ask. “Yep!” Granted, this is not an exhaustive list by any means, it’s just some of the popular products that you might know, which easily run on a Raspberry Pi or Banana Pi.

Using Remote Desktop (RDP):
You’ll likely say “But wait, this is Linux, don’t I have to use VNC or some other horrible app like that?”. You CAN use VNC, but yes, it’s quite terrible. Instead, wouldn’t it be cool to be able to connect to your Pi with RDP?

Assuming you have a brand new Pi (Raspberry, Banana, Orange, or otherwise) – with Raspbian installed on your SD card, SSH into it from your Windows machine. I REALLY like SmarTTY for several reasons:

  1. SSH – It’s a full-featured Secure Shell (SSH) that “just works” with any platform (well, there are some issues with OpenVMS) – but in the year 2015, we pretty much know what terminal emulation should look like and this product nails it. All the zillions of features in those big, bloated enterprise-class terminal emulators are, in this reporters opinion, are simply not needed. If you are not familiar, SSH is what gives you a “command line” over on a remote system.
  2. SC – It has Secure Copy (sc) built-in so that from an SSH window, you can upload or download files by clicking a menu item. Super simple, way easier (and much more secure) than FTP.
  3. X Server – It has an X-Windows server built-in. This means that from the SSH command-line if you try to start an X-Window-based application, SmarTTY will automatically start an X Server and launch the program (which is running on the remote machine) and show that window on YOUR Microsoft Windows desktop! “Huh?” you say? More on that in a minute!

OK, so assuming you have a fresh Pi – it will have SSH installed by default, and networking will be turned on with DHCP. Depending on how you have your home network configured, you’ll need to find the PI’s IP address. If you have a typical home network, log into your router – which likely gives out DHCP addresses, and see if you can find “DHCP Leases” and look for an item without a name or with a name of “pi”. That will be the IP address of your Pi.

If you have the IP address, use SmarTTY to connect to it using “pi” and “raspberry” for a username and password (it’s “pi” and “bananapi”, on a Banana Pi device). When logged in, run this command:

$ sudo apt-get install xrdp

Now, reboot. This installs the X-Windows package for Remote Desktop Protocol (RDP) – no other configuration is needed! Then, open Remote Desktop Connection on your Windows computer and point to your Pi (probably by IP address, again):


log in with those same credentials as before (pi/raspberry), and click OK:


and voila, you see the desktop of the Raspberry Pi in a Remote Desktop Connection window, on your Windows computer!


this is very seamless and full-featured too. The example above is running in a window, but you can also run this as full-screen, just like any other RDP connection (note the full-screen pull-down bar at the top):


you set this when you go to connect, by the way:


Using apps in the X-Windows environment:
You might be underwhelmed at the applications that are installed by default. However, know that there are some impressive things you can install on a Pi. Even if you hate that SSH/command-line interface, it’s the simplest way to do most things. Remember that “apt-get install <package-name>” from before? Well, that’s how you easily install pre-packed software. For example:

  • “sudo apt-get install chromium” – installs the open source version of the Google Chrome browser.
  • “sudo apt-get install eclipse” – installs the full Eclipse development IDE
  • “sudo apt-get install wireshark” – installs the network diagnostic tool Wiresharp
  • “sudo apt-get install mysql-server” – installs the popular MySQL RDBMS database server.
  • “sudo apt-get install mysql-workbench” – installs MySQL Workbench, for administering the MySQL database server.
  • “sudo apt-get install phpmyadmin” – installs the popular “phpMyAdmin” website tool for administering a MySQL Server.
  • “sudo apt-get install mono-develop” – installs the Microsoft .NET development IDE called MonoDevelop, and the Mono Framework (you’ll also need: “mono-xsp4”, “”, and “nunit” packages too)

Let us take a look at each of these in detail…

Chromium web browser:
This is the open source version of Google Chrome. So, this gives you a modern, familiar browsing experience within the Pi environment. Click the Menu, then Internet, then Chromium:


and sure enough, we see something familiar!


This is a development IDE that supports quite a few languages. It’s a bit “bulky”, but it’s extremely extensible. If you are doing Java development, it’s a no-brainer. To launch, click Menu, then Programming, then Eclipse:


by the way, as a matter of installing the package with that “apt-get” command – that’s how these icons end up in the menu. That is all automatic. So, I click the icon and viola:


Wireshark is a “network sniffer” which can be used for a number of reasons – it allows you to see the network traffic on your local network. To launch this, click Menu, then Internet, then Wireshark:


You’ll see something like this:


MySQL database server:
The MySQL Relational Database Management System (RDBMS) is very popular, very easy to use, and runs on many platforms – oh, and it’s open source/free! Since this is a server, this is mostly command-line, but is “relatively” user-friendly. During the install, you’ll be confronted with a menu/wizard which is somewhat intuitive:


MySQL Workbench:
If you work with MySQL, you know the Workbench app is the main tool for managing the server (similar to SQL Server Management Studio). Once installed, to launch that, click Menu, then Programming, then MySQL Workbench:


and then we’ll see a familiar face!


If you prefer, you can install this VERY robust web tool for administering the local MySQL database server. To launch it, click Menu, then Programming, then phpMyAdmin:


that will pop open a browser window which goes to the local web server (which is automatically installed with the package). You can take that URL and open it in Chromium if you’d like too:


OK, if you are a .NET developer – perhaps you know that there is a parallel project called “Mono” which is an open source version of the .NET Framework. This has been made available on many of the popular platforms. Well, Raspberry Pi and Banana Pi are among those platforms! After you run the above packages, look in your Menu:


and voila, we have a fairly-modern .NET environment:


“Whoa-whoa, wait a second, why did you say ‘fairly-modern’?”, you ask. Weeellllllll… What is available via that “apt-get” package is somewhat old. It only supports up to .NET 4.5. That also means it only supports up to MVC 3, for example too. So, if you want to make a command-line app, service, or MVC 2 or 3 website – this has most of the major functionality of Visual Studio.

However, this is definitely not Visual Studio.

What I mean is, there is no Nuget, no CodeLens, no built-in MSTest (you can use NUnit instead, which is near-identical to MSTest in syntax):


So, it’s not exactly equivalent to the modern Visual Studio experience – but in it’s own rite, it is a very robust development environment where you can leverage your existing C# or VB skills, on Linux.

Running X-Windows applications without logging in with RDP:
So, we covered above what it’s like to connect to the X-Windows environment with RDP. However, what if you are using SmarTTY and need to run an X-Windows-based application… you don’t want to have to go connect with RDP, and launch a terminal window, etc… Instead, wouldn’t it be cool if from Microsoft Windows, from within that SSH prompt you can just launch the program and it would open? Well, that is built-in!

What you need is an X-Windows “server” on your Microsoft Windows computer. Then, the remote session needs to know to “set the display” back to your SSH session. If X-Windows on the remote computer can find your X-Windows server, it will RUN the application remotely, but display it locally. Sounds very complicated and very much like science-fiction, right? Let’s try it!

Example 1: the Cream editor:
Let’s say you were recently-released from an insane asylum and you “love” the Linux “vi” and “vim” editor but get angry that it isn’t available in X-Windows. Well, you can run:

$ sudo apt-get install cream

This installs an X-Windows based editor that has the functionality of “vim”. So, from within my SSH session without doing anything else, I can just type “cream” and it will launch a window in my Microsoft Windows environment:


The whole idea here is that from my SmarTTY session, I simply tried to launch an X-Windows application – the Pi tried, and FOUND my local X-Windows server (that magically comes with SmarTTY) and the window was launched. The window on the right is actually running over on the Raspberry Pi, but is being displayed on my Microsoft Windows desktop.

Example 2: Chromium
Remember how we installed the Google Chrome-like browser? Well from an SSH session, what happens if I try to launch that program?


What about performance?
How slow and sluggish is the X-Windows environment on a Pi? Well, if you used the first generation, single-core – it was pretty rough. However, with the Raspberry Pi 2 (a quad-core with 1GB of RAM) or Banana Pi Pro (a dual-core with 1GB RAM), it’s not bad at all. It’s about as slow and sluggish as my work computer. The “hard drive” for these devices is, in this case, a “Class 10” SD card (10MB/second). The higher the number, the faster it is – but that is the bottleneck; that’s the fastest that is supported. That means these SD cards are slower than traditional, rusty, spinning hard disks.

With that said, with each of the above apps – I spent a few hours last night via RDP running full-screen and there were only a handful of times where it hit me that it was slow. For the most part, it was very usable and the UI stays responsive. It’s clear you’re not working on a high-end computer, but it is still very useable as a workstation, in my opinion.

Remember that the primary intention of the Raspberry Pi Foundation was to hook these to monitors and make it so you could have a real, but economical computing experience with a Windows-ish environment, and they’ve done that!

Wrapping up…
Almost all of the posts I’ve written about on this site about the Pi platform have been about using it as a server of some sort. However, the things mentioned here give you a small taste of the interactive computing environment it provides too. As you can see, you have a full-fledged computer.

Just to recap though, ALL of the things we talked about above ran on this $35 computer that is about the size of a credit card. All the software mentioned above is also free. Let that sink in a second!

To me, that is what makes this such an compelling platform – it is an impressive, functional computing environment that is this small:


and it costs $35 (plus the cost of an SD card). Everything else you might do with it (or you might do with it, with your kids – see here, here, and here) – is limited only by your imagination! This is why I think every kid should have access to Pi. Can you think of anything that offers so much, for a mere $35?

Doing anything fun or exciting with your Pi? Leave a comment below!

Posted in Computers and Internet, General, Infrastructure, Linux, Mono, New Technology, Open Source, Professional Development, Python, Raspberry Pi, Uncategorized, Visual Studio
One comment on “Working with the Windows-like environment of the Pi
  1. […] As previously discussed, I wanted to explore what other Windows-like apps are available for the Pi. Since my last post though, I realized I forgot entire swaths of functionality! […]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.


Enter your email address to follow this blog and receive notifications of new posts by email.

Join 9 other followers

%d bloggers like this: