From 221ae40e4f620e963aef0b9687748f64a01e8bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Mon, 15 Apr 2024 14:50:52 +0300 Subject: [PATCH] extract_url --- shared/home/default.nix | 8 ++++++++ shared/home/urlview-mine.tmux | 20 ++++++++++++++++++++ shared/home/urlview.tmux | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 shared/home/urlview-mine.tmux create mode 100644 shared/home/urlview.tmux diff --git a/shared/home/default.nix b/shared/home/default.nix index f8812e3..bc39311 100644 --- a/shared/home/default.nix +++ b/shared/home/default.nix @@ -67,6 +67,8 @@ in { home.packages = with pkgs; lib.mkMerge [ + [extract_url] + (lib.mkIf devTools [ pkgs-unstable.go_1_22 zig @@ -203,6 +205,12 @@ in { set-option -sg escape-time 10 set-option -g default-terminal "screen-256color" set-option -sa terminal-features ',xterm-256color:RGB' + + run-shell ${(pkgs.substituteAll { + src = ./urlview.tmux; + extract_url = pkgs.extract_url; + }) + .outPath} ''; }; } diff --git a/shared/home/urlview-mine.tmux b/shared/home/urlview-mine.tmux new file mode 100644 index 0000000..e9a6d26 --- /dev/null +++ b/shared/home/urlview-mine.tmux @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +get_tmux_option() { + local option=$1 + local default_value=$2 + local option_value + option_value=$(tmux show-option -gqv "$option") + if [ -z "$option_value" ]; then + echo "$default_value" + else + echo "$option_value" + fi +} + +readonly key="$(get_tmux_option "@urlview-key" "u")" + +tmux bind-key "$key" capture-pane -J \\\; \ + save-buffer "${TMPDIR:-/tmp}/tmux-buffer" \\\; \ + delete-buffer \\\; \ + split-window -l 10 "@extract_url@/bin/extract_url" '${TMPDIR:-/tmp}/tmux-buffer'" diff --git a/shared/home/urlview.tmux b/shared/home/urlview.tmux new file mode 100644 index 0000000..88752ce --- /dev/null +++ b/shared/home/urlview.tmux @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +get_tmux_option() { + local option=$1 + local default_value=$2 + local option_value=$(tmux show-option -gqv "$option") + if [ -z $option_value ]; then + echo $default_value + else + echo $option_value + fi +} + +find_executable() { + if type urlview >/dev/null 2>&1; then + echo "urlview" + elif type extract_url >/dev/null 2>&1; then + echo "extract_url" + fi +} + +readonly key="$(get_tmux_option "@urlview-key" "u")" +readonly cmd="$(find_executable)" + +if [ -z "$cmd" ]; then + tmux display-message "Failed to load tmux-urlview: neither urlview nor extract_url were found on the PATH" +else + tmux bind-key "$key" capture-pane -J \\\; \ + save-buffer "${TMPDIR:-/tmp}/tmux-buffer" \\\; \ + delete-buffer \\\; \ + split-window -l 10 "$cmd '${TMPDIR:-/tmp}/tmux-buffer'" +fi