From fb075b10a3e663691d8c3c4866d3e178d4bcb9e3 Mon Sep 17 00:00:00 2001 From: gbcastro Date: Wed, 12 Aug 2026 11:26:51 +0100 Subject: [PATCH] changes to emacs config --- emacs/.config/emacs/.#config.org | 1 - emacs/.config/emacs/config.org | 87 ++++++++++++++++++++++++++---- sway/.config/sway/config | 4 +- waybar/.config/waybar/config.jsonc | 6 ++- 4 files changed, 85 insertions(+), 13 deletions(-) delete mode 120000 emacs/.config/emacs/.#config.org diff --git a/emacs/.config/emacs/.#config.org b/emacs/.config/emacs/.#config.org deleted file mode 120000 index 042e31f..0000000 --- a/emacs/.config/emacs/.#config.org +++ /dev/null @@ -1 +0,0 @@ -gabi@gentoo.1525130935602846936 \ No newline at end of file diff --git a/emacs/.config/emacs/config.org b/emacs/.config/emacs/config.org index 25e31d2..56975fe 100644 --- a/emacs/.config/emacs/config.org +++ b/emacs/.config/emacs/config.org @@ -4,7 +4,7 @@ Configuração do Garbage Collector para acelerar o arranque. (setq gc-cons-threshold (* 50 1024 1024)) (add-hook 'emacs-startup-hook (lambda () - (setq gc-cons-threshold (* 2 1024 1024)))) + (setq gc-cons-threshold (* 50 1024 1024)))) #+end_src * LIMPEZA VISUAL @@ -18,13 +18,17 @@ Remover barras desnecessárias e ecrã de boas-vindas. * DEFAULTS & COMPORTAMENTO BASE #+begin_src elisp -(setq make-backup-files nil) -(setq auto-save-default nil) +(setq backup-directory-alist '(("." . "~/.emacs.d/backups"))) +(setq auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save-list/" t))) +(setq create-lockfiles nil) (setq-default fill-column 80) +;; Desativa completamente o som de erro (não faz som nem pisca) +(setq ring-bell-function 'ignore) (electric-pair-mode 1) #+end_src + * NÚMEROS DE LINHA Ativa os números de linha relativos para facilitar a navegação, exceto em modos de leitura. #+begin_src elisp @@ -203,6 +207,8 @@ Configurações essenciais para escrita e blocos de código. (org-src-preserve-indentation nil) (org-edit-src-content-indentation 0) (org-src-tab-acts-natively t) + (org-startup-with-inline-images t) + (org-image-actual-width nil) :config (org-babel-do-load-languages 'org-babel-load-languages @@ -225,7 +231,7 @@ Configurações essenciais para escrita e blocos de código. :config (org-download-enable) (setq-default org-download-image-dir "./images") - (setq org-download-screenshot-method "wl-paste -t image/png > %s")) + (setq org-download-clipboard-command "wl-paste -t image/png > %s")) #+end_src * VERIFICAÇÃO DE SINTAXE (FLYCHECK) @@ -247,13 +253,15 @@ Motor de parsing moderno. C e C++ mantidos propositadamente no modo clássico (r ;; 1. Dizer ao Emacs a localização exata das gramáticas testadas (setq treesit-language-source-alist '((bash "https://github.com/tree-sitter/tree-sitter-bash") + (c "https://github.com/tree-sitter/tree-sitter-c") + (cpp "https://github.com/tree-sitter/tree-sitter-cpp") (python "https://github.com/tree-sitter/tree-sitter-python") (json "https://github.com/tree-sitter/tree-sitter-json") (yaml "https://github.com/ikatyang/tree-sitter-yaml") (dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile"))) ;; 2. Instalar automaticamente as gramáticas -(dolist (lang '(bash python json yaml dockerfile)) +(dolist (lang '(bash c cpp python json yaml dockerfile)) (unless (treesit-language-available-p lang) (treesit-install-language-grammar lang))) @@ -262,11 +270,29 @@ Motor de parsing moderno. C e C++ mantidos propositadamente no modo clássico (r :custom (treesit-auto-install nil) :config - (setq treesit-auto-langs '(python bash json yaml dockerfile)) + (setq treesit-auto-langs '(c cpp python bash json yaml dockerfile)) (treesit-auto-add-to-auto-mode-alist 'all) (global-treesit-auto-mode)) #+end_src +* LANGUAGE SERVER PROTOCOL (EGLOT + CLANGD) +Obrigatório para desenvolvimento bare-metal em C. +#+begin_src elisp +(use-package eglot + :ensure nil ; Built-in + :hook ((c-mode c-ts-mode c++-mode c++-ts-mode) . eglot-ensure) + :config + ;; Desativa logs pesados que atrasam o Emacs + (fset #'jsonrpc--log-event #'ignore) + ;; Configura o clangd para projetos embebidos + (add-to-list 'eglot-server-programs + '((c-mode c-ts-mode c++-mode c++-ts-mode) + . ("clangd" + "--background-index" + "--header-insertion=never" ; Evita que injete #includes indesejados + "--completion-style=detailed")))) +#+end_src + * ZETTELKASTEN (ORG-ROAM) O núcleo do sistema de notas. #+begin_src elisp @@ -410,17 +436,57 @@ Integração offline com o servidor local do llama.cpp via Vulkan. #+end_src * PESQUISA INTELIGENTE (KHOJ) -Integração com o servidor Khoj rodando no Raspberry Pi 5 para busca semântica nas notas. +Integração com o servidor Khoj para busca semântica nas notas. #+begin_src elisp (use-package khoj :ensure t :bind ("C-c n s" . khoj) ; Atalho: "Notes Search" :config - ;; Aponta o Emacs para o servidor no seu RPi5 - (setq khoj-server-url "http://192.168.1.201:5000") + ;; Aponta o Emacs para o servidor + (setq khoj-server-url "http://127.0.0.1:5000") ;; Opcional: Define a pasta padrão caso use a interface local do pacote - (setq khoj-notes-directory "~/org/roam")) + (setq khoj-index-directories '("~/org/roam/"))) +#+end_src + +* O MEU PRIMEIRO AGENTE (RAG) +Integração direta entre a pesquisa semântica (Khoj) e a geração de texto (Llama). +#+begin_src elisp +(defun gabi/agente-notas (pesquisa pergunta) + "Agente RAG de 2 Fases: Pesquisa Cirúrgica + Resposta Estrita." + (interactive + (list (read-string "1. Palavras-chave para o Khoj (ex: gentoo instalação): ") + (read-string "2. O que queres perguntar ao Llama sobre isto?: "))) + + (require 'gptel) + (message "Fase 1: A extrair as notas sobre '%s' do Khoj..." pesquisa) + + (let* ((url (format "http://127.0.0.1:5000/api/search?q=%s&n=5" (url-hexify-string pesquisa))) + (comando (format "curl -s '%s'" url)) + (resultados-khoj (shell-command-to-string comando)) + (buffer-resposta (get-buffer-create "*Síntese do Agente*")) + + ;; PROMPT DE FERRO: Proibido inventar. + (prompt-sistema (concat "És um assistente técnico de extração de informação. " + "Vais receber dados JSON retirados das notas do utilizador.\n\n" + "REGRAS ABSOLUTAS:\n" + "1. Baseia a resposta EXCLUSIVAMENTE nos dados abaixo.\n" + "2. NÃO inventes conhecimento externo. Se não está nos dados, não escrevas.\n" + "3. Ignora o código JSON e foca-te apenas no texto org-mode que está lá dentro.\n\n" + "DADOS EXTRAÍDOS:\n" + resultados-khoj))) + + (pop-to-buffer buffer-resposta) + (erase-buffer) + (org-mode) + (insert (format "#+TITLE: %s\n" pergunta)) + (insert (format "#+SUBTITLE: Baseado na pesquisa por: %s\n" pesquisa)) + (insert (format "#+DATE: %s\n\n" (format-time-string "%Y-%m-%d"))) + + (message "Fase 2: A analisar notas e a gerar resposta...") + (gptel-request pergunta + :system prompt-sistema + :stream t))) #+end_src @@ -441,6 +507,7 @@ Integração com o servidor Khoj rodando no Raspberry Pi 5 para busca semântica (message "A descarregar o artigo completo...") (eww link)))) :config + (setq elfeed-use-curl t) ;; Atualiza o Elfeed a cada 30 minutos em background (run-at-time nil (* 30 60) #'elfeed-update)) diff --git a/sway/.config/sway/config b/sway/.config/sway/config index 4c013ac..93e1af3 100644 --- a/sway/.config/sway/config +++ b/sway/.config/sway/config @@ -35,7 +35,7 @@ client.urgent #f38ba8 #1e1e2e #f38ba8 #f38ba8 #f38ba8 ### Output configuration # # Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) -output * bg /home/gabi/Pictures/Wallpapers/space.jpg fill +output * bg /home/gabi/Pictures/Wallpapers/cars.jpg fill # # Example configuration: # @@ -237,6 +237,7 @@ bindsym $mod+r mode "resize" include /etc/sway/config.d/* for_window [app_id="wofi"] floating enable, border pixel 0, move position center +for_window [app_id="nmtui-wifi"] floating enable, resize set width 500 height 600, move position center # --- AUTORUN --- exec --no-startup-id mako @@ -246,3 +247,4 @@ exec --no-startup-id pipewire & exec --no-startup-id wireplumber & exec --no-startup-id pipewire-pulse exec --no-startup-id mako +exec nm-applet --indicator diff --git a/waybar/.config/waybar/config.jsonc b/waybar/.config/waybar/config.jsonc index 6744f9c..81a6310 100644 --- a/waybar/.config/waybar/config.jsonc +++ b/waybar/.config/waybar/config.jsonc @@ -4,7 +4,7 @@ "height": 30, "modules-left": ["sway/workspaces", "sway/mode"], "modules-center": [], - "modules-right": ["pulseaudio", "cpu", "memory", "battery", "clock"], + "modules-right": ["tray", "pulseaudio", "cpu", "memory", "battery", "clock"], "sway/workspaces": { "disable-scroll": true, @@ -25,5 +25,9 @@ "pulseaudio": { "format": "{volume}% ", "format-muted": "" + }, + "tray": { + "icon-size": 18, + "spacing": 10 } }