como introduzir rapidamente data e hora com uma palavra rápida?

3

Existe um addon em fcitx onde você pode associar uma palavra com alguma outra string como "smile (・ ∀ ・)" inserida em ~/.config/fcitx/data/QuickPhrase.mb . Quando você digita smile , a saída é (・ ∀ ・) '

Eu quero a mesma coisa, mas uma função e não uma palavra; Quero que ele exiba um timestamp atual.

Por exemplo: quando eu digito "time", ele exibe a hora atual "2016-08-03 11:15", um minuto depois, quando eu digito "time", ele gera "2016-08-03 11: 16 "

    
por dindom 03.08.2016 / 05:16

1 resposta

5

Nesta postagem :

  1. Introdução
  2. QuickPhrase_Time.py script
  3. xclip atalho

1.Introdução

O plug-in ao qual OP se refere é QuickPhrase e pode ser instalado via sudo apt-get install fcitx-modules fcitx-module-quickphrase-editor . Usa ~/.config/fcitx/data/QuickPhrase.mb para armazenar frases.

O principal objetivo aqui é ter uma maneira fácil de inserir uma string que contenha a hora atual no campo de texto que o usuário está editando no momento. Abaixo há duas soluções.

2. Script QuickPhrase_Time.py

Este script edita continuamente a linha no arquivo de configuração que possui time_now frase e acrescenta a hora atual à linha. Este script deve ser iniciado automaticamente no login para a GUI .

O uso é simples:

 python /path/to/QuickPhrase_Timer.py

Fonte de script

Também disponível como Github Gist , as versões atualizadas provavelmente irão para lá.

#!/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. atalho xclip

Caso o script python acima não funcione para você, aqui está uma solução alternativa: vincule o comando abaixo a um atalho de teclado

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

Essencialmente, o que isto faz é copiar a saída de date para sua área de transferência, que você pode liberar através do atalho Ctrl + V (que é comum para a maioria das aplicações como atalho de pasta).

Essa abordagem não depende do fctix ou de qualquer outro método de entrada, portanto, é mais flexível e confiável.

Note que xclip não está instalado por padrão. Obtê-lo via sudo apt-get install xclip

    
por Sergiy Kolodyazhnyy 23.08.2016 / 09:35

Tags