index — dotfiles @ 52484a88fe075f0eedffdc6f3696724796cbb8b6

my dotfiles

Restructure for enabling multiple machines
Christian Krinitsin mail@krinitsin.com
Tue, 20 Jan 2026 21:26:45 +0100
commit

52484a88fe075f0eedffdc6f3696724796cbb8b6

parent

69494577363801281af7280c65812f88d864a64e

89 files changed, 3148 insertions(+), 45 deletions(-)

jump to
M bash/.bashrccommon/bash/.bashrc

@@ -4,7 +4,7 @@ export GOPATH=$HOME/.go

export EDITOR='nvim' export MANPAGER='nvim +Man!' export PS1="\n\e[1;32m[\u@\h:\w]\$ \e[0m" -export CALENDAR=$HOME/projects/calendar.txt +export CALENDAR=$HOME/projects/calendar/calendar.txt # Startup message grep `date -I` $CALENDAR --color
A common/alacritty/.config/alacritty/alacritty/alacritty.toml

@@ -0,0 +1,44 @@

+[colors.cursor] +cursor = "#d3c6aa" +text = "#232a2e" + +[colors.primary] +background = "#2b3339" +foreground = "#d3c6aa" + +[colors.normal] +black = "#232a2e" +blue = "#7fbbb3" +cyan = "#e69875" +green = "#83c092" +magenta = "#d699b6" +red = "#e67e80" +white = "#d3c6aa" +yellow = "#dbbc7f" + +[colors.bright] +black = "#475158" +blue = "#3a515d" +cyan = "#d699b6" +green = "#a7c080" +magenta = "#7fbbb3" +red = "#e67e80" +white = "#9da9a0" +yellow = "#dbbc7f" + +[cursor] +style = "Block" + +[font.normal] +family = "DroidSansM Nerd Font" + +[font] +size = 11.0 + +[scrolling] +history = 2000 + +[[keyboard.bindings]] +action = "SpawnNewInstance" +key = "Return" +mods = "Control|Shift"
A common/atuin/.config/atuin/config.toml

@@ -0,0 +1,291 @@

+## where to store your database, default is your system data directory +## linux/mac: ~/.local/share/atuin/history.db +## windows: %USERPROFILE%/.local/share/atuin/history.db +# db_path = "~/.history.db" + +## where to store your encryption key, default is your system data directory +## linux/mac: ~/.local/share/atuin/key +## windows: %USERPROFILE%/.local/share/atuin/key +# key_path = "~/.key" + +## where to store your auth session token, default is your system data directory +## linux/mac: ~/.local/share/atuin/session +## windows: %USERPROFILE%/.local/share/atuin/session +# session_path = "~/.session" + +## date format used, either "us" or "uk" +# dialect = "us" + +## default timezone to use when displaying time +## either "l", "local" to use the system's current local timezone, or an offset +## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]" +## for example: "+9", "-05", "+03:30", "-01:23:45", etc. +# timezone = "local" + +## enable or disable automatic sync +# auto_sync = true + +## enable or disable automatic update checks +# update_check = true + +## address of the sync server +# sync_address = "https://api.atuin.sh" + +## how often to sync history. note that this is only triggered when a command +## is ran, so sync intervals may well be longer +## set it to 0 to sync after every command +# sync_frequency = "10m" + +## which search mode to use +## possible values: prefix, fulltext, fuzzy, skim +# search_mode = "fuzzy" + +## which filter mode to use by default +## possible values: "global", "host", "session", "session-preload", "directory", "workspace" +## consider using search.filters to customize the enablement and order of filter modes +# filter_mode = "global" + +## With workspace filtering enabled, Atuin will filter for commands executed +## in any directory within a git repository tree (default: false). +## +## To use workspace mode by default when available, set this to true and +## set filter_mode to "workspace" or leave it unspecified and +## set search.filters to include "workspace" before other filter modes. +# workspaces = false + +## which filter mode to use when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "filter_mode" +## leave unspecified to use same mode set in "filter_mode" +# filter_mode_shell_up_key_binding = "global" + +## which search mode to use when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "search_mode" +## leave unspecified to use same mode set in "search_mode" +# search_mode_shell_up_key_binding = "fuzzy" + +## which style to use +## possible values: auto, full, compact +# style = "auto" + +## the maximum number of lines the interface should take up +## set it to 0 to always go full screen +# inline_height = 0 + +## the maximum number of lines the interface should take up +## when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "inline_height" +# inline_height_shell_up_key_binding = 0 + +## Invert the UI - put the search bar at the top , Default to `false` +# invert = false + +## enable or disable showing a preview of the selected command +## useful when the command is longer than the terminal width and is cut off +# show_preview = true + +## what to do when the escape key is pressed when searching +## possible values: return-original, return-query +# exit_mode = "return-original" + +## possible values: emacs, subl +# word_jump_mode = "emacs" + +## characters that count as a part of a word +# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +## number of context lines to show when scrolling by pages +# scroll_context_lines = 1 + +## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts +## alt-0 .. alt-9 +# ctrl_n_shortcuts = false + +## Show numeric shortcuts (1..9) beside list items in the TUI +## set to false to hide the moving numbers if you find them distracting +# show_numeric_shortcuts = true + +## default history list format - can also be specified with the --format arg +# history_format = "{time}\t{command}\t{duration}" + +## prevent commands matching any of these regexes from being written to history. +## Note that these regular expressions are unanchored, i.e. if they don't start +## with ^ or end with $, they'll match anywhere in the command. +## For details on the supported regular expression syntax, see +## https://docs.rs/regex/latest/regex/#syntax +# history_filter = [ +# "^secret-cmd", +# "^innocuous-cmd .*--secret=.+", +# ] + +## prevent commands run with cwd matching any of these regexes from being written +## to history. Note that these regular expressions are unanchored, i.e. if they don't +## start with ^ or end with $, they'll match anywhere in CWD. +## For details on the supported regular expression syntax, see +## https://docs.rs/regex/latest/regex/#syntax +# cwd_filter = [ +# "^/very/secret/area", +# ] + +## Configure the maximum height of the preview to show. +## Useful when you have long scripts in your history that you want to distinguish +## by more than the first few lines. +# max_preview_height = 4 + +## Configure whether or not to show the help row, which includes the current Atuin +## version (and whether an update is available), a keymap hint, and the total +## amount of commands in your history. +# show_help = true + +## Configure whether or not to show tabs for search and inspect +# show_tabs = true + +## Configure whether or not the tabs row may be auto-hidden, which includes the current Atuin +## tab, such as Search or Inspector, and other tabs you may wish to see. This will +## only be hidden if there are fewer than this count of lines available, and does not affect the use +## of keyboard shortcuts to switch tab. 0 to never auto-hide, default is 8 (lines). +## This is ignored except in `compact` mode. +# auto_hide_height = 8 + +## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include +## 1. AWS key id +## 2. Github pat (old and new) +## 3. Slack oauth tokens (bot, user) +## 4. Slack webhooks +## 5. Stripe live/test keys +# secrets_filter = true + +## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command, +## whereas tab will put the command in the prompt for editing. +## If set to false, both enter and tab will place the command in the prompt for editing. +## This applies for new installs. Old installs will keep the old behaviour unless configured otherwise. +enter_accept = true + +## Defaults to false. If enabled, when triggered after &&, || or |, Atuin will complete commands to chain rather than replace the current line. +# command_chaining = false + +## Defaults to "emacs". This specifies the keymap on the startup of `atuin +## search`. If this is set to "auto", the startup keymap mode in the Atuin +## search is automatically selected based on the shell's keymap where the +## keybinding is defined. If this is set to "emacs", "vim-insert", or +## "vim-normal", the startup keymap mode in the Atuin search is forced to be +## the specified one. +# keymap_mode = "auto" + +## Cursor style in each keymap mode. If specified, the cursor style is changed +## in entering the cursor shape. Available values are "default" and +## "{blink,steady}-{block,underline,bar}". +# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" } + +# network_connect_timeout = 5 +# network_timeout = 5 + +## Timeout (in seconds) for acquiring a local database connection (sqlite) +# local_timeout = 5 + +## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc. +## Alternatively, set env NO_MOTION=true +# prefers_reduced_motion = false + +[stats] +## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl +# common_subcommands = [ +# "apt", +# "cargo", +# "composer", +# "dnf", +# "docker", +# "dotnet", +# "git", +# "go", +# "ip", +# "jj", +# "kubectl", +# "nix", +# "nmcli", +# "npm", +# "pecl", +# "pnpm", +# "podman", +# "port", +# "systemctl", +# "tmux", +# "yarn", +# ] + +## Set commands that should be totally stripped and ignored from stats +# common_prefix = ["sudo"] + +## Set commands that will be completely ignored from stats +# ignored_commands = [ +# "cd", +# "ls", +# "vi" +# ] + +[keys] +# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry. +# scroll_exits = true +# Defaults to true. The left arrow key will exit the TUI when scrolling before the first character +# exit_past_line_start = true +# Defaults to true. The right arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified. +# accept_past_line_end = true +# Defaults to false. The left arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified. +# accept_past_line_start = false +# Defaults to false. The backspace key performs the same functionality as Tab and copies the selected line to the command line to be modified when at the start of the line. +# accept_with_backspace = false + +[sync] +# Enable sync v2 by default +# This ensures that sync v2 is enabled for new installs only +# In a later release it will become the default across the board +records = true + +[preview] +## which preview strategy to use to calculate the preview height (respects max_preview_height). +## possible values: auto, static +## auto: length of the selected command. +## static: length of the longest command stored in the history. +## fixed: use max_preview_height as fixed height. +# strategy = "auto" + +[daemon] +## Enables using the daemon to sync. Requires the daemon to be running in the background. Start it with `atuin daemon` +# enabled = false + +## How often the daemon should sync in seconds +# sync_frequency = 300 + +## The path to the unix socket used by the daemon (on unix systems) +## linux/mac: ~/.local/share/atuin/atuin.sock +## windows: Not Supported +# socket_path = "~/.local/share/atuin/atuin.sock" + +## Use systemd socket activation rather than opening the given path (the path must still be correct for the client) +## linux: false +## mac/windows: Not Supported +# systemd_socket = false + +## The port that should be used for TCP on non unix systems +# tcp_port = 8889 + +# [theme] +## Color theme to use for rendering in the terminal. +## There are some built-in themes, including the base theme ("default"), +## "autumn" and "marine". You can add your own themes to the "./themes" subdirectory of your +## Atuin config (or ATUIN_THEME_DIR, if provided) as TOML files whose keys should be one or +## more of AlertInfo, AlertWarn, AlertError, Annotation, Base, Guidance, Important, and +## the string values as lowercase entries from this list: +## https://ogeon.github.io/docs/palette/master/palette/named/index.html +## If you provide a custom theme file, it should be called "NAME.toml" and the theme below +## should be the stem, i.e. `theme = "NAME"` for your chosen NAME. +# name = "autumn" + +## Whether the theme manager should output normal or extra information to help fix themes. +## Boolean, true or false. If unset, left up to the theme manager. +# debug = true + +[search] +## The list of enabled filter modes, in order of priority. +## The "workspace" mode is skipped when not in a workspace or workspaces = false. +## Default filter mode can be overridden with the filter_mode setting. +# filters = [ "global", "host", "session", "session-preload", "workspace", "directory" ]
A common/dunstify/.config/dunst/dunst/dunstrc

@@ -0,0 +1,436 @@

+# 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 = mouse + + ### Geometry ### + + # dynamic width from 0 to 300 + # width = (0, 300) + # constant width of 300 + #width = 200 + + # The maximum height of a single notification, excluding the frame. + #height = 200 + + # Position the notification in the top right corner + origin = top-center + + # Offset from the origin + offset = (30, 40) + + # Scale factor. It is auto-detected if value is 0. + scale = 0 + + # Maximum number of notification (0 means no limit) + notification_limit = 5 + + ### Progress bar ### + + # Turn on the progess 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 + + + # 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 = 16 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + 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 = 1 + + # Defines color of the frame around the notification window. + frame_color = "#d3c6aa" + + # 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 = auto + + # Sort messages by urgency. + 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 = 0 + + ### Text ### + + font = Noto Sans Regular 9 + + # 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 + # %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 = true + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Align icons left/right/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 = 0 + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 32 + + # Paths to default icons. + #icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ + icon_path = /usr/share/icons/Qogir/16/status:/usr/share/icons/Qogir/16/devices/:/usr/share/icons/Qogir/24/panel/:/usr/share/icons/Qogir/16/apps/:/usr/share/pixmaps/ + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = false + + # Maximum amount of notifications kept in history + history_length = 0 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /home/chris/.dotfiles/bin/dmenu -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 + title = Dunst + + # Define the class of the windows spawned by dunst + 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 = 7 + + # 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 notications 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. + # * 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 + + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + background = "#2b3339" + foreground = "#d3c6aa" + timeout = 5 + # Icon for notifications with low urgency, uncomment to enable + # icon = /usr/share/icons/Arc-X-D/status/16/dialog-information.png + +[urgency_normal] + background = "#2b3339" + foreground = "#d3c6aa" + timeout = 5 + # Icon for notifications with normal urgency, uncomment to enable + # icon = /usr/share/icons/Arc-X-D/status/16/dialog-question.png + +[urgency_critical] + background = "#2b3339" + foreground = "#d3c6aa" + frame_color = "#d699b6" + timeout = 120 + # Icon for notifications with critical urgency, uncomment to enable + # icon = /usr/share/icons/Arc-X-D/status/16/dialog-warning.png + +# 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 +# skip_display +# history_ignore +# action_name +# word_wrap +# ellipsize +# alignment +# +# 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. +# +# 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" +# +# vim: ft=cfg
A common/mime/.config/mimeapps.list

@@ -0,0 +1,31 @@

+[Default Applications] +application/pdf=org.pwmt.zathura.desktop +x-scheme-handler/http=org.qutebrowser.qutebrowser.desktop +x-scheme-handler/https=org.qutebrowser.qutebrowser.desktop +x-scheme-handler/mailto=userapp-Thunderbird-8KD752.desktop +message/rfc822=userapp-Thunderbird-8KD752.desktop +x-scheme-handler/mid=userapp-Thunderbird-8KD752.desktop +x-scheme-handler/news=userapp-Thunderbird-XN2552.desktop +x-scheme-handler/snews=userapp-Thunderbird-XN2552.desktop +x-scheme-handler/nntp=userapp-Thunderbird-XN2552.desktop +x-scheme-handler/feed=userapp-Thunderbird-4PC852.desktop +application/rss+xml=userapp-Thunderbird-4PC852.desktop +application/x-extension-rss=userapp-Thunderbird-4PC852.desktop +x-scheme-handler/webcal=userapp-Thunderbird-7UP752.desktop +text/calendar=userapp-Thunderbird-7UP752.desktop +application/x-extension-ics=userapp-Thunderbird-7UP752.desktop +x-scheme-handler/webcals=userapp-Thunderbird-7UP752.desktop +inode/directory=thunar.desktop + +[Added Associations] +x-scheme-handler/mailto=userapp-Thunderbird-8KD752.desktop;userapp-Thunderbird-IAYNK2.desktop;userapp-Thunderbird-OETMO2.desktop; +x-scheme-handler/mid=userapp-Thunderbird-8KD752.desktop;userapp-Thunderbird-IAYNK2.desktop;userapp-Thunderbird-OETMO2.desktop; +text/plain=nvim.desktop; +x-scheme-handler/news=userapp-Thunderbird-XN2552.desktop; +x-scheme-handler/snews=userapp-Thunderbird-XN2552.desktop; +x-scheme-handler/nntp=userapp-Thunderbird-XN2552.desktop; +x-scheme-handler/feed=userapp-Thunderbird-4PC852.desktop; +application/rss+xml=userapp-Thunderbird-4PC852.desktop; +application/x-extension-rss=userapp-Thunderbird-4PC852.desktop; +x-scheme-handler/webcal=userapp-Thunderbird-7UP752.desktop; +x-scheme-handler/webcals=userapp-Thunderbird-7UP752.desktop;
A common/minimal-nvim/.config/nvim/nvim/init.lua

@@ -0,0 +1,75 @@

+vim.opt.clipboard = 'unnamedplus' +vim.opt.mouse = 'a' +vim.opt.shell='/bin/bash' +vim.opt.undofile = true + +vim.opt.backup=false +vim.opt.writebackup=false +vim.opt.updatetime=300 +vim.opt.signcolumn="yes" +vim.opt.tabstop = 4 -- number of visual spaces per TAB +vim.opt.softtabstop = 4 -- number of spacesin tab when editing +vim.opt.shiftwidth = 4 -- insert 4 spaces on a tab +vim.opt.expandtab = true -- tabs are spaces, mainly because of python +vim.opt.smartindent=true +vim.opt.autoindent=true +vim.opt.smarttab=true + +vim.opt.number = true -- show absolute number +vim.opt.relativenumber = true -- add numbers to each line on the left side +vim.opt.splitbelow = true -- open new vertical split bottom +vim.opt.splitright = true -- open new horizontal splits right +vim.opt.termguicolors = true -- enabl 24-bit RGB color in the TUI + +vim.opt.incsearch = true -- search as characters are entered +vim.opt.ignorecase = true -- ignore case in searches by default +vim.opt.smartcase = true -- but make it case sensitive if an uppercase is entered + +vim.o.laststatus = 0 -- remove statusline + +vim.cmd('set path+=**') -- recursive search with find + +vim.lsp.completion.enable() +vim.cmd('colorscheme everforest') + +vim.keymap.set("n", "<space>c", function() vim.ui.input({}, function(c) if c and c~="" then + vim.cmd("noswapfile vnew") vim.bo.buftype = "nofile" vim.bo.bufhidden = "wipe" + vim.api.nvim_buf_set_lines(0, 0, -1, false, vim.fn.systemlist(c)) end end) end) + +vim.lsp.config['rust_ls'] = { + cmd = { 'rust-analyzer' }, + filetypes = { 'rust' }, +} +vim.lsp.enable('rust_ls') +vim.lsp.config['c_cpp_ls'] = { + cmd = { 'clangd' }, + filetypes = { 'c', 'cpp' }, +} +vim.lsp.enable('c_cpp_ls') +vim.lsp.config['go'] = { + cmd = { 'gopls' }, + filetypes = { 'go' }, +} +vim.lsp.enable('go') + +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('my.lsp', {}), + callback = function(args) + local client = assert(vim.lsp.get_client_by_id(args.data.client_id)) + if client:supports_method('textDocument/completion') then + vim.lsp.completion.enable(true, client.id, args.buf, {autotrigger = true}) + vim.cmd[[set completeopt=noinsert,menuone,fuzzy]] + end + if not client:supports_method('textDocument/willSaveWaitUntil') + and client:supports_method('textDocument/formatting') then + vim.api.nvim_create_autocmd('BufWritePre', { + group = vim.api.nvim_create_augroup('my.lsp', {clear=false}), + buffer = args.buf, + callback = function() + vim.lsp.buf.format({ bufnr = args.buf, id = client.id, timeout_ms = 1000 }) + end, + }) + end + end, +}) +
A common/niri/.config/niri/niri/config.kdl

@@ -0,0 +1,297 @@

+// This config is in the KDL format: https://kdl.dev +// "/-" comments out the following node. +// Check the wiki for a full description of the configuration: +// https://yalter.github.io/niri/Configuration:-Introduction + +// Input device configuration. +// Find the full list of options on the wiki: +// https://yalter.github.io/niri/Configuration:-Input +input { + keyboard { + xkb { + layout "eu" + options "tap" + } + } + + // Next sections include libinput settings. + // Omitting settings disables them, or leaves them at their default values. + // All commented-out settings here are examples, not defaults. + touchpad { + // off + tap + // dwt + // dwtp + // drag false + // drag-lock + natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "two-finger" + // disabled-on-external-mouse + } + + mouse { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "no-scroll" + } + + trackpoint { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "on-button-down" + // scroll-button 273 + // scroll-button-lock + // middle-emulation + } + + // Uncomment this to make the mouse warp to the center of newly focused windows. + // warp-mouse-to-focus + + // Focus windows and outputs automatically when moving the mouse into them. + // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen. + // focus-follows-mouse max-scroll-amount="0%" + focus-follows-mouse +} + +output "DP-1" { + position x=0 y=0 +} + +layout { + gaps 7 + default-column-width { proportion 0.5; } + focus-ring { + width 3 + active-color "#d699b6" + inactive-color "#505050" + } +} + +spawn-at-startup "waybar" +spawn-at-startup "random-wallpaper" +spawn-at-startup "/usr/bin/dunst" +spawn-at-startup "/usr/bin/syncthing" "--no-browser" + +hotkey-overlay { + skip-at-startup +} + +prefer-no-csd + +screenshot-path "~/downloads/screenshots/screenshot_%Y-%m-%d_%H-%M-%S.png" + +window-rule { + geometry-corner-radius 4 + clip-to-geometry true +} + +binds { + Mod+Return { spawn "alacritty"; } + Mod+D { spawn-sh "rofi -modi drun -show drun -config /home/chris/.config/rofi/rofidmenu.rasi"; } + Mod+W { spawn "qtb-load-session"; } + Mod+P { spawn "blur-lock"; } + + // Example volume keys mappings for PipeWire & WirePlumber. + // The allow-when-locked=true property makes them work even when the session is locked. + // Using spawn-sh allows to pass multiple arguments together with the command. + // "-l 1.0" limits the volume to 100%. + XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; } + XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } + XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } + XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } + + // Example media keys mapping using playerctl. + // This will work with any MPRIS-enabled media player. + XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; } + XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; } + XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; } + XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; } + + // Example brightness key mappings for brightnessctl. + // You can use regular spawn with multiple arguments too (to avoid going through "sh"), + // but you need to manually put each argument in separate "" quotes. + XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } + XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } + + Mod+O repeat=false { toggle-overview; } + Mod+Q repeat=false { close-window; } + + Mod+J { focus-window-or-workspace-down; } + Mod+K { focus-window-or-workspace-up; } + Mod+L { focus-column-or-monitor-right; } + Mod+H { focus-column-or-monitor-left; } + + Mod+U { focus-monitor-previous; } + + Mod+Shift+H { move-column-left; } + Mod+Shift+J { move-window-down; } + Mod+Shift+K { move-window-up; } + Mod+Shift+L { move-column-right; } + + Mod+Ctrl+H { focus-monitor-left; } + Mod+Ctrl+J { focus-monitor-down; } + Mod+Ctrl+K { focus-monitor-up; } + Mod+Ctrl+L { focus-monitor-right; } + + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } + + // Alternatively, there are commands to move just a single window: + // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } + // ... + + // And you can also move a whole workspace to another monitor: + // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } + // ... + + + // Alternatively, there are commands to move just a single window: + // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } + // ... + + Mod+Shift+U { move-workspace-down; } + Mod+Shift+I { move-workspace-up; } + + + // You can bind mouse wheel scroll ticks using the following syntax. + // These binds will change direction based on the natural-scroll setting. + // + // To avoid scrolling through workspaces really fast, you can use + // the cooldown-ms property. The bind will be rate-limited to this value. + // You can set a cooldown on any bind, but it's most useful for the wheel. + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + // Usually scrolling up and down with Shift in applications results in + // horizontal scrolling; these binds replicate that. + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + // Similarly, you can bind touchpad scroll "ticks". + // Touchpad scrolling is continuous, so for these binds it is split into + // discrete intervals. + // These binds are also affected by touchpad's natural-scroll, so these + // example binds are "inverted", since we have natural-scroll enabled for + // touchpads by default. + // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } + // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } + + // You can refer to workspaces by index. However, keep in mind that + // niri is a dynamic workspace system, so these commands are kind of + // "best effort". Trying to refer to a workspace index bigger than + // the current workspace count will instead refer to the bottommost + // (empty) workspace. + // + // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on + // will all refer to the 3rd workspace. + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + Mod+Shift+1 { move-column-to-workspace 1; } + Mod+Shift+2 { move-column-to-workspace 2; } + Mod+Shift+3 { move-column-to-workspace 3; } + Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } + + // Alternatively, there are commands to move just a single window: + // Mod+Ctrl+1 { move-window-to-workspace 1; } + + // The following binds move the focused window in and out of a column. + // If the window is alone, they will consume it into the nearby column to the side. + // If the window is already in a column, they will expel it out. + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + + Mod+R { switch-preset-column-width; } + Mod+Shift+R { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } + + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { expand-column-to-available-width; } + + Mod+C { center-column; } + + // Finer width adjustments. + // This command can also: + // * set width in pixels: "1000" + // * adjust width in pixels: "-5" or "+5" + // * set width as a percentage of screen width: "25%" + // * adjust width as a percentage of screen width: "-10%" or "+10%" + // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, + // set-column-width "100" will make the column occupy 200 physical screen pixels. + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + + // Finer height adjustments when in column with other windows. + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Equal { set-window-height "+10%"; } + + // Move the focused window between the floating and the tiling layout. + Mod+V { toggle-window-floating; } + Mod+Shift+V { switch-focus-between-floating-and-tiling; } + + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + // Mod+W { toggle-column-tabbed-display; } + + // Actions to switch layouts. + // Note: if you uncomment these, make sure you do NOT have + // a matching layout switch hotkey configured in xkb options above. + // Having both at once on the same hotkey will break the switching, + // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). + // Mod+Space { switch-layout "next"; } + // Mod+Shift+Space { switch-layout "prev"; } + + Mod+Ctrl+S { screenshot; } + + // Applications such as remote-desktop clients and software KVM switches may + // request that niri stops processing the keyboard shortcuts defined here + // so they may, for example, forward the key presses as-is to a remote machine. + // It's a good idea to bind an escape hatch to toggle the inhibitor, + // so a buggy application can't hold your session hostage. + // + // The allow-inhibiting=false property can be applied to other binds as well, + // which ensures niri always processes them, even when an inhibitor is active. + + // The quit action will show a confirmation dialog to avoid accidental exits. + Mod+Shift+E { spawn "powermenu"; } + + // Powers off the monitors. To turn them back on, do any input like + // moving the mouse or pressing any other key. + Mod+Shift+P { spawn "rofi-rbw"; } + Mod+Shift+O { spawn "zathura-fzf" "/home/chris/uni/" "/home/chris/downloads" "/home/chris/projects"; } + Mod+Shift+B { spawn "bluetooth-devices"; } + Mod+Shift+W { spawn "qutebrowser"; } + Mod+Ctrl+C { spawn "wl-color-picker"; } +}
A common/nix/.config/nix/nix/nix.conf

@@ -0,0 +1,1 @@

+experimental-features = nix-command flakes
A common/qutebrowser/.config/qutebrowser/qutebrowser/.gitignore

@@ -0,0 +1,2 @@

+__pycache__ +qsettings/QtProject.conf
A common/qutebrowser/.config/qutebrowser/qutebrowser/autoconfig.yml

@@ -0,0 +1,19 @@

+# If a config.py file exists, this file is ignored unless it's explicitly loaded +# via config.load_autoconfig(). For more information, see: +# https://github.com/qutebrowser/qutebrowser/blob/main/doc/help/configuring.asciidoc#loading-autoconfigyml +# DO NOT edit this file by hand, qutebrowser will overwrite it. +# Instead, create a config.py - see :help for details. + +config_version: 2 +settings: + content.javascript.enabled: + global: true + content.notifications.enabled: + https://www.netflix.com: false + downloads.prevent_mixed_content: + global: false + qt.args: + global: + - ppapi-widevine-path=/usr/lib/qt6/plugins/ppapi/libwidevinecdm.so + url.start_pages: + global: https://dash.krinitsin.com
A common/qutebrowser/.config/qutebrowser/qutebrowser/bookmarks/urls

@@ -0,0 +1,9 @@

+https://www.planetebook.com/ 100% Free eBooks for All Devices +https://www.ikea.com/de/de/p/malm-bettgestell-hoch-mit-2-schubkaesten-weiss-s19175957/ MALM Bettgestell hoch mit 2 Schubkästen, weiß, 180x200 cm - IKEA Deutschland +https://maddie.wtf/posts/2025-07-21-jujutsu-for-busy-devs Jujutsu For Busy Devs | maddie, wtf?! +https://chubbiesbyash.com/crochet-miffy-in-overalls-free-amigurumi-pattern/ haha +https://blog.trailofbits.com/2024/05/16/understanding-addresssanitizer-better-memory-safety-for-your-code/ Understanding AddressSanitizer: Better memory safety for your code - The Trail of Bits Blog +https://notes.krinitsin.com/ccc ccc +https://duckduckgo.com/?q=rust+iterate+two+times+over+vector&ia=web rust iterate two times over vector at DuckDuckGo +https://github.com/ckrinitsin/ccc ckrinitsin/ccc: chris' c compiler +https://thegameslayer.com/lists/best-pokemon-rom-hacks-of-2025-ranked/ 10 Best Pokemon ROM Hacks of 2025, Ranked
A common/qutebrowser/.config/qutebrowser/qutebrowser/config.py

@@ -0,0 +1,37 @@

+from qutebrowser.api import interceptor +config = config +c = c + +# apply colors +import everforest.draw +everforest.draw.color(c) + +config.set("input.mode_override", "passthrough", "cad.onshape.com") + +# Bindings +config.bind('J', ':tab-prev') +config.bind('K', ':tab-next') +config.bind("wd", "set content.javascript.enabled false") +config.bind("we", "set content.javascript.enabled true") + +c.content.javascript.clipboard="access-paste" + +config.set("downloads.location.suggestion", "both") + +c.editor.command = ["alacritty", "-e", "nvim", "{}"] + +c.colors.webpage.preferred_color_scheme = 'dark' + +config.bind(',m', 'spawn mpv {url}') +config.bind(',M', 'hint links spawn mpv {hint-url}') + +# Block ads in yt +def filter_yt(info: interceptor.Request): + url = info.request_url + if (url.host() == 'www.youtube.com' and url.path() == '/get_video_info' and '&adformat=' in url.query()): + info.block() + +interceptor.register(filter_yt) + +# Load existing settings made via :set +config.load_autoconfig()
A common/qutebrowser/.config/qutebrowser/qutebrowser/everforest/draw.py

@@ -0,0 +1,300 @@

+def color(c, options = {}): + palette = { + 'background': '#2b3339', + 'background-alt': '#2d353b', + 'background-attention': '#2b3339', + 'border': '#2b3339', + 'current-line': '#4f585e', + 'selection': '#4f585e', + 'foreground': '#d3c6aa', + 'foreground-alt': '#d3c6aa', + 'foreground-attention': '#859289', + 'comment': '#3a515d', + 'cyan': '#7fbbb3', + 'green': '#a7c080', + 'orange': '#e69875', + 'pink': '#83c092', + 'purple': '#d699b6', + 'red': '#e67e80', + 'yellow': '#dbbc7f', + 'black': '#000000' + } + + spacing = { + 'vertical': 6, + 'horizontal': 8 + } + + padding = options.get('padding', { + 'top': spacing['vertical'], + 'right': spacing['horizontal'], + 'bottom': spacing['vertical'], + 'left': spacing['horizontal'] + }) + + ## Background color of the completion widget category headers. + c.colors.completion.category.bg = palette['background'] + + ## Bottom border color of the completion widget category headers. + c.colors.completion.category.border.bottom = palette['border'] + + ## Top border color of the completion widget category headers. + c.colors.completion.category.border.top = palette['border'] + + ## Foreground color of completion widget category headers. + c.colors.completion.category.fg = palette['foreground'] + + ## Background color of the completion widget for even rows. + c.colors.completion.even.bg = palette['background'] + + ## Background color of the completion widget for odd rows. + c.colors.completion.odd.bg = palette['background-alt'] + + ## Text color of the completion widget. + c.colors.completion.fg = palette['foreground'] + + ## Background color of the selected completion item. + c.colors.completion.item.selected.bg = palette['selection'] + + ## Bottom border color of the selected completion item. + c.colors.completion.item.selected.border.bottom = palette['selection'] + + ## Top border color of the completion widget category headers. + c.colors.completion.item.selected.border.top = palette['selection'] + + ## Foreground color of the selected completion item. + c.colors.completion.item.selected.fg = palette['foreground'] + + ## Foreground color of the matched text in the completion. + c.colors.completion.match.fg = palette['orange'] + + ## Color of the scrollbar in completion view + c.colors.completion.scrollbar.bg = palette['background'] + + ## Color of the scrollbar handle in completion view. + c.colors.completion.scrollbar.fg = palette['foreground'] + + ## Background color for the download bar. + c.colors.downloads.bar.bg = palette['background'] + + ## Background color for downloads with errors. + c.colors.downloads.error.bg = palette['background'] + + ## Foreground color for downloads with errors. + c.colors.downloads.error.fg = palette['red'] + + ## Color gradient stop for download backgrounds. + c.colors.downloads.stop.bg = palette['background'] + + ## Color gradient interpolation system for download backgrounds. + ## Type: ColorSystem + ## Valid values: + ## - rgb: Interpolate in the RGB color system. + ## - hsv: Interpolate in the HSV color system. + ## - hsl: Interpolate in the HSL color system. + ## - none: Don't show a gradient. + c.colors.downloads.system.bg = 'none' + + ## Background color for hints. Note that you can use a `rgba(...)` value + ## for transparency. + c.colors.hints.bg = palette['background'] + + ## Font color for hints. + c.colors.hints.fg = palette['purple'] + + ## Hints + c.hints.border = '1px solid ' + palette['background-alt'] + + ## Font color for the matched part of hints. + c.colors.hints.match.fg = palette['foreground-alt'] + + ## Background color of the keyhint widget. + c.colors.keyhint.bg = palette['background'] + + ## Text color for the keyhint widget. + c.colors.keyhint.fg = palette['purple'] + + ## Highlight color for keys to complete the current keychain. + c.colors.keyhint.suffix.fg = palette['selection'] + + ## Background color of an error message. + c.colors.messages.error.bg = palette['background'] + + ## Border color of an error message. + c.colors.messages.error.border = palette['background-alt'] + + ## Foreground color of an error message. + c.colors.messages.error.fg = palette['red'] + + ## Background color of an info message. + c.colors.messages.info.bg = palette['background'] + + ## Border color of an info message. + c.colors.messages.info.border = palette['background-alt'] + + ## Foreground color an info message. + c.colors.messages.info.fg = palette['comment'] + + ## Background color of a warning message. + c.colors.messages.warning.bg = palette['background'] + + ## Border color of a warning message. + c.colors.messages.warning.border = palette['background-alt'] + + ## Foreground color a warning message. + c.colors.messages.warning.fg = palette['red'] + + ## Background color for prompts. + c.colors.prompts.bg = palette['background'] + + # ## Border used around UI elements in prompts. + c.colors.prompts.border = '1px solid ' + palette['background-alt'] + + ## Foreground color for prompts. + c.colors.prompts.fg = palette['cyan'] + + ## Background color for the selected item in filename prompts. + c.colors.prompts.selected.bg = palette['selection'] + + ## Background color of the statusbar in caret mode. + c.colors.statusbar.caret.bg = palette['background'] + + ## Foreground color of the statusbar in caret mode. + c.colors.statusbar.caret.fg = palette['orange'] + + ## Background color of the statusbar in caret mode with a selection. + c.colors.statusbar.caret.selection.bg = palette['background'] + + ## Foreground color of the statusbar in caret mode with a selection. + c.colors.statusbar.caret.selection.fg = palette['orange'] + + ## Background color of the statusbar in command mode. + c.colors.statusbar.command.bg = palette['background'] + + ## Foreground color of the statusbar in command mode. + c.colors.statusbar.command.fg = palette['pink'] + + ## Background color of the statusbar in private browsing + command mode. + c.colors.statusbar.command.private.bg = palette['background'] + + ## Foreground color of the statusbar in private browsing + command mode. + c.colors.statusbar.command.private.fg = palette['foreground-alt'] + + ## Background color of the statusbar in insert mode. + c.colors.statusbar.insert.bg = palette['background-attention'] + + ## Foreground color of the statusbar in insert mode. + c.colors.statusbar.insert.fg = palette['foreground-attention'] + + ## Background color of the statusbar. + c.colors.statusbar.normal.bg = palette['background'] + + ## Foreground color of the statusbar. + c.colors.statusbar.normal.fg = palette['foreground'] + + ## Background color of the statusbar in passthrough mode. + c.colors.statusbar.passthrough.bg = palette['background'] + + ## Foreground color of the statusbar in passthrough mode. + c.colors.statusbar.passthrough.fg = palette['orange'] + + ## Background color of the statusbar in private browsing mode. + c.colors.statusbar.private.bg = palette['background-alt'] + + ## Foreground color of the statusbar in private browsing mode. + c.colors.statusbar.private.fg = palette['foreground-alt'] + + ## Background color of the progress bar. + c.colors.statusbar.progress.bg = palette['background'] + + ## Foreground color of the URL in the statusbar on error. + c.colors.statusbar.url.error.fg = palette['red'] + + ## Default foreground color of the URL in the statusbar. + c.colors.statusbar.url.fg = palette['foreground'] + + ## Foreground color of the URL in the statusbar for hovered links. + c.colors.statusbar.url.hover.fg = palette['cyan'] + + ## Foreground color of the URL in the statusbar on successful load + c.colors.statusbar.url.success.http.fg = palette['green'] + + ## Foreground color of the URL in the statusbar on successful load + c.colors.statusbar.url.success.https.fg = palette['green'] + + ## Foreground color of the URL in the statusbar when there's a warning. + c.colors.statusbar.url.warn.fg = palette['yellow'] + + ## Status bar padding + c.statusbar.padding = padding + + ## Background color of the tab bar. + ## Type: QtColor + c.colors.tabs.bar.bg = palette['selection'] + + ## Background color of unselected even tabs. + ## Type: QtColor + c.colors.tabs.even.bg = palette['selection'] + + ## Foreground color of unselected even tabs. + ## Type: QtColor + c.colors.tabs.even.fg = palette['foreground'] + + ## Color for the tab indicator on errors. + ## Type: QtColor + c.colors.tabs.indicator.error = palette['red'] + + ## Color gradient start for the tab indicator. + ## Type: QtColor + c.colors.tabs.indicator.start = palette['orange'] + + ## Color gradient end for the tab indicator. + ## Type: QtColor + c.colors.tabs.indicator.stop = palette['green'] + + ## Color gradient interpolation system for the tab indicator. + ## Type: ColorSystem + ## Valid values: + ## - rgb: Interpolate in the RGB color system. + ## - hsv: Interpolate in the HSV color system. + ## - hsl: Interpolate in the HSL color system. + ## - none: Don't show a gradient. + c.colors.tabs.indicator.system = 'none' + + ## Background color of unselected odd tabs. + ## Type: QtColor + c.colors.tabs.odd.bg = palette['selection'] + + ## Foreground color of unselected odd tabs. + ## Type: QtColor + c.colors.tabs.odd.fg = palette['foreground'] + + # ## Background color of selected even tabs. + # ## Type: QtColor + c.colors.tabs.selected.even.bg = palette['background'] + + # ## Foreground color of selected even tabs. + # ## Type: QtColor + c.colors.tabs.selected.even.fg = palette['foreground'] + + # ## Background color of selected odd tabs. + # ## Type: QtColor + c.colors.tabs.selected.odd.bg = palette['background'] + + # ## Foreground color of selected odd tabs. + # ## Type: QtColor + c.colors.tabs.selected.odd.fg = palette['foreground'] + + ## Tab padding + c.tabs.padding = padding + c.tabs.indicator.width = 1 + c.tabs.favicons.scale = 1 + + c.colors.contextmenu.menu.bg = palette['background'] + c.colors.contextmenu.selected.bg = palette['foreground'] + + c.colors.contextmenu.menu.fg = palette['foreground'] + c.colors.contextmenu.selected.fg = palette['background'] + + c.colors.contextmenu.disabled.bg = palette['selection'] + c.colors.contextmenu.disabled.fg = palette['black']
A common/qutebrowser/.config/qutebrowser/qutebrowser/quickmarks

@@ -0,0 +1,8 @@

+everforest https://user-images.githubusercontent.com/58662350/214382352-cd7a4f63-e6ef-4575-82c0-a8b72aa37c0c.png +moo https://www.moodle.tum.de/my/ +yt https://www.youtube.com/ +tumlive https://live.rbg.tum.de/ +zu https://zulip.in.tum.de/ +tum https://campus.tum.de/tumonline/ +scp https://www.servercontrolpanel.de/SCP/Login +ccp https://www.customercontrolpanel.de/start.php
A common/rbw/.config/rbw/rbw/config.json

@@ -0,0 +1,1 @@

+{"email":"mail@krinitsin.com","sso_id":null,"base_url":"https://vault.krinitsin.com","identity_url":null,"ui_url":null,"notifications_url":null,"lock_timeout":3600,"sync_interval":3600,"pinentry":"pinentry-rofi","client_cert_path":null}
A common/rofi/.config/rofi/rofi/arc_dark_colors.rasi

@@ -0,0 +1,34 @@

+/******************************************************* + * ROFI Arc Dark colors for EndeavourOS + * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com] + *******************************************************/ +* { + selected-normal-foreground: rgba ( 249, 249, 249, 100 % ); + foreground: rgba ( 196, 203, 212, 100 % ); + normal-foreground: @foreground; + alternate-normal-background: rgba ( 64, 69, 82, 59 % ); + red: rgba ( 220, 50, 47, 100 % ); + selected-urgent-foreground: rgba ( 249, 249, 249, 100 % ); + blue: rgba ( 38, 139, 210, 100 % ); + urgent-foreground: rgba ( 204, 102, 102, 100 % ); + alternate-urgent-background: rgba ( 75, 81, 96, 90 % ); + active-foreground: rgba ( 101, 172, 255, 100 % ); + lightbg: rgba ( 238, 232, 213, 100 % ); + selected-active-foreground: rgba ( 249, 249, 249, 100 % ); + alternate-active-background: rgba ( 75, 81, 96, 89 % ); + background: rgba ( 45, 48, 59, 95 % ); + alternate-normal-foreground: @foreground; + normal-background: @background; + lightfg: rgba ( 88, 104, 117, 100 % ); + selected-normal-background: rgba ( 64, 132, 214, 100 % ); + border-color: rgba ( 124, 131, 137, 100 % ); + spacing: 2; + separatorcolor: rgba ( 29, 31, 33, 100 % ); + urgent-background: rgba ( 29, 31, 33, 17 % ); + selected-urgent-background: rgba ( 165, 66, 66, 100 % ); + alternate-urgent-foreground: @urgent-foreground; + background-color: rgba ( 0, 0, 0, 0 % ); + alternate-active-foreground: @active-foreground; + active-background: rgba ( 29, 31, 33, 17 % ); + selected-active-background: rgba ( 68, 145, 237, 100 % ); +}
A common/rofi/.config/rofi/rofi/arc_dark_transparent_colors.rasi

@@ -0,0 +1,34 @@

+/******************************************************* + * ROFI Arch Dark Transparent colors for EndeavourOS + * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com] + *******************************************************/ +* { + selected-normal-foreground: rgba ( 35, 42, 46, 100 % ); + foreground: rgba ( 211, 198, 170, 100 % ); + normal-foreground: @foreground; + alternate-normal-background: rgba ( 45, 48, 59, 1 % ); + red: rgba ( 220, 50, 47, 100 % ); + selected-urgent-foreground: rgba ( 249, 249, 249, 100 % ); + blue: rgba ( 38, 139, 210, 100 % ); + urgent-foreground: rgba ( 204, 102, 102, 100 % ); + alternate-urgent-background: rgba ( 75, 81, 96, 90 % ); + active-foreground: rgba ( 101, 172, 255, 100 % ); + lightbg: rgba ( 238, 232, 213, 100 % ); + selected-active-foreground: rgba ( 249, 249, 249, 100 % ); + alternate-active-background: rgba ( 45, 48, 59, 88 % ); + background: rgba ( 43, 51, 57, 100 % ); + alternate-normal-foreground: @foreground; + normal-background: rgba ( 45, 48, 59, 1 % ); + lightfg: rgba ( 88, 104, 117, 100 % ); + selected-normal-background: rgba ( 122, 132, 120, 100 % ); + border-color: rgba (33, 39, 54, 100 % ); + spacing: 2; + separatorcolor: rgba ( 45, 48, 59, 1 % ); + urgent-background: rgba ( 45, 48, 59, 15 % ); + selected-urgent-background: rgba ( 165, 66, 66, 100 % ); + alternate-urgent-foreground: @urgent-foreground; + background-color: rgba ( 0, 0, 0, 0 % ); + alternate-active-foreground: @active-foreground; + active-background: rgba ( 29, 31, 33, 17 % ); + selected-active-background: rgba ( 26, 28, 35, 100 % ); +}
A common/rofi/.config/rofi/rofi/config.rasi

@@ -0,0 +1,7 @@

+//@theme "/usr/share/rofi/themes/Arc-Dark.rasi" +@import "~/.config/rofi/arc_dark_transparent_colors.rasi" + +configuration { + font: "DroidSansM Nerd Font 11"; + show-icons: true; +}
A common/rofi/.config/rofi/rofi/power-profiles.rasi

@@ -0,0 +1,120 @@

+/******************************************************* + * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com] + *******************************************************/ +configuration { + font: "Noto Sans Regular 10"; + show-icons: false; + icon-theme: "Qogir"; + scroll-method: 0; + disable-history: false; + fullscreen: false; + hide-scrollbar: true; + sidebar-mode: false; +} + +@import "~/.config/rofi/arc_dark_transparent_colors.rasi" + + +window { + background-color: @background; + border: 2; + padding: 10; + transparency: "real"; + width: 170px; + location: east; + x-offset: -20; + /*y-offset: 18;*/ +} +listview { + lines: 4; + columns: 1; +} +element { + border: 0; + padding: 1px; +} +element-text { + background-color: inherit; + text-color: inherit; +} +element.normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} +element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} +element.normal.active { + background-color: @active-background; + text-color: @active-foreground; +} +element.selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} +element.selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} +element.alternate.normal { + background-color: @alternate-normal-background; + text-color: @alternate-normal-foreground; +} +element.alternate.urgent { + background-color: @alternate-urgent-background; + text-color: @alternate-urgent-foreground; +} +element.alternate.active { + background-color: @alternate-active-background; + text-color: @alternate-active-foreground; +} +scrollbar { + width: 4px; + border: 0; + handle-color: @normal-foreground; + handle-width: 8px; + padding: 0; +} +mode-switcher { + border: 2px 0px 0px; + border-color: @separatorcolor; +} +button { + spacing: 0; + text-color: @normal-foreground; +} +button.selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +inputbar { + spacing: 0; + text-color: @normal-foreground; + padding: 1px; +} +case-indicator { + spacing: 0; + text-color: @normal-foreground; +} +entry { + spacing: 0; + text-color: @normal-foreground; +} +prompt { + spacing: 0; + text-color: @normal-foreground; +} +inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +textbox-prompt-colon { + expand: false; + str: "Set Power Profile:"; + margin: 0px 0.3em 0em 0em; + text-color: @normal-foreground; +}
A common/rofi/.config/rofi/rofi/powermenu.rasi

@@ -0,0 +1,124 @@

+/******************************************************* + * ROFI configs i3 powermenu for EndeavourOS + * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com] + *******************************************************/ +configuration { + font: "Noto Sans Regular 10"; + show-icons: false; + icon-theme: "Qogir"; + scroll-method: 0; + disable-history: false; + sidebar-mode: false; +} + +@import "~/.config/rofi/arc_dark_transparent_colors.rasi" + +window { + background-color: @background; + border: 2; + padding: 10; + transparency: "real"; + width: 120px; + location: east; + x-offset: -20; + /*y-offset: 18;*/ +} +listview { + lines: 7; + columns: 1; + scrollbar: false; +} +element { + border: 0; + padding: 1px; +} +element-text { + background-color: inherit; + text-color: inherit; +} +element.normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} +element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} +element.normal.active { + background-color: @active-background; + text-color: @active-foreground; +} +element.selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} +element.selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} +element.alternate.normal { + background-color: @alternate-normal-background; + text-color: @alternate-normal-foreground; +} +element.alternate.urgent { + background-color: @alternate-urgent-background; + text-color: @alternate-urgent-foreground; +} +element.alternate.active { + background-color: @alternate-active-background; + text-color: @alternate-active-foreground; +} +scrollbar { + width: 4px; + border: 0; + handle-color: @normal-foreground; + handle-width: 8px; + padding: 0; +} +mode-switcher { + border: 2px 0px 0px; + border-color: @separatorcolor; +} +button { + spacing: 0; + text-color: @normal-foreground; +} +button.selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +inputbar { + spacing: 0; + text-color: @normal-foreground; + padding: 1px; +} +case-indicator { + spacing: 0; + text-color: @normal-foreground; +} +entry { + spacing: 0; + text-color: @normal-foreground; +} +prompt { + spacing: 0; + text-color: @normal-foreground; +} +inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em; + text-color: @normal-foreground; +} + +/*removes the text input line*/ +mainbox { + children: [listview]; +}
A common/rofi/.config/rofi/rofi/rofidmenu.rasi

@@ -0,0 +1,135 @@

+/******************************************************* + * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com] + *******************************************************/ +configuration { + font: "Noto Sans Regular 10"; + show-icons: true; + icon-theme: "Qogir"; + display-drun: "Apps"; + drun-display-format: "{name}"; + scroll-method: 0; + disable-history: false; + sidebar-mode: false; +} + +@import "~/.config/rofi/arc_dark_transparent_colors.rasi" + +window { + background-color: @background; + border: 2; + padding: 30; +} +listview { + lines: 10; + columns: 4; +} +mainbox { + border: 0; + padding: 0; +} +message { + border: 2px 0px 0px; + border-color: @separatorcolor; + padding: 1px; +} +textbox { + text-color: @foreground; +} +listview { + fixed-height: 0; + border: 8px 0px 0px; + border-color: @separatorcolor; + spacing: 8px; + scrollbar: false; + padding: 2px 0px 0px; +} +element { + border: 0; + padding: 1px; +} +element-text { + background-color: inherit; + text-color: inherit; +} +element.normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} +element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} +element.normal.active { + background-color: @active-background; + text-color: @active-foreground; +} +element.selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} +element.selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} +element.alternate.normal { + background-color: @alternate-normal-background; + text-color: @alternate-normal-foreground; +} +element.alternate.urgent { + background-color: @alternate-urgent-background; + text-color: @alternate-urgent-foreground; +} +element.alternate.active { + background-color: @alternate-active-background; + text-color: @alternate-active-foreground; +} +scrollbar { + width: 4px; + border: 0; + handle-color: @normal-foreground; + handle-width: 8px; + padding: 0; +} +mode-switcher { + border: 2px 0px 0px; + border-color: @separatorcolor; +} +button { + spacing: 0; + text-color: @normal-foreground; +} +button.selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +inputbar { + spacing: 0; + text-color: @normal-foreground; + padding: 1px; +} +case-indicator { + spacing: 0; + text-color: @normal-foreground; +} +entry { + spacing: 0; + placeholder: ""; + text-color: @normal-foreground; +} +prompt { + spacing: 0; + text-color: @normal-foreground; +} +inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em; + text-color: @normal-foreground; +}
A common/rofi/.config/rofi/rofi/rofikeyhint.rasi

@@ -0,0 +1,137 @@

+/******************************************************* + * ROFI configs i3 keyhint-menu for EndeavourOS + * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com] + *******************************************************/ +configuration { + font: "Noto Sans Regular 10"; + show-icons: false; + icon-theme: "Qogir"; + display-drun: "KeyHint"; + drun-display-format: "{name}"; + scroll-method: 0; + disable-history: false; + fullscreen: false; + hide-scrollbar: true; + sidebar-mode: false; +} + +@import "~/.config/rofi/arc_dark_transparent_colors.rasi" + +window { + background-color: @background; + border: 0; + padding: 30; +} +listview { + lines: 10; + columns: 1; +} +mainbox { + border: 0; + padding: 0; +} +message { + border: 2px 0px 0px; + border-color: @separatorcolor; + padding: 1px; +} +textbox { + text-color: @foreground; +} +listview { + fixed-height: 0; + border: 8px 0px 0px; + border-color: @separatorcolor; + spacing: 8px; + scrollbar: false; + padding: 2px 0px 0px; +} +element { + border: 0; + padding: 1px; +} +element-text { + background-color: inherit; + text-color: inherit; +} +element.normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} +element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} +element.normal.active { + background-color: @active-background; + text-color: @active-foreground; +} +element.selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} +element.selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} +element.alternate.normal { + background-color: @alternate-normal-background; + text-color: @alternate-normal-foreground; +} +element.alternate.urgent { + background-color: @alternate-urgent-background; + text-color: @alternate-urgent-foreground; +} +element.alternate.active { + background-color: @alternate-active-background; + text-color: @alternate-active-foreground; +} +scrollbar { + width: 4px; + border: 0; + handle-color: @normal-foreground; + handle-width: 8px; + padding: 0; +} +mode-switcher { + border: 2px 0px 0px; + border-color: @separatorcolor; +} +button { + spacing: 0; + text-color: @normal-foreground; +} +button.selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +inputbar { + spacing: 0; + text-color: @normal-foreground; + padding: 1px; +} +case-indicator { + spacing: 0; + text-color: @normal-foreground; +} +entry { + spacing: 0; + text-color: @normal-foreground; +} +prompt { + spacing: 0; + text-color: @normal-foreground; +} +inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em; + text-color: @normal-foreground; +}
A common/sway/.config/sway/sway/config

@@ -0,0 +1,173 @@

+font pango: Noto Sans Regular 10 + +set $mod Mod4 +set $ws1 "1" +set $ws2 "2" +set $ws3 "3" +set $ws4 "4" +set $ws5 "5" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" +set $ws10 "10" + +workspace_layout default +default_border pixel 2 + +client.focused "#ffffff" "#d699b6" "#ffffff" "#e69875" +client.focused_inactive "#ffffff" "#83c092" "#ffffff" "#e69875" + +gaps inner 6 +gaps outer 3 + +xwayland enable + +# border +for_window [class="."] border pixel 2 +smart_borders on + +# layout container +bindsym $mod+b split h +bindsym $mod+v split v +bindsym $mod+f fullscreen toggle +bindsym $mod+s layout stacking +bindsym $mod+e layout toggle split +bindsym $mod+Shift+space floating toggle +bindsym $mod+space focus mode_toggle +bindsym $mod+a focus parent + +# change focus +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 +bindsym $mod+9 workspace $ws9 +bindsym $mod+0 workspace $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8 +bindsym $mod+Shift+9 move container to workspace $ws9 +bindsym $mod+Shift+0 move container to workspace $ws10 + +workspace 1 output DP-1 +workspace 2 output DP-1 +workspace 3 output DP-1 +workspace 4 output DP-1 +workspace 5 output DP-1 +workspace 6 output HDMI-A-1 +workspace 7 output HDMI-A-1 +workspace 8 output HDMI-A-1 +workspace 9 output HDMI-A-1 +workspace 0 output HDMI-A-1 + +output DP-1 pos 0 0 +output HDMI-A-1 pos 2560 0 + +# resize mode +bindsym $mod+r mode "resize" +mode "resize" { + bindsym h resize shrink width 5 px or 5 ppt + bindsym j resize grow height 5 px or 5 ppt + bindsym k resize shrink height 5 px or 5 ppt + bindsym l resize grow width 5 px or 5 ppt + + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym q mode "default" +} + +bindsym $mod+q kill + +# apps and window manager +bindsym $mod+d exec rofi -modi drun -show drun -config ~/.config/rofi/rofidmenu.rasi +bindsym $mod+t exec rofi -show window -config ~/.config/rofi/rofidmenu.rasi + +bindsym $mod+Shift+t exec thunderbird +bindsym $mod+Shift+w exec qutebrowser +bindsym $mod+Return exec alacritty +bindsym $mod+Shift+e exec powermenu +bindsym $mod+p exec blur-lock +bindsym $mod+c exec wl-color-picker + +bindsym $mod+Shift+c reload +bindsym $mod+Shift+r restart + +# multimedia +bindsym XF86MonBrightnessUp exec --no-startup-id volume_brightness brightness_up +bindsym XF86MonBrightnessDown exec --no-startup-id volume_brightness brightness_down +bindsym XF86AudioRaiseVolume exec --no-startup-id volume_brightness volume_up +bindsym XF86AudioLowerVolume exec --no-startup-id volume_brightness volume_down +bindsym XF86AudioMute exec --no-startup-id volume_brightness volume_mute +bindsym XF86AudioMicMute exec amixer sset Capture toggle +bindsym XF86AudioPlay exec playerctl play-pause +bindsym XF86AudioPause exec playerctl play-pause +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPrev exec playerctl previous +bindsym $mod+Ctrl+s exec screenshot + +# custom scripts +bindsym $mod+Shift+o exec zathura-fzf /home/chris/uni/ /home/chris/downloads /home/chris/projects +bindsym $mod+Shift+b exec bluetooth-devices +bindsym $mod+w exec qtb-load-session +bindsym $mod+Shift+s exec run-spotify-player +bindsym $mod+Shift+p exec rofi-rbw +bindsym $mod+Ctrl+w exec random-wallpaper +bindsym $mod+u exec toggle_monitor_focus +bindsym $mod+Shift+m exec prismlauncher -l 1.21.10 -s krinitsin.com +bindsym $mod+Shift+g exec steam-launcher +bindsym $mod+Shift+v exec vpn_toggle -i + +# screensharing +exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway + +# autostart +exec --no-startup-id /usr/bin/dunst +exec --no-startup-id /usr/bin/syncthing --no-browser +exec_always --no-startup-id random-wallpaper + +input * { + xkb_layout "eu" + tap enabled +} + +bar { + swaybar_command waybar + workspace_buttons yes +}
A common/waybar/.config/waybar/waybar/colors.css

@@ -0,0 +1,12 @@

+@define-color background-darker #2b3339; +@define-color background #2b3339; +@define-color selection #44475a; +@define-color foreground #d3c6aa; +@define-color comment #445055; +@define-color cyan #7fbbb3; +@define-color green #83c092; +@define-color orange #ffb86c; +@define-color pink #ff79c6; +@define-color purple #d699b6; +@define-color red #e67e80; +@define-color yellow #f1fa8c;
A common/waybar/.config/waybar/waybar/config

@@ -0,0 +1,174 @@

+{ + // "layer": "top", // Waybar at top layer + "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 20, // Waybar height (to be removed for auto height) + "spacing": 2, // Gaps between modules (4px) + "modules-left": ["sway/workspaces", "niri/workspaces", "sway/mode", "sway/scratchpad", "custom/media"], + "modules-right": ["custom/zeit", "custom/pomodoro", "pulseaudio", "network", "cpu", "memory", "disk", "temperature", "battery", "clock", "tray"], + + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "sway/mode": { + "format": "<span style=\"italic\">{}</span>" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "tooltip": true, + "tooltip-format": "{app}: {title}" + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "unknown-tag": "N/A", + "interval": 2, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": "<span color=\"#f53c3c\"></span> ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + "clock": { + "timezone": "Europe/Berlin", + "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>", + "format": "{:%d %h %Y - %R}", + "on-click": "alacritty -e calcurse", + }, + "cpu": { + "format": " {usage}%", + "tooltip": false + }, + "memory": { + "format": " {avail}GiB", + "tooltip": false + }, + "disk": { + "format": " {free}", + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + "format": "{icon} {temperatureC}°C", + "format-icons": ["", "", ""], + "tooltip": false + }, + "backlight": { + // "device": "acpi_video1", + "format": "{icon} {percent}%", + "format-icons": ["", "", "", "", "", "", "", "", ""], + "tooltip": false + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{icon} {time}", + "format-good": "", // An empty format will hide the module + "format-full": "", + "format-icons": [" ", " ", " ", " ", " "], + //"exec": "~/.config/waybar/scripts/battery" + "interval": 5 + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": " {bandwidthTotalBytes}", + "format-ethernet": " {bandwidthTotalBytes}", + "format-linked": " {ifname} (No IP)", + "format-disconnected": " ⚠", + "on-click": "alacritty -e nmtui", + "tooltip": false + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{icon} {volume}%", + "format-bluetooth": "{volume}% ", + "format-bluetooth-muted": " ", + "format-muted": " ", + "format-icons": { + "default": ["", " ", " "] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "spotify": "", + "default": "🎜" + }, + "escape": true, + "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + }, + "custom/pacman": { + "format": " {}", + "interval": 30, // every hour + "exec": "pacman -Qu | wc -l", // # of updates + "exec-if": "exit 0", // always run; consider advanced run conditions + "on-click": "alacritty -e yay; pkill -SIGRTMIN+8 waybar", // update system + "signal": 8, + "tooltip": false + }, + "custom/mail": { + "format": " {}", + "exec": "curl -X GET http://krinitsin.com:5000/mail/api/get_mail_count", + "interval": 10, + "on-click": "thunderbird" + }, + "custom/pomodoro": { + "format": "{} ", + "return-type": "json", + "exec": "waybar-module-pomodoro", + "on-click": "waybar-module-pomodoro toggle", + "on-click-right": "waybar-module-pomodoro reset", + }, + "custom/zeit": { + "format": "{} ", + "return-type": "json", + "exec": "zeit-waybar-dmenu", + "on-click": "zeit-waybar-dmenu click", + "interval": 1 + } +} +
A common/waybar/.config/waybar/waybar/style.css

@@ -0,0 +1,274 @@

+@import url("./colors.css"); +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; + font-size: 13px; +} + +window#waybar { + background-color: @background; + /*border-bottom: 3px solid rgba(100, 114, 125, 0.5);*/ + color: @foreground; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +button { + border: none; + border-radius: 0; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +button:hover { + background: inherit; + box-shadow: inset 0 -3px @foreground; +} + +#workspaces button { + padding: 0 2px; + background-color: transparent; + color: @foreground; +} + +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); +} + +#workspaces button.focused { + background-color: @cyan; + color: @background; + /*box-shadow: inset 0 -3px #ffffff;*/ +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + color: @background; + background-color: @purple; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#wireplumber, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#scratchpad, +#mpd, +#custom-mail, +#custom-pacman { + padding: 0 4px; +} + +#window, +#workspaces { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#clock { + /* background-color: #64727D; */ + margin-top: 3px; +} + +#battery { + /* background-color: #ffffff; */ + /* color: #000000; */ +} + +#battery.charging, #battery.plugged { + /* color: #ffffff; */ + /* background-color: #26A65B; */ +} + +@keyframes blink { + to { + color: @foreground; + background-color: @background; + } +} + +#battery.critical:not(.charging) { + background-color: @background; + color: @red; + animation-name: blink; + animation-duration: 2s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +label:focus { + /* background-color: #000000; */ +} + +#cpu { + /* background-color: #2ecc71; */ + /* color: #000000; */ +} + +#memory { + /* background-color: #9b59b6; */ +} + +#disk { + /* background-color: #964B00; */ +} + +#backlight { + /* background-color: #90b1b1; */ +} + +#network { + /* background-color: #2980b9; */ +} + +#network.disconnected { + /* background-color: #f53c3c; */ +} + +#pulseaudio { + /* background-color: #f1c40f; */ + /* color: #000000; */ +} + +#pulseaudio.muted { + /* background-color: #90b1b1; */ + /* color: #2a5c45; */ +} + +#wireplumber { + /* background-color: #fff0f5; */ + /* color: #000000; */ +} + +#wireplumber.muted { + /* background-color: #f53c3c; */ +} + +#custom-media { + background-color: #66cc99; + color: #2a5c45; + min-width: 100px; +} + +#custom-media.custom-spotify { + background-color: #66cc99; +} + +#custom-media.custom-vlc { + background-color: #ffa000; +} + +#temperature { + /* background-color: #f0932b; */ +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#tray { + background-color: @background; + margin: 0 0px; + padding: 0 0px; + margin-right: 1px; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #eb4d4b; +} + +#idle_inhibitor { + background-color: #2d3436; +} + +#idle_inhibitor.activated { + background-color: #ecf0f1; + color: #2d3436; +} + +#mpd { + background-color: #66cc99; + color: #2a5c45; +} + +#mpd.disconnected { + background-color: #f53c3c; +} + +#mpd.stopped { + background-color: #90b1b1; +} + +#mpd.paused { + background-color: #51a37a; +} + +#language { + /* background: #00b093; */ + /* color: #740864; */ + padding: 0 4px; + min-width: 10px; +} + +#keyboard-state { + background: #97e1ad; + color: #000000; + padding: 0 0px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state > label { + padding: 0 5px; +} + +#keyboard-state > label.locked { + background: rgba(0, 0, 0, 0.2); +} + +#scratchpad { + background: rgba(0, 0, 0, 0.2); +} + +#scratchpad.empty { + background-color: transparent; +}
A common/zathura/.config/zathura/zathura/zathurarc

@@ -0,0 +1,54 @@

+set window-title-basename "true" +set selection-clipboard "clipboard" +set sandbox none + +# +# Everforest color theme +# + +set notification-error-bg "#ff5555" # Red +set notification-error-fg "#d3c6aa" # Foreground +set notification-warning-bg "#ffb86c" # Orange +set notification-warning-fg "#44475a" # Selection +set notification-bg "#2b3339" # Background +set notification-fg "#d3c6aa" # Foreground + +set completion-bg "#2b3339" # Background +set completion-fg "#6272a4" # Comment +set completion-group-bg "#2b3339" # Background +set completion-group-fg "#6272a4" # Comment +set completion-highlight-bg "#44475a" # Selection +set completion-highlight-fg "#d3c6aa" # Foreground + +set index-bg "#2b3339" # Background +set index-fg "#d3c6aa" # Foreground +set index-active-bg "#44475a" # Current Line +set index-active-fg "#d3c6aa" # Foreground + +set inputbar-bg "#2b3339" # Background +set inputbar-fg "#d3c6aa" # Foreground +set statusbar-bg "#2b3339" # Background +set statusbar-fg "#d3c6aa" # Foreground + +set highlight-color "rgba(256, 184, 108, 0.5)" # Orange +set highlight-active-color "rgba(256, 121, 198, 0.5)" # Orange + +set default-bg "#2b3339" # Background +set default-fg "#d3c6aa" # Foreground + +set render-loading true +set render-loading-fg "#2b3339" # Background +set render-loading-bg "#d3c6aa" # Foreground + +# +# Recolor mode settings +# + +set recolor-lightcolor "#2b3339" # Background +set recolor-darkcolor "#d3c6aa" # Foreground + +# +# Startup options +# +set adjust-open width +set recolor false
M git/.gitconfigdesktop/git/.gitconfig

@@ -1,12 +1,10 @@

[user] email = mail@krinitsin.com name = Christian Krinitsin - signingkey = <key-id> + signingkey = 799D00D6E6A68B08 [pull] rebase = true [commit] gpgsign = true -[core] - excludesfile = /home/chris/.gitignore [merge] tool = nvimdiff
M install.shinstall.sh

@@ -5,12 +5,7 @@ SCRIPT=$(readlink -f "$0")

SCRIPTPATH=$(dirname "$SCRIPT") cd $SCRIPTPATH -# Ignore list -IGNORE=("bin" "wallpaper" "install.sh" ".git" "scripts" "git" "nvim") - printf "Start installing dotfiles\n\n" -printf "Ignore: %s\n" "${IGNORE[@]}" -printf "\n" # Install stow, if not installed pacman -Q | grep stow 1>/dev/null

@@ -23,35 +18,25 @@ fi

# Prevent from symlinking whole directory if [ ! -d "/home/chris/.gnupg" ]; then - printf "Creating ~/.gnupg\n\n" + printf "Creating ~/.gnupg\n" mkdir ~/.gnupg chmod 700 ~/.gnupg else - printf "~/.gnupg is already available\n\n" + printf "~/.gnupg is already available\n" fi -# Setting up all the symlinks -max=${#IGNORE[@]} -max=$((max-1)) +for f in common/*; do + # Create symlink if not ignored + printf "Symlink for $f created\n" + stow -t ~/ -d common/ "$(basename $f)" +done -for f in *; do - ignored=false - - #Check if package is in ignore list - for i in `seq 0 $max` - do - - if [[ ${IGNORE[$i]} == $f ]]; then - ignored=true - fi - - done - - # Create symlink if not ignored - if [[ $ignored == false ]]; then +if [ $1 == "desktop" ]; then + for f in desktop/*; do + # Create symlink if not ignored printf "Symlink for $f created\n" - stow "$f" - fi -done + stow -t ~/ -d desktop/ "$(basename $f)" + done +fi -printf "\nDone\n" +printf "Done\n"
D mime/.config/mimeapps.list

@@ -1,12 +0,0 @@

-[Default Applications] -application/pdf=org.pwmt.zathura.desktop -x-scheme-handler/http=org.qutebrowser.qutebrowser.desktop -x-scheme-handler/https=org.qutebrowser.qutebrowser.desktop -x-scheme-handler/mailto=userapp-Thunderbird-OETMO2.desktop -message/rfc822=userapp-Thunderbird-OETMO2.desktop -x-scheme-handler/mid=userapp-Thunderbird-OETMO2.desktop - -[Added Associations] -x-scheme-handler/mailto=userapp-Thunderbird-IAYNK2.desktop;userapp-Thunderbird-OETMO2.desktop; -x-scheme-handler/mid=userapp-Thunderbird-IAYNK2.desktop;userapp-Thunderbird-OETMO2.desktop; -text/plain=nvim.desktop;
A unused/kitty/.config/kitty/kitty/kitty.conf

@@ -0,0 +1,243 @@

+# vim:fileencoding=utf-8:ft=conf + +# Font family. You can also specify different fonts for the +# bold/italic/bold-italic variants. By default they are derived automatically, +# by the OSes font system. Setting them manually is useful for font families +# that have many weight variants like Book, Medium, Thick, etc. For example: +# font_family Operator Mono Book +# bold_font Operator Mono Thick +# bold_italic_font Operator Mono Medium +# font_family Input Mono +font_family DroidSansM Nerd Font +italic_font auto +bold_font auto +bold_italic_font auto + +# Font size (in pts) +font_size 12.0 + +# The foreground color +foreground #d3c6aa + +# The background color +background #2b3339 + +# The foreground for selections +selection_foreground #2f2f2f + +# The background for selections +selection_background #e67e80 + +# The cursor color +cursor #d3c6aa + +# The cursor shape can be one of (block, beam, underline) +shell_integration no-cursor +cursor_shape block + +# The interval (in seconds) at which to blink the cursor. Set to zero to +# disable blinking. +cursor_blink_interval 1 + +# Stop blinking cursor after the specified number of seconds of keyboard inactivity. Set to +# zero or a negative number to never stop blinking. +cursor_stop_blinking_after 15.0 + +# Number of lines of history to keep in memory for scrolling back +scrollback_lines 2000 + +# Program with which to view scrollback in a new window. The scrollback buffer is passed as +# STDIN to this program. If you change it, make sure the program you use can +# handle ANSI escape sequences for colors and text formatting. +scrollback_pager less +G -R + +# Wheel scroll multiplier (modify the amount scrolled by the mouse wheel) +wheel_scroll_multiplier 5.0 + +# The interval between successive clicks to detect double/triple clicks (in seconds) +click_interval 0.5 + +# Characters considered part of a word when double clicking. In addition to these characters +# any character that is marked as an alpha-numeric character in the unicode +# database will be matched. +select_by_word_characters :@-./_~?&=%+# + +# Hide mouse cursor after the specified number of seconds of the mouse not being used. Set to +# zero or a negative number to disable mouse cursor hiding. +mouse_hide_wait 0.0 + +# The enabled window layouts. A comma separated list of layout names. The special value * means +# all layouts. The first listed layout will be used as the startup layout. +# For a list of available layouts, see the file layouts.py +enabled_layouts * + +# If enabled, the window size will be remembered so that new instances of kitty will have the same +# size as the previous instance. If disabled, the window will initially have size configured +# by initial_window_width/height, in pixels. +remember_window_size no +initial_window_width 640 +initial_window_height 400 + +# Delay (in milliseconds) between screen updates. Decreasing it, increases fps +# at the cost of more CPU usage. The default value yields ~100fps which is more +# that sufficient for most uses. +# repaint_delay 10 +repaint_delay 10 + +# Delay (in milliseconds) before input from the program running in the terminal +# is processed. Note that decreasing it will increase responsiveness, but also +# increase CPU usage and might cause flicker in full screen programs that +# redraw the entire screen on each loop, because kitty is so fast that partial +# screen updates will be drawn. +input_delay 3 + +# Visual bell duration. Flash the screen when a bell occurs for the specified number of +# seconds. Set to zero to disable. +visual_bell_duration 0.0 + +# Enable/disable the audio bell. Useful in environments that require silence. +enable_audio_bell no + +# The modifier keys to press when clicking with the mouse on URLs to open the URL +open_url_modifiers ctrl+shift + +# The program with which to open URLs that are clicked on. The special value "default" means to +# use the operating system's default URL handler. +open_url_with default + +# The value of the TERM environment variable to set +term xterm-kitty + +# The width (in pts) of window borders. Will be rounded to the nearest number of pixels based on screen resolution. +window_border_width 0 + +window_margin_width 0 + +# The color for the border of the active window +active_border_color #ffffff + +# The color for the border of inactive windows +inactive_border_color #cccccc + +# Tab-bar colors +active_tab_foreground #000 +active_tab_background #eee +inactive_tab_foreground #444 +inactive_tab_background #999 + + +# The 16 terminal colors. There are 8 basic colors, each color has a dull and +# bright version. + +# black +color0 #232a2e +color8 #475158 + +# red +color1 #e67e80 +color9 #e67e80 + +# green +color2 #83c092 +color10 #a7c080 + +# yellow +color3 #dbbc7f +color11 #dbbc7f + +# blue +color4 #7fbbb3 +color12 #3a515d + +# magenta +color5 #d699b6 +color13 #7fbbb3 + +# cyan +color6 #e69875 +color14 #d699b6 + +# white +color7 #d3c6aa +color15 #9da9a0 + +# Key mapping +# For a list of key names, see: http://www.glfw.org/docs/latest/group__keys.html +# For a list of modifier names, see: http://www.glfw.org/docs/latest/group__mods.html +# You can use the special action no_op to unmap a keyboard shortcut that is +# assigned in the default configuration. + +# Clipboard +map super+v paste_from_clipboard +map ctrl+shift+s paste_from_selection +map super+c copy_to_clipboard +map shift+insert paste_from_selection + +# Scrolling +map ctrl+shift+up scroll_line_up +map ctrl+shift+down scroll_line_down +map ctrl+shift+k scroll_line_up +map ctrl+shift+j scroll_line_down +map ctrl+shift+page_up scroll_page_up +map ctrl+shift+page_down scroll_page_down +map ctrl+shift+home scroll_home +map ctrl+shift+end scroll_end +map ctrl+shift+h show_scrollback + +# Window management +map super+n new_os_window +map super+w close_window +map ctrl+shift+enter new_window +map ctrl+shift+] next_window +map ctrl+shift+[ previous_window +map ctrl+shift+f move_window_forward +map ctrl+shift+b move_window_backward +map ctrl+shift+` move_window_to_top +map ctrl+shift+1 first_window +map ctrl+shift+2 second_window +map ctrl+shift+3 third_window +map ctrl+shift+4 fourth_window +map ctrl+shift+5 fifth_window +map ctrl+shift+6 sixth_window +map ctrl+shift+7 seventh_window +map ctrl+shift+8 eighth_window +map ctrl+shift+9 ninth_window +map ctrl+shift+0 tenth_window + +# Tab management +map ctrl+shift+right next_tab +map ctrl+shift+left previous_tab +map ctrl+shift+t new_tab +map ctrl+shift+q close_tab +map ctrl+shift+l next_layout +map ctrl+shift+. move_tab_forward +map ctrl+shift+, move_tab_backward + +# Miscellaneous +map ctrl+shift+up increase_font_size +map ctrl+shift+down decrease_font_size +map ctrl+shift+backspace restore_font_size + +# Symbol mapping (special font for specified unicode code points). Map the +# specified unicode codepoints to a particular font. Useful if you need special +# rendering for some symbols, such as for Powerline. Avoids the need for +# patched fonts. Each unicode code point is specified in the form U+<code point +# in hexadecimal>. You can specify multiple code points, separated by commas +# and ranges separated by hyphens. symbol_map itself can be specified multiple times. +# Syntax is: +# +# symbol_map codepoints Font Family Name +# +# For example: +# +#symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols +hide_window_decorations titlebar-only +macos_option_as_alt no + +# Change the color of the kitty window's titlebar on macOS. A value of "system" +# means to use the default system color, a value of "background" means to use +# the default background color and finally you can use an arbitrary color, such +# as #12af59 or "red". +macos_titlebar_color background + +allow_remote_control yes
A unused/tridactyl/.config/tridactyl/tridactyl/tridactylrc

@@ -0,0 +1,59 @@

+" vim: filetype=vim + +" This wipes all existing settings. This means that if a setting in this file +" is removed, then it will return to default. In other words, this file serves +" as an enforced single point of truth for Tridactyl's configuration. +sanitize tridactyllocal tridactylsync + +" Just use a blank page for new tab. It would be nicer to use the standard +" Firefox homepage, but Tridactyl doesn't support this yet. +set newtab www.duckduckgo.com + +" Ctrl-F should use the browser's native 'find' functionality. +unbind <C-f> + +" But also support Tridactyl search too. +bind / fillcmdline find +bind ? fillcmdline find -? +bind n findnext 1 +bind N findnext -1 +" Remove search highlighting. +bind ,<Space> nohlsearch +" Use sensitive case. Smart case would be nice here, but it doesn't work. +set findcase sensitive + +" Smooth scrolling, yes please. This is still a bit janky in Tridactyl. +set smoothscroll true + +" The default jump of 10 is a bit much. +bind j scrollline 5 +bind k scrollline -5 + +" K and J should move between tabs. x should close them. +bind J tabprev +bind K tabnext +bind x tabclose + +" Don't run Tridactyl on some web sites because it doesn't work well, or +" because the web site has its own keybindings. +autocmd DocStart mail.google.com mode ignore +autocmd DocStart cad.onshape.com mode ignore + +" Sometimes the status bar in the bottom left corner overlaps the Tridactyl +" command line, so set an option to move the status bar to the right. +guiset_quiet hoverlink right + +" Git{Hub,Lab} git clone via SSH yank +bind yg composite js "git clone " + document.location.href.replace(/https?:\/\//,"git@").replace("/",":").replace(/$/,".git") | clipboard yank + +" make d take you to the left (I find it much less confusing) +bind d composite tabprev; tabclose # + +" New reddit is bad +autocmd DocStart ^http(s?)://www.reddit.com js tri.excmds.urlmodify("-t", "www", "old") + +bind O fillcmdline tabopen + +" Sane hinting mode +set hintfiltermode vimperator-reflow +set hintnames numeric