;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\210\304\305\306\307\310\311\312\313&\210\314\315\316\317\320DD\321\322\323%\210\314\324\316\317\325DD\326\322\323%\210\314\327\316\317\330DD\331\322\332%\210\333\334\327\306#\210\335\211\203c\211@\334N\203\\\327N\204\\\336\327\334N#\210A\266\202\202B\210\337\334\327\340#\207" [require xcb-randr exwm-core exwm-workspace custom-declare-group exwm-randr nil "RandR." :version "25.3" :group exwm custom-declare-variable exwm-randr-refresh-hook funcall function #[0 "\300\207" [nil] 1] "Normal hook run when the RandR module just refreshed." :type hook exwm-randr-screen-change-hook #[0 "\300\207" [nil] 1] "Normal hook run when screen changes." exwm-randr-workspace-monitor-plist #[0 "\300\207" [nil] 1] "Plist mapping workspaces to monitors.\n\nIn RandR 1.5 a monitor is a rectangle region decoupled from the physical\nsize of screens, and can be identified with `xrandr --listmonitors' (name of\nthe primary monitor is prefixed with an `*'). When no monitor is created it\nautomatically fallback to RandR 1.2 output which represents the physical\nscreen size. RandR 1.5 monitors can be created with `xrandr --setmonitor'.\nFor example, to split an output (`LVDS-1') of size 1280x800 into two\nside-by-side monitors one could invoke (the digits after `/' are size in mm)\n\n xrandr --setmonitor *LVDS-1-L 640/135x800/163+0+0 LVDS-1\n xrandr --setmonitor LVDS-1-R 640/135x800/163+640+0 none\n\nIf a monitor is not active, the workspaces mapped to it are displayed on the\nprimary monitor until it becomes active (if ever). Unspecified workspaces\nare all mapped to the primary monitor. For example, with the following\nsetting workspace other than 1 and 3 would always be displayed on the\nprimary monitor where workspace 1 and 3 would be displayed on their\ncorresponding monitors whenever the monitors are active.\n\n \\='(1 \"HDMI-1\" 3 \"DP-1\")" (plist :key-type integer :value-type string) defvaralias exwm-randr-workspace-output-plist (saved-value saved-variable-comment) put make-obsolete-variable "27.1"] 8) #@29 Used for debouncing events. (defvar exwm-randr--last-timestamp 0 (#$ . 2492)) #@53 The most recent ScreenChangeNotify sequence number. (defvar exwm-randr--prev-screen-change-seqnum nil (#$ . 2576)) #@62 Non-nil when the server does not support RandR 1.5 protocol. (defvar exwm-randr--compatibility-mode nil (#$ . 2697)) #@25 Get RandR 1.5 monitors. (defalias 'exwm-randr--get-monitors #[0 "\203\305\306 \203 \202\307\310#\210\311\211\211\211\312\n\313\n\314\315\316 \317\320%\"\311#@\321\322\"\fV\2034\321\322\"\321\323\"\211\203\261\211@\211\324\321\325\"!\262\314\326\327\321\330\"\331\321\332\"\333\321\334\"\335\321\n\336\"& \262BB\262\203\230\305\337 \203} \202~\307\310 \321\330\"\321\332\"\321\334\"\321 \336\"&\210\321\340\"\341U\203\245\204\251\262\210A\266\202\2028\266\203\307\305\342 \203\302 \202\303\307\310$\210\211\343\"E\207" [exwm-debug exwm-debug-log-time-function exwm--connection exwm--root exwm-randr--last-timestamp xcb-debug:message "%s%s: \n" "" "exwm-randr--get-monitors" nil xcb:-+reply xcb:-+request-unchecked make-instance xcb:randr:GetMonitors :window :get-active 1 slot-value timestamp monitors x-get-atom-name name xcb:RECTANGLE :x x :y y :width width :height height "%s%s: %s: %sx%s+%s+%s\n" primary 0 "%s%s: Primary monitor: %s\n" exwm-randr--get-monitor-alias] 20 (#$ . 2820)]) #@82 Get RandR 1.2 outputs. Only used when RandR 1.5 is not supported by the server. (defalias 'exwm-randr--get-outputs #[0 "\203\306\307 \203 \202\310\311#\210\312\211\211\211\313\n\314\n\315\316\317 #\"\312#@\320\321\"\fV\2032\320\321\"\320\322\"\211\203\347\211@\313\n\314\n\315\323\324\325\320\f\321\"%\"\312#@\320\326\" U\203\337\320\327\"\330U\204\337\313\n\314\n\315\331\332\320\327\"\325\320 \321\"%\"\312#@\333\334\335\320\336\"\"\337\"\262 \315\340\341\320\342\"\343\320\344\"\345\320\346\"\347\320\n\350\"& \262BB\262\203\326\306\351 \203\273 \202\274\310\311\f\320\342\"\320\344\"\320\346\"\320 \350\"&\210\204\336\262\210\210A\266\202\2026\266\203\375\306\352 \203\370 \202\371\310\311$\210\211\353\"E\207" [exwm-debug exwm-debug-log-time-function exwm--connection exwm--root exwm-randr--last-timestamp xcb:randr:Connection:Connected xcb-debug:message "%s%s: \n" "" "exwm-randr--get-outputs" nil xcb:-+reply xcb:-+request-unchecked make-instance xcb:randr:GetScreenResourcesCurrent :window slot-value config-timestamp outputs xcb:randr:GetOutputInfo :output :config-timestamp connection crtc 0 xcb:randr:GetCrtcInfo :crtc decode-coding-string apply unibyte-string name utf-8 xcb:RECTANGLE :x x :y y :width width :height height "%s%s: %s: %sx%s+%s+%s\n" "%s%s: Primary output: %s\n" exwm-randr--get-monitor-alias] 21 (#$ . 3877)]) #@191 Generate monitor aliases using PRIMARY-MONITOR MONITOR-GEOMETRY-ALIST. In a mirroring setup some monitors overlap and should be treated as one. (fn PRIMARY-MONITOR MONITOR-GEOMETRY-ALIST) (defalias 'exwm-randr--get-monitor-alias #[514 "\300\211\211\211\301\"A\302\303\304\"\303\305\"\"BC\262\262\211BC\262\211\203r\211@\211@\262\211A\262\301\"\204k\302\303\304\"\303\305\"\"\306\"@\211\203YBB\262\202iBB\262\211BB\262\266A\266\202\202$\210\207" [nil assoc vector slot-value x y rassoc] 13 (#$ . 5293)]) #@57 Refresh workspaces according to the updated RandR info. (defalias 'exwm-randr-refresh #[0 "\203\306\307 \203 \202\310\311#\210\n\203\312 \202\313 \211\314\234\315\234\316\234\317\211\205\205 \2037\314\fG\314\211W\203\227\211\320 \"\321 \"A\f\234\322\323\"\203a\321 \"A\262\202n \262\321\f\f\"A\262\211\324!BC \244\262 \211BC\244\262\325\326#\210\325\327#\266\211T\262\202:\266\330 \210\f\211\203\256\211@\331!\210A\266\202\202\235\210\332,!\210\333 \203\301\334 \203\301\335 \210\336 \210\f\211\203\327\211@\337\317\"\210A\266\202\202\305\210\340\341\342,\343,\344\345\346-#\"\317#@\347\"!\211\203\211@\211\236A\211\203\n\350\"\262\337\236A\351\"\210\210A\266\202\202\355\210\332,!\210\352\353!\207" [exwm-debug exwm-debug-log-time-function exwm-randr--compatibility-mode exwm-workspace--fullscreen-frame-count exwm-workspace--list exwm-randr-workspace-monitor-plist xcb-debug:message "%s%s: \n" "" "exwm-randr-refresh" exwm-randr--get-outputs exwm-randr--get-monitors 0 1 2 nil plist-get assoc frame-parameter exwm-container intern set-frame-parameter exwm-randr-monitor exwm-geometry exwm-workspace--update-workareas exwm-workspace--set-fullscreen xcb:flush active-minibuffer-window exwm-workspace--minibuffer-own-frame-p exwm-workspace--show-minibuffer exwm-workspace--set-desktop-geometry exwm-workspace--set-active reverse slot-value xcb:-+reply xcb:-+request-unchecked make-instance xcb:QueryTree :window children rassq-delete-all t run-hooks exwm-randr-refresh-hook exwm--connection exwm--root] 17 (#$ . 5849) nil]) (byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias exwm-randr--refresh exwm-randr-refresh nil make-obsolete "27.1"] 4) #@137 Handle `ScreenChangeNotify' event. Run `exwm-randr-screen-change-hook' (usually user scripts to configure RandR). (fn DATA SYNTHETIC) (defalias 'exwm-randr--on-ScreenChangeNotify #[514 "\203\303\304 \203 \202\305\306#\210\307\310!\311\"\210\312\313\"\211\n\232?\205+\211\314\315!\262\207" [exwm-debug exwm-debug-log-time-function exwm-randr--prev-screen-change-seqnum xcb-debug:message "%s%s: \n" "" "exwm-randr--on-ScreenChangeNotify" make-instance xcb:randr:ScreenChangeNotify xcb:unmarshal slot-value ~sequence run-hooks exwm-randr-screen-change-hook] 6 (#$ . 7595)]) #@120 Handle `CrtcChangeNotify' and `OutputChangeNotify' events. Refresh when any CRTC/output changes. (fn DATA SYNTHETIC) (defalias 'exwm-randr--on-Notify #[514 "\203\303\304 \203 \202\305\306#\210\307\310!\311\312\"\210\313\314\315\"\316\"\2033\314\211\317\"\320\"\262\202F\313\314\315\"\321\"\203F\314\211\317\"\322\"\262\205_\314\323\"\nV\205]\324 \210\314\323\"\211\262\262\207" [exwm-debug exwm-debug-log-time-function exwm-randr--last-timestamp xcb-debug:message "%s%s: \n" "" "exwm-randr--on-Notify" make-instance xcb:randr:Notify nil xcb:unmarshal eql slot-value subCode xcb:randr:Notify:CrtcChange u cc xcb:randr:Notify:OutputChange oc timestamp exwm-randr-refresh] 9 (#$ . 8189)]) #@99 Handle `ConfigureNotify' event. Refresh when any RandR 1.5 monitor changes. (fn DATA SYNTHETIC) (defalias 'exwm-randr--on-ConfigureNotify #[514 "\203\303\304 \203 \202\305\306#\210\307\310!\311\"\210\211\312\313\"\n=\205'\314 \262\207" [exwm-debug exwm-debug-log-time-function exwm--root xcb-debug:message "%s%s: \n" "" "exwm-randr--on-ConfigureNotify" make-instance xcb:ConfigureNotify xcb:unmarshal slot-value window exwm-randr-refresh] 7 (#$ . 8912)]) #@51 Initialize RandR extension and EXWM RandR module. (defalias 'exwm-randr--init #[0 "\203\306\307 \203 \202\310\311#\210\312\313\n\314\"\315\"\316U\203#\317\320!\210\321\n\322\n\323\324\325\326\327\330%\"\331#@\312\332\"\326U\203I\312\333\"\330U\203I\331\202l\312\332\"\326U\203`\312\333\"\334Y\203`\335\202l\317\336\312\332\"\312\333\"#\210\337\340!\210\341 \210\342\n\343\344#\210\342\n\345\346#\210\342\n\347\350#\210\351\n\323\352\353\f\354\355 34#%\"\210\356\n!\210\357\360\341\"\266\361\211\205\275\211@\2115\236\204\266\211\362B5B5A\266\202\202\241\207" [exwm-debug exwm-debug-log-time-function exwm--connection exwm-randr--compatibility-mode exwm--root xcb:randr:NotifyMask:ScreenChange xcb-debug:message "%s%s: \n" "" "exwm-randr--init" slot-value xcb:get-extension-data xcb:randr present 0 error "[EXWM] RandR extension is not supported by the server" xcb:-+reply xcb:-+request-unchecked make-instance xcb:randr:QueryVersion :major-version 1 :minor-version 5 nil major-version minor-version 2 t "[EXWM] The server only support RandR version up to %d.%d" run-hooks exwm-randr-screen-change-hook exwm-randr-refresh xcb:+event xcb:randr:ScreenChangeNotify exwm-randr--on-ScreenChangeNotify xcb:randr:Notify exwm-randr--on-Notify xcb:ConfigureNotify exwm-randr--on-ConfigureNotify xcb:-+request xcb:randr:SelectInput :window :enable logior xcb:flush add-hook exwm-workspace-list-change-hook (exwm-randr-monitor) :never xcb:randr:NotifyMask:CrtcChange xcb:randr:NotifyMask:OutputChange frameset-filter-alist] 12 (#$ . 9388)]) #@24 Exit the RandR module. (defalias 'exwm-randr--exit #[0 "\203\302\303 \203 \202\304\305#\210\306\307\310\"\207" [exwm-debug exwm-debug-log-time-function xcb-debug:message "%s%s: \n" "" "exwm-randr--exit" remove-hook exwm-workspace-list-change-hook exwm-randr-refresh] 4 (#$ . 10956)]) #@32 Enable RandR support for EXWM. (defalias 'exwm-randr-enable #[0 "\203\302\303 \203 \202\304\305#\210\306\307\310\"\210\306\311\312\"\207" [exwm-debug exwm-debug-log-time-function xcb-debug:message "%s%s: \n" "" "exwm-randr-enable" add-hook exwm-init-hook exwm-randr--init exwm-exit-hook exwm-randr--exit] 4 (#$ . 11254)]) (provide 'exwm-randr)