Commit graph

77 commits

Author SHA1 Message Date
6106cfcbde
kanshi: Fix transform change between vertical and normal docked mode
Since I have two configurations for my dual-screen desktop setup, with
one having the two screens side-by-side and the other having the left
screen vertically rotated 90 degrees, I need two different kanshi
setups.

The vertical setup is called 'dockedvert' and is the default when the
two screens are detected. The horizontal setup is only called 'docked'
and can be switched to manually. Before, it would not correctly revert
the left screen from its vertical 90 degree rotation when going from the
vertical setup to the horizontal one.

So I applied the `transform` output directive but kanshi refused to
start. That is because to revert the transform into the default
horizontal position you do not use `0` but `normal` as the value.
With this fix everything works as expected.
2025-09-27 11:17:57 +02:00
c2e64a17e0
mako: Include color configuration
Include the color config for mako from ~/.local/state/mako/style instead
of hardcoding it or templating it into the config file.

This means we have to ensure the directory and file exist before running
mako which we do with an `env.d` startup script.
2025-09-24 08:24:52 +02:00
44d76725cc
kanshi: Change internal output position for dockedall 2025-09-03 12:59:02 +02:00
8005f034d1
kanshi: Add vertical docked configuration 2025-09-03 12:59:01 +02:00
47736f5941
kanshi: Add aliases to config 2025-09-03 12:59:01 +02:00
89e1c20358
waybar: Fix keepawake module
Was displaying the wrong way round (no coffee on staying awake and coffe
on automatically going to sleep), and removed some useless variable
setting.
2025-06-19 15:57:39 +02:00
75fcc025f9
waybar: Improve keepawake module
Improved display - can be always-on, with toggling idle management
on-and-off on a click.
2025-06-13 12:24:57 +02:00
03f85fd958
waybar: Add keepawake module
Shows if the pc will not automatically turn off screen or suspend.
Figures this out by checking for `swayidle` process, so that is
required. Turns on suspend again on click, and uses voidlinux `sv` user
service for it, so those have to be set up.
2025-06-12 22:01:18 +02:00
d91bc46d75
river: Add output quick switch script
Invoked by `MOD+SHIFT+O` (for '[O]utput'), it greps the kanshi
configuration file for existing profiles and allows you to select one
which kanshi tries to apply. Can be a little buggy, though due to kanshi
and not the plugin (sometimes failing to re-activate turned off screens
etc).
2025-06-09 14:38:15 +02:00
ff7863b011
river: Move hotkey for qute history to H
To prepare for output switch hotkey and since '[H]istory' makes more
sense, we switch it to `MOD+SHIFT+H`.
2025-06-09 14:38:15 +02:00
2c72d2ee1f
river: Set Adwaita xcursor theme if available
Currently we do not set any cursor theme in our river compositor. This
commit changes it to be set if the Adwaita/cursor icon directory is
available.

This does _not_ mean all applications will use Adwaita cursors
unfortunately. In Wayland applications themselves decide what to do, so
some applications do not respect the setting, e.g. GTK applications.

See the following links for more info: 

https://reddit.com/r/voidlinux/comments/wnfwy5/some_apps_not_inheriting_mouse_cursor_theme/

https://codeberg.org/river/wiki

https://codeberg.org/river/river/issues?state=all&type=all&labels=&milestone=0&project=0&assignee=0&poster=0&q=xcursor
2025-05-09 10:38:50 +02:00
2e9701ea26
services: Fix missing environment variables for user services
We add an additional 'core' user service (i.e. one that gets loaded
before all others by turnstile) which populates the TURNSTILE_ENV_DIR
with all manner of custom set env vars that are important for other
applications.

Most importantly, this sets up the XDG directory compliance for
applications either managed by turnstile or applications started through
turnstile on my system. So, for example `pass` knows to search for its
database in `XDG_DATA_HOME` and river knows to search for binaries in a
PATH which has been prefixed with my custom user binary location.
2025-03-19 21:30:00 +01:00
ea066eebb5
waybar: Fix event module spacing
Added a new state which should fix the icon spacing issues:

When we have no upcoming events or upcoming events but none today, we
only display the icon and so we do not add any additional spacing.
(This is alt state `event` or `no-event`)

Only if we have an upcoming event today (alt state `event-today`) are we
printing it directly on the status bar and only then should be have
additional spacing. So we have an icon (the same as for event) with the
correct spacing so that whether there is text on the statusbar or not,
we space correctly.
2025-03-10 20:22:01 +01:00
554e13cd36
river: Fix pass-pick invocation
Running pass-pick (or other gpg requiring software) through river was
not correctly accessing the gpg agent since being managed by runit user
service did not point them to the correct gpg agent socket.

This commit fixes it using keychain as auxiliary software to manage a
session-long gpg agent process which is also exported into the turnstile
environment so other runit services can make use of it.
2025-03-10 20:22:00 +01:00
270a6f1e0d
waybar: Remove event module spacing
Removed spacing left over when an event was occuring on the current day.
2025-03-06 21:22:00 +01:00
343c1f0a35
river: Use built-in option to set compose key
So far, we used the external `setxkbmap` tool to map the compose key to
the 'menu' button (AltGr on my keyboard). With this I am able to type
äöü€ß.

Now using the built-in option in riverctl which I just discovered, so we
rely on fewer external programs.

Also setting the keyboard itself to 'us(altgr-intl)' which I _think_ I
had enabled before. If it turns out not, well, can always change back to
us layout with a single line.
2025-03-06 21:22:00 +01:00
2627055e7c
swaybg: Fix single screen wallpaper display 2025-03-06 21:21:58 +01:00
f252c628ec
powermenu: Remove hybrid-suspend
Hybrid suspending is not working for my system currently (definitely
TODO). For the time being, we simply suspend only instead.
2025-03-06 21:21:56 +01:00
c00cbdbade
services: Add swayidle processing as service
swayidle is now also presented as a user service managed by runit on
voidlinux. It comes with the same defaults as before (300 seconds to
lockscreen, 600 seconds to screen dimming and 900 seconds before
suspending).

Additionally the lockscreen script has been updated to correctly tell a
wayland from a non-wayland session without logind being available on the
system, though it still defaults to using loginctl if it finds it.

The service runs as swayidle in the user services directory and can be
confirured using a 'conf' file which would be placed in the 'swayidle'
service directory. Timeouts can be set with `time_to_lockscreen`,
`time_to_screendim` and `time_to_suspend`.
2025-02-25 23:25:30 +01:00
a3f30cf228
services: Add desktop environment programs as user services
Added a runit-managed kanshi, swaybg, waybar, wl-paste and wlsunset
service.
2025-02-25 23:25:27 +01:00
e08f88db9c
services: Move pipewire into user service
Will be managed by runit service manager under voidlinux.
2025-02-25 23:25:27 +01:00
7c0bd5738f
river: Change to runit-managed user service
Switching to runit (and turnstiled, which in turn activates user-local
runit service supervision) we can now have river run supervised by our
service manager quite easily.

We make use of this, but have to take care to export the
river-established wayland variables (DISPLAY, WAYLAND_DISPLAY) back into
the user environment for other processes since river will not be the
one responsible for spawning them anymore.

On finishing the service (i.e. exiting the process), we ensure
that the variables get removed from the environment again so it is not
polluted in the future.

Additionally, we load the (default for void runit) 'turnstile-ready'
service which can define core user services that need to exist before
others on login, and the session-local dbus service which river and
other programs will make use of. It is marked as essential with
turnstile-ready.
2025-02-25 23:25:26 +01:00
1aa94aa866 HACK: river: Autostart pipewire on non-systemd systems
This is a temporary adjustment to start pipewire as a user process when
river starts up, targeting my new voidlinux installation. Ideally, we
want to have runit user services up and running and being responsible
for maintaining a running pipewire instance but until that is set up we
can simply start it with river.
2025-02-24 14:22:36 +01:00
e3742d43ec fonts: Fix for Iosevka on Voidlinux
Prefer regular 'Iosevka' font in most cases, not the highly specific
'Iosevka Nerd Font'. This may break some things back in Archlinux-land
but it is required for iosevka to be correctly displayed in Voidlinux,
and, to be honest, also feels more clean than using such a highly
specialized font for everything.

Additionally, we generally make use of both where possible, defaulting
to the more specific 'Nerd Font' family variant but falling back to
regular old Iosevka.

One exception is 'wezterm' which, though it nicely includes a font
fallback option (and a very configurable one at that), _always_ produces
a warning when the first font in a fallback list is not found -- even
when the specific 'warn_about_missing_glyphs' option is ticked. No clue
why but for now this works well enough for me.
2025-02-24 14:22:36 +01:00
dd62c8a2d0 river: Automatically choose layout engine
Prefers filtile as layouting engine but falls back to rivertile if it
does not find it.
2025-02-23 01:02:57 +01:00
c19dbefb2c
river: Add init reload without program restarts
By passing the 'no-restart' argument as the first parameter of the river init
file, we can prevent program restarting which we do not want to have restarted
every time (e.g. kanshi, wlsunset, waybar, swayidle, etc)

By default these programs will still always be restarted. However, passing the
parameter means that if the program is already running, we do not restart it.
If the program is not yet running it will still be started like normally.

The functionality makes use of the `pidof` program, so on Arch it requires the
'procps-ng' package. This is by default installed as a requirement for the
'base' package group.


Reverted changes from earlier wallpaper switch.
2025-02-14 10:48:01 +01:00
1ab2b3a94f
river: Change to swaybg for stable wallpaper setting
Multi-output wallpaper setting was never particularly stable using swww.

Using swaybg we can directly call on the 'description' of the outputs
like we do in kanshi. This makes the interface way more stable than
hoping that 'DP-3' and or 'DP-5' are discovered first. Thus, we default
to use swaybg and my screens, but if the program is not found on the
system we can still fall back to swww.
2025-02-14 10:48:00 +01:00
1c49e52268
river: Update for current screen setup
HACK Still need to figure out a better way to identify and set displays.
2025-02-07 13:13:47 +01:00
b64116fac7
waybar: Switch tray and battery placement
Battery will always be displayed on the very right of the status bar
now, to easily find the indicator. Also removed the remaining time from
the alternative display which snuck in there accidentally - it can be
seen from the tooltip instead.
2025-01-24 11:31:29 +01:00
6002c49a16
waybar: Make alt formats consistent
Every notification icon (except wifi) has a more detailed alternative
display format which can be toggle with right click. By default only the
icons are displayed.
2025-01-23 16:48:49 +01:00
7f35be07f7
waybar: Declutter status icons
Slightly declutter the status icons: Only display an icon which shows
the rough state until you hover over or activate alternative modes
(rightclick on respective icon) which show more detail.
2025-01-21 11:31:29 +01:00
5dff1db3db
river: Add monocle mapping if running filtile layout
When using filtile layout it also gives the option of using 'monocle'
mode which is similar to fullscreen in that it only shows one window at
a time (which also occupies the full screen, except for the statusbar)
but you can cycle between the windows shown as you would usually between
the different views in a tag. You can imagine the windows 'stacked' on
top of each other and cycling which one is on top or on the bottom.

Toggled with `Mod+Shift+F`, shifting up from fullscreen mode.

TODO: Ideally, it would be accompanied by an indicator in the statusbar
but I have no time to create one currently. Without one, it is sometimes
hard to remember that other windows exist on the tag after a while.
2024-09-16 20:33:17 +02:00
19bafa910e
river: Improve floating mode mappings
Simplify the system of mappings in floating:

- HJKL for moving a floating window around.
- C-HJKL for quickly snapping to screen edges (as before)
- Mod-HJKL for resizing the floating window.
- Mod-Shift-HJKL for changing the tag's setting:
  - HL to change size ratio of main/side pane
  - JK to change amount of windows in main pane
2024-09-16 20:29:55 +02:00
1cc47ac7df
river: Add passhthrough mode to disable river keys
`super+F11` enters passthrough mode (displayed on waybar) which disables
all normal keybinds that river listens to and - surprise - passes them
through to whatever application is running. The same binding exits the
mode.
2024-09-16 20:11:56 +02:00
0d41481763
river: Fix filter rules for new version
Riverwm changed the way filters are applied at some point, this fixes
the applied rules (for floating and client side decoration windows).
2024-09-15 22:06:46 +02:00
d9779ba966
papis: Remove test journal csv 2024-08-07 20:02:13 +02:00
63cc63bb70
river: Add quick emergency clipboard clear shortcut
Use `Mod+Shift+Control + Space` to clear all. Basically is the same
shortcut as *showing* the clipboard, only with control pressed on
additionally.
2024-07-29 22:54:58 +02:00
017668792c
waybar: Improve vpn block icon rendering
This is a change which is very much hardcoded for my setup, but the vpn
block will now give preference to displaying individual VPN types from
top to bottom:

If privateinternetaccess is connected, it will display its icon.
If proton is connected, it will display its icon.
If netbird is connected it will display its icon.
If nothing is connected it will display nothing.

It is still quite a hacky solution and should also be replaced by a
signal-driven system instead of the recurrent polling it does currently
(it only polls once a minute atm, to keep system load/battery drain low
but since it invokes a lot of external commands, e.g. piactl and
netbird, it should really only be invoked on vpn changes).
2024-07-26 10:56:36 +02:00
12d186d871
waybar: Improve events block icon rendering
Using the 'alt' json return field to set the icon and change the icon
within waybar itself instead of doing so manually in the script. This
makes us a little more flexible and puts all the 'what' is rendered that
is specific to waybar into waybar (keeping the 'how' it's rendered in
the style.css).
2024-07-25 22:15:12 +02:00
6905ce3ea7
waybar: Change calendar block whitespace
When there are no new calendar events for the current day we do not
display any whitespace after the icon.
2024-07-25 22:01:50 +02:00
670057d543
river: Fix variable quoting 2024-06-14 22:01:56 +02:00
107a07693e
flavours: Fix zathura colorscheme file naming
In preparation for at some point leaving flavours in favour of tinty
(since flavours is not maintained anymore), started preparing a rough
translation of the config file for the new program. One of the things I
changed (to make more semantic sense) is the zathura colorscheme file
name.
2024-06-13 16:57:34 +02:00
d1ef6584f1
river: Refactor layout engine definition
Since we can dynamically define and spawn layout engines this commit
changes the riverwm config file setup in a way that makes it possible to
change the layout engine with a single variable instead of all
throughout the file (variable extraction).
2024-06-13 16:32:15 +02:00
6e9056d5ca
vimiv: Add basic configuration 2024-06-13 10:21:38 +02:00
d0a2853bf2
flavours: Add fzf styling
Added styling for fzf using the base16 schemes. Currently applies only
on newly opened shell environments but that's good enough for me.
2024-06-13 10:20:40 +02:00
6defdd3f33
kanshi: Fix screen names for new kernel 2024-04-20 08:40:56 +02:00
6c6b01a822
river: Add shortcut to open papis library items
Added 'Mod+Shift+L' as shortcut to open the associated file of a
papis library item. May make more sense in a dedicated river
mode but for now is good enough to get an overview of papis items
and open them if needed. Could also probably use an equivalent
of 'open edit file' and 'open note if exists' but again -
let's see how much I use it first.

Takes a second to open with my library size.
2024-02-24 09:10:37 +01:00
ffededb995
river: Fix wallpaper screen order
Since reorganizing my screens we have to switch the output
order of wallpapers. Would be really useful to be able to
talk to `swww` like kanshi with the full screen ID instead
of just the output number for wallpaper setting.
2024-02-24 09:08:44 +01:00
1d0f47f2e8
flavours: Check for nvim plugin existence in template
Checks that mini.base16 plugin exists before executing its setup,
and checks that lualine exists before executing its setup.
2024-02-15 08:47:50 +01:00
cf153808a2
nvim: Switch to mini base16 plugin
Since we already have the mini library installed in our setup, we don't
need to make use of external base16 plugins. It provides the same exact
functionality, and seems slim and bug-free. Nothing changes for the
user, but we have 1 plugin less to take care of (and it was
mis-behaving in new versions anyway).

Also set lualine to be reloaded on theme switch so it takes on the
colorscheme as well.
2024-02-10 13:27:37 +01:00