New command pipewire-properties
This commit is contained in:
		| @@ -86,6 +86,13 @@ If the given KEY doesn't exist in OBJECT, return DEFAULT." | ||||
|   (or (cdr (assoc key (pw-lib--object-info object))) | ||||
|       default)) | ||||
|  | ||||
| (defun pw-lib-properties (object) | ||||
|   "Return names of PipeWire OBJECT properties. | ||||
| The returned value is a list of strings. | ||||
| The corresponding values can be retrieved using `pw-lib-object-value' | ||||
| function." | ||||
|   (cl-remove-if-not #'stringp (mapcar #'car (pw-lib--object-info object)))) | ||||
|  | ||||
| (defun pw-lib-object-type (object) | ||||
|   "Return PipeWire type of OBJECT as a string. | ||||
| E.g. \"Device\", \"Node\", \"Port\", \"Client\", ..." | ||||
|   | ||||
							
								
								
									
										16
									
								
								pw-ui.el
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								pw-ui.el
									
									
									
									
									
								
							| @@ -96,6 +96,7 @@ The indicator is displayed only on graphical terminals." | ||||
|   :group 'pipewire) | ||||
|  | ||||
| (defvar pipewire-buffer "*PipeWire*") | ||||
| (defvar pipewire-properties-buffer "*PipWire-properties*") | ||||
|  | ||||
| (defun pw-ui--label (label) | ||||
|   (propertize (concat label ":") 'face 'pipewire-label)) | ||||
| @@ -381,6 +382,20 @@ Otherwise ask for the Node to set as the default Node." | ||||
|         (pw-ui--update)) | ||||
|     (error "Nothing to set a profile for here"))) | ||||
|  | ||||
| (defun pipewire-properties () | ||||
|   "Display properties of the object at the current point." | ||||
|   (interactive) | ||||
|   (if-let ((object (pw-ui--current-object))) | ||||
|       (progn | ||||
|         (pop-to-buffer pipewire-properties-buffer) | ||||
|         (let ((inhibit-read-only t)) | ||||
|           (erase-buffer) | ||||
|           (dolist (p (sort (pw-lib-properties object) #'string-lessp)) | ||||
|             (insert (format "%s: %s\n" p (pw-lib-object-value object p))))) | ||||
|         (goto-char (point-min)) | ||||
|         (view-mode)) | ||||
|     (error "No PipeWire object here"))) | ||||
|  | ||||
| (defvar pipewire-mode-map | ||||
|   (let ((map (make-sparse-keymap))) | ||||
|     (define-key map "d" 'pipewire-set-default) | ||||
| @@ -391,6 +406,7 @@ Otherwise ask for the Node to set as the default Node." | ||||
|     (define-key map "-" 'pipewire-decrease-volume) | ||||
|     (define-key map "+" 'pipewire-increase-volume-single) | ||||
|     (define-key map "_" 'pipewire-decrease-volume-single) | ||||
|     (define-key map " " 'pipewire-properties) | ||||
|     map)) | ||||
|  | ||||
| (define-derived-mode pipewire-mode special-mode "PW" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user