Writing a simple bash filter

To write a simple bash filter application, start by declaring your filter as a bash script with #!/usr/bin/env bash. This informs your shell what interpreter to use when running the script.

The trick to writing a filter is to read lines from a filename if supplied ${1}, or from /dev/stdin if no filename is supplied.

An example script lowercase

#!/usr/bin/env bash

while read line; do
    echo ${line,,}
done < "${1:-/dev/stdin}"

This script can then be utilized in a pipeline, e.g. cat file | lowercase or by feeding it a filename,lowercase file.


Udgivet i Programmering, Shellscript | Skriv en kommentar

Screenshot script for Ubuntu 18.04

This script will take a screenshot, upload it to a server and copy the URL into your clipboard and finaly play a sound to tell you that it’s done, first install xclip:

apt-get install xclip

Create screenshot.sh

filename='Screenshot_from_'`date +%Y-%m-%d_%H-%M-%S`'.png'
echo $filename
gnome-screenshot --area --file=`eval echo ~`/Pictures/$filename
scp ~/Pictures/$filename user@website.dk:/var/www/website.dk/htdocs-ssl/screenshots/$filename               
echo -n https://website.dk/screenshots/$filename|xclip
aplay ~/screenshot.wav

You must setup ssh-keys to allow the scp transfer to go through without password.

Now open Ubuntu Settings (The gear and wrench icon), select “Devices” and “Keyboard” scroll to the bottom and click the plus-sign (+) and fill it out as following:

And finaly you need to find a wave file you want to play afterwards, i use one of a camera shutter i found on a creative commons website – which i unfortunateley lost the link to … if you have a good link, please submit it and i will post it.

Udgivet i Linux, Workstation | Skriv en kommentar

WM independant shortcuts with xbindkeys

First install:

apt-get install xbindkeys

And create a config file, /home/user/.xbindkeysrc:

    Control + Alt + P 

And run xbindkeys -p

Udgivet i Linux, Workstation | Skriv en kommentar

Installing Vagrant and host-manager with LXC on Ubuntu 18.04

This took me quite a while and failed tries to figure out:

apt-get update
apt-get install lxc
wget https://releases.hashicorp.com/vagrant/2.1.2/vagrant_2.1.2_x86_64.deb
dpkg -i vagrant_2.1.2_x86_64.deb
vagrant plugin install vagrant-lxc
vagrant plugin install vagrant-hostmanager

You should probably check if a newer version has been released, if you miss any dependencies try to install the vagrant-lxc packages from Ubuntu before the .deb package.

Create a project folder containing the following Vagrantfile:

Vagrant.configure("2") do |config|
   config.vm.box = "debian/stretch64"
   config.hostmanager.enabled = true
   config.hostmanager.manage_host = true
   config.hostmanager.manage_guest = true

   config.vm.define "ns1" do |ns1|
     ns1.vm.hostname = "ns1.local"

   config.vm.define "ns2" do |ns2|
     ns2.vm.hostname = "ns2.local"


Now run

vagrant up

To bring the environment online, and verify name-resolving and connectivity:

# ping ns1.local -c 4
PING ns1.local ( 56(84) bytes of data.
64 bytes from ns1.local ( icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from ns1.local ( icmp_seq=2 ttl=64 time=0.065 ms
64 bytes from ns1.local ( icmp_seq=3 ttl=64 time=0.066 ms
64 bytes from ns1.local ( icmp_seq=4 ttl=64 time=0.081 ms

--- ns1.leandns.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.052/0.066/0.081/0.010 ms

Connect to one of the machines with:

# vagrant ssh ns1

Enjoy 😉

Udgivet i Development, Linux, Vagrant, Workstation | Skriv en kommentar

Installing Vagrant with KVM on Ubuntu 18.04

Start by installing necessary packages:

apt-get install nfs-kernel-server qemu-kvm libvirt-daemon libvirt-daemon-system virtinst bridge-utils vagrant-libvirt

Create an ordinary user and add it to the sudo and the libvirt group:

adduser mike
usermod -G libvirt,sudo mike

Now you should be able to switch into this user and give Vagrant a spin:

su - mike
mkdir testmachine
cd testmachine
vagrant init debian/stretch64
vagrant up


Udgivet i KVM, Links, Programmering, Vagrant | Skriv en kommentar

Inotify, Run (Python) script once it changes

This is sadly Linux Only, start by installing inotify-tools:

# apt-get install inotify-tools

and create the following script:

echo Waiting for filechange ...
inotifywait -q -m -e close_write,moved_to --format %e/%f . |
while IFS=/ read -r events file; do
    if [ "$file" = "script.py" ]; then
        python ./script.py

this actually watches the directory, because Vim writes files by writing your alterations to a temporary file and moving it in place of the old one, however this aproach also works with normal write.

Udgivet i Linux, Vim | Skriv en kommentar

Ubuntu 18.04 LTS Default video player totem wont play mp4 files

Took me a while to figure out, but for some reason the gstreamer1.0-vaapi needs to be uninstalled.

Udgivet i Workstation | Skriv en kommentar

Apple-style screenshoting with autoupload

Install xclip and scrot:

apt-get install scrot xclip

Download a shutter wave, i found one here: https://www.soundjay.com/camera-sound-effect.html

Actually this one: https://www.soundjay.com/mechanical/camera-shutter-click-03.wav

Add the following lines to your i3 config (~/.config/i3/config):

bindsym --release Shift+Print exec --no-startup-id scrot -s -e 'scp $f root@example.com:/var/www/screenshots && echo https://example.com/screenshots/$f|xclip && aplay ~/.config/screenshot.wav'

bindsym --release $mod+Shift+4 exec --no-startup-id scrot -s -e 'scp $f root@example.com:/var/www/screenshots && echo https://example.com/screenshots/$f|xclip && aplay ~/.config/screenshot.wav'

Note i added two keybindings, you may choose any combination you wish.

You also need to install password-less ssh keys for the example.com server for this to work.

Udgivet i I3WM, Knowledge Base, Linux, Workstation | Skriv en kommentar

Thinkpad T430s Keybindings i I3


bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% 
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5%
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle 
bindcode 156 exec ~/.config/toggletouchpad.sh


if synclient -l | grep "TouchpadOff .*=.*0" ; then
    echo off
    synclient TouchpadOff=1 ;
    echo on
    synclient TouchpadOff=0 ;


Udgivet i I3WM, Knowledge Base, Workstation | Skriv en kommentar

Using v4l2loopback to create custom v4l2 interfaces

Duplicate a stream:

modprobe v4l2loopback devices=2 card_label="Mike er en hest","Det er brian oxo"

ffmpeg -f video4linux2 -s 800x600 -i /dev/video0 -codec copy -f v4l2 /dev/video2 -codec copy -f v4l2 /dev/video3


Udgivet i Knowledge Base, Videostreaming | Skriv en kommentar