Skip to content

Instantly share code, notes, and snippets.


Jonas Berlin xkr47

View GitHub Profile
xkr47 /
Last active Jan 24, 2021
Script for moving/renaming files/directories arbitrarily in whole git history of single branch, using perl expressions

Install into PATH e.g. $HOME/bin/ as "git-filter-mv" and chmod a+rx git-filter-mv

It works with any special characters in filenames like tabs and linefeeds. It works with empty commits.

Based on example from git-filter-branch manpage.

If you want to print debug messages, use STDERR e.g. print STDERR "File: $_\n";


xkr47 /
Last active Sep 25, 2020
"git alias" command for adding/removing/editing git aliases conveniently
set -eo pipefail
usage () {
cat <<'EOF'
git alias [<options>]
git alias [<options>] name
git alias [<options>] name newvalue
xkr47 / Cargo.toml
Last active Jun 19, 2020
Seriously funny rust error message
View Cargo.toml
name = "x"
version = "0.1.0"
edition = "2018"
dbus = "0.8.1"
xkr47 /
Last active Nov 11, 2019
Simple calculator in language, with support for time durations & base 2..36

Example session:


Result: 5₁₀


Result: 5,00:00:00 = 5.000000 days
         120:00:00 = 120.000000 hours
xkr47 / doodle.css
Last active Sep 24, 2019
Fix Doodle to use full screen width and to stop resetting the horizontal scrolling when scrolling "outside" the vote table
View doodle.css
.d-pagesContainer {
max-width: unset !important;
.d-expandableScrollContainer {
overflow: visible !important;
background: white;
max-width: unset !important;
width: unset !important;
#d-participationPage #d-metadataView .d-pollMetadataRow, #d-participationPage #d-metadataView .d-pollHiddenButton.d-silentButton {
View flowdock.css
/* make notifications darker - suitable for dark theme */
.msg-body {
color: #585860;
.comment-group-hover .msg-body {
color: #9090a0;
/* just restore default theme colour that gets overridden by the above for normal messages */
.msg-body > p, .msg-body ul {
xkr47 / message.js
Last active Aug 23, 2019
keybase ephemeral message test
View message.js
// rendition of a message "test" set to expire in 30 seconds, as retrieved by json api after "exploding":
// $ keybase chat api -p -m '{"method": "read", "params": {"options": {"channel": {"name": "keybasefriends", "members_type": "team", "topic_name": "general", "pagination": {"num": 1}}}}}'
"msg": {
"id": 52853,
"conversation_id": "0000d5ba71470610a40b4d32af53a52775cc561589525d7b21bad9ec057b6aac",
"channel": {
"name": "keybasefriends",
"public": false,
"members_type": "team",
xkr47 /
Last active Mar 24, 2021
Focusrite Scarlett Linux support 2019-07-29

Focusrite Scarlett Linux support 2019-07-29

1st gen <2012

  • Solo
  • Studio
  • 2i2
  • 2i4
  • 6i6 1235:8012 since Linux 3.19
xkr47 / jsonmap
Last active Oct 26, 2018
My perl-based `jq` replacement
View jsonmap
echo -n '{"a":5,"b":7}' | jsonmap -r '$_->{"a"}." and ".$_->{"b"}'
# usage: $0 [options] <perlcode> [<inputfile>]
# reads json from stdin/inputfile, or if -R given, reads whole input as a string
# perlcode gets the json/string as a perl object in $_
# return object from perlcode is encoded as json to stdout, or passed as-is if -r given
# pretty-printed by default, -c for compact
# all input/output is in UTF-8
xkr47 /
Last active Sep 11, 2018
Handy script for generating a github "diff" url between two refs


$ github-diff origin/master 04ed4b

Requires the commits to be available locally, so you might have to git fetch first.