nyxt
nyxt copied to clipboard
`save-new-password` does not connect to password interface
Describe the bug
Executing save-new-password, before any other password interface command, does not connect to password interface.
- would expect it to work similarly to
copy-usernameorcopy-password - only trialed with KeepassXC
Precise recipe to reproduce the issue
- Execute
save-new-passwordin Nyxt viaM-x save-new-password, prior to executing any other password interface command:- Does not prompt for KeepassXC db password, only prompts for:
- "Name for new password", "New password...", and "Username..."
- Then fails with follwoing output:
- Does not prompt for KeepassXC db password, only prompts for:
WARN - Warning: Error on separate thread: Subprocess #<UIOP/LAUNCH-PROGRAM::PROCESS-INFO {1009C01963}>
with command ("/usr/bin/keepassxc-cli" "add" "--username" "test222"
"--password-prompt" "/home/logoraz/Documents/moses/p.kdbx" "-k"
"/home/logoraz/Documents/moses/pkf" "Test222")
exited with error code 1
Information
- OS name+version: Fedora 40 (Workstation)
- Graphics card and driver: Intel® HD Graphics 520 (SKL GT2)
- Desktop environment / Window manager name+version: Wayland/Gnome 46
- Installation method (Flatpak, Guix, package manager, build from source): Build from source
- flatpak installation method currently doesn't support password interface (see: #3213)
- Output of
nyxt --system-information:
Nyxt version: 4
Renderer: GI-GTK
Operating system kernel: Linux 6.9.7-200.fc40.x86_64
Lisp implementation: SBCL 2.3.11-2.fc40 (Dynamic space size: 3221225472)
Features: (:NYXT-GI-GTK :NYXT-GTK :WEBKIT2 :WEBKIT-2.44.2 :WEBKIT-2.44 :WEBKIT-2
:WEBKIT2-CORS-ALLOWLIST :WEBKIT2-PASTE-PLAINTEXT :WEBKIT2-TRACKING
:WEBKIT2-MUTE :WEBKIT2-EMOJI :WEBKIT2-MEDIA :WEBKIT2-SANDBOXING :GTK-3-22
:GTK-3-20 :GTK-3-18 :GTK-3-16 :GTK-3-14 :GTK-3-12 :GTK-3-10 :GTK-3-8 :GTK-3-6
:GTK-3-4 :GTK :GDK-3-22 :GDK-3-20 :GDK-3-18 :GDK-3-16 :GDK-3-14 :GDK-3-12
:GDK-3-10 :GDK-3-8 :GDK-3-6 :GDK-3-4 :CAIRO-1-10 :CAIRO-1-12 :GDK-PIXBUF
:GLIB-2-30 :GLIB-2-32 :GLIB-2-34 :GLIB-2-36 :GLIB-2-38 :GLIB-2-40 :GLIB-2-42
:GLIB-2-44 :GLIB-2-46 :GLIB-2-48 :GLIB-2-50 :GLIB-2-52 :GLIB-2-54 :GLIB-2-56
:GLIB-2-58 :GLIB :NYXT-4 :CLIPBOARD-CONTENT-METHOD :SWANK :SLYNK :PLUMP-UTF-32
:PARENSCRIPT :NSYMBOLS :FSET-EXT-STRINGS :SBCL+SAFE-STANDARD-READTABLE
:NAMED-READTABLES :GLOBAL-VARS :LPARALLEL :21BIT-CHARS
:CUSTOM-HASH-TABLE-NATIVE :CLOSER-MOP :CL-PPCRE-UNICODE :CL-UNICODE :CHUNGA
:FLEXI-STREAMS :CL-PPCRE :BORDEAUX-THREADS :LPARALLEL.WITH-CLTL2
:LPARALLEL.WITH-CAS :LPARALLEL.WITH-STEALING-SCHEDULER :SPLIT-SEQUENCE
CFFI-FEATURES:FLAT-NAMESPACE CFFI-FEATURES:X86-64 CFFI-FEATURES:UNIX :CFFI
CFFI-SYS::FLAT-NAMESPACE ALEXANDRIA::SEQUENCE-EMPTYP :FAST-IO-SV :FAST-IO
:CL-JSON-CLOS :CL-JSON :SBCL-USES-SB-ROTATE-BYTE CHIPZ-SYSTEM:GRAY-STREAMS
:THREAD-SUPPORT :ASDF3.3 :ASDF3.2 :ASDF3.1 :ASDF3 :ASDF2 :ASDF :OS-UNIX
:NON-BASE-CHARS-EXIST-P :ASDF-UNICODE :ARENA-ALLOCATOR :X86-64 :GENCGC :64-BIT
:ANSI-CL :COMMON-LISP :ELF :IEEE-FLOATING-POINT :LINUX :LITTLE-ENDIAN
:PACKAGE-LOCAL-NICKNAMES :SB-CORE-COMPRESSION :SB-LDB :SB-PACKAGE-LOCKS
:SB-THREAD :SB-UNICODE :SBCL :UNIX)
ASDF version: 3.3.1
ASDF registries: (NYXT-SOURCE-REGISTRY ENVIRONMENT-SOURCE-REGISTRY USER-SOURCE-REGISTRY
USER-SOURCE-REGISTRY-DIRECTORY
DEFAULT-USER-SOURCE-REGISTRY SYSTEM-SOURCE-REGISTRY
SYSTEM-SOURCE-REGISTRY-DIRECTORY
DEFAULT-SYSTEM-SOURCE-REGISTRY)
Critical dependencies: (/home/logoraz/common-lisp/nyxt/_build/cl-cffi-gtk/gtk/cl-cffi-gtk.asd
/home/logoraz/common-lisp/nyxt/_build/cl-gobject-introspection/cl-gobject-introspection.asd
/home/logoraz/common-lisp/nyxt/_build/cl-webkit/webkit2/cl-webkit2.asd)
Output when started from a shell
Nyxt version 4
<INFO> [19:50:54] Source location: #P"/home/logoraz/common-lisp/nyxt/"
<INFO> [19:50:55] Loading Lisp file #P"/home/logoraz/.config/nyxt/config.lisp".
; compiling file "/home/logoraz/.config/nyxt/theme.lisp" (written 07 JUL 2024 09:56:55 PM):
; wrote /home/logoraz/.cache/common-lisp/sbcl-2.3.11-2.fc40-linux-x64/home/logoraz/.config/nyxt/theme-tmp9L7RCIOO.fasl
; compilation finished in 0:00:00.032
; compiling file "/home/logoraz/.config/nyxt/passwords.lisp" (written 08 JUL 2024 07:03:39 PM):
; wrote /home/logoraz/.cache/common-lisp/sbcl-2.3.11-2.fc40-linux-x64/home/logoraz/.config/nyxt/passwords-tmpE19DJRZJ.fasl
; compilation finished in 0:00:00.010
; compiling file "/home/logoraz/.config/nyxt/utilities.lisp" (written 07 JUL 2024 09:56:55 PM):
; wrote /home/logoraz/.cache/common-lisp/sbcl-2.3.11-2.fc40-linux-x64/home/logoraz/.config/nyxt/utilities-tmp6J73PGHY.fasl
; compilation finished in 0:00:00.001
<INFO> [19:50:55] Listening to socket: #P"/run/user/1000/nyxt/nyxt.socket"
(nyxt:32035): Gtk-CRITICAL **: 19:50:55.513: gtk_box_pack: assertion '_gtk_widget_get_parent (child) == NULL' failed
<INFO> [19:50:56] Not restoring session.
<INFO> [19:50:56] Loading #P"/home/logoraz/.local/share/nyxt/history/default.lisp".
<WARN> [19:50:56] History major version 3 differs from current major version 4
<INFO> [19:50:56] Loading #P"/home/logoraz/.local/share/nyxt/auto-rules.lisp".
Possible Solution
- add
(with-password (password-interface buffer) ...tosave-new-passwordcommand:- Trialed and seemed to resolve issue
(define-command save-new-password (&optional (buffer (current-buffer)))
"Save password to password interface."
(password-debug-info)
(cond
((and (password-interface buffer)
(nyxt:has-method-p (password-interface (find-submode 'password-mode buffer))
#'password:save-password))
;; add `with-password` macro to invoke password-interface, similar to `copy-username` and `copy-password`
(with-password (password-interface buffer)
(let* ((password-name (prompt1
:prompt "Name for new password"
:input (or (quri:uri-domain (url (current-buffer))) "")
:sources 'prompter:raw-source))
(new-password (prompt1
:prompt "New password (leave empty to generate)"
:invisible-input-p t
:sources 'prompter:raw-source))
(username (prompt1
:prompt "Username (can be empty)"
:sources 'prompter:raw-source)))
(password:save-password (password-interface buffer)
:username username
:password-name password-name
:password new-password))))
((null (password-interface buffer))
(echo-warning "No password manager found."))
(t (echo-warning "Password manager ~s does not support saving passwords."
(string-downcase
(class-name (class-of (password-interface buffer))))))))
@jmercouris do you use keepassxc? Can you reproduce?
I do not use keepassxc, nor can I reproduce.