linux下翻译并循环提醒

翻译功能+复习功能

确实,windows这个系统很好看,前段时间安装了windows,差点就被它漂亮的UI,舒服的使用体验迷惑住了。但是要用来编程的话,它确实不够好。下面就说说在linux上如何使用脚本等来实现一键翻译以及复习单词的功能。

想要的效果是:

  • 使用快捷键来翻译选中的单词
  • 每隔一段时间将之前翻译过的那些不认识的单词自动翻译一遍来达到复习的效果
  1. 为了达到第一个目标

    • 快捷键需要使用xmonad中自定义快捷键的功能

    • 选中单词使用xclip命令

    • 翻译使用脚本translate(具有拼读功能)

    • 将翻译结果以弹窗消息的形式显示出来使用到了dunst这个软件,以及notify-send这个命令发送翻译结果

    • 为了后面的复习功能需要将单词保存到一个文件中

      1
      2
      # 这是定义的快捷键翻译功能
      , ((0 , xK_t), spawn "translate `xclip -o` | xargs -0 notify-send && xclip -o >> ~/Documents/books/remember_word.txt")
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      # 这是翻译发声脚本
      #!/bin/bash
      #翻译单词并拼读出来

      #获取系统音量大小
      volume=`amixer sget Master | tr -d '[a-zA-Z][:punct:]' | awk '{print $2}' | sed -n '$p'`
      #通过在线语音拼读
      mplayer -volume ${volume} http://dict.youdao.com/dictvoice\?audio\=${1} >/dev/null 2>&1

      #通过ydcv程序来对单词进行翻译
      ydcv ${1}

      现在就可以先用鼠标选中单词,然后按快捷键将单词进行翻译了。

  2. 为了实现第二个目标

    • 前面已经将单词保存到了文件中,所以相对来说应该挺简单的,但是发现crontab并不能使用notify-send命令,所以只能选择其它方法来达到定时复习的功能

    • 由于polybar状态栏具有定时功能,所以就使用它了

    • 现在就很简单,只需要从文件中随机读取一个单词,然后翻译并显示就好了

      1
      2
      3
      4
      # 读取单词并翻译
      #!/bin/bash

      shuf -n1 ~/Documents/books/remember_word.txt | xargs ydcv | xargs -0 notify-send && mplayer ~/Music/prompt/wechat.mp3 &>/dev/null
      1
      2
      3
      4
      5
      # polybar中设置定时功能
      [module/trans]
      type = custom/script
      interval = 120
      exec = ~/.local/bin/remember_word

      这样就实现了每隔两分钟自动复习的功能

  3. 效果图

    效果