使用 xbindkeys 设置操作:sh:1:错误替换和错误的剪贴板区域

使用 xbindkeys 设置操作:sh:1:错误替换和错误的剪贴板区域

我正在尝试使用 shell 命令和 banshee --query-title 和 --query-artist 命令将歌曲信息(艺术家 - 标题)复制到 xbindkeys 中的剪贴板。

首先我打开 xbindkeys

$ xbindkeys-config

我将它们设置如下:

Name: Copy Song
Key: Control+Mod2 + apostrophe | m:0x14 + c:49
Action: artist=$(banshee --query-artist);title=$(banshee --query-title);echo ${artist:7} - ${title:7} | xsel

但这存在两个问题。

第一个问题,当我执行它说的操作时sh: 1: Bad substitution,我在终端中测试这个命令并且它运行良好,但是当我在 xbindkeys 中运行它时它却不运行。

如果我将其改为

Action: artist=$(banshee --query-artist);title=$(banshee --query-title);echo $artist- $title | xsel

它工作正常,除了它没有剥离字符串中不需要的部分,而是The Beatles - I Want To Tell You我得到的:artist: The Beatles - title: I Want To Tell You

第二个问题它不会像预期的那样复制到剪贴板(ctrl + v),而是复制到鼠标中键剪贴板(这很烦人),我尝试使用xclip但结果是一样的。

如何解决这两个问题?

答案1

设法解决这两个问题。

为了剪贴板问题,我安装了 ClipIt sudo apt-get install clipip,并在偏好设置中已检查 使用 ctrl+c未选中使用主要(选择)

问题在于shell 命令没有正确获取子字符串我改用sed

artist=$(banshee --query-artist);title=$(banshee --query-title);echo $artist - $title | sed -e "s/title: //g" | sed -e "s/artist: //g" | xsel

这可能很糟糕,但是却有效。

如果有人有更优雅的版本,请随时发布。

相关内容