Skip to content

Instantly share code, notes, and snippets.

View ttscoff's full-sized avatar
💭
Breathing

Brett Terpstra ttscoff

💭
Breathing
View GitHub Profile
@ttscoff
ttscoff / hugo_youtube_textexpander.js
Created February 22, 2023 19:03
TextExpander JavaScript for generating Hugo youtube tag with a YouTube url in clipboard
var url = TextExpander.pasteboardText;
var youtubeRx = /(?:youtu\.be\/|youtube\.com\/watch\?v=)([a-z0-9_\-]+)$/i
if (youtubeRx.test(url)) {
var id = youtubeRx.exec(url)[1];
TextExpander.appendOutput(`{< youtube ${id}>}`);
}
@ttscoff
ttscoff / rouge_bunch.rb
Created August 3, 2022 22:15
Rouge highlighting for Bunch syntax
# This "hook" is executed right before the site's pages are rendered
Jekyll::Hooks.register :site, :pre_render do |site|
require "rouge"
module Rouge
module Lexers
class BunchLexer < RegexLexer
title 'Bunch'
desc "Bunch.app File"
@ttscoff
ttscoff / btt_indigo.rb
Last active July 2, 2022 15:52
Indigo control for BetterTouchTool
#!/usr/bin/env ruby
# Indigo control for BetterTouchTool
#
# Usage:
#
# To query a device status
# /path/to/btt_indigo.rb status "Device Name"
#
# To toggle a device:
# /path/to/btt_indigo.rb toggle "Device Name to Query for state" "Action On Group Name" "Action Off Group Name"
@ttscoff
ttscoff / bunch_status.rb
Last active July 2, 2022 12:00
Bunch Status for BetterTouchTool and Stream Deck
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'json'
# Usage in a BetterTouchTool Shell Script Widget
#
# For a Stream Deck widget:
# /path/to/bunch_status.rb sd title "Bunch Name"
#
@ttscoff
ttscoff / lastcolor.rb
Created July 1, 2022 15:26
Get the current ANSI color sequence at the point a string ends
#!/usr/bin/env ruby
# frozen_string_literal: true
# String color helpers
class ::String
ESCAPE_REGEX = /(?<=\[)(?:(?:(?:[349]|10)[0-9]|[0-9])?;?)+(?=m)/.freeze
# Get the calculated ANSI color at the end of the string
#
# If you want to inject a colored string into another
@ttscoff
ttscoff / 256color.rb
Last active July 14, 2022 23:57
256-color hex intepretation for terminal colorization
#!/usr/bin/env ruby
# frozen_string_literal: true
# 256-color hex interpretation for terminal colorization
#
# Usage
# "text".color256(foreground, background)
#
# print "Colorize this".color256('#f7921e', '#666')
@ttscoff
ttscoff / git_fzf.fish
Last active December 23, 2021 11:49
Git/fzf keybindings for Fish, adapated from @junegunn
# @ttscoff's version of @max-sixty's revision of @aluxian's
# fish translation of @junegunn's fzf git keybindings
# https://gist.github.com/junegunn/8b572b8d4b5eddd8b85e5f4d40f17236
# https://gist.github.com/aluxian/9c6f97557b7971c32fdff2f2b1da8209
#
# 2021-12-23:
# - Fix hash returned by *git_log being truncated
# - Allow multiple selections for git_status
# - Allow multiple selections for git_log, insert HASH[1].. HASH[-1] range
# - bind ctrl-a for select all
mdfind -onlyin /Applications '(((kMDItemContentTypeTree == "com.apple.application"cd && (kMDItemUsedDates >= "$time.today(-30d)" && kMDItemUsedDates < "$time.today(+1d)"))))' 2> /dev/null | grep -vE '/(Dock|Finder|Music|Messages|System Preferences|Activity Monitor|Calendar).app' | awk -F/ '{sub(/\.app$/, ""); print "- ["$NF"](!s)"}' | awk '!x[$0]++'
@ttscoff
ttscoff / namecheap_ddns.sh
Created August 26, 2021 13:22
Namecheap DDNS for Synology
#!/bin/bash
## Namecheap DDNS updater for Synology
## Brett Terpstra <https://brettterpstra.com>
PASSWORD="$2"
DOMAIN="$3"
IP="$4"
PARTS=$(echo $DOMAIN | awk 'BEGIN{FS="."} {print NF?NF-1:0}')
@ttscoff
ttscoff / spellcheck.bash
Last active November 19, 2021 20:18
Spell check all markdown files in current git repo
#!/bin/bash
# Check spelling of all Markdown files in current git repo using aspell
for file in $(git ls-files|grep -v -E '(/|^)_'|grep -iE '\.(md|markdown)$'); do
aspell -M --lang=en --dont-backup --home-dir=$HOME --personal=$HOME/aspell.txt check "$file"
done