✨ Destaques
- Abre com a 1ª linha já selecionada no popup.
- Foco inicial na lista: setas/Enter funcionam imediatamente.
- Digitação automática na busca: qualquer caractere (e Backspace/Delete) redireciona o foco para a caixa de pesquisa e insere/edita o texto lá.
🛠️ Alterações
PopupUI#showAtMouse():
- Seleciona o primeiro item (
setSelectedIndex(0)) e dá foco na lista ao abrir.
- Listener de teclado na
JList:
Enter copia e fecha.
Esc fecha.
Backspace/Delete são encaminhados para o JTextField de busca.
- Qualquer caractere imprimível move o foco para a busca e é inserido no caret atual.
- Mantidos:
- Busca reativa com
DocumentListener.
- Botões “Limpar busca” e “Limpar histórico”.
- Renderização em linha única + timestamp humano (ex.: “hoje 14:22”).
- Persistência: histórico salvo em arquivo por SO, até
MAX_HISTORY=1000.
- IPC local:
--toggle / --show para controlar o popup de outra instância.
- Monitor de clipboard por polling (
POLL_MS=200 ms) com de-duplicação por último valor visto.
- UI: FlatDarkLaf, janela leve/sem decoração e sempre no topo.
🚀 Como usar
mvn clean package
java -jar target/jclipper.jar # inicia a instância principal
java -jar target/jclipper.jar --toggle # alterna o popup
java -jar target/jclipper.jar --show # força mostrar