Pressing the actual number of the desktop is more productive than
tabbing between them since you associate the hand movement with that
workspace, making it easier to return to later.
Super+tab, in contrast, was one hand movement that resulted in many
different results, which wasn't so good for memorizing which desktop has
what.
Although removing these dotfiles gave the repository a clean feeling, it
made it significantly harder to resume using a certain window manager or
other tool at any time.
Instead of removing dotfiles entirely, it's enough to simply not install
the programs you don't want to use, or even install them but not open
them.
What a ride. Although I absolutely loved configuring my keybinds through
sxhkd, more so than i3 / sway and similar window managers, I didn't
realize that most of what I was doing under bspwm could also be
accomplished under GNOME through gsettings.
At some point I added libinput-gestures to my setup to replicate the
touchpad gestures I loved so much on GNOME. Although this was cute, such
gestures lacked the animations from GNOME and would even stop working
entirely from time to time. It is for this reason that I created a keybind
specifically to reload libinput-gestures.
Although this was cute and allowed us to open links in any browser from
anywhere on the computer, in practice this "ability" wasn't that useful.
In the event that looking up words is needed, it's easier to open or
switch to qutebrowser and use its search feature instead of trying to
remember which keybinding is which.
One solution for the future would be to synchronize qutebrowser search
engines with a rofi/dmenu-like selection screen, which would solve the
problem of not remembering which keybind is which. Frequently used
search engines would be higher on the list and would require less or no
typing beyond <CR> after the initial prompt.
alttab <https://github.com/sagb/alttab> is a cool alternative to the
more traditional ways of managing windows in bspwm that lets us focus on
the currently open windows instead of which desktop they're on.
Note that I originally used this as a test to see how useful it would
be, however I quickly realized that having unpredictable desktop states
is not ideal, especially when not using a status bar like polybar.
The code was shared as a solution to a post on r/bspwm. Credits to the
original author, however I plan to ditch this solution for more
predictable desktop management.
I personally love this setup for language learning and it emphasizes how
far one can go with customizing their setup when using a window manager
like bspwm + sxhkd. Although it's possible to achieve the same effect in
other desktop environments, sxhkdrc makes adding new keybinds extremely
simple and easy to maintain.
In the future it may be nice to automatically add a selection of
backgrounds that can be rotated through, or support getting those
images from an external source.
This change has 3 main benefits:
1. We no longer have to worry about switching between the fn keys and
F1-F12 keys, and can benefit from both keybinds at the same time.
2. Keys that don't return anything under xev (such as the chat icon and
telephone icons) can now be customized.
3. We no longer have to worry about accidentally pressing the networking
key that disables the internet connection.
Note that instead of having to remember to switch between fn and non-fn
keys, especially when working with both at the same time, we can simply
map commands that would use those fn keys with super instead.
In this way, we no longer have to worry about the same keystroke performing
a different command. The current commit serves as an easy way to remember
what the existing fn keys were if needed.
Since selections are more likely to be temporary than full screen
screenshots, copying their contents to clipboard by default is useful,
although in the future it may be more practical to create an image and
copy to clipboard at the same time, similar to other screenshotting
tools like ShareX.
As much as rofi-pass may appear to be useful, it is simply easier to
just use the pass command directly, especially if you have a passphrase
set on the private encryption key you use to unlock passwords.
Although rofi-calc was certainly cool to use, it is not in the
official repositories. Instead of trying to rely on it as a
dependency, I've gone ahead and removed it instead.
This gives the task of setting environment variables to rofi's
launch.sh, instead of trying to do it in sxhkdrc.
Another benefit is that rofi can be launched properly from anywhere,
regardless of whether or not sxhkd is being used.
Note that window order is not based on the order in which windows are
hidden, but something else entirely. For this reason, it is recommended
to hide only one window at once.
A more robust solution would be to let the user choose from a list of
available hidden windows, potentially through rofi's dmenu capability.
It turns out that placing similar config files (i.e. bspwm-related) in
the same directory is not the way to go about handling dotfiles since
each config file (or dotfile) *should* manipulate only a single program.
This was not the case back when I used urxvt (which would require the
old method of .Xresources), but now that I understand more about how
*modern* dotfiles work (with $XDG_CONFIG_HOME), separating dotfiles by
program became the obvious choice.
There are many dotfiles that we don't have to worry about when using a
desktop environment like Plasma or Xfce. These dotfiles are bspwm
specific and should all be stowed at the same time when stowing bspwm.