🔎 在 KDE Dolphin 文件管理器上实现类苹果的「快速查看」
今天看到一个安利苹果电脑的视频,发现有个功能特别好用,就是「快速查看」,选中一个文件按空格就可以概览内容。而在 Linux 这边,GNOME 桌面有类似的功能,也有两个第三方软件包 gloobus-preview
和 hawkeye-quicklook
实现了类似的功能,但都并不完美,各自支持的 Mime Type 也不同,所以要自己实现。
在搜寻一番后发现,KDE Dolphin 文件管理器并没有向第三方开放获取当前选中文件的 DBus API,也不支持给 Service Menu 自定义快捷键,于是只能间接通过剪贴板解决,就写出了这个铸币脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| #!/bin/bash
xclip -selection clipboard -o > /tmp/selection xdotool key --delay 0 --clearmodifiers Ctrl+c
FILE_PATH=`xclip -selection clipboard -o | sed 's|^file://||'` FILE_NAME="`basename "$FILE_PATH"`"
FILE_MIME=`file --mime-type "$FILE_PATH" | awk -F": " '{print $2}'` FILE_MIME_1=`echo $FILE_MIME | awk -F"/" '{print $1}'` FILE_MIME_2=`echo $FILE_MIME | awk -F"/" '{print $2}'`
if [ ${FILE_NAME: -3} == ".md" ]; then hawkeye --uri="file://${FILE_PATH}" elif [ ${FILE_NAME: -4} == ".xml" ]; then gloobus-preview "$FILE_PATH" else if [ $FILE_MIME_1 == "text" ]; then if [ $FILE_MIME_2 == "plain" ]; then sushi "$FILE_PATH" else gloobus-preview "$FILE_PATH" fi else if [[ $FILE_MIME_1 == "image" ]] || [[ $FILE_MIME_1 == "audio" ]] || [[ $FILE_MIME_1 == "video" ]] || [[ $FILE_MIME_2 == "pdf" ]]; then sushi "$FILE_PATH" else gloobus-preview "$FILE_PATH" fi fi fi
xdotool keyup Ctrl xdotool keyup space sleep 0.08s WINDOW_ID=`xdotool search --name "$FILE_NAME"` WINDOW_ID=`echo $WINDOW_ID | sed "s/\n/ /"` xdotool windowactivate $WINDOW_ID
xclip -i -selection clipboard < /tmp/selection rm /tmp/selection
|
之后绑定一个窗口范围的自定义快捷键到这个 shell 脚本就行了。
可以新建组,之后这么匹配 dolphin 窗口。