diff --git a/config.el b/config.el index 20cb544..259dbac 100644 --- a/config.el +++ b/config.el @@ -893,10 +893,26 @@ Keeps the status bar and tab bar fully visible at any zoom level.") (ement-list-rooms))) (defun my/ement-maybe-restore () - "Restore saved ement session silently (no credentials prompt)." + "Restore saved ement session silently on startup. No prompts, no buffer. +Loads sessions from file and calls ement--reconnect directly to bypass +any interactive prompts in ement-connect (homeserver discovery, password)." (require 'ement) - (when (file-readable-p (expand-file-name ement-sessions-file)) - (ement-connect :user-id "@martin:sukany.cz"))) + (condition-case err + (let ((sf (expand-file-name ement-sessions-file))) + (when (file-readable-p sf) + ;; Pre-load sessions from file so ement-connect won't prompt + (unless ement-sessions + (when (fboundp 'ement--load-sessions) + (setq ement-sessions (ement--load-sessions)))) + ;; Reconnect directly — bypasses interactive ement-connect entirely + (if (fboundp 'ement--reconnect) + (dolist (entry ement-sessions) + (ement--reconnect (cdr entry))) + ;; Fallback: explicit homeserver avoids discovery/password prompt + (when ement-sessions + (ement-connect :user-id (caar ement-sessions) + :homeserver "https://matrix.apps.sukany.cz"))))) + (error (message "ement startup restore: %s" (error-message-string err))))) (defun my/ement-open () "Open Matrix panel: show room list (connect/restore if needed). @@ -912,7 +928,7 @@ Otherwise: runs interactive ement-connect, then opens rooms after sync." ;; Saved session exists — restore without credentials, open rooms after sync ((file-readable-p (expand-file-name ement-sessions-file)) (add-hook 'ement-after-initial-sync-hook #'my/ement-open-after-sync) - (ement-connect :user-id "@martin:sukany.cz")) + (my/ement-maybe-restore)) ;; No saved session — interactive connect, open rooms after sync (t (add-hook 'ement-after-initial-sync-hook #'my/ement-open-after-sync)