Skip to content

Instantly share code, notes, and snippets.

@mikeslattery
mikeslattery / .vimrc
Last active Nov 15, 2021
NVim settings for Vim
View .vimrc
" This .vimrc sets NeoVim's defaults for Vim
" then it loads NeoVim's init.vim
" Windows gVim is not supported.
" OPTIONS
" Vim 7 options that differ
set nocompatible
@mikeslattery
mikeslattery / airplay-client.sh
Last active Oct 17, 2021
An attempt at an airplay client
View airplay-client.sh
#!/bin/bash
# Screen cast your desktop to Apple TV (airplay).
# Usage: airplay-client <server-address> <local-address>
# Untested. Likely doesn't work. Airplay V1 only.
if [[ "$SERVER_PORT" == "7000" ]]; then
# We are the cgi script.
echo 'Content-Type: video/h264'
@mikeslattery
mikeslattery / gvim-ide-intg.md
Last active Oct 25, 2021
How to loosely integrate IdeaVim and gVim
View gvim-ide-intg.md

This will allow you to switch between a Jetbrains IDE and gVim at the same file/line/column by hitting <leader>i. Hit <leader><leader>i to start gVim (once).

I've also done this with terminal Vim, but it's much more complex and varies depending on your environment (OS, DE, multiplexers, terminal).

Steps:

Install gVim and the IdeaVim plugin

In IDE: Settings > Build,Execution,Deployment > check "Allow unsigned requests"

@mikeslattery
mikeslattery / ssh2config.sh
Last active May 24, 2021
Convert shell history or CLI args into ~/.ssh/config format.
View ssh2config.sh
#!/bin/bash
ssh2append() {
ssh -G "$@" | sed -n 's/^hostname /Host /p'
comm -23 <(ssh -G "$@" 2>/dev/null | sort) <(ssh -G . 2>/dev/null | sort) | sed 's/^/ /'
# This loop+if is for remote command, -N, -W as -G lacks support
while getopts '1246AaCfGgKkMNnqsTtVvXxYyB:b:c:D:E:e:F:I:i:J:L:l:m:O:o:p:Q:R:S:W:w:' opt; do
#shellcheck disable=SC2254
case "$opt" in
@mikeslattery
mikeslattery / rt-clip.sh
Last active Aug 1, 2020
Markdown to Clipboard
View rt-clip.sh
#!/bin/bash
# Converts markdown format to clipboard in html format.
# Requres Wayland, pandoc, and wl-clipboard.
# Usage:
# rt-clip - Copy from stdin
# rt-clip <file> Copy from a file
# rt-clip Copy from clipbaord
if [[ "$1" == "-" ]]; then shift; cat
@mikeslattery
mikeslattery / alpine-chroot.sh
Created Apr 30, 2020
Create a temporary Alpine chroo
View alpine-chroot.sh
#!/bin/sh
# Create and launch an alpine chroot
# If /tmp is not tmpfs, change this to /dev/shm
rootfs=/tmp/alpine
set -eu
if ! [ -f $rootfs/etc/resolv.conf ]; then
if ! [ -f ~/Downloads/alpine.tar.gz ]; then
curl -Lf -o ~/Downloads/alpine.tar.gz http://dl-cdn.alpinelinux.org/alpine/v3.11/releases/x86_64/alpine-minirootfs-3.11.6-x86_64.tar.gz
@mikeslattery
mikeslattery / init.gradle
Last active May 1, 2020
Build gradle projects to RAM
View init.gradle
// This goes in ~/.gradle/init.d/tmpfs.gradle
def ramdir='/tmp/gradle'
gradle.projectsLoaded {
rootProject.allprojects {
buildDir = "${ramdir}${project.path}/build"
//println "${project.name}.buildDir = ${buildDir}"
}
@mikeslattery
mikeslattery / gc-mon.sh
Last active May 24, 2021
Monitor memory use of all running java applications
View gc-mon.sh
#!/bin/bash
# Display memory useage of all running java processes
pidof java | xargs -r ps -f
echo ''
echo $'PID\t% MEM\tTMEM\tGC Time'
while true; do
for pid in $(pidof java); do
echo -n "$pid "
View tunic-uml.dot
// Usage: dot -Tpdf -o tunic-uml.pdf tunic-uml.dot; xdg-open tunic-uml.pdf
digraph G {
Presenter -> View;
View [shape=box];
Presenter -> Service;
Service -> System;
@mikeslattery
mikeslattery / notify-send.ps1
Last active Feb 20, 2020
Windows Notification Toast
View notify-send.ps1
function notify($notificationTitle) {
$app = '{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\WindowsPowerShell\v1.0\powershell.exe'
[void][Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime]
# Fetch empty template
$templateType = [Windows.UI.Notifications.ToastTemplateType]::ToastText01
$template = [xml]([Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent($templateType).getXml())
#Convert to .NET type for XML manipuration
[void]$template.GetElementsByTagName("text").AppendChild($template.CreateTextNode($notificationTitle))