我一直在尝试为arch编写一些屏幕截图脚本。它有效,但是问题是当我尝试在i3-config中为其分配键绑定时,它什么都不做。
首先,我尝试用bash完全编写它,但效果很好,但是我偶然遇到了同样的问题,因为它没有执行。因此,我已将输出重定向到日志文件以将其签出,并对此表示欢迎:
import: unable to grab mouse '': Datei oder Verzeichnis nicht gefunden @ error/xwindow.c/XSelectWindow/9306.
import: unable to read X window image '': Erfolg @ error/xwindow.c/XImportImage/4942.
import: unable to read X window image '': Erfolg @ error/xwindow.c/XImportImage/5049.
import: `/home/lukas/Screenshot/20190419/scoot7.png' @ error/import.c/ImportImageCommand/1288.
翻译第一行:找不到文件或目录@错误[...]翻译Erfolg:成功
我尝试使用谷歌搜索,它并没有真正带给我任何东西,也没有真正找到类似于error / xwindow.c之类的路径。
这是我的代码:
#!/usr/bin/env python
import os, os.path
import datetime
import sys
d = datetime.datetime.today()
directory="/home/lukas/Screenshot/%s"%d.strftime('%Y%m%d')
if not os.path.exists(directory):
os.mkdir(directory)
fileCount = 1
for file in os.listdir(directory):
if file.endswith('.png'):
fileCount+=1
filename = "%s/scr%d.png"%(directory,fileCount)
os.system("import %s"%filename)
这是我进入i3配置的条目:
bindsym $mod+Shift+F12 exec --no-startup-id scoot > /tmp/log.out 2>&1
预期的结果是,当我按下mod + shift + f12时,它将鼠标指针转换为“十字准线”,因此我可以选择一些内容并对其进行截图。实际结果是,如果我正常运行它,则可以工作,但是,如果我尝试使用Keyboard-Shortcut,则除了输出到我的日志文件外,它什么也不会做。
我几乎是编程和linux的新手,我不知道为什么它找不到我的鼠标,我想知道我是否可以明确告诉程序使用它,或者是否有其他方法可以这样做。
非常感谢。
Hugenotte
我写了一个bash脚本前阵子做的正是你正在尝试做的,使用很常见的实用工具ImageMagick的,你可以找到这里的拱门。
在这种情况下,如果您愿意采用这种替代方法:
#!/bin/bash
# take screenshot using import from imagemagick
# allows to select the area by dragging across a rectangle
# or to select entire window by clicking inside it
set -e
# the date and time will be used as the file name
time=$(date +"%F_%H:%M:%S")
# naming the urxvt window "screenshot" so that the i3 "no_focus" option gets applied to it
urxvt -title "screenshot" -e bash -c "import $HOME/Screenshot/$time.png"
然后,我在i3中使用它:
no_focus [title="screenshot"]
bindsym $mod+Shift+F12 layout tabbed; exec --no-startup-id bash my_script.sh
当然,您可能希望将日期格式更改为python中的日期格式。我喜欢抽空,以防我连续拍摄几个屏幕截图。而且,您必须替换urxvt
为终端仿真器的名称,并且-title
如果终端仿真器没有以此方式为Windows提供名称,则可能必须修改标志。
请注意,命名窗口很重要:花了我一些时间才弄清楚如何解决不命名窗口并no_focus
在i3中使用该窗口的情况:
焦点将跳到屏幕捕获窗口,因此跳出了我要截图的窗口。您bash和python脚本所面临的问题可能与此有关。您必须强制i3将鼠标保持在旧窗口上,而不要跳到由脚本触发的屏幕捕获窗口(默认情况下,i3将专注于新创建的窗口)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句