1.引言

1.引言

有一个插件,fcitx你可以将单词与其他字符串关联起来,例如在 中输入的“微笑 (・∀・)” ~/.config/fcitx/data/QuickPhrase.mb。输入时smile会输出 (・∀・)`

我想要同样的东西,但是是一个函数而不是一个词;我希望它输出当前时间戳。

例如:当我输入“时间”时,它输出当前时间“2016-08-03 11:15”,一分钟后,当我输入“时间”时,它输出“2016-08-03 11:16”

答案1

在这篇文章中

  1. 介绍
  2. QuickPhrase_Time.py脚本
  3. xclip捷径

1.引言

OP 提到的插件是快捷短语并且可以通过 安装sudo apt-get install fcitx-modules fcitx-module-quickphrase-editor。它用于~/.config/fcitx/data/QuickPhrase.mb存储短语。

这里的主要目的是找到一种简单的方法,将包含当前时间的字符串插入到用户当前正在编辑的文本字段中。下面有两种解决方案。


2.QuickPhrase_Time.py 脚本

此脚本不断编辑配置文件中包含短语的行time_now ,并将当前时间附加到该行。此脚本旨在启动登录 GUI 时自动

使用方法很简单:

 python /path/to/QuickPhrase_Timer.py

脚本源

也可作为Github要点,更新版本可能就会出现在那里。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import subprocess
import time
import os


def run_cmd(cmdlist):
    """ Reusable function for running external commands """
    new_env = dict( os.environ ) 
    new_env['LC_ALL'] = 'C' 
    try:
        stdout = subprocess.check_output(cmdlist,env=new_env)
    except subprocess.CalledProcessError:
        pass
    else:
        if stdout:
            return stdout

if __name__ == '__main__':
    user_home = os.path.expanduser('~')
    config_file = '.config/fcitx/data/QuickPhrase.mb'
    config_full_path = os.path.join(user_home,config_file)
    found = None

    while True:
         lines = []
         time.sleep(1)
         with open(config_full_path) as f:
              for line in f:
                  lines.append(line.strip())
                  if line.startswith('time_now'):
                      found = True
         # print(lines)
         if found:
             with open(config_full_path,'w') as f:
                  for line in lines:
                      if line.startswith('time_now'):
                         time_now = run_cmd(['date', 
                                             '+%Y-%m-%d %I:%M'
                                             ]).decode().strip()
                         line = 'time_now ' + time_now + '\n'
                      else:
                         line = line + '\n'
                      f.write(line)

3. xclip 快捷方式

如果上面的 Python 脚本对你不起作用,这里有一个解决方法:将下面的命令绑定到键盘快捷键

xclip -sel clip <<< $( date +%Y-%m-%d\ %I:%M )

本质上,这样做是将输出复制date到剪贴板,然后您可以通过Ctrl+V快捷方式(对于大多数应用程序来说,这都是粘贴快捷方式)释放它。

这种方法不依赖于fctix或任何其他输入方法,因此更加灵活和可靠。

笔记默认情况xclip下未安装。通过以下方式获取sudo apt-get install xclip

答案2

您可以使用 lua 来扩展 fcitx/fcitx5 的 quickphrase。

lua 相关 API 基于 Windows 上的旧版谷歌拼音 lua。您可以参考此文档了解有哪些额外 API 可用:https://fcitx.github.io/fcitx5-lua/modules/ime.html(只有 ime 模块适用于 fcitx4,fcitx 模块仅适用于 fcitx5。)

FCITX4

在 fcitx4 中 lua 是一个内置插件。您的发行版可能会将其拆分为一个单独的包。在 ubuntu 上它被称为 fcitx-module-lua。

您可以在 ~/.config/fcitx/lua 下创建一个 .lua 文件。

fcitx5

基本上 API 是一样的,只是路径略有不同。而且现在它是一个单独的包,fcitx5-lua。在 ubuntu 上它被称为 fcitx5-module-lua。

您可以将 .lua 文件放在 ~/.local/share/fcitx5/lua/imeapi/extensions 下。

这是一个适用于 fcitx/fcitx5 的脚本,取自https://github.com/lilydjwg/fcitx-lua-scripts/blob/master/date.lua

function LookupDate(input)
  local fmt
  if input == '' then
    fmt = "%Y年%m月%d日"
  elseif input == 't' then
    fmt = "%Y-%m-%d %H:%M:%S"
  elseif input == 'd' then
    fmt = "%Y-%m-%d"
  end
  return os.date(fmt)
end

ime.register_command("dt", "LookupDate", "日期时间输入")

Fcitx5还自带了内置lua脚本https://github.com/fcitx/fcitx5-chinese-addons/blob/master/im/pinyin/pinyin.lua,但检查输入法名称是拼音还是双拼。

您也可以将其作为参考,因为它不仅包含日期/时间,还支持更多奇特的格式。

相关内容