diff --git a/i3/.config/i3/config b/i3/.config/i3/config index 4e575f6..638b989 100644 --- a/i3/.config/i3/config +++ b/i3/.config/i3/config @@ -168,8 +168,9 @@ bindsym $mod+o move workspace to output up bindsym $mod+p move workspace to output right # take screenshots -bindsym $mod+s exec --no-startup-id bash x11-screenshot.sh --clipboard +bindsym $mod+s exec --no-startup-id bash x11-screenshot.sh "clipboard" bindsym $mod+Shift+s exec --no-startup-id bash x11-screenshot.sh +bindsym $mod+c exec --no-startup-id bash x11-screenshot.sh "colour" # use pactl for media keys set $refresh_i3status killall -SIGUSR1 i3status diff --git a/scripts/x11-screenshot.sh b/scripts/x11-screenshot.sh index 088d192..9f48f23 100755 --- a/scripts/x11-screenshot.sh +++ b/scripts/x11-screenshot.sh @@ -1,12 +1,14 @@ #!/usr/bin/env bash unset use_clipboard -if [[ "$1" == "-c" ]] || [[ "$1" == "--clipboard" ]]; then +if [[ "$1" == "--clipboard" ]]; then use_clipboard="true" +elif [[ "$1" == "--colour" ]]; then + pick_colour="true" fi -if ! $(which maim &>/dev/null); then - notify-send "[screenshot]" "missing \`maim\`" +if ! $(which slop &>/dev/null); then + notify-send "[screenshot]" "missing \`slop\`" exit 1 fi if [[ -n "${use_clipboard}" ]] && ! $(which xclip &>/dev/null); then @@ -14,13 +16,37 @@ if [[ -n "${use_clipboard}" ]] && ! $(which xclip &>/dev/null); then exit 1 fi -if [[ -z "${use_clipboard}" ]]; then - screenshots_path="${HOME}/screenshots" - echo "${screenshots_path}" - if [[ ! -d "${screenshots_path}" ]]; then - mkdir "${screenshots_path}" - fi - maim -suo "${screenshots_path}/$(date '+%Y%m%d_%H%M%S').png" -else - maim -suo | xclip -selection clipboard -t image/png +screenshots_path="${HOME}/screenshots" +if [[ ! -d "${screenshots_path}" ]]; then + mkdir "${screenshots_path}" fi +temp_file="${screenshots_path}/temporary.png" + +import -window root -crop "$(slop --tolerance=4 || exit 0)" "${temp_file}" +# maim -suo -f png --tolerance=4 "${temp_file}" + +function colour_picker { + colour_value="$(magick "${temp_file}" -scale 1x1\! -format "#%[hex:p{0,0}]" info:)" + notify-send "[colour picker]" "${colour_value}" + echo "${colour_value}" | xclip -selection clipboard + remove_temporary_file +} + +function clipboard { + xclip -selection clipboard -t image/png <"${temp_file}" + remove_temporary_file +} + +function save_screenshot { + mv "${temp_file}" "${screenshots_path}/$(date '+%Y%m%d_%H%M%S').png" +} + +function remove_temporary_file { + rm "${temp_file}" +} + +case "$1" in +"clipboard") clipboard ;; +"colour") colour_picker ;; +*) save_screenshot ;; +esac