document changes in sway socket connection

This commit is contained in:
Almarhoon Ibraheem 2024-08-03 18:31:23 +03:00
parent 8133372fba
commit 91428168f3
5 changed files with 25 additions and 6 deletions

View file

@ -47,6 +47,13 @@ You can retrieve information about =Sway=, such as list of available =workspaces
(focused-workspace-name (sway-get-workspaces))) (focused-workspace-name (sway-get-workspaces)))
#+end_src #+end_src
Note: To send commands to Sway, you must connect to the Sway sockets. Without connecting to the socket your commands won't be sent to Sway. use the function =(SWAY-CONNECT-SOCKTES!)= immediately after the imports in your =init.scm= to ensure that the rest of the expressions can successfully send commands to Sway.
#+begin_src scheme
;; connect to sway sockets
(sway-connect-sockets!)
#+end_src
*** Assign Keybindings *** Assign Keybindings
You can assign keybindings that execute Guile code! Obviously, running shell commands is straightforward since you're operating within Guile. Additionally, you have full access to Sway/i3 specific commands (refer to =swayipc/dispatcher.scm=). You can assign keybindings that execute Guile code! Obviously, running shell commands is straightforward since you're operating within Guile. Additionally, you have full access to Sway/i3 specific commands (refer to =swayipc/dispatcher.scm=).

View file

@ -24,6 +24,7 @@
(ice-9 pretty-print) (ice-9 pretty-print)
(swayipc)) (swayipc))
(sway-connect-sockets!)
(layout-alternating-configure) (layout-alternating-configure)
(layout-alternating-init) (layout-alternating-init)

View file

@ -25,7 +25,7 @@
(ice-9 pretty-print) (ice-9 pretty-print)
(swayipc)) (swayipc))
(SWAY-CONNECT-SOCKTES!) (sway-connect-sockets!)
;; get focused workspace from a list of workspaces ;; get focused workspace from a list of workspaces
(define (focused-workspace-name workspaces) (define (focused-workspace-name workspaces)

View file

@ -26,16 +26,21 @@
(modules which-key) (modules which-key)
(swayipc)) (swayipc))
(sway-connect-sockets!)
;; load look and feel ;; load look and feel
;; a separate scheme file for look and feel configuration
(load "behavior.scm") (load "behavior.scm")
;; init keybindings ;; init keybindings
;; a separate scheme file for keybindings (using general)
(load "keybindings.scm") (load "keybindings.scm")
(keybindings-init) (keybindings-init)
;; subscribe to all events ;; subscribe to all events
(sway-subscribe-all) (sway-subscribe-all)
;; configure workspace groups to sync groups
(define OUTPUTS '("HDMI-A-2" "DP-1" "DP-2")) (define OUTPUTS '("HDMI-A-2" "DP-1" "DP-2"))
(define GROUPS (define GROUPS
'(("11-browser" "21-browser" "31-browser") '(("11-browser" "21-browser" "31-browser")
@ -51,6 +56,7 @@
(workspace-groups-configure #:groups GROUPS #:outputs OUTPUTS) (workspace-groups-configure #:groups GROUPS #:outputs OUTPUTS)
(workspace-groups-init) (workspace-groups-init)
;; configure workspace grid to arrange workspaces in a matrix
(define ROWS 3) (define ROWS 3)
(define COLUMNS 3) (define COLUMNS 3)
(define WORKSPACES (apply map list GROUPS)) (define WORKSPACES (apply map list GROUPS))
@ -58,11 +64,12 @@
(workspace-grid-configure #:rows ROWS #:columns COLUMNS #:workspaces WORKSPACES) (workspace-grid-configure #:rows ROWS #:columns COLUMNS #:workspaces WORKSPACES)
(workspace-grid-init) (workspace-grid-init)
;; configure auto reload to automatically reload sway when a config file changes
(auto-reload-configure #:directories (auto-reload-configure #:directories
`(,(string-append (getenv "HOME") "/.config/sway/"))) `(,(string-append (getenv "HOME") "/.config/sway/")))
(auto-reload-init) (auto-reload-init)
;; init which-key ;; configure which key to show available keybindings
(which-key-configure #:delay-idle 1.2) (which-key-configure #:delay-idle 1.2)
(which-key-init) (which-key-init)
@ -75,24 +82,28 @@
(system "pkill -f '.*rofi -e.*'")) (system "pkill -f '.*rofi -e.*'"))
(define (show-which-key submap bindings) (define (show-which-key submap bindings)
;; show your which-key viewer (rofi, eww, etc.)
(format #t "Displaying Submap ~a Bindings:\n" submap) (format #t "Displaying Submap ~a Bindings:\n" submap)
(let ((message "")) (let ((message ""))
;; printing to display (via repl/terminal)
(for-each (for-each
(lambda (ls) (lambda (ls)
(let ((nmsg (format #f " - ~a -> ~a\n" (list-ref ls 1) (list-ref ls 3)))) (let ((nmsg (format #f " - ~a -> ~a\n" (list-ref ls 1) (list-ref ls 3))))
(display nmsg) (display nmsg)
(set! message (string-append message nmsg)))) (set! message (string-append message nmsg))))
bindings) bindings)
;; showing in rofi
(show-rofi-message message))) (show-rofi-message message)))
(define (hide-which-key submap) (define (hide-which-key submap)
;; hide your which-key viewer (rofi, eww, etc.)
(format #t "Hiding Submap Bindings:\n") (format #t "Hiding Submap Bindings:\n")
;; hide your which-key viewer (rofi, eww, etc.)
(hide-rofi-message)) (hide-rofi-message))
;; add the display and hide hook functions
(add-hook! which-key-display-keybindings-hook show-which-key) (add-hook! which-key-display-keybindings-hook show-which-key)
(add-hook! which-key-hide-keybindings-hook hide-which-key) (add-hook! which-key-hide-keybindings-hook hide-which-key)
;; start listening to sway events
(sway-start-event-listener-thread) (sway-start-event-listener-thread)
(thread-join! SWAY-LISTENER-THREAD) (thread-join! SWAY-LISTENER-THREAD)

View file

@ -38,11 +38,11 @@
SWAY-SOCKET-PATH SWAY-SOCKET-PATH
SWAY-COMMAND-SOCKET SWAY-COMMAND-SOCKET
SWAY-CONNECT-SOCKETS!
SWAY-LISTENER-SOCKET SWAY-LISTENER-SOCKET
SWAY-LISTENER-THREAD SWAY-LISTENER-THREAD
SWAY-MSG-MAGIC SWAY-MSG-MAGIC
sway-connect-sockets!
sway-start-event-listener-thread sway-start-event-listener-thread
sway-start-event-listener sway-start-event-listener
sway-data-received-hook sway-data-received-hook
@ -102,7 +102,7 @@
;; to sway via IPC. ;; to sway via IPC.
(define SWAY-COMMAND-SOCKET (socket AF_UNIX SOCK_STREAM 0)) (define SWAY-COMMAND-SOCKET (socket AF_UNIX SOCK_STREAM 0))
(define (SWAY-CONNECT-SOCKETS!) (define (sway-connect-sockets!)
(connect SWAY-LISTENER-SOCKET (make-socket-address AF_UNIX SWAY-SOCKET-PATH)) (connect SWAY-LISTENER-SOCKET (make-socket-address AF_UNIX SWAY-SOCKET-PATH))
(connect SWAY-COMMAND-SOCKET (make-socket-address AF_UNIX SWAY-SOCKET-PATH))) (connect SWAY-COMMAND-SOCKET (make-socket-address AF_UNIX SWAY-SOCKET-PATH)))