| #!/bin/bash |
| # Copyright 2020 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| #### CATEGORY=Device management |
| ### takes a screenshot and copies it to the host |
| |
| ## usage: fx screenshot [--landscape] [--png] [--trim] [-o <screencap_file>] |
| ## |
| ## This command invokes Fuchsia's screencap tool to create a screenshot. |
| ## The result is written to screencap.ppm or screencap.png. To write to |
| ## another filename, use the -o parameter. |
| ## The --trim, --landscape and --png commands require ImageMagick to be |
| ## installed. Unrecognized parameters will be passed to ssh. |
| ## |
| ## -o FILENAME Write to the given filename instead of screencap.ppm |
| ## --png Create a .png file instead of a .ppm file |
| ## --trim Remove black borders |
| ## --landscape Rotate image ninety degrees |
| ## |
| ## Example usage: |
| ## fx screenshot --trim --png --landscape |
| |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../lib/vars.sh || exit $? |
| fx-config-read |
| |
| OUT=screencap.ppm |
| png_command=cat |
| enable_trim=0 |
| enable_landscape=0 |
| while [[ $# -ne 0 ]]; do |
| case $1 in |
| -h|--help) |
| fx-command-help |
| exit 0 |
| ;; |
| -o|--out) |
| shift |
| OUT=$1 |
| ;; |
| --png) |
| OUT=${OUT%.*}.png |
| png_command=pnmtopng |
| ;; |
| --landscape) |
| enable_landscape=1 |
| ;; |
| --trim) |
| enable_trim=1 |
| ;; |
| *) |
| break |
| ;; |
| esac |
| shift |
| done |
| |
| set -o pipefail |
| |
| TMP_FILE="$(mktemp "/tmp/fx_screenshot_XXXXX")" |
| fx-command-run shell "$@" screencap | $png_command > "$TMP_FILE" |
| if [[ $? -ne 0 ]]; then |
| rm -f "$TMP_FILE" |
| fx-error "Screenshot failed. Scenic is not running or Scenic failed to take screenshot." |
| exit 1 |
| fi |
| |
| mog_opts= |
| if [[ $enable_trim -ne 0 ]]; then |
| mog_opts="$mog_opts -trim +repage" |
| fi |
| if [[ $enable_landscape -ne 0 ]]; then |
| mog_opts="$mog_opts -rotate 90" |
| fi |
| if [[ ! -z $mog_opts ]]; then |
| # Also add a black border so it's easier to see the image when |
| # pasted into the bug database. |
| mogrify -bordercolor black -border 3 $mog_opts “$TMP_FILE” |
| fi |
| |
| mv -f "$TMP_FILE" "$OUT" |