如何通过选择应用菜单来拍摄整个桌面的屏幕截图?


13

我想使用``应用程序菜单''选择来拍摄整个桌面的屏幕截图。

Answers:


20
  • 应用程序>附件>截图>抓取整个桌面>延迟5秒(例如)抓取

替代文字

  • 选择“应用程序”菜单。等待。

5

其实,这可以做到这一点没有延迟,但也有一些黑客来代替。我写了一个小脚本,可以让您立即进行操作。这是一个大技巧,但是它可以工作,并且(对我而言)当然比使用延迟更可取。

#!/bin/bash
######################################################################################
# Simple script to enable users to make screenshots of tooltips/menus/etc...         # 
# without timers                                                                     #
######################################################################################

######################################################################################
# Configuration Section (defaults)                                                   #
######################################################################################
SCREENSHOT_COMMAND="shutter -s"

# The keys can be found out using xinput test "keyboard name"
MODIFIER_KEY=133 #The <Super> Key (aka. Meta or Windows Key)f
CANCEL_KEY=54 # C
CAPTURE_KEY=27 # R

DAEMON_MODE="false" # change to true if you want to keep the script running after the screenshot was taken
VERBOSE="true" #Change this to any value if you dont want to have notifications

######################################################################################

######################################################################################
# Command parsing                                                                    #
######################################################################################

function usage {
    echo "$0 [-hemrcdn]"
    echo "-h prints this message"
    echo "-e <command> - execute that command instead of shutter"
    echo "-m <int> - The modifier key to use. Use xinput test <keyboar> to find out what is what"
    echo "-r <int> - The key to use for capture."
    echo "-c <int> - The key used for cancelling (only valid in non daemon mode)"
    echo "-d - daemon mode. Will keep on running after a screenshot was taken. to kill the daemon, use \"killall xinput\""
    echo "-n - disables notifications"
    exit;
}

while getopts "he:m:r:c:dn" flag
do
    if [ "$flag" == "h" ]; then
        usage
    fi
    if [ "$flag" == "e" ]; then
        SCREENSHOT_COMMAND=$OPTARG
    fi
    if [ "$flag" == "m" ]; then
        CAPTURE_KEY=$OPTARG
    fi
    if [ "$flag" == "r" ]; then
        SCREENSHOT_COMMAND=$OPTARG
    fi
    if [ "$flag" == "c" ]; then
        CANCEL_KEY=$OPTARG
    fi
    if [ "$flag" == "d" ]; then
        DAEMON_MODE="true"
    fi
    if [ "$flag" == "n" ]; then
        VERBOSE="false"
    fi
done

######################################################################################

KEYBOARDS=`xinput list | grep "slave" | grep "keyboard" | sed "s/[^a-zA-Z]*\(.*\)id=.*/\1/" | sed "s/[\t ]*$//"`

function run {
    MODIFIER_PRESSED="false"
    while read line;
    do
        COMMAND=`echo $line | awk '{print $2;}'`
        KEY=`echo $line | awk '{print $3;}'`
        if [ "$KEY" == "$MODIFIER_KEY" ]; then
            if [ "$COMMAND" == "press" ]; then
                MODIFIER_PRESSED="true"
            else 
                MODIFIER_PRESSED="false"
            fi
        fi 
        if [ "$KEY" == "$CAPTURE_KEY" -a "$MODIFIER_PRESSED" == "true" -a "$COMMAND" == "press" ]; then
            bash -c $SCREENSHOT_COMMAND
            if [ "$VERBOSE" == "true" ]; then
                notify-send "Taking Screenshot"     
            fi
            if [ "$DAEMON_MODE" == "false" ]; then
                quit
            fi
        fi
        if [ "$KEY" == "$CANCEL_KEY" -a "$MODIFIER_PRESSED" == "true" -a "$COMMAND" == "press" -a "$DAEMON_MODE" == "false" ]; then
            if [ "$VERBOSE" == "true" ]; then   
                notify-send "Canceling Screenshot"
            fi
            quit
        fi
    done;
}

function quit {
    killall -9 xinput
    exit
}

if [ "$VERBOSE" == "true" ]; then
    notify-send "Screenshot script waiting. Press Meta + R to capture the screenshot"
fi
IFS=$'\n'
for i in $KEYBOARDS
do
    unbuffer xinput test "$i" | run & 
done

在实际使用脚本(在ubuntu上)之前,需要确保您具有xinputunbuffer。为此,只需执行以下操作:

sudo apt-get install xinput expect-dev

然后,您可以运行脚本。首先使用-h选项运行它,以查看可能的配置选项。默认情况下,该脚本只能运行一次,并且您必须在每个屏幕截图之后重新启动脚本(例如,通过键盘快捷键)。这是因为脚本可能会影响性能。如果要将其作为“守护程序”运行,请使用-d选项运行它。

默认情况下,它也会使用快门。如果要使用其他-e选项,请使用选项,例如script.sh -c "ksnapshot"

默认情况下,捕获按钮将为Meta+ R。您可以使用配置选项进行更改。


4

由于您想知道快门是否也有可能...

要做到这一点的快门图标 快门,打开它,并选择全屏无论从工具栏或从文件 > 新建 > 全屏

确保设置了时间延迟,以便有足够的时间打开“应用程序”菜单(“ 编辑” > “首选项” >“ 主要”选项卡;在底部,有一个选择框:__秒的延迟后捕获)。

替代文字


2

是。打开屏幕截图,然后设置您认为需要返回到打开菜单的任何时间的延迟。保持打开状态直至拍摄完毕。

在此处输入图片说明


2

快速解答/解决方法

适用于中高级ubuntu用户

  • 将自定义快捷方式添加到以下命令:
    gnome-screenshot --delay=numIntValueInSecs
    例如
    gnome-screenshot --delay=3
  • 添加另一个以获取活动的窗口截图:
    gnome-screenshot -w --delay=3

    就是这样我还建议您设置2个其他菜单,这将给您更多时间浏览菜单。

    • gnome-screenshot --delay=10
    • gnome-screenshot -w --delay=10

    在此处输入图片说明

精心回答

黑客新手

介绍:

每当您按时PrntScr,Ubuntu所做的全部工作就是调用gnome-screenshot,通常位于/usr/bin/路径上,并且可以从“终端”(teletype,tty,cli,命令行/提示符)访问,因此您可以通过各种方式使用它以适应您的时髦需求目的。

这个gnome-screenshot小程序接受可选参数,您可以通过传递标准参数来寻求帮助来查看所有选项,您知道一个(-h

在此处输入图片说明

如果您仍然不确定如何使用此功能,可以随时阅读更详细的帮助,只需手动输入 man gnome-screenshot

在此处输入图片说明

您阅读了更多的完整手册后,可以轻松地找到符合您需求的ubuntu黑客,而您也不需要其他人来逐步指导您。也许到此为止,您甚至都知道如何自行解决此问题,如果您仍然迷路(希望不会迷路),请继续阅读...

说明:

  • 步骤零:打开Ubuntu的系统设置,然后导航到Keyboard(键盘)选项:

在此处输入图片说明

现在

  1. 导航至Shortcuts标签。
  2. 选择 Custom Shortcuts
  3. 点击+按钮添加新的自定义快捷方式。
  4. 输入名称和命令。
    (就像上面“快速解答”中所述)
    4½。分配您想要的按键组合。
  5. 关闭此窗口,否则将无法正常工作。

在此处输入图片说明

*保存!
您刚刚迈出了成为ubuntu大师的第一步,希望这个答案对您有所帮助*


真好!我喜欢为键盘触发的屏幕截图设置默认延迟的想法。
jgomo3 2014年

是的,最后,它的使用案例不仅仅只是下拉菜单的屏幕截图。
JorgeArtware 2014年

1

使用屏幕截图(在附件中)并设置“延迟xx秒后抓取”。

为我工作


1

我已经找到了解决方法,而不是实际的解决方案。

打开Screenshot应用程序,在打开的窗口中,将x延迟后的时间设置为Grab

注意:这不能用于获取窗口的特定部分。

注意:对不起,也无法将Screenshot应用程序本身的屏幕截图作为Window或获取特定部分。


0

我不会说这是一个错误。可以使用“截屏”工具,并将“延迟x秒后抓取”设置为使菜单重新打开所需的时间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.