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.
This commit adds a "secondary" bar type, which takes up the entire
available space horizontally. Alternatively, use the main bar if you
want to go for a floating appearance instead.
polybar:
- Properly referenced all the xrdb colors
- Decreased the height of the bar to 85 while floating
- Made the border color translucent
- Added line-size (gives line emphasis to modules)
bspwm:
- Decreased window_gap (aka increased the working space)
- Added presel_feedback_color (used when selecting where to open
new windows)
sxhkd:
- Added super + shift + return to start a new tmux session
- Updated polybar show / hide with new top_padding value
- Added keybind for the private flag