<![CDATA[DevPy]]>https://www.devpy.me/https://www.devpy.me/favicon.pngDevPyhttps://www.devpy.me/Ghost 3.13Thu, 09 Apr 2020 20:48:47 GMT60<![CDATA[How to use Nvidia-Xrun to unlock your Nvidia laptop's full potential on linux]]>

Optimus laptops are considered a major pain to use on linux, with many different ways to use them. You can opt to use the nvidia proprietary drivers and disable your internal graphics and forgo all hopes of battery life, or disable your graphics card entirely and use integrated graphics. Or,

]]>
https://www.devpy.me/nvidia-xrun/5e8f741938bee56e1ac05e7bThu, 18 Jul 2019 01:36:00 GMTHow to use Nvidia-Xrun to unlock your Nvidia laptop's full potential on linux

Optimus laptops are considered a major pain to use on linux, with many different ways to use them. You can opt to use the nvidia proprietary drivers and disable your internal graphics and forgo all hopes of battery life, or disable your graphics card entirely and use integrated graphics. Or, you can use bumblebee, a popular effort to enable powersaving while still using your dedicated GPU, but the project is a mixed bag of bad compatibility, much worse performance than just the nvidia drivers, and zero support for vulkan and no plans to implement it.

But, fear not, nvidia-xrun is here to save you! It's a open source script that can toggle your dedicated GPU on and off for full powersaving. Nvidia-xrun provides the same compatibility as the proprietary drivers, full performance, full vulkan support all at the cost of a little convenience (as far as I can tell, you need to run the nvidia gpu in a separate desktop environment).

For newbies

Skip to the next section if you understood the introduction.

Basically, the goal of this project is to allow games and other applications that can make use of a graphics card run at full speed, the way that they do automatically on Windows. Here are a few definitions:

phrase definition
dedicated graphics card, dedicated GPU, nvidia GPU this is the high performance card in your laptop
integrated GPU, intel graphics the graphics card built into your laptops CPU
nvidia-xrun
a script that allows the high performance GPU to run applications in linux
nvidia drivers the proprietary, not open source, not free as in free beer drivers

I'll be adding to this section as I get questions so please ask if you have one. The comment section is at the bottom of the page.

How to tell if this guide is for you

On Windows, open Device Manager and open the display adapters section:

How to use Nvidia-Xrun to unlock your Nvidia laptop's full potential on linux

Image from the nvidia website. Make sure your system is similar if you plan to follow this tutorial once you install linux (or on your dual booted system).


On linux, run this command:

lspci | grep 'VGA|3D'

and make sure the output is similar to the following:

XX:XX.X VGA/3D compatible controller: Intel Corporation Graphics
XX:XX.X VGA/3D compatible controller: NVIDIA Corporation Device

If the nvidia card is not showing you might not have a driver loaded for it (such as nouveau, the open source driver for nvidia cards).

Installing what you need

This guide is centered on Arch linux, and I will not be providing support on this page. If something is broken or if it is not working, post on your distribution forums, on the nvidia-xrun github page, or linux communities on reddit that can all provide much better support. That said if there is something wrong with this guide or if you have a general question please comment. Nvidia xrun is the easiest way to use a nvidia card on a laptop in my experience and your installation should go smoothly, fingers crossed.

On Arch

Install proprietary drivers:

sudo pacman -S nvidia

Install nvidia-xrun-git from the aur (edit with your aur helper):

yay nvidia-xrun-git

Or (if you dont have an aur helper):

git clone https://aur.archlinux.org/nvidia-xrun-git.git
cd nvidia-xrun-git
makepkg -si

On other distributions

Install the nvidia drivers from your package manager (or from the nvidia website).

It's pretty unlikely that nvidia-xrun is in your distribution package manager but check anyway first.

git clone https://github.com/Witko/nvidia-xrun.git
cd nvidia-xrun

This is the structure of the script (edited from the git repo)

  • /usr/bin/nvidia-xrun - the executable script
  • /etc/X11/nvidia-xorg.conf - the main X conf file
  • /etc/X11/xinit/nvidia-xinitrc - xinitrc config file. Contains the setting of provider output source
  • /etc/X11/xinit/nvidia-xinitrc.d - custom xinitrc scripts directory
  • /etc/X11/nvidia-xorg.conf.d - custom X config directory
  • /etc/systemd/system/nvidia-xrun-pm.service systemd service
  • /etc/default/nvidia-xrun - nvidia-xrun config file

Optional (we will cover openbox later, I've found the xsession file unnecessary but if you would like, you can try to use it):

  • /usr/share/xsessions/nvidia-xrun-openbox.desktop - xsession file for openbox
  • /usr/share/xsessions/nvidia-xrun-plasma.desktop - xsession file for plasma
  • ~/.nvidia-xinitrc - user-level custom xinit script file

Use something similar to the following to set up the script (this may vary depending on distro! Especially the service portion or the X11 path). Don't blindly paste this in! Look into your distro first and modify the paths.

# inside the nvidia-xrun folder
sudo cp nvidia-xrun /usr/bin/nvidia-xrun
sudo cp nvidia-xorg.conf /etc/X11/nvidia-xorg.conf
sudo cp nvidia-xinitrc /etc/X11/xinit/nvidia-xinitrc
sudo cp nvidia-xrun-pm.service /etc/systemd/system/nvidia-xrun-pm.service

# enable the service
sudo systemctl enable nvidia-xrun-pm

# config directories
sudo mkdir /etc/X11/xinit/nvidia-xinitrc.d/
sudo mkdir /etc/X11/nvidia-xorg.conf.d/

Set bus ID

If you got nvidia-xrun from the AUR it's been done automatically. Skip this.

lspci | grep -i nvidia | awk '{print $1}'

You should get 01:00.0 or something similar. Now make a file in your xorg config directory.

# /etc/X11/nvidia-xorg.conf.d/30-nvidia.conf

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:1:0:0"
EndSection

# uncomment if you get issues

Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    #  Option "AllowEmptyInitialConfiguration" "Yes"
    #  Option "UseDisplayDevice" "none"
EndSection

Now reboot and add a desktop.

Openbox and using nvidia-xrun

This is the desktop you will run your games and nvidia applications in. This is required to make apps like steam work but you can try running nvidia-xrun *executable* instead.

Install openbox on arch:

sudo pacman -S openbox

How to use Nvidia-Xrun to unlock your Nvidia laptop's full potential on linux

Follow this guide to make it pretty

I reccomend something lightweight so that you can run two desktop environements (intel and nvidia) at once but feel free to use any desktop you want.

Add this so that it launches when you run nvidia-xrun

The file .nvidia-xinitrc:

# ~/.nvidia-xinitrc
if [ $# -gt 0 ]; then
	$*
else
	openbox-session
fi

Now you are good to go! If you haven't already, reboot. Then run nvidia-xrun in a new terminal session (not in a running DE! The shortcut for most systems is CTRL + ALT + F# where F# is 0-9. You may need to add FN) and see if openbox opens!


This is a simple command to check which GPU you are using:

glxinfo|egrep "OpenGL vendor|OpenGL renderer*"

With intel, I get the following:

[robert@rawlinux ~]$ ./gpu.sh 
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 630 (Kaby Lake GT2) 

And with nvidia

[robert@rawlinux ~]$ ./gpu.sh
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 1050/PCIe/SSE2

Now time to benchmark it! ;)

How to use Nvidia-Xrun to unlock your Nvidia laptop's full potential on linux

Credits

This article was adapted from the arch wiki. Here is the article

However it seems to be outdated as it is reccomending bbswitch and following it broke my xorg install on my laptop (as of writing this article). I'm suggesting changes there. I've also tried to make the process easier to follow. Again, if you have any questions comment down below.

]]>
<![CDATA[Actionable Linux Security and Device Protection]]>https://www.devpy.me/actionable-linux-security-and-device-protection/5e8f741938bee56e1ac05e79Fri, 28 Dec 2018 18:12:14 GMT
Actionable Linux Security and Device Protection

This article is from guest author Scott H.

Linux is generally more robust than Windows and less vulnerable when it comes to different types of attacks. However, that doesn’t mean that it is entirely secure and impenetrable. Just like any other operating system, Linux requires proper maintenance and protection against potential cyber criminals.

Protecting a Linux device from potential attacks and malware when it’s connected to the internet is very easy to do. There are many ways for protection available out there, but there are several which are great to start with.

Here are the simplest and most actionable ways Linux users can protect their devices and ensure they are as secure as possible.

Updating the System on a Regular Basis

Keeping up with security updates is one of the best ways to protect a Linux device. This is because new vulnerabilities keep popping up, and new security patches provide protection against those vulnerabilities.

However, not all system updates offer the best protection. This happens when developers don’t thoroughly test them before releasing into the software repository. That way, some defects do find their way through, so installing the latest system updates may cause serious issues. This is why the smartest thing to do is to install only the most important updates, by staying on stable options or only upgrading with major revisions.

For instance, updates that can fix specific bugs and package problems are best to install first. If there’s an update regarding the user interface, it’s best to wait until developers thoroughly test it. Once they prove it’s completely secure, you can safely update your package.

Installing Antivirus Software

Actionable Linux Security and Device Protection

Although Linux devices encounter considerably fewer viruses than their Windows counterparts, they are not immune to them. If a Linux user connects their device to the internet, they leave the door open for many potential viruses.

To prevent viruses from crawling into the system, every Linux user should have proper antivirus software. Many users think that installing one on Linux doesn’t make sense, because there aren’t many Linux viruses. However, although Linux attacks are rare, there are some Linux malware threats to be aware of.

That’s where antivirus software comes into play, so having some comes in handy.

Restricting Root Access

Logging into the Linux system as a root user attracts potential viruses and malicious software. With root-level access, many pieces of software that look legitimate but are not can find their way through to the system. This is because antivirus software cannot detect them once they have root permissions.

Such rootkits can infect the Linux system and compromise any file, making it impossible to identify where they came from. That’s why Linux users should leave the root account only for the most necessary maintenance operations.

Avoiding Dual-Booting with Windows

Actionable Linux Security and Device Protection

Dual-booting Linux with Windows enables potential hackers to access the Linux system. Windows is more vulnerable to cyber-attacks, so running it together with Linux puts Linux at great risk.

With dual-booting with Windows, cyber criminals can gain access to the Windows partition. Once they do, they can find their way through data and accounts, which can compromise the entire Linux device. Therefore, avoiding dual-booting keeps Linux much more secure.

Disabling Unnecessary Services

At startup, a Linux distro automatically starts running many services that can be of use to users. However, many of them are unnecessary, such as Bluetooth on a device without a Bluetooth adapter.

One of the services that could potentially open the door to hackers is SSH or Secure Shell. It’s a protocol for a remote system login, which is unnecessary if a user never logs remotely onto their system. To avoid potential web attacks and add a protective layer to a Linux device, users should disable all such services.

Using a VPN

Actionable Linux Security and Device Protection

Using a VPN is the best way to protect a Linux device because it encrypts all data. What is VPN? A VPN (Virtual Private Network) is a network that encrypts web traffic and hides internet activity even from an ISP (Internet Service Provider).

With a VPN, users can block hackers and stay anonymous when they connect their Linux devices to the internet. As all data coming to and from servers is encrypted, VPNs make it impossible for hackers to gain system access.

If you want to protect your Linux device and all your data, make sure you follow the tips mentioned above. There are many more ways to do it, but these are the most actionable ones. They are very easy to apply, and they will take your Linux device to a whole new level of security.

]]>
<![CDATA[How to emulate Wii U games on Linux - installing and optimising Cemu]]>

Cemu, a Wii U emulator released two years ago, has been making waves for the level of performance emulating it's achieved in the [relatively] short time it's been in development. Unfortunately, Cemu uses opengl as it's graphics engine which lowers AMD GPU performance considerably, due to poor AMD opengl support.

]]>
https://www.devpy.me/how-to-emulate-breath-of-the-wild-on-linux-or-installing-and-optimising-cemu/5e8f741938bee56e1ac05e76Sat, 25 Aug 2018 01:22:49 GMTHow to emulate Wii U games on Linux - installing and optimising Cemu

Cemu, a Wii U emulator released two years ago, has been making waves for the level of performance emulating it's achieved in the [relatively] short time it's been in development. Unfortunately, Cemu uses opengl as it's graphics engine which lowers AMD GPU performance considerably, due to poor AMD opengl support. (Short explanation of why: AMD is focusing on Vulkan and ignoring opengl, compared to Nvidia which still has a large corporate market that needs opengl support, and has optimized their drivers for it extensively).

An easy way to get around AMD driver problems is too... get another driver. Mesa, developed open source by the community, recently implemented all of the opengl extensions Cemu uses, so you can now run Cemu under Mesa without any forks or custom compiles. (Previously, users had to use mesa mild, a buggy fork). The guide below details installing the best version of wine for the job, installing Cemu, game management under Linux, and lots of performance optimization for both Mesa and Cemu.

How to emulate Wii U games on Linux - installing and optimising Cemu

Installing Wine

I've found that Cemu crashes with Wine development version, so I would recommend sticking to stable.

Ubuntu

sudo dpkg --add-architecture i386
wget -nc https://dl.winehq.org/wine-builds/Release.key
sudo apt-key add Release.key
sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/
sudo apt-get update
sudo apt-get install --install-recommends winehq-stable

Fedora

Replace "version" with your Fedora version, e.g. 28

dnf config-manager --add-repo https://dl.winehq.org/wine-builds/fedora/VERSION/winehq.repo
dnf install winehq-stable

For other distros, wine wiki might have a page on how to install.

Wine Settings

Run

winecfg

and set the Windows version to 10, and add

dbghelp.dll

in the Libraries tab.

Install winetricks:

sudo apt install winetricks

Then run

bash winetricks vcrun2015

To install the Microsoft Visual C++ 2015 Redistributable. (You can try vcrun2017 as well).

Drivers

For nvidia, install the drivers through your distro's package manager. Most have it as nvidia-version.

For AMD, it's a bit more complicated. You can either use the proprietary drivers, which can be found here, or you can try just using mesa. On Ubuntu, this is the following:

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt update && sudo apt dist-upgrade

On Arch, the latest mesa is in the AUR. I would recommend trying mesa before proprietary, as the opengl performance is higher.

Cemu

How to emulate Wii U games on Linux - installing and optimising Cemu

Now we get to the good part. Cemu can be downloaded from here. As of this article, it's 1.13, with 1.14 a WIP that didn't work for me. I'm writing the rest of the article assuming that you extract the download to /home/username/cemu/.

Cemuhook

You can download cemuhook, a debug helper that adds more options, from here. Extract the files to the same folder as Cemu.

Then, run winecfg in the terminal. Add "dbghelp.dll" in the libraries section.

How to emulate Wii U games on Linux - installing and optimising Cemu

Graphics packs

These change the look of games, and can improve performance. You'll need these to play above 30fps.

Download them from here and extract them to ~/cemu/graphicPacks/

Performance

Open Cemu:

cd ~/cemu
vblank_mode=0 mesa_glthread=true wine Cemu.exe
  • Options --> GPU buffer cache accuracy = low
  • CPU --> Mode = Dual core recompiler (if your CPU has 6+ cores, choose triple core)
  • Debug --> MM timer accuracy = 1ms
  • Debug --> Custom timer = QPC

Add all graphics packs for the games you plan on playing / installing. Breath of the Wild, for example:

  • BOTW AMD Shadows
  • BOTW AMD Light circle fix
  • BOTW 1080p
  • BOTW High res shadows
  • BOTW No depth of field
  • BOTW FPS++

Games

To install some games for cemu, you need a wii u game manager. I'll give a short tutorial on a very random script collection titled "wiiu-things" by github user ihaveamac which seems to be the only software that works on Linux.

Ensure Python is installed.

Clone wiiu-things from Github:

git clone https://github.com/devpytech/wiiu-things.git
cd wiiu-things

Now it's time to download a game. Please buy the game before you download.

Find game keys

Please support developers by buying the game before you emulate it. DevPy does not support piracy.

Open the Wii U Title ID database

Use ctrl+f to find the game you want to emulate, such as "Breath of The Wild" or "Super Mario 3d World" and find the titleid under the right region (USA, EUR, or JAP). Copy the titleid and place it in a text file. (Make sure to remove the dashes in the titlekey!)

Do this for all two or three listings in a region; these are the DLC, update, and main game. There's some more info at the beginning of the wiki page.

Download

How to emulate Wii U games on Linux - installing and optimising Cemu

Start a download

python3 wiiu_cdndownload.py titleid

This might take a while. You should see a progress bar.

Decrypt

Now we need to decrypt the files. Find a "Wii U common key" with google, it should be 32 chars long and start with "D7".

Edit the wiiu_decrypt.py file and enter the key on line #21.

cd titleid/
python3 ../wiiu_decrypt.py

Extract

Now, extract the files for emulation, from the same folder:

python3 ../wiiu_extract.py

You should see a long stream of files being created. Now repeat the process, from the download onward, with the other title ids (you should have three/two depending on the game: 00050000, 0005000C, and 0005000E).

Playing Games

Now run Cemu.exe with wine:

cd ~/cemu
vblank_mode=0 mesa_glthread=true wine Cemu.exe

On the top right, choose file --> Install Update/DLC and select Meta/Meta.xml for each of the directories starting with 0005000C and 0005000E. Once finished, choose file --> load and select 00050000-x/code/*.rpx.

How to emulate Wii U games on Linux - installing and optimising Cemu

]]>
<![CDATA[Steam for Linux can now run Windows games - with Vulkan performance built in]]>

While Linux gaming has steadily evolved over the years, the number of titles on Windows far outnumbers the amount on Linux. There have been ways to get around this, using compatibility layers such as Wine (Wine Is Not an Emulator) - but Steam is now making this mainstream with their

]]>
https://www.devpy.me/steam-for-linux-can-now-run-windows-games-with-vulkan-performance-built-in/5e8f741938bee56e1ac05e77Wed, 22 Aug 2018 17:46:55 GMTSteam for Linux can now run Windows games - with Vulkan performance built in

While Linux gaming has steadily evolved over the years, the number of titles on Windows far outnumbers the amount on Linux. There have been ways to get around this, using compatibility layers such as Wine (Wine Is Not an Emulator) - but Steam is now making this mainstream with their latest version of Steam Play (now code-named Proton).

Proton is a modified version of Wine created by Steam. It includes vkd3d, a vulkan based Direct3d 12 implementation, DXVK for Vulkan Direct3d 11, an OpenVR and Steamworks native API, Wine3d performance improvements, overhauled gamepad and fullscreen support, and "esync" for huge multi threaded improvements. The most exciting part of this is the Vulkan compatibility with DXVK, because of the large performance increase over standard Wine, and the amount of support a huge company like Steam gives to the project. Did I mention Proton is open source?

To try it out yourself, opt into the Steam client beta. Once updated, you can install Windows games the same way you install Linux games. Currently, only 25 games are supported, including large titles such as Final Fantasy VI, and Neir:Automata, but more will be added as the software matures, in small whitelist batches. Eventually, every game on Steam for Windows should be also available on Linux.

Setting it up

To start using Steam Play / Proton, you need to opt into Steam beta.

  1. Click "Steam" on the top left of the app, then click "Settings"
  2. Under "Beta Participation", select the "Account" tab and click "Change..."
  3. Select "Steam Beta Update" and click "OK".
  4. Restart Steam

Steam for Linux can now run Windows games - with Vulkan performance built in

Steam does not list this as a step, but I've found you need to enable steam play for all titles for Proton to work.

Steam for Linux can now run Windows games - with Vulkan performance built in

Steam also recommends different drivers from defaults. Their quickstart for Ubuntu 18 can be found on Proton's github.

Now you can try installing a game. Here is the full list of supported games, taken from the Steam community post:

The free games that are supported so far are Doki Doki Literature Club!, Fallout Shelter, and Google Earth VR.

Strangely enough, I found I could install games that were not on this list, such as PUBG:

Steam for Linux can now run Windows games - with Vulkan performance built in

I think this means it's not officially supported, but will still run. I'm going to test Steam Play/Proton using Darwin project, since I don't own any other graphically intensive games that will run on Steam Play (I might test PUBG later on). It also looks like several other popular free games exclusively on Windows install with Steam Play, including Realm Royale.

Darwin project played extremely smoothly with Steam Play, reaching 100+ fps on high (when obs was off, using vega 64). On windows, I get an average of 120fps. Expect more detailed benchmarks soon!

Conclusion

Steam, quite likely the biggest gaming company in the world, releasing this kind of challenge to Windows gaming poses a huge threat to the Windows gaming ecosystem. Soon, we could see Steam OS make a comeback, with possible consoles that can run every game under the sun, with all the benefits of Linux, compete with Sony and Microsoft. The future of Linux gaming is looking brighter than ever.

]]>
<![CDATA[The Best Linux Lockscreen]]>https://www.devpy.me/the-best-linux-lockscreen/5e8f741938bee56e1ac05e71Sun, 31 Dec 2017 00:40:42 GMTThe Best Linux Lockscreen

To be honest, the default lock screens, also known as greeters or display managers (when the lockscreen also manages the boot login), can leave looks to be desired on pretty much every Linux distribution. To fix that, we have several options - theme the lock screen you already have, change the lock screen, or login automatically and use another option such as i3lock.

This guide shows you how to change the login screen background, edit the login screen font, use a login screen gtk theme, and change your user manager. This guide has sections for most major display managers, but the GDM guide has the most detail.

Theming your lockscreen

Typically the easiest option. The options below are for a few of the most popular display managers.

GDM Display Manager

First back up the current theme:

sudo cp -v /usr/share/gnome-shell/gnome-shell-theme.gresource{,~}

Note: Ubuntu 17+ uses a GDM config that is different than the default setup. If the following setup does not work for you please comment and I will try to help. All of the scripts I link below work for me on a fresh Fedora 27 system.

Now you have a few options. If you simply want to change the font on your login manager or change the background, you can use my script:

Editing the current theme

Download the scripts on the DevPy GitHub: devpytech/scripts/gresource-extract. Then run ./extract.sh to extract your current theme to the "theme" folder in the same folder as the extract script.

Editing the font

Edit gnome-shell.css. Change the font to your custom font. E.g:

stage {
  font-family: 'Source Sans Pro', Sans-Serif;
  font-size: 14px;
  color: #eeeeec;
}

Editing the background

Copy a background to the theme folder. Then edit gnome-shell.css and change the #lockDialogGroup section to the filename of your image. E.g:

#lockDialogGroup {
  background: #2e3436 url(resource:///org/gnome/shell/theme/background.jpg);
  background-size: cover;
  background-repeat: none;
}

Building & enabling

Run the ./build.sh file from DevPy's GitHub. This will create a .gresource file in the theme folder.

Finally, override the current gresource (make sure you have backed up the current file):

sudo mv gnome-shell-theme.gresource /usr/share/gnome-shell/gnome-shell-theme.gresource

My result:

The Best Linux Lockscreen

Using your GTK Theme

My favourite method is to match the GTK theme by building a gresource file.

Here are a few results for themes I have tested:

Arc

The Best Linux Lockscreen

Pop

The Best Linux Lockscreen

Vertex

The Best Linux Lockscreen

You can build your own using my script here: devpytech/gtk-gresource.

I've included prebuilt gresource files for the following themes:

  • Arc
  • Arc-Dark
  • EvoPop
  • Pop
  • Pop-dark
  • Vertex

Usage:

git clone https://github.com/devpytech/gtk-gresource.git
cd gtk-gresource

# Replace Arc with the theme you want to use
./build.sh Arc
./switch.sh Arc

After a reboot the theme should show on login and lock.

LightDM Display Manager

LightDM is probably the second most popular display manager, after GDM. To install a theme, install both lightdm and lightdm-webkit2-greeter through your package manager. Then, navigate to /usr/share/lightdm-webkit/themes/ through the terminal or a root file manager and copy the theme files there. Once finished, enable the theme in your /etc/lightdm/lightdm-webkit2-greeter.conf by setting webkit-theme.

Material

The Best Linux Lockscreen

GitHub

Download

Aether

The Best Linux Lockscreen

GitHub

Download

Litarvan

The Best Linux Lockscreen

GitHub

Download

SDDM Display Manager

SDDM is a display manager written from scratch. It's best known for being the default with KDE Plasma 5. To install an SDDM theme, simply move it to /usr/share/sddm/themes/, making sure that the folder name is the same as the theme name. You can enable a theme by editing /etc/sddm.conf under the [Theme] section and changing Current to the theme name.

Aerial

The Best Linux Lockscreen

Aerial uses gifs on the lockscreen in the style of Apple TV screensavers.

GitHub

Download

Deepin

The Best Linux Lockscreen

GitHub

Download

Changing your Display Manager

This option will change the way you login ... forever. Or at least until you change back. Once you have installed a display manager, the way you change to it depends on your linux distribution. On Ubuntu, run "sudo dpkg-reconfigure gdm3" replacing gdm3 with the current display manager.

GDM

You can install GDM with the following:

Ubuntu

sudo apt install gdm3

Fedora

sudo dnf install gdm

Arch

sudo pacman -S gdm

On other distributions, try searching gdm in the package manager.

LightDM

You can install GDM with the following:

Ubuntu

sudo apt install lightdm

Fedora

sudo dnf install lightdm

Arch

sudo pacman -S lightdm

On other distributions, try searching lightdm in the package manager.

SDDM

You can install SDDM with the following:

Ubuntu

sudo apt install sddm

Fedora

sudo dnf install sddm

Arch

sudo pacman -S sddm

On other distributions, try searching sddm in the package manager.

Not Using a Display Manager At All

If you like to login with the console, you can simply disable the Display Manager services:

sudo service gdm disable
sudo service lightdm disable

The Best Linux Lockscreen

If you use this option, I suggest that you install a screenlocker / screensaver to help avoid screwing up your monitor (keeping the same image on the monitor for a long time can freeze some pixels).

XScreenSaver

XScreenSaver ships with most distributions, but if you don't have it, instructions can be found here. Theming is rather rudimentary but you can change the colours by editing ~/.Xresources.

i3lock

Probably my favourite screen locker, i3lock is simple and has many derivations to choose from. My favourite derivation is i3lock-colors to customize the look and image.

Default

The Best Linux Lockscreen

My custom wallpaper conserving script

The Best Linux Lockscreen

#!/bin/bash

scrot /tmp/screen.png
xwobf -s 11 /tmp/screen.png
i3lock -i /tmp/screen.png
rm /tmp/screen.png

And that's it! If you want to go back to the defaults, simply re-enable GDM or LightDM.

Thanks for reading. Feel free to share your custom login setup in the comments below.

]]>
<![CDATA[Snapcraft, AppImage, and Flatpak ... which one is the best?]]>https://www.devpy.me/snapcraft-appimage-flatpak/5e8f741938bee56e1ac05e5eSun, 24 Sep 2017 17:27:38 GMTSnapcraft, AppImage, and Flatpak ... which one is the best?

Distro agnostic installation of packages is a long time coming. There are literally thousands of different distros, and a fair amount of them implement their own package managers - that means there are dozens of different package systems to develop for. This is where cross-distro packages come in. There are 3 major systems: Flatpak, AppImage, and Snapcraft. Snapcraft is by Ubuntu, and the other two started as individual projects.

Snapcraft

Snapcraft, AppImage, and Flatpak ... which one is the best?

Why Snapcraft?

Snapcraft is a project developed by Canonical (parent company of Ubuntu). Their website says that snaps are packages that are "for every Linux desktop, server, cloud or device, and deliver updates directly". This is a bold claim - their website also points out that snaps update automatically. It's not really clear what the difference is between snaps and deb packages - you need to install services to get snap to work, so it's basically just installing another package manager on your system.

It does come with the benefits of a package manager though: A central repo, managed updates. Their sandboxing is provided by AppArmor, Ubuntu's app permission management software.

Install

###Arch
sudo pacman -S snapd

Ubuntu

sudo apt install snapd

Debian

# On Sid:
sudo apt install snapd

Fedora

sudo dnf install snapd

# Fedora 24 users
 sudo systemctl enable --now snapd.socket

Gentoo

Install the overlay.

OpenSuse

sudo zypper addrepo http://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_42.2/ snappy
sudo zypper install snapd

Snapcraft Directory

(1012 apps at time of writing) UAppExplorer

AppImage

Snapcraft, AppImage, and Flatpak ... which one is the best?

Why AppImage?

AppImage is by far the simplest solution of the three. To use an AppImage, you simply add permission to execute the file and then run it, the same way as running a bash script. However, not everything is sunny: there is optional sandboxing, and to install an update, you have to replace the entire installation (there is a basic updater but not many projects use it).

To try it out, I installed Etcher, a program to burn iso files to disks. Here is the process (I am doing the entire process through the GUI. Installing an AppImage from the shell is just as easy).

1. Download the Etcher 1.1.2 AppImage

2. Extract the zip file and open the extracted files.

Snapcraft, AppImage, and Flatpak ... which one is the best?

3. Right click the `.appimage` file, select properties, and ensure that "allow executing file" is checked.

Snapcraft, AppImage, and Flatpak ... which one is the best?

4. Double click the AppImage file

Snapcraft, AppImage, and Flatpak ... which one is the best?

Although easy to install, the pain comes after a few months. I think that a system using AppImage as the main software management tool would be a pain; it would have to replace all installations every few months.

AppImage Directory

(120 apps at time of writing)
AppImageHub

Flatpak

Snapcraft, AppImage, and Flatpak ... which one is the best?

Why Flatpak?

What makes flatpak different from both Snapcraft and AppImage is that is brings shared, constantly updated runtimes (e.g. the kind of libraries that make Steam a mess to install on distros that are not Ubuntu) into the picture. Unlike AppImage, libraries/runtimes do not need to be bundled, reducing file size of apps and providing a much cleaner, auto updating experience. (Also, it's integrated into gnome-software already...)

One of the caveats is that there is no central repo. For every new app from a different developer, you have to add a new repo. Sandboxing custom, with SELinux support.

Install

### Arch
sudo pacman -S flatpak

Ubuntu

sudo add-apt-repository ppa:alexlarsson/flatpak
sudo apt update
sudo apt install flatpak

Debian

sudo apt install flatpak

Fedora

sudo dnf install flatpak

Gentoo

Install the overlay.

OpenSuse

sudo zypper install flatpak

Flatpack Directory

(88 apps listed on their website at time of writing)
Flathub

Conclusion

Feature Snapcraft AppImage Flatpak
No software necessary to install a package No Yes No
Shared runtimes Basic None Full
Sanboxing AppArmor None Custom
Repository support Yes No Yes
Central repo Yes No No
Updates Automatic None Automatic

Personally, I would bet on Flatpak. A lot of it is similar to Snapcraft, but I found the installation (on distros other than Ubuntu, e.g. Arch) of Snapcraft a lot more difficult and buggy, and the updates and install process of Flatpak was easier. Even without a central repo, the process seems more solid.

Their shared library system works across any distro automatically, and they include more variety and better apps (Steam is actually packaged as a Flatpak now! Goodbye difficult install on Arch). Also, the awareness of Flatpak is better in the Linux community; Google "Snapcraft" and the first result is a Minecraft server.

Even though AppImage has Linus Torvald's vouch, Flatpak beats it through smaller app files and better updates - even though you need to install a package to start using Flatpak, the features it provides are much better in the end.

Don't agree? Share your thoughts below

]]>
<![CDATA[Budgie Desktop / Solus: Minimal & Clean Desktop Environment]]>https://www.devpy.me/budgie-desktop-solus-minimal-clean-desktop-environment/5e8f741938bee56e1ac05e6aThu, 15 Jun 2017 03:15:11 GMTBudgie Desktop / Solus: Minimal & Clean Desktop Environment

You may have heard of (or currently use!) Budgie Desktop. It's a minimal, but full featured, workspace currently based upon the GNOME/GTK stack. (The developer has announced they will be moving to QT in the future).

Recently, the creator of Solus & Budgie, Ikey Doherty, left his job at Intel to work on the Solus Project full time. This, coupled with another developer, Stefan Ric, joining the team means that Solus users should prepare for an influx of new development.

Solus

One choice the Solus Project made when starting was not to base Solus on an existing distro, such as Fedora, but to create their own package manager and build system called eopkg. I am not a huge fan of this approach, as looking for scripts and compiling everything I wanted to install (most of what I needed was not in their software center), took a while and got kind of annoying.

However, you should definitely take this with a grain of salt as it appears that the target users for Solus are people newer to Linux. For that demographic, the software center should be completely sufficient; it includes everything a casual user would need.

The software center is organized by a two-level category based system. The top level shows application by broad group and includes Desktop, Gaming, Multimedia, Internet, Office, Programming, Security, and System software.

Budgie Desktop / Solus: Minimal & Clean Desktop Environment

Third party software is Solus's section for larger scale, often updated apps. This is where you find Chrome, Jetbrains IDEs, Skype, and Spotify. This can be compared to the AUR on Arch except that it is far more limited.

Budgie Desktop / Solus: Minimal & Clean Desktop Environment

Installing Solus

Solus can be installed using their download page.

Budgie Desktop

Budgie is like a breathe of fresh air. I am not a fan of desktops with heavy effects and too many options (KDE does not really work for me) but I also don't like changing config files and writing scripts (like for BSPWM) when I just want to program. Budgie desktop hits the sweet spot between these extremes.

Budgie does not look like anything special when you get started. It can be compared to Ubuntu MATE / GNOME 2 but feels more modern to me. However, as you continue using it, Budgie feels more comfortable and homely than other desktops.

Installing Budgie

To install Budgie desktop on a distro other than Solus, use these commands.

Arch

budgie-desktop on the repos:

sudo pacman -S budgie-desktop

Ubuntu / Debian

We need to add a ppa:

sudo add-apt-repository ppa:budgie-remix/ppa
sudo apt-get update
sudo apt-get install budgie-desktop

Fedora

Change the 24 to the version of Fedora (22, 23, 24) that you are using:

sudo dnf config-manager --add-repo http://download.opensuse.org/repositories/home:ikeydoherty:solus-project/Fedora_24/home:ikeydoherty:solus-project.repo
sudo dnf install budgie-desktop

To install on other distros, Google it.

Raven

The Raven sidebar is where you control your calendar, notifications, general settings, and your panel settings. Ikey is talking about implementing more custom and advanced widgets which could be added to Raven, but right now it simply acts as a conglomerate of a settings widget and a status bar.

Budgie Desktop / Solus: Minimal & Clean Desktop Environment

Budgie Menu

This is another part of Budgie that looks and feels very simple but does the job well. The Menu initially has a list of all installed applications, under category headers. Clicking on the categories (mouse rollover can be optionally enabled) takes you to a list of apps within the category.

The Menu has a very nice feature that "learns" what kind of apps you use the most and shows those first, within category, in the full list, and on search by keeping a file with references to most opened apps.

Budgie Desktop / Solus: Minimal & Clean Desktop Environment

Applets

Applets are buttons or menus that can be added to the panel. Budgie comes with a limited selection but there are several great additions made by developers. Here are some I always add:

Screenshot Applet

Take screenshots and upload automatically to services such as imgur and ftp.

Budgie Desktop / Solus: Minimal & Clean Desktop Environment

On Solus

sudo eopkg it budgie-screenshot-applet

On other distros, see the GitHub page.

Hastebin Applet

Pastebin your code right from the panel.

Budgie Desktop / Solus: Minimal & Clean Desktop Environment

On Solus

sudo eopkg it budgie-haste-applet

On other distros, see the GitHub page.

In summary,

Budgie is an interesting new distro you should look out for. Solus is certainly going in a good direction, and with Solus's creator starting to work on it full time, we should see a lot of new development. Budgie hits that sweet spot of looks and functionality, and I would like to see more of this new distro/desktop.

]]>
<![CDATA[10 Of The Best Linux Icon Themes Compared]]>https://www.devpy.me/10-of-the-best-linux-icon-themes-compared/5e8f741938bee56e1ac05e68Thu, 20 Apr 2017 03:48:49 GMT10 Of The Best Linux Icon Themes Compared

Linux generally has good, clean looks but the icons are sometimes... a bit lacking. However, with a few small changes, your desktop can look amazing with these icon packs. Icon packs are generally a large amount of images which control how your application, file, and system tray icons look.

Most of the themes below will have installations based in the terminal (Ubuntu / Fedora / Arch), but for some of them, you need to download the actual files. In those cases, you can simply download the theme archive (.zip, .tar.gz), and extract to the folder .icons for the icon theme to be installed on your user (note: on Fedora, the default is .local/share/icons). To install for all users, move the icon theme folder to /usr/share/icons/ instead.

The circular app launcher you see in screenshots is Gnome Pie.

Papirus

10 Of The Best Linux Icon Themes Compared

Shown with the Arc dark gtk theme

10 Of The Best Linux Icon Themes Compared

Common applications

Papirus is a new-ish icon theme from the Papirus Development Team. It is based on the Paper icon theme, but I like the feel of Papirus much better. The Papirus Development Team has also made themes for LibreOffice, SMPlayer, and Filezilla, integrating them with the Arc gtk theme.

Installation

Paper

10 Of The Best Linux Icon Themes Compared

Shown with the Paper gtk theme

10 Of The Best Linux Icon Themes Compared

Common applications

Paper is an icon theme by snwh. Paper is one of the most popular aesthetic kits, and includes a gtk theme with brighter colors, but less icons than other themes (Paper lacks icons for coding files which Papirus and Numix have).

Installation

Numix

10 Of The Best Linux Icon Themes Compared

Shown with the Numix gtk theme

10 Of The Best Linux Icon Themes Compared

Common applications - Numix has less icons than alternatives; result is this ugly fallback

Numix is an icon theme by the Numix Project, a big player in Linux theming. Their themes are the default on several distros, and are popular with users. Numix stands up to these expectations fairly well, but (in my opinion) lacks the subtle vibe you see with Paper and Papirus.

Installation

Evolvere

10 Of The Best Linux Icon Themes Compared

Shown with the Vertex light gtk theme

10 Of The Best Linux Icon Themes Compared

Common applications

Evolvere is a square icon theme that is relatively unheard of. Surprisingly, I found the icons to be very complete and to look pretty good! Inside what the author calls "Evolvere Suite", you will find variants of the theme with different folder styles and slightly different icons. The one I show above is "Evolvere Sunken".

Installation

Moka

10 Of The Best Linux Icon Themes Compared

Shown with the Adwaita gtk theme

10 Of The Best Linux Icon Themes Compared

Common applications

Moka is another great icon theme by snwh. It is used as a baseline for several other themes, such as the Arc icon theme. It's shown here with the Adwaita theme, the default for Gnome users. Moka has a slight circular border- I like it.

Installation

Arc

10 Of The Best Linux Icon Themes Compared

Shown with the Arc light gtk theme

10 Of The Best Linux Icon Themes Compared

Common applications- Arc falls back to Moka

The Arc icon theme, created by the developer of the insanely popular Arc gtk theme, is a great material icon theme; I just wish they would make some more icons! A lot of application icons fall back to other themes.

Installation

Flattr

10 Of The Best Linux Icon Themes Compared

Shown with the Arc darker gtk theme

10 Of The Best Linux Icon Themes Compared

Common applications

Flattr is another material inspired icon theme; it does a fairly good job at it. Several other icon themes, such as Super Flat Remix, are inspired by it.

Installation

La Capitaine

10 Of The Best Linux Icon Themes Compared

Shown with the Gnome OSX ii gtk theme

10 Of The Best Linux Icon Themes Compared

Common applications

La Capitaine is an icon theme that "takes inspiration from the latest iterations of macOS and Google's Material Design". I'm showing it here with the Gnome OSX ii gtk theme, and the duo makes a good Mac-esque look.

La Capitaine is based on a set called "Antü" by Fabián Alexis, which is used in KaOS (KDE distro).

Installation

Xenlism Wildfire

10 Of The Best Linux Icon Themes Compared

Shown with the Vertex dark gtk theme

10 Of The Best Linux Icon Themes Compared

Common applications

Xenlism Wildfire is an icon theme that tries something a bit different; it includes more "images within images" and looks a bit more fun. Xenlism icons have a bit of a circular look, as shown in the wheel screenshot.

Installation

Faenza

10 Of The Best Linux Icon Themes Compared

Shown with the Adapta-Nokto gtk theme

10 Of The Best Linux Icon Themes Compared

Common applications

Faenza is another "older looking" icon theme, with more of a realism texture than flat themes like Paper, Papirus, and Xenlism. Applications are mostly shown as squares, and the icons have slight drop shadows.

Installation


To see other topics about Linux themes, follow this link.

Do you like these icon themes? Do you hate them? Drop a line in the comments below with your favorite icon theme, and I'll be sure to take a look.

If you want the wallpapers that I used, here is the imgur gallery I made. Here is the wall for La Capitaine, and here is the wall for Faenza.

]]>
<![CDATA[Building a Music Controlling Python Start Page for Linux]]>https://www.devpy.me/building-a-python-music-indicating-start-page-2/5e8f741938bee56e1ac05e67Tue, 21 Feb 2017 18:44:16 GMTBuilding a Music Controlling Python Start Page for Linux

By using the Gnome GLib apis, we can use the Playerctl Linux package with Python. Bundling this with bottle, a simple Python server, and websockets to listen for updates, we have a music controlling homepage.

Dependencies

You will of course need Python. Here, I use python2 because gevent (the websocket) does not support Python3.

Linux packages you need:

Python dependencies (install with pip):

  • bottle
  • bottle-websocket

Github

You can download all the code for this project on DevPy's github here.

You can clone this to your computer with

git clone https://github.com/devpytech/musicpage.git

Adding a websocket

First we need to import the (extensive) list of packages.

#!/usr/bin/env python2
from bottle.ext.websocket import GeventWebSocketServer
import gi
gi.require_version('Playerctl', '1.0')
from gi.repository import GLib, GObject, Playerctl
from bottle.ext.websocket import websocket
from geventwebsocket.exceptions import WebSocketError
from bottle import run, get
import threading
import os
from gevent import monkey
monkey.patch_all()

print("starting websocket")

Adding a route

When the main page connects to the websocket, we send the attributes so we can update the display.

@get('/websocket', apply=[websocket]) #provide a websocket connection
def echo(ws):
    print("connected")
    # send the music status
    ws.send('%s,%s,%s,%s' % (os.popen("playerctl metadata mpris:artUrl").read(), Playerctl.Player().get_title(), Playerctl.Player().get_artist(), Playerctl.Player().get_property("status")))

Playerctl process

We can make a new Playerctl player with player = Playerctl.Player() and run a loop to check for updates with player.on('metadata', on_track_change) and GLib.MainLoop().run(). When the track is updated, we send a message to the webpage.

@get('/websocket', apply=[websocket])
def echo(ws):
    print("connected")
    # send the music status
    ws.send('%s,%s,%s,%s' % (os.popen("playerctl metadata mpris:artUrl").read(), Playerctl.Player().get_title(), Playerctl.Player().get_artist(), Playerctl.Player().get_property("status")))
    def on_track_change(player, e):
        #this function will run when the music is updated (paused, skipped, etc.)
        try: #see if the connection is still open
            ws.send('%s,%s,%s,%s' % (os.popen("playerctl metadata mpris:artUrl").read(), Playerctl.Player().get_title(), Playerctl.Player().get_artist(), Playerctl.Player().get_property("status")))
        except WebSocketError: #if it's not open, stop the process
            player.stop()
            loop.quit()
            ws.close()

    player = Playerctl.Player()
    player.on('metadata', on_track_change) #listen for music updates

    loop = GLib.MainLoop() 
    loop.run() #run the playerctl updater
    print("Disconnected from websocket")

run(host='0.0.0.0', port=7000, server=GeventWebSocketServer) #run the server

Frontend

In this section, we create the webpage that is shown (and updated in real time) for the user.

Settings

Here we add color choosing and links that we use in html later.

#!/usr/bin/env python2
from bottle import route, run, request, get, post, static_file
import gi
gi.require_version('Playerctl', '1.0')
from gi.repository import GLib, GObject, Playerctl
from subprocess import Popen
import sys
import os

Popen([sys.executable, './sendup.py']) #run the websocket script in the same folder (used to update info)

############
# SETTINGS
############

links = [['DevPy','http://DevPy.me'],['Reddit','http://Reddit.com'],['Google','http://Google.com']] #List of links to add to page

theme = 'dark' #light or dark theme (sets colors)

############
# /SETTINGS
############

if theme == 'dark':
    bgc = '#222'
    fgc = 'rgba(255,255,255,0.6)'
    bw = 'gray'
else:
    bgc = '#fff'
    fgc = '#111'
    bw = 'black'

for x in range(len(links)):
    #create list of links
    links[x] = '<a class="db link no-underline underline-hover '+bw+'" href="'+links[x][1]+'">'+links[x][0]+'</a>'

linkhtml = '''<div class="db center" style="width: 182px;"><div class="mt4 lh-copy">'''

#add the links together
for x in links:
    linkhtml += x

linkhtml += '''</div></div>'''

HTML

We generate the initial look of the app. The artist, song, and image are initialized as well.

@get('/') # or @route('/login')
def index():
    player = Playerctl.Player() #grab a player
    try: #Check if a music app is open (spotify, audacious, vlc,...)
        title = player.get_title()
        artist = player.get_artist()
        img = os.popen("playerctl metadata mpris:artUrl").read()
    except: #if nothing is open just show blank music
        title = ''
        artist = ''
        img = ''

    return '''
<html>
<head>
<title>Start Page</title>
<link rel="stylesheet" href="/static/tachyons.css" />
<style>
/* Here we add the icons for play/pause/next/forward */
@font-face {
  font-family: 'Material Icons';
  font-style: normal;
  font-weight: 400;
  src: local('Material Icons'), local('MaterialIcons-Regular'), url(/static/mat.woff2) format('woff2');
}
.material-icons {
  cursor: pointer;
  font-family: 'Material Icons';
  font-weight: normal;
  font-style: normal;
  font-size: 30px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
}
.material-icons.md-light { color: rgba(0, 0, 0, 0.54); }
.material-icons.md-dark { color: rgba(255, 255, 255, 1); }
</style>
</head>
<body style="background-color:'''+bgc+'''">
<div style="position:relative; top: 35%%; transform: translateY(-50%%); ">
<div class="mt4 db center black link" style="width: 178px;">
  <img id="img" style="width:180px;height:178px;background-color:#222;"class="db ba b--black-10" src="%s">
  <dl class="mt2 lh-copy">
    <dt class="clip">Title</dt>
    <dd id="title" class="ml0 fw9" style="color:''' % (img)+fgc+'''">%s</dd>
    <dt class="clip">Artist</dt>
    <dd id="artist" class="ml0 gray">%s</dd>
  </dl>
  <div style="text-align:center;color:''' % (title, artist)+fgc+'''">
    <a onclick="previous();" style="float:left;"><i class="material-icons md-'''+theme+'''">skip_previous</i></a>
    <a onclick="toggle();"><i id ="stateicon" style="width:32px;" class="material-icons md-'''+theme+'''">pause_arrow</i></a>
    <a onclick="next();" style="float:right;"><i class="material-icons md-'''+theme+'''">skip_next</i></a>
  </div>
</div>
''' + linkhtml + # add the scripts below here

Scripts

Here we add some jquery scripts to talk to the server.

# attach this to the previous html code
'''
</div>
<script src="/static/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
var ws;
ws = new WebSocket("ws://0.0.0.0:7000/websocket");
ws.onopen = function (evt) {
  ws.send("Connected");
};
ws.onclose = function (evt) {
  ws.send("Closed");
};

//in this function we listen for updates from the server and write them to the page.
ws.onmessage = function (evt) {
    var array = evt.data.split(',');
    if (array.length == 4) {
        console.log(array);
        $("#img").attr("src", array[0]);
        $("#title").text(array[1]);
        $("#artist").text(array[2]);
        if (array[3] === 'Playing') {
            $('#stateicon').text('pause');
        } else {
            $('#stateicon').text('play_arrow');
        }
        ws.send("Updated");
    } else {
        ws.send("OK.")
    }
};
</script>
<script>
// when the buttons are pressed, post the server
function next() {
    $.post('/next')
    return false;
}
function previous() {
    $.post('/previous')
    return false;
}
function toggle() {
    $.post('/toggle');
    return false;
}
</script>
</body>
</html>
'''

Post replies

Control the music when the client POSTs the server.

@post('/next')
def next_song():
    Playerctl.Player().next()

@post('/previous')
def next_song():
    Playerctl.Player().previous()

@post('/toggle')
def next_song():
    Playerctl.Player().play_pause()

@post('/status')
def is_playing():
    return Playerctl.Player().get_property("status")

@route('/static/<filename:path>') #This is for static files
def send_static(filename):
    return static_file(filename, root=os.path.dirname(os.path.realpath(' ')))

run(host='0.0.0.0', port=8080) #run the server

Finishing up

Now you should have a nice music controlling start page. You can make this show as the new tab on Chrome with this extension, and on Firefox with this one. Just set the url to 0.0.0.0:8080.

Building a Music Controlling Python Start Page for Linux

Here I use my method to show a music visualizer on the desktop, plus my openbox setup.

Youtube video

]]>
<![CDATA[How to Add a Music Visualizer to Your Linux Desktop]]>https://www.devpy.me/how-to-add-a-music-visualizer-to-your-linux-desktop/5e8f741938bee56e1ac05e66Sun, 19 Feb 2017 20:34:31 GMTHow to Add a Music Visualizer to Your Linux Desktop

A great way to add some flair to your desktop is to use a music visualizer, such as cava. However, these visualizers usually run in a terminal, and putting them on the desktop is a bit tricky. I do it here by creating a transparent terminal on the desktop, using it as a transparent terminal wallpaper, and playing cava there.

Installation

Cava (Console-based Audio Visualizer for ALSA) can be installed from the AUR on Arch Linux with the following:

yaourt -S cava

On Ubuntu, you can use

sudo add-apt-repository ppa:tehtotalpwnage/ppa
sudo apt-get update
sudo apt-get install cava

On other distros, you can install manually or use the guide from cava's github.

Edit ~/.config/cava/config and set the sensitivity.

The easy way[1]

Tilda is a versatile and powerful terminal, if not slow. On Arch, install with

sudo pacman -S tilda

On Ubuntu, use

sudo apt-get install tilda

On other distros, or if the package does not work, install from source.

Run Tilda. You should find a black window.

To get it to our specifications, right click on the window and select preferences.

Under the General tab, uncheck "Always on Top".

Under Appearance, make the terminal fullscreen, or ~500px high on the bottom of your desktop. Check "Enable Transparency" and make the "Level of Transparency" 100%.

Under the Colors tab, chose "Green on Black" or "Personalize".

Under Scrolling you must select "Disabled".

At this point you should have something like this:

How to Add a Music Visualizer to Your Linux Desktop

Run cava in tilda to get a desktop music visual.

Fixing Openbox

In Openbox, tilda will obscure other windows. Add this to your RC file:

<application name="tilda">  
<layer>below</layer>  
</application>

The harder, better way

Tilda may be buggy on some systems, so you can use the terminal that comes with your desktop.

gnome-terminal

Install gnome-terminal-transparency using your distro's package manager.

Open gnome-terminal and add a new profile, dc1.

Then go to preferences, remove "show menubar by default", and make the terminal fully transparent.

Now add the following command to startup, or add an alias:

gnome-terminal -e "cava" --window-with-profile=dc1 --role=dc1; sleep 0.3; wmctrl -i -r "$(wmctrl -l | grep "cava" | tail -1 | cut -f1 -d' ')" -e 10,0,594,1920,500

This starts gnome-terminal with Cava, then sets the size to cover the screen. Modify with to your screen size.

Now we need to layer the gnome terminal window on the bottom.

To "layer" windows on Unity and Gnome, we can use something called Devilspie and wmctrl.

On Arch, use the following to install Devilspie:

pacman -S devilspie

On Ubuntu, use

sudo apt-get install devilspie

Now that devilspie is installed, we need to add a rule for gnome-terminal windows.

Create hidden config directory for devilspie:

mkdir ~/.devilspie

Then create a config file (we use Cava because it renames the window):

nano ~/.devilspie/dc1.ds
--------------------------
(if
(matches (window_role) "dc1")
(begin
(stick)
(below)
(undecorate)
(skip_pager)
(skip_tasklist)
(wintype "dock")
)
)

Customize the geometry to your liking.

On Openbox, this is of course easier:

<application role="dc1">
  <position>
    <x>center</x>
    <y>center</y>
  </position>
  <maximized>false</maximized>
  <shade>no</shade>
  <layer>below</layer>
  <decor>no</decor>
  <skip_pager>yes</skip_pager>
  <skip_taskbar>yes</skip_taskbar>
</application>

You could also use xfce-terminal or gnome-terminal as an alternative to Tilda.

xfce-terminal

Use the default xfce terminal and wmctrl to put it on the desktop.

#!/bin/bash
xfce4-terminal -e "cava" --hide-borders --hide-toolbar --hide-menubar --title=desktopconsole --geometry=130x44+0+0 &
sleep 0.3
wmctrl -r desktopconsole -b add,below,sticky
wmctrl -r desktopconsole -b add,skip_taskbar,skip_pager

Finishing up

This looks pretty cool under a transparent dock, or with a fullscreen window:

How to Add a Music Visualizer to Your Linux Desktop

Youtube video


  1. Thank you Arch wiki for tilda guide. ↩︎

]]>
<![CDATA[Your Guide to a Comfortable Linux Desktop With Openbox]]>https://www.devpy.me/your-guide-to-a-comfortable-linux-desktop-with-openbox/5e8f741938bee56e1ac05e65Thu, 16 Feb 2017 21:52:49 GMTYour Guide to a Comfortable Linux Desktop With Openbox

Openbox is a lightweight linux stacking desktop environment that is configured with files. Openbox is a cross between a completly minimal desktop such as i3wm, and a full blown desktop like GNOME or KDE. This allows for a large variety of configurations, and more control for the user.

Openbox is configured using 3 files: Openbox autostart, Openbox RC, and Openbox menu. (These can be found in ~/.config/openbox/.) The autostart file controls what application are started with Openbox, the RC controls the bulk of the settings, such as the window layout, the theme, and all keyboard shortcuts, and the menu file controls the right click menu.

Openbox users typically use the Tint2 panel, which is shown with my configuration in the screenshot above. However, other panels, or bars, can be used, and I have a small list of them on my i3wm post. However, in this post I will only show tips about Tint2.

Installation

If you are on Ubuntu, you can install with

sudo apt-get install openbox obconf

and switch to Openbox with the button below. (Image from howtogeek)

Your Guide to a Comfortable Linux Desktop With Openbox

On Arch linux, you can install with

sudo pacman -S openbox

And switch using your display manager or with startx.

On other distros, Google it; the information should be there.

Autostart

This is pretty simple. Just add the commands you want to run on each line, but remember to end them with a & so they become their own process. For example:

nitrogen --restore & #restore the background chosen with nitrogen
lxpolkit & #polkit (password popup)
clipit & #a tray clipboard manager
compton & #the compositor
tint2 & #the panel
pamac-tray & #pamac software installer updates checker
xautolock -time 15 -locker "~/lock.sh" -notify 30 -notifier "notify-send -u critical -t 10000 -- 'Locking screen in 30 seconds'" & #locks screen after 30 mins

The ~/lock.sh above is a simple script to take a screenshot, blur it, and run i3lock with the image. Here it is if you're interested.

Openbox RC

This one is a tad bit more complicated. However, we will go over the basics. In most cases, the default RC should be good enough, but you can edit it to change your theme and add keyboard shortcuts.

Themes

Openbox window themes can be changed from the RC. First, you should download a theme or two. Openbox has a list of where you can get some, or you can use Arc-Box theme which matches the Arc GTK theme. This is shown in my top screenshot.

The title layout controls the close/minimize/maximise buttons and the window title.

<theme>
    <name>Arcbox</name>
    <titleLayout>LIMC</titleLayout>
    <!--
      available characters are NDSLIMC, each can occur at most once.
      N: window icon
      L: window label (AKA title).
      I: iconify
      M: maximize
      C: close
      S: shade (roll up/down)
      D: omnipresent (on all desktops).
    -->
    <keepBorder>yes</keepBorder>
    <animateIconify>yes</animateIconify>
</theme>

Keyboard shortcuts

I've copied the excellent cheat sheet from daveden's wordpress post here for the defaults:

ActionBinding
Go to desktop (direction)ctrl + alt + arrow
Go to desktop (number)super + f1/f2/f3/f4
Send to desktopshift + alt + arrow
Toggle show desktopsuper + d
Close windowalt + f4
Hide windowalt + esc
Window menualt + space
Next windowalt + tab
Previous windowalt + shift + tab
Go to window (direction)super + shift + arrow
Toggle fullscreenf11

Here are a few shortcuts I like to add myself:

<keybind key="XF86MonBrightnessUp">
  <action name="Execute">
    <command>xbacklight +10</command>
  </action>
</keybind>

<keybind key="XF86MonBrightnessDown">
  <action name="Execute">
    <command>xbacklight -10</command>
  </action>
</keybind>

<keybind key="C-A-L">
  <action name="Execute">
    <command>~/lock.sh</command>
  </action>
</keybind>

<keybind key="C-A-t">
  <action name="Execute">
    <command>termite</command>
  </action>
</keybind>

<keybind key="XF86AudioRaiseVolume">
  <action name="Execute">
    <command>sh -c "pactl set-sink-mute 0 false ; pactl set-sink-volume 0 +5%"</command>
  </action>
</keybind>

<keybind key="XF86AudioLowerVolume">
  <action name="Execute">
    <command>sh -c "pactl set-sink-mute 0 false ; pactl set-sink-volume 0 -5%"</command>
  </action>
</keybind>

<keybind key="XF86AudioMute">
  <action name="Execute">
    <command>sh -c "pactl set-sink-mute 0 true ; pactl set-sink-volume 0 0%"</command>
  </action>
</keybind>

<keybind key="Super_L">
  <action name="Execute">
    <name>dmenu</name>
    <command>rofi -show drun -font "SFNS Display 18" -terminal termite</command>
  </action>
</keybind>

The first two change the brightness, the rest change the volume, and the last opens rofi (a application search) on the super key. If you want to open apps with rofi as well, first download it from your distro's package manager and then copy my config to your .Xresources for the arc colors:

Your Guide to a Comfortable Linux Desktop With Openbox

You can switch tabs in rofi with Shift+Arrow Keys. This is my current and favorite config for rofi, and it matches pretty well with the Arc theme, but many others can be found on /r/unixporn.

Openbox Menu

The menu also uses xml for config. You can generate this dynamically or statically to get a list of applications in categories like the picture below using obmenu-generator.

Your Guide to a Comfortable Linux Desktop With Openbox

To get this, install obmenu generator and edit your menu file. It should look like this (the -i adds icons):

<?xml version="1.0" encoding="utf-8"?>
<openbox_menu xmlns="http://openbox.org/"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://openbox.org/">
    <menu id="root-menu" label="obmenu-generator" execute="/usr/bin/perl /usr/bin/obmenu-generator -i" />
</openbox_menu>

If you prefer to customize the menu or use a faster static version (will not update when you install new apps) you can run obmenu-generator and customize the output.

GUI settings

If you're more of a graphical person, Obconf has you covered. This should have been installed with Openbox. Obconf can change most things in the RC file, but not autostart or keyboard shortcuts.

Your Guide to a Comfortable Linux Desktop With Openbox

Matching Chrome

If you would like to match Chrome to Arcbox colors, you can use the colors #2F343F and #404552.

Your Guide to a Comfortable Linux Desktop With Openbox

Here is the Chrome theme I made (crx file).

I am using a chrome extension I made (Start Clean New Tab Page: with search, without search).

Tint2

Your Guide to a Comfortable Linux Desktop With Openbox

Tint2 can be configured with Tint2conf which is installed with Tint2. If you would like my config, you can edit ~/.config/tint2/tint2rc with the contents of my gist.

The small black square shows that there is no music playing. The music indicator is powered by spotify-now. Here is the command:

{ echo "$(spotify-now -i " <b>%title" -e "<b>" -p " paused<b>" | awk -v len=40 '{ if (length($0) > len) print substr($0, 1, len-3) "..."; else print; }' | tr -d '&' | awk '{print $0 "</b>"}')"; echo "$(spotify-now -i '%artist' -p ' ' -e ' ')"; } | tr "\n" " "

The font awesome font should be installed for the same look. Here is what music playing looks like (long titles are shortened with ellipses, use pango markup with an executor in tint2):

Your Guide to a Comfortable Linux Desktop With Openbox

There are many more great Tint2 themes, a great place to look is /r/unixporn (again).

Finishing up

I hope you like Openbox! If you want more info, the Arch Wiki page on Openbox is a great resource.

The Openbox website

Here is my current screenshot (wall is snow peaks by Luan Nguyen):

Your Guide to a Comfortable Linux Desktop With Openbox

]]>
<![CDATA[Robert's Rices 2016]]>https://www.devpy.me/roberts-rices-2016/5e8f741938bee56e1ac05e63Wed, 18 Jan 2017 06:01:03 GMTRobert's Rices 2016

Last year, I got into Linux "ricing", which means customization of your desktop. Over the course of 2016, I made several configs, and I would like to share a few of my favorites with you.

[GNOME] Minimal Panel

Robert's Rices 2016
Robert's Rices 2016
Robert's Rices 2016

GNOME 3.2 with all my icons in the panel.

  • Icons: Papirus Icons
  • Gtk: Arc-Darker
  • Firefox: Arc-Darker Firefox theme
  • Wallpaper: Unsplash

I am using a fork of the MMOD panel gnome extension. Download the extension, then add it to ~/.local/share/gnome-shell/extensions/. If you use GNOME 2.20 or later, run gnome-shell --version and add your version to the extension's metadata.json.

[Openbox] Sunset


Robert's Rices 2016

Robert's Rices 2016
Robert's Rices 2016
Robert's Rices 2016

My most recent, and overall favorite rice.

  • Icons: Modified Paper Icons
  • Gtk: Modified Arc-Dark
  • Window theme: Custom (OB-DevPy)
  • Firefox: Arc-Darker Firefox theme with this added css.
  • Lock: xwobf with i3lock-colors
  • Wallpaper: Unsplash

Installation:

  1. Download Paper Icon Theme then run this script in the [Extracted Paper]/Paper folder. Then move the icons to ~/.icons/.
  2. Download the Arc-DevPy-Red Theme from github and extract it to ~/.themes/.
  3. Download the Ob-DevPy-Red Theme from github and extract it to ~/.themes/.
  4. Download and replace your ~/.config/tint2/tint2rc file with mine.
  5. Replace your ~/.Xresources with my file.

[Cinnimon] Simple tiled

Robert's Rices 2016

Robert's Rices 2016

Robert's Rices 2016

  • Distro: Arch
  • Desktop: Cinnamon
  • Extension: Gtile
  • Applet: Icing task manager (fork of window task manager)
  • More info in screenfetch

If you would like to see cool rices /r/unixporn is the way to go.

]]>
<![CDATA[Your Guide to a Practical Linux Desktop With i3WM]]>https://www.devpy.me/your-guide-to-a-practical-linux-desktop-with-i3wm/5e8f741938bee56e1ac05e5fTue, 29 Nov 2016 01:00:04 GMTYour Guide to a Practical Linux Desktop With i3WM

Technically, what you see in my screenshot above is not really i3. The distance between the windows and the screen edges is from a fork of i3, dubbed i3-gaps, created by Ingo Bürk. Also, the bar is an alternative to i3bar, which I will go over later in the list of bars for i3.

i3WM is not a traditional desktop environment, such as Unity or Gnome. Instead, it is only a window manager, and it's only purpose is to control the layout of your screen. i3 is not recommended for beginners to Linux, as all the configuration you do is in text files, with almost no gui.

You have two major choices for configuration in i3. You can have the files in a dot folder (such as /home/user/.i3/) or in the .config folder (/home/user/.config/i3/). It does not really matter which you use, but in this guide I will be referring to the .config approach.

Installing

If your distro is not listed, look it up. You should be able to find instructions easily.

Arch

sudo pacman -S i3

Ubuntu

source

# login to the root shell for one 'echo' command
sudo -i
echo "deb http://debian.sur5r.net/i3/ $(lsb_release -c -s) universe" >> /etc/apt/sources.list
logout
# we've returned to our user account
sudo apt-get update
sudo apt-get --allow-unauthenticated install sur5r-keyring
sudo apt-get update
sudo apt-get install i3

Fedora

source

sudo dnf install i3 i3status dmenu i3lock

If you are using Arch, the easiest way to get to i3 is with a session manager.
I reccomend lightdm, which can be installed from the aur with

yaourt -S lightdm-webkit-greeter

When you install i3, it gives you a choice of using the defaults or setting it up yourself. If you are a beginner, I recommend using the defaults, which includes a mod key of Alt. You use the mod key in several keyboard shortcuts, such as when you move windows or resize them.

Using i3

Here are the keyboard command to use i3. They might seem complicated and hard to use at first, but with time they become second nature. When I was using Ubuntu on my friends laptop, I found myself tapping Alt + Enter for a terminal. Remember, if you stuck with the defaults, Mod is Alt.

Mod + Enter

This opens a terminal.

Mod + Arrow Keys

This selects a window, kind of like Alt Tab.

Mod + Shift + Arrow Keys

This moves the selected window.

Mod + Shift + Space

This floats the window. Move with Alt drag, resize with Alt right click drag.

Mod + R

This enters resize mode. Resize using the arrow keys, exit with Enter.

Another useful method to resize windows is Alt + right click drag.

Mod + H

This sets the layout mode to horizontal. New windows tile left and right.

Mod + V

This sets the layout mode to vertical. New windows tile up and down.

Mod + W

This sets the layout mode to tabs. New windows are tabbed.

Mod + S

This sets the layout mode to stacked. New windows are stacked.

Configuring

.config/i3/config is the file that controls the window manager. Here, you define startup applications, custom keyboard shortcuts, and layout rules. If you use i3bar, this is where you configure it.

Useful snippets

Place these at the end of the file (.config/i3/config). Exec means run command.

Set a background with feh

exec feh --bg-scale /path/to/your/image.png

Restore set background (chosen with gui) using nitrogen

exec nitrogen --restore

Start compton for window effects

exec --no-startup-id compton

Open dmenu desktop (application search) with the super key

bindsym Super_L exec i3-dmenu-desktop

Lock the screen with Control+Alt+L

bindsym Control+Mod1+l exec i3lock

Bind your audio keyboard keys to change volume and pause/play

bindsym XF86AudioRaiseVolume exec amixer -q set Master 5%+ unmute
bindsym XF86AudioLowerVolume exec amixer -q set Master 5%- unmute
bindsym XF86AudioMute exec amixer -q set Master mute
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous

GTK

You can change gtk settings with lxappearance. If you need to choose a theme, check out my article on the best linux themes.

Bars

Bars are what you use to see info on your system, and in some cases launch apps and change settings. The default bar is i3bar with i3status, so that is not included here. If you want the same look as the screenshots, the files are linked.

Lemonbar

Your Guide to a Practical Linux Desktop With i3WM
Lemonbar is very configurable and is probably the most popular solution, but has no clickable areas. To get this look, install lemonbar, and download the dots.

To run lemonbar on startup, add

exec /path/to/i3_lemonbar.sh

to your .config/i3/config file.

Yabar

Your Guide to a Practical Linux Desktop With i3WM
This is my custom config for yabar, a simple bar from /u/geommer. Open the image in a new tab, because it looks small on the website. To get this config, install yabar and edit .config/yabar/yabar.conf with the contents of my gist.

To run yabar on startup, add

exec --no-startup-id yabar

to your .config/i3/config file.

XFCE4 Panel

Your Guide to a Practical Linux Desktop With i3WM
Xfce4 panel can be run on i3, and it looks pretty good. This is a good option if you want a GUI config.

To run it on startup, add

exec --no-startup-id xfce4-panel --disable-wm-check

to your .config/i3/config file.

Positron Bar

Your Guide to a Practical Linux Desktop With i3WM
Positron bar is another alternative to i3bar, with the clickability that lemonbar and yabar lack. It is powered by Node.js and styled with css. Follow the instructions in the git repo to install it.

Wrapup

Have fun with i3! You can do some pretty cool stuff with it.

Your Guide to a Practical Linux Desktop With i3WM

]]>
<![CDATA[The ThinkPad E570: Fast Linux Laptop at a Low Price]]>https://www.devpy.me/the-thinkpad-e570-fast-linux-laptop-at-a-low-price/5e8f741938bee56e1ac05e61Mon, 28 Nov 2016 05:36:30 GMTThe ThinkPad E570: Fast Linux Laptop at a Low Price

Update 03/03/17: These are back up as the E575 with AMD instead of Intel cores.

Update 12/09/16: These have sold out as of now.


I have been using mine for 6 months now it's still great; running Arch linux with tlp gets me 7 hours of battery (on medium brightness). I replaced my hard drive with the Samsung 960 Evo SSD, which I would recommend buying instead of their SSD (the EVO I bought is 250 gigs for 130$ and the thinkpad version is 256 gigs for 230$).

The one quirk I have with this laptop is that the material it's made from is smear attractive.

The back of my laptop is now a smudgy mess. Oh well.


ThinkPads are known to be stable and great for running Linux on. This Cyber weekend, Lenovo has large deals on their laptops, and the E570, a brand new Laptop from Lenovo, is included. At the lowest end configuration, the E570 has the i3 processor, 1366p display, and 4 gigabytes of RAM for $450 (normally $600).

I bought one of these for myself on Friday at the highest end configuration, with the i7 3.5Ghz processor, 16gb of RAM, and a 1080p display for $720 (normally $960). The laptop has a slightly bulky design, but overall, it looks quite nice.

The ThinkPad E570: Fast Linux Laptop at a Low Price

Sadly, Lenovo has still not started shipping laptops with Linux installed, but you can always use your installation disk before booting up Windows.

]]>
<![CDATA[2016's Best Gifts for Geeks: Ten of the Best]]>https://www.devpy.me/2016s-best-gifts-for-geeks-ten-of-the-best/5e8f741938bee56e1ac05e60Fri, 25 Nov 2016 01:31:43 GMT2016's Best Gifts for Geeks: Ten of the Best

Innovation is increasing at amazing rates, and new products and software are popping up at every corner. In the last ten years, geek things like Linux and Android have become mainstream, the superior quality of open source software changing the tech market. [1]

This year we've seen boards like C.H.I.P and Pi Zero offer computing at ridiculously low prices[1:1], and Ubuntu 16.10 brought Unity 8 with promising convergence[1:2].

Here are some of my favorite gifts this year, with boards, drones, and more.

Note: These are in rough order of price, from low to high.
Note 2: Black Friday deals will probably drop these prices, and I will try to update, but keep in mind that the prices here may be inaccurate. Leaving a comment with the better price would be very helpful.

Google Cardboard Kit (Jet Black) - 11$

2016's Best Gifts for Geeks: Ten of the Best

The Google cardboard is a great way to get into VR. Anybody with a phone can use it, and the cheap price makes it accessible for everyone.

  • The jet black style of EightOnes looks better than plain cardboard
  • The Google cardboard is awesome with a FPV drone, like the Parrot AR
  • The app comes with 100's of virtual reality games and experiences.

Estes Proto X Nano - 33$

2016's Best Gifts for Geeks: Ten of the Best

The Proto X nano is a tiny drone that flies surprisingly well. It is a great drone to learn to fly on, and has beginner and advanced control modes.

  • More of an indoor toy; as one would expect, not great in wind
  • Gyros keep it upright
  • Lots of colors!

This is a good beginner - to mid range drone that is fun to fly and fairly cheap.

Chromecast - 35$

2016's Best Gifts for Geeks: Ten of the Best

Chromecast makes streaming easy with this tiny hdmi device. You can control it with a phone or a chrome extension[1:3].

  • Streamed from the cloud, so proximity doesn't matter
  • A whole bunch of apps to stream from
  • Easy to use and low requirements: A TV and a place to plug it in.
  • You get HBO now for 3 months when you purchase.

Raspberry Pi 3 Model B - 35$


2016's Best Gifts for Geeks: Ten of the Best
The new Raspberry Pi is much improved:

  • 1.2GHz 64-bit quad-core ARMv8 CPU[1:4]
  • Built-in wireless card
  • Bluetooth and BLE
  • Hackable as ever.

This cheap Linux board will make anyone happy; my 12 year old little brother loves his.

Echo Dot (2nd Generation) - 40$

2016's Best Gifts for Geeks: Ten of the Best
The Echo Dot is a smaller, cheaper version of Amazon Echo that does not require you to own an Echo. This alternative packs a smaller speaker, but can be attached to your existing sound system.

  • Amazon Alexa answering service
  • Hackable, with open source addons called "skills"
  • Integrates with smart appliances.

The Echo Dot is cheap enough to get one for every room, but still very powerful and useful.

Chromebit - 82$


2016's Best Gifts for Geeks: Ten of the Best

Chromebit is Linux in your pocket, and no: it's not your Android phone. Chromebit puts Google's Chrome OS on a usb drive sized device, which similarly to the Chromecast, plugs in via hdmi to a monitor or TV.

NVIDIA Jetson TK1 Development Kit - 199$


2016's Best Gifts for Geeks: Ten of the Best
The NVIDIA Jetson tk1 can be thought of as the older brother of the Raspberry Pi. It sports a CUDA core for every dollar of it's price, and is perfect for machine learning or computer vision projects. I've had a lot of fun with mine.

It might not be cheap, but it is powerful.

Parrot AR Drone 2.0 Elite Edition - 199$


2016's Best Gifts for Geeks: Ten of the Best

This easy to fly drone can:

All in all this is a fun, hackable drone that anyone will enjoy.

Samsung Gear S2 - 225$


2016's Best Gifts for Geeks: Ten of the Best
This curvy smartwatch made by Samsung is a great gift for a watch lover.

Kano Computer Kit with Screen - 300$


2016's Best Gifts for Geeks: Ten of the Best

This computer kit is fun for both kids and adults. One reviewer said:

I was given Kano as a gift - as a middle aged female adult. As soon as I opened the kit I got so excited to assemble. Once I assembled and plugged it in I felt like my 11 year old self figuring out how and copying computer code to make games on my Commodore 64.

Amazon review

  • Learn to put together a computer
  • Learn the Linux terminal through games
  • Comes with a bunch of [educational-ish] apps.

Story based Linux learning = pretty awesome gift.
Note: You can get a cheaper version without the screen for 150$.



  1. Raspberry Pi 3 stats ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

]]>