en-us pt-br

Super Nintendo history

banner

Exactly today is the release date for the Super Nintendo Classic, one of the most loved players’ consoles.

This version, similar to what happened to NES classic, is a miniaturized version, based on a Linux mini computer.

It has 20 games in the internal memory, including the never released Starfox 2, HDMI output and support for wireless gamepads.

SNES Classic SNES Classic

On its honor, I wrote a brief console story.


Using Wiimote as wireless mouse on Ubuntu

banner

The Nintendo Wiimotes are really a nice way to interact with the desktop: you can use it as wireless mouse for presentations, as a classic old videogame gamepad or even as lightgun (aka zapper) for 8-bits emulators (like retroarch).

So, let’s install the required libraries and add some additional configurations to get it working as a wireless mouse.

Install from System Repository (Ubuntu 16.04, Retropie, Debian)

If you’re on Retropie, Debian or Ubuntu 16.04 (first release, i.e., no HWE), just install the standard xserver-xorg-input-xwiimote package:

sudo apt install xserver-xorg-input-xwiimote

Install from PPA (Ubuntu 16.04.1 or above)

If you’re in Ubuntu 16.04.1 or above (i.e., you’re using HWE), the default system package will not work with the following errors:

The following packages have unmet dependencies:
 xserver-xorg-input-xwiimote : Depends: xorg-input-abi-22
                               Depends: xserver-xorg-core (>= 2:1.17.99.902)

I’ve reported an issue and in this meanwhile built the updated package.

You can install it with:

sudo apt-add-repository -y ppa:rael-gc/utils
sudo apt update
sudo apt install xserver-xorg-input-xwiimote

Alternative: Manual build

This is not required if you got the package installed from system repository or from the PPA. Skip to Additional configurations in this case.

Build requirements

Install required packages on Retropie, Debian or Ubuntu 16.04:

sudo apt install xutils-dev xserver-xorg-dev libxwiimote-dev

If you’re under Ubuntu 16.04.1 or higher, install with:

sudo apt install xutils-dev xserver-xorg-dev-hwe-16.0 libxwiimote-dev

Then open a new terminal or do a logout/login.

Download sources

Git clone or manual download (and extract) from https://github.com/dvdhrm/xf86-input-xwiimote

Build

cd xf86-input-xwiimote
./autogen.sh
./configure
make

Install

sudo make install
sudo cp 60-xorg-xwiimote.conf /usr/share/X11/xorg.conf.d/

Additional configurations

The default config file for xf86-input-xwiimote is /usr/share/X11/xorg.conf.d/60-xorg-xwiimote.conf.

If you’re using the system package or the PPA install, this file will be overwritten every time the package is updated. A better idea should create a copy named /usr/share/X11/xorg.conf.d/61-xorg-xwiimote.conf and use it to avoid package overwrite.

Enable IR

Of course, enable IR if you’re using a USB Wii sensor bar.

Edit the config file and add under “Nintendo Wii Remote” section:

	Option "MotionSource" "ir"

Enable mouse clicks

By default, if you press wiimote button A, it’ll produce a Enter key press.

To change this, edit the config file and add under “Nintendo Wii Remote” section:

	Option "MapIRA" "left-button"
	Option "MapIRB" "right-button"

Mimic 8bitdo Zero gamepad in keyboard mode

Edit the config file and add under “Nintendo Wii Remote” section:

	Option "MapOne" "KEY_G"
	Option "MapRight" "KEY_J"
	Option "MapLeft" "KEY_D"
	Option "MapRight" "KEY_C"
	Option "MapUp" "KEY_E"
	Option "MapDown" "KEY_F"
	Option "MapPlus" "KEY_O"
	Option "MapMinus" "KEY_N"
	Option "MapHome" "KEY_ESC"

Restart X.org

You’ll need to restart your X.org to get all changes working. Usually in Ubuntu, a logout/login is enough.

Pair the wiimote

Of course, if you didn’t pair your wiimote, pair it using the red sync button (the one in the batteries slot).

Read the manual

Seriously, the xf86-input-xwiimote manual is really nice. Give a try if you want different options:

man xf86-input-xwiimote

Updating Webkit on Ubuntu

banner

Webkit is the web browser engine used by Apple Safari, previously used on Chrome too (now using a Webkit fork), and used by several other minor browsers and applications. It’s perfect to embed in applications that requires some HTML/JS/CSS rendering.

I’ve used in my simple Slack client, ScudCloud, which is a traditional Qt application. It’s a different approach than the official client: it (the oficial client) uses Electron, which is a Node.js runtime using Chromium for front end rendering. Like described in Wikipedia:

It allows for the development of desktop GUI applications using front and back end components originally developed for web applications.

I.e., an entire browser included instead of just the web browser engine. While it’ll make easy for people without desktop development skills develop a packaged version of a website, or create a desktop program using web technologies it’ll pay the footprint in memory usage.

Webkit is packaged for several operating systems, including Ubuntu, but there is a problem: the version included in 16.04 stopped to properly work with latest Slack updates, due modern CSS usage that was poorly rendered by the distro default webkit.

In the past I’ve pushed some CSS/JS tweaks in the ScudCloud side to make it work (basically re-writing some stuff to the older and supported syntax), but this time I preferred a different approach: update the webkit version in Ubuntu.

The task would be not easy, but for my lucky, I found that some people still prefers embed webkit too and were packaging more updated versions to Qt applications under Debian.

So, I’ve got the package sources and published in the ScudCloud PPA, which will be automatically available for all Ubuntu users of ScudCloud under Ubuntu 16.04.


See all