iHandle all image types properly, also handle urls by passing them to xdg-open - holymoly - A tor enabled gopher client written in CHICKEN scheme Err vernunftzentrum.de 70 hgit clone git://vernunftzentrum.de/holymoly.git URL:git://vernunftzentrum.de/holymoly.git vernunftzentrum.de 70 1Log /ckeen/repos/holymoly/log.gph vernunftzentrum.de 70 1Files /ckeen/repos/holymoly/files.gph vernunftzentrum.de 70 1Refs /ckeen/repos/holymoly/refs.gph vernunftzentrum.de 70 1README /ckeen/repos/holymoly/file/README.gph vernunftzentrum.de 70 1LICENSE /ckeen/repos/holymoly/file/LICENSE.gph vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1commit fc19f05807570a187fe76eb6051b721cd2eb95da /ckeen/repos/holymoly/commit/fc19f05807570a187fe76eb6051b721cd2eb95da.gph vernunftzentrum.de 70 1parent bd2c6f35b61ce2fa3ad044f44f2613cbd4065f7c /ckeen/repos/holymoly/commit/bd2c6f35b61ce2fa3ad044f44f2613cbd4065f7c.gph vernunftzentrum.de 70 hAuthor: Christian Kellermann URL:mailto:ckeen@pestilenz.org vernunftzentrum.de 70 iDate: Fri, 3 Aug 2018 10:44:29 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iHandle all image types properly, also handle urls by passing them to xdg-open Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i holymoly.scm | 22 ++++++++++++++-------- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i1 file changed, 14 insertions(+), 8 deletions(-) Err vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1diff --git a/holymoly.scm b/holymoly.scm /ckeen/repos/holymoly/file/holymoly.scm.gph vernunftzentrum.de 70 i@@ -207,7 +207,8 @@ Err vernunftzentrum.de 70 i ("+" . redundant-server) Err vernunftzentrum.de 70 i ("T" . tn3270-session) Err vernunftzentrum.de 70 i ("g" . gif) Err vernunftzentrum.de 70 i- ("I" . image))) Err vernunftzentrum.de 70 i+ ("I" . image) Err vernunftzentrum.de 70 i+ ("h" . url))) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i (define (swap pair) (cons (cdr pair) (car pair))) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i@@ -239,12 +240,14 @@ Err vernunftzentrum.de 70 i (sprintf " > ~a" (entry-title e))))) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i (define (xdg-open r) Err vernunftzentrum.de 70 i- (let-values (((fd temp-path) (file-mkstemp "/tmp/mytemporary.XXXXXX"))) Err vernunftzentrum.de 70 i- (let ((temp-port (open-output-file* fd))) Err vernunftzentrum.de 70 i- (write-u8vector r temp-port) Err vernunftzentrum.de 70 i- (close-output-port temp-port)) Err vernunftzentrum.de 70 i- (process "xdg-open" (list temp-path)) Err vernunftzentrum.de 70 i- (previous-page))) Err vernunftzentrum.de 70 i+ (if (string? r) Err vernunftzentrum.de 70 i+ (process "xdg-open" (list (string-join (cdr (string-split r ":")) ":"))) Err vernunftzentrum.de 70 i+ (let-values (((fd temp-path) (file-mkstemp "/tmp/mytemporary.XXXXXX"))) Err vernunftzentrum.de 70 i+ (let ((temp-port (open-output-file* fd))) Err vernunftzentrum.de 70 i+ (write-u8vector r temp-port) Err vernunftzentrum.de 70 i+ (close-output-port temp-port)) Err vernunftzentrum.de 70 i+ (process "xdg-open" (list temp-path)))) Err vernunftzentrum.de 70 i+ (previous-page)) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i (define history '()) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i@@ -293,6 +296,9 @@ Err vernunftzentrum.de 70 i (previous-page))) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i (define (select-entry e) Err vernunftzentrum.de 70 i+ (when (equal? (entry-type e) 'url) Err vernunftzentrum.de 70 i+ (xdg-open (entry-selector e)) Err vernunftzentrum.de 70 i+ (select-entry (current-page))) Err vernunftzentrum.de 70 i (when (and (equal? (entry-type e) 'index-search) Err vernunftzentrum.de 70 i (= 1) (length (string-split (entry-selector e) "?"))) Err vernunftzentrum.de 70 i (let* ((query (get-user-input)) Err vernunftzentrum.de 70 i@@ -302,7 +308,7 @@ Err vernunftzentrum.de 70 i (entry-selector-set! e (string-append (car (string-split old-selector "?")) "?" (string-intersperse (string-split query) "+")))))) Err vernunftzentrum.de 70 i (unless (equal? e (current-page)) Err vernunftzentrum.de 70 i (push! e history)) Err vernunftzentrum.de 70 i- (let* ((res (request-resource (entry-host e) (entry-selector e) (entry-port e) (memq (entry-type e) '(dos-archive binary gif)))) Err vernunftzentrum.de 70 i+ (let* ((res (request-resource (entry-host e) (entry-selector e) (entry-port e) (memq (entry-type e) '(dos-archive binary gif image)))) Err vernunftzentrum.de 70 i (handler (or Err vernunftzentrum.de 70 i (alist-ref (entry-type e) type-handlers) Err vernunftzentrum.de 70 i (lambda (c) (save-selector e c)))) Err vernunftzentrum.de 70 .