Compare commits

...

11 commits

Author SHA1 Message Date
2b1ca4fd03
migrate to zig 0.4.0/kwm 2026-03-29 00:46:55 -04:00
3ec6ae5a2c
simplified tmux config 2026-03-29 00:46:42 -04:00
010710e581
zig 2026-03-29 00:46:35 -04:00
b426e9ab60
updated fish plugins 2026-03-29 00:46:18 -04:00
398ba012ec
trying out sioyek 2026-03-05 19:43:35 -05:00
0c44fef84b
emacs and neovim colorscheme stuff 2026-03-05 19:42:40 -05:00
20b5ad6486
bitwarden 2026-03-05 19:42:33 -05:00
1ced75c06c
i guess foot got updated 2026-03-05 19:42:19 -05:00
3fffea392a
fixed some stuff with waybar 2026-03-05 19:42:04 -05:00
c2764148c9
new river scripts 2026-03-05 19:41:33 -05:00
9144c31f2c
dunst 2026-03-05 19:41:17 -05:00
36 changed files with 4110 additions and 288 deletions

501
dunst/.config/dunst/dunstrc Normal file
View file

@ -0,0 +1,501 @@
# See dunst(5) for all configuration options
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = none
### Geometry ###
# The width of the window, excluding the frame.
# dynamic width from 0 to 300
# width = (0, 300)
# constant width of 300
width = 300
# The height of a single notification, excluding the frame.
# dynamic height from 0 to 300
height = (0, 300)
# constant height of 300
# height = 300
# NOTE: Dunst from version 1.11 and older don't support dynamic height
# and the given value is treated as the maximum height
# Position the notification in the top right corner
origin = top-right
# Offset from the origin
# NOTE: Dunst from version 1.11 and older use this alternative notation
# offset = 10x50
offset = (10, 10)
# Scale factor. It is auto-detected if value is 0.
scale = 0
# Maximum number of notification (0 means no limit)
notification_limit = 20
### Progress bar ###
# Turn on the progress bar. It appears when a progress hint is passed with
# for example dunstify -h int:value:12
progress_bar = true
# Set the progress bar height. This includes the frame, so make sure
# it's at least twice as big as the frame width.
progress_bar_height = 10
# Set the frame width of the progress bar
progress_bar_frame_width = 1
# Set the minimum width for the progress bar
progress_bar_min_width = 150
# Set the maximum width for the progress bar
progress_bar_max_width = 300
# Corner radius for the progress bar. 0 disables rounded corners.
progress_bar_corner_radius = 0
# Define which corners to round when drawing the progress bar. If progress_bar_corner_radius
# is set to 0 this option will be ignored.
progress_bar_corners = all
# Corner radius for the icon image.
icon_corner_radius = 0
# Define which corners to round when drawing the icon image. If icon_corner_radius
# is set to 0 this option will be ignored.
icon_corners = all
# Show how many messages are currently hidden (because of
# notification_limit).
indicate_hidden = yes
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.). (X11 only)
transparency = 0
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
# If gap_size is greater than 0, this setting will be ignored.
separator_height = 2
# Padding between text and separator.
padding = 8
# Horizontal padding.
horizontal_padding = 8
# Padding between text and icon.
text_icon_padding = 0
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 2
# Defines color of the frame around the notification window.
frame_color = "#f5c2e7"
# Size of gap to display between notifications - requires a compositor.
# If value is greater than 0, separator_height will be ignored and a border
# of size frame_width will be drawn around each notification instead.
# Click events on gaps do not currently propagate to applications below.
gap_size = 10
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Sort type.
# possible values are:
# * id: sort by id
# * urgency_ascending: sort by urgency (low then normal then critical)
# * urgency_descending: sort by urgency (critical then normal then low)
# * update: sort by update (most recent always at the top)
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
# A client can set the 'transient' hint to bypass this. See the rules
# section for how to disable this if necessary
# idle_threshold = 120
### Text ###
font = Iosevka Nerd Font 15
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <https://docs.gtk.org/Pango/pango_markup.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %c category
# %S stack_tag
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% literal %
# Markup is allowed
format = "<b>%s</b>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Vertical alignment of message text and icon.
# Possible values are "top", "center" and "bottom".
vertical_alignment = center
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Specify where to make an ellipsis in long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Stack together notifications with the same content
stack_duplicates = true
# Hide the count of stacked notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Recursive icon lookup. You can set a single theme, instead of having to
# define all lookup paths.
enable_recursive_icon_lookup = true
# Set icon theme (only used for recursive icon lookup)
icon_theme = Adwaita
# You can also set multiple icon themes, with the leftmost one being used first.
# icon_theme = "Adwaita, breeze"
# Align icons left/right/top/off
icon_position = left
# Scale small icons up to this size, set to 0 to disable. Helpful
# for e.g. small files or high-dpi screens. In case of conflict,
# max_icon_size takes precedence over this.
min_icon_size = 32
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 128
# Paths to default icons (only necessary when not using recursive icon lookup)
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/bin/bemenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/xdg-open
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst (X11 only)
title = Dunst
# Define the class of the windows spawned by dunst (X11 only)
class = Dunst
# Define the corner radius of the notification window
# in pixel size. If the radius is 0, you have no rounded
# corners.
# The radius will be automatically lowered if it exceeds half of the
# notification height to avoid clipping text and/or icons.
corner_radius = 0
# Define which corners to round when drawing the window. If the corner radius
# is set to 0 this option will be ignored.
#
# Comma-separated list of the corners. The accepted corner values are bottom-right,
# bottom-left, top-right, top-left, top, bottom, left, right or all.
corners = all
# Ignore the dbus closeNotification message.
# Useful to enforce the timeout set by dunst configuration. Without this
# parameter, an application may close the notification sent before the
# user defined timeout.
ignore_dbusclose = false
### Wayland ###
# These settings are Wayland-specific. They have no effect when using X11
# Uncomment this if you want to let notifications appear under fullscreen
# applications (default: overlay)
# layer = top
# Set this to true to use X11 output on Wayland.
force_xwayland = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
### mouse
# Defines list of actions for each mouse event
# Possible values are:
# * none: Don't do anything.
# * do_action: Invoke the action determined by the action_name rule. If there is no
# such action, open the context menu.
# * open_url: If the notification has exactly one url, open it. If there are multiple
# ones, open the context menu.
# * close_current: Close current notification.
# * remove_current: Remove current notification from history.
# * close_all: Close all notifications.
# * context: Open context menu for the notification.
# * context_all: Open context menu for all notifications.
# These values can be strung together for each mouse event, and
# will be executed in sequence.
mouse_left_click = close_current
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
# Pause notification timeout when mouse hovers over the notification window.
# When enabled, notifications won't timeout while the mouse pointer is over
# them. The timeout resumes when the pointer leaves the window.
# Only works on Wayland.
pause_on_mouse_over = false
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#1e1e2e"
foreground = "#cdd6f4"
timeout = 5
# Icon for notifications with low urgency
default_icon = dialog-information
[urgency_normal]
background = "#1e1e2e"
foreground = "#cdd6f4"
timeout = 5
override_pause_level = 30
# Icon for notifications with normal urgency
default_icon = dialog-information
[urgency_critical]
background = "#fab387"
foreground = "#cdd6f4"
timeout = 5
override_pause_level = 60
# Icon for notifications with critical urgency
default_icon = dialog-warning
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
#
# Messages can be matched by
# appname (discouraged, see desktop_entry)
# body
# category
# desktop_entry
# icon
# match_transient
# msg_urgency
# stack_tag
# summary
#
# and you can override the
# background
# foreground
# format
# frame_color
# fullscreen
# new_icon
# set_stack_tag
# set_transient
# set_category
# timeout
# urgency
# icon_position
# skip_display
# history_ignore
# action_name
# word_wrap
# ellipsize
# alignment
# hide_text
# override_pause_level
#
# Shell-like globbing will get expanded.
#
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
# GLib based applications export their desktop-entry name. In comparison to the appname,
# the desktop-entry won't get localized.
#
# You can also allow a notification to appear even when paused. Notification will appear whenever notification's override_pause_level >= dunst's paused level.
# This can be used to set partial pause modes, where more urgent notifications get through, but less urgent stay paused. To do that, you can override the following in the rules:
# override_pause_level = X
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
# Disable the transient hint so that idle_threshold cannot be bypassed from the
# client
#[transient_disable]
# match_transient = yes
# set_transient = no
#
# Make the handling of transient notifications more strict by making them not
# be placed in history.
#[transient_history_ignore]
# match_transient = yes
# history_ignore = yes
# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
# If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
# withdrawn from screen again and will get delayed like a new notification
#[fullscreen_delay_everything]
# fullscreen = delay
#[fullscreen_show_critical]
# msg_urgency = critical
# fullscreen = show
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# skip_display = true
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[skip-display]
# # This notification will not be displayed, but will be included in the history
# summary = "foobar"
# skip_display = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
#[stack-volumes]
# appname = "some_volume_notifiers"
# set_stack_tag = "volume"
#

View file

@ -113,33 +113,33 @@
** Theme
*** Modus Themes
#+begin_src emacs-lisp
(use-package emacs
:ensure nil
:config
(require-theme 'modus-themes)
(setq modus-themes-italic-constructs t
modus-themes-bold-constructs t
modus-themes-links '(no-underline background faint)
modus-themes-prompts '(bold intense)
modus-themes-mode-line '(borderless accented moody)
modus-themes-org-blocks 'gray-background
modus-themes-region '(bg-only no-extend))
(load-theme 'modus-operandi :no-confirm))
;; (use-package emacs
;; :ensure nil
;; :config
;; (require-theme 'modus-themes)
;; (setq modus-themes-italic-constructs t
;; modus-themes-bold-constructs t
;; modus-themes-links '(no-underline background faint)
;; modus-themes-prompts '(bold intense)
;; modus-themes-mode-line '(borderless accented moody)
;; modus-themes-org-blocks 'gray-background
;; modus-themes-region '(bg-only no-extend))
;; (load-theme 'modus-operandi :no-confirm))
#+end_src
*** Autodark
#+begin_src emacs-lisp
(use-package auto-dark
:ensure t
:custom
(auto-dark-themes '((modus-vivendi) (modus-operandi)))
:init (auto-dark-mode))
;; (use-package auto-dark
;; :ensure t
;; :custom
;; (auto-dark-themes '((modus-vivendi) (modus-operandi)))
;; :init (auto-dark-mode))
#+end_src
*** Catpuccin
#+begin_src emacs-lisp
;; (use-package catppuccin-theme
;; :init (setq catppuccin-flavor 'mocha)
;; :config
;; (load-theme 'catppuccin :no-confirm))
(use-package catppuccin-theme
:init (setq catppuccin-flavor 'mocha)
:config
(load-theme 'catppuccin :no-confirm))
#+end_src
** Ultra Scroll
#+begin_src emacs-lisp
@ -433,6 +433,9 @@ I don't really use markdown ([[Org Mode]] is a strict improvement imo), but it's
#+end_src
* Org Mode
** Org itself
#+begin_src elisp
(package-vc-install '(org-mode :url "https://code.tecosaur.net/tec/org-mode" :branch "dev"))
#+end_src
I use [[https://abode.karthinks.com/org-latex-preview/][this]] fork of org-mode in order to have amazing latex previews. /Make sure to follow the installation instructions!/ It's supposed to eventually be merged into org proper, which is very exciting. I'm already pretty dependent on this feature (the previews are just that good), so I'll have to use this until it gets merged, but that's fine with me.
#+begin_src emacs-lisp
(use-package org-mode

View file

@ -9,7 +9,6 @@ end
# This variable is global so that it can be referenced by fzf_configure_bindings and in tests
set --global _fzf_search_vars_command '_fzf_search_variables (set --show | psub) (set --names | psub)'
# Install the default bindings, which are mnemonic and minimally conflict with fish's preset bindings
fzf_configure_bindings

View file

@ -38,6 +38,9 @@ set -x XDG_CACHE_HOME $HOME/.cache
set -x XDG_CONFIG_HOME $HOME/.config
set -x XDG_DATA_HOME $HOME/.local/share
# set up bitwarden ssh-agent
set -x SSH_AUTH_SOCK $HOME/.bitwarden-ssh-agent.sock
# set some environment variables
set -x MANPAGER "less -R --use-color -Dd+r -Du+b"
set -x EDITOR nvim

View file

@ -1,9 +1,9 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR --export FZF_DEFAULT_OPTS:\x2d\x2dcolor\x3dbg\x2b\x3a\x23313244\x2cbg\x3a\x231e1e2e\x2cspinner\x3a\x23f5e0dc\x2chl\x3a\x23f38ba8\x20\x2d\x2dcolor\x3dfg\x3a\x23cdd6f4\x2cheader\x3a\x23f38ba8\x2cinfo\x3a\x23cba6f7\x2cpointer\x3a\x23f5e0dc\x20\x2d\x2dcolor\x3dmarker\x3a\x23f5e0dc\x2cfg\x2b\x3a\x23cdd6f4\x2cprompt\x3a\x23cba6f7\x2chl\x2b\x3a\x23f38ba8
SETUVAR --export GPG_TTY:not\x20a\x20tty
SETUVAR --export GPG_TTY:/dev/pts/0
SETUVAR --export SSH_AGENT_PID:786479
SETUVAR --export SSH_AUTH_SOCK:/tmp/ssh\x2dXXXXXXkRTHwG/agent\x2e786475
SETUVAR --export SSH_AUTH_SOCK:/home/wball/\x2ebitwarden\x2dssh\x2dagent\x2esock
SETUVAR ZO_CMD:zo
SETUVAR Z_CMD:z
SETUVAR Z_DATA:/home/wball/\x2elocal/share/z/data

View file

@ -3,10 +3,8 @@ function _fzf_extract_var_info --argument-names variable_name set_show_output --
# Extract only the lines about the variable, all of which begin with either
# $variable_name: ...or... $variable_name[
string match --regex "^\\\$$variable_name(?::|\[).*" <$set_show_output |
# Strip the variable name prefix, including ": " for scope info lines
string replace --regex "^\\\$$variable_name(?:: )?" '' |
# Distill the lines of values, replacing...
# [1]: |value|
# ...with...

View file

@ -24,7 +24,6 @@ function _fzf_search_directory --description "Search the current directory. Repl
set -f file_paths_selected ($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments)
end
if test $status -eq 0
commandline --current-token --replace -- (string escape -- $file_paths_selected | string join ' ')
end

View file

@ -1,17 +1,18 @@
function fisher --argument-names cmd --description "A plugin manager for Fish"
set --query fisher_path || set --local fisher_path $__fish_config_dir
set --local fisher_version 4.4.5
set --local fisher_version 4.4.8
set --local fish_plugins $__fish_config_dir/fish_plugins
switch "$cmd"
case -v --version
echo "fisher, version $fisher_version"
case "" -h --help
echo "Usage: fisher install <plugins...> Install plugins"
echo " fisher remove <plugins...> Remove installed plugins"
echo " fisher update <plugins...> Update installed plugins"
echo " fisher update Update all installed plugins"
echo " fisher list [<regex>] List installed plugins matching regex"
echo "Usage: fisher install <plugins...> Install plugins"
echo " fisher remove <plugins...> Remove installed plugins"
echo " fisher uninstall <plugins...> Remove installed plugins (alias)"
echo " fisher update <plugins...> Update installed plugins"
echo " fisher update Update all installed plugins"
echo " fisher list [<regex>] List installed plugins matching regex"
echo "Options:"
echo " -v, --version Print version"
echo " -h, --help Print this help message"
@ -19,9 +20,11 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
case ls list
string match --entire --regex -- "$argv[2]" $_fisher_plugins
case install update remove
case install update remove uninstall
isatty || read --local --null --array stdin && set --append argv $stdin
test "$cmd" = uninstall && set cmd remove
set --local install_plugins
set --local update_plugins
set --local remove_plugins
@ -38,6 +41,8 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
end
set arg_plugins $file_plugins
else if test "$cmd" = install && ! set --query old_plugins[1]
set --append arg_plugins $file_plugins
end
for plugin in $arg_plugins
@ -86,6 +91,7 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
if test -e $plugin
command cp -Rf $plugin/* $source
else
set resp (command mktemp)
set temp (command mktemp -d)
set repo (string split -- \@ $plugin) || set repo[2] HEAD
@ -98,8 +104,13 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
echo Fetching (set_color --underline)\$url(set_color normal)
if command curl -q --silent -L \$url | command tar -xzC \$temp -f - 2>/dev/null
set http (command curl -q --silent -L -o \$resp -w %{http_code} \$url)
if test \"\$http\" = 200 && command tar -xzC \$temp -f \$resp 2>/dev/null
command cp -Rf \$temp/*/* $source
else if test \"\$http\" = 403
echo fisher: GitHub API rate limit exceeded \(HTTP 403\) >&2
command rm -rf $source
else
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
command rm -rf $source

View file

@ -5,7 +5,7 @@ pad=4x2 center
[cursor]
blink=yes
[colors]
[colors-dark]
foreground=cdd6f4 # Text
background=1e1e2e # Base
regular0=45475a # Surface 1

1400
kwm/.config/kwm/config.zon Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

20
kwm/.config/kwm/init.sh Executable file
View file

@ -0,0 +1,20 @@
#!/bin/sh
wobd
pgrep swaybg || swaybg -i ~/.config/kwm/wallpaper.jpg &
pgrep dunst || dunst &
foot --server & # TODO: figure out systemd service
emacs --daemon &
# swayidle
pgrep swayidle || swayidle -w \
timeout 300 '$HOME/.config/river/timeout.sh' \
before-sleep 'swaylock -f -c 000000' &
# gnome-keyring (needed for nextcloud to remember login)
dbus-update-activation-environment --all
gnome-keyring-daemon --start --components=secrets
nextcloud &

2
kwm/.config/kwm/pianobar.sh Executable file
View file

@ -0,0 +1,2 @@
#!/bin/sh
echo "$1" > ~/.config/pianobar/ctl

3
kwm/.config/kwm/power_mode.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/sh
echo -e "performance\nbalanced\npower-saver" | bemenu --center --list 3 -p "Power Mode" --border 2 --bdr "#f6c2e7" -W 0.5 | xargs tlpctl

17
kwm/.config/kwm/screenshot.sh Executable file
View file

@ -0,0 +1,17 @@
#!/bin/sh
if [ $1 = "clip" ]; then
if grim -g "$(slurp)" - | wl-copy; then
notify-send "screenshot" "Saved to clipboard"
else
notify-send "screenshot" "Canceled"
fi
else
filename="$HOME/Downloads/$(echo '' | bemenu --ifne -p "Enter filename:")"
filename_ext="${filename%.png}.png"
if grim -g "$(slurp)" "$filename_ext"; then
notify-send "screenshot" "Saved as $filename_ext"
else
notify-send "screenshot" "Canceled"
fi
fi

View file

Before

Width:  |  Height:  |  Size: 695 KiB

After

Width:  |  Height:  |  Size: 695 KiB

View file

@ -3,28 +3,28 @@ return {
'norcalli/nvim-colorizer.lua',
config = true
},
-- {
-- 'catppuccin/nvim',
-- name = 'catppuccin',
-- priority = 1000,
-- config = function()
-- require('catppuccin').setup({
-- transparent_background = true,
-- })
-- vim.cmd.colorscheme([[catppuccin-mocha]])
-- end
-- },
{
"Mofiqul/adwaita.nvim",
lazy = false,
'catppuccin/nvim',
name = 'catppuccin',
priority = 1000,
-- configure and set on startup
config = function()
vim.g.adwaita_darker = true -- for darker version
-- vim.g.adwaita_disable_cursorline = true -- to disable cursorline
vim.g.adwaita_transparent = true -- makes the background transparent
vim.cmd('colorscheme adwaita')
require('catppuccin').setup({
transparent_background = true,
})
vim.cmd.colorscheme([[catppuccin-mocha]])
end
}
},
-- {
-- "Mofiqul/adwaita.nvim",
-- lazy = false,
-- priority = 1000,
--
-- -- configure and set on startup
-- config = function()
-- vim.g.adwaita_darker = true -- for darker version
-- -- vim.g.adwaita_disable_cursorline = true -- to disable cursorline
-- vim.g.adwaita_transparent = true -- makes the background transparent
-- vim.cmd('colorscheme adwaita')
-- end
-- }
}

View file

@ -33,6 +33,11 @@ return {
capabilities = capabilities
})
vim.lsp.enable('zls')
vim.lsp.config('zls', {
capabilities = capabilities
})
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
callback = function(ev)

View file

@ -6,13 +6,6 @@ return {
require('nvim-treesitter').setup({
ensure_installed = {'lua', 'rust', 'haskell', 'c', 'scheme', 'bash', 'python'},
})
-- local configs = require('nvim-treesitter.configs')
-- configs.setup({
-- ensure_installed = {'lua', 'rust', 'haskell', 'c', 'scheme', 'bash', 'python'},
-- highlight = { enable = true },
-- indent = { enable = true }
-- })
end
},
{

226
river-classic/.config/river/init Executable file
View file

@ -0,0 +1,226 @@
#!/bin/sh
# Variables
term="foot"
term_client="footclient"
term_float="foot --app-id=float -w 1120x700"
browser="librewolf"
email="thunderbird"
emacs="emacsclient --create-frame --alternate-editor='emacs'"
mod=Super
books="$HOME/.local/bin/books.sh"
papers="$HOME/.local/bin/papers.sh"
config="$HOME/.config/river"
wobsock=$XDG_RUNTIME_DIR/wob.sock
rm -f $wobsock && mkfifo $wobsock && tail -f $wobsock | wob &
# Launch things
riverctl map normal $mod Return spawn $term_client
riverctl map normal $mod+Shift Return spawn $term
riverctl map normal $mod R span "bemenu-run -p launch"
riverctl map normal $mod Semicolon spawn "bemenu-run -p launch"
riverctl map normal $mod+Shift P spawn "$config/power_mode.sh"
# riverctl map normal $mod+Shift P spawn "passmenu -p password"
riverctl map normal $mod BracketRight spawn "$browser"
riverctl map normal $mod T spawn "$email"
riverctl map normal $mod Z spawn "$books"
riverctl map normal $mod Y spawn "$papers"
riverctl map normal $mod E spawn "$emacs"
riverctl map normal $mod+Control O spawn "swaylock"
riverctl map normal $mod B spawn "bluetoothctl connect 88:C9:E8:D7:60:85"
riverctl map normal $mod+Shift B spawn "bluetoothctl disconnect 88:C9:E8:D7:60:85"
riverctl map normal $mod+Control S spawn "$config/screenshot.sh clip"
riverctl map normal $mod+Shift E spawn "$config/screenshot.sh menu"
# Close windows & exit wm
riverctl map normal $mod+Shift C close
riverctl map normal $mod+Shift Q exit
# view stuff
riverctl map normal $mod J focus-view next
riverctl map normal $mod K focus-view previous
riverctl map normal $mod+Shift J swap next
riverctl map normal $mod+Shift K swap previous
riverctl map normal $mod+Shift Space zoom
# monitor stuff
riverctl map normal $mod Period focus-output next
riverctl map normal $mod Comma focus-output previous
riverctl map normal $mod+Shift Period send-to-output next
riverctl map normal $mod+Shift Comma send-to-output previous
# mess with main
riverctl map normal $mod H send-layout-cmd rivertile "main-ratio -0.05"
riverctl map normal $mod L send-layout-cmd rivertile "main-ratio +0.05"
riverctl map normal $mod+Shift H send-layout-cmd rivertile "main-count +1"
riverctl map normal $mod+Shift L send-layout-cmd rivertile "main-count -1"
# manipulate views
riverctl map normal $mod+Alt H move left 100
riverctl map normal $mod+Alt J move down 100
riverctl map normal $mod+Alt K move up 100
riverctl map normal $mod+Alt L move right 100
riverctl map normal $mod+Alt+Control H snap left
riverctl map normal $mod+Alt+Control J snap down
riverctl map normal $mod+Alt+Control K snap up
riverctl map normal $mod+Alt+Control L snap right
riverctl map normal $mod+Alt+Shift H resize horizontal -100
riverctl map normal $mod+Alt+Shift J resize vertical 100
riverctl map normal $mod+Alt+Shift K resize vertical -100
riverctl map normal $mod+Alt+Shift L resize horizontal 100
riverctl map-pointer normal $mod BTN_LEFT move-view
riverctl map-pointer normal $mod BTN_RIGHT resize-view
riverctl map-pointer normal $mod BTN_MIDDLE toggle-float
# tag stuff
for i in $(seq 1 9)
do
tags=$((1 << ($i - 1)))
riverctl map normal $mod $i set-focused-tags $tags
riverctl map normal $mod+Shift $i set-view-tags $tags
riverctl map normal $mod+Control $i toggle-focused-tags $tags
riverctl map normal $mod+Shift+Control $i toggle-view-tags $tags
done
all_tags=$(((1 << 32) - 1))
riverctl map normal $mod 0 set-focused-tags $all_tags
riverctl map normal $mod+Shift 0 set-view-tags $all_tags
# toggle
riverctl map normal $mod Space toggle-float
riverctl map normal $mod F toggle-fullscreen
# change layout orientation
riverctl map normal $mod+Control K send-layout-cmd rivertile "main-location top"
riverctl map normal $mod+Control L send-layout-cmd rivertile "main-location right"
riverctl map normal $mod+Control J send-layout-cmd rivertile "main-location bottom"
riverctl map normal $mod+Control H send-layout-cmd rivertile "main-location left"
# passthrough mode
riverctl declare-mode passthrough
riverctl map normal $mod F11 enter-mode passthrough
riverctl map passthrough $mod F11 enter-mode normal
# media key bindings
for mode in normal locked
do
riverctl map $mode None XF86Eject spawn 'eject -T'
riverctl map $mode None XF86AudioRaiseVolume spawn "~/.config/river/volume.sh up 0.02"
riverctl map $mode None XF86AudioLowerVolume spawn "~/.config/river/volume.sh down 0.02"
riverctl map $mode Shift XF86AudioRaiseVolume spawn "~/.config/river/volume.sh up 0.01"
riverctl map $mode Shift XF86AudioLowerVolume spawn "~/.config/river/volume.sh down 0.01"
riverctl map $mode Control XF86AudioRaiseVolume spawn "~/.config/river/volume.sh up 0.10"
riverctl map $mode Control XF86AudioLowerVolume spawn "~/.config/river/volume.sh down 0.10"
riverctl map $mode None XF86AudioMute exec spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
riverctl map $mode None XF86MonBrightnessUp spawn "brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $wobsock"
riverctl map $mode None XF86MonBrightnessDown spawn "brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $wobsock"
done
# "caffeine"
riverctl map normal $mod+Control C spawn "$HOME/.config/river/toggle_caffeine.sh"
# colors
riverctl background-color 0x1e1e2e
riverctl border-color-focused 0xf5c2e7
riverctl border-color-unfocused 0x586e75
riverctl border-width 2
# options
riverctl set-repeat 50 300
# riverctl keyboard-layout -options "altwin:swap_lalt_lwin" us
# riverctl keyboard-layout -options "altwin:swap_lalt_lwin,grp:alt_space_toggle" -variant colemak_dh, us,us
riverctl keyboard-layout -options "grp:alt_space_toggle" -variant colemak_dh, us,us
# riverctl keyboard-layout -options "altwin:swap_lalt_lwin,grp:alt_space_toggle" -variant ,colemak_dh,dvorak us,us,us
# riverctl keyboard-layout -options "grp:alt_space_toggle" -variant ,dvorak us,us
riverctl focus-follows-cursor normal
riverctl hide-cursor timeout 10000
riverctl hide-cursor when-typing enabled
riverctl xcursor-theme Adwaita
touchpad=$(riverctl list-inputs | grep -i touchpad)
riverctl input $touchpad disable-while-typing enabled
riverctl input $touchpad natural-scroll enabled
riverctl input $touchpad tap enabled
# Make certain views start floating
riverctl float-filter-add app-id float
riverctl float-filter-add title "popup title with spaces"
riverctl float-filter-add app-id blueman-manager
# "Scratchpad"
scratch_tag=$((1 << 20))
riverctl map normal $mod Slash toggle-focused-tags $scratch_tag
riverctl map normal $mod+Shift Slash set-view-tags $scratch_tag
riverctl map normal $mod+Control Slash toggle-view-tags $scratch_tag
riverctl map normal $mod S spawn "$term_float"
riverctl rule-add -app-id float float
# SSD (so GTK apps show border)
riverctl rule-add -app-id firefox ssd
riverctl rule-add -app-id librewolf ssd
riverctl rule-add -app-id thunderbird ssd
riverctl rule-add -app-id betterbird ssd
riverctl rule-add -app-id emacs ssd
riverctl rule-add -app-id gnucash ssd
riverctl rule-add -app-id pcmanfm ssd
riverctl rule-add -app-id steam ssd
riverctl rule-add -app-id drracket ssd
riverctl rule-add -app-id org.pwmt.zathura ssd
riverctl rule-add -app-id org.gnome.Boxes ssd
riverctl rule-add -app-id com.github.xournalpp.xournalpp ssd
# spawn stuff
pgrep swaybg || swaybg -i ~/.config/river/wallpaper.jpg &
wlr-randr --output eDP-1 --scale 1.25 &
pgrep waybar || waybar &
# dunst stuff
pgrep dunst || dunst &
riverctl map normal $mod D spawn 'dunstctl close'
riverctl map normal $mod+Shift D spawn 'dunstctl close-all'
# bluetooth
blueman-applet &
# foot server
foot --server & # TODO: figure out systemd service
# emacs daemon
emacs --daemon &
# nextcloud client
nextcloud &
# pianobar
riverctl map normal $mod+Shift S spawn '~/.config/pianobar/change_station.sh'
riverctl map normal $mod P spawn 'echo "p" > ~/.config/pianobar/ctl'
riverctl map normal $mod C spawn '~/.config/pianobar/display_info.sh'
riverctl map normal $mod N spawn 'echo "n" > ~/.config/pianobar/ctl'
# swayidle
pgrep swayidle || swayidle -w \
timeout 300 '$HOME/.config/river/timeout.sh' \
before-sleep 'swaylock -f -c 000000' &
# gnome-keyring (needed for nextcloud to remember login)
dbus-update-activation-environment --all
gnome-keyring-daemon --start --components=secrets
# start rivertile
riverctl default-layout rivertile
rivertile -view-padding 6 -outer-padding 6 -main-ratio 0.55 &

View file

@ -0,0 +1,3 @@
#!/bin/sh
echo -e "performance\nbalanced\npower-saver" | bemenu --center --list 3 -p "Power Mode" --border 2 --bdr "#f6c2e7" -W 0.5 | xargs tlpctl

View file

@ -0,0 +1,17 @@
#!/bin/sh
if [ $1 = "clip" ]; then
if grim -g "$(slurp)" - | wl-copy; then
notify-send "screenshot" "Saved to clipboard"
else
notify-send "screenshot" "Canceled"
fi
else
filename="$HOME/Downloads/$(echo '' | bemenu --ifne -p "Enter filename:")"
filename_ext="${filename%.png}.png"
if grim -g "$(slurp)" "$filename_ext"; then
notify-send "screenshot" "Saved as $filename_ext"
else
notify-send "screenshot" "Canceled"
fi
fi

View file

@ -0,0 +1,15 @@
#!/bin/sh
caffeine_file=$HOME/.cache/idle
if [[ ! -f $caffeine_file ]] then
echo 0 > $caffeine_file
fi
caffeine=$(<$HOME/.cache/idle)
if [[ $caffeine -eq 0 ]] then
swaylock -f -c 000000
else
notify-send 'Caffeine' 'Not sleeping'
fi

View file

@ -0,0 +1,17 @@
#!/bin/sh
caffeine_file=$HOME/.cache/idle
if [[ ! -f $caffeine_file ]] then
echo 0 > $caffeine_file
fi
caffeine=$(<$HOME/.cache/idle)
if [[ $caffeine -eq 0 ]] then
echo 1 > $caffeine_file
notify-send 'Caffeine' 'Caffeine Enabled'
else
echo 0 > $caffeine_file
notify-send 'Caffeine' 'Caffeine Disabled'
fi

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 KiB

View file

@ -1,218 +1,7 @@
#!/bin/sh
# Variables
term="foot"
term_client="footclient"
term_float="foot --app-id=float -w 1120x700"
browser="librewolf"
email="thunderbird"
emacs="emacsclient --create-frame --alternate-editor='emacs'"
mod=Super
books="$HOME/.local/bin/books.sh"
papers="$HOME/.local/bin/papers.sh"
wobsock=$XDG_RUNTIME_DIR/wob.sock
rm -f $wobsock && mkfifo $wobsock && tail -f $wobsock | wob &
# Launch things
riverctl map normal $mod Return spawn $term_client
riverctl map normal $mod+Shift Return spawn $term
riverctl map normal $mod R span "bemenu-run -p launch"
riverctl map normal $mod Semicolon spawn "bemenu-run -p launch"
riverctl map normal $mod+Shift P spawn "passmenu -p password"
riverctl map normal $mod BracketRight spawn "$browser"
riverctl map normal $mod T spawn "$email"
riverctl map normal $mod Z spawn "$books"
riverctl map normal $mod Y spawn "$papers"
riverctl map normal $mod E spawn "$emacs"
riverctl map normal $mod+Control O spawn "swaylock"
riverctl map normal $mod B spawn "bluetoothctl connect 88:C9:E8:D7:60:85"
riverctl map normal $mod+Shift B spawn "bluetoothctl disconnect 88:C9:E8:D7:60:85"
# Close windows & exit wm
riverctl map normal $mod+Shift C close
riverctl map normal $mod+Shift Q exit
# view stuff
riverctl map normal $mod J focus-view next
riverctl map normal $mod K focus-view previous
riverctl map normal $mod+Shift J swap next
riverctl map normal $mod+Shift K swap previous
riverctl map normal $mod+Shift Space zoom
# monitor stuff
riverctl map normal $mod Period focus-output next
riverctl map normal $mod Comma focus-output previous
riverctl map normal $mod+Shift Period send-to-output next
riverctl map normal $mod+Shift Comma send-to-output previous
# mess with main
riverctl map normal $mod H send-layout-cmd rivertile "main-ratio -0.05"
riverctl map normal $mod L send-layout-cmd rivertile "main-ratio +0.05"
riverctl map normal $mod+Shift H send-layout-cmd rivertile "main-count +1"
riverctl map normal $mod+Shift L send-layout-cmd rivertile "main-count -1"
# manipulate views
riverctl map normal $mod+Alt H move left 100
riverctl map normal $mod+Alt J move down 100
riverctl map normal $mod+Alt K move up 100
riverctl map normal $mod+Alt L move right 100
riverctl map normal $mod+Alt+Control H snap left
riverctl map normal $mod+Alt+Control J snap down
riverctl map normal $mod+Alt+Control K snap up
riverctl map normal $mod+Alt+Control L snap right
riverctl map normal $mod+Alt+Shift H resize horizontal -100
riverctl map normal $mod+Alt+Shift J resize vertical 100
riverctl map normal $mod+Alt+Shift K resize vertical -100
riverctl map normal $mod+Alt+Shift L resize horizontal 100
riverctl map-pointer normal $mod BTN_LEFT move-view
riverctl map-pointer normal $mod BTN_RIGHT resize-view
riverctl map-pointer normal $mod BTN_MIDDLE toggle-float
# tag stuff
for i in $(seq 1 9)
do
tags=$((1 << ($i - 1)))
riverctl map normal $mod $i set-focused-tags $tags
riverctl map normal $mod+Shift $i set-view-tags $tags
riverctl map normal $mod+Control $i toggle-focused-tags $tags
riverctl map normal $mod+Shift+Control $i toggle-view-tags $tags
done
all_tags=$(((1 << 32) - 1))
riverctl map normal $mod 0 set-focused-tags $all_tags
riverctl map normal $mod+Shift 0 set-view-tags $all_tags
# toggle
riverctl map normal $mod Space toggle-float
riverctl map normal $mod F toggle-fullscreen
# change layout orientation
riverctl map normal $mod+Control K send-layout-cmd rivertile "main-location top"
riverctl map normal $mod+Control L send-layout-cmd rivertile "main-location right"
riverctl map normal $mod+Control J send-layout-cmd rivertile "main-location bottom"
riverctl map normal $mod+Control H send-layout-cmd rivertile "main-location left"
# passthrough mode
riverctl declare-mode passthrough
riverctl map normal $mod F11 enter-mode passthrough
riverctl map passthrough $mod F11 enter-mode normal
# media key bindings
for mode in normal locked
do
riverctl map $mode None XF86Eject spawn 'eject -T'
riverctl map $mode None XF86AudioRaiseVolume spawn "~/.config/river/volume.sh up 0.02"
riverctl map $mode None XF86AudioLowerVolume spawn "~/.config/river/volume.sh down 0.02"
riverctl map $mode Shift XF86AudioRaiseVolume spawn "~/.config/river/volume.sh up 0.01"
riverctl map $mode Shift XF86AudioLowerVolume spawn "~/.config/river/volume.sh down 0.01"
riverctl map $mode Control XF86AudioRaiseVolume spawn "~/.config/river/volume.sh up 0.10"
riverctl map $mode Control XF86AudioLowerVolume spawn "~/.config/river/volume.sh down 0.10"
riverctl map $mode None XF86AudioMute exec spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
riverctl map $mode None XF86MonBrightnessUp spawn "brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $wobsock"
riverctl map $mode None XF86MonBrightnessDown spawn "brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $wobsock"
done
# "caffeine"
riverctl map normal $mod+Control C spawn "$HOME/.config/river/toggle_caffeine.sh"
# colors
riverctl background-color 0x1e1e2e
riverctl border-color-focused 0xf5c2e7
riverctl border-color-unfocused 0x586e75
riverctl border-width 2
# options
riverctl set-repeat 50 300
# riverctl keyboard-layout -options "altwin:swap_lalt_lwin" us
# riverctl keyboard-layout -options "altwin:swap_lalt_lwin,grp:alt_space_toggle" -variant colemak_dh, us,us
riverctl keyboard-layout -options "grp:alt_space_toggle" -variant colemak_dh, us,us
# riverctl keyboard-layout -options "altwin:swap_lalt_lwin,grp:alt_space_toggle" -variant ,colemak_dh,dvorak us,us,us
# riverctl keyboard-layout -options "grp:alt_space_toggle" -variant ,dvorak us,us
riverctl focus-follows-cursor normal
riverctl hide-cursor timeout 10000
riverctl hide-cursor when-typing enabled
riverctl xcursor-theme Adwaita
touchpad=$(riverctl list-inputs | grep -i touchpad)
riverctl input $touchpad disable-while-typing enabled
riverctl input $touchpad natural-scroll enabled
riverctl input $touchpad tap enabled
# Make certain views start floating
riverctl float-filter-add app-id float
riverctl float-filter-add title "popup title with spaces"
riverctl float-filter-add app-id blueman-manager
# "Scratchpad"
scratch_tag=$((1 << 20))
riverctl map normal $mod Slash toggle-focused-tags $scratch_tag
riverctl map normal $mod+Shift Slash set-view-tags $scratch_tag
riverctl map normal $mod+Control Slash toggle-view-tags $scratch_tag
riverctl map normal $mod S spawn "$term_float"
riverctl rule-add -app-id float float
# SSD (so GTK apps show border)
riverctl rule-add -app-id firefox ssd
riverctl rule-add -app-id librewolf ssd
riverctl rule-add -app-id thunderbird ssd
riverctl rule-add -app-id betterbird ssd
riverctl rule-add -app-id emacs ssd
riverctl rule-add -app-id gnucash ssd
riverctl rule-add -app-id pcmanfm ssd
riverctl rule-add -app-id steam ssd
riverctl rule-add -app-id drracket ssd
riverctl rule-add -app-id org.pwmt.zathura ssd
riverctl rule-add -app-id org.gnome.Boxes ssd
riverctl rule-add -app-id com.github.xournalpp.xournalpp ssd
# spawn stuff
pgrep wbg || wbg ~/.config/river/wallpaper.jpg &
wlr-randr --output eDP-1 --scale 1.25 &
pgrep waybar || waybar &
# mako stuff
pgrep mako || mako &
riverctl map normal $mod D spawn 'makoctl dismiss'
riverctl map normal $mod+Shift D spawn 'makoctl dismiss --all'
# bluetooth
blueman-applet &
# foot server
foot --server & # TODO: figure out systemd service
# emacs daemon
emacs --daemon &
# nextcloud client
nextcloud &
# pianobar
riverctl map normal $mod+Shift S spawn '~/.config/pianobar/change_station.sh'
riverctl map normal $mod P spawn 'echo "p" > ~/.config/pianobar/ctl'
riverctl map normal $mod C spawn '~/.config/pianobar/display_info.sh'
riverctl map normal $mod N spawn 'echo "n" > ~/.config/pianobar/ctl'
# swayidle
pgrep swayidle || swayidle -w \
timeout 300 '$HOME/.config/river/timeout.sh' \
before-sleep 'swaylock -f -c 000000' &
# start rivertile
riverctl default-layout rivertile
rivertile -view-padding 6 -outer-padding 6 -main-ratio 0.55 &
$HOME/repos/damblocks/damblocks | kwm &
killall -q mpc
damblocks-mpdd

View file

@ -4,7 +4,8 @@ prefix=$HOME/Nextcloud/Books/
# dmenu="pipemenu --title Books"
# dmenu="fuzzel -d -p books -w 80"
dmenu="bemenu -p books --center --list 20 down --width-factor 0.5 --border 2 --bdr #f6c2e7"
pdf=zathura
# pdf=zathura
pdf=sioyek
# pdf="flatpak run org.gnome.Papers"
choice=$(find $prefix -type f | sed "s|$prefix||;s/_/ /g" | $dmenu)

View file

@ -4,7 +4,8 @@ prefix=$HOME/Nextcloud/Papers/
# dmenu="pipemenu --title Books"
# dmenu="fuzzel -d -p books -w 80"
dmenu="bemenu -p papers --center --list 20 down --width-factor 0.5 --border 2 --bdr #f6c2e7"
pdf=zathura
# pdf=zathura
pdf=sioyek
# pdf="flatpak run org.gnome.Papers"
choice=$(find $prefix -type f | sed "s|$prefix||;s/_/ /g" | $dmenu)

View file

@ -0,0 +1,383 @@
# you can edit this file to change keybindings lines that start with '#' are comments
# the syntax is pretty simple. Some examples:
#command k (command is executed when k is pressed)
#command <C-k> (command is executed when k is pressed while holding control)
#command K (command is executed when K is entered, which is shift+k)
#command <A-k> (command is executed when k is pressed while holding alt)
#command + (command is executed when = is pressed while holding shift)
#command <C-K> (command is executed when k is pressed while holding control and shift)
#command gg (command is executed when g is pressed twice)
#command gt (command is executed when g is pressed and then t is pressed)
#command g<C-n>Dt (command is executed when g is pressed and then n is pressed while holding\
# control and then d is pressed while holding shift and then t is pressed)
# you can execute multiple commands using the following syntax:
#command1;command2;command3 <keybinding>
# for more information see the documentation at https://sioyek-documentation.readthedocs.io/
# ---------- NAVIGATION AND ZOOM ----------
# Goto the beginning of document. If prefixed with a number, it will go to that page.
# for example 150gg goes to page 150.
goto_beginning gg
# Goto the end of the document
goto_end G
## Goto left/right/bottom/top side of the page
goto_left H
goto_right L
goto_top_of_page J
goto_bottom_of_page K
# Goto left/right side of the page ignoring white margins
goto_left_smart ^
goto_right_smart $
# Goto the top-right side of page. Useful for two column documents
goto_top_of_page;goto_right_smart zz
# Movement (can be prefixed with a number)
# move_down <down>
# move_up <up>
move_left <right>
move_right <left>
# Goto forward for one page width. (can be prefixed with a number)
# (note that going forward for one page width is not usually what you want because if
# the page is larger than the screen you will miss some content. What you usually want is screen_down)
next_page J
previous_page K
# Go down one screen width (can be prefixed with a number which tells how many screen widths should we go down)
screen_down <C-d>
screen_up <C-u>
# Goto the next/prev chapter
next_chapter gc
prev_chapter gC
# Goto previous viewing state and delete the current (and future) state(s).
pop_state w
# Goto the previous history point
prev_state <backspace>
prev_state [
# Create a new sioyek window
new_window <C-t>
# Close the current sioyek window
close_window <C-w>
## Search and switch between sioyek windows
#goto_window <unbound>
# If we are not at the end of viewing history, goto the next history point
next_state ]
# Open table of contents.
goto_toc t
# Zoom
zoom_in +
fit_to_page_width =
zoom_out -
## Zoom in/out on the mouse cursor (instead of center of screen)
# zoom_in_cursor <unbound>
# zoom_out_cursor <unbound>
# Rotate document
rotate_clockwise r
rotate_counterclockwise R
# Automatically set the zoom level and horizontal offset such that the current page is centered horizontally and
# it fills the screen width
fit_to_page_width_smart A
## Similar to fit_to_page_width, but for height
#fit_to_page_height <unbound>
## Similar to fit_to_page_width_smart but for height
#fit_to_page_height_smart <unbound>
## Same as fit_to_page_width, but instead of filling the screen width, it fills the ratio of screen that is
## configured in `prefs_user.config` using `fit_to_page_width_ratio` config. See https://github.com/ahrm/sioyek/issues/162#issuecomment-1059738730.
#fit_to_page_width_ratio <unbound>
# Open a file dialog to select a document.
open_document o
# Open an embedded file dialog in sioyek
open_document_embedded <C-o>
# Open an embedded file dialog in sioyek rooted in the directory of current opened file
open_document_embedded_from_current_path <C-O>
# Open a searchable list of previously opened documents.
open_prev_doc O
## Opens the last document opened is sioyek. It is useful when you want to quickly toggle between two documents
#open_last_document <unbound>
## Keyboard shortcut to enter visual mark mode (instead of right clicking)
#enter_visual_mark_mode <unbound>
# Command the move the visual mark to the next/previous line
# these keys only work when a visual mark is set (by right clicking or using `visual_mark_under_cursor` command)
move_visual_mark_up k
move_visual_mark_down j
## lock horizontal scroll, useful when using laptop touchpads
# toggle_horizontal_scroll_lock <unbound>
# ---------- SEARCH ----------
# Search the document.
# example: /something (searches the document for 'something')
# you can also specify a page range to search:
# example: /<110,135>something (searches pages 110 to 135 (inclusive) for 'something')
search /
# Searches the current chapter. This is essentially the same as search but the range prefix is autofilled
# with the range of the current lowest level subchapter.
chapter_search c<C-f>
chapter_search c/
# Goto the next search item. Can be prefixed with a number which is the same as performing the command n times
# for example if we are on the 10th search result and we input 15n, we go to the 25th search result.
next_item n
# Goto the previous search result. Can be prefixed with a number with similar rules as next_item.
previous_item N
# ---------- BOOKMARKS ----------
# Add a bookmark in the current location (opens a text input where you can specify the bookmark text)
add_bookmark b
delete_bookmark db
# Open bookmarks menu of the current document.
goto_bookmark gb
# Open bookmarks menu of all documents.
goto_bookmark_g gB
# ---------- HIGHLIGHTS ----------
# You can select a piece of text and press the `add_highlight` shortcut followed by a symbol (a character from a-z) to highlight
# the text
add_highlight h
# Goto highlights of current document
goto_highlight gh
# Goto highlights of all documents
goto_highlight_g gH
# Left click on a highlight and then press the `delete_highlight` shortcut to delete it.
delete_highlight dh
# Sets the highlight type to be used for other operations (the default highlight type is 'a')
#set_select_highlight_type
## Same as `add_highlight` but uses the current selected highlight type as the type of highlight
#add_highlight_with_current_type <unbound>
## Toggle select highlight mode. In select highlight mode, all text selected using mouse will automatically be highlighted
## with highlight type set using `set_select_highlight_type`
#toggle_select_highlight <unbound>
# Goto next/previous highlight in current document
goto_next_highlight gnh
goto_prev_highlight gNh
## Goto next/previous highlight of the current selected highlight type
#goto_next_highlight_of_type <unbound>
#goto_prev_highlight_of_type <unbound>
# ---------- MARKS ----------
# Mark the current location. After pressing the mark button, you must enter a symbol (a letter from a-z or A-Z).
# this marks the current location in the file with the entered symbol. Afterwards you will be able to return to
# the locations of the marks using goto_mark command.
# example: mm (marks the current location in the file with a mark named 'm')
set_mark m
# Goto a previously set mark. After pressing goto_mark you must enter a symbol associated with a previously set mark.
# example: `m (goes to the location of the mark named m)
goto_mark `
# ---------- PORTALS ----------
# If we are in default state, goto portal state with the current location in document as the portal source
# if we are already in the portal state, create the portal with the current location as destination.
portal p
# Delete the portal with the closest source to current location
delete_portal dp
# Goto the position of the portal with the closest source to current location
goto_portal gp
goto_portal <tab>
# Similar to goto_portal, except when prev_state is called, the destination of the portal is update to be the state
# on which prev_state is called
edit_portal P
edit_portal <S-<tab>>
# Open/Close the helper window for portals
toggle_window_configuration <f12>
## open/close helper window
#toggle_one_window <unbound>
# ---------- MISC ----------
# Copy selected text
copy <C-c>
toggle_fullscreen <f11>
# Toggles whether we highlight pdf links or not
toggle_highlight <f1>
# open command line
command :
# Search the selected text using one of the search engines defined using search_url_* settings in prefs.config (* can be any letter between 'a' and 'z')
# see https://sioyek-documentation.readthedocs.io/en/latest/usage.html#external-search
external_search s
# opens the selected text as a url in the default browser
# open_selected_url Q
# Toggle dark mode (inverted colors)
# toggle_dark_mode ,r
## Toggle custom color mode. You can specify the text background color in your `prefs_user.config` file
## see https://sioyek-documentation.readthedocs.io/en/latest/configuration.html#custom-background-color-and-custom-text-color
toggle_custom_color ,r
# Toggle synctex mode. When in synctex mode, right clicking on a pdf launches the corresponding latex page.
toggle_synctex <f4>
## Perform a synctex search under the mouse cursor
#synctex_under_cursor <unbound>
# While in mouse drag mode, instead of selecting text you can pan the screen using mouse
toggle_mouse_drag_mode <f6>
# In visual scroll mode, mouse wheel performs `move_visual_mark_up` and `move_visual_mark_down` commands
toggle_visual_scroll <f7>
# In visual scroll mode, create an overview to/go to/portal to the definition in highlighted line
overview_definition l
# goto_definition <C-]>
# portal_to_definition ]
# In presentation mode, we fit the pages to screen and movement keys move entire pages
toggle_presentation_mode ,p
## Quit sioyek
quit q
# Open PDF links using keyboard
open_link f
# Select text using keyboard
keyboard_select v
# Smart jump using keyboard
keyboard_smart_jump F
## Open overview window using keyboard
#keyboard_overview <unbound>
## If the preview is not correct, jump to the next preview
#next_preview <C-n>
## If the preview is not correct, jump to the previous preview
#previous_preview <C-N>
## Jump to the location of the current overview
#goto_overview <unbound>
## Create a portal to the location of the current overview
#portal_to_overview <unbound>
## Center the window on selected text
#goto_selected_text <unbound>
## Focus the visual mark on the text matching the given string (useful when extensions want to focus on a text)
#focus_text <unbound>
## Smart jump to the location under mouse cursor
#smart_jump_under_cursor <unbound>
## Open overview window to the location under mouse cursor
#overview_under_cursor <unbound>
## Set a visual mark under mouse cursor
#visual_mark_under_cursor <unbound>
## Close the overview window
#close_overview <unbound>
## Exit visual mark mode
#close_visual_mark <unbound>
## Import sioyek data from an exported file
#import <unbound>
## Export sioyek data into a json file
#export <unbound>
## Execute shell commands. For example:
## sioyek --new-instance %1
## in the command %1 expands to the path of the current file and %2 expand to the file name of the current file
#execute <unbound>
## (deprecated see bottom of the page) Execute a predefined command. these commands are defined in `prefs_user.config` file using the following syntax:
## --------prefs_user.config-----------
## execute_command_a some_command %1 %2
## execute_command_x another_command %2
## ------------------------------------
## now in order to execute the second command you can first execute `execute_predefined_command` and then press 'x'
#execute_predefined_command <unbound>
## Embed the annotations (highlights and bookmarks) into a new PDF file so they are visible to other PDF readers
#embed_annotations <unbound>
## Copy the current window configuration to clipboard so they can be used in `prefs_user.config`
#copy_window_size_config <unbound>
## Opens the default preference file
#prefs <unbound>
## Opens the user preference file with highest priority
#prefs_user <unbound>
## Opens a list of all user preference files
#prefs_user_all <unbound>
## Opens the default kwys file
#keys <unbound>
## Opens the user keys file with highest priority
#keys_user <unbound>
## Opens a list of all user keys files
#keys_user_all <unbound>
## Enter password for password protected documents
#enter_password <unbound>
## Toggle fastread mode. this is an experiental feature
#toggle_fastread <unbound>
## Toggle statusbar display
toggle_statusbar ,d
## Reload sioyek window
#reload <unbound>
## Set the status string to be displayed in sioyek's statusbar (it is useful for extensions)
#set_status_string <unbound>
## Clears the status string set by `set_status_string`
#clear_status_string <unbound>
## Toggles the window titlebar
#toggle_titlebar <unbound>
## You can bind custom commands defined in `prefs_user.config` using the same syntax as the built-in commands
## --------prefs_user.config-----------
## new_command _my_command_name python /path/to/script.py %{file_name} %{paper_name}
## ------------------------------------
## now you can bind _my_command_name to a keybind here:
#_my_command_name <unbound>

View file

@ -0,0 +1,308 @@
# For more information see the documentation at https://sioyek-documentation.readthedocs.io/
# (can be 0 or 1) if set, shows a notification on startup if a new version of sioyek is available
check_for_updates_on_startup 0
# Use old keybind parsing method (only for backwards compatibility)
use_legacy_keybinds 0
# The color with which the screen is cleared before rendering the pdf (this is the background color of the application and not the PDF file)
background_color 0.97 0.97 0.97
dark_mode_background_color 0.0 0.0 0.0
# Showing full white text on black background can be irritating for the eye, we can dim the whites a little bit using the contrast option
dark_mode_contrast 0.8
# Highlight color when text is selected using mouse
text_highlight_color 1.0 1.0 0.0
# The color of highlight ruler which is displayed when right click is pressed
visual_mark_color 0.0 0.0 0.0 0.1
# Highlight color when text is a search match
search_highlight_color 0.0 1.0 0.0
# Hihglight color for PDF links (note that highlight is off by default
# and can only be seen by performing a toggle_highlight command. See keys.config for more details)
link_highlight_color 0.0 0.0 1.0
# Hihglight color for synctex forward search highlights
synctex_highlight_color 1.0 0.0 1.0
# Urls to use when executing external_search commands
search_url_s https://scholar.google.com/scholar?q=
search_url_g https://www.google.com/search?q=
# Which search url to choose when middle clicking or shift middle clicking on text (the values are the letters of corresponding search_url_* )
# for example if i set `middle_click_search_engine s`, then we use the url associated with `search_url_s` to handle middle click searches
middle_click_search_engine s
shift_middle_click_search_engine l
# The factor by which we increase/decrease zoom when performing zoom_in or zoom_out
zoom_inc_factor 1.2
# How many inches we move vertically/horizontally when performing move_* commands
vertical_move_amount 1.0
horizontal_move_amount 1.0
# When performing screen_down/screen_up we usually don't move a full screen because it causes the user to lose context
# Here we specify the fraction of the screen width by which we move when performing these commands
move_screen_ratio 0.5
# If 0, Table of Contents is shown in a hierarchial tree, otherwise it is a flat list (can improve performance for extremely large table of contents)
flat_toc 0
# If it is 1, when launching the application if we detect multiple monitors, we automatically launch the helper window in second monitor
should_use_multiple_monitors 0
# If the last opened document is empty, load the tutorial pdf instead
should_load_tutorial_when_no_other_file 1
# (deprecated, use `should_launch_new_window` instead) If it is 0, then we use the previous instance of sioyek when launching a new file.
# otherwise a new instance is launched every time we open a new file.
should_launch_new_instance 0
# If set, we open a new sioyek window when a new file is opened, otherwise we open the file in the previous window
should_launch_new_window 0
# The command to use when trying to do inverse search into a LaTeX document. Uncomment and provide your own command.
# %1 expands to the name of the file and %2 expans to the line number.
#inverse_search_command "C:\path\to\vscode\Code.exe" -r -g %1:%2
# you can specify the exact highlight color for each of 26 different highlight types
# When moving to the next line using visual marker, this setting specifies the distance of the market to the top of the screen in fractions of screen size (center of the screen is zero, top of the screen is one)
visual_mark_next_page_fraction 0.75
# When moving to the next line using visual marker, this setting determines at which point we move the screen (center of the screen is one, bottom of the screen is zero)
visual_mark_next_page_threshold 0.25
# If set, we display a checkerboard pattern for unrendered pages (by default we display nothing)
should_draw_unrendered_pages 0
# If 0, we use the previous renders for overview window which may cause it to be blurry
# if it is 1, we rerender with the proper resolution for overview window which looks better
# but may increase power consumption
rerender_overview 1
## Size of the overview window (1 being as large as the window, valid range is [0, 1])
# overview_size 0.5 0.5
## Offset of the center of the overview window ((0,0) being the center of the screen and valid raneg is [-1, 1])
# overview_offset 0.5 0.5
# Use linear texture filtering instead of nearest-neighbor
# Can improve appearance in very high-resolution screens
# linear_filter 0
# Use dark mode by default (deprecated, better add `toggle_dark_mode` to `startup_commands` )
default_dark_mode 0
# If set, we sort the bookmarks by their location instead of their creation time
sort_bookmarks_by_location 1
## Path to shared.db database file. If not set, we use the default path.
## you can set this to be a file in a synced folder (e.g. dropbox folder) to automatically sync
## sioyek across multiple computers
#shared_database_path /some/path/shared.db
## Name of the font to use for UI text
#ui_font Some Font Name
## Size of the UI font
#font_size 20
## Semicolon-separated list of command to execute upon sioyek startup
startup_commands toggle_statusbar
## Background color to use when executing `toggle_custom_color`
custom_background_color 0.180 0.204 0.251
## Text color to use when executing `toggle_custom_color`
custom_text_color 0.847 0.871 0.914
# Normally mouse wheel zooms in on the middle of the screen, but if this is set to 1, we zoom in on the cursor
wheel_zoom_on_cursor 0
## Color of status bar background
#status_bar_color 0 0 0
## Color of status bar text
#status_bar_text_color 1 1 1
## Font size of the status bar text
#status_bar_font_size 20
## The default size of main window when helper window is closed
#single_main_window_size 800 600
#single_main_window_move 100 100
## The default size/offset of main/helper window when helper window is opened. You can copy the value of this config using `copy_window_size_config` command
#main_window_size 800 600
#main_window_move 100 100
#helper_window_size 800 600
#helper_window_move 100 100
## Touchpad/scrollwhell sensitivity
#touchpad_sensitivity 1.0
## Configure the appearance of page separator
#page_separator_width 2
#page_separator_color 0.9 0.9 0.9
# Ratio of page width to use for `fit_to_page_width_ratio` command
fit_to_page_width_ratio 0.75
# If set, we initially collapse table of content entries
collapsed_toc 0
# If set, we highlight the current line in visual_scroll_mode by masking above and below the current line
# if not set, we only mask below the line
ruler_mode 1
# Additional ruler padding
ruler_padding 1.0
ruler_x_padding 5.0
## We use mupdf to determine lines for visual mark. However, we do have a custom algorithm for image documents
## if `force_custom_line_algorithm` is 1, then we use our custom algorithm instead of mupdf even for documents
## that have lines.
#force_custom_line_algorithm 0
# A directory which sioyek watches for new papers. If a new paper added to this directory
# while we are creating a portal from another document, this new document will automatically
# be used as the destination of the portal.
#paper_folder_path /some/path
# Enable some experimental features, might not be stable
#enable_experimental_features 0
# Automatically create a table of contents for the document if it doesn't already have one
create_table_of_contents_if_not_exists 1
# Limits the maximum size of created table of contents
max_created_toc_size 5000
# Warn the user on the command line only when redefining keys inside
# the same file. When set to 1, sioyek will warn when redefining keys
# from other files also
should_warn_about_user_key_override 1
# Use double clicks to select entire words and single clicks for character-based selection
single_click_selects_words 0
# A prefix to prepend to items in lists (e.g. bookmark lists)
#item_list_prefix >
## In presentation mode, ignore whitespace when trying to determine the size of a page
#ignore_whitespace_in_presentation_mode 0
## In list of recent documents, show the entire document path rather than just the name
#show_doc_path 0
# Show long menu items in multiple lines instead of truncating the string, can reduce performance for
#very large lists
multiline_menus 1
# While in present mode, prerender the next page to avoid flickering
prerender_next_page_presentation 1
## Custom commands to run when clicking or right clicking when modifier keys are pressed
## the command can be any built-in sioyek command (e.g. overview_under_cursor) or user-defined
## commands defined using `new_command`
# shift_click_command some_command
# control_click_command some_command
# alt_click_command some_command
# shift_right_click_command some_command
# control_right_click_command some_command
# alt_right_click_command some_command
# Highlight on middle clicks when text is selected and no preview is open
#highlight_middle_click 1
# Use a super fast index for search instead of the mupdf's implementation
#super_fast_search 1
# Use case-insensitive search
#case_sensitive_search 0
#Amethyst
highlight_color_a 0.94 0.64 1.00
#Blue
highlight_color_b 0.00 0.46 0.86
#Caramel
highlight_color_c 0.60 0.25 0.00
#Damson
highlight_color_d 0.30 0.00 0.36
#Ebony
highlight_color_e 0.10 0.10 0.10
#Forest
highlight_color_f 0.00 0.36 0.19
#Green
highlight_color_g 0.17 0.81 0.28
#Honeydew
highlight_color_h 1.00 0.80 0.60
#Iron
highlight_color_i 0.50 0.50 0.50
#Jade
highlight_color_j 0.58 1.00 0.71
#Khaki
highlight_color_k 0.56 0.49 0.00
#Lime
highlight_color_l 0.62 0.80 0.00
#Mallow
highlight_color_m 0.76 0.00 0.53
#Navy
highlight_color_n 0.00 0.20 0.50
#Orpiment
highlight_color_o 1.00 0.64 0.02
#Pink
highlight_color_p 1.00 0.66 0.73
#Quagmire
highlight_color_q 0.26 0.40 0.00
#Red
highlight_color_r 1.00 0.00 0.06
#Sky
highlight_color_s 0.37 0.95 0.95
#Turquoise
highlight_color_t 0.00 0.60 0.56
#Uranium
highlight_color_u 0.88 1.00 0.40
#Violet
highlight_color_v 0.45 0.04 1.00
#Wine
highlight_color_w 0.60 0.00 0.00
#Xanthin
highlight_color_x 1.00 1.00 0.50
#Yellow
highlight_color_y 1.00 1.00 0.00
#Zinnia
highlight_color_z 1.00 0.31 0.02
# === CATPPUCCIN MOCHA === #
background_color #1e1e2e
text_highlight_color #f9e2af
visual_mark_color #7f849c
search_highlight_color #f9e2af
link_highlight_color #89b4fa
synctex_highlight_color #a6e3a1
highlight_color_a #f9e2af
highlight_color_b #a6e3a1
highlight_color_c #89dceb
highlight_color_d #eba0ac
highlight_color_e #cba6f7
highlight_color_f #f38ba8
highlight_color_g #f9e2af
custom_background_color #1e1e2e
custom_text_color #cdd6f4
ui_text_color #cdd6f4
ui_background_color #313244
ui_selected_text_color #cdd6f4
ui_selected_background_color #585b70
status_bar_color #313244
status_bar_text_color #cdd6f4

View file

@ -43,11 +43,4 @@ set -g status-left ""
set -g status-right '#[fg=#{@thm_crust},bg=#{@thm_teal}] session: #S '
# }}}
run '~/.config/tmux/plugins/tpm/tpm'

View file

@ -55,7 +55,7 @@
},
"wireplumber": {
"format": "{volume}% {icon}",
"format": " {volume}% {icon} ",
"format-muted": "",
"on-click": "helvum",
"format-icons": ["", "", ""]
@ -107,6 +107,7 @@
},
"tray": {
"icon-size": 20
"icon-size": 20,
"spacing": 15
}
}

View file

@ -48,6 +48,7 @@ window#waybar {
color: @yellow;
}
#wireplumber,
#pulseaudio {
color: @red;
}
@ -65,6 +66,7 @@ window#waybar {
#memory,
#cpu,
#battery,
#wireplumber,
#disk {
padding: 0 10px;
}