No worries, I have never written a module, so I couldn't blame you for anything.
Regarding keybings, (un)fortunately, I live in a hybrid-world, the machine I use for my job is a windows machine provided by the customer, so I have to account for the Windows world, hence C-n et al. doesn't feels natural to me for a very long time. Maybe you could propose predefined keybindings in addition to the possibility for the user to define its own. The Nyxt web-browser, a common lisp based browser, do that quite well. Below is my keybindings definition: ;; 1. Undefine all the default keybindings (undefine-key *top-map* (kbd "C-Left")) (undefine-key *top-map* (kbd "C-Right")) (undefine-key *top-map* (kbd "C-Up")) (undefine-key *top-map* (kbd "C-Down")) (undefine-key *top-map* (kbd "C-S-Left")) (undefine-key *top-map* (kbd "C-S-Right")) (undefine-key *top-map* (kbd "C-S-Up")) (undefine-key *top-map* (kbd "C-S-Down")) ;; 2. Set my own keybindings (define-key *top-map* (kbd "s-Left") "coord-left") (define-key *top-map* (kbd "s-Right") "coord-right") (define-key *top-map* (kbd "s-Up") "coord-up") (define-key *top-map* (kbd "s-Down") "coord-down") ;; Control-Shift left/right to switch desktop Z (define-key *top-map* (kbd "C-s-Left") "coord-taskleft") (define-key *top-map* (kbd "C-s-Right") "coord-taskright") ;; Control-Shift-Up to return to origin 0,0 on current desktop Z (define-key *top-map* (kbd "C-s-Up") "coord-taskorigin") ;; "Pop" back to last desktop position (define-key *top-map* (kbd "C-s-Down") "coord-taskpop") ;; ---------------------------------------------- As for the multi-head usage, S-Arrows allows to switch between frames in the same group, so it allows to switch between heads. As for frame/windows placement in groups, according to the documentation, it is possible to define rules, unfortunately, I never manage to make them works, with the exception of firefox. :( It is important to note that the target group must exists for the rule to not raise an error. Below is the rule I had defined for firefox, before using spatial groups. (define-frame-preference "F3-Media" (0 nil t :create t :class "Navigator.Firefox")) Roland Everaert --- Use the F.O.S.S., Luke Envoyé avec la messagerie sécurisée ProtonMail. ------- Original Message ------- Le dimanche 13 mars 2022 à 15:43, Russell Adams <rlad...@adamsinfoserv.com> a écrit : > On Sun, Mar 13, 2022 at 08:58:47AM +0000, Roland Everaert wrote: > > > Hello M. Adams, > > > > I just install the module which works quite well. > > > > Nonetheless, could you, please, consider updating your documentation > > > > to explain how to override your keybindings? > > That's an oversight on my part. I'll add a config variable and wrap > > those in a function shortly. > > To be fair, this is my first module and it was adapted from my > > personal config. ;] > > > They are interfering with keybindings used in terminals and text editors. > > > > C-Left and C-Right are used to jump between words. C-Up and C-Down > > > > are used to jump between paragraphs. The keys coords C-S-<arrow-key> > > > > are also used in text editors. > > I disagree completely. These are my day to day bindings carefully > > chosen not to interfere with the applications I use. The only one I > > run into is Shift-arrows breaks updating Org-mode timestamps. They > > haven't changed in about a decade. > > However, I'm aware that Windoze style GUI applications may abuse > > C-Arrows instead of sane defaults like C-n and C-p. In Emacs, > > Meta-arrows jumps across words. C-c is interrupt, and C-v is page > > down, they have nothing to do with the clipboard. > > You absolutely should be able to customize your keys though, I'll post > > a fix. > > > So, I have the feeling it can be, at the very least, surprising to > > > > new users of your module. > > Yep, I'll wrap it. Would you recommend enabling the keybinds by > > default with an option to disable, or require additional configuration > > to set the base keybinds? > > I'm leaning toward the second option, of updating the install > > instructions to call the keybind function. > > > With regards to using your module with multiple heads, I find the > > > > behaviours quite natural, so far. > > You're using it multihead? I'm surprised it even works. There are > > rules like "same group can never be on two screens", and there's no > > relationship logic (ie: to the left, to the right of, screens = ( x , > > x - 1) ) in the code. > > I always thought I'd have to add a layer to specify orientation to the > > coordinate change login per screen, and then swap all screens to a > > screen specific "null" group before moving to the final. > > > How did you save and restore each workspace? > > I don't normally. In my startup I had some code to make some splits, > > but I've not found a good way to launch applications into those > > specific places. > > Do you know how to do "run program in group 1, frame 3"? It always > > just launches in current frame for me. > > > There are commands, in stumpwm, to dump and restore frames and > > > > windows, but I am not quite sure they are adapted to a spacial > > > > grouping. > > I think that they should work. Spatial uses group names as a text > > string of coordinates, and doesn't touch the splits/frames. I think > > save and load will work normally. > > > I will try to provide some feedback about my usage of the spatial > > > > groups in the coming weeks. > > Looking forward to it! > > ------------------------------------------------------------------ > > Russell Adams rlad...@adamsinfoserv.com > > PGP Key ID: 0x1160DCB3 http://www.adamsinfoserv.com/ > > Fingerprint: 1723 D8CA 4280 1EC9 557F 66E8 1154 E018 1160 DCB3