diff options
Diffstat (limited to 'pkgs/scripts')
| -rw-r--r-- | pkgs/scripts/clip.nix | 50 | ||||
| -rw-r--r-- | pkgs/scripts/default.nix | 13 | ||||
| -rw-r--r-- | pkgs/scripts/merge-pdfs.nix | 38 |
3 files changed, 101 insertions, 0 deletions
diff --git a/pkgs/scripts/clip.nix b/pkgs/scripts/clip.nix new file mode 100644 index 0000000..3e16e3e --- /dev/null +++ b/pkgs/scripts/clip.nix @@ -0,0 +1,50 @@ +{ + lib, + writeShellScriptBin, + gnome-screenshot, + xclip, + file, + imagemagick, + toPDF, + ... +}: +with lib; let + name = + if toPDF + then "clip-pdf" + else "clip"; + + pdfCmdline = optionalString toPDF '' + if [ $# -lt 1 ]; then + echo "Usage: $0 <out.pdf> [opts...]" >&2 + exit 1 + fi + + OUT="$1" + shift + ''; + + copyOut = + if toPDF + then '' + ${imagemagick}/bin/convert "$CLIP" "$OUT" + '' + else '' + ${xclip}/bin/xclip -selection clipboard \ + -t $(${file}/bin/file -b --mime-type $CLIP) <"$CLIP" + ''; +in + writeShellScriptBin name '' + ${pdfCmdline} + + OPTIONS=-a + if [ "x$@" != "x" ]; then + OPTIONS="$@" + fi + + CLIP="$HOME/vtmp/$$.png" + ${gnome-screenshot}/bin/gnome-screenshot "$OPTIONS" -f "$CLIP" + ${copyOut} + + rm "$CLIP" + '' diff --git a/pkgs/scripts/default.nix b/pkgs/scripts/default.nix new file mode 100644 index 0000000..ed18647 --- /dev/null +++ b/pkgs/scripts/default.nix @@ -0,0 +1,13 @@ +{ + callPackage, + symlinkJoin, + ... +}: +symlinkJoin { + name = "scripts"; + paths = [ + (callPackage ./clip.nix {toPDF = false;}) + (callPackage ./clip.nix {toPDF = true;}) + (callPackage ./merge-pdfs.nix {}) + ]; +} diff --git a/pkgs/scripts/merge-pdfs.nix b/pkgs/scripts/merge-pdfs.nix new file mode 100644 index 0000000..cb7d678 --- /dev/null +++ b/pkgs/scripts/merge-pdfs.nix @@ -0,0 +1,38 @@ +{ + writeShellScriptBin, + pdftk, + ... +}: +writeShellScriptBin "merge-pdfs" '' + set -e + export PATH="$PATH:${pdftk}/bin" + + if [ $# -lt 3 ]; then + echo "Usage: $0 <output> <PDFs...>" >&2 + exit 1 + fi + + OUTPUT="$1" + shift + + WORKDIR="$HOME/vtmp/merge-pdfs.$$" + BOOKMARKS="$WORKDIR/bookmarks.txt" + FMT="BookmarkBegin + BookmarkTitle: %s + BookmarkLevel: 1 + BookmarkPageNumber: 1 + " + + mkdir "$WORKDIR" + + N=0 + for SOURCE in "$@"; do + BASE="$(basename "$SOURCE")" + printf "$FMT" "''${BASE%.*}" >"$BOOKMARKS" + pdftk "$SOURCE" update_info "$BOOKMARKS" output "$WORKDIR/"$(printf "%04d" $N).pdf + N=$((N+1)) + done + + pdftk "$WORKDIR"/*.pdf cat output "$OUTPUT" + rm -r "$WORKDIR" +'' |
