Como criar uma opção para inserir registro de data e hora?


8

Ao editar documentos de texto, preciso inserir carimbos de hora com frequência. Pensei em automatizá-lo de duas maneiras diferentes. Nenhuma delas parece estar funcionando.

  1. Usando ações nautilus

Configurei uma nova ação de contexto correto que executa o comando date|xclip

insira a descrição da imagem aqui

Esse contexto correto não aparece quando clico com o botão direito do mouse em outros aplicativos (como terminal ou navegador). Além disso, quando aparece, e clico nele, não faz nada.

  1. Usando o atalho do teclado

Eu configurei um novo atalho de teclado que deve executar o datecomando, mas não o faz.

insira a descrição da imagem aqui

Alguma dica?

Obrigado.

Respostas:


11

Os atalhos de teclado do GNOME devem funcionar.

Eis por que o que você tentou não funcionou: O atalho do teclado executa o datecomando, mas não faz nada com a saída (que é descartada). Você deve canalizá-lo para xclip, como date | xclipcopiá-lo para a seleção X ( não clipboard). Em seguida, você pode colá-lo no seu documento clicando com o botão do meio. Se você deseja usar o Ctrl-V, use-o date | xclip -selection cpara copiá-lo na área de transferência real.

Outra alternativa é usar xdotoolpara digitar a data diretamente no seu documento. Atribuir ao seu atalho

xdotool type "$(date)"

Então, quando você pressiona a tecla de atalho, ela calcula a data atual e digita os caracteres no documento.

Para o formato ISO 8601, use xdotool type "$(date --rfc-3339=s)".


Se não funcionar: como se trata de comandos shell (ao contrário de executáveis), talvez você precise passar o comando ao bashespecificá-los no seu atalho. Seu comando seria então:

bash -c 'xdotool type "$(date --rfc-3339=s)"'

Obrigado. Tentei. Mas não está funcionando. Eu atribui o atalho para CTRL +; e clico nessa combinação específica na área de trabalho e, em seguida, clico em CTRL + V (digamos no gmail), mas ele não cola. Tenho que reiniciar o laptop?
User13107

@ user13107: Acontece que, por padrão, xclipcopia o texto não para a área de transferência, mas para a seleção X. Para colá-lo, use o botão do meio em vez de Ctrl-V.
Caracol mecânico

O uso bash -cfez o truque, mas há algum tipo de atraso na digitação. Quando clico no atalho, o carimbo de data / hora completo não é digitado usando o xdotool. Alguns números iniciais são consumidos, por exemplo, 1-07 15:14:35+08:00ou013-01-07 15:14:35+08:00
user13107

1
@ user13107 Eu tive o mesmo problema. Após algumas tentativas e erros, acabei com o comando bash -c 'date | xclip -selection clipboard && xdotool key 'ctrl+v''que funciona perfeitamente.
Immanuel Weihnachten

1
@ user13107 - isso ocorre porque você não usa xdotool --clearmodifiers- algumas teclas são digitadas com o Ctrl (por exemplo - espaço, é engolido). Alguns caracteres não serão digitados (por exemplo, :- que foi alterado), mas estou usando o seguinte comando: xdotool type --clearmodifiers $(date "+%Y-%m-%d,%H-%I")que funciona para mim.
Tomasz Gandor

3

Eu tenho usado com sucesso isso como um atalho de teclado personalizado atribuído a Ctrl+Shift+D:

bash -c 'sleep 0.3 && xdotool type "$(date -u +%Y-%m-%d_%H:%M:%SZ)"'

Descobri que adicionar um pequeno atraso resolveu os problemas com caracteres iniciais ausentes e não polui minha área de transferência.

Observe que estou usando uma versão levemente personalizada do formato RFC 3339 / ISO 8601: costumo usar isso em contextos em que desejo evitar o espaço na datesaída do RFC 3339, mas acho Tque separa a data da hora em que Os registros de data e hora do ISO 8601 são pouco intuitivos e difíceis de ler, portanto, acho que um sublinhado funciona bem.


1
bash -c 'xdotool keyup super && xdotool type "$(date +%Y.%m.%d)"'

Eu uso Super+Qcomo meu atalho e preciso limpar o supermodificador antes de enviar o arquivo date. Eu tentei, --clearmodifiersmas isso causaria o unity dashsurgimento após a execução do atalho [1]

[1] O motivo unity dashapareceria depois, antes de superser restaurado, se --clearmodifiersfor usado.man xdotool

CLEARMODIFIERS
       Any command taking the --clearmodifiers flag will attempt to clear any
       active input modifiers during the command and restore them afterwards.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.