| #!/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" |