diff options
author | Andrew Cady <d@jerkface.net> | 2021-09-14 02:01:26 -0400 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2021-09-14 02:01:26 -0400 |
commit | 2fcc9ad27c5f2d8ca58df22eb7f9920c634b279c (patch) | |
tree | 1b5d1ae5d6a9657c264dc9d6fa8e61ab1292e13f /dot/local/bin/cutbuffer_pop | |
parent | f2068c96072753bfd60c0f089a4ed3c7a5d96e21 (diff) |
cutbuffer stack feature partially implemented
Diffstat (limited to 'dot/local/bin/cutbuffer_pop')
-rwxr-xr-x | dot/local/bin/cutbuffer_pop | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/dot/local/bin/cutbuffer_pop b/dot/local/bin/cutbuffer_pop new file mode 100755 index 0000000..6b314e5 --- /dev/null +++ b/dot/local/bin/cutbuffer_pop | |||
@@ -0,0 +1,81 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | # A screen-grab will be saved in $SCREEN_GRAB_DEST_DIR if set, otherwise | ||
4 | # in $HOME/screen_grab/ if it exsts; otherwise $HOME. | ||
5 | |||
6 | default_basename=cutbuffer_grab | ||
7 | default_extension=txt | ||
8 | date_format=+%F_%H%M%S | ||
9 | SCREEN_GRAB_DEST_DIR=$HOME/$default_basename | ||
10 | |||
11 | chdir_to_destination() | ||
12 | { | ||
13 | [ -d "$SCREEN_GRAB_DEST_DIR" ] || mkdir -p "$SCREEN_GRAB_DEST_DIR" | ||
14 | cd "$SCREEN_GRAB_DEST_DIR" | ||
15 | } | ||
16 | |||
17 | choose_destination() | ||
18 | { | ||
19 | local stamp basename extension now | ||
20 | case $# in | ||
21 | 1) ;; | ||
22 | 0) now=$(date "$date_format") | ||
23 | DESTINATION=$default_basename.$now.$default_extension | ||
24 | return | ||
25 | ;; | ||
26 | *) return 1 ;; | ||
27 | esac | ||
28 | |||
29 | case "$1" in | ||
30 | *.*) | ||
31 | basename=${1%.*} | ||
32 | extension=${1##*.} | ||
33 | ;; | ||
34 | *) | ||
35 | basename=$1 | ||
36 | extension=$default_extension | ||
37 | ;; | ||
38 | esac | ||
39 | DESTINATION=$basename.$extension | ||
40 | } | ||
41 | |||
42 | get_out_the_way() | ||
43 | { | ||
44 | local stamp basename extension destination | ||
45 | [ -e "$1" ] || return 0 | ||
46 | |||
47 | stamp=$(date -r "$1" "$date_format") || return | ||
48 | case "$1" in | ||
49 | *.*) | ||
50 | basename=${1%.*} | ||
51 | extension=${1##*.} | ||
52 | destination=$basename.$stamp.$extension | ||
53 | ;; | ||
54 | *) | ||
55 | destination=$1.$stamp | ||
56 | ;; | ||
57 | esac | ||
58 | [ ! -e "$destination" ] || return | ||
59 | mv "$1" "$destination" | ||
60 | } | ||
61 | |||
62 | extract() | ||
63 | { | ||
64 | sort -z -k1,1 -r | head -z -n 1 | xargs -0 printf '%s\n' | cut -d' ' -f2 | ||
65 | } | ||
66 | |||
67 | |||
68 | set -e | ||
69 | |||
70 | chdir_to_destination | ||
71 | |||
72 | f=$(find . -maxdepth 1 -type f -printf "%C@ %h/%f\0" | extract) | ||
73 | |||
74 | set -x | ||
75 | exec 2> /tmp/cbp.log | ||
76 | |||
77 | xcb -s 0 < "$f" | ||
78 | xcb -p 0 | xsel | ||
79 | mkdir -p .popped | ||
80 | mv "$f" -t .popped | ||
81 | |||