about summary refs log tree commit diff
path: root/users/tazjin/emacs/config/desktop.el
AgeCommit message (Collapse)AuthorFilesLines
2023-11-25 r/7060 feat(tazjin/emacs): dynamically assign EXWM workspaces to monitorsVincent Ambo1-2/+37
Adds an `exwm-assign-workspaces` function that automatically creates and assigns workspaces to each currently connected monitor. The first workspace (index 0) is always on the primary monitor. This function should be idempotent and can be called at any point to synchronise X outputs and what EXWM is displaying on them. This works because tabs are disconnected from workspaces completely, so I don't have to care about what's going on on other workspaces anymore. Still missing: * functions to connect/disconnect outputs * switching to other outputs from within emacs commands (i.e. without the mouse) Change-Id: I7c24aa1b45218fe35de6939e799852b5d11d1272 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10119 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2023-11-25 r/7058 feat(tazjin/emacs): add a monitor focus switch shortcutVincent Ambo1-0/+14
This one is a bit stupid because I couldn't figure out a way to determine the active workspace. It's definitely possible (either through some XCB calls, or through state management in screen change hooks), but for now this is fine. Change-Id: I5e4c531b248caa0021664bad9dc196bef60cfbac Reviewed-on: https://cl.tvl.fyi/c/depot/+/10122 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su>
2023-11-25 r/7057 fix(tazjin/emacs): pick new primary monitor when disabling currentVincent Ambo1-3/+15
By default, this will be the (only) remaining monitor. In N>2 situations, ask the user. Change-Id: Id68fcf60d56d0414d1072b8ffeef72c608678f52 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10121 Autosubmit: tazjin <tazjin@tvl.su> Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2023-11-25 r/7056 feat(tazjin/emacs): add interactive commands for configuring screensVincent Ambo1-0/+52
Uses a bunch of weird xrandr invocations and completing reads to configure screens the way I want. Note that this has a known bug where disconnecting a primary screen will *not* make one of the remaining screens primary. Change-Id: Ide5322df446685cc4740d4ddd7b6ca8682375050 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10120 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2023-08-29 r/6533 refactor(tazjin/emacs): refactor LRU workspace list to use ring.elVincent Ambo1-40/+21
This built-in emacs library actually provides a data structure that can work as an LRU list through the existing helper function to move an element to the front of the ring if it already exists. As a result, the code for workspace history moving becomes a lot less brittle and complicated than it was before. No more carefully figuring out when to modify state, just push it in the ring unless it's being rotated already. Change-Id: If354e0618fc5a6d7333776468eec077596cfe9df Reviewed-on: https://cl.tvl.fyi/c/depot/+/9162 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2023-08-29 r/6532 chore(tazjin/emacs): remove EXWM gnome-terminal window naming caseVincent Ambo1-8/+0
I haven't used that since ... 2018 or so, time for it to go. Change-Id: I5e1b729bd553940b98335e3d9c7ca5b134fdf692 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9161 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2023-08-26 r/6529 feat(tazjin/emacs): implement run-xdg-app using gio-list-apps toolVincent Ambo1-1/+1
Change-Id: I43111dfc7091c416035be563ca7fc17265667b33 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9158 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
2023-08-26 r/6526 refactor(tazjin/emacs): ivy,swiper,counsel -> vertico,consultVincent Ambo1-2/+1
vertico and consult are more modern versions of interactive narrowing helpers, as those implemented by ivy and its related packages. The primary differences (and what I care about here) is that they are more focused on integration with the core Emacs primitives, rather than building an ecosystem around them. For example: * vertico enhances `completing-read' and friends, but does not attempt to provide its own ecosystem of functions to *trigger* completions. * vertico integrates with the default `completion-style' system, meaning that I can continue to use things like prescient without extra packages that integrate it with vertico * consult does not rely on vertico or any other specific completion framework (such as counsel/swiper do with ivy), and simply implements its functions using completing-read This reduces the overall amount of code in the dependency closure and leads to a less special setup. Functionality is basically equivalent, except for two things which counsel came with that I will need to substitute: * counsel-notmuch (actually this was a separate package, but I didn't use it much anyways, so just ignoring it for now) * counsel-linux-app (opening desktop shortcuts, this I will need to make) As a side note, consult notes "This package is a part of GNU Emacs", but it doesn't seem to be the case. Change-Id: Ia046b763bf3d401b505e0f6393cfe1ccd6f41293 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9155 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
2023-07-28 r/6445 fix(tazjin/emacs): reset both xrandr outputs correctlyVincent Ambo1-0/+1
Change-Id: I9bc7da159191b60610015cb636b9feebeb74da34 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8987 Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
2023-07-26 r/6444 feat(tazjin/emacs): add screen layout for khamovnik @ homeVincent Ambo1-0/+9
Change-Id: I5e6213c1ebe74dc799f97a6d6c963c71ef29e66f Reviewed-on: https://cl.tvl.fyi/c/depot/+/8986 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2023-07-07 r/6397 feat(tazjin/emacs): update EXWM title naming for ChromiumVincent Ambo1-23/+8
Change-Id: I16f80741f69267863b891d7524c6b1b4d50804a2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8930 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2023-07-03 r/6391 fix(tazjin/emacs): explicitly set xrandr mode for office screenVincent Ambo1-1/+1
Change-Id: I2cc5ce1157a7dd551908bd0beb2fe03295447d80 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8925 Tested-by: BuildkiteCI Autosubmit: tazjin <tazjin@tvl.su> Reviewed-by: tazjin <tazjin@tvl.su>
2023-07-03 r/6390 fix(tazjin/emacs): call exwm-randr-refresh in khamovnik layoutVincent Ambo1-1/+2
Change-Id: Id0347f457cdd0f769fff19659c5a3597efee171f Reviewed-on: https://cl.tvl.fyi/c/depot/+/8924 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI Autosubmit: tazjin <tazjin@tvl.su>
2023-06-30 r/6365 feat(tazjin/emacs): add screen layouts for khamovnikVincent Ambo1-1/+21
Change-Id: I057c996650a48cfafdcba84e1087663e212eadda Reviewed-on: https://cl.tvl.fyi/c/depot/+/8879 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2023-01-03 r/5573 chore(tazjin/emacs): shuffle workspace layout on 2-screen tverskoyVincent Ambo1-2/+2
Change-Id: I5b4baf1f7f971caee90bd30e7c133abf02bd33c8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7737 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su>
2022-06-16 r/4240 chore(tazjin/emacs): keep only one workspace on tverskoy's screenVincent Ambo1-2/+2
this machine is now sort of permanently stationed in the office, and thus permanently connected to the big screen. with this setup, it's comfortable to have it available for a single workspace (e.g. for videos playing there), but it's too confusing and unergonomic to use that screen for anything else. Change-Id: I03556b777c79f68d65d4d8bf1ba1f18982650a8b Reviewed-on: https://cl.tvl.fyi/c/depot/+/5872 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2022-05-07 r/4014 chore(tazjin/emacs): Improve TV screen layout positioningVincent Ambo1-5/+5
Change-Id: Ic9a6b30c04382c57ccb8620786f8f6a091c8e306 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5532 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2022-03-31 r/3925 feat(tazjin/emacs): Add randr layout with TV screen above laptopVincent Ambo1-0/+10
Change-Id: I302f9d86d7325ce97c95fd61deb9ff722f9d0ce1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5426 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
2022-02-23 r/3865 feat(tazjin/emacs): Add #'exwm-jump-to-bufferVincent Ambo1-0/+15
This allows me to jump to a workspace that is already displayed on some buffer. This also interfaces correctly with my back-and-forth jump functionality, setting the variables to allow quick jumping back to the previous buffer via the numerical index of the destination or - of course - via s-b. Change-Id: I25db7535089bcb17b3d61d53030b9154cfeac023 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5323 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su>
2022-02-07 r/3781 fix(tazjin/emacs): allow jumping to front of workspace historyVincent Ambo1-1/+1
Classic off-by-one error. Change-Id: I53e143d900f1d3751ad16b3b33532f32e2c6b411 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5245 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2022-02-07 r/3780 feat(tazjin/emacs): emulate i3's "jump back-and-forth" featureVincent Ambo1-2/+19
this feature makes it so that if you jump to a workspace by index, and then ask to jump that same index again, you end up where you started. this is useful for quickly jumping to something to look at it, and then back. Change-Id: I12f5bba88c0d5b3ae5956d2b6a606f49146551f7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5244 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
2022-02-07 r/3779 feat(tazjin/emacs): implement MRU navigation for exwm workspacesVincent Ambo1-0/+62
this makes it possible to move forwards/backwards in workspace history in the order in which I used them, while tracking the offset (e.g. it is possible to go 3 steps back, do something, then move 2 steps forward again). this should make it possible to learn ad-hoc relative layouts for whatever task i'm working on and reduce the number of times where i frantically flip through all workspaces and try to figure out where anything is. note that this key binding is not very ergonomic, but i've remapped it on my kinesis to the prior/next buttons. i never use those. using <prior>/<next> directly doesn't work because too many modes override them. Change-Id: I257723b9e14a68b53be68539dd752db3445546e7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5243 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
2021-12-24 r/3373 feat(tazjin/emacs): Use Emacs input methods in X11 buffersVincent Ambo1-2/+9
This is much easier than the shitty keyboard layout switcher which caused all kinds of terrifying bugs. Unfortunately the layout switcher remains additionally because this doesn't work with Quassel (Qt dropped support for XIM). Change-Id: I7c58cebf9391216b6e7134d8c283d52cb18332de Reviewed-on: https://cl.tvl.fyi/c/depot/+/3497 Tested-by: BuildkiteCI Autosubmit: tazjin <mail@tazj.in> Reviewed-by: tazjin <mail@tazj.in>
2021-11-13 r/3064 fix(tazjin/emacs): Adjust tverskoy screen layout for TVL officeVincent Ambo1-4/+4
Change-Id: I4d1ad19ee5af52b7f01e1e2003a5c95b5a133865 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3871 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-10-27 r/2992 chore(tazjin/emacs): Remove screen layout configs for VauxhallVincent Ambo1-48/+13
That machine doesn't exist anymore. Some of them are partially retained for use on tverskoy instead, but I've mostly nuked it. Change-Id: Ia358b46353d408798c29c4c90ec06b116b322b5d Reviewed-on: https://cl.tvl.fyi/c/depot/+/3761 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-08-06 r/2705 feat(tazjin/emacs): Add another window title patternVincent Ambo1-0/+2
Change-Id: Ia14fa72e896a9cfc9fab828bead9f7f33763c89b Reviewed-on: https://cl.tvl.fyi/c/depot/+/3276 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-07-14 r/2689 feat(tazjin/emacs): Add layout for external TV on tverskoyVincent Ambo1-1/+11
Change-Id: I6ac9b7180b940ca3018d999500f035245a358079 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3246 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-07-14 r/2688 fix(tazjin/emacs): Enable key bindings for Russian layoutVincent Ambo1-4/+4
Change-Id: I26d0d437c00d927b9244c4aa4a8705681cd212c8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3245 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-23 r/2618 chore: Replace remaining mentions of ##tvl[-dev] with #tvlVincent Ambo1-1/+1
... and fix the capitalisation of hackint Change-Id: I800aef75152d2dc77a33876888e36530143e9d3e Reviewed-on: https://cl.tvl.fyi/c/depot/+/3148 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org>
2021-05-22 r/2609 chore: Replace Freenode mentions with HackIntVincent Ambo1-1/+1
This doesn't replace all of them in the repo, but at least the ones that are relevant to our move. Change-Id: I842e7594b4c16af30d880272417874f6b29afd22 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3134 Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: grfn <grfn@gws.fyi>
2021-03-23 r/2322 feat(tazjin/emacs): Configurable screen lock & brightness adjustmentVincent Ambo1-10/+15
Change-Id: I749ce827c7d53ecf8dec66c1f62481e6ef44791d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2645 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-03-21 r/2310 chore(tazjin/emacs): Use `light` instead of `xbacklight`Vincent Ambo1-2/+2
The latter doesn't work with AMD devices. This will need some changes on one of my non-NixOS machines, unfortunately ... Change-Id: Ib9dfdb9beac67501396a06ea74a0a4371f8ad65e Reviewed-on: https://cl.tvl.fyi/c/depot/+/2628 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-02-19 r/2220 feat(tazjin/emacs): Add layout for reMarkable as primary screenVincent Ambo1-1/+7
Change-Id: I4c10e36250aa112d2dd0cebf4ed41e0b6fd8182d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2539 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-01-19 r/2135 feat(tazjin/emacs): Reset keyboard layout before locking screenVincent Ambo1-7/+9
I managed to lock myself out by having the layout set to Russian while locking the screen. This prevents that from happening. Change-Id: I15780d2a626d96abe0af8db3736fad75034e66d8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2424 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-12-20 r/2021 fix(tazjin/emacs): Bind notmuch shortcuts via EXWMVincent Ambo1-0/+5
Change-Id: I082ee9f75f9e0ef486bc240b4aeda3dec8e79019 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2284 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-12-09 r/1994 refactor(tazjin/emacs): Always use completing-read instead of ivyVincent Ambo1-3/+3
This is a step towards making the completing-read framework more easily interchangeable (I'm eyeing selectrum). Change-Id: I7a066e212a5384136defbba8f11ef9ed57abf22e Reviewed-on: https://cl.tvl.fyi/c/depot/+/2240 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-09-24 r/1816 feat(tazjin/emacs): Add Swedish keyboard layoutVincent Ambo1-0/+2
It's a little easier to use this for Swedish than to compose the ä and ö in the Norwegian layout. Additionally - to avoid problems when switching to keyboards that have no hardware remapping - re-applies the caps:super flip on every layout switch. Change-Id: I1b2c55761514745291d0eeb1502fa503f84f8aa1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2001 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-09-14 r/1786 fix(tazjin/emacs): Gracefully handle irregular Quassel titlesVincent Ambo1-7/+8
Some Quassel dialogues (e.g. popups, or clients that aren't connected yet) don't match the expression and cause errors. This falls back to the raw title for the window if no match is found. Change-Id: I67b9cd7f6e2cb8e3e118d7fb7eeb615380be09d6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1976 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-09-12 r/1785 fix(tazjin/emacs): Include -/& in Quassel channel namesVincent Ambo1-1/+1
Change-Id: Id21de577043fe0fea90ae684a311ac7239714cf8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1974 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-09-09 r/1774 feat(tazjin/emacs): Rename Quassel EXWM windowsVincent Ambo1-0/+14
This gives Quassel buffers sensible titles containing the name of the network the buffer is currently displaying. Ideally it would show me the name of the Quassel Core connection, but this isn't exported from Quassel into the X window title. The regex captures both the channel and the network, but only the network is currently used for display - I may revisit that at some point. Change-Id: Ife4c06919d9e9c0114ff298e1443b2b27ce2f146 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1964 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-07-21 r/1416 fix(tazjin/frog): Flip order of screens aroundVincent Ambo1-6/+6
I switched the physical connectors of these to avoid having the boot & disk unlocking process happen on the vertical screen. Change-Id: Iaf0be5edd145aa763437e2352438ee11c8d64c3d Reviewed-on: https://cl.tvl.fyi/c/depot/+/1335 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-07-16 r/1319 feat(tazjin/emacs): Rotate left screen counterclockwiseVincent Ambo1-2/+2
Change-Id: I0318e394b32c341a04471f687ee4c6d5beb29cd1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1214 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-06-24 r/1072 fix(tazjin/frog): Explicitly use amdgpu driverVincent Ambo1-7/+7
This ends up using the same driver, but generates saner display names somehow. Who knows what's going on there. FWIW, it didn't help with the font weight issue. Change-Id: Ib6161088b23109f4f0e24b8a87c478ad274df4d6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/566 Reviewed-by: tazjin <mail@tazj.in>
2020-06-18 r/1025 chore(tazjin/emacs): Move //tools/emacs to //users/tazjin/emacsVincent Ambo1-0/+249
Change-Id: I9dfbd0bb1fd3e215bb91c5734fb0934ee3faeae6