okshot 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3779b73a09c5841b6c98731300dad286e36191ce5b97af4345ae9eeb644ecbc4
4
- data.tar.gz: f9350c2863dc423896db54be135322742f2e0a2933ff6cb904a76668a279b628
3
+ metadata.gz: dac8faf503714e6c195b6d07c2b046b873d857df50e72e33ae3d227081fcbe3e
4
+ data.tar.gz: 485a3c0fa9c11e545adad059dd6f9e36dbba8fc154c10914c79358ce953402c5
5
5
  SHA512:
6
- metadata.gz: eb242769569c4bf1fd1c7b5a602924873cc1e173cd395f0ae2861037e746bc55ac14afa7f719223115b0afd8342b4d9ed3a10d7dfcc2f5090a2ccf96929d17e9
7
- data.tar.gz: bd55a425d8bc90024fd7b6a6f1bf907715c509907e09fd3a4a3e3192195ab6570458f1dd5b171e4f6f3eecba64d1086afe4b3c30aae0ba0d62e8e6f31e66ac38
6
+ metadata.gz: dcf40412c7284cfaebb31e74d68a504363b70ff87a5dea4dfdfd208878906c6d4a027dcac758a118226c6115f2ef376ad7ba442c5fc251ded89f12f0ffc40375
7
+ data.tar.gz: 490d644591fc142ef9fcf3c40aab21731d2f70596fe4d4dadf2d2347ee097ad1658369424f8df0d8f1b922419bc0318b76dee7c18f36607ab37a1375e796a82c
data/README.org CHANGED
@@ -6,7 +6,6 @@
6
6
  \___/|_|\_\___/_| |_|\___/ \__|
7
7
  #+end_example
8
8
 
9
- # #+html: <img src="https://github.com/200ok-ch/okshot/workflows/CI/badge.svg"/>
10
9
  #+html: <a href="https://rubygems.org/gems/okshot"> <img src="https://badge.fury.io/rb/okshot.svg"/></a>
11
10
 
12
11
  * NAME
@@ -17,18 +16,21 @@
17
16
 
18
17
  #+begin_example
19
18
  Usage: okshot [options]
19
+ -C, --copy-to-clipboard Copy PNG file from clipboard and upload
20
20
  -s, --simple Take a screenshot without annotation and upload
21
- -c, --copy-clipboard Copy PNG file from clipboard and upload
21
+ -c, --copy-from-clipboard Copy PNG file from clipboard and upload
22
22
  -i, --inkscape Use inkscape to edit the screenshot and upload
23
23
  #+end_example
24
24
 
25
25
  * DESCRIPTION
26
26
 
27
- =okshot= takes a screenshot, saves it to a FTP server and copies a web
28
- accessible URL to your clipboard. Optionally, the screenshot can be
29
- annotated using Inkscape.
27
+ =okshot= takes a screenshot, optionally annotates it and then saves it
28
+ either to the clipboard or uploads it to a FTP server and copies a web
29
+ accessible URL to your clipboard.
30
30
 
31
31
  This gem is inspired by the lack of good screenshot tooling in Linux.
32
+ However, Linux has all the tools available that can easily be strung
33
+ together to get the ultimate screenshot tool.
32
34
 
33
35
  For uploading the files via FTP, it needs these environment variables set:
34
36
 
@@ -57,21 +59,31 @@ export OKSHOT_URL_PREFIX=https://okshot.your_domain.ch
57
59
 
58
60
  It uses the following standard Linux tools. For all flags, it requires:
59
61
 
60
- - [[https://imagemagick.org/][imagemagick]]
61
- - [[https://linux.die.net/man/1/ftp][ftp]]
62
- - [[https://linux.die.net/man/1/uuidgen][uuigen]]
63
- - [[https://linux.die.net/man/1/xclip][xclip]]
62
+ | Program | Rationale |
63
+ |-------------+------------------------------------------------------------------|
64
+ | [[https://imagemagick.org/][imagemagick]] | Takes the actual screenshot as a PNG file. |
65
+ | [[https://linux.die.net/man/1/uuidgen][uuigen]] | Adds a partial UUID to the screenshot name to ensure uniqueness. |
66
+ | [[https://linux.die.net/man/1/xclip][xclip]] | Copies the public screenshot URL to the clipboard. |
67
+ | [[http://manpages.ubuntu.com/manpages/xenial/man1/notify-send.1.html][notify-send]] | Creates a desktop notification that the URL is in the clipboard. |
68
+
69
+ Without the flag =-C= (=--copy-to-clipboard=), the file is uploaded to
70
+ an FTP server and requires:
71
+
72
+ | Program | Rationale |
73
+ |-------------+------------------------------------------------------------------|
74
+ | [[https://linux.die.net/man/1/ftp][ftp]] | Uploads the final screenshot to a FTP server. |
64
75
 
65
76
  For the flag =-i=, it additionally requires:
66
77
 
67
- - [[https://linux.die.net/man/1/wmctrl][wmctrl]]
68
- - [[https://inkscape.org/][inkscape]]
69
- - [[https://imagemagick.org/][imagemagick]]
78
+ | Program | Rationale |
79
+ |----------+-------------------------------------|
80
+ | [[https://inkscape.org/][inkscape]] | Annotate the image in all the ways. |
81
+ | [[https://linux.die.net/man/1/wmctrl][wmctrl]] | Starts Inkscape in full screen. |
70
82
 
71
83
  Install dependencies:
72
84
 
73
85
  #+begin_src shell
74
- apt-get install imagemagick ftp inkscape wmctrl uuid-runtime xclip
86
+ apt-get install imagemagick ftp inkscape wmctrl uuid-runtime xclip libnotify-bin
75
87
  #+end_src
76
88
 
77
89
  * DEVELOPMENT
@@ -14,7 +14,6 @@ elif [[ $1 == -h ]]; then
14
14
  echo " -c: Copy clipboard to file and upload"
15
15
  echo " -i: Use inkscape to edit the screenshot and upload"
16
16
  echo " -h: Show this help"
17
- exit 0
18
17
  elif [[ $1 == -i ]]; then
19
18
  import /tmp/$screenshot
20
19
 
@@ -62,19 +61,31 @@ else
62
61
  exit 1
63
62
  fi
64
63
 
65
- HOST=$OKSHOT_HOST
66
- USER=$OKSHOT_USER
67
- PASSWD=$OKSHOT_PASSWORD
64
+ echo "SCREENSHOT FILE: "
68
65
 
69
- ftp -p -n -v $HOST <<END_SCRIPT
66
+ echo "/tmp/${screenshot}"
67
+
68
+
69
+ if [[ $2 == -C ]]; then
70
+ # Copy to clipboard
71
+ xclip -selection clipboard -t image/png -i /tmp/$screenshot
72
+
73
+ notify-send "Copied screenshot to clipboard"
74
+ else
75
+ # Upload to host
76
+ HOST=$OKSHOT_HOST
77
+ USER=$OKSHOT_USER
78
+ PASSWD=$OKSHOT_PASSWORD
79
+
80
+ ftp -p -n -v $HOST <<END_SCRIPT
70
81
  user $USER $PASSWD
71
82
  put /tmp/$screenshot $screenshot
72
83
  quit
73
84
  END_SCRIPT
74
85
 
75
- screenshot_url="$OKSHOT_URL_PREFIX/$screenshot"
76
-
77
- echo $screenshot_url | xclip -selection c
86
+ screenshot_url="$OKSHOT_URL_PREFIX/$screenshot"
87
+ echo $screenshot_url | xclip -selection c
88
+ notify-send "Copied $screenshot_url to clipboard"
89
+ fi
78
90
 
79
- notify-send "Copied $screenshot_url to clipboard"
80
- rm /tmp/$screenshot
91
+ exit 0
@@ -2,6 +2,7 @@
2
2
  # coding: utf-8
3
3
 
4
4
  require 'optparse'
5
+ require 'ostruct'
5
6
  require 'set'
6
7
  require 'readline'
7
8
  require 'fileutils'
@@ -11,40 +12,49 @@ module OK
11
12
  class Error < StandardError; end
12
13
  extend self
13
14
 
14
- def take_screenshot(flag)
15
+ def take_screenshot(options)
15
16
  bin_dir = File.expand_path(File.join(%w[.. .. .. bin]), __FILE__)
16
- shell_script_path = File.join(bin_dir, "take_screenshot.sh -#{flag}")
17
+ shell_script_path = File.join(bin_dir, "take_screenshot.sh -#{options.flag}")
18
+ shell_script_path += " -C" if options.copy_to_clipboard
17
19
  `#{shell_script_path}`
18
20
  end
19
21
 
20
22
  def main
23
+ options = OpenStruct.new
21
24
  OptionParser.new do |opts|
22
25
  opts.banner = 'Usage: okshot [options]'
26
+ opts.on(
27
+ '-C',
28
+ '--copy-to-clipboard',
29
+ 'Copy PNG file from clipboard and upload'
30
+ ) do |c|
31
+ options.copy_to_clipboard = true
32
+ end
23
33
  opts.on(
24
34
  '-s',
25
35
  '--simple',
26
36
  'Take a screenshot without annotation and upload'
27
37
  ) do |c|
28
- take_screenshot('s')
29
- exit
38
+ options.flag = 's'
30
39
  end
31
40
  opts.on(
32
41
  '-c',
33
- '--copy-clipboard',
42
+ '--copy-from-clipboard',
34
43
  'Copy PNG file from clipboard and upload'
35
44
  ) do |c|
36
- take_screenshot('c')
37
- exit
45
+ options.flag = 'c'
38
46
  end
39
47
  opts.on(
40
48
  '-i',
41
49
  '--inkscape',
42
50
  'Use inkscape to edit the screenshot and upload'
43
51
  ) do |c|
44
- take_screenshot('i')
45
- exit
52
+ options.flag = 'i'
46
53
  end
47
54
  end.parse!
55
+
56
+ take_screenshot(options)
57
+ exit
48
58
  end
49
59
  end
50
60
  end
@@ -1,5 +1,5 @@
1
1
  module OK
2
2
  module Shot
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: okshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alain M. Lafon