Compare commits

...

80 Commits

Author SHA1 Message Date
539102d713 dotfiles/zshrc: use vulkan on Sway
Seems to work fine on all Intel now.
2025-02-10 09:14:43 +03:00
82f581d0a5 dotfiles/zshrc: enable Vulkan renderer on balozi 2025-01-02 10:32:24 +03:00
276bb1c239 dotfiles/local/bin/convert-libaom.sh: import latest 2024-12-31 10:37:57 +03:00
f386c25a22 dotfiles: minor updates for Sway v1.10 2024-10-31 09:39:00 +03:00
81c5870943 Use geoclue in darkman
Otherwise it doesn't realize that we have changed location.

See: https://darkman.whynothugo.nl/
2024-07-13 21:24:56 +03:00
ad43053789 Add dark-mode and light-mode scripts for darkman 2024-07-04 22:22:04 +03:00
418c44e47d dotfiles/local/bin/pre-process-media.sh: update
Add support for Pixel TopShot videos.
2024-06-17 21:56:45 +03:00
17e5212f76 dotfiles/config/waybar: hardcode Font Awesome 2024-05-06 17:06:36 +03:00
d21cb6a169 dotfiles/local/bin: update pre-process-media.sh 2024-04-28 13:11:48 +03:00
4c2b8eb267 dotfiles/zshrc: remove NODE_OPTIONS
I set this via .mise.toml in each project now.
2024-03-23 16:37:01 +03:00
4356256836 dotfiles/zshrc: disable vulkan WLR_RENDERER
This is still buggy. Lots of flickering.
2024-03-23 16:36:35 +03:00
d4415cf264 dotfiles/config/sway: use foot instead of wezterm
foot feels more minimal.
2024-03-23 16:35:12 +03:00
525d0a6fab dotfiles/zshrc: remove node_modules/bin
Don't need this anymore since we've moved on to DSpace 7 everywhere.
2024-03-18 11:10:43 +03:00
68d65ab43f dotfiles/wezterm.lua: use Selenized Dark theme
As of recent Wezterm release.
2024-01-30 08:50:50 +03:00
a520a68d04 dotfiles/zshrc: remove RTX_HIDE_UPDATE_WARNING
I don't think rtx has used this for some time, and now that rtx was
renamed to mise it definitely won't read it.
2024-01-04 10:07:55 +03:00
c84aa26825 dotfiles/zshrc: rtx→mise 2024-01-04 09:13:32 +03:00
6e18cca897 config.yaml: add convert-libaom.sh
Script to convert files to AV1. I don't know if this works actually
because we use dotdrop to manage ~/.local/bin as well.
2024-01-01 22:02:20 +03:00
8f53c7fa5c dotfiles/zshrc: use vulkan renderer in Sway 2023-12-27 08:39:57 +03:00
2ebf5090e0 Revert "dotfiles/zshrc: use vulkan in Sway"
This reverts commit 634e44346c.

This actually removed the setting entirely instead of enabling it.
2023-12-27 08:38:54 +03:00
d88642c3d3 Revert "dotfiles/zshrc: remove MOZ_ENABLE_WAYLAND"
This reverts commit d96d8d6550.

Thunderbird still needs this!
2023-12-26 10:01:17 +03:00
190e1cd550 Use wezterm instead of foot
It's fast and Wayland native, but doesn't have the weird character
box width glitch.
2023-12-24 22:10:20 +03:00
634e44346c dotfiles/zshrc: use vulkan in Sway
This is much more stable than the last time I tried it.
2023-12-24 22:09:14 +03:00
d96d8d6550 dotfiles/zshrc: remove MOZ_ENABLE_WAYLAND
Wayland is enabled by default on all platforms as of Firefox 121.
2023-12-22 08:35:29 +03:00
5d285d1677 Add ~/.wezterm.lua
Contains basic config with Selenized colorscheme.
2023-12-10 21:47:50 +03:00
30ce3d5e1d dotfiles/zshrc: only use some opts on dev hosts
Only use the Node.js and rsync variables on dev hosts.
2023-09-26 09:58:24 +03:00
e33ac6ffcb dotfiles/zshrc: add RSYNC_OLD_ARGS
Some time last year rsync made a breaking change around argument
parsing.
2023-09-26 09:57:24 +03:00
0e7a2b7b1e dotfiles/zshrc: add NODE_OPTIONS
I need this so Angular applications like DSpace's frontend don't
crash during build due to JavaScript heap memory.
2023-09-26 09:56:35 +03:00
6847354160 dotfiles: use fuzzel instead of wofi
Wofi is unmaintained since late 2022.
2023-08-22 15:05:02 +03:00
c38e7d8280 dotfiles/local/bin/add-shadow.sh: use magick prefix
This is the newer ImageMagick syntax.
2023-08-22 14:52:24 +03:00
26cad4107e Import fuzzel configuration 2023-08-22 14:44:55 +03:00
5c684c084f dotfiles/zshrc: don't show rtx version warnings 2023-04-30 07:25:10 +03:00
113496cc2b dotfiles/zshrc: switch from asdf to rtx 2023-03-20 14:14:48 +03:00
50fab353e2 Update waybar style
Fix incorrect selenized dark color, reduce padding around workspace
module, improve colors for battery charging, improve bottom border
on active workspace.
2023-03-02 21:12:02 +03:00
b468cf8c94 Update waybar style
Use selenized dark color palette instead of solarized dark.
2023-03-02 15:56:37 +03:00
c7a14964b0 Switch to waybar
Remove custom sway status.py script and use waybar instead.
2023-02-24 20:07:50 +03:00
3f5393758e dotfiles/zshrc: pip/poetry keyring fix
I finally figured out why this annoying keyring unlock happens when
I do a pip/poetry install. Good riddance!

See: https://github.com/python-poetry/poetry/issues/1917
2023-02-05 21:23:12 +03:00
f4465c4056 dotfiles/zshrc: don't use Vulkan in Sway
It is really buggy on older Intel, and even on newer Intel apps like
Thunderbird are unusable.
2023-01-03 10:47:31 +03:00
96fb353c2c dotfiles/zshrc: use Vulkan renderer in Sway
Sway 1.8 greatly improved their Vulkan renderer so I'm going to try
to use it now.
2022-12-26 15:09:24 +02:00
01bb3f6d3a dotfiles: update tmux.conf
Now that all my hosts are running new enough userlands to support
the tmux-256color terminfo entry I can use it everywhere. Notably
this enables italics to work inside tmux.

Also update comment about the tmux-specific terminfo extensions
for true color. I need to keep using "Tc" until all my hosts have
tmux 3.2+.

See: https://jdhao.github.io/2018/10/19/tmux_nvim_true_color/
See: https://github.com/tmux/tmux/wiki/FAQ#i-dont-see-italics-or-italics-and-reverse-are-the-wrong-way-round
2022-11-26 15:01:38 +03:00
b3a7212ff7 dotfiles: add comment to foot.ini
This is how to check if a term entry exists on the local system.
2022-11-11 09:02:48 +03:00
7f024d3cff dotfiles/zshrc: set XDG_CURRENT_DESKTOP=sway
This was set in ~/.pam_environment up until a few days ago, but I
forgot to add it when I moved the exports to .zshrc. We need this
for xdg-desktop-portal to know we're on Sway for screensharing.
2022-11-10 19:14:35 +03:00
811e10f04d dotfiles/vimrc: fix truecolor support
I never really knew why the colors looked different inside and out
of tmux. Now they look correct everywhere!

See: https://gist.github.com/andersevenrud/015e61af2fd264371032763d4ed965b6
2022-11-07 22:18:26 +03:00
188e055677 dotfiles/config/tmux/tmux.conf: true color
Enable true color support in tmux. I didn't even know this was not
working in my current setup. Very interesting read below.

See: https://jdhao.github.io/2018/10/19/tmux_nvim_true_color/
2022-11-07 21:55:39 +03:00
79cf112ad4 dotfiles/zshrc: export Sway variables
We need to export these from zsh in our TTY so Sway can read them
when it starts. Sigh.
2022-11-06 21:33:39 +03:00
ee09822398 dotfiles/config/sway/config: remove systemctl import-environment
This was apparently deprecated and no longer works as intended. You
must name all variables you want to import now.
2022-11-06 21:30:20 +03:00
75ebcd48e3 Remove ~/.pam_environment
It has been deprecated for a long time and Arch Linux finally rem-
oved support for it from pambase.

See: https://bugs.archlinux.org/task/68945
2022-11-06 21:23:34 +03:00
8b23f5748e dotfiles/config/wofi/style.css: update
Latest selenized-dark from Selenized repo.

See: https://github.com/jan-warchol/selenized/blob/master/other-apps/wofi/selenized-dark.css
2022-11-01 10:18:25 +03:00
144e015223 dotfiles/zshrc: check if asdf.sh exists
This exists on Arch, but not if I'm running the dotfiles on some
random server.
2022-08-31 19:16:45 +03:00
dd44606a6f dotfiles/zshrc: use asdf on all profiles 2022-08-31 19:14:47 +03:00
a1eb0994fd dotfiles/zshrc: new genpass alias 2022-08-31 16:59:58 +03:00
936385d111 dotfiles/config/sway/config: float LibreOffice import 2022-08-18 20:40:50 -07:00
808e06eaf8 dotfiles/zshrc: add comment about ssh-agent socket 2022-08-14 13:51:06 -07:00
6d568a8c94 dotfiles/config/sway/config: float iwgtk 2022-08-13 14:41:23 -07:00
59d99715ab README.md: update instructions
I'm using the AUR package for dotdrop now.
2022-08-12 20:59:32 -07:00
f1b55c6be9 Add ssh-agent service and ssh config
Add a systemd user service to start the ssh-agent and add an ssh
config to automatically add ssh identities to the agent when they
are used (otherwise we have to add them manually). I will see how
this works out.

See: https://wiki.archlinux.org/title/SSH_keys#SSH_agents
2022-08-12 16:23:06 -07:00
afa622369b dotfiles/zshrc: update
Remove unused Kitty and ASDF variables, and export SSH_AUTH_SOCK.
2022-08-12 16:21:55 -07:00
50bb7df89e dotfiles/zshrc: add comment about GPG_TTY
This is only needed for pinentry-curses.
2022-08-12 08:47:33 -07:00
4d6353ed2a Add scripts from ~/.local/bin
Some utility scripts.
2022-08-01 15:14:12 +03:00
3ddb4f58f4 dotfiles: update Kanshi config
Add new Dell 4K monitor.
2022-07-30 21:06:04 +03:00
a644fc60e2 dotfiles/config/sway/config: fix shortcuts
Recently Chromium has started disabling shortcuts for windows that
were launched with `--app`.

See: https://www.reddit.com/r/swaywm/comments/vlvpws/chromeium_app_flag_spawns_windows_with_shortcut/
2022-06-27 22:23:43 +03:00
918f0958b1 Remove dotfiles/vim/.netrwhist 2022-05-16 11:05:29 +03:00
feb6efa204 Move tmux config 2022-05-14 21:30:42 +03:00
e5a8d48de9 dotfiles/zshrc: add asdf version manager 2022-05-05 10:50:54 +03:00
2524b0d6cd config.yaml: fix syntax error 2022-04-25 16:49:18 +03:00
447d81051f config.yaml: add generic profile for dotdrop
dotdrop wants to use a profile for each system it is deployed. We
want to use some common settings on all hosts without having to c-
reate a profile for each.
2022-04-25 16:47:10 +03:00
bb3f0556ee dotfiles/config/sway/config: calculator floating
As of GNOME 42 this application ID changed.
2022-04-22 15:05:33 +03:00
151e3b1f91 dotfiles: add vim modeline to foot.ini 2022-04-15 10:32:26 +03:00
7dc73b94c3 dotfiles: include selenized-dark colors in foot
No need to define them directly!
2022-04-15 10:31:52 +03:00
3a0beefd2e Add geoclue-agent.service
Required for geolocation using the system geoclue service.
2022-03-01 11:01:33 +03:00
8f4161b832 dotfiles/config/kanshi: update monitor 2022-02-11 11:41:29 +03:00
c7fd75d787 Import xdg-desktop-portal-wlr config
This is important for the screensharing prompt. By default it seems
to just use slurp, which is slightly confusing.

See: https://github.com/emersion/xdg-desktop-portal-wlr/issues/124
2022-02-11 11:39:10 +03:00
d70d22ea05 Remove alacritty config
I don't use it.
2022-02-07 09:45:43 +03:00
7b90092dfe dotfiles: fix tab in kanshi config 2022-02-07 07:27:29 +03:00
07f87a3064 kanshi/config: add other HP monitor
Hopefully this one is temporary because the colors suck.
2022-02-03 16:19:38 +03:00
d1338a46b3 Add HP monitor to kanshi config 2022-01-31 20:19:57 +03:00
5017944487 Remove old dotfiles
I don't use mutt and I haven't used Xorg in years.
2022-01-27 16:46:24 +03:00
7955023b24 Import .bashrc to dotdrop's dotfiles
I don't use this on any personal machines.
2022-01-27 16:46:07 +03:00
2f56e4f90f README.md: fix intro 2022-01-27 16:35:22 +03:00
dd382d2694 dotfiles/config/kanshi/config: restore knafeh 2022-01-27 16:34:46 +03:00
429d9747dd README.md: update 2022-01-27 16:30:45 +03:00
32 changed files with 905 additions and 1264 deletions

View File

@ -1,69 +0,0 @@
!
! .Xresources file
! Man pages: xrdb, Xsession
!
! --------------------------------------------
! Note that $HOME/.Xdefaults is a relic from
! X Version 10 (and X11R1) days, before
! app-defaults files were implemented.
! It has been deprecated for over ten years
! .Xresources should be used instead.
! --------------------------------------------
!-------------------------------------------------------------------------------
! Xft settings
!-------------------------------------------------------------------------------
Xft.autohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb
!---- URxvt - General settings
URxvt*cursorBlink: true
URxvt*font: xft:Monospace:size=12
URxvt*boldFont: xft:Monospace:size=12
URxvt*jumpScroll: true
URxvt*scrollBar: false
URxvt*scrollTtyOutput: false
URxvt*scrollTtyKeypress: true
URxvt*urgentOnBell: true
URxvt*visualBell: false
URxvt.termName: xterm-256color
URxvt.depth: 32
URxvt.scrollBar: false
URxvt*letterSpace: -1
! disable the Ctrl-Shift keycap insert mode,
! it interferes with GNOME key combos for
! moving windows to other desktops
URxvt.iso14755: false
!---- Default URxvt (Solarized Dark)
URxvt*fading: 30
URxvt*background: #002b36
URxvt*foreground: #839496
URxvt*fadeColor: #002b36
URxvt*cursorColor: #839496
URxvt*pointerColorBackground: #586e75
URxvt*pointerColorForeground: #93a1a1
URxvt*colorUL: #859900
URxvt*colorBD: #268bd2
URxvt*color0: #073642
URxvt*color8: #002b36
URxvt*color1: #dc322f
URxvt*color9: #cb4b16
URxvt*color2: #859900
URxvt*color10: #586e75
URxvt*color3: #b58900
URxvt*color11: #657b83
URxvt*color4: #268bd2
URxvt*color12: #839496
URxvt*color5: #d33682
URxvt*color13: #6c71c4
URxvt*color6: #2aa198
URxvt*color14: #93a1a1
URxvt*color7: #eee8d5
URxvt*color15: #fdf6e3

View File

@ -1,762 +0,0 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator.
# Import additional configuration files
#
# Imports are loaded in order, skipping all missing files, with the importing
# file being loaded last. If a field is already present in a previous import, it
# will be replaced.
#
# All imports must either be absolute paths starting with `/`, or paths relative
# to the user's home directory starting with `~/`.
#import:
# - /path/to/alacritty.yml
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty itself.
env:
# TERM variable
#
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use `alacritty` if it is
# available, otherwise `xterm-256color` is used.
# 2020-04-01: avoid errors on remote systems when using less etc.
TERM: xterm-256color
#window:
# Window dimensions (changes require restart)
#
# Number of lines/columns (not pixels) in the terminal. The number of columns
# must be at least `2`, while using a value of `0` for columns and lines will
# fall back to the window manager's recommended size.
#dimensions:
# columns: 0
# lines: 0
# Window position (changes require restart)
#
# Specified in number of pixels.
# If the position is not set, the window manager will handle the placement.
#position:
# x: 0
# y: 0
# Window padding (changes require restart)
#
# Blank space added around the window in pixels. This padding is scaled
# by DPI and the specified value is always added at both opposing sides.
#padding:
# x: 0
# y: 0
# Spread additional padding evenly around the terminal content.
#dynamic_padding: false
# Window decorations
#
# Values for `decorations`:
# - full: Borders and title bar
# - none: Neither borders nor title bar
#
# Values for `decorations` (macOS only):
# - transparent: Title bar, transparent background and title bar buttons
# - buttonless: Title bar, transparent background and no title bar buttons
#decorations: full
# Startup Mode (changes require restart)
#
# Values for `startup_mode`:
# - Windowed
# - Maximized
# - Fullscreen
#
# Values for `startup_mode` (macOS only):
# - SimpleFullscreen
#startup_mode: Windowed
# Window title
#title: Alacritty
# Allow terminal applications to change Alacritty's window title.
#dynamic_title: true
# Window class (Linux/BSD only):
#class:
# Application instance name
#instance: Alacritty
# General application class
#general: Alacritty
# GTK theme variant (Linux only)
#
# Override the variant of the GTK theme. Commonly supported values are `dark`
# and `light`. Set this to `None` to use the default theme variant.
#gtk_theme_variant: None
#scrolling:
# Maximum number of lines in the scrollback buffer.
# Specifying '0' will disable scrolling.
#history: 10000
# Scrolling distance multiplier.
#multiplier: 3
# Font configuration
font:
# Normal (roman) font face
normal:
# Font family
#
# Default:
# - (macOS) Menlo
# - (Linux) monospace
# - (Windows) Consolas
family: Cascadia Mono PL
# The `style` can be specified to pick a specific face.
style: Medium
# Bold font face
bold:
# Font family
#
# If the bold family is not specified, it will fall back to the
# value specified for the normal font.
family: Cascadia Mono PL
# The `style` can be specified to pick a specific face.
style: Semibold
# Italic font face
italic:
# Font family
#
# If the italic family is not specified, it will fall back to the
# value specified for the normal font.
family: Cascadia Mono PL
# The `style` can be specified to pick a specific face.
style: Italic
# Bold italic font face
bold_italic:
# Font family
#
# If the bold italic family is not specified, it will fall back to the
# value specified for the normal font.
family: Cascadia Mono PL
# The `style` can be specified to pick a specific face.
style: Semibold Italic
# Point size
size: 12.0
# Offset is the extra space around each character. `offset.y` can be thought
# of as modifying the line spacing, and `offset.x` as modifying the letter
# spacing.
#offset:
# x: 0
# y: 0
# Glyph offset determines the locations of the glyphs within their cells with
# the default being at the bottom. Increasing `x` moves the glyph to the
# right, increasing `y` moves the glyph upward.
#glyph_offset:
# x: 0
# y: 0
# Thin stroke font rendering (macOS only)
#
# Thin strokes are suitable for retina displays, but for non-retina screens
# it is recommended to set `use_thin_strokes` to `false`.
#use_thin_strokes: true
# If `true`, bold text is drawn using the bright color variants.
#draw_bold_text_with_bright_colors: false
# Colors (Selenized dark)
colors:
primary:
background: '0x103c48'
foreground: '0xadbcbc'
normal:
black: '0x184956'
red: '0xfa5750'
green: '0x75b938'
yellow: '0xdbb32d'
blue: '0x4695f7'
magenta: '0xf275be'
cyan: '0x41c7b9'
white: '0x72898f'
bright:
black: '0x2d5b69'
red: '0xff665c'
green: '0x84c747'
yellow: '0xebc13d'
blue: '0x58a3ff'
magenta: '0xff84cd'
cyan: '0x53d6c7'
white: '0xcad8d9'
# Dim colors
#
# If the dim colors are not set, they will be calculated automatically based
# on the `normal` colors.
#dim:
# black: '#131415'
# red: '#864343'
# green: '#777c44'
# yellow: '#9e824c'
# blue: '#556a7d'
# magenta: '#75617b'
# cyan: '#5b7d78'
# white: '#828482'
# Indexed Colors
#
# The indexed colors include all colors from 16 to 256.
# When these are not set, they're filled with sensible defaults.
#
# Example:
# `- { index: 16, color: '#ff00ff' }`
#
#indexed_colors: []
# Bell
#
# The bell is rung every time the BEL control character is received.
#bell:
# Visual Bell Animation
#
# Animation effect for flashing the screen when the visual bell is rung.
#
# Values for `animation`:
# - Ease
# - EaseOut
# - EaseOutSine
# - EaseOutQuad
# - EaseOutCubic
# - EaseOutQuart
# - EaseOutQuint
# - EaseOutExpo
# - EaseOutCirc
# - Linear
#animation: EaseOutExpo
# Duration of the visual bell flash in milliseconds. A `duration` of `0` will
# disable the visual bell animation.
#duration: 0
# Visual bell animation color.
#color: '#ffffff'
# Bell Command
#
# This program is executed whenever the bell is rung.
#
# When set to `command: None`, no command will be executed.
#
# Example:
# command:
# program: notify-send
# args: ["Hello, World!"]
#
#command: None
# Background opacity
#
# Window opacity as a floating point number from `0.0` to `1.0`.
# The value `0.0` is completely transparent and `1.0` is opaque.
#background_opacity: 1.0
#selection:
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
# When set to `true`, selected text will be copied to the primary clipboard.
#save_to_clipboard: false
#cursor:
# Cursor style
#style:
# Cursor shape
#
# Values for `shape`:
# - ▇ Block
# - _ Underline
# - | Beam
#shape: Block
# Cursor blinking state
#
# Values for `blinking`:
# - Never: Prevent the cursor from ever blinking
# - Off: Disable blinking by default
# - On: Enable blinking by default
# - Always: Force the cursor to always blink
#blinking: Off
# Vi mode cursor style
#
# If the vi mode cursor style is `None` or not specified, it will fall back to
# the style of the active value of the normal cursor.
#
# See `cursor.style` for available options.
#vi_mode_style: None
# Cursor blinking interval in milliseconds.
#blink_interval: 750
# If this is `true`, the cursor will be rendered as a hollow box when the
# window is not focused.
#unfocused_hollow: true
# Thickness of the cursor relative to the cell width as floating point number
# from `0.0` to `1.0`.
#thickness: 0.15
# Live config reload (changes require restart)
#live_config_reload: true
# Shell
#
# You can set `shell.program` to the path of your favorite shell, e.g.
# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the
# shell.
#
# Default:
# - (macOS) /bin/bash --login
# - (Linux/BSD) user login shell
# - (Windows) powershell
#shell:
# program: /bin/bash
# args:
# - --login
# Startup directory
#
# Directory the shell is started in. If this is unset, or `None`, the working
# directory of the parent process will be used.
#working_directory: None
# Send ESC (\x1b) before characters when alt is pressed.
#alt_send_esc: true
#mouse:
# Click settings
#
# The `double_click` and `triple_click` settings control the time
# alacritty should wait for accepting multiple clicks as one double
# or triple click.
#double_click: { threshold: 300 }
#triple_click: { threshold: 300 }
# If this is `true`, the cursor is temporarily hidden when typing.
#hide_when_typing: false
# Regex hints
#
# Terminal hints can be used to find text in the visible part of the terminal
# and pipe it to other applications.
#hints:
# Keys used for the hint labels.
#alphabet: "jfkdls;ahgurieowpq"
# List with all available hints
#
# Each hint must have a `regex` and either an `action` or a `command` field.
# The fields `mouse`, `binding` and `post_processing` are optional.
#
# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
# `mouse.mods` accept the same values as they do in the `key_bindings` section.
#
# The `mouse.enabled` field controls if the hint should be underlined while
# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
#
# If the `post_processing` field is set to `true`, heuristics will be used to
# shorten the match if there are characters likely not to be part of the hint
# (e.g. a trailing `.`). This is most useful for URIs.
#
# Values for `action`:
# - Copy
# Copy the hint's text to the clipboard.
# - Paste
# Paste the hint's text to the terminal or search.
# - Select
# Select the hint's text.
# - MoveViModeCursor
# Move the vi mode cursor to the beginning of the hint.
#enabled:
# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
# command: xdg-open
# post_processing: true
# mouse:
# enabled: true
# mods: None
# binding:
# key: U
# mods: Control|Shift
# Mouse bindings
#
# Mouse bindings are specified as a list of objects, much like the key
# bindings further below.
#
# To trigger mouse bindings when an application running within Alacritty
# captures the mouse, the `Shift` modifier is automatically added as a
# requirement.
#
# Each mouse binding will specify a:
#
# - `mouse`:
#
# - Middle
# - Left
# - Right
# - Numeric identifier such as `5`
#
# - `action` (see key bindings)
#
# And optionally:
#
# - `mods` (see key bindings)
#mouse_bindings:
# - { mouse: Middle, action: PasteSelection }
# Key bindings
#
# Key bindings are specified as a list of objects. For example, this is the
# default paste binding:
#
# `- { key: V, mods: Control|Shift, action: Paste }`
#
# Each key binding will specify a:
#
# - `key`: Identifier of the key pressed
#
# - A-Z
# - F1-F24
# - Key0-Key9
#
# A full list with available key codes can be found here:
# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
#
# Instead of using the name of the keys, the `key` field also supports using
# the scancode of the desired key. Scancodes have to be specified as a
# decimal number. This command will allow you to display the hex scancodes
# for certain keys:
#
# `showkey --scancodes`.
#
# Then exactly one of:
#
# - `chars`: Send a byte sequence to the running application
#
# The `chars` field writes the specified string to the terminal. This makes
# it possible to pass escape sequences. To find escape codes for bindings
# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
# of tmux. Note that applications use terminfo to map escape sequences back
# to keys. It is therefore required to update the terminfo when changing an
# escape sequence.
#
# - `action`: Execute a predefined action
#
# - ToggleViMode
# - SearchForward
# Start searching toward the right of the search origin.
# - SearchBackward
# Start searching toward the left of the search origin.
# - Copy
# - Paste
# - IncreaseFontSize
# - DecreaseFontSize
# - ResetFontSize
# - ScrollPageUp
# - ScrollPageDown
# - ScrollHalfPageUp
# - ScrollHalfPageDown
# - ScrollLineUp
# - ScrollLineDown
# - ScrollToTop
# - ScrollToBottom
# - ClearHistory
# Remove the terminal's scrollback history.
# - Hide
# Hide the Alacritty window.
# - Minimize
# Minimize the Alacritty window.
# - Quit
# Quit Alacritty.
# - ToggleFullscreen
# - SpawnNewInstance
# Spawn a new instance of Alacritty.
# - ClearLogNotice
# Clear Alacritty's UI warning and error notice.
# - ClearSelection
# Remove the active selection.
# - ReceiveChar
# - None
#
# - Vi mode exclusive actions:
#
# - Open
# Perform the action of the first matching hint under the vi mode cursor
# with `mouse.enabled` set to `true`.
# - ToggleNormalSelection
# - ToggleLineSelection
# - ToggleBlockSelection
# - ToggleSemanticSelection
# Toggle semantic selection based on `selection.semantic_escape_chars`.
#
# - Vi mode exclusive cursor motion actions:
#
# - Up
# One line up.
# - Down
# One line down.
# - Left
# One character left.
# - Right
# One character right.
# - First
# First column, or beginning of the line when already at the first column.
# - Last
# Last column, or beginning of the line when already at the last column.
# - FirstOccupied
# First non-empty cell in this terminal row, or first non-empty cell of
# the line when already at the first cell of the row.
# - High
# Top of the screen.
# - Middle
# Center of the screen.
# - Low
# Bottom of the screen.
# - SemanticLeft
# Start of the previous semantically separated word.
# - SemanticRight
# Start of the next semantically separated word.
# - SemanticLeftEnd
# End of the previous semantically separated word.
# - SemanticRightEnd
# End of the next semantically separated word.
# - WordLeft
# Start of the previous whitespace separated word.
# - WordRight
# Start of the next whitespace separated word.
# - WordLeftEnd
# End of the previous whitespace separated word.
# - WordRightEnd
# End of the next whitespace separated word.
# - Bracket
# Character matching the bracket at the cursor's location.
# - SearchNext
# Beginning of the next match.
# - SearchPrevious
# Beginning of the previous match.
# - SearchStart
# Start of the match to the left of the vi mode cursor.
# - SearchEnd
# End of the match to the right of the vi mode cursor.
#
# - Search mode exclusive actions:
# - SearchFocusNext
# Move the focus to the next search match.
# - SearchFocusPrevious
# Move the focus to the previous search match.
# - SearchConfirm
# - SearchCancel
# - SearchClear
# Reset the search regex.
# - SearchDeleteWord
# Delete the last word in the search regex.
# - SearchHistoryPrevious
# Go to the previous regex in the search history.
# - SearchHistoryNext
# Go to the next regex in the search history.
#
# - macOS exclusive actions:
# - ToggleSimpleFullscreen
# Enter fullscreen without occupying another space.
#
# - Linux/BSD exclusive actions:
#
# - CopySelection
# Copy from the selection buffer.
# - PasteSelection
# Paste from the selection buffer.
#
# - `command`: Fork and execute a specified command plus arguments
#
# The `command` field must be a map containing a `program` string and an
# `args` array of command line parameter strings. For example:
# `{ program: "alacritty", args: ["-e", "vttest"] }`
#
# And optionally:
#
# - `mods`: Key modifiers to filter binding actions
#
# - Command
# - Control
# - Option
# - Super
# - Shift
# - Alt
#
# Multiple `mods` can be combined using `|` like this:
# `mods: Control|Shift`.
# Whitespace and capitalization are relevant and must match the example.
#
# - `mode`: Indicate a binding for only specific terminal reported modes
#
# This is mainly used to send applications the correct escape sequences
# when in different modes.
#
# - AppCursor
# - AppKeypad
# - Search
# - Alt
# - Vi
#
# A `~` operator can be used before a mode to apply the binding whenever
# the mode is *not* active, e.g. `~Alt`.
#
# Bindings are always filled by default, but will be replaced when a new
# binding with the same triggers is defined. To unset a default binding, it can
# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
# a no-op if you do not wish to receive input characters for that binding.
#
# If the same trigger is assigned to multiple actions, all of them are executed
# in the order they were defined in.
#key_bindings:
#- { key: Paste, action: Paste }
#- { key: Copy, action: Copy }
#- { key: L, mods: Control, action: ClearLogNotice }
#- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" }
#- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, }
#- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown }
#- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, }
#- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
# Vi Mode
#- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
#- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
#- { key: Escape, mode: Vi|~Search, action: ClearSelection }
#- { key: I, mode: Vi|~Search, action: ToggleViMode }
#- { key: I, mode: Vi|~Search, action: ScrollToBottom }
#- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode }
#- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp }
#- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown }
#- { key: G, mode: Vi|~Search, action: ScrollToTop }
#- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom }
#- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp }
#- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown }
#- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp }
#- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown }
#- { key: Y, mode: Vi|~Search, action: Copy }
#- { key: Y, mode: Vi|~Search, action: ClearSelection }
#- { key: Copy, mode: Vi|~Search, action: ClearSelection }
#- { key: V, mode: Vi|~Search, action: ToggleNormalSelection }
#- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection }
#- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection }
#- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection }
#- { key: Return, mode: Vi|~Search, action: Open }
#- { key: K, mode: Vi|~Search, action: Up }
#- { key: J, mode: Vi|~Search, action: Down }
#- { key: H, mode: Vi|~Search, action: Left }
#- { key: L, mode: Vi|~Search, action: Right }
#- { key: Up, mode: Vi|~Search, action: Up }
#- { key: Down, mode: Vi|~Search, action: Down }
#- { key: Left, mode: Vi|~Search, action: Left }
#- { key: Right, mode: Vi|~Search, action: Right }
#- { key: Key0, mode: Vi|~Search, action: First }
#- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last }
#- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied }
#- { key: H, mods: Shift, mode: Vi|~Search, action: High }
#- { key: M, mods: Shift, mode: Vi|~Search, action: Middle }
#- { key: L, mods: Shift, mode: Vi|~Search, action: Low }
#- { key: B, mode: Vi|~Search, action: SemanticLeft }
#- { key: W, mode: Vi|~Search, action: SemanticRight }
#- { key: E, mode: Vi|~Search, action: SemanticRightEnd }
#- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft }
#- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight }
#- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd }
#- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket }
#- { key: Slash, mode: Vi|~Search, action: SearchForward }
#- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward }
#- { key: N, mode: Vi|~Search, action: SearchNext }
#- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious }
# Search Mode
#- { key: Return, mode: Search|Vi, action: SearchConfirm }
#- { key: Escape, mode: Search, action: SearchCancel }
#- { key: C, mods: Control, mode: Search, action: SearchCancel }
#- { key: U, mods: Control, mode: Search, action: SearchClear }
#- { key: W, mods: Control, mode: Search, action: SearchDeleteWord }
#- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious }
#- { key: N, mods: Control, mode: Search, action: SearchHistoryNext }
#- { key: Up, mode: Search, action: SearchHistoryPrevious }
#- { key: Down, mode: Search, action: SearchHistoryNext }
#- { key: Return, mode: Search|~Vi, action: SearchFocusNext }
#- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious }
# (Windows, Linux, and BSD only)
#- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste }
#- { key: C, mods: Control|Shift, action: Copy }
#- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward }
#- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward }
#- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection }
#- { key: Insert, mods: Shift, action: PasteSelection }
#- { key: Key0, mods: Control, action: ResetFontSize }
#- { key: Equals, mods: Control, action: IncreaseFontSize }
#- { key: Plus, mods: Control, action: IncreaseFontSize }
#- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
#- { key: Minus, mods: Control, action: DecreaseFontSize }
#- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
# (Windows only)
#- { key: Return, mods: Alt, action: ToggleFullscreen }
# (macOS only)
#- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
#- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory }
#- { key: Key0, mods: Command, action: ResetFontSize }
#- { key: Equals, mods: Command, action: IncreaseFontSize }
#- { key: Plus, mods: Command, action: IncreaseFontSize }
#- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
#- { key: Minus, mods: Command, action: DecreaseFontSize }
#- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
#- { key: V, mods: Command, action: Paste }
#- { key: C, mods: Command, action: Copy }
#- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection }
#- { key: H, mods: Command, action: Hide }
#- { key: H, mods: Command|Alt, action: HideOtherApplications }
#- { key: M, mods: Command, action: Minimize }
#- { key: Q, mods: Command, action: Quit }
#- { key: W, mods: Command, action: Quit }
#- { key: N, mods: Command, action: SpawnNewInstance }
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
#- { key: F, mods: Command, mode: ~Search, action: SearchForward }
#- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
#debug:
# Display the time it takes to redraw each frame.
#render_timer: false
# Keep the log file after quitting Alacritty.
#persistent_logging: false
# Log level
#
# Values for `log_level`:
# - Off
# - Error
# - Warn
# - Info
# - Debug
# - Trace
#log_level: Warn
# Print all received window events.
#print_events: false

View File

@ -1,151 +0,0 @@
# vim: filetype=muttrc
#
#
# make sure that you are using mutt linked against slang, not ncurses, or
# suffer the consequences of weird color issues. use "mutt -v" to check this.
# custom body highlights -----------------------------------------------
# highlight my name and other personally relevant strings
#color body yellow default "(ethan|schoonover)"
# custom index highlights ----------------------------------------------
# messages which mention my name in the body
#color index yellow default "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P"
#color index J_cream brightwhite "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P"
#color index yellow cyan "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P"
#color index yellow J_magent "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P"
## messages which are in reference to my mails
#color index J_magent default "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P"
#color index J_magent brightwhite "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P"
#color index J_magent cyan "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P"
#color index J_magent red "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P"
# for background in 16 color terminal, valid background colors include:
# base03, bg, black, any of the non brights
# basic colors ---------------------------------------------------------
color normal brightyellow default
color error red default
color tilde black default
color message cyan default
color markers red white
color attachment white default
color search brightmagenta default
#color status J_black J_status
color status brightyellow black
color indicator brightblack yellow
color tree yellow default # arrow in threads
# basic monocolor screen
mono bold bold
mono underline underline
mono indicator reverse
mono error bold
# index ----------------------------------------------------------------
#color index red default "~D(!~p|~p)" # deleted
#color index black default ~F # flagged
#color index brightred default ~= # duplicate messages
#color index brightgreen default "~A!~N!~T!~p!~Q!~F!~D!~P" # the rest
#color index J_base default "~A~N!~T!~p!~Q!~F!~D" # the rest, new
color index red default "~A" # all messages
color index brightred default "~E" # expired messages
color index blue default "~N" # new messages
color index blue default "~O" # old messages
color index brightmagenta default "~Q" # messages that have been replied to
color index brightgreen default "~R" # read messages
color index blue default "~U" # unread messages
color index blue default "~U~$" # unread, unreferenced messages
color index brightyellow default "~v" # messages part of a collapsed thread
color index brightyellow default "~P" # messages from me
color index cyan default "~p!~F" # messages to me
color index cyan default "~N~p!~F" # new messages to me
color index cyan default "~U~p!~F" # unread messages to me
color index brightgreen default "~R~p!~F" # messages to me
color index red default "~F" # flagged messages
color index red default "~F~p" # flagged messages to me
color index red default "~N~F" # new flagged messages
color index red default "~N~F~p" # new flagged messages to me
color index red default "~U~F~p" # new flagged messages to me
color index black red "~D" # deleted messages
color index brightcyan default "~v~(!~N)" # collapsed thread with no unread
color index yellow default "~v~(~N)" # collapsed thread with some unread
color index green default "~N~v~(~N)" # collapsed thread with unread parent
# statusbg used to indicated flagged when foreground color shows other status
# for collapsed thread
color index red black "~v~(~F)!~N" # collapsed thread with flagged, no unread
color index yellow black "~v~(~F~N)" # collapsed thread with some unread & flagged
color index green black "~N~v~(~F~N)" # collapsed thread with unread parent & flagged
color index green black "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged
color index cyan black "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly
color index yellow red "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial)
#color index yellow default "~(~N)" # messages in threads with some unread
#color index green default "~S" # superseded messages
#color index red default "~T" # tagged messages
#color index brightred red "~=" # duplicated messages
# message headers ------------------------------------------------------
#color header brightgreen default "^"
color hdrdefault brightgreen default
color header brightyellow default "^(From)"
color header blue default "^(Subject)"
# body -----------------------------------------------------------------
color quoted blue default
color quoted1 cyan default
color quoted2 yellow default
color quoted3 red default
color quoted4 brightred default
color signature brightgreen default
color bold black default
color underline black default
color normal default default
#
color body brightcyan default "[;:][-o][)/(|]" # emoticons
color body brightcyan default "[;:][)(|]" # emoticons
color body brightcyan default "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
|FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
|IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
## pgp
color body red default "(BAD signature)"
color body cyan default "(Good signature)"
color body brightblack default "^gpg: Good signature .*"
color body brightyellow default "^gpg: "
color body brightyellow red "^gpg: BAD signature from.*"
mono body bold "^gpg: Good signature"
mono body bold "^gpg: BAD signature from.*"
# yes, an insance URL regex
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
# and a heavy handed email regex
#color body J_magent default "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
# Various smilies and the like
#color body brightwhite default "<[Gg]>" # <g>
#color body brightwhite default "<[Bb][Gg]>" # <bg>
#color body yellow default " [;:]-*[})>{(<|]" # :-) etc...
# *bold*
#color body blue default "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
#mono body bold "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
# _underline_
#color body blue default "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
#mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
# /italic/ (Sometimes gets directory names)
#color body blue default "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
#mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
# Border lines.
#color body blue default "( *[-+=#*~_]){6,}"
#folder-hook . "color status J_black J_status "
#folder-hook gmail/inbox "color status J_black yellow "
#folder-hook gmail/important "color status J_black yellow "

77
.muttrc
View File

@ -1,77 +0,0 @@
# Mutt configuration file
# See: http://stevelosh.com/blog/2012/10/the-homely-mutt/#configuring
# See: http://www.linuxuser.co.uk/tutorials/get-started-with-mutt
# Paths
set alias_file = ~/.mutt/alias # where to store aliases
set header_cache = ~/.mutt/cache/headers # where to store headers
set message_cachedir = ~/.mutt/cache/bodies # where to store bodies
set tmpdir = ~/.mutt/temp # where to keep temp files, must exist
set signature = ~/.signature.gmail # signature file
# Basic Options
set wait_key = no # shut up, mutt
set mbox_type = Maildir # mailbox type
set timeout = 15 # idle time before scanning (seconds)
set mail_check = 60 # minimum time between scans (seconds)
unset move # gmail does that
unset mark_old # read/new is good enough for me
set beep_new # bell on new mails
set pipe_decode # strip headers and eval mimes when piping
set thorough_search # strip headers and eval mimes before searching
# Header Options
# Hide some of the extra email headers we don't care about
ignore * # ignore all headers
unignore from: to: cc: bcc: date: subject: # show only these
unhdr_order * # some distros order things by default
hdr_order from: to: cc: bcc: date: subject: # and in this order
# Incoming
set imap_user = 'alan.orth@gmail.com'
# Outgoing
set smtp_url = 'smtp://alan.orth@gmail.com@smtp.gmail.com:587/'
set from = 'alan.orth@gmail.com'
set realname = 'Alan Orth'
# Mailbox settings
set folder = 'imaps://imap.gmail.com/'
set spoolfile = '+INBOX' # '+' is a shortcut for the folder path
set record = '' # don't save sent mails to Sent folder, gmail does this
set postponed = '+[Gmail]/Drafts'
# Check all labels/folders
set imap_check_subscribed
# Index configuration (main screen)
# Index view Options ---------------------------------
set date_format = '%m/%d'
set index_format = '[%Z] %D %-20.20F %s'
set sort = threads # like gmail
set sort_aux = reverse-last-date-received # like gmail
set uncollapse_jump # don't collapse on an unread message
set sort_re # thread based on regex
set reply_regexp = '^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*'
# Index key Bindings ---------------------------------
bind index gg first-entry
bind index G last-entry
# Writing mail
set envelope_from # which from?
set sig_dashes # dashes before sig
set edit_headers # show headers when composing
set fast_reply # skip to compose when replying
set fcc_attach # save attachments with the body
unset mime_forward # forward attachments as part of body
set forward_format = 'Fwd: %s' # format of subject when forwarding
set forward_decode # decode when forwarding
set attribution = 'On %d, %n wrote:' # format of quoting header
set reply_to # reply to Reply to: field
set reverse_name # reply as whomever it was to
set include # include message in replies
set forward_quote # include message in forwards
# Color scheme
source ~/.mutt-colors-solarized-dark-16.muttrc

View File

@ -1,37 +1,26 @@
# Alan's dotfiles
Dotfiles for pretty much every Linux system I have access to. After setting up a new host, I do:
Alan's dotfiles are managed with [dotdrop](https://github.com/deadc0de6/dotdrop). To set up on a new Arch Linux machine install [dotdrop from AUR](https://aur.archlinux.org/packages/dotdrop) and do this:
## Setup on Arch Linux
Install [dotdrop from AUR](https://aur.archlinux.org/packages/dotdrop) and then install the dotfiles:
```console
$ mkdir ~/src/git
$ cd ~/src/git
$ git clone https://github.com/alanorth/dotfiles.git
$ cd ~
$ ln -sf ~/src/git/dotfiles/.bashrc .
$ ln -sf ~/src/git/dotfiles/.vim .
$ ln -sf ~/src/git/dotfiles/.vimrc .
$ ln -sf ~/src/git/dotfiles/.tmux.conf .
$ ln -sf ~/src/git/dotfiles/.zshrc .
$ mkdir -p ~/.config
$ ln -sf ~/src/git/dotfiles/sway .config
$ ln -sf ~/src/git/dotfiles/foot .config
$ ln -sf ~/src/git/dotfiles/mako .config
$ ln -sf ~/src/git/dotfiles/kanshi .config
$ git clone --recursive https://git.mjanja.ch/alanorth/dotfiles.git
$ dotdrop install
```
## .bashrc
Configures the shell to have a custom PS1 prompt, adds paths for Homebrew, adds some common aliases, Selenized dircolors, etc.
## Setup on Other Linux
Bootstrap the repository's copy of dotdrop, prepare Python deps, and then install the dotfiles:
## .tmux.conf
Solarized color scheme with key bindings like GNU screen.
## .vim + .vimrc
Syntax highlighting, Selenized color scheme, tab stops to four spaces, etc.
## .zshrc
Configures the shell to have a custom PS1 prompt, adds paths for Homebrew, adds some common aliases, Selenized dircolors, etc.
```console
$ git clone --recursive https://git.mjanja.ch/alanorth/dotfiles.git
$ ./dotdrop/bootstrap.sh
$ pip3 install -r dotdrop/requirements.txt --user
$ ./dotdrop.sh install
```
## License
Copyright (C) 20152020 Alan Orth
Copyright (C) 20152022 Alan Orth
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@ -10,8 +10,8 @@ dotfiles:
src: vimrc
dst: ~/.vimrc
f_tmux.conf:
src: tmux.conf
dst: ~/.tmux.conf
src: config/tmux/tmux.conf
dst: ~/.config/tmux/tmux.conf
f_foot.ini:
src: config/foot/foot.ini
dst: ~/.config/foot/foot.ini
@ -48,10 +48,55 @@ dotfiles:
f_psqlrc:
src: psqlrc
dst: ~/.psqlrc
f_pam_environment:
src: pam_environment
dst: ~/.pam_environment
f_bashrc:
src: bashrc
dst: ~/.bashrc
f_xdg_desktop_portal_wlr_config:
src: config/xdg-desktop-portal-wlr/config
dst: ~/.config/xdg-desktop-portal-wlr/config
f_geoclue-agent.service:
src: config/systemd/user/geoclue-agent.service
dst: ~/.config/systemd/user/geoclue-agent.service
d_local_bin:
src: local/bin
dst: ~/.local/bin
f_ssh_config:
src: ssh/config
dst: ~/.ssh/config
f_ssh-agent.service:
src: config/systemd/user/ssh-agent.service
dst: ~/.config/systemd/user/ssh-agent.service
d_waybar:
src: config/waybar
dst: ~/.config/waybar
f_fuzzel.ini:
src: config/fuzzel/fuzzel.ini
dst: ~/.config/fuzzel/fuzzel.ini
f_wezterm.lua:
src: wezterm.lua
dst: ~/.wezterm.lua
f_convert-libaom.sh:
src: local/bin/convert-libaom.sh
dst: ~/.local/bin/convert-libaom.sh
chmod: '755'
f_dark-mode-theme.sh:
src: local/share/dark-mode.d/01-gtk-theme.sh
dst: ~/.local/share/dark-mode.d/01-gtk-theme.sh
chmod: '755'
f_light-mode-theme.sh:
src: local/share/light-mode.d/01-gtk-theme.sh
dst: ~/.local/share/light-mode.d/01-gtk-theme.sh
chmod: '755'
f_darkman_config.yaml:
src: config/darkman/config.yaml
dst: ~/.config/darkman/config.yaml
profiles:
everywhere:
dotfiles:
- d_vim
- f_vimrc
- f_tmux.conf
- f_zshrc
balozi:
dotfiles:
- d_vim
@ -69,7 +114,16 @@ profiles:
- f_wob.socket
- f_sway-session.target
- f_psqlrc
- f_pam_environment
- f_xdg_desktop_portal_wlr_config
- d_local_bin
- f_ssh-agent.service
- d_waybar
- f_fuzzel.ini
- f_wezterm.lua
- f_convert-libaom.sh
- f_dark-mode-theme.sh
- f_light-mode-theme.sh
- f_darkman_config.yaml
knafeh:
dotfiles:
- d_vim
@ -87,4 +141,14 @@ profiles:
- f_wob.socket
- f_sway-session.target
- f_psqlrc
- f_pam_environment
- f_xdg_desktop_portal_wlr_config
- f_geoclue-agent.service
- d_local_bin
- f_ssh-agent.service
- d_waybar
- f_fuzzel.ini
- f_wezterm.lua
- f_convert-libaom.sh
- f_dark-mode-theme.sh
- f_light-mode-theme.sh
- f_darkman_config.yaml

View File

@ -0,0 +1 @@
usegeoclue: true

View File

@ -1,7 +1,7 @@
# -*- conf -*-
# 2021-01-20: avoid errors on remote systems when using less etc when the foot
# terminfo is not available.
# terminfo is not available. Check with `infocmp tmux-256color`.
term=xterm-256color
# Use fc-list to check fonts and styles
@ -23,29 +23,6 @@ font-bold-italic=Cascadia Mono:style=Bold Italic:size=13.5
{%@@ endif @@%}
# Selenized dark
[cursor]
color = 103c48 53d6c7
include=/usr/share/foot/themes/selenized-dark
[colors]
background= 103c48
foreground= adbcbc
regular0= 184956
regular1= fa5750
regular2= 75b938
regular3= dbb32d
regular4= 4695f7
regular5= f275be
regular6= 41c7b9
regular7= 72898f
bright0= 2d5b69
bright1= ff665c
bright2= 84c747
bright3= ebc13d
bright4= 58a3ff
bright5= ff84cd
bright6= 53d6c7
bright7= cad8d9
dim0= 72898f
# vim: ft=dosini

View File

@ -0,0 +1,28 @@
dpi-aware=auto
# Use fc-list to check fonts and styles
font=Source Sans Pro:style=Roman:size=12
fields=name,generic,comment,categories,filename,keywords
terminal=foot -e
prompt=" "
layer=overlay
[colors]
# Selenized colors
# base03
background=103c48ff
# base0
text=adbcbcff
# magenta
match=f275beff
# base02
selection=184956ff
# base0
selection-text=adbcbcff
border=adbcbcfa
[border]
radius=20
[dmenu]
exit-immediately-if-empty=yes
# vim: ft=dosini

View File

@ -5,6 +5,31 @@ profile external-dell {
output "Dell Inc. DELL P2416D 6RC2C54O0NWS" mode 2560x1440 position 0,0 scale 1.75
}
profile internal {
output eDP-1 enable mode 1920x1080 scale 1.33 position 0,0
profile external-dell-4k {
output eDP-1 disable
# DELL U3219Q 9RSG413, 31.5 inches, 139.87 PPI (see https://www.sven.de/dpi/)
# "make model serial" from `swaymsg -t get_outputs`
output "Dell Inc. DELL U3219Q 9RSG413" mode 3840x2160 position 0,0 scale 2
}
profile external-hp1 {
output eDP-1 disable
# HP E243, 23 inches, 95.78 PPI (see https://www.sven.de/dpi/)
# "make model serial" from `swaymsg -t get_outputs`
output "Unknown HP E243 CNK0470PZR" mode 1920x1080 position 0,0 scale 1.33
}
profile external-hp2 {
output eDP-1 disable
# HP E231, 23 inches, 95.78 PPI (see https://www.sven.de/dpi/)
# "make model serial" from `swaymsg -t get_outputs`
output "Hewlett Packard HP E231 6CM3472DH4" mode 1920x1080 position 0,0 scale 1.33
}
profile internal {
{%@@ if profile == "knafeh" @@%}
output eDP-1 enable mode 2560x1440 scale 1.75 position 0,0
{%@@ elif profile == "balozi" @@%}
output eDP-1 enable mode 1920x1080 scale 1.33 position 0,0
{%@@ endif @@%}
}

View File

@ -18,7 +18,7 @@ set $term foot
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
set $menu wofi --show drun -i | xargs swaymsg exec --
set $menu fuzzel | xargs swaymsg exec --
### Display
@ -32,7 +32,7 @@ assign [app_id="Alacritty"] 2
assign [app_id="foot"] 2
assign [app_id="geary"] 3
assign [app_id="thunderbird"] 3
for_window [app_id="gnome-calculator"] floating enable
for_window [app_id="org.gnome.Calculator"] floating enable
for_window [app_id="firefox" title="About Firefox"] floating enable
for_window [app_id="firefox" title="^Picture-in-Picture$"] floating enable; sticky enable
# Send the sharing indicator in Chrome and Firefox to the scratchpad
@ -43,6 +43,12 @@ for_window [title="Office 365 - Manual authentication"] floating enable
for_window [app_id="org.jellyfin.jellyfinmediaplayer"] inhibit_idle visible
for_window [title="(?:Open|Save) (?:File|Folder|As)"] floating enable, resize set width 1030 height 710
for_window [shell="xwayland"] title_format "%title [XWayland]"
# 2022-06-27 Chromium windows launched with --app disable shortcuts
# See: https://www.reddit.com/r/swaywm/comments/vlvpws/chromeium_app_flag_spawns_windows_with_shortcut/
for_window [app_id="^chrome-.*__-.*$"] shortcuts_inhibitor disable
for_window [app_id="org.twosheds.iwgtk"] floating enable
# LibreOffice Calc import window
for_window [app_id="soffice"] floating enable
### Output configuration
#
@ -64,7 +70,7 @@ set $WOBSOCK $XDG_RUNTIME_DIR/wob.sock
#
# exec swayidle -w \
# timeout 300 'swaylock -f -c 000000' \
# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
# timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
# before-sleep 'swaylock -f -c 000000'
#
# This will lock your screen after 300 seconds of inactivity, then turn off
@ -124,13 +130,6 @@ input type:keyboard {
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
bindsym XF86AudioRaiseVolume exec pamixer -ui 5 && pamixer --get-volume > $WOBSOCK
bindsym XF86AudioLowerVolume exec pamixer -ud 5 && pamixer --get-volume > $WOBSOCK
bindsym XF86AudioMute exec pamixer --toggle-mute && ( pamixer --get-mute && echo 0 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessUp exec light -S "$(light -G | awk '{ print int(($1 + .72) * 1.4) }')" && light -G | cut -d'.' -f1 > $WOBSOCK
bindsym XF86MonBrightnessDown exec light -S "$(light -G | awk '{ print int($1 / 1.4) }')" && light -G | cut -d'.' -f1 > $WOBSOCK
#
# Moving around:
#
@ -253,26 +252,29 @@ mode "resize" {
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
#
# Utilities:
#
# Special keys to adjust volume via PulseAudio
bindsym --locked XF86AudioMute exec pamixer --toggle-mute && ( pamixer --get-mute && echo 0 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK
bindsym --locked XF86AudioLowerVolume exec pamixer -ud 5 && pamixer --get-volume > $WOBSOCK
bindsym --locked XF86AudioRaiseVolume exec pamixer -ui 5 && pamixer --get-volume > $WOBSOCK
bindsym --locked XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
# Special keys to adjust brightness via brightnessctl
bindsym --locked XF86MonBrightnessUp exec light -S "$(light -G | awk '{ print int(($1 + .72) * 1.4) }')" && light -G | cut -d'.' -f1 > $WOBSOCK
bindsym --locked XF86MonBrightnessDown exec light -S "$(light -G | awk '{ print int($1 / 1.4) }')" && light -G | cut -d'.' -f1 > $WOBSOCK
#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
bar {
position bottom
# When the status_command prints a new line to stdout, swaybar updates.
# The default just shows the current date and time.
status_command while ~/.config/sway/status.py; do sleep 1; done
colors {
statusline #ffffff
background #323232
inactive_workspace #32323200 #32323200 #5c5c5c
}
swaybar_command waybar
}
include /etc/sway/config.d/*
# Start sway-session.target, to which kanshi.service and swayidle.service bind.
exec_always "systemctl --user import-environment; systemctl --user start sway-session.target"
exec_always "systemctl --user start sway-session.target"

View File

@ -1,67 +0,0 @@
#!/usr/bin/env python3
#
# Requires the following packages on Arch Linux:
# - ttf-twemoji (and make sure there are no other emoji fonts like noto-fonts-emoji
# - iwd (iwctl)
# - pulsemixer
# - python-psutil
from datetime import datetime
from subprocess import check_output
from sys import stdout
from psutil import sensors_battery
def write(data):
stdout.write("%s\n" % data)
stdout.flush()
def refresh():
try:
ssid = (
check_output(
"iwctl station wlan0 show | grep -o 'Connected network.*$' | sed 's/^Connected network\s\+//'",
shell=True,
)
.strip()
.decode("utf-8")
)
except Exception:
ssid = "None"
wifi_status = f"{ssid} 📶"
battery_percent = int(sensors_battery().percent)
battery_icon = "🔋"
battery_status = f"{battery_percent} {battery_icon}"
power_status = "🔌" if sensors_battery().power_plugged else ""
try:
# pulsemixer returns "10 10" so we need to split the output to get "10"
volume_level = (
check_output("pulsemixer --get-volume", shell=True).strip().decode("utf-8")
)
volume_level = int(volume_level.split(" ")[0])
if volume_level >= 70:
volume_icon = "🔊"
elif volume_level >= 30 and volume_level < 70:
volume_icon = "🔉"
elif volume_level < 30 and volume_level >= 1:
volume_icon = "🔈"
else:
volume_icon = "🔇"
except Exception:
volume_level = ""
volume_icon = ""
volume_status = f"{volume_level} {volume_icon}"
date = datetime.now().strftime("%Y-%m-%d %l:%M:%S %p")
write(f"{wifi_status} {volume_status} {battery_status} {power_status} {date}")
refresh()

View File

@ -0,0 +1,10 @@
[Unit]
Description=Geoclue agent
BindsTo=sway-session.target
[Service]
Type=simple
ExecStart=/usr/lib/geoclue-2.0/demos/agent
[Install]
WantedBy=sway-session.target

View File

@ -0,0 +1,13 @@
# From: https://wiki.archlinux.org/title/SSH_keys#SSH_agents
[Unit]
Description=SSH key agent
[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
# DISPLAY required for ssh-askpass to work
Environment=DISPLAY=:0
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
[Install]
WantedBy=default.target

View File

@ -8,8 +8,8 @@ Type=simple
ExecStart=/usr/bin/swayidle -w \
timeout 300 'swaylock -f -c 000000 \
-i /home/aorth/Downloads/3121px-Jerusalem-2013-Temple_Mount-Dome_of_the_Rock-Detail_01.jpg' \
timeout 600 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
timeout 600 'swaymsg "output * power off"' \
resume 'swaymsg "output * power on"' \
before-sleep 'swaylock -f -c 000000 \
-i /home/aorth/Downloads/3121px-Jerusalem-2013-Temple_Mount-Dome_of_the_Rock-Detail_01.jpg'

View File

@ -102,11 +102,20 @@ set-option -g status-right '#[fg=colour47]#H #[fg=red]#(cut -d " " -f 1-3 /proc/
# scrollback buffer
set-option -g history-limit 4096
# 2020-07-10: According to the tmux FAQ, inside tmux TERM must be "screen",
# "tmux" or similar (such as "tmux-256color"). Systems with older terminfo
# like CentOS 7 don't support tmux-256color so let's keep screen-256color
# for now.
set-option -g default-terminal "screen-256color"
# 2022-11-26: According to the tmux FAQ, inside tmux TERM must be "screen",
# "tmux" or similar (such as "tmux-256color"). As of CentOS Stream 8, now
# all my systems support this (check with `infocmp tmux-256color`).
#
# See: https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-a-256-colour-terminal
set-option -g default-terminal "tmux-256color"
# 2022-11-26: Tell Tmux that the outside terminal supports true color. I
# need to use the tmux-specific extension "Tc" for now until all my hosts
# are on tmux 3.2+.
#
# See: https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-rgb-colour
# See: https://jdhao.github.io/2018/10/19/tmux_nvim_true_color/
set -as terminal-overrides ",*-256color*:Tc"
#### COLOUR (Solarized dark)

View File

@ -0,0 +1,70 @@
{
"position": "bottom", // Waybar position (top|bottom|left|right)
"height": 25, // Waybar height (to be removed for auto height)
"spacing": 2, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": ["sway/workspaces", "sway/mode", "sway/scratchpad"],
"modules-center": ["sway/window"],
"modules-right": ["idle_inhibitor", "wireplumber", "network", "sway/language", "battery", "clock", "tray"],
// Modules configuration
"sway/workspaces": {
"disable-scroll": true,
},
"sway/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"sway/scratchpad": {
"format": "{icon} {count}",
"show-empty": false,
"format-icons": ["", ""],
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"sway/window": {
"format": "{title}",
"max-length": 50,
},
"sway/language": {
"format": "{short} {variant}",
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
"spacing": 10
},
"clock": {
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format": "{:%Y-%m-%d %H:%M %p}"
},
"battery": {
"states": {
"good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-charging": "{capacity}% ",
"format-plugged": "{capacity}% ",
"format-alt": "{time} {icon}",
"format-icons": ["", "", "", "", ""]
},
"network": {
"format-wifi": "{essid} ({signalStrength}%) ",
"format-ethernet": "{ipaddr}/{cidr} ",
"tooltip-format": "{ifname} via {gwaddr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"wireplumber": {
"format": "{volume}% {icon}",
"format-muted": "",
"on-click": "helvum",
"format-icons": ["", "", ""]
},
}

View File

@ -0,0 +1,127 @@
/* List of selenized-dark colors vs solarized-dark */
/* {
--base03: #103c48 (002b36);
--base02: #184956 (073642);
--base01: #84c747 (586e75);
--base00: #ebc13d (657b83);
--base0: #adbcbc (839496);
--base1: #53d6c7 (93a1a1);
--base2: #72898f (eee8d5);
--base3: #cad8d9 (fdf6e3);
--yellow: #dbb32d (b58900);
--orange: #ff665c (cb4b16);
--red: #fa5750 (dc322f);
--magenta: #f275be (d33682);
--violet: #ff84cd (6c71c4);
--blue: #4695f7 (268bd2);
--cyan: #41c7b9 (2aa198);
--green: #75b938 (859900);
} */
* {
border: none;
border-radius: 0;
font-family: Source Sans Pro Semibold, "Font Awesome 6 Free", sans-serif;
font-size: 13px;
min-height: 0;
}
window#waybar {
background-color: #103c48;
color: #f275be;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
#workspaces button {
padding: 0 3px;
background-color: transparent;
color: #adbcbc;
border-bottom: 2px solid transparent;
}
#workspaces button.focused {
background-color: #184956;
border-bottom: 2px solid #fa5750;
}
#workspaces button.urgent {
background-color: #f275be;
}
#clock, #battery, #network, #wireplumber, #tray, #mode, #language, #idle_inhibitor, #window {
padding: 0 10px;
margin: 0 2px;
color: #adbcbc;
}
#clock {
background-color: #184956;
}
#battery {
background-color: #184956;
}
#battery.charging {
color: #103c48;
background-color: #75b938;
}
#language {
background-color: #184956;
}
@keyframes blink {
to {
background-color: #f275be;
color: #53d6c7;
}
}
#battery.critical:not(.charging) {
background-color: #fa5750;
color: #53d6c7;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #184956;
}
#network {
background-color: #184956;
}
#network.disconnected {
background-color: #103c48;
}
#wireplumber {
background-color: #184956;
}
#wireplumber.muted {
background-color: #103c48;
}
#tray {
background-color: #103c48;
}
#idle_inhibitor {
background-color: #103c48;
}
#idle_inhibitor.activated {
background-color: #184956;
}

View File

@ -1,33 +1,60 @@
/**
* Selenized dark variant Wofi Color theme
**/
window {
border: 2px solid #2aa198;
border-radius: 12px;
background-color: rgba(4, 30, 37, 0.88);
margin: 1px;
border: 1px solid #adbcbc;
background-color: #103c48;
}
#input {
color: #859900;
border: 2px solid #2aa198;
border-radius: 12px;
background-color: rgba(4, 30, 37, 0.88);
font-size: 18px;
margin: 1px;
border: 2px dashed #84c747;
border-top-color: #103c48;
border-left-color: #103c48;
border-right-color: #103c48;
border-bottom-color: #84c747;
background-color: #103c48;
color: #adbcbc;
font: 14px DejaVu Sans Mono;
}
#inner-box {
margin: 1px;
border: 2px none #103c48;
background-color: #103c48;
}
#outer-box {
margin: 10px;
margin: 1px;
border: 2px none #103c48;
background-color: #103c48;
}
#scroll {
margin: 5px 0px;
font-size: 16px;
color: #859900;
margin: 1px;
border: 2px solid #103c48;
background-color: #103c48;
color: #adbcbc;
}
#scroll label {
margin: 1px 1px;
#text {
margin: 1px;
border: 1px none #103c48;
font: 14px DejaVu Sans Mono;
}
#entry:selected {
color: #000000;
background-color: #d33682;
#selected {
margin: 0px;
border: 2px none #325b66;
background-color: #325b66;
color: #adbcbc;
}
#entry {
margin: 1px;
border: 1px none #103c48;
background-color: #103c48;
}

View File

@ -0,0 +1,4 @@
# 2021-05-24: See https://github.com/emersion/xdg-desktop-portal-wlr/issues/124
[screencast]
chooser_cmd = fuzzel --dmenu --lines=3 --no-icons --prompt='Select the monitor to share:'
chooser_type = dmenu

View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
magick convert "$1" -trim \( +clone -background grey25 -shadow 80x40+5+30 \) +swap -background transparent -layers merge +repage "$1-shadow.png"

View File

@ -0,0 +1,216 @@
#!/usr/bin/env bash
#
# v2022-06-13
#
# I run it like this (using zsh syntax):
#
# $ for video (~/Pictures/2021/**/*.mp4(ND.)); do ~/Downloads/av1-tests/convert-libaom.sh "$video"; done
#
# Reference:
# - https://ffmpeg.org/ffmpeg-codecs.html#libaom_002dav1
# - https://trac.ffmpeg.org/wiki/Encode/AV1
#
# Changes:
# 2024-01-21: minor improvement to handling of output file name
# 2022-06-13: use _max_crf in mkvpropedit if we don't find an acceptable vmaf
# 2022-04-05: update VMAF log parsing
# 2021-10-21: I tested 2-pass and found it doesn't do anything for constant
# quality mode. cpu-used 2 still takes ~5x longer than cpu-used 4
# at all tiling levels. 4x4 tiles much faster than 2x1 and 2x2 on
# all cpu-used levels, with quality less than 0.5 VMAF difference.
# Using 4x4 creates a grid of 16 tiles which just seems wrong...
# especially if you don't have many threads (I was using 12), so
# I will default to 2x2 as a compromise.
# 2021-10-20: use tiles instead of columns and rows
# 2021-10-16: use tile-columns 2 and tile-rows 2 (oops, this is 4x4 tiles!)
# 2021-08-31: strip spaces and commas from VMAF log file name as well
# 2021-05-14: benchmarked two pass and file sizes are larger by .5-1MB
# 2021-04-29: make sure input file exists
# 2021-03-07: benchmarked 10-bit and it's only .5 or less improvment to VMAF
# 2021-02-22: allow overriding threads
# 2021-02-15: fix handling of apostrophes in ffmpeg's log_path
# 2021-01-27: round VMAF before comparing, simplifies code a bit
# 2021-01-25: stop trying lower CRFs if VMAF is not likely to improve
# 2021-01-19: embed encoding parameters in webm metadata with mkvpropedit
# 2021-01-18: use 1-pass encoding (2-pass is only for trying to hit a target
# bitrate!)
# 2021-01-18: allow overriding variables
# 2021-01-17: detect if video already processed
# 2021-01-08: use cpu-used 4
# 2021-01-07: use tile-columns 2 and tile-rows 2 with cpu-used 4
# 2021-01-07: use tile-columns 2 and tile-rows 2 with cpu-used 3
# 2021-01-07: use -g 300 (30fps x 10)
# exit on first error
set -o errexit
if [[ -z "$1" ]]; then
echo "No input file specified."
exit 1
elif [[ ! -r "$1" ]]; then
echo "Input file missing or unreadable: $1"
exit 1
fi
INPUT_FILE_BASENAME=$(basename -- "$1")
INPUT_FILE_EXTENSION=${INPUT_FILE_BASENAME##*.}
INPUT_FILE_DIRNAME=$(dirname -- "$1")
# Check if an output file name was specified (like if we are calling from the
# benchmarking script, in which case we want to exit as soon as possible). If
# not then we can continue with a simple filename based on the input file's.
if [[ -z $_output_file ]]; then
# Strip file extension from end of string and replace with webm
_output_file="${INPUT_FILE_BASENAME%$INPUT_FILE_EXTENSION}webm";
_benchmark_mode="false"
else
_benchmark_mode="true"
fi
# aq-mode not recommended in AV1 yet
_aq_mode=${_aq_mode:-0}
# 2021-01-08 (libaom 2.0.1): realistic range between 3 and 5, lower takes *much*
# longer with very little boost to VMAF. In my experience, cpu-used 2 is *three*
# times slower than cpu-used 4 at the same CRF for only a 0.5% boost in VMAF. 6
# is the same as 5 in all my tests *shrug*.
_cpu_used=${_cpu_used:-4}
# 2021-10-20 -tile-columns and -tile-rows are for compatibility with libvpx. The
# new option for libaom is -tiles. Convert any columns/rows to tiles using 2^n.
if [[ ! -z $_tile_columns || ! -z $_tile_rows ]]; then
_tile_columns=${_tile_columns:-1}
_tile_rows=${_tile_rows:-1}
# Compute 2^n tile columns and tile rows (the power operator is ** in bash)
_tiles="$((2 ** $_tile_columns))x$((2 ** $_tile_rows))"
else
_tiles=${_tiles:-2x2}
fi
# 2021-02-22 use nproc number of threads unless threads is already set.
_nproc=$(nproc)
_threads=${_threads:-$_nproc}
# Range of CRFs to try, where higher is faster, but lower quality. Based on my
# testing 52 to 40 should cover most crappy phone videos.
_crf_max=${_crf_max:-52}
_crf_min=${_crf_min:-40}
_libaom_version=$(pacman -Qi aom | grep Version | awk '{print $3}')
# For grainy mobile phone videos 90 is fine
_target_vmaf=${_target_vmaf:-90}
# Don't bother trying lower CRF values if the CRF score is more than five points
# above the target. In my experience each successively lower CRF step gives you
# ~1 VMAF point. In these cases it isn't likely we'll ever reach the target, so
# we might as well just settle on the current CRF straight away.
_target_vmaf_threshold=${_target_vmaf_threshold:-5}
_acceptable_output_found="no"
# Change to the input file's directory
pushd "$INPUT_FILE_DIRNAME" >/dev/null
# We want the highest VMAF score possible with the highest CRF possible. Start
# with high CRF first to see if we can get an acceptable VMAF score as soon as
# possible. Step through values by 2.
for _crf in $(seq $_crf_max -2 $_crf_min); do
_processed=$(find . -maxdepth 1 -type f -iname "$_output_file" | wc -l)
if [[ $_processed -gt 0 ]]; then
echo "${INPUT_FILE_BASENAME}: already processed"
exit 0
fi
if [[ $_benchmark_mode == "false" ]]; then
echo "Processing ${INPUT_FILE_BASENAME} with libaom $_libaom_version CRF ${_crf}..."
fi
chrt -b 0 nice ffmpeg -hide_banner -y -i "$INPUT_FILE_BASENAME" -c:v libaom-av1 -b:v 0 -crf $_crf \
-aq-mode $_aq_mode -c:a libopus -b:a 16k \
-sc_threshold 0 -cpu-used $_cpu_used \
-tiles $_tiles -row-mt 1 \
-auto-alt-ref 1 -lag-in-frames 25 \
-g 300 -threads $_threads \
-f webm "$_output_file" 2>/dev/null
# Return quickly if we are in benchmark mode so the benchmark script can get
# an accurate time and compute its own VMAF score.
if [[ $_benchmark_mode == "true" ]]; then
exit 0
fi
_vmaf_log="${_output_file/.*/}.log"
# strip apostrophes, spaces, and commas (if any) from log file name because
# ffmpeg's log_path doesn't seem to be able to handle them. The // performs
# a global replace.
_vmaf_log="${_vmaf_log//\'}"
_vmaf_log="${_vmaf_log//\,}"
_vmaf_log="${_vmaf_log// }"
# Get VMAF score with harmonic mean to emphasize small outliers
# See: https://netflixtechblog.com/vmaf-the-journey-continues-44b51ee9ed12
chrt -b 0 nice ffmpeg -hide_banner -y -i "$_output_file" -i "$INPUT_FILE_BASENAME" \
-filter_complex "libvmaf=pool=harmonic_mean:log_path=${_vmaf_log}:log_fmt=json" \
-f null - 2>/dev/null
_vmaf_score=$(jq '.["pooled_metrics"]["vmaf"]["harmonic_mean"]' "$_vmaf_log")
# bash can't do floating point so we use bc
# See: https://stackoverflow.com/questions/8654051/how-to-compare-two-floating-point-numbers-in-bash
_vmaf_score_round=$(printf %.$2f $(echo "scale=0;(((10^0)*$_vmaf_score)+0.5)/(10^0)" | bc))
rm "$_vmaf_log"
# Check if rounded VMAF score is >= target VMAF
if [[ $_vmaf_score_round -ge $_target_vmaf ]]; then
printf "$INPUT_FILE_BASENAME: acceptable VMAF (%.3f) at AV1 CRF ${_crf}.\n" $_vmaf_score
# Set the title with information about the encoding in the MKV title
mkvpropedit --edit info --set "title=${INPUT_FILE_BASENAME/.*/}-libaom_${_libaom_version}-crf${_crf}-cpu${_cpu_used}-${_tiles}-tiles-vmaf_${_vmaf_score}" "$_output_file" >/dev/null
_acceptable_output_found="yes"
# Break from the for loop because we have an acceptable output
break
# Check if the VMAF score is anywhere near our target, otherwise just keep
# current output.
elif (($_target_vmaf - $_vmaf_score_round >= $_target_vmaf_threshold)); then
printf "$INPUT_FILE_BASENAME: unacceptable VMAF (%.3f) at AV1 CRF ${_crf}, unlikely to reach target soon.\n" $_vmaf_score
_acceptable_output_found="yes"
# Break from the for loop and keep the current output, even though it's
# unacceptable.
break
else
printf "$INPUT_FILE_BASENAME: unacceptable VMAF (%.3f) at AV1 CRF ${_crf}, continuing.\n" $_vmaf_score
# Clean up the unacceptable output
rm "$_output_file"
fi
done
# If we finished going over all the CRFs and still didn't get an acceptable VMAF
# score then the video is probably just really low quality so let's just convert
# using our max CRF and be done with it.
if [[ $_acceptable_output_found == "no" ]]; then
echo "${INPUT_FILE_BASENAME}: no acceptable output found, settling on AV1 CRF ${_crf_max}."
chrt -b 0 nice ffmpeg -hide_banner -y -i "$INPUT_FILE_BASENAME" -c:v libaom-av1 -b:v 0 -crf $_crf_max \
-aq-mode $_aq_mode -c:a libopus -b:a 16k \
-sc_threshold 0 -cpu-used $_cpu_used \
-tiles $_tiles -row-mt 1 \
-auto-alt-ref 1 -lag-in-frames 25 \
-g 300 -threads $_threads \
-f webm "$_output_file" 2>/dev/null
# Set the title with information about the encoding in the MKV title
mkvpropedit --edit info --set "title=${INPUT_FILE_BASENAME/.*/}-libaom_${_libaom_version}-crf${_max_crf}-cpu${_cpu_used}-${_tiles}-tiles" "$_output_file" >/dev/null
fi
# Change back to our starting directory
popd >/dev/null
exit 0

View File

@ -0,0 +1,133 @@
#!/usr/bin/env bash
#
# pre-process-media.sh v2024-04-28
#
# Prepare a directory of images and videos for long-term archival by normalizing
# their names, optimizing JPEGs with jpeg-archive, and stripping embedded MP4s
# from Android Motion Photos.
#
# SPDX-License-Identifier: GPL-3.0-only
# Changes:
#
# v2024-04-28: support Pixel portrait images
# v2022-08-01: fix minor syntax issue
# v2022-01-15: support Pixel panorama images
# v2021-12-26: add 'ftypiso6' for Nokia Android 9 MVIMG files, anchor regexes to
# beginning of line to prevent renaming files prematurely.
# Exit on first error
set -o errexit
if [[ -z "$1" ]]; then
echo "No target directory specified."
exit 1
fi
echo "Preprocessing images and videos in $1"
# Change to the input file's directory
pushd "$1" >/dev/null
echo "Changing permissions to 640..."
find . -type f -exec chmod 640 {} \;
# Rename IMG_20210217_204834.jpg to 2021-02-17_204834.jpg
echo "Renaming images to ISO 8601 and removing IMG_..."
perl-rename 's/^IMG_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.jpg/$1-$2-$3_$4.jpg/' *.jpg
perl-rename 's/^IMG_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.JPG/$1-$2-$3_$4.jpg/' *.JPG
perl-rename 's/^IMG_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.jpeg/$1-$2-$3_$4.jpg/' *.jpeg
perl-rename 's/^IMG_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.JPEG/$1-$2-$3_$4.jpg/' *.JPEG
# Rename 20220501_174346.jpg (Samsung A52)
perl-rename 's/^([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.jpg/$1-$2-$3_$4.jpg/' *.jpg
# Rename IMG_2180.HEIC to 2180.HEIC (iPhone)
perl-rename 's/^IMG_([0-9]{4}).HEIC/$1.heic/' *.HEIC
# Rename PXL_20210717_043834784.jpg to 2021-07-17_043834784.jpg (Pixel)
perl-rename 's/^PXL_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.jpg/$1-$2-$3_$4.jpg/' *.jpg
# Remove embedded MP4s from Pixel motion images. Depending on the Android vers-
# ion the MP4 header could be ftypmp42, ftypmp4, ftypisom, etc. We have to check
# each one in succession, but note that grep will return a non-zero exit code
# if it doesn't find the pattern, so we need to temporarily disable errexit. To
# make matters worse, it seems some images are called MP and appear to contain
# multiple images in the Android Photos app, but don't contain an MP4!
#
# See: https://stackoverflow.com/questions/53104989/how-to-extract-the-photo-video-component-of-a-mvimg
# See: https://medium.com/android-news/working-with-motion-photos-da0aa49b50c
# See: https://linuxreviews.org/Google_Pixel_%22Motion_Photo%22
set +o errexit
for file in PXL_*.MP.jpg MVIMG_*.jpg; do
# Don't crash when there are no files matching the glob
[ -f "$file" ] || continue
# Check MP4 header, newer versions first
unset ofs
for header in 'ftypisom' 'ftypmp4' 'ftypmp42' 'ftypiso6'; do
ofs=$(grep -F --byte-offset --only-matching --text "$header" "$file")
if [[ $ofs ]]; then
ofs=${ofs%:*}
truncate -s $((ofs-4)) "$file"
# Go to next image
break
fi
done
done
# Re-set exit on first error
set -o errexit
# Rename PXL_20210717_043834784.MP.jpg to 2021-07-17_043834784.jpg (Pixel Motion Images)
perl-rename 's/^PXL_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.MP\.jpg/$1-$2-$3_$4.jpg/' *.jpg
# Rename MVIMG_20190618_124507.jpg to 2019-06-18_124507.jpg (Android Motion Images)
perl-rename 's/^MVIMG_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.jpg/$1-$2-$3_$4.jpg/' *.jpg
# Rename PXL_20210910_193159741.NIGHT.jpg to 2021-09-10_193159741.jpg (Pixel Night mode)
perl-rename 's/^PXL_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.NIGHT\.jpg/$1-$2-$3_$4.jpg/' *.jpg
# Rename PXL_20211118_162823829.PORTRAIT.jpg to 2021-11-18_162823829.jpg (Pixel Portrait mode)
perl-rename 's/^PXL_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.PORTRAIT\.jpg/$1-$2-$3_$4.jpg/' *.jpg
# Rename PXL_20230413_231026946.PORTRAIT.ORIGINAL.jpg to 2023-04-13_231026946.jpg (Pixel portrait original?)
perl-rename 's/^PXL_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.PORTRAIT\.ORIGINAL\.jpg/$1-$2-$3_$4.jpg/' *.jpg
# Rename PXL_20210925_150154460.PANO.jpg to 2021-09-25_150154460.jpg (Pixel Panorama mode)
perl-rename 's/^PXL_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.PANO\.jpg/$1-$2-$3_$4.jpg/' *.jpg
for file in *.heic; do
[ -f "$file" ] || continue
# We are going to rename the HEIC files according to their embedded dates,
# but exiftool syntax is hard so I will just check if these files were al-
# ready renamed and skip them. These files come from iPhones.
if [[ ! $file =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{4}\.HEIC$ ]]; then
# Rename file based on DateTimeOriginal EXIF tag and the original file
# name (I removed the "IMG_" part with perl-rename first).
exiftool '-filename<${DateTimeOriginal}_${FileName}' -d %Y-%m-%d "$file"
fi
done
# Rename VID_20210205_112539.mp4 to 2021-02-05_112539.mp4
echo "Renaming videos to ISO 8601 and removing VID_..."
perl-rename 's/VID_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.mp4/$1-$2-$3_$4.mp4/' *.mp4
perl-rename 's/VID_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.MP4/$1-$2-$3_$4.mp4/' *.MP4
# Rename 20220502_124146.mp4 (Samsung A52)
perl-rename 's/^([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.mp4/$1-$2-$3_$4.mp4/' *.mp4
# Rename PXL_20210714_145336054.mp4 to 2021-07-14_145336054.mp4
perl-rename 's/PXL_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.mp4/$1-$2-$3_$4\.mp4/' *.mp4
# Rename PXL_20240101_142720131.TS.MP4 to 2024-01-01_142720131.mp4 (Pixel 7a TopShot feature)
perl-rename 's/PXL_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]+)\.TS\.mp4/$1-$2-$3_$4\.mp4/' *.mp4
# Optimize JPEGs with jpeg-archive
find . -name '*.jpg' | chrt -b 0 parallel --no-notice "jpeg-recompress -q high {} {}"
# Change back to our starting directory
popd >/dev/null
exit 0

View File

@ -0,0 +1,4 @@
#!/usr/bin/bash
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"

View File

@ -0,0 +1,4 @@
#!/usr/bin/bash
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"

View File

@ -1,3 +0,0 @@
MOZ_ENABLE_WAYLAND=1
QT_QPA_PLATFORM=wayland-egl
XDG_CURRENT_DESKTOP=sway

1
dotfiles/ssh/config Normal file
View File

@ -0,0 +1 @@
AddKeysToAgent yes

View File

@ -1,3 +0,0 @@
let g:netrw_dirhistmax =10
let g:netrw_dirhistcnt =1
let g:netrw_dirhist_1='/home/aorth/.config/foot'

View File

@ -11,10 +11,17 @@ filetype on " enable file type detection
filetype plugin on " enable file type plugins
filetype indent on " enable file type indents
set background=dark
" restrict vim to 16 ANSI colors in the palette instead of approximating 256
set t_Co=16
" You might have to force true color when using regular vim inside tmux as the
" colorscheme can appear to be grayscale with "termguicolors" option enabled.
" See: https://gist.github.com/andersevenrud/015e61af2fd264371032763d4ed965b6
if !has('gui_running') && &term =~ '^\%(screen\|tmux\)'
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" " set foreground color
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" " set background color
endif
colorscheme selenized
set termguicolors
set background=dark
" for per-directory vimrc files
" see: https://jezenthomas.com/how-i-write-invoices-in-vim/

32
dotfiles/wezterm.lua Normal file
View File

@ -0,0 +1,32 @@
-- Pull in the wezterm API
local wezterm = require 'wezterm'
-- This table will hold the configuration.
local config = {}
-- In newer versions of wezterm, use the config_builder which will
-- help provide clearer error messages
if wezterm.config_builder then
config = wezterm.config_builder()
end
config.font = wezterm.font 'Cascadia Mono'
config.font_size = 13.5
-- This is where you actually apply your config choices
config.color_scheme = 'Selenized Dark (Gogh)'
-- Disable bold colors for Solarized / Selenized
config.bold_brightens_ansi_colors = false
config.hide_tab_bar_if_only_one_tab = true
-- Disable default padding
config.window_padding = {
left = 0,
right = 0,
top = 0,
bottom = 0,
}
-- and finally, return the configuration to wezterm
return config

View File

@ -27,23 +27,40 @@ compinit
if [[ "$OSTYPE" =~ ^linux.*$ ]]; then
PATH=~/.local/bin:$PATH
# System Node.js with local "global" package prefix, for DSpace build environment:
# $ npm config set prefix ~/.node_modules
# $ npm install -g bower grunt grunt-cli
PATH=$PATH:~/.node_modules/bin
if [[ -n $WAYLAND_DISPLAY ]]; then
{%@@ if profile == "knafeh" or profile == "balozi" @@%}
# Export these variables in our TTY so that Sway can read them when it
# starts. It's not pretty, but it's all we can do since support for
# ~/.pam_environment was removed from pambase in Arch Linux recently.
export MOZ_ENABLE_WAYLAND=1
# 2021-06-22: fix "Firefox is already running" message
# See: https://mastransky.wordpress.com/2020/03/16/wayland-x11-how-to-run-firefox-in-mixed-environment/
export MOZ_DBUS_REMOTE=1
export KITTY_ENABLE_WAYLAND=1
export QT_QPA_PLATFORM=wayland-egl
export CLUTTER_BACKEND=wayland
# 2020-02-10: https://github.com/swaywm/sway/wiki#issues-with-java-applications
export _JAVA_AWT_WM_NONREPARENTING=1
export SDL_VIDEODRIVER=wayland
# Signal to xdg-desktop-portal that we're on Sway
export XDG_CURRENT_DESKTOP=sway
# 2023-02-05: tell pip/poetry not to probe for keyrings. I'm not publishing
# packages to pypi.org and the popup during pip/poetry install is annoying.
# See: https://github.com/python-poetry/poetry/issues/1917
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
# For rsync breaking change in arg parsing since 2022
# See: https://github.com/bit-team/backintime/issues/1247
export RSYNC_OLD_ARGS=1
{%@@ endif @@%}
{%@@ if profile == "knafeh" or profile == "balozi" @@%}
export WLR_RENDERER=vulkan
{%@@ endif @@%}
fi
# Enable zsh completions for mise version manager
if [[ -f /usr/bin/mise ]]; then
eval "$(/usr/bin/mise activate zsh)"
fi
alias ls='ls -F --color=auto'
@ -53,7 +70,6 @@ alias less='less -R' # preserves colors in GNU coreutils' `less`
# see: https://github.com/jan-warchol/selenized/tree/master/other-apps/dircolors
export LS_COLORS="$LS_COLORS:ow=1;7;34:st=30;44:su=30;41"
# Environment
export PS1='[%n@%m: %~]$ '
export EDITOR=vim
@ -82,18 +98,29 @@ jpegoptimize() {
gm mogrify -filter Triangle -define filter:support=2 -unsharp 2x0.5+0.7+0 -dither -quality $QUALITY -define jpeg:fancy-upsampling=off -interlace Line -strip -output-directory $2 $1
}
# generate random password 15 characters long
# See: https://unix.stackexchange.com/questions/230673/how-to-generate-a-random-string
# Generate a random hex password 20 characters long. The input from /dev/urandom
# does not need to be any particular length due to SHA-2 256's design (for exam-
# ple, the "avalanche" effect and the input padding), so I just read 1 byte with
# dd. Some sites (see below) recommend using a minimum of 20 characters for hex
# passwords.
#
# See: https://www.ssh.com/academy/ssh/passphrase-generator
genpass() {
</dev/urandom tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' | head -c 15 ; echo
dd if=/dev/urandom bs=1 count=1 2>/dev/null | \
sha256sum -b | \
sed 's/ .*//' | \
head -c 20; echo
}
# set GPG TTY
# set GPG TTY for pinentry-curses
export GPG_TTY=$(tty)
# Refresh gpg-agent tty in case user switches into an X Session
gpg-connect-agent updatestartuptty /bye >/dev/null
# Export location to SSH agent socket, see ssh-agent.service
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"
# Speed up JVM start for short-lived Java programs
# See: https://zeroturnaround.com/rebellabs/your-maven-build-is-slow-speed-it-up/
export MAVEN_OPTS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1"