3

I'm sure I'm not the only one who has run into this situation before. I have a mouse-input-oriented application designed only for PC that would work fantastically on my tablet, but running it through a remote desktop application like Splashtop gives me the taskbar, the window border, and often an unwanted menu bar here and there, too. I'd love to just run this application in fullscreen on my tablet, with a clean interface, and using touch control to emulate mouse input. What are some methods that I can look into accomplish this?

1

1 Answer 1

5

This is a situation I have often run into (in my case, often when trying to play visual novels), and it requires a lot of fiddling to get working nicely for each particular setup. However, it is definitely possible, so I thought I'd post a few methods for doing this here. I'm going to cover using Windows or Ubuntu as the host computer, and using Android or iOS as the client tablet. The information gathered here should help you get started in the right direction to apply this to your specific situation, though- for example, if you want to use OS X as a host for a Blackberry Tablet.

Most of the configuration for accomplishing this task is on the host PC's end. We're going to set up the host PC to be able to do the following:

  • Allow Remote Desktop Connections to the host through either RDP or VNC
  • Remove Window Decorations on a per-app basis so that the apps we launch will appear to be fullscreen
  • Hide elements of the OS that we don't need for this particular application.

I'm going to start with Windows. For this example, I'm going to use Windows 7 and run a visual novel game that launches in its own window that has a menu bar and renders at 800x600.


Windows Host Configuration

First thing we're going to have to do is configure the host Windows PC to allow remote connections. The two options I'm going to look at for remote access are RDP and VNC. RDP stands for Remote Desktop Protocol, and comes preinstalled on every Windows machine. It usually communicates information about the windows that should be rendered to the client, and the client renders them in its own preferred resolution. It can also send sound to the client by hooking a virtual audio device. VNC stands for Virtual Network Computing, and is a standard for remote access in which the entire screen, at the resolution it is on the host desktop, is captured and sent to the client. It doesn't usually have audio support, and tends to be slower than RDP because it sends the full image of the screen, with optional JPEG compression, whereas only nonstandard elements in RDP have to be sent this way. Additionally, RDP can be configured to allow multiple sessions, whereas VNC cannot. However, RDP is not without its faults- because it encloses things in the ways that it does, not all applications will be able to launch in an RDP session- most notably, DirectX applications, or any application that tries to go into a "true" fullscreen (ie not just a borderless window).

To summarize, RDP is a more elegant implementation for Remote Access on Windows machines, but it fails to correctly handle some applications. VNC is a more brute-force method in that it sends the entire screen rendered as it is on the host to the client. This does, however, ensure higher application compatibility than RDP can offer.

In this case, I am going to use RDP rather than VNC for a few specific reasons:

  1. I can run multiple sessions
  2. I can specify resolution client-side
  3. RDP comes preinstalled on Windows machines.

The rest of this section, will, as such, reflect configuration that is specific to RDP. If you would like to use VNC instead, however, I suggest that you install TightVNC to act as your VNC server on a Windows machine.

The first and most important step to configuring RDP is, of course, enabling it. From either the Desktop or Start Menu, right-click on Computer and choose Properties, then, in the window that appears, under "Computer name, domain, and workgroup settings" click Change settings. In the window that appears, go to the Remote tab. In the "Remote Desktop" Section, make sure the radio button selected is either the second or third choice, "Allow connections from computers running any version of Remote Desktop" or "Allow connections only from computers running Remote Desktop with Network Level Authentication". Because our client system is going to be a tablet and I can't guarantee that that device will have the higher security compliance necessary for the third option, I suggest using the second option. However, you can use the third option- you will just have to test if it works with your tablet yourself.

Once you've chosen the second or third radio button, hit OK. Remote Desktop is now enabled! If you went to any other Windows PC on your network right now and ran the command mstsc (That's Microsoft Terminal Services Client) and gave it the name of the computer you just enabled Remote Desktop on, you would be able to log in and control that computer remotely. Neat! However, you'll notice if you try this that the host will be logged out and will sit at a lock screen while you are using it remotely. This is because the host is currently configured to only allow one session at a time. If we change it to allow multiple sessions, then you could use your computer normally while it also acts as a host for the PC application running on your tablet. So let's try that!

Run gpedit.msc from a run prompt (easiest way to get to one is by hitting Window + R), and then in the left pane navigate to Local Computer Policy -> Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Connections and then in the right pane, find the key called Restrict Remote Desktop Services users to a single Remote Desktop Services session, double-click it, and change the radio button to Disabled. This will allow multiple concurrent sessions in RDP! With that, RDP is (finally) configured and set up. Phew! We're not done with the host just yet, though. Now we need a way of taking whatever application we have on our host and making it look all fullscreen and nice on our tablet. You're going to need the following applications:

Taskbar Eliminator is a program that will completely hide the taskbar when it is first run, and then let you show or hide it at any time by pressing Alt+T, as long as it remains running. While we could set the taskbar to autohide, there would still be a very thin line of it visible at the edge of the screen. With Taskbar Eliminator, this thin line is not present.

AutoHotkey is a fantastic application for automation and overall kickassery on Windows. We're going to use it here to remove the Titlebar, Menu bar, and Border for a given application, and also resize it to the full resolution of the screen. This will effectively allow us to make any application run in fullscreen (even something as mundane as notepad!), but because it's really just a borderless window and not /tehcnically/ fullscreen, it will work just fine in an RDP session.

The AutoHotkey script that will let you do this is:

LWIN & RButton::
WinGetTitle, currentWindow, A
IfWinExist %currentWindow%
{
   WinSet, Style, -0xC00000 ; hide title bar
   WinSet, Style, -0x800000 ; hide thin-line border
   WinSet, Style, -0x400000 ; hide dialog frame
   WinSet, Style, -0x40000 ; hide thickframe/sizebox
   WinMove, , , 0, 0, A_ScreenWidth, A_ScreenHeight ; move window to the upper-left corner and resize it
   DllCall("SetMenu", uint, WinActive( "A" ), uint, 0) ; hide menu bar
}   
return

Save it as an ahk file and run it. Now, when you Hold down the Window key and Right-Click a window, it will turn into a borderless window and be resized to the size of the desktop space's primary monitor and moved into the upper-left corner.

And with that, the host configuration for Windows is finally done! You can skip down to the iOS or Android section now to do your client configuration. Thankfully, client configuration is the easy part.


Ubuntu Host Configuration

For the Ubuntu instructions, I'm going to hold your hand a lot less- I'm going to assume, that if you're the kind of person who uses Ubuntu, you've got a bit more base knowledge and ability to tinker than the average Windows user. I'm also not going to repeat my explanation of the difference between RDP and VNC. You can refer to that explanation above, in the Windows Section.

Now that that's out of the way, let's get started. I'm going to use the package xrdp for the Ubuntu host. It's a nice rdp server package that will let us set up a very barebones X environment for the clients to use. xrdp is technically using both VNC and RDP, and it gets complicated, but... that's beyond the scope of this tutorial. sudo apt-get install xrdp to install xrdp. All of the default configuration options for xrdp should work fine for our purposes. We're going to use the lightweight window manager Openbox for the X session that these clients will use. To keep things isolated and not break your existing Ubuntu host, I suggest you make a new user for the tablet client to use. run sudo adduser somename and follow the prompts, then sudo nano /home/someuser/.xsession and add the line exec openbox-session, then save the file. You can edit the openbox rc.xml located in /etc/xdg/openbox/ if you want to, but as it is configured right now, it will work just fine for our purposes, because you can right-click the desktop area in openbox to get to a menu from which to launch applications, and you can right click the titlebar of an application in openbox to remove the window decoration (which, if done after resizing the window, gives you the desired faux-fullscreen effect). If you want to edit the openbox menu, sudo apt-get install obmenu and then run obmenu. Congrats! Ubuntu host configuration is complete!


Client Configuration

Phew, good job making it this far. The host configuration is the hard part- client config is easy, as it basically just consists of finding an RDP or VNC client for your tablet that you like! You're going to want one that covers the following features:

  • Can run the session fullscreen without any permanent toolbars around the session
  • Has reasonable speed and doesn't feel clunky to use
  • Can right click and also click-and-drag

The RDP client I use on Android is Remotix RDP, which is beautiful and has a great UI, but costs $10. A free alternative RDP client is RemoteToGo RDP for Android, which works reasonably well. On iOS, Jump Desktop is a great RDP and VNC client, but it costs $15. PocketCloud Remote Desktop is a good free alternative.

Once you've chosen your RDP or VNC client application, you'll need to configure it to connect to your host. This should be pretty straightforward. You should be able to connect by name, but if that fails, try using the IP address of the host computer instead (which can be found by running ipconfig in Windows and ifconfig in Linux). If you followed my host configuration instructions here, the RDP service on either Windows or Ubuntu will be using port 3389, the default RDP port. If you are having trouble logging in on Windows, try setting the "Domain" value to the name of your host computer, or if there is no Domain value available, prefix your username with the name of your computer followed by a backslash. When using Linux, xrdp shouldn't need a password to connect to the initial session; it'll ask for your credentials once the session is open. Remember to log in as the someuser you created.

Once you're in the session and logged in, all you have to do is the following:

  • On Windows: Run Taskbar Eliminator, Run your AutoHotkey script, open the application you want to use on your tablet, then hold the Window key and right click that application.
  • On Ubuntu: Right click the desktop to access the menu, run the application you want to use on your tablet, then resize it to the size of your desktop, right click the top border of that application, and remove the window decorator.

That's it! You're done! It's over! Now have fun doing whatever it is you wanted to do on your tablet so badly that you went through all this trouble.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.