mirror of
https://codeberg.org/andyscott/dotfiles.git
synced 2024-11-09 14:00:47 -05:00
Compare commits
84 commits
04f26cd3ea
...
53eee27a42
Author | SHA1 | Date | |
---|---|---|---|
53eee27a42 | |||
b1b4de884b | |||
01d90c0f40 | |||
6d13726aba | |||
c2e542bab4 | |||
426f13f7ba | |||
2c0b6f0451 | |||
8bfa54e30d | |||
4c50bd571b | |||
d48e13dd41 | |||
f8903f9d00 | |||
c5e5883a9a | |||
df8129eca7 | |||
e3d5f1a714 | |||
6f3b0f6c1e | |||
d545bb85c9 | |||
b3b7209ffa | |||
5b5368193e | |||
b36f536371 | |||
a6423a17bb | |||
2cbac36a5f | |||
4b6ebbdb94 | |||
d0f1b46ae0 | |||
30f5ca39b9 | |||
f6f0df4654 | |||
9bc52c33f9 | |||
5690959c23 | |||
6e50b195a8 | |||
96e96fc427 | |||
30ca8a5ed9 | |||
99e6c22573 | |||
bb3ffba2ad | |||
7e233e3a38 | |||
264a5bc37f | |||
e2e94bd302 | |||
818e7cf678 | |||
2c7c1371c4 | |||
73f8d0639e | |||
3388d21169 | |||
7c112b003e | |||
6cf6386706 | |||
30c1fd4a0c | |||
5d0e938b92 | |||
0f286a6974 | |||
adc9957e78 | |||
2ff94913d1 | |||
f6e086982d | |||
2d839270ab | |||
9ff8e472cc | |||
91ebf1e5aa | |||
cc72d61a8e | |||
9efd5a3f8a | |||
1e345bd8ea | |||
fb8a86f052 | |||
f55d6970db | |||
68279c5754 | |||
fb44c861ea | |||
27fe8763da | |||
7ea4db0b6b | |||
78f58a11e5 | |||
d8c22a20e6 | |||
512947e3d8 | |||
ad3dc5d3a9 | |||
813e050632 | |||
a93c1b6945 | |||
cf1cfc18ac | |||
7b5a3eca75 | |||
c6cc1db4d9 | |||
488118888d | |||
d4949b784e | |||
b3da97bc30 | |||
5556b760e9 | |||
d1f95edd20 | |||
aee7ea1b5d | |||
fd40767241 | |||
2e8c9d8e97 | |||
93869a33de | |||
f30a6d1cad | |||
bbc71a84c4 | |||
1be005768e | |||
3b0dde2f4c | |||
528787c678 | |||
4708e64813 | |||
c52c91ea7e |
77 changed files with 2700 additions and 7151 deletions
82
Packages.txt
82
Packages.txt
|
@ -1,82 +0,0 @@
|
|||
# List of basic packages I typically install. You may not need all of them.
|
||||
# Adjust as necessary.
|
||||
|
||||
# Arch repos
|
||||
bind
|
||||
bspwm
|
||||
dunst
|
||||
emacs
|
||||
galculator
|
||||
git
|
||||
gsimplecal
|
||||
htop
|
||||
dex
|
||||
feh
|
||||
firefox
|
||||
emacs
|
||||
gnome-keyring
|
||||
logrotate
|
||||
ncdu
|
||||
neofetch
|
||||
neovim
|
||||
nextcloud-client
|
||||
noto-fonts-cjk
|
||||
noto-fonts-emoji
|
||||
kitty
|
||||
ranger
|
||||
redshift
|
||||
rofi
|
||||
rxvt-unicode
|
||||
papirus-icon-theme
|
||||
pavucontrol
|
||||
pipewire
|
||||
wireplumber
|
||||
pipewire-pulse
|
||||
snapper # btrfs only
|
||||
sxhkd
|
||||
thunderbird
|
||||
ttf-dejavu
|
||||
ttf-fira-code
|
||||
ttf-font-awesome
|
||||
ttf-hack
|
||||
ttf-ibm-plex
|
||||
ttf-liberation
|
||||
xsecurelock
|
||||
xss-lock
|
||||
polkit-gnome
|
||||
xorg-xserver
|
||||
xorg-xinit
|
||||
xorg-xsetroot
|
||||
xorg-xrandr
|
||||
xorg-xset
|
||||
xclip
|
||||
maim
|
||||
xdotool
|
||||
dbus-pyton
|
||||
|
||||
# AUR
|
||||
arkenfox-user.js
|
||||
birdtray
|
||||
btrfs-du # more accurate du for btrfs
|
||||
pa-notify
|
||||
polybar
|
||||
pulseaudio-control
|
||||
needrestart
|
||||
neovim-plug-git
|
||||
gruvbox-dark-gtk
|
||||
sbkeys
|
||||
sbupdate-git
|
||||
spotify
|
||||
spotify-adblock-git
|
||||
polybar-spotify
|
||||
rofi-power-menu
|
||||
st
|
||||
vimix-gtk-themes-git
|
||||
xidlehook
|
||||
|
||||
# Laptop/Thinkpads (for xbacklight etc., your needs may vary)
|
||||
tlp
|
||||
acpi_call
|
||||
acpi_call-lts # only if LTS kernel installed, see 'acpi_call-dkms' for other variants
|
||||
acpilight # or 'light' is sometimes needed for older thinkpads
|
||||
rtw89-dkms-git # wifi for thinkpad t14 gen2 amd, not needed for kernel 5.16 or later
|
|
@ -1,5 +0,0 @@
|
|||
#
|
||||
# ~/.bash_logout
|
||||
#
|
||||
|
||||
reset
|
|
@ -2,80 +2,77 @@
|
|||
# ~/.bash_profile
|
||||
#
|
||||
|
||||
# Default text editors
|
||||
export EDITOR=nvim
|
||||
export VISUAL=emacs
|
||||
|
||||
# Ensure XDG env vars are set correctly
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_STATE_HOME="$HOME/.local/state"
|
||||
# Add ~/.local/bin to $PATH
|
||||
export PATH="${HOME}/.local/bin:${PATH}"
|
||||
|
||||
# add .local/bin to $PATH
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
# XDG Base Directories
|
||||
export XDG_CACHE_HOME="${HOME}/.cache"
|
||||
export XDG_CONFIG_HOME="${HOME}/.config"
|
||||
export XDG_DATA_HOME="${HOME}/.local/share"
|
||||
export XDG_STATE_HOME="${HOME}/.local/state"
|
||||
|
||||
# make Java behave when not using a DE
|
||||
# Force Java to behave when not using a DE
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
|
||||
# Sometimes needed for gpg passphrase prompt
|
||||
# GPG passphrase prompt
|
||||
export GPG_TTY=$(tty)
|
||||
|
||||
# xsecurelock settings
|
||||
export XSECURELOCK_AUTH=auth_x11
|
||||
export XSECURELOCK_AUTHPROTO=authproto_pam
|
||||
export XSECURELOCK_BURNIN_MITIGATION=300
|
||||
export XSECURELOCK_PASSWORD_PROMPT=time
|
||||
# Mozilla + Wayland
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
# scale GTK applicatons on hidpi screens
|
||||
export GDK_SCALE=2 GDK_DPI_SCALE=0.50 thunar
|
||||
export GDK_SCALE=2 GDK_DPI_SCALE="0.50 Simple-scan"
|
||||
export GDK_SCALE=2 GDK_DPI_SCALE=0.50 lutris
|
||||
export GDK_SCALE=2 GDK_DPI_SCALE=0.50 spotify
|
||||
export GDK_SCALE=2 GDK_DPI_SCALE=0.50 pinta
|
||||
export GDK_SCALE=2 GDK_DPI_SCALE=0.50 Gajim
|
||||
export GDK_SCALE=2 GDK_DPI_SCALE=0.50 Ristretto
|
||||
export GDK_SCALE=2 GDK_DPI_SCALE=0.50 ghex
|
||||
{{ if eq .chezmoi.hostname "helix" -}}
|
||||
# Scale GTK applicatons
|
||||
export GDK_SCALE=2 GDK_DPI_SCALE=0.50
|
||||
{{- end }}
|
||||
|
||||
## No littering in $HOME!
|
||||
|
||||
# bash
|
||||
export HISTFILE="$XDG_STATE_HOME"/bash_history
|
||||
export HISTFILE="${XDG_STATE_HOME}/bash_history"
|
||||
|
||||
# cargo
|
||||
export CARGO_HOME="$XDG_DATA_HOME"/cargo
|
||||
export CARGO_HOME="${XDG_DATA_HOME}/cargo"
|
||||
|
||||
# dotnet
|
||||
export DOTNET_BUNDLE_EXTRACT_BASE_DIR="${XDG_CACHE_HOME}/dotnet_bundle_extract"
|
||||
export DOTNET_CLI_HOME="${XDG_DATA_HOME}/dotnet/cli"
|
||||
export DOTNET_CLI_TELEMETRY_OPTOUT=true
|
||||
export DOTNET_TOOLS_PATH="${XDG_DATA_HOME}/dotnet/tools"
|
||||
export PATH="${DOTNET_TOOLS_PATH}:${PATH}"
|
||||
|
||||
# go
|
||||
export GOPATH="$XDG_DATA_HOME"/go
|
||||
export GOMODCACHE="$XDG_CACHE_HOME"/go/mod
|
||||
export GOPATH="${XDG_DATA_HOME}/go"
|
||||
export GOMODCACHE="${XDG_CACHE_HOME}/go/mod"
|
||||
|
||||
# gpg
|
||||
export GNUPGHOME="$XDG_DATA_HOME"/gnupg
|
||||
export GNUPGHOME="${XDG_DATA_HOME}/gnupg"
|
||||
|
||||
# gtk2
|
||||
export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
|
||||
export GTK2_RC_FILES="${XDG_CONFIG_HOME}/gtk-2.0/gtkrc"
|
||||
|
||||
# node
|
||||
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
|
||||
export NPM_CONFIG_USERCONFIG="${XDG_CONFIG_HOME}/npm/npmrc"
|
||||
|
||||
# python
|
||||
export PYTHONSTARTUP="$XDG_CONFIG_HOME"/python/pythonrc
|
||||
export PYTHONPYCACHEPREFIX="$XDG_CACHE_HOME"/python
|
||||
export PYTHONUSERBASE=$XDG_DATA_HOME/python
|
||||
export PYTHONSTARTUP="${XDG_CONFIG_HOME}/python/pythonrc"
|
||||
export PYTHONPYCACHEPREFIX="${XDG_CACHE_HOME}/python"
|
||||
export PYTHONUSERBASE="${XDG_DATA_HOME}/python"
|
||||
|
||||
# wine
|
||||
export WINEPREFIX="$XDG_DATA_HOME"/wine
|
||||
export WINEPREFIX="${XDG_DATA_HOME}/wine"
|
||||
|
||||
# Xorg
|
||||
export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc
|
||||
export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
|
||||
export XINITRC="${XDG_CONFIG_HOME}/X11/xinitrc"
|
||||
export XAUTHORITY="${XDG_RUNTIME_DIR}/Xauthority"
|
||||
|
||||
# Source other dotfiles
|
||||
[[ -f ~/.profile ]] && . ~/.profile
|
||||
|
||||
[[ -f ~/.bashrc ]] && . ~/.bashrc
|
||||
|
||||
# startx
|
||||
[[ -z "${DISPLAY}" && "${XDG_VTNR}" -eq 1 ]] && exec startx
|
||||
|
||||
# start river
|
||||
[[ -z $DISPLAY && $(tty) = "/dev/tty1" ]] && exec dbus-run-session river
|
||||
|
|
11
dot_bashrc
11
dot_bashrc
|
@ -5,15 +5,18 @@
|
|||
# Return if non-interactive
|
||||
[[ $- != *i* ]] && return
|
||||
|
||||
# Prompt
|
||||
PS1='[\[\e[38;5;107m\]\u\[\e[0m\]@\h \[\e[38;5;74m\]\w\[\e[0m\]]\$ '
|
||||
|
||||
# Aliases
|
||||
alias diff='diff --color=auto'
|
||||
alias grep='grep --color=auto'
|
||||
alias ip='ip -color=auto'
|
||||
alias ls='ls --color=auto'
|
||||
|
||||
alias vim=nvim
|
||||
alias r="kitty --class=Ranger ranger & disown"
|
||||
alias kssh="/usr/bin/kitty +kitten ssh"
|
||||
alias wget=wget --hsts-file="$XDG_STATE_HOME/wget-hsts"
|
||||
|
||||
alias kssh='/usr/bin/kitty +kitten ssh'
|
||||
alias wget='wget --hsts-file="${XDG_STATE_HOME}/wget-hsts"'
|
||||
alias zigup='zigup --install-dir "${XDG_DATA_HOME}/zigup" --path-link "${HOME}/.local/bin/zig"'
|
||||
alias pacman-rm-unused='pacman -Qtdq | sudo pacman -Rns -'
|
||||
alias checkupdates='checkupdates && paru -Qua'
|
||||
|
|
|
@ -1,88 +0,0 @@
|
|||
#!/bin/bash
|
||||
{{ if ne .chezmoi.hostname "hydrus" }}
|
||||
bspc monitor eDP-1 -d 1 2 3 4 5 6 7 8 9 10
|
||||
{{ else }}
|
||||
bspc monitor DisplayPort-0 -d 1 2 3 4 5
|
||||
bspc monitor DisplayPort-1 -d 6 7 8 9 10
|
||||
{{ end }}
|
||||
bspc config border_width 2
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
bspc config window_gap 10
|
||||
bspc config top_padding 72
|
||||
bspc config bottom_padding 0
|
||||
{{ else if eq .chezmoi.hostname "hydrus"}}
|
||||
bspc config window_gap 4
|
||||
bspc config top_padding 0
|
||||
bspc config bottom_padding 24
|
||||
{{ else }}
|
||||
bspc config window_gap 4
|
||||
bspc config top_padding 38
|
||||
bspc config bottom_padding 0
|
||||
{{- end}}
|
||||
|
||||
bspc config split_ratio 0.50
|
||||
bspc config borderless_monocle true
|
||||
bspc config gapless_monocle true
|
||||
|
||||
bspc rule -a Galculator state=floating
|
||||
bspc rule -a vlc state=floating
|
||||
bspc rule -a Blueman-manager state=floating
|
||||
bspc rule -a Blueberry.py state=floating
|
||||
bspc rule -a Bitwarden state=floating
|
||||
bspc rule -a Leafpad state=floating
|
||||
bspc rule -a KeePassXC state=floating
|
||||
bspc rule -a Mousepad state=floating
|
||||
bspc rule -a firefox desktop='^1' follow=on
|
||||
bspc rule -a firefoxdeveloperedition desktop='^1' follow=on
|
||||
bspc rule -a Chromium desktop='^2' follow=on
|
||||
bspc rule -a Vivaldi-stable desktop='^2' follow=on
|
||||
bspc rule -a Caja desktop='^3' follow=on
|
||||
bspc rule -a Thunar desktop='^3' follow=on
|
||||
bspc rule -a Evince desktop='^4' follow=on
|
||||
bspc rule -a Soffice desktop='^4' follow=on
|
||||
bspc rule -a Simple-scan='^4' follow=on
|
||||
bspc rule -a Xsane desktop='^4' follow=on state=floating
|
||||
bspc rule -a Steam desktop='^5' follow=on state=floating
|
||||
bspc rule -a Lutris desktop='^5' follow=on state=floating
|
||||
bspc rule -a eadesktop.exe desktop='^5' follow=on state=floating
|
||||
bspc rule -a origin.exe desktop='^5' state=floating
|
||||
bspc rule -a Alacritty desktop='^6' follow=on
|
||||
bspc rule -a kitty desktop='^6' follow=on
|
||||
bspc rule -a URxvt desktop='^6' follow=on
|
||||
bspc rule -a Emacs desktop='^7' follow=on state=fullscreen
|
||||
bspc rule -a Dino desktop='^8'
|
||||
bspc rule -a Gajim desktop='^8'
|
||||
bspc rule -a discord desktop='^8'
|
||||
bspc rule -a Element desktop='^9'
|
||||
bspc rule -a Mattermost desktop='^9'
|
||||
bspc rule -a Slack desktop='^9'
|
||||
bspc rule -a teams-for-linux desktop='^9'
|
||||
bspc rule -a Evolution desktop='^10'
|
||||
bspc rule -a thunderbird desktop='^10'
|
||||
bspc rule -a tutanota-desktop desktop='^10'
|
||||
|
||||
### Focus on 1st workspace by default
|
||||
bspc desktop -f 1
|
||||
|
||||
### Autostart
|
||||
grep -x sxhkd > /dev/null || sxhkd &
|
||||
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
|
||||
xss-lock -n /usr/lib/xsecurelock/dimmer -l -- xsecurelock &
|
||||
dunst &
|
||||
xsettingsd &
|
||||
sh $HOME/.local/bin/fehbg &
|
||||
dex -a &
|
||||
redshift -r &
|
||||
{{- if (or (eq .chezmoi.hostname "helix") (eq .chezmoi.hostname "hydrus")) }}
|
||||
$HOME/.local/bin/pipewire-launcher &
|
||||
{{- end }}
|
||||
{{- if (or (eq .chezmoi.hostname "helix") (eq .chezmoi.hostname "triangulum")) }}
|
||||
$HOME/.local/bin/xidlehook-laptop &
|
||||
$HOME/.local/bin/single-polybar-launcher &
|
||||
cbatticon -u 20 -i standard -c "loginctl suspend" &
|
||||
sleep 5 && pa-notify -t 3 &
|
||||
{{- end }}
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
$HOME/.local/bin/xidlehook-desktop &
|
||||
$HOME/.local/bin/dual-polybar-launcher &
|
||||
{{- end }}
|
|
@ -1,151 +1,48 @@
|
|||
# See dunst(5) for all configuration options
|
||||
# dunstrc - dunst(5)
|
||||
|
||||
[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 = keyboard
|
||||
|
||||
### Geometry ###
|
||||
|
||||
# dynamic width from 0 to 300
|
||||
# width = (0, 300)
|
||||
# constant width of 300
|
||||
width = 300
|
||||
|
||||
# The maximum height of a single notification, excluding the frame.
|
||||
height = 300
|
||||
|
||||
# Position the notification in the top right corner
|
||||
origin = top-right
|
||||
|
||||
# Offset from the origin
|
||||
offset = 10x50
|
||||
|
||||
# Scale factor. It is auto-detected if value is 0.
|
||||
scale = 0
|
||||
|
||||
# Maximum number of notification (0 means no limit)
|
||||
notification_limit = 0
|
||||
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
|
||||
|
||||
### Appearance ###
|
||||
|
||||
# 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 = 10
|
||||
|
||||
# Draw a line of "separator_height" pixel height between two
|
||||
# notifications.
|
||||
# Set to 0 to disable.
|
||||
# If gap_size is greater than 0, this setting will be ignored.
|
||||
separator_height = 2
|
||||
|
||||
# Padding between text and separator.
|
||||
padding = 8
|
||||
|
||||
# Horizontal padding.
|
||||
horizontal_padding = 8
|
||||
|
||||
# Padding between text and icon.
|
||||
text_icon_padding = 0
|
||||
|
||||
# Defines width in pixels of frame around the notification window.
|
||||
# Set to 0 to disable.
|
||||
frame_width = 3
|
||||
|
||||
# Defines color of the frame around the notification window.
|
||||
frame_color = "#222222"
|
||||
|
||||
# Size of gap to display between notifications - requires a compositor.
|
||||
# If value is greater than 0, separator_height will be ignored and a border
|
||||
# of size frame_width will be drawn around each notification instead.
|
||||
# Click events on gaps do not currently propagate to applications below.
|
||||
gap_size = 0
|
||||
|
||||
# Define a color for the separator.
|
||||
# possible values are:
|
||||
# * auto: dunst tries to find a color fitting to the background;
|
||||
# * foreground: use the same color as the foreground;
|
||||
# * frame: use the same color as the frame;
|
||||
# * anything else will be interpreted as a X color.
|
||||
separator_color = frame
|
||||
|
||||
# Sort 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 = 120
|
||||
idle_threshold = 120
|
||||
corner_radius = 4
|
||||
|
||||
### Text ###
|
||||
|
||||
font = Hack 11
|
||||
|
||||
# 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:
|
||||
|
@ -160,125 +57,45 @@
|
|||
# Markup is allowed
|
||||
format = "<b>%s</b>\n%b"
|
||||
|
||||
# Alignment of message text.
|
||||
# Possible values are "left", "center" and "right".
|
||||
alignment = left
|
||||
|
||||
# Vertical alignment of message text and icon.
|
||||
# Possible values are "top", "center" and "bottom".
|
||||
vertical_alignment = center
|
||||
|
||||
# Show age of message if message is older than show_age_threshold
|
||||
# seconds.
|
||||
# Set to -1 to disable.
|
||||
show_age_threshold = 60
|
||||
|
||||
# Specify where to make an ellipsis in long lines.
|
||||
# Possible values are "start", "middle" and "end".
|
||||
ellipsize = middle
|
||||
|
||||
# Ignore newlines '\n' in notifications.
|
||||
ignore_newline = no
|
||||
|
||||
# Stack together notifications with the same content
|
||||
stack_duplicates = true
|
||||
|
||||
# Hide the count of stacked notifications with the same content
|
||||
hide_duplicate_count = false
|
||||
|
||||
# Display indicators for URLs (U) and actions (A).
|
||||
show_indicators = yes
|
||||
|
||||
### Icons ###
|
||||
|
||||
# Recursive icon lookup. You can set a single theme, instead of having to
|
||||
# define all lookup paths.
|
||||
enable_recursive_icon_lookup = true
|
||||
|
||||
# Set icon theme (only used for recursive icon lookup)
|
||||
icon_theme = "Papirus-Dark, Adwaita"
|
||||
# You can also set multiple icon themes, with the leftmost one being used first.
|
||||
# icon_theme = "Adwaita, breeze"
|
||||
|
||||
# Align icons left/right/top/off
|
||||
icon_theme = "Qogir-dark, Papirus-Dark, Adwaita"
|
||||
icon_position = left
|
||||
|
||||
# Scale small icons up to this size, set to 0 to disable. Helpful
|
||||
# for e.g. small files or high-dpi screens. In case of conflict,
|
||||
# max_icon_size takes precedence over this.
|
||||
min_icon_size = 32
|
||||
|
||||
# Scale larger icons down to this size, set to 0 to disable
|
||||
max_icon_size = 128
|
||||
|
||||
# Paths to default icons (only neccesary when not using recursive icon lookup)
|
||||
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
|
||||
|
||||
### History ###
|
||||
|
||||
# Should a notification popped up from history be sticky or timeout
|
||||
# as if it would normally do.
|
||||
sticky_history = yes
|
||||
|
||||
# Maximum amount of notifications kept in history
|
||||
history_length = 20
|
||||
|
||||
### Misc/Advanced ###
|
||||
|
||||
# dmenu path.
|
||||
dmenu = /usr/bin/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 = 0
|
||||
|
||||
# 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.
|
||||
|
@ -294,31 +111,19 @@
|
|||
mouse_middle_click = close_all
|
||||
mouse_right_click = close_current
|
||||
|
||||
# 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 = "#222222"
|
||||
foreground = "#555555"
|
||||
timeout = 10
|
||||
# Icon for notifications with low urgency, uncomment to enable
|
||||
#default_icon = /path/to/icon
|
||||
|
||||
[urgency_normal]
|
||||
background = "#222222"
|
||||
foreground = "#dfdfdf"
|
||||
timeout = 10
|
||||
# Icon for notifications with normal urgency, uncomment to enable
|
||||
#default_icon = /path/to/icon
|
||||
|
||||
[urgency_critical]
|
||||
|
@ -326,129 +131,4 @@
|
|||
foreground = "#8a4644"
|
||||
frame_color = "#ff0000"
|
||||
timeout = 0
|
||||
# Icon for notifications with critical urgency, uncomment to enable
|
||||
#default_icon = /path/to/icon
|
||||
|
||||
# Every section that isn't one of the above is interpreted as a rules to
|
||||
# override settings for certain messages.
|
||||
#
|
||||
# Messages can be matched by
|
||||
# appname (discouraged, see desktop_entry)
|
||||
# body
|
||||
# category
|
||||
# desktop_entry
|
||||
# icon
|
||||
# match_transient
|
||||
# msg_urgency
|
||||
# stack_tag
|
||||
# summary
|
||||
#
|
||||
# and you can override the
|
||||
# background
|
||||
# foreground
|
||||
# format
|
||||
# frame_color
|
||||
# fullscreen
|
||||
# new_icon
|
||||
# set_stack_tag
|
||||
# set_transient
|
||||
# set_category
|
||||
# timeout
|
||||
# urgency
|
||||
# icon_position
|
||||
# skip_display
|
||||
# history_ignore
|
||||
# action_name
|
||||
# word_wrap
|
||||
# ellipsize
|
||||
# alignment
|
||||
# hide_text
|
||||
#
|
||||
# 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
|
||||
|
|
99
dot_config/emacs/early-init.el.tmpl
Normal file
99
dot_config/emacs/early-init.el.tmpl
Normal file
|
@ -0,0 +1,99 @@
|
|||
;;; early-init.el --- GNU Emacs Early Initialization File -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (c) 2023 Andrew Scott
|
||||
|
||||
;; Author: Andrew Scott <andy at andyscott dot me>
|
||||
;; Keywords: convenience, tools
|
||||
;; URL: https://codeberg.org/andyscott/dotfiles
|
||||
|
||||
;; This file is not part of GNU Emacs.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; My customizations for early Emacs initialization
|
||||
|
||||
;;; License:
|
||||
|
||||
;; MIT No Attribution
|
||||
|
||||
;; Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||
;; software and associated documentation files (the "Software"), to deal in the Software
|
||||
;; without restriction, including without limitation the rights to use, copy, modify,
|
||||
;; merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
|
||||
;; permit persons to whom the Software is furnished to do so.
|
||||
|
||||
;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
;; INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
;; PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
;; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
;;; Code:
|
||||
|
||||
;; Relocate emacs-user-directory to XDG_DATA_HOME
|
||||
(setq user-emacs-directory
|
||||
(expand-file-name "emacs/" (or (getenv "XDG_DATA_HOME") "~/.local/share/")))
|
||||
|
||||
;; Set cache directory
|
||||
(setq xdg_cache_home
|
||||
(expand-file-name "emacs/" (or (getenv "XDG_CACHE_HOME") "~/.cache/")))
|
||||
(unless (file-directory-p xdg_cache_home)
|
||||
(make-directory xdg_cache_home))
|
||||
|
||||
;; Move eln-cache to XDG_CACHE_HOME
|
||||
(when (fboundp 'startup-redirect-eln-cache)
|
||||
(if (< emacs-major-version 29)
|
||||
(push (expand-file-name "eln-cache/" xdg_cache_home) native-comp-eln-load-path)
|
||||
(startup-redirect-eln-cache (expand-file-name "eln-cache/" xdg_cache_home))))
|
||||
|
||||
;; Disable package.el
|
||||
(setq package-enable-at-startup nil)
|
||||
|
||||
;; Ensure other default libs are loaded
|
||||
(setq inhibit-default-init nil)
|
||||
|
||||
;; Load newest byte code
|
||||
(setq load-prefer-newer t)
|
||||
|
||||
;; Enable async native compilation and suppress warnings
|
||||
(when (featurep 'native-compile)
|
||||
(setq native-comp-deferred-compilation t
|
||||
native-comp-async-report-warnings-errors nil))
|
||||
|
||||
;; Raise garbage collection threshold
|
||||
(setq gc-cons-threshold 500000000
|
||||
gc-cons-percentage 0.1)
|
||||
|
||||
;; Don't advertise instructions for frame exit
|
||||
(setq server-client-instructions nil)
|
||||
|
||||
;; Don't implicitly resize the frame
|
||||
(setq frame-inhibit-implied-resize t)
|
||||
|
||||
;; Disable startup screen
|
||||
(setq inhibit-startup-screen t)
|
||||
|
||||
;; Visible bell only
|
||||
(setq visible-bell t)
|
||||
|
||||
;; Fonts
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
(push '(font . "Hack-24") default-frame-alist)
|
||||
(set-face-font 'default "Hack-24")
|
||||
(set-face-font 'fixed-pitch "Hack-24")
|
||||
(set-face-font 'variable-pitch "DejaVu Sans-24")
|
||||
{{- else }}
|
||||
(push '(font . "Hack-12") default-frame-alist)
|
||||
(set-face-font 'default "Hack-12")
|
||||
(set-face-font 'fixed-pitch "Hack-12")
|
||||
(set-face-font 'variable-pitch "DejaVu Sans-12")
|
||||
{{- end }}
|
||||
|
||||
;; Some GUI options
|
||||
(push '(menu-bar-lines . 0) default-frame-alist)
|
||||
(push '(tool-bar-lines . 0) default-frame-alist)
|
||||
(push '(vertical-scroll-bars) default-frame-alist)
|
||||
|
||||
(provide 'early-init)
|
||||
;;; early-init.el ends here
|
File diff suppressed because it is too large
Load diff
38
dot_config/fuzzel/fuzzel.ini
Normal file
38
dot_config/fuzzel/fuzzel.ini
Normal file
|
@ -0,0 +1,38 @@
|
|||
# output=
|
||||
layer = top
|
||||
exit-on-keyboard-focus-loss = yes
|
||||
|
||||
font=Hack
|
||||
dpi-aware=auto
|
||||
icon-theme=Qogir-dark
|
||||
icons-enabled=yes
|
||||
letter-spacing=0
|
||||
prompt='> '
|
||||
|
||||
lines=15
|
||||
# line-height=
|
||||
width=40
|
||||
tabs=4
|
||||
horizontal-pad=40
|
||||
vertical-pad=8
|
||||
inner-pad=0
|
||||
image-size-ratio=0.5
|
||||
|
||||
fields=filename,name,generic,exec
|
||||
# password-character=*
|
||||
fuzzy=yes
|
||||
show-actions=yes
|
||||
terminal=kitty
|
||||
# launch-prefix=
|
||||
|
||||
[colors]
|
||||
background=323d43ee
|
||||
text=d8caacff
|
||||
match=83c092ff
|
||||
selection=72b783dd
|
||||
selection-text=4a555bff
|
||||
border=d5b26bff
|
||||
|
||||
[border]
|
||||
width=1
|
||||
radius=10
|
13
dot_config/kanshi/config
Normal file
13
dot_config/kanshi/config
Normal file
|
@ -0,0 +1,13 @@
|
|||
profile dual {
|
||||
output DP-1 enable
|
||||
output DP-2 enable position 1920,0
|
||||
}
|
||||
|
||||
profile dual-off {
|
||||
output DP-1 disable
|
||||
output DP-2 disable
|
||||
}
|
||||
|
||||
profile laptop {
|
||||
output eDP-1 enable mode 3840x2160@60Hz scale 2
|
||||
}
|
|
@ -1,5 +1,9 @@
|
|||
font_family Hack
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
font_size 12
|
||||
{{- else }}
|
||||
font_size 10
|
||||
{{- end }}
|
||||
cursor_shape block
|
||||
cursor_stop_blinking_after 10
|
||||
shell_integration enabled no-cursor
|
|
@ -1,25 +1,11 @@
|
|||
return {
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
config = true,
|
||||
},
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
config = true,
|
||||
lazy = true,
|
||||
event = { "BufReadPost", "BufNewFile" }
|
||||
},
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
lazy = true,
|
||||
build = ":TSUpdate",
|
||||
event = { "BufReadPost", "BufNewFile" },
|
||||
},
|
||||
-- statusline
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
config = true,
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' }
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" }
|
||||
},
|
||||
-- Theme
|
||||
{
|
||||
"neanias/everforest-nvim",
|
||||
version = false,
|
||||
|
@ -33,5 +19,115 @@ return {
|
|||
})
|
||||
end,
|
||||
},
|
||||
-- Which-key keybind hints
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
config = true,
|
||||
},
|
||||
-- Auto-pair brackets, parenthesis, etm.
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
config = true,
|
||||
lazy = true,
|
||||
event = { "BufReadPost", "BufNewFile" }
|
||||
},
|
||||
-- Tree-sitter
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
lazy = true,
|
||||
build = ":TSUpdate",
|
||||
event = { "BufReadPost", "BufNewFile" },
|
||||
opts = {
|
||||
indent = { enable = true },
|
||||
highlight = { enable = true },
|
||||
auto_install = { enable = true },
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"c",
|
||||
"cpp",
|
||||
"lua",
|
||||
"luadoc",
|
||||
"markdown",
|
||||
"python",
|
||||
"vim",
|
||||
"vimdoc",
|
||||
"yaml",
|
||||
"zig",
|
||||
},
|
||||
},
|
||||
},
|
||||
-- Auto-completion
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
event = "InsertEnter",
|
||||
dependencies = {
|
||||
{"L3MON4D3/LuaSnip"},
|
||||
},
|
||||
config = function()
|
||||
-- Here is where you configure the autocompletion settings.
|
||||
-- The arguments for .extend() have the same shape as `manage_nvim_cmp`:
|
||||
-- https://github.com/VonHeikemen/lsp-zero.nvim/blob/v2.x/doc/md/api-reference.md#manage_nvim_cmp
|
||||
|
||||
require("lsp-zero.cmp").extend()
|
||||
|
||||
-- And you can configure cmp even more, if you want to.
|
||||
local cmp = require("cmp")
|
||||
local cmp_action = require("lsp-zero.cmp").action()
|
||||
|
||||
cmp.setup({
|
||||
mapping = {
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<C-f>"] = cmp_action.luasnip_jump_forward(),
|
||||
["<C-b>"] = cmp_action.luasnip_jump_backward(),
|
||||
}
|
||||
})
|
||||
end
|
||||
},
|
||||
-- LSP
|
||||
{
|
||||
"VonHeikemen/lsp-zero.nvim",
|
||||
branch = "v2.x",
|
||||
lazy = true,
|
||||
config = function()
|
||||
-- This is where you modify the settings for lsp-zero
|
||||
-- Note: autocompletion settings will not take effect
|
||||
|
||||
require("lsp-zero.settings").preset({})
|
||||
end
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
cmd = "LspInfo",
|
||||
event = {"BufReadPre", "BufNewFile"},
|
||||
dependencies = {
|
||||
{"hrsh7th/cmp-nvim-lsp"},
|
||||
{"williamboman/mason-lspconfig.nvim"},
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
lazy = true,
|
||||
build = function()
|
||||
pcall(vim.api.nvim_command, "MasonUpdate")
|
||||
end,
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
-- This is where all the LSP shenanigans will live
|
||||
|
||||
local lsp = require("lsp-zero")
|
||||
|
||||
lsp.on_attach(function(client, bufnr)
|
||||
-- see :help lsp-zero-keybindings
|
||||
-- to learn the available actions
|
||||
lsp.default_keymaps({buffer = bufnr})
|
||||
end)
|
||||
|
||||
lsp.setup_servers({'pyright', 'zls'})
|
||||
|
||||
-- (Optional) Configure lua language server for neovim
|
||||
-- require("lspconfig").lua_ls.setup(lsp.nvim_lua_ls())
|
||||
|
||||
lsp.setup()
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,438 +0,0 @@
|
|||
#################################
|
||||
# Shadows #
|
||||
#################################
|
||||
|
||||
|
||||
# Enabled client-side shadows on windows. Note desktop windows
|
||||
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
|
||||
# unless explicitly requested using the wintypes option.
|
||||
#
|
||||
# shadow = false
|
||||
shadow = true;
|
||||
|
||||
# The blur radius for shadows, in pixels. (defaults to 12)
|
||||
# shadow-radius = 12
|
||||
shadow-radius = 7;
|
||||
|
||||
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
|
||||
# shadow-opacity = .75
|
||||
|
||||
# The left offset for shadows, in pixels. (defaults to -15)
|
||||
# shadow-offset-x = -15
|
||||
shadow-offset-x = -7;
|
||||
|
||||
# The top offset for shadows, in pixels. (defaults to -15)
|
||||
# shadow-offset-y = -15
|
||||
shadow-offset-y = -7;
|
||||
|
||||
# Red color value of shadow (0.0 - 1.0, defaults to 0).
|
||||
# shadow-red = 0
|
||||
|
||||
# Green color value of shadow (0.0 - 1.0, defaults to 0).
|
||||
# shadow-green = 0
|
||||
|
||||
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
|
||||
# shadow-blue = 0
|
||||
|
||||
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
|
||||
# shadow-color = "#000000"
|
||||
|
||||
# Specify a list of conditions of windows that should have no shadow.
|
||||
#
|
||||
# examples:
|
||||
# shadow-exclude = "n:e:Notification";
|
||||
#
|
||||
# shadow-exclude = []
|
||||
shadow-exclude = [
|
||||
"name = 'Notification'",
|
||||
"class_g = 'Conky'",
|
||||
"class_g ?= 'Notify-osd'",
|
||||
"class_g = 'Cairo-clock'",
|
||||
"_GTK_FRAME_EXTENTS@:c",
|
||||
"class_g = 'firefox' && argb"
|
||||
];
|
||||
|
||||
# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
|
||||
# clip-shadow-above = []
|
||||
|
||||
# Specify a X geometry that describes the region in which shadow should not
|
||||
# be painted in, such as a dock window region. Use
|
||||
# shadow-exclude-reg = "x10+0+0"
|
||||
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
|
||||
#
|
||||
# shadow-exclude-reg = ""
|
||||
|
||||
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
|
||||
# xinerama-shadow-crop = false
|
||||
|
||||
|
||||
#################################
|
||||
# Fading #
|
||||
#################################
|
||||
|
||||
|
||||
# Fade windows in/out when opening/closing and when opacity changes,
|
||||
# unless no-fading-openclose is used.
|
||||
# fading = false
|
||||
fading = true;
|
||||
|
||||
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
|
||||
# fade-in-step = 0.028
|
||||
fade-in-step = 0.03;
|
||||
|
||||
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
|
||||
# fade-out-step = 0.03
|
||||
fade-out-step = 0.03;
|
||||
|
||||
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
|
||||
# fade-delta = 10
|
||||
|
||||
# Specify a list of conditions of windows that should not be faded.
|
||||
fade-exclude = [ "class_g = 'xsecurelock'" ];
|
||||
|
||||
# Do not fade on window open/close.
|
||||
# no-fading-openclose = false
|
||||
|
||||
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
|
||||
# no-fading-destroyed-argb = false
|
||||
|
||||
|
||||
#################################
|
||||
# Transparency / Opacity #
|
||||
#################################
|
||||
|
||||
|
||||
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
|
||||
# inactive-opacity = 1
|
||||
inactive-opacity = 0.95;
|
||||
|
||||
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
|
||||
# frame-opacity = 1.0
|
||||
frame-opacity = 0.9;
|
||||
|
||||
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
|
||||
# inactive-opacity-override = true
|
||||
inactive-opacity-override = false;
|
||||
|
||||
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
|
||||
# active-opacity = 1.0
|
||||
|
||||
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
|
||||
# inactive-dim = 0.0
|
||||
|
||||
# Specify a list of conditions of windows that should never be considered focused.
|
||||
# focus-exclude = []
|
||||
focus-exclude = [ "class_g = 'Cairo-clock'" ];
|
||||
|
||||
# Use fixed inactive dim value, instead of adjusting according to window opacity.
|
||||
# inactive-dim-fixed = 1.0
|
||||
|
||||
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
|
||||
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
|
||||
# Note we don't make any guarantee about possible conflicts with other
|
||||
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
|
||||
# example:
|
||||
# opacity-rule = [ "80:class_g = 'URxvt'" ];
|
||||
#
|
||||
# opacity-rule = [
|
||||
# "90:class_g = 'URxvt' && focused",
|
||||
# "60:class_g = 'URxvt' && !focused"
|
||||
# ];
|
||||
|
||||
|
||||
|
||||
#################################
|
||||
# Corners #
|
||||
#################################
|
||||
|
||||
# Sets the radius of rounded window corners. When > 0, the compositor will
|
||||
# round the corners of windows. Does not interact well with
|
||||
# `transparent-clipping`.
|
||||
corner-radius = 5
|
||||
|
||||
# Exclude conditions for rounded corners.
|
||||
rounded-corners-exclude = [
|
||||
"window_type = 'dock'",
|
||||
"window_type = 'desktop'"
|
||||
];
|
||||
|
||||
|
||||
#################################
|
||||
# Background-Blurring #
|
||||
#################################
|
||||
|
||||
|
||||
# Parameters for background blurring, see the *BLUR* section for more information.
|
||||
blur-method = "dual_kawase"
|
||||
# blur-size = 12
|
||||
#
|
||||
# blur-deviation = false
|
||||
#
|
||||
blur-strength = 3
|
||||
|
||||
# Blur background of semi-transparent / ARGB windows.
|
||||
# Bad in performance, with driver-dependent behavior.
|
||||
# The name of the switch may change without prior notifications.
|
||||
#
|
||||
blur-background = true
|
||||
|
||||
# Blur background of windows when the window frame is not opaque.
|
||||
# Implies:
|
||||
# blur-background
|
||||
# Bad in performance, with driver-dependent behavior. The name may change.
|
||||
#
|
||||
blur-background-frame = true
|
||||
|
||||
|
||||
# Use fixed blur strength rather than adjusting according to window opacity.
|
||||
# blur-background-fixed = false
|
||||
|
||||
|
||||
# Specify the blur convolution kernel, with the following format:
|
||||
# example:
|
||||
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
|
||||
#
|
||||
# blur-kern = ""
|
||||
blur-kern = "3x3box";
|
||||
|
||||
|
||||
# Exclude conditions for background blur.
|
||||
# blur-background-exclude = []
|
||||
blur-background-exclude = [
|
||||
#"window_type = 'dock'",
|
||||
"window_type = 'desktop'",
|
||||
"_GTK_FRAME_EXTENTS@:c",
|
||||
"class_g = 'slop'"
|
||||
];
|
||||
|
||||
#################################
|
||||
# General Settings #
|
||||
#################################
|
||||
|
||||
# Enable remote control via D-Bus. See the man page for more details.
|
||||
# dbus = true
|
||||
|
||||
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
|
||||
# daemon = false
|
||||
|
||||
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
|
||||
# `xrender` is the default one.
|
||||
#
|
||||
backend = "glx"
|
||||
# backend = "xrender";
|
||||
|
||||
# Enable/disable VSync.
|
||||
# vsync = false
|
||||
vsync = true;
|
||||
|
||||
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
|
||||
# dbus = false
|
||||
|
||||
# Try to detect WM windows (a non-override-redirect window with no
|
||||
# child that has 'WM_STATE') and mark them as active.
|
||||
#
|
||||
# mark-wmwin-focused = false
|
||||
mark-wmwin-focused = true;
|
||||
|
||||
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
|
||||
# mark-ovredir-focused = false
|
||||
mark-ovredir-focused = false;
|
||||
|
||||
# Try to detect windows with rounded corners and don't consider them
|
||||
# shaped windows. The accuracy is not very high, unfortunately.
|
||||
#
|
||||
# detect-rounded-corners = false
|
||||
detect-rounded-corners = true;
|
||||
|
||||
# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
|
||||
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
|
||||
#
|
||||
# detect-client-opacity = false
|
||||
detect-client-opacity = true;
|
||||
|
||||
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
|
||||
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
|
||||
# provided that the WM supports it.
|
||||
#
|
||||
# use-ewmh-active-win = false
|
||||
|
||||
# Unredirect all windows if a full-screen opaque window is detected,
|
||||
# to maximize performance for full-screen windows. Known to cause flickering
|
||||
# when redirecting/unredirecting windows.
|
||||
#
|
||||
# unredir-if-possible = false
|
||||
|
||||
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
|
||||
# unredir-if-possible-delay = 0
|
||||
|
||||
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
|
||||
# unredir-if-possible-exclude = []
|
||||
|
||||
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
|
||||
# in the same group focused at the same time.
|
||||
#
|
||||
# detect-transient = false
|
||||
detect-transient = true;
|
||||
|
||||
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
|
||||
# group focused at the same time. This usually means windows from the same application
|
||||
# will be considered focused or unfocused at the same time.
|
||||
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
|
||||
#
|
||||
# detect-client-leader = false
|
||||
|
||||
# Resize damaged region by a specific number of pixels.
|
||||
# A positive value enlarges it while a negative one shrinks it.
|
||||
# If the value is positive, those additional pixels will not be actually painted
|
||||
# to screen, only used in blur calculation, and such. (Due to technical limitations,
|
||||
# with use-damage, those pixels will still be incorrectly painted to screen.)
|
||||
# Primarily used to fix the line corruption issues of blur,
|
||||
# in which case you should use the blur radius value here
|
||||
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
|
||||
# with a 5x5 one you use `--resize-damage 2`, and so on).
|
||||
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
|
||||
#
|
||||
# resize-damage = 1
|
||||
|
||||
# Specify a list of conditions of windows that should be painted with inverted color.
|
||||
# Resource-hogging, and is not well tested.
|
||||
#
|
||||
# invert-color-include = []
|
||||
|
||||
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
|
||||
# Might cause incorrect opacity when rendering transparent content (but never
|
||||
# practically happened) and may not work with blur-background.
|
||||
# My tests show a 15% performance boost. Recommended.
|
||||
#
|
||||
glx-no-stencil = true;
|
||||
|
||||
# GLX backend: Avoid rebinding pixmap on window damage.
|
||||
# Probably could improve performance on rapid window content changes,
|
||||
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
|
||||
# Recommended if it works.
|
||||
#
|
||||
# glx-no-rebind-pixmap = false
|
||||
|
||||
# Disable the use of damage information.
|
||||
# This cause the whole screen to be redrawn every time, instead of the part of the screen
|
||||
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
|
||||
# The opposing option is use-damage
|
||||
#
|
||||
# no-use-damage = false
|
||||
use-damage = true;
|
||||
|
||||
# Use X Sync fence to sync clients' draw calls, to make sure all draw
|
||||
# calls are finished before picom starts drawing. Needed on nvidia-drivers
|
||||
# with GLX backend for some users.
|
||||
#
|
||||
# xrender-sync-fence = false
|
||||
|
||||
# GLX backend: Use specified GLSL fragment shader for rendering window
|
||||
# contents. Read the man page for a detailed explanation of the interface.
|
||||
#
|
||||
# window-shader-fg = "default"
|
||||
|
||||
# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
|
||||
# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
|
||||
#
|
||||
# window-shader-fg-rule = [
|
||||
# "my_shader.frag:window_type != 'dock'"
|
||||
# ]
|
||||
|
||||
# Force all windows to be painted with blending. Useful if you
|
||||
# have a glx-fshader-win that could turn opaque pixels transparent.
|
||||
#
|
||||
# force-win-blend = false
|
||||
|
||||
# Do not use EWMH to detect fullscreen windows.
|
||||
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
|
||||
#
|
||||
# no-ewmh-fullscreen = false
|
||||
|
||||
# Dimming bright windows so their brightness doesn't exceed this set value.
|
||||
# Brightness of a window is estimated by averaging all pixels in the window,
|
||||
# so this could comes with a performance hit.
|
||||
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
|
||||
#
|
||||
# max-brightness = 1.0
|
||||
|
||||
# Make transparent windows clip other windows like non-transparent windows do,
|
||||
# instead of blending on top of them.
|
||||
#
|
||||
# transparent-clipping = false
|
||||
|
||||
# Specify a list of conditions of windows that should never have transparent
|
||||
# clipping applied. Useful for screenshot tools, where you need to be able to
|
||||
# see through transparent parts of the window.
|
||||
#
|
||||
# transparent-clipping-exclude = []
|
||||
|
||||
# Set the log level. Possible values are:
|
||||
# "trace", "debug", "info", "warn", "error"
|
||||
# in increasing level of importance. Case doesn't matter.
|
||||
# If using the "TRACE" log level, it's better to log into a file
|
||||
# using *--log-file*, since it can generate a huge stream of logs.
|
||||
#
|
||||
# log-level = "debug"
|
||||
log-level = "warn";
|
||||
|
||||
# Set the log file.
|
||||
# If *--log-file* is never specified, logs will be written to stderr.
|
||||
# Otherwise, logs will to written to the given file, though some of the early
|
||||
# logs might still be written to the stderr.
|
||||
# When setting this option from the config file, it is recommended to use an absolute path.
|
||||
#
|
||||
# log-file = "/path/to/your/log/file"
|
||||
|
||||
# Show all X errors (for debugging)
|
||||
# show-all-xerrors = false
|
||||
|
||||
# Write process ID to a file.
|
||||
# write-pid-path = "/path/to/your/log/file"
|
||||
|
||||
# Window type settings
|
||||
#
|
||||
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
|
||||
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
|
||||
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
|
||||
# "tooltip", "notification", "combo", and "dnd".
|
||||
#
|
||||
# Following per window-type options are available: ::
|
||||
#
|
||||
# fade, shadow:::
|
||||
# Controls window-type-specific shadow and fade settings.
|
||||
#
|
||||
# opacity:::
|
||||
# Controls default opacity of the window type.
|
||||
#
|
||||
# focus:::
|
||||
# Controls whether the window of this type is to be always considered focused.
|
||||
# (By default, all window types except "normal" and "dialog" has this on.)
|
||||
#
|
||||
# full-shadow:::
|
||||
# Controls whether shadow is drawn under the parts of the window that you
|
||||
# normally won't be able to see. Useful when the window has parts of it
|
||||
# transparent, and you want shadows in those areas.
|
||||
#
|
||||
# clip-shadow-above:::
|
||||
# Controls whether shadows that would have been drawn above the window should
|
||||
# be clipped. Useful for dock windows that should have no shadow painted on top.
|
||||
#
|
||||
# redir-ignore:::
|
||||
# Controls whether this type of windows should cause screen to become
|
||||
# redirected again after been unredirected. If you have unredir-if-possible
|
||||
# set, and doesn't want certain window to cause unnecessary screen redirection,
|
||||
# you can set this to `true`.
|
||||
#
|
||||
wintypes:
|
||||
{
|
||||
tooltip = { fade = true; shadow = true; opacity = false; focus = true; full-shadow = false; };
|
||||
dock = { shadow = false; clip-shadow-above = true; opacity = 0.9; }
|
||||
dnd = { shadow = false; }
|
||||
popup_menu = { opacity = false; }
|
||||
dropdown_menu = { opacity = false; }
|
||||
menu = { shadow = false; };
|
||||
# dropdown_menu = { shadow = false; };
|
||||
# popup_menu = { shadow = false; };
|
||||
# utility = { shadow = false; };
|
||||
};
|
|
@ -1,21 +0,0 @@
|
|||
[color]
|
||||
background = ${xrdb:background}
|
||||
foreground = ${xrdb:foreground}
|
||||
sep = ${xrdb:color8}
|
||||
|
||||
white = ${xrdb:color15}
|
||||
black = ${xrdb:color0}
|
||||
dark-grey = ${xrdb:color8}
|
||||
light-grey = ${xrdb:color7}
|
||||
dark-red = ${xrdb:color1}
|
||||
red = ${xrdb:color9}
|
||||
dark-green = ${xrdb:color2}
|
||||
green = ${xrdb:color10}
|
||||
dark-yellow = ${xrdb:color3}
|
||||
yellow = ${xrdb:color11}
|
||||
dark-blue = ${xrdb:color4}
|
||||
blue = ${xrdb:color12}
|
||||
dark-magenta = ${xrdb:color5}
|
||||
magenta = ${xrdb:color13}
|
||||
dark-cyan = ${xrdb:color6}
|
||||
cyan = ${xrdb:color14}
|
|
@ -1,152 +0,0 @@
|
|||
[global/wm]
|
||||
include-file = ~/.config/polybar/colors.ini
|
||||
include-file = ~/.config/polybar/modules.ini
|
||||
include-file = ~/.config/polybar/custom_modules.ini
|
||||
|
||||
margin-bottom = 0
|
||||
margin-top = 0
|
||||
|
||||
[bar/one]
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
monitor = DisplayPort-0
|
||||
height = 24
|
||||
bottom = true
|
||||
{{- else }}
|
||||
monitor = eDP-1
|
||||
height = 72
|
||||
bottom = false
|
||||
{{- end}}
|
||||
monitor-fallback =
|
||||
monitor-strict = false
|
||||
enable-ipc = true
|
||||
override-redirect = true
|
||||
fixed-center = true
|
||||
width = 99.5%
|
||||
offset-x = 0.25%
|
||||
offset-y = 0.25%
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
dpi-x = 216
|
||||
dpi-y = 216
|
||||
{{- end }}
|
||||
background = ${color.background}
|
||||
foreground = ${color.foreground}
|
||||
radius = 5.0
|
||||
line-size = 0
|
||||
line-color = ${color.background}
|
||||
border-bottom-size = 0
|
||||
border-bottom-color = ${color.foreground}
|
||||
padding = 1
|
||||
module-margin-left = 1
|
||||
module-margin-right = 0
|
||||
seperator =
|
||||
dim-value = 1.0
|
||||
locale = en_US.UTF-8
|
||||
|
||||
font-0 = Hack:size=10;3
|
||||
font-1 = Font Awesome 6 Free:style=Solid:size=12;3
|
||||
font-2 = Font Awesome 6 Free:style=Regular:size=12;3
|
||||
font-3 = Font Awesome 6 Brands:style=Regular:size=12;3
|
||||
|
||||
modules-left = workspaces sep title
|
||||
modules-center =
|
||||
modules-right = keyboard sep pulseaudio-control sep date sep
|
||||
tray-position = right
|
||||
tray-detached = false
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
tray-maxsize = 40
|
||||
{{- else }}
|
||||
tray-maxsize = 16
|
||||
{{- end }}
|
||||
tray-background = ${color.background}
|
||||
tray-offset-x = 0
|
||||
tray-offset-y = 0
|
||||
tray-padding = 0
|
||||
tray-scale = 1.0
|
||||
|
||||
wm-name = bspwm
|
||||
wm-restack = bspwm
|
||||
scroll-up = bspwm-desknext
|
||||
scroll-down = bspwm-deskprev
|
||||
click-left =
|
||||
click-middle =
|
||||
click-right =
|
||||
;scroll-up = bspc desktop -f prev.local
|
||||
;scroll-down = bspc desktop -f next.local
|
||||
double-click-left =
|
||||
double-click-middle =
|
||||
double-click-right =
|
||||
cursor-click =
|
||||
cursor-scroll =
|
||||
|
||||
[bar/two]
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
monitor = DisplayPort-1
|
||||
height = 24
|
||||
{{- else }}
|
||||
monitor = eDP-1
|
||||
height = 72
|
||||
{{- end}}
|
||||
bottom = true
|
||||
monitor-fallback =
|
||||
monitor-strict = false
|
||||
enable-ipc = true
|
||||
override-redirect = true
|
||||
fixed-center = true
|
||||
width = 99.5%
|
||||
offset-x = 0.25%
|
||||
offset-y = 0.25%
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
dpi-x = 216
|
||||
dpi-y = 216
|
||||
{{- end }}
|
||||
background = ${color.background}
|
||||
foreground = ${color.foreground}
|
||||
radius = 5.0
|
||||
line-size = 0
|
||||
line-color = ${color.background}
|
||||
border-bottom-size = 0
|
||||
border-bottom-color = ${color.foreground}
|
||||
padding = 1
|
||||
module-margin-left = 1
|
||||
module-margin-right = 1
|
||||
seperator =
|
||||
dim-value = 1.0
|
||||
locale = en_US.UTF-8
|
||||
|
||||
font-0 = Hack:size=10;3
|
||||
font-1 = Font Awesome 6 Free:style=Solid:size=12;3
|
||||
font-2 = Font Awesome 6 Free:style=Regular:size=12;3
|
||||
font-3 = Font Awesome 6 Brands:style=Regular:size=12;3
|
||||
|
||||
modules-left = workspaces sep title
|
||||
modules-center = spotify
|
||||
modules-right = network sep cpu sep memory sep filesystem
|
||||
|
||||
tray-position = none
|
||||
tray-detached = false
|
||||
tray-maxsize = 16
|
||||
tray-background = ${color.background}
|
||||
tray-offset-x = 0
|
||||
tray-offset-y = 0
|
||||
tray-padding = 0
|
||||
tray-scale = 1.0
|
||||
|
||||
wm-name = bspwm
|
||||
wm-restack = bspwm
|
||||
scroll-up = bspwm-desknext
|
||||
scroll-down = bspwm-deskprev
|
||||
click-left =
|
||||
click-middle =
|
||||
click-right =
|
||||
;scroll-up = bspc desktop -f prev.local
|
||||
;scroll-down = bspc desktop -f next.local
|
||||
double-click-left =
|
||||
double-click-middle =
|
||||
double-click-right =
|
||||
cursor-click =
|
||||
cursor-scroll =
|
||||
|
||||
[settings]
|
||||
screenchange-reload = false
|
||||
pseudo-transparency = false
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
[module/sep]
|
||||
type = custom/text
|
||||
content = |
|
||||
|
||||
content-foreground = ${color.sep}
|
||||
|
||||
[module/powermenu]
|
||||
type = custom/menu
|
||||
|
||||
; If true, <label-toggle> will be to the left of the menu items (default).
|
||||
; If false, it will be on the right of all the items.
|
||||
expand-right = true
|
||||
|
||||
; "menu-LEVEL-N" has the same properties as "label-NAME" with
|
||||
; the additional "exec" property
|
||||
;
|
||||
; Available exec commands:
|
||||
; menu-open-LEVEL
|
||||
; menu-close
|
||||
; Other commands will be executed using "/usr/bin/env sh -c $COMMAND"
|
||||
|
||||
menu-0-0 = " Log Out |"
|
||||
menu-0-0-exec = menu-open-1
|
||||
menu-0-1 = " Suspend |"
|
||||
menu-0-1-exec = menu-open-2
|
||||
menu-0-2 = " Reboot |"
|
||||
menu-0-2-exec = menu-open-3
|
||||
menu-0-3 = " Shutdown "
|
||||
menu-0-3-exec = menu-open-4
|
||||
|
||||
menu-1-0 = " Back |"
|
||||
menu-1-0-exec = menu-open-0
|
||||
menu-1-1 = " Log Out "
|
||||
menu-1-1-exec = loginctl kill-session $XDG_SESSION_ID
|
||||
|
||||
menu-2-0 = " Back |"
|
||||
menu-2-0-exec = menu-open-0
|
||||
menu-2-1 = " Suspend "
|
||||
menu-2-1-exec = systemctl suspend
|
||||
menu-2-2 = " Suspend-then-Hibernate "
|
||||
menu-2-2-exec = systemctl suspend-then-hibernate
|
||||
menu-2-3 = " Hibernate "
|
||||
menu-2-3-exec = systemctl hibernate
|
||||
|
||||
menu-3-0 = " Back |"
|
||||
menu-3-0-exec = menu-open-0
|
||||
menu-3-1 = " Reboot "
|
||||
menu-3-1-exec = systemctl reboot
|
||||
|
||||
menu-4-0 = " Back |"
|
||||
menu-4-0-exec = menu-open-0
|
||||
menu-4-1 = " Shutdown "
|
||||
menu-4-1-exec = systemctl poweroff
|
||||
|
||||
|
||||
; Available tags:
|
||||
; <label-toggle> (default) - gets replaced with <label-(open|close)>
|
||||
; <menu> (default)
|
||||
; Note that if you use <label-toggle> you must also include
|
||||
; the definition for <label-open>
|
||||
|
||||
format = <label-toggle><menu>
|
||||
|
||||
label-open =
|
||||
label-open-foreground = ${color.dark-cyan}
|
||||
label-open-padding = 1
|
||||
label-close =
|
||||
label-close-foreground = ${color.red}
|
||||
label-close-padding = 1
|
||||
|
||||
; Optional item separator
|
||||
; Default: none
|
||||
;label-separator = " | "
|
||||
;label-separator-foreground = ${color.foreground}
|
||||
;label-separator-background = ${color.background-alt}
|
||||
|
||||
;;label-open-foreground = ${color.foreground}
|
||||
;;label-close-foreground = ${color.background}
|
||||
|
||||
[module/pulseaudio-control]
|
||||
type = custom/script
|
||||
tail = true
|
||||
;format-underline = ${colors.cyan}
|
||||
;label-padding = 2
|
||||
;label-foreground = ${color.foreground}
|
||||
label-foreground = ${color.blue}
|
||||
|
||||
# You can copy-paste your options for each possible action, which is more
|
||||
# trouble-free but repetitive, or apply only the relevant ones (for example
|
||||
# --sink-blacklist is only needed for next-sink).
|
||||
exec = pulseaudio-control --icons-volume " , , " --icon-muted " " --node-nicknames-from "device.profile.description" listen
|
||||
#exec = pulseaudio-control --icons-volume " , , " --icon-muted " " --sink-nicknames-from "device.description" --sink-nickname "alsa_output.pci-0000_00_1b.0.analog-stereo: Speakers" --sink-nickname "alsa_output.usb-Kingston_HyperX_Virtual_Surround_Sound_00000000-00.analog-stereo: Headphones" listen
|
||||
click-right = exec pavucontrol &
|
||||
click-left = pulseaudio-control togmute
|
||||
click-middle = pulseaudio-control next-sink
|
||||
#click-middle = pulseaudio-control --sink-blacklist "alsa_output.pci-0000_01_00.1.hdmi-stereo-extra2" next-sink
|
||||
scroll-up = pulseaudio-control --volume-max 130 up
|
||||
scroll-down = pulseaudio-control --volume-max 130 down
|
||||
|
||||
[module/spotify]
|
||||
type = custom/script
|
||||
interval = 1
|
||||
format-prefix = " "
|
||||
format = <label>
|
||||
exec = python /usr/bin/polybar-spotify -f '{artist}: {song}'
|
||||
format-prefix-foreground = ${color.dark-green}
|
||||
;format-underline = ${color.green}
|
|
@ -1,897 +0,0 @@
|
|||
[module/alsa]
|
||||
type = internal/alsa
|
||||
|
||||
; Soundcard to be used
|
||||
; Usually in the format hw:# where # is the card number
|
||||
; You can find the different card numbers in `/proc/asound/cards`
|
||||
master-soundcard = default
|
||||
speaker-soundcard = default
|
||||
headphone-soundcard = default
|
||||
|
||||
; Name of the master, speaker and headphone mixers
|
||||
; Use the following command to list available mixer controls:
|
||||
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
|
||||
; If master, speaker or headphone-soundcard isn't the default,
|
||||
; use `amixer -c # scontrols` instead where # is the number
|
||||
; of the master, speaker or headphone soundcard respectively
|
||||
;
|
||||
; Default: Master
|
||||
master-mixer = Master
|
||||
|
||||
; Optionally define speaker and headphone mixers
|
||||
; Default: none
|
||||
;speaker-mixer = Speaker
|
||||
; Default: none
|
||||
;headphone-mixer = Headphone
|
||||
|
||||
; NOTE: This is required if headphone_mixer is defined
|
||||
; Use the following command to list available device controls
|
||||
; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort
|
||||
; You may also need to use `amixer -c # controls` as above for the mixer names
|
||||
; Default: none
|
||||
;headphone-id = 9
|
||||
|
||||
; Use volume mapping (similar to amixer -M and alsamixer), where the increase in volume is linear to the ear
|
||||
; Default: false
|
||||
mapped = true
|
||||
|
||||
; Interval for volume increase/decrease (in percent points)
|
||||
; Default: 5
|
||||
interval = 5
|
||||
|
||||
; Available tags:
|
||||
; <label-volume> (default)
|
||||
; <ramp-volume>
|
||||
; <bar-volume>
|
||||
format-volume = <ramp-volume> <label-volume>
|
||||
|
||||
; Available tags:
|
||||
; <label-muted> (default)
|
||||
; <ramp-volume>
|
||||
; <bar-volume>
|
||||
format-muted = <label-muted>
|
||||
format-muted-prefix =
|
||||
format-muted-prefix-foreground = ${color.red}
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
label-volume = %percentage%%
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
label-muted = " Muted"
|
||||
label-muted-foreground = ${color.sep}
|
||||
|
||||
; Only applies if <ramp-volume> is used
|
||||
ramp-volume-0 =
|
||||
ramp-volume-1 =
|
||||
ramp-volume-2 =
|
||||
ramp-volume-foreground = ${color.blue}
|
||||
|
||||
; If defined, it will replace <ramp-volume> when
|
||||
; headphones are plugged in to `headphone_control_numid`
|
||||
; If undefined, <ramp-volume> will be used for both
|
||||
; Only applies if <ramp-volume> is used
|
||||
ramp-headphones-0 =
|
||||
ramp-headphones-1 =
|
||||
ramp-headphones-foreground = ${color.blue}
|
||||
|
||||
[module/battery0]
|
||||
type = internal/battery
|
||||
|
||||
; This is useful in case the battery never reports 100% charge
|
||||
full-at = 99
|
||||
|
||||
; Use the following command to list batteries and adapters:
|
||||
; $ ls -1 /sys/class/power_supply/
|
||||
battery = BAT0
|
||||
adapter = AC
|
||||
|
||||
; If an inotify event haven't been reported in this many
|
||||
; seconds, manually poll for new values.
|
||||
;
|
||||
; Needed as a fallback for systems that don't report events
|
||||
; on sysfs/procfs.
|
||||
;
|
||||
; Disable polling by setting the interval to 0.
|
||||
;
|
||||
; Default: 5
|
||||
poll-interval = 2
|
||||
|
||||
; see "man date" for details on how to format the time string
|
||||
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
||||
; Default: %H:%M:%S
|
||||
time-format = %H:%M
|
||||
|
||||
; Available tags:
|
||||
; <label-charging> (default)
|
||||
; <bar-capacity>
|
||||
; <ramp-capacity>
|
||||
; <animation-charging>
|
||||
format-charging = <animation-charging> <label-charging>
|
||||
; Available tags:
|
||||
; <label-discharging> (default)
|
||||
; <bar-capacity>
|
||||
; <ramp-capacity>
|
||||
; <animation-discharging>
|
||||
format-discharging = <ramp-capacity> <label-discharging>
|
||||
|
||||
; Available tags:
|
||||
; <label-full> (default)
|
||||
; <bar-capacity>
|
||||
; <ramp-capacity>
|
||||
format-full = <label-full>
|
||||
format-full-prefix =
|
||||
format-full-prefix-foreground = ${color.dark-green}
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
; %time%
|
||||
; %consumption% (shows current charge rate in watts)
|
||||
label-charging = %percentage%%
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
; %time%
|
||||
; %consumption% (shows current discharge rate in watts)
|
||||
label-discharging = %percentage%%
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
label-full = " Full"
|
||||
|
||||
; Only applies if <ramp-capacity> is used
|
||||
ramp-capacity-0 =
|
||||
ramp-capacity-1 =
|
||||
ramp-capacity-2 =
|
||||
ramp-capacity-3 =
|
||||
ramp-capacity-4 =
|
||||
ramp-capacity-foreground = ${color.dark-yellow}
|
||||
|
||||
; Only applies if <bar-capacity> is used
|
||||
;bar-capacity-width = 10
|
||||
|
||||
; Only applies if <animation-charging> is used
|
||||
animation-charging-0 =
|
||||
animation-charging-1 =
|
||||
animation-charging-2 =
|
||||
animation-charging-3 =
|
||||
animation-charging-4 =
|
||||
animation-charging-foreground = ${color.green}
|
||||
; Framerate in milliseconds
|
||||
animation-charging-framerate = 750
|
||||
|
||||
; Only applies if <animation-discharging> is used
|
||||
animation-discharging-0 =
|
||||
animation-discharging-1 =
|
||||
animation-discharging-2 =
|
||||
animation-discharging-3 =
|
||||
animation-discharging-4 =
|
||||
; Framerate in milliseconds
|
||||
animation-discharging-framerate = 500
|
||||
|
||||
[module/battery1]
|
||||
type = internal/battery
|
||||
|
||||
; This is useful in case the battery never reports 100% charge
|
||||
full-at = 89
|
||||
|
||||
; Use the following command to list batteries and adapters:
|
||||
; $ ls -1 /sys/class/power_supply/
|
||||
battery = BAT1
|
||||
adapter = AC
|
||||
|
||||
; If an inotify event haven't been reported in this many
|
||||
; seconds, manually poll for new values.
|
||||
;
|
||||
; Needed as a fallback for systems that don't report events
|
||||
; on sysfs/procfs.
|
||||
;
|
||||
; Disable polling by setting the interval to 0.
|
||||
;
|
||||
; Default: 5
|
||||
poll-interval = 2
|
||||
|
||||
; see "man date" for details on how to format the time string
|
||||
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
||||
; Default: %H:%M:%S
|
||||
time-format = %H:%M
|
||||
|
||||
; Available tags:
|
||||
; <label-charging> (default)
|
||||
; <bar-capacity>
|
||||
; <ramp-capacity>
|
||||
; <animation-charging>
|
||||
format-charging = <animation-charging> <label-charging>
|
||||
; Available tags:
|
||||
; <label-discharging> (default)
|
||||
; <bar-capacity>
|
||||
; <ramp-capacity>
|
||||
; <animation-discharging>
|
||||
format-discharging = <ramp-capacity> <label-discharging>
|
||||
|
||||
; Available tags:
|
||||
; <label-full> (default)
|
||||
; <bar-capacity>
|
||||
; <ramp-capacity>
|
||||
format-full = <label-full>
|
||||
format-full-prefix =
|
||||
format-full-prefix-foreground = ${color.dark-green}
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
; %time%
|
||||
; %consumption% (shows current charge rate in watts)
|
||||
label-charging = %percentage%%
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
; %time%
|
||||
; %consumption% (shows current discharge rate in watts)
|
||||
label-discharging = %percentage%%
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
label-full = " Full"
|
||||
|
||||
; Only applies if <ramp-capacity> is used
|
||||
ramp-capacity-0 =
|
||||
ramp-capacity-1 =
|
||||
ramp-capacity-2 =
|
||||
ramp-capacity-3 =
|
||||
ramp-capacity-4 =
|
||||
ramp-capacity-foreground = ${color.dark-yellow}
|
||||
|
||||
; Only applies if <bar-capacity> is used
|
||||
;bar-capacity-width = 10
|
||||
|
||||
; Only applies if <animation-charging> is used
|
||||
animation-charging-0 =
|
||||
animation-charging-1 =
|
||||
animation-charging-2 =
|
||||
animation-charging-3 =
|
||||
animation-charging-4 =
|
||||
animation-charging-foreground = ${color.green}
|
||||
; Framerate in milliseconds
|
||||
animation-charging-framerate = 750
|
||||
|
||||
; Only applies if <animation-discharging> is used
|
||||
animation-discharging-0 =
|
||||
animation-discharging-1 =
|
||||
animation-discharging-2 =
|
||||
animation-discharging-3 =
|
||||
animation-discharging-4 =
|
||||
; Framerate in milliseconds
|
||||
animation-discharging-framerate = 500
|
||||
|
||||
[module/bspwm]
|
||||
type = internal/bspwm
|
||||
|
||||
; Only show workspaces defined on the same output as the bar
|
||||
; NOTE: The bspwm and XRandR monitor names must match, which they do by default.
|
||||
; Default: true
|
||||
pin-workspaces = true
|
||||
|
||||
; Output mode flags after focused state label
|
||||
; Default: false
|
||||
;;inline-mode = false
|
||||
|
||||
; Create click handler used to focus workspace
|
||||
; Default: true
|
||||
enable-click = true
|
||||
|
||||
; Create scroll handlers used to cycle workspaces
|
||||
; Default: true
|
||||
enable-scroll = true
|
||||
|
||||
; Set the scroll cycle direction
|
||||
; Default: true
|
||||
;;reverse-scroll = false
|
||||
|
||||
; Use fuzzy (partial) matching on labels when assigning
|
||||
; icons to workspaces
|
||||
; Example: code;♚ will apply the icon to all workspaces
|
||||
; containing 'code' in the label
|
||||
; Default: false
|
||||
;;fuzzy-match = true
|
||||
|
||||
; ws-icon-[0-9]+ = label;icon
|
||||
; Note that the label needs to correspond with the bspwm workspace name
|
||||
;;ws-icon-0 = code;♚
|
||||
;;ws-icon-1 = office;♛
|
||||
;;ws-icon-2 = graphics;♜
|
||||
;;ws-icon-3 = mail;♝
|
||||
;;ws-icon-4 = web;♞
|
||||
;;ws-icon-default = ♟
|
||||
|
||||
; Available tags:
|
||||
; <label-monitor>
|
||||
; <label-state> - gets replaced with <label-(focused|urgent|occupied|empty)>
|
||||
; <label-mode> - gets replaced with <label-(monocle|tiled|fullscreen|floating|locked|sticky|private)>
|
||||
; Default: <label-state>
|
||||
format = <label-state> <label-mode>
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; Default: %name%
|
||||
label-monitor = %name%
|
||||
|
||||
; If any values for label-dimmed-N are defined, the workspace/mode
|
||||
; colors will get overridden with those values if the monitor is out of focus
|
||||
; To only override workspaces in a specific state, use:
|
||||
; label-dimmed-focused
|
||||
; label-dimmed-occupied
|
||||
; label-dimmed-urgent
|
||||
; label-dimmed-empty
|
||||
;;label-dimmed-foreground = #555
|
||||
;;label-dimmed-underline = ${bar/top.background}
|
||||
;;label-dimmed-focused-background = #f00
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default: %icon% %name%
|
||||
label-focused = %icon%
|
||||
label-focused-foreground = ${color.foreground}
|
||||
label-focused-background = ${color.background}
|
||||
;label-focused-underline = #fba922
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default: %icon% %name%
|
||||
label-occupied = %icon%
|
||||
;label-occupied-underline = #555555
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default: %icon% %name%
|
||||
label-urgent = %icon%
|
||||
label-urgent-foreground = ${color.white}
|
||||
label-urgent-background = ${color.red}
|
||||
;label-urgent-underline = #9b0a20
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default: %icon% %name%
|
||||
label-empty = %icon%
|
||||
label-empty-foreground = ${color.foreground}
|
||||
|
||||
; The following labels will be used to indicate the layout/mode
|
||||
; for the focused workspace. Requires <label-mode>
|
||||
;
|
||||
; Available tokens:
|
||||
; None
|
||||
label-monocle =
|
||||
label-tiled =
|
||||
label-fullscreen =
|
||||
label-floating =
|
||||
label-pseudotiled = P
|
||||
label-locked =
|
||||
label-locked-foreground = #bd2c40
|
||||
label-sticky =
|
||||
label-sticky-foreground = #fba922
|
||||
label-private =
|
||||
label-private-foreground = #bd2c40
|
||||
|
||||
; Separator in between workspaces
|
||||
label-separator = |
|
||||
label-separator-padding = 2
|
||||
label-separator-foreground = ${color.sep}
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
|
||||
; Seconds to sleep between updates
|
||||
; Default: 1
|
||||
interval = 1
|
||||
|
||||
; Available tags:
|
||||
; <label> (default)
|
||||
; <bar-load>
|
||||
; <ramp-load>
|
||||
; <ramp-coreload>
|
||||
;;format = <label> <ramp-coreload>
|
||||
format = <label>
|
||||
format-prefix =
|
||||
format-prefix-foreground = ${color.red}
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default) - total cpu load averaged over all cores
|
||||
; %percentage-sum% - Cumulative load on all cores
|
||||
; %percentage-cores% - load percentage for each core
|
||||
; %percentage-core[1-9]% - load percentage for specific core
|
||||
label = " %percentage%%"
|
||||
|
||||
; Spacing between individual per-core ramps
|
||||
;;ramp-coreload-spacing = 1
|
||||
;;ramp-coreload-0 = ${cpu.load0}
|
||||
;;ramp-coreload-1 = ${cpu.load1}
|
||||
|
||||
;;ramp-load-0 = ${cpu.load0}
|
||||
;;ramp-load-1 = ${cpu.load1}i
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
|
||||
; Seconds to sleep between updates
|
||||
interval = 1.0
|
||||
|
||||
; See "http://en.cppreference.com/w/cpp/io/manip/put_time" for details on how to format the date string.
|
||||
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
||||
date = %a, %d %b
|
||||
|
||||
; Optional time format
|
||||
time = @ %R
|
||||
|
||||
; if `date-alt` or `time-alt` is defined, clicking
|
||||
; the module will toggle between formats
|
||||
date-alt = %m/%d
|
||||
time-alt = %R
|
||||
|
||||
; Available tags:
|
||||
; <label> (default)
|
||||
format = %{A3:gsimplecal:} <label> %{A}
|
||||
format-prefix = " "
|
||||
format-prefix-foreground = ${color.red}
|
||||
|
||||
; Available tokens:
|
||||
; %date%
|
||||
; %time%
|
||||
; Default: %date%
|
||||
label = %date% %time%
|
||||
|
||||
[module/filesystem]
|
||||
type = internal/fs
|
||||
|
||||
; Mountpoints to display
|
||||
mount-0 = /
|
||||
#mount-1 = /home
|
||||
;mount-2 = /var
|
||||
|
||||
; Seconds to sleep between updates
|
||||
; Default: 30
|
||||
interval = 30
|
||||
|
||||
; Display fixed precision values
|
||||
; Default: false
|
||||
fixed-values = true
|
||||
|
||||
; Spacing between entries
|
||||
; Default: 2
|
||||
spacing = 0
|
||||
|
||||
; Available tags:
|
||||
; <label-mounted> (default)
|
||||
; <bar-free>
|
||||
; <bar-used>
|
||||
; <ramp-capacity>
|
||||
format-mounted = <label-mounted>
|
||||
format-mounted-prefix =
|
||||
format-mounted-prefix-foreground = ${color.dark-green}
|
||||
|
||||
; Available tags:
|
||||
; <label-unmounted> (default)
|
||||
format-unmounted = <label-unmounted>
|
||||
format-unmounted-prefix =
|
||||
format-unmounted-prefix-foreground = ${color.red}
|
||||
|
||||
; Available tokens:
|
||||
; %mountpoint%
|
||||
; %type%
|
||||
; %fsname%
|
||||
; %percentage_free%
|
||||
; %percentage_used%
|
||||
; %total%
|
||||
; %free%
|
||||
; %used%
|
||||
; Default: %mountpoint% %percentage_free%%
|
||||
label-mounted = " %used% / %total% "
|
||||
|
||||
; Available tokens:
|
||||
; %mountpoint%
|
||||
; Default: %mountpoint% is not mounted
|
||||
label-unmounted = " %mountpoint%: NA"
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
|
||||
; Seconds to sleep between updates
|
||||
; Default: 1
|
||||
interval = 5
|
||||
|
||||
; Available tags:
|
||||
; <label> (default)
|
||||
; <bar-used>
|
||||
; <bar-free>
|
||||
; <ramp-used>
|
||||
; <ramp-free>
|
||||
; <bar-swap-used>
|
||||
; <bar-swap-free>
|
||||
; <ramp-swap-used>
|
||||
; <ramp-swap-free>
|
||||
format = <label>
|
||||
format-prefix =
|
||||
format-prefix-foreground = ${color.blue}
|
||||
|
||||
; Available tokens:
|
||||
; %percentage_used% (default)
|
||||
; %percentage_free%
|
||||
; %gb_used%
|
||||
; %gb_free%
|
||||
; %gb_total%
|
||||
; %mb_used%
|
||||
; %mb_free%
|
||||
; %mb_total%
|
||||
; %percentage_swap_used%
|
||||
; %percentage_swap_free%
|
||||
; %mb_swap_total%
|
||||
; %mb_swap_free%
|
||||
; %mb_swap_used%
|
||||
; %gb_swap_total%
|
||||
; %gb_swap_free%
|
||||
; %gb_swap_used%
|
||||
|
||||
label = " %mb_used% / %gb_total%"
|
||||
|
||||
; Only applies if <ramp-used> is used
|
||||
;;ramp-used-0 = ${memory.used0}
|
||||
;;ramp-used-1 = ${memory.used1}
|
||||
;;ramp-used-2 = ${memory.used2}
|
||||
|
||||
; Only applies if <ramp-free> is used
|
||||
;;ramp-free-0 = ${memory.free0}
|
||||
;;ramp-free-1 = ${memory.free1}
|
||||
;;ramp-free-2 = ${memory.free2}
|
||||
|
||||
; If you use both a wired and a wireless network, just add 2 module definitions.
|
||||
[module/wired-network]
|
||||
type = internal/network
|
||||
interface = eth0
|
||||
|
||||
[module/wireless-network]
|
||||
type = internal/network
|
||||
interface = wlp4s0
|
||||
|
||||
; Normal Module
|
||||
[module/network]
|
||||
type = internal/network
|
||||
interface = wlan0
|
||||
|
||||
; Seconds to sleep between updates
|
||||
; Default: 1
|
||||
interval = 1.0
|
||||
|
||||
; Test connectivity every Nth update
|
||||
; A value of 0 disables the feature
|
||||
; NOTE: Experimental (needs more testing)
|
||||
; Default: 0
|
||||
;ping-interval = 3
|
||||
|
||||
; @deprecated: Define min width using token specifiers (%downspeed:min% and %upspeed:min%)
|
||||
; Minimum output width of upload/download rate
|
||||
; Default: 3
|
||||
;;udspeed-minwidth = 5
|
||||
|
||||
; Accumulate values from all interfaces
|
||||
; when querying for up/downspeed rate
|
||||
; Default: false
|
||||
accumulate-stats = false
|
||||
|
||||
; Consider an `UNKNOWN` interface state as up.
|
||||
; Some devices have an unknown state, even when they're running
|
||||
; Default: false
|
||||
unknown-as-up = false
|
||||
|
||||
; Available tags:
|
||||
; <label-connected> (default)
|
||||
; <ramp-signal>
|
||||
format-connected = <label-connected>
|
||||
|
||||
; Available tags:
|
||||
; <label-disconnected> (default)
|
||||
format-disconnected = <label-disconnected>
|
||||
format-disconnected-prefix =
|
||||
format-disconnected-prefix-foreground = ${color.dark-yellow}
|
||||
|
||||
; Available tags:
|
||||
; <label-connected> (default)
|
||||
; <label-packetloss>
|
||||
; <animation-packetloss>
|
||||
;;format-packetloss = <animation-packetloss> <label-connected>
|
||||
|
||||
; Available tokens:
|
||||
; %ifname% [wireless+wired]
|
||||
; %local_ip% [wireless+wired]
|
||||
; %local_ip6% [wireless+wired]
|
||||
; %essid% [wireless]
|
||||
; %signal% [wireless]
|
||||
; %upspeed% [wireless+wired]
|
||||
; %downspeed% [wireless+wired]
|
||||
; %linkspeed% [wired]
|
||||
; Default: %ifname% %local_ip%
|
||||
label-connected = " %signal%% %upspeed% %downspeed%"
|
||||
label-connected-foreground = ${color.magenta}
|
||||
; Available tokens:
|
||||
; %ifname% [wireless+wired]
|
||||
; Default: (none)
|
||||
label-disconnected = "Offline"
|
||||
label-disconnected-foreground = ${color.dark-red}
|
||||
; Available tokens:
|
||||
; %ifname% [wireless+wired]
|
||||
; %local_ip% [wireless+wired]
|
||||
; %local_ip6% [wireless+wired]
|
||||
; %essid% [wireless]
|
||||
; %signal% [wireless]
|
||||
; %upspeed% [wireless+wired]
|
||||
; %downspeed% [wireless+wired]
|
||||
; %linkspeed% [wired]
|
||||
; Default: (none)
|
||||
;label-packetloss = %essid%
|
||||
;label-packetloss-foreground = #eefafafa
|
||||
|
||||
; Only applies if <ramp-signal> is used
|
||||
;ramp-signal-0 =
|
||||
;ramp-signal-1 =
|
||||
;ramp-signal-2 =
|
||||
;ramp-signal-3 =
|
||||
;ramp-signal-foreground = ${color.purple}
|
||||
|
||||
; Only applies if <animation-packetloss> is used
|
||||
;;animation-packetloss-0 = ⚠
|
||||
;;animation-packetloss-0-foreground = #ffa64c
|
||||
;;animation-packetloss-1 = ⚠
|
||||
;;animation-packetloss-1-foreground = #000000
|
||||
; Framerate in milliseconds
|
||||
;;animation-packetloss-framerate = 500
|
||||
|
||||
[module/pulseaudio]
|
||||
type = internal/pulseaudio
|
||||
|
||||
; Sink to be used, if it exists (find using `pacmd list-sinks`, name field)
|
||||
; If not, uses default sink
|
||||
sink = alsa_output.pci-0000_12_00.3.analog-stereo
|
||||
|
||||
; Use PA_VOLUME_UI_MAX (~153%) if true, or PA_VOLUME_NORM (100%) if false
|
||||
; Default: true
|
||||
use-ui-max = true
|
||||
|
||||
; Interval for volume increase/decrease (in percent points)
|
||||
; Default: 5
|
||||
interval = 5
|
||||
|
||||
; Available tags:
|
||||
; <label-volume> (default)
|
||||
; <ramp-volume>
|
||||
; <bar-volume>
|
||||
format-volume = <ramp-volume> <label-volume>
|
||||
|
||||
; Available tags:
|
||||
; <label-muted> (default)
|
||||
; <ramp-volume>
|
||||
; <bar-volume>
|
||||
format-muted = <label-muted>
|
||||
format-muted-prefix =
|
||||
format-muted-prefix-foreground = ${color.red}
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
; %decibels%
|
||||
label-volume = %percentage%%
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
; %decibels%
|
||||
label-muted = " Muted"
|
||||
label-muted-foreground = ${color.sep}
|
||||
|
||||
; Only applies if <ramp-volume> is used
|
||||
ramp-volume-0 =
|
||||
ramp-volume-1 =
|
||||
ramp-volume-2 =
|
||||
ramp-volume-foreground = ${color.dark-blue}
|
||||
|
||||
; Right and Middle click
|
||||
click-right = pavucontrol
|
||||
; click-middle =
|
||||
|
||||
[module/temperature]
|
||||
type = internal/temperature
|
||||
|
||||
; Seconds to sleep between updates
|
||||
; Default: 1
|
||||
interval = 5
|
||||
|
||||
; Thermal zone to use
|
||||
; To list all the zone types, run
|
||||
; $ for i in /sys/class/thermal/thermal_zone*; do echo "$i: $(<$i/type)"; done
|
||||
; Default: 0
|
||||
thermal-zone = 1
|
||||
|
||||
; Full path of temperature sysfs path
|
||||
; Use `sensors` to find preferred temperature source, then run
|
||||
; $ for i in /sys/class/hwmon/hwmon*/temp*_input;
|
||||
; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null ||
|
||||
; echo $(basename ${i%_*})) $(readlink -f $i)"; done
|
||||
; to find path to desired file
|
||||
; Default reverts to thermal zone setting
|
||||
;;hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
|
||||
hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
|
||||
;hwmon-path = /sys/class/hwmon/hwmon1/temp1_input
|
||||
|
||||
; Threshold temperature to display warning label (in degrees celsius)
|
||||
; Default: 80
|
||||
warn-temperature = 84
|
||||
|
||||
; Whether or not to show units next to the temperature tokens (°C, °F)
|
||||
; Default: true
|
||||
units = true
|
||||
|
||||
; Available tags:
|
||||
; <label> (default)
|
||||
; <ramp>
|
||||
format = <ramp> <label>
|
||||
|
||||
; Available tags:
|
||||
; <label-warn> (default)
|
||||
; <ramp>
|
||||
format-warn = <ramp> <label-warn>
|
||||
|
||||
; Available tokens:
|
||||
; %temperature% (deprecated)
|
||||
; %temperature-c% (default, temperature in °C)
|
||||
; %temperature-f% (temperature in °F)
|
||||
label = %temperature-c%
|
||||
|
||||
; Available tokens:
|
||||
; %temperature% (deprecated)
|
||||
; %temperature-c% (default, temperature in °C)
|
||||
; %temperature-f% (temperature in °F)
|
||||
label-warn = "%temperature-c%"
|
||||
label-warn-foreground = ${color.red}
|
||||
|
||||
; Requires the <ramp> tag
|
||||
; The icon selection will range from 0 to `warn-temperature`
|
||||
; with the current temperature as index.
|
||||
ramp-0 =
|
||||
ramp-1 =
|
||||
ramp-2 =
|
||||
ramp-3 =
|
||||
ramp-4 =
|
||||
ramp-foreground = ${color.cyan}
|
||||
|
||||
[module/keyboard]
|
||||
type = internal/xkeyboard
|
||||
|
||||
; List of indicators to ignore
|
||||
blacklist-0 = num lock
|
||||
blacklist-1 = scroll lock
|
||||
|
||||
; Available tags:
|
||||
; <label-layout> (default)
|
||||
; <label-indicator> (default)
|
||||
format = <label-layout> <label-indicator>
|
||||
format-prefix =
|
||||
format-prefix-foreground = ${color.magenta}
|
||||
|
||||
; Available tokens:
|
||||
; %layout%
|
||||
; %name%
|
||||
; %number%
|
||||
; Default: %layout%
|
||||
label-layout = " %layout%"
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; Default: %name%
|
||||
label-indicator-on = "%name%"
|
||||
label-indicator-on-foreground = ${color.white}
|
||||
label-indicator-on-background = ${color.dark-red}
|
||||
|
||||
[module/title]
|
||||
type = internal/xwindow
|
||||
|
||||
; Available tags:
|
||||
; <label> (default)
|
||||
format = <label>
|
||||
format-prefix =
|
||||
format-foreground = ${color.foreground}
|
||||
|
||||
; Available tokens:
|
||||
; %title%
|
||||
; Default: %title%
|
||||
label = " %title%"
|
||||
label-maxlen = 30
|
||||
|
||||
; Used instead of label when there is no window title
|
||||
label-empty = " Desktop"
|
||||
|
||||
[module/workspaces]
|
||||
type = internal/xworkspaces
|
||||
|
||||
; Only show workspaces defined on the same output as the bar
|
||||
;
|
||||
; Useful if you want to show monitor specific workspaces
|
||||
; on different bars
|
||||
;
|
||||
; Default: false
|
||||
pin-workspaces = true
|
||||
|
||||
; Create click handler used to focus desktop
|
||||
; Default: true
|
||||
enable-click = true
|
||||
|
||||
; Create scroll handlers used to cycle desktops
|
||||
; Default: true
|
||||
enable-scroll = true
|
||||
|
||||
; icon-[0-9]+ = <desktop-name>;<icon>
|
||||
; NOTE: The desktop name needs to match the name configured by the WM
|
||||
; You can get a list of the defined desktops using:
|
||||
; $ xprop -root _NET_DESKTOP_NAMES
|
||||
icon-0 = 1;
|
||||
icon-1 = 2;
|
||||
icon-2 = 3;
|
||||
icon-3 = 4;
|
||||
icon-4 = 5;
|
||||
icon-5 = 6;
|
||||
icon-6 = 7;
|
||||
icon-7 = 8;
|
||||
;
|
||||
icon-8 = 9;
|
||||
icon-9 = 10;
|
||||
icon-default =
|
||||
|
||||
; Available tags:
|
||||
; <label-monitor>
|
||||
; <label-state> - gets replaced with <label-(active|urgent|occupied|empty)>
|
||||
; Default: <label-state>
|
||||
format = <label-state>
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; Default: %name%
|
||||
label-monitor = %name%
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default: %icon% %name%
|
||||
label-active = %icon%
|
||||
label-active-foreground = ${color.red}
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default: %icon% %name%
|
||||
label-occupied = %icon%
|
||||
label-occupied-foreground = ${color.cyan}
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default: %icon% %name%
|
||||
label-urgent = %icon%
|
||||
label-urgent-foreground = ${color.dark-red}
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default: %icon% %name%
|
||||
label-empty = %icon%
|
||||
label-empty-foreground = ${color.foreground}
|
||||
|
||||
label-active-padding = 1
|
||||
label-urgent-padding = 1
|
||||
label-occupied-padding = 1
|
||||
label-empty-padding = 1
|
286
dot_config/river/executable_init.tmpl
Normal file
286
dot_config/river/executable_init.tmpl
Normal file
|
@ -0,0 +1,286 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Do some logging
|
||||
#exec 3>&1 4>&2
|
||||
#trap 'exec 2>&4 1>&3' 0 1 2 3
|
||||
#exec 1>"${XDG_STATE_HOME}"/river.log 2>&1
|
||||
|
||||
# Start kitty
|
||||
riverctl map normal Super Return spawn kitty
|
||||
|
||||
# Start fuzzel
|
||||
riverctl map normal Super Space spawn fuzzel
|
||||
|
||||
# Lock screen
|
||||
riverctl map normal Control+Alt L spawn 'waylock-launcher'
|
||||
|
||||
# Logout
|
||||
riverctl map normal Super End spawn 'wleave -p layer-shell'
|
||||
riverctl map locked Super+Alt+Control End spawn 'loginctl kill-session $XDG_SESSION_ID'
|
||||
|
||||
# Screenshot entire display to clipboard
|
||||
riverctl map normal Control Print spawn 'grim -t png - | wl-copy -t image/png'
|
||||
|
||||
# Screenshot entire display and save to file
|
||||
riverctl map normal Super+Control Print spawn 'grim -t png ~/Pictures/screenshot-$(date +%Y-%m-%d_%T).png'
|
||||
|
||||
# Screenshot selection to clipboard
|
||||
riverctl map normal Alt Print spawn 'grim -t png -g "$(slurp -d)" - | wl-copy -t image/png'
|
||||
|
||||
# Screenshot selection and save to file
|
||||
riverctl map normal Super+Alt Print spawn 'grim -t png -g "$(slurp -d)" ~/Pictures/screenshot-$(date +%Y-%m-%d_%T).png'
|
||||
|
||||
# Close the focused view
|
||||
riverctl map normal Super Q close
|
||||
|
||||
# Exit river
|
||||
riverctl map normal Super+Shift E exit
|
||||
|
||||
# Emacs-like keybinds for layouts/views
|
||||
|
||||
# Focus the next/previous view in the layout stack
|
||||
riverctl map normal Super N focus-view next
|
||||
riverctl map normal Super P focus-view previous
|
||||
|
||||
# Swap the focused view with the next/previous view in the layout stack
|
||||
riverctl map normal Super+Alt N swap next
|
||||
riverctl map normal Super+Alt P swap previous
|
||||
|
||||
# Focus the next/previous output
|
||||
riverctl map normal Super V focus-output next
|
||||
riverctl map normal Super+Alt V focus-output previous
|
||||
|
||||
# Send the focused view to the next/previous output
|
||||
riverctl map normal Super+Shift Grave send-to-output next
|
||||
riverctl map normal Super Grave send-to-output previous
|
||||
|
||||
# Bump the focused view to the top of the layout stack
|
||||
riverctl map normal Super+Shift Return zoom
|
||||
|
||||
# Increase/decrease the main ratio of rivertile(1)
|
||||
riverctl map normal Super B send-layout-cmd rivertile "main-ratio -0.05"
|
||||
riverctl map normal Super F send-layout-cmd rivertile "main-ratio +0.05"
|
||||
|
||||
# Increment/decrement the main count of rivertile(1)
|
||||
riverctl map normal Super+Alt F send-layout-cmd rivertile "main-count +1"
|
||||
riverctl map normal Super+Alt B send-layout-cmd rivertile "main-count -1"
|
||||
|
||||
# Snap views to screen edges
|
||||
riverctl map normal Super+Alt+Control B snap left
|
||||
riverctl map normal Super+Alt+Control F snap right
|
||||
riverctl map normal Super+Alt+Control P snap up
|
||||
riverctl map normal Super+Alt+Control N snap down
|
||||
|
||||
# Resize views
|
||||
riverctl map normal Super+Alt+Shift B resize horizontal -100
|
||||
riverctl map normal Super+Alt+Shift F resize horizontal 100
|
||||
riverctl map normal Super+Alt+Shift P resize vertical -100
|
||||
riverctl map normal Super+Alt+Shift N resize vertical 100
|
||||
|
||||
# Move views
|
||||
riverctl map normal Super+Alt+Control+Shift B move left 100
|
||||
riverctl map normal Super+Alt+Control+Shift F move right 100
|
||||
riverctl map normal Super+Alt+Control+Shift P move up 100
|
||||
riverctl map normal Super+Alt+Control+Shift N move down 100
|
||||
|
||||
# Change layout
|
||||
riverctl map normal Super+Shift B send-layout-cmd rivertile "main-location left"
|
||||
riverctl map normal Super+Shift F send-layout-cmd rivertile "main-location right"
|
||||
riverctl map normal Super+Shift P send-layout-cmd rivertile "main-location top"
|
||||
riverctl map normal Super+Shift N send-layout-cmd rivertile "main-location bottom"
|
||||
|
||||
# Vim-like keybinds for layouts/views
|
||||
|
||||
# Focus the next/previous view in the layout stack
|
||||
riverctl map normal Super J focus-view next
|
||||
riverctl map normal Super K focus-view previous
|
||||
|
||||
# Swap the focused view with the next/previous view in the layout stack
|
||||
riverctl map normal Super+Alt J swap next
|
||||
riverctl map normal Super+Alt K swap previous
|
||||
|
||||
# Focus the next/previous output
|
||||
riverctl map normal Super Period focus-output next
|
||||
riverctl map normal Super Comma focus-output previous
|
||||
|
||||
# Send the focused view to the next/previous output
|
||||
riverctl map normal Super+Shift Period send-to-output next
|
||||
riverctl map normal Super+Shift Comma send-to-output previous
|
||||
|
||||
# Increase/decrease the main ratio of rivertile(1)
|
||||
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
|
||||
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
|
||||
|
||||
# Increment/decrement the main count of rivertile(1)
|
||||
riverctl map normal Super+Alt L send-layout-cmd rivertile "main-count +1"
|
||||
riverctl map normal Super+Alt H send-layout-cmd rivertile "main-count -1"
|
||||
|
||||
# Snap views to screen edges
|
||||
riverctl map normal Super+Alt+Control H snap left
|
||||
riverctl map normal Super+Alt+Control L snap right
|
||||
riverctl map normal Super+Alt+Control K snap up
|
||||
riverctl map normal Super+Alt+Control J snap down
|
||||
|
||||
# Resize views
|
||||
riverctl map normal Super+Alt+Shift H resize horizontal -100
|
||||
riverctl map normal Super+Alt+Shift J resize horizontal 100
|
||||
riverctl map normal Super+Alt+Shift K resize vertical -100
|
||||
riverctl map normal Super+Alt+Shift L resize vertical 100
|
||||
|
||||
# Move views
|
||||
riverctl map normal Super+Alt+Control+Shift H move left 100
|
||||
riverctl map normal Super+Alt+Control+Shift L move right 100
|
||||
riverctl map normal Super+Alt+Control+Shift K move up 100
|
||||
riverctl map normal Super+Alt+Control+Shift J move down 100
|
||||
|
||||
# Change layout
|
||||
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-location left"
|
||||
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-location right"
|
||||
riverctl map normal Super+Shift K send-layout-cmd rivertile "main-location top"
|
||||
riverctl map normal Super+Shift J send-layout-cmd rivertile "main-location bottom"
|
||||
|
||||
# Move views with mouse
|
||||
riverctl map-pointer normal Super BTN_LEFT move-view
|
||||
|
||||
# Resize views with mouse
|
||||
riverctl map-pointer normal Super BTN_RIGHT resize-view
|
||||
|
||||
# Toggle float with mouse
|
||||
riverctl map-pointer normal Super BTN_MIDDLE toggle-float
|
||||
|
||||
for i in $(seq 1 9)
|
||||
do
|
||||
tags=$((1 << (i - 1)))
|
||||
|
||||
# Super+[1-9] to focus tag [0-8]
|
||||
riverctl map normal Super "$i" set-focused-tags $tags
|
||||
|
||||
# Super+Shift+[1-9] to tag focused view with tag [0-8]
|
||||
riverctl map normal Super+Shift "$i" set-view-tags $tags
|
||||
|
||||
# Super+Control+[1-9] to toggle focus of tag [0-8]
|
||||
riverctl map normal Super+Control "$i" toggle-focused-tags $tags
|
||||
|
||||
# Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
|
||||
riverctl map normal Super+Shift+Control "$i" toggle-view-tags $tags
|
||||
done
|
||||
|
||||
# Super+0 to focus all tags
|
||||
# Super+Shift+0 to tag focused view with all tags
|
||||
all_tags=$(((1 << 32) - 1))
|
||||
riverctl map normal Super 0 set-focused-tags $all_tags
|
||||
riverctl map normal Super+Shift 0 set-view-tags $all_tags
|
||||
|
||||
# Toggle float
|
||||
riverctl map normal Super S toggle-float
|
||||
|
||||
# Toggle fullscreen
|
||||
riverctl map normal Super T toggle-fullscreen
|
||||
|
||||
# Declare a passthrough mode. This mode has only a single mapping to return to
|
||||
# normal mode. This makes it useful for testing a nested wayland compositor
|
||||
riverctl declare-mode passthrough
|
||||
|
||||
# Enter passthrough mode
|
||||
riverctl map normal Super F11 enter-mode passthrough
|
||||
|
||||
# Return to normal mode
|
||||
riverctl map passthrough Super F11 enter-mode normal
|
||||
|
||||
# Function/Media keys
|
||||
for mode in normal locked
|
||||
do
|
||||
|
||||
# Volume
|
||||
riverctl map "$mode" None XF86AudioMute spawn 'pactl set-sink-mute @DEFAULT_SINK@ toggle'
|
||||
riverctl map "$mode" None XF86AudioLowerVolume spawn 'pactl set-sink-volume @DEFAULT_SINK@ -2%'
|
||||
riverctl map "$mode" None XF86AudioRaiseVolume spawn 'pactl set-sink-volume @DEFAULT_SINK@ +2%'
|
||||
riverctl map "$mode" None XF86AudioMicMute spawn 'pactl set-source-mute @DEFAULT_SOURCE@ toggle'
|
||||
|
||||
# Media
|
||||
riverctl map "$mode" None XF86AudioPrev spawn ''
|
||||
riverctl map "$mode" None XF86AudioPlay spawn ''
|
||||
riverctl map "$mode" None XF86AudioNext spawn ''
|
||||
|
||||
# Backlight
|
||||
riverctl map $mode None XF86MonBrightnessDown spawn 'xbacklight -dec 5'
|
||||
riverctl map $mode None XF86MonBrightnessUp spawn 'xbacklight -inc 5'
|
||||
|
||||
# Display
|
||||
#riverctl map $mode None XF86Display spawn ''
|
||||
|
||||
# WiFi
|
||||
riverctl map $mode None XF86WLAN spawn 'toggle-wifi'
|
||||
|
||||
# Notifications
|
||||
#riverctl map $mode None XF86NotificationCenter spawn ''
|
||||
|
||||
# Phone
|
||||
#riverctl map $mode None XF86PickupPhone spawn ''
|
||||
#riverctl map $mode None XF86HangupPhone spawn ''
|
||||
|
||||
# Favorites
|
||||
#riverctl map $mode None XF86Favorites spawn ''
|
||||
|
||||
done
|
||||
|
||||
# Set background and border
|
||||
riverctl background-color 0x323d43
|
||||
riverctl border-color-focused 0xd8caac
|
||||
riverctl border-color-unfocused 0x525c62
|
||||
riverctl border-color-urgent 0xe68183
|
||||
riverctl border-width 1
|
||||
|
||||
# Keyboard repeat rate
|
||||
riverctl set-repeat 50 300
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
|
||||
# Touchpad
|
||||
riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad accel-profile adaptive
|
||||
riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad pointer-accel .5
|
||||
riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad drag enabled
|
||||
riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad disable-while-typing enabled
|
||||
riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad middle-emulation enabled
|
||||
riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad tap enabled
|
||||
riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad tap-button-map left-right-middle
|
||||
riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad scroll-method two-finger
|
||||
|
||||
# Lid switch
|
||||
riverctl map-switch normal lid close 'waylock-launcher'
|
||||
{{- end }}
|
||||
{{- if eq .chezmoi.hostname "hydrus" }}
|
||||
|
||||
# Focus on 1st display at login
|
||||
riverctl focus-output DP-1
|
||||
{{- end }}
|
||||
|
||||
# Start floating
|
||||
riverctl rule-add -app-id 'Bitwarden' float
|
||||
riverctl rule-add -app-id 'Blueman-manager' float
|
||||
riverctl rule-add -app-id 'connman-gtk' float
|
||||
riverctl rule-add -app-id 'galculator' float
|
||||
riverctl rule-add -app-id 'org.keepassxc.KeePassXC' float
|
||||
riverctl rule-add -app-id 'mousepad' float
|
||||
riverctl rule-add -app-id 'com.nextcloud.dextopclient.Nextcloud' float
|
||||
riverctl rule-add -app-id 'vlc' float
|
||||
|
||||
# Layout generator
|
||||
riverctl default-layout rivertile
|
||||
rivertile -view-padding 4 -outer-padding 4 -main-ratio .55 &
|
||||
|
||||
# Autostart
|
||||
dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river &
|
||||
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
|
||||
kanshi &
|
||||
pipewire-launcher &
|
||||
swayidle-launcher &
|
||||
yambar-launcher &
|
||||
dunst &
|
||||
gammastep -r &
|
||||
{{- if eq .chezmoi.hostname "hydrus" }}
|
||||
river-tag-overlay &
|
||||
swaybg -m fill -i "${HOME}/Pictures/Wallpapers/dark-forest-path.jpg" &
|
||||
{{- else if eq .chezmoi.hostname "helix" }}
|
||||
swaybg -m center -i "${HOME}/Pictures/Wallpapers/Mountain Retreat.jpg" &
|
||||
{{- end }}
|
||||
nextcloud --background &
|
|
@ -1,185 +0,0 @@
|
|||
/* ==========================================================================
|
||||
Everforest dark theme for rofi
|
||||
|
||||
Based on the Everforest color scheme for Vim by sainnhe
|
||||
https://github.com/sainnhe/everforest/
|
||||
========================================================================== */
|
||||
|
||||
* {
|
||||
/* Theme settings */
|
||||
highlight: bold italic;
|
||||
scrollbar: true;
|
||||
|
||||
/* Everforest colors */
|
||||
|
||||
everforest-bg0: #323d43;
|
||||
everforest-bg1: #525c6d;
|
||||
everforest-fg: #d8cacc;
|
||||
everforest-black: #4a555b;
|
||||
everforest-dark-grey: #525c62;
|
||||
everforest-dark-red: #e26c6e;
|
||||
everforest-red: #e68183;
|
||||
everforest-dark-yellow: #d5b26b;
|
||||
everforest-yellow: #dbbc7f;
|
||||
everforest-dark-blue: #6eb2a9;
|
||||
everforest-blue: #7fbbb3;
|
||||
everforest-dark-magenta: #cf87a9;
|
||||
everforest-magenta: #d699b6;
|
||||
everforest-dark-cyan: #72b783;
|
||||
everforest-cyan: #83c092;
|
||||
everforest-light-grey: #d8caac;
|
||||
everforest-white: #d8caac;
|
||||
|
||||
/* Theme colors */
|
||||
background: @everforest-bg0;
|
||||
background-color: @background;
|
||||
foreground: @everforest-fg;
|
||||
border-color: @everforest-dark-yellow;
|
||||
separatorcolor: @border-color;
|
||||
scrollbar-handle: @border-color;
|
||||
|
||||
normal-background: @background;
|
||||
normal-foreground: @foreground;
|
||||
alternate-normal-background: @everforest-bg1;
|
||||
alternate-normal-foreground: @foreground;
|
||||
selected-normal-background: @everforest-dark-cyan;
|
||||
selected-normal-foreground: @everforest-black;
|
||||
|
||||
active-background: @everforest-yellow;
|
||||
active-foreground: @background;
|
||||
alternate-active-background: @active-background;
|
||||
alternate-active-foreground: @active-foreground;
|
||||
selected-active-background: @everforest-cyan;
|
||||
selected-active-foreground: @active-foreground;
|
||||
|
||||
urgent-background: @everforest-dark-red;
|
||||
urgent-foreground: @background;
|
||||
alternate-urgent-background: @urgent-background;
|
||||
alternate-urgent-foreground: @urgent-foreground;
|
||||
selected-urgent-background: @everforest-red;
|
||||
selected-urgent-foreground: @urgent-foreground;
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: @background;
|
||||
border: 2;
|
||||
padding: 2;
|
||||
}
|
||||
|
||||
mainbox {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
message {
|
||||
border: 2px 0 0;
|
||||
border-color: @separatorcolor;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
textbox {
|
||||
highlight: @highlight;
|
||||
text-color: @foreground;
|
||||
}
|
||||
|
||||
listview {
|
||||
border: 2px solid 0 0;
|
||||
padding: 2px 0 0;
|
||||
border-color: @separatorcolor;
|
||||
spacing: 2px;
|
||||
scrollbar: @scrollbar;
|
||||
}
|
||||
|
||||
element {
|
||||
border: 0;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
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: @scrollbar-handle;
|
||||
handle-width: 8px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
mode-switcher {
|
||||
border: 2px 0 0;
|
||||
border-color: @separatorcolor;
|
||||
}
|
||||
|
||||
inputbar {
|
||||
spacing: 0;
|
||||
text-color: @normal-foreground;
|
||||
padding: 2px;
|
||||
children: [ prompt, textbox-prompt-sep, entry, case-indicator ];
|
||||
}
|
||||
|
||||
case-indicator,
|
||||
entry,
|
||||
prompt,
|
||||
button {
|
||||
spacing: 0;
|
||||
text-color: @normal-foreground;
|
||||
}
|
||||
|
||||
button.selected {
|
||||
background-color: @selected-normal-background;
|
||||
text-color: @selected-normal-foreground;
|
||||
}
|
||||
|
||||
textbox-prompt-sep {
|
||||
expand: false;
|
||||
str: ":";
|
||||
text-color: @normal-foreground;
|
||||
margin: 0 0.3em 0 0;
|
||||
}
|
||||
element-text, element-icon {
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
|
@ -1,188 +0,0 @@
|
|||
#
|
||||
# wm independent hotkeys
|
||||
#
|
||||
|
||||
# terminal emulator
|
||||
super + Return
|
||||
kitty
|
||||
{{ if eq .chezmoi.hostname "helix"}}
|
||||
# power menu
|
||||
super + @End
|
||||
rofi -eh 2 -dpi 240 -show power-menu -modi power-menu:rofi-power-menu
|
||||
|
||||
# program launcher
|
||||
super + @space
|
||||
rofi -dpi 240 -modi drun, run -show drun -show-icons
|
||||
{{ else }}
|
||||
# power menu
|
||||
super + @End
|
||||
rofi -show power-menu -modi power-menu:/usr/bin/rofi-power-menu
|
||||
|
||||
# program launcher
|
||||
super + @space
|
||||
rofi -modi drun, run -show drun -show-icons
|
||||
{{ end }}
|
||||
# make sxhkd reload its configuration files:
|
||||
super + Escape
|
||||
pkill -USR1 -x sxhkd
|
||||
|
||||
# Show list of open windows
|
||||
alt + @Tab
|
||||
rofi -show window
|
||||
|
||||
# Lock the screen
|
||||
ctrl + alt + l
|
||||
xset s activate
|
||||
|
||||
# Screenshot
|
||||
Print
|
||||
maim | xclip -selection clipboard -t image/png
|
||||
|
||||
alt + Print
|
||||
maim -s | xclip -selection clipboard -t image/png
|
||||
|
||||
shift + Print
|
||||
maim -i $(xdotool getactivewindow) | xclip -selection clipboard -t image/png
|
||||
|
||||
# bspwm hotkeys
|
||||
#
|
||||
|
||||
# quit/restart bspwm
|
||||
super + alt + {q,r}
|
||||
bspc {quit,wm -r}
|
||||
|
||||
# close and kill
|
||||
super + {_,shift + }q
|
||||
bspc node -{c,k}
|
||||
|
||||
# alternate between the tiled and monocle layout
|
||||
super + m
|
||||
bspc desktop -l next
|
||||
|
||||
# send the newest marked node to the newest preselected node
|
||||
super + y
|
||||
bspc node newest.marked.local -n newest.!automatic.local
|
||||
|
||||
# swap the current node and the biggest window
|
||||
super + g
|
||||
bspc node -s biggest.window
|
||||
|
||||
#
|
||||
# state/flags
|
||||
#
|
||||
|
||||
# set the window state
|
||||
super + {t,shift + t,s,f}
|
||||
bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
|
||||
|
||||
# set the node flags
|
||||
super + ctrl + {m,x,y,z}
|
||||
bspc node -g {marked,locked,sticky,private}
|
||||
|
||||
#
|
||||
# focus/swap
|
||||
#
|
||||
|
||||
# focus the node in the given direction
|
||||
super + {_,shift + }{h,j,k,l}
|
||||
bspc node -{f,s} {west,south,north,east}
|
||||
|
||||
# focus the node for the given path jump
|
||||
super + {p,b,comma,period}
|
||||
bspc node -f @{parent,brother,first,second}
|
||||
|
||||
# focus the next/previous window in the current desktop
|
||||
super + {_,shift + }c
|
||||
bspc node -f {next,prev}.local.!hidden.window
|
||||
|
||||
# focus the next/previous desktop in the current monitor
|
||||
super + bracket{left,right}
|
||||
bspc desktop -f {prev,next}.local
|
||||
|
||||
# focus the last node/desktop
|
||||
super + {grave,Tab}
|
||||
bspc {node,desktop} -f last
|
||||
|
||||
# focus the older or newer node in the focus history
|
||||
super + {o,i}
|
||||
bspc wm -h off; \
|
||||
bspc node {older,newer} -f; \
|
||||
bspc wm -h on
|
||||
|
||||
# focus or send to the given desktop
|
||||
super + {_,shift + }{1-9,0}
|
||||
bspc {desktop -f,node -d} '^{1-9,10}'
|
||||
|
||||
#
|
||||
# preselect
|
||||
#
|
||||
|
||||
# preselect the direction
|
||||
super + ctrl + {h,j,k,l}
|
||||
bspc node -p {west,south,north,east}
|
||||
|
||||
# preselect the ratio
|
||||
super + ctrl + {1-9}
|
||||
bspc node -o 0.{1-9}
|
||||
|
||||
# cancel the preselection for the focused node
|
||||
super + ctrl + space
|
||||
bspc node -p cancel
|
||||
|
||||
# cancel the preselection for the focused desktop
|
||||
super + ctrl + shift + space
|
||||
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
|
||||
|
||||
#
|
||||
# move/resize
|
||||
#
|
||||
|
||||
# expand a window by moving one of its side outward
|
||||
super + alt + {h,j,k,l}
|
||||
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
|
||||
|
||||
# contract a window by moving one of its side inward
|
||||
super + alt + shift + {h,j,k,l}
|
||||
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
|
||||
|
||||
# move a floating window
|
||||
super + {Left,Down,Up,Right}
|
||||
bspc node -v {-20 0,0 20,0 -20,20 0}
|
||||
|
||||
### Function Keys
|
||||
|
||||
XF86AudioMute
|
||||
pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||
|
||||
XF86AudioLowerVolume
|
||||
pactl set-sink-volume @DEFAULT_SINK@ -5%
|
||||
|
||||
XF86AudioRaiseVolume
|
||||
pactl set-sink-volume @DEFAULT_SINK@ +5%
|
||||
|
||||
XF86AudioMicMute
|
||||
pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
||||
|
||||
XF86MonBrightnessDown
|
||||
xbacklight -dec 2
|
||||
|
||||
XF86MonBrightnessUp
|
||||
xbacklight -inc 2
|
||||
|
||||
XF86Display
|
||||
mirror-outputs
|
||||
|
||||
XF86WLAN
|
||||
toggle-wifi
|
||||
|
||||
XF86Tools
|
||||
lxappearance
|
||||
|
||||
XF86Search
|
||||
pamac-manager
|
||||
|
||||
XF86LaunchA
|
||||
rofi -show window
|
||||
|
||||
XF86Explorer
|
||||
thunar
|
|
@ -1,304 +0,0 @@
|
|||
#---- Generated by tint2conf aeaf ----
|
||||
# See https://gitlab.com/o9000/tint2/wikis/Configure for
|
||||
# full documentation of the configuration options.
|
||||
|
||||
#-------------------------------------
|
||||
# Gradients
|
||||
|
||||
# Gradient 1: thin film effect
|
||||
gradient = horizontal
|
||||
start_color = #111122 30
|
||||
end_color = #112211 30
|
||||
color_stop = 60 #221111 30
|
||||
|
||||
# Gradient 2: radial glow
|
||||
gradient = radial
|
||||
start_color = #ffffff 20
|
||||
end_color = #ffffff 0
|
||||
|
||||
#-------------------------------------
|
||||
# Backgrounds
|
||||
|
||||
# Background 1: Panel
|
||||
rounded = 8
|
||||
border_width = 0
|
||||
border_sides = TBLR
|
||||
background_color = #323d43 90
|
||||
border_color = #323d43 30
|
||||
background_color_hover = #323d43 70
|
||||
border_color_hover = #323d43 30
|
||||
background_color_pressed = #323d43 100
|
||||
border_color_pressed = #323d43 30
|
||||
|
||||
# Background 2: Default task, Iconified task
|
||||
rounded = 4
|
||||
border_width = 1
|
||||
border_sides = TBLR
|
||||
background_color = #4a555b 20
|
||||
border_color = #525c62 30
|
||||
background_color_hover = #aaaaaa 22
|
||||
border_color_hover = #eaeaea 44
|
||||
background_color_pressed = #555555 4
|
||||
border_color_pressed = #eaeaea 44
|
||||
|
||||
# Background 3: Active task
|
||||
rounded = 4
|
||||
border_width = 1
|
||||
border_sides = TBLR
|
||||
background_color = #7fbbb3 40
|
||||
border_color = #d8caac 40
|
||||
background_color_hover = #aaaaaa 22
|
||||
border_color_hover = #eaeaea 44
|
||||
background_color_pressed = #555555 4
|
||||
border_color_pressed = #eaeaea 44
|
||||
|
||||
# Background 4: Urgent task
|
||||
rounded = 4
|
||||
border_width = 1
|
||||
border_sides = TBLR
|
||||
background_color = #e26c6e 100
|
||||
border_color = #d5b26b 100
|
||||
background_color_hover = #dbbc7f 100
|
||||
border_color_hover = #d5b26b 100
|
||||
background_color_pressed = #555555 4
|
||||
border_color_pressed = #d5b26b 100
|
||||
|
||||
# Background 5: Tooltip
|
||||
rounded = 1
|
||||
border_width = 1
|
||||
border_sides = TBLR
|
||||
background_color = #9bb86f 100
|
||||
border_color = #4a555b 100
|
||||
background_color_hover = #ffffaa 100
|
||||
border_color_hover = #000000 100
|
||||
background_color_pressed = #ffffaa 100
|
||||
border_color_pressed = #000000 100
|
||||
|
||||
#-------------------------------------
|
||||
# Panel
|
||||
panel_items = TE:B:SCP
|
||||
panel_size = 99% 48
|
||||
scale_relative_to_dpi = 216
|
||||
panel_margin = 0 8
|
||||
panel_padding = 2 0 2
|
||||
panel_background_id = 1
|
||||
wm_menu = 1
|
||||
panel_dock = 0
|
||||
panel_position = top center horizontal
|
||||
panel_layer = bottom
|
||||
panel_monitor = all
|
||||
panel_shrink = 0
|
||||
autohide = 0
|
||||
autohide_show_timeout = 0
|
||||
autohide_hide_timeout = 0.5
|
||||
autohide_height = 2
|
||||
strut_policy = follow_size
|
||||
panel_window_name = tint2
|
||||
disable_transparency = 0
|
||||
mouse_effects = 1
|
||||
font_shadow = 0
|
||||
mouse_hover_icon_asb = 100 0 10
|
||||
mouse_pressed_icon_asb = 100 0 0
|
||||
|
||||
#-------------------------------------
|
||||
# Taskbar
|
||||
taskbar_mode = multi_desktop
|
||||
taskbar_hide_if_empty = 1
|
||||
taskbar_padding = 0 0 2
|
||||
taskbar_background_id = 0
|
||||
taskbar_active_background_id = 0
|
||||
taskbar_name = 1
|
||||
taskbar_hide_inactive_tasks = 0
|
||||
taskbar_hide_different_monitor = 0
|
||||
taskbar_hide_different_desktop = 0
|
||||
taskbar_always_show_all_desktop_tasks = 0
|
||||
taskbar_name_padding = 4 2
|
||||
taskbar_name_background_id = 0
|
||||
taskbar_name_active_background_id = 0
|
||||
taskbar_name_font = Hack 18
|
||||
taskbar_name_font_color = #d8caac 100
|
||||
taskbar_name_active_font_color = #d0bf9b 100
|
||||
taskbar_distribute_size = 0
|
||||
taskbar_sort_order = none
|
||||
task_align = left
|
||||
|
||||
#-------------------------------------
|
||||
# Task
|
||||
task_text = 1
|
||||
task_icon = 1
|
||||
task_centered = 1
|
||||
urgent_nb_of_blink = 100000
|
||||
task_maximum_size = 150 35
|
||||
task_padding = 2 4 2
|
||||
task_tooltip = 1
|
||||
task_thumbnail = 0
|
||||
task_thumbnail_size = 210
|
||||
task_font = Hack 10
|
||||
task_font_color = #d8caac 100
|
||||
task_background_id = 2
|
||||
task_active_background_id = 3
|
||||
task_urgent_background_id = 4
|
||||
task_iconified_background_id = 2
|
||||
mouse_left = toggle
|
||||
mouse_middle = none
|
||||
mouse_right = close
|
||||
mouse_scroll_up = prev_task
|
||||
mouse_scroll_down = next_task
|
||||
|
||||
#-------------------------------------
|
||||
# System tray (notification area)
|
||||
systray_padding = 2 4 4
|
||||
systray_background_id = 0
|
||||
systray_sort = ascending
|
||||
systray_icon_size = 28
|
||||
systray_icon_asb = 100 0 0
|
||||
systray_monitor = 1
|
||||
systray_name_filter =
|
||||
|
||||
#-------------------------------------
|
||||
# Launcher
|
||||
launcher_padding = 2 4 2
|
||||
launcher_background_id = 0
|
||||
launcher_icon_background_id = 0
|
||||
launcher_icon_size = 24
|
||||
launcher_icon_asb = 100 0 0
|
||||
launcher_icon_theme_override = 0
|
||||
startup_notifications = 1
|
||||
launcher_tooltip = 1
|
||||
launcher_item_app = tint2conf.desktop
|
||||
launcher_item_app = firefox.desktop
|
||||
launcher_item_app = iceweasel.desktop
|
||||
launcher_item_app = chromium-browser.desktop
|
||||
launcher_item_app = google-chrome.desktop
|
||||
|
||||
#-------------------------------------
|
||||
# Clock
|
||||
time1_format = %H:%M
|
||||
time2_format = %a %d %b
|
||||
time1_font = Hack 14
|
||||
time2_font = Hack 10
|
||||
time1_timezone =
|
||||
time2_timezone =
|
||||
clock_font_color = #d8caac 100
|
||||
clock_padding = 6 0
|
||||
clock_background_id = 0
|
||||
clock_tooltip = %H:%M %A %d %B %Y
|
||||
clock_tooltip_timezone =
|
||||
clock_lclick_command = gsimplecal
|
||||
clock_rclick_command =
|
||||
clock_mclick_command =
|
||||
clock_uwheel_command =
|
||||
clock_dwheel_command =
|
||||
|
||||
#-------------------------------------
|
||||
# Battery
|
||||
battery_tooltip = 1
|
||||
battery_low_status = 10
|
||||
battery_low_cmd = notify-send "Low battery: 10%"
|
||||
battery_full_cmd = notify-send "Battery done charging"
|
||||
bat1_font = Hack 14
|
||||
battery_font_color = #d8caac 100
|
||||
bat1_format = | BAT: %s %p %t
|
||||
bat2_format =
|
||||
battery_padding = 1 0
|
||||
battery_background_id = 0
|
||||
battery_hide = 101
|
||||
battery_lclick_command =
|
||||
battery_rclick_command =
|
||||
battery_mclick_command =
|
||||
battery_uwheel_command =
|
||||
battery_dwheel_command =
|
||||
ac_connected_cmd = notify-send "AC Power connected"
|
||||
ac_disconnected_cmd = "AC Power disconnected"
|
||||
|
||||
#-------------------------------------
|
||||
# Tooltip
|
||||
tooltip_show_timeout = 0.5
|
||||
tooltip_hide_timeout = 0.1
|
||||
tooltip_padding = 4 4
|
||||
tooltip_background_id = 5
|
||||
tooltip_font_color = #4a555b 100
|
||||
tooltip_font = Hack 14
|
||||
|
||||
#-------------------------------------
|
||||
# Separators
|
||||
|
||||
# Separator1
|
||||
separator = new
|
||||
separator_background_id = 0
|
||||
separator_color = #7fbbb3
|
||||
separator_style = empty
|
||||
separator_size = 4
|
||||
separator_padding = 0 0
|
||||
|
||||
# Separator2
|
||||
separator = new
|
||||
separator_background_id = 0
|
||||
separator_color = #7fbbb3
|
||||
separator_style = dots
|
||||
separator_size = 4
|
||||
separator_padding = 12 0
|
||||
|
||||
# Separator3
|
||||
separator = new
|
||||
separator_background_id = 0
|
||||
separator_color = #7fbbb3 80
|
||||
separator_style = line
|
||||
separator_size = 2
|
||||
separator_padding = 12 0
|
||||
|
||||
# Separator4
|
||||
separator = new
|
||||
separator_background_id = 0
|
||||
separator_color = #7fbbb3
|
||||
separator_style = empty
|
||||
separator_size = 6
|
||||
separator_padding = 12 0
|
||||
|
||||
#-------------------------------------
|
||||
# Executors
|
||||
|
||||
# Exec1
|
||||
# Note the use of "stdbuf -oL" to force the program to flush the output line by line.
|
||||
#execp = new
|
||||
#execp_command = free -b -s10| stdbuf -oL awk '/^Mem:/ { printf "Mem: %s / \n", $3 }' | stdbuf -oL numfmt --to=iec-i --field=2 -d' '
|
||||
#execp_interval = 30
|
||||
#execp_continuous = 1
|
||||
#execp_font = Hack 14
|
||||
#execp_font_color = #d8caac 100
|
||||
|
||||
# Exec2
|
||||
#execp = new
|
||||
#execp_command = free -b -s10| stdbuf -oL awk '/^Mem:/ { printf "%s %.0f%%\n", $2, 100 * ($2 - $7) / $2 }' | stdbuf -oL numfmt --to=iec-i --field=1 -d' '
|
||||
#execp_interval = 30
|
||||
#execp_continuous = 1
|
||||
#execp_font = Hack 14
|
||||
#execp_font_color = #d8caac 100
|
||||
|
||||
# Exec3
|
||||
execp = new
|
||||
execp_command = sys-mon.py -CatMu -N
|
||||
execp_interval = 10
|
||||
execp_has_icon = 0
|
||||
execp_cache_icon = 0
|
||||
execp_continuous = 0
|
||||
execp_markup = 0
|
||||
execp_font_color = #d8caac 100
|
||||
execp_padding = 0 0
|
||||
execp_font = Hack 14
|
||||
execp_background_id = 0
|
||||
execp_centered = 1
|
||||
execp_icon_w = 0
|
||||
execp_icon_h = 0
|
||||
|
||||
#-------------------------------------
|
||||
# Buttons
|
||||
|
||||
#Button1
|
||||
button = new
|
||||
button_text =
|
||||
button_icon = /usr/share/icons/Papirus-Dark/24x24/actions/exit.svg
|
||||
button_background_id = 0
|
||||
button_lclick_command = rofi -dpi 240 -show power-menu -modi power-menu:/usr/bin/rofi-power-menu
|
||||
button_mclick_command = rofi -dpi 240 -show power-menu -modi power-menu:"/usr/bin/rofi-power-menu --choose suspend/hibernate"
|
||||
button_rclick_command = rofi -dpi 240 -show power-menu -modi power-menu:"/usr/bin/rofi-power-menu --choices reboot/shutdown"
|
299
dot_config/waybar/config.tmpl
Normal file
299
dot_config/waybar/config.tmpl
Normal file
|
@ -0,0 +1,299 @@
|
|||
[{
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
"output": "DP-1",
|
||||
"position": "bottom",
|
||||
"width": 1920,
|
||||
{{- else if eq .chezmoi.hostname "helix" }}
|
||||
"output": "eDP-1",
|
||||
"position": "top",
|
||||
//"width": 3840,
|
||||
{{- else }}
|
||||
"output": "eDP-1",
|
||||
"position": "top",
|
||||
// "width": 1920,
|
||||
{{- end }}
|
||||
"layer": "top",
|
||||
"height": 32,
|
||||
"spacing": 4,
|
||||
|
||||
"modules-left": [
|
||||
"river/mode",
|
||||
"river/tags"
|
||||
],
|
||||
|
||||
"modules-center": [
|
||||
"river/window"
|
||||
],
|
||||
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
"modules-right": [
|
||||
"idle_inhibitor",
|
||||
"pulseaudio",
|
||||
"keyboard-state",
|
||||
"clock",
|
||||
"tray"
|
||||
],
|
||||
{{- else }}
|
||||
"modules-right": [
|
||||
"idle_inhibitor",
|
||||
"backlight",
|
||||
"pulseaudio",
|
||||
"network",
|
||||
"battery",
|
||||
"clock",
|
||||
"tray"
|
||||
],
|
||||
{{- end }}
|
||||
|
||||
"keyboard-state": {
|
||||
"numlock": false,
|
||||
"capslock": true,
|
||||
"format": "{name} {icon}",
|
||||
"format-icons": {
|
||||
"locked": "",
|
||||
"unlocked": ""
|
||||
}
|
||||
},
|
||||
|
||||
"river/mode": {
|
||||
"format": "mode: {}"
|
||||
},
|
||||
|
||||
"river/tags": {
|
||||
//"num-tags": 5
|
||||
},
|
||||
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
|
||||
"tray": {
|
||||
"icon-size": 18,
|
||||
"spacing": 10
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"format": "{:%H:%M}",
|
||||
// "timezone": "America/New_York",
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
"format-alt": "{:%Y-%m-%d}"
|
||||
},
|
||||
|
||||
"cpu": {
|
||||
"format": "{usage}% ",
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"format": "{}% "
|
||||
},
|
||||
|
||||
"temperature": {
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
"hwmon-path": "/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp1_input",
|
||||
"critical-threshold": 90,
|
||||
{{- else if eq .chezmoi.hostname "hydrus" }}
|
||||
"hwmon-path": "/sys/devices/platform/nct6775.656/hwmon/hwmon1/temp2_input",
|
||||
"critical-threshold": 90,
|
||||
{{- else }}
|
||||
// "thermal-zone": 2,
|
||||
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
|
||||
// "critical-threshold": 80,
|
||||
{{- end }}
|
||||
// "format-critical": "{temperatureC}°C {icon}",
|
||||
"format": "{temperatureC}°C {icon}",
|
||||
"format-icons": ["", "", ""]
|
||||
},
|
||||
|
||||
"backlight": {
|
||||
// "device": "acpi_video1",
|
||||
"format": "{percent}% {icon}",
|
||||
"format-icons": ["", "", "", "", "", "", "", "", ""]
|
||||
},
|
||||
|
||||
"battery": {
|
||||
"states": {
|
||||
{{- if eq .chezmoi.hostname "helix"}}
|
||||
"good": 59,
|
||||
{{- end }}
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-plugged": "{capacity}% ",
|
||||
"format-alt": "{time} {icon}",
|
||||
// "format-good": "", // An empty format will hide the module
|
||||
// "format-full": "",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
|
||||
"battery#bat2": {
|
||||
"bat": "BAT2"
|
||||
},
|
||||
|
||||
"network": {
|
||||
// "interface": "wlan0",
|
||||
{{- if eq .chezmoi.hostname "hydrus" }}
|
||||
"format-wifi": "{essid} ({signalStrength}%) ",
|
||||
{{- else }}
|
||||
"format-wifi": "{signalStrength}% ",
|
||||
{{- end }}
|
||||
"format-ethernet": "{ipaddr}/{cidr} ",
|
||||
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||
"format-linked": "{ifname} (No IP) ",
|
||||
"format-disconnected": "Disconnected ⚠",
|
||||
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"scroll-step": 1,
|
||||
"format": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": "{volume}% ",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
},
|
||||
},
|
||||
{
|
||||
{{- if eq .chezmoi.hostname "hydrus" }}
|
||||
"output": "DP-2",
|
||||
"position": "bottom",
|
||||
"width": 1920,
|
||||
"layer": "top",
|
||||
"height": 32,
|
||||
"spacing": 4,
|
||||
|
||||
"modules-left": [
|
||||
"river/tags"
|
||||
],
|
||||
|
||||
"modules-center": [
|
||||
"river/window",
|
||||
],
|
||||
|
||||
"modules-right": [
|
||||
"network",
|
||||
"cpu",
|
||||
"memory",
|
||||
"temperature",
|
||||
"clock",
|
||||
],
|
||||
|
||||
"keyboard-state": {
|
||||
"numlock": false,
|
||||
"capslock": true,
|
||||
"format": "{name} {icon}",
|
||||
"format-icons": {
|
||||
"locked": "",
|
||||
"unlocked": ""
|
||||
}
|
||||
},
|
||||
|
||||
"river/mode": {
|
||||
"format": "mode: {}"
|
||||
},
|
||||
|
||||
"river/tags": {
|
||||
//"num-tags": 5
|
||||
},
|
||||
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
|
||||
"tray": {
|
||||
"icon-size": 18,
|
||||
"spacing": 10
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"format": "{:%H:%M}",
|
||||
// "timezone": "America/New_York",
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
"format-alt": "{:%Y-%m-%d}"
|
||||
},
|
||||
|
||||
"cpu": {
|
||||
"format": "{usage}% ",
|
||||
"tooltip": true
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"format": "{}% "
|
||||
},
|
||||
|
||||
"temperature": {
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
"hwmon-path": "/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon4/temp1_input",
|
||||
"critical-threshold": 90,
|
||||
{{- else if eq .chezmoi.hostname "hydrus" }}
|
||||
"hwmon-path": "/sys/devices/platform/nct6775.656/hwmon/hwmon1/temp2_input",
|
||||
"critical-threshold": 90,
|
||||
{{- else }}
|
||||
// "thermal-zone": 2,
|
||||
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
|
||||
// "critical-threshold": 80,
|
||||
{{- end }}
|
||||
// "format-critical": "{temperatureC}°C {icon}",
|
||||
"format": "{temperatureC}°C {icon}",
|
||||
"format-icons": ["", "", ""]
|
||||
},
|
||||
|
||||
"backlight": {
|
||||
// "device": "acpi_video1",
|
||||
"format": "{percent}% {icon}",
|
||||
"format-icons": ["", "", "", "", "", "", "", "", ""]
|
||||
},
|
||||
|
||||
"network": {
|
||||
// "interface": "wlan0",
|
||||
"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}"
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"scroll-step": 1,
|
||||
"format": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": "{volume}% ",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
},
|
||||
{{- end }}
|
||||
}]
|
||||
|
421
dot_config/waybar/style.css.tmpl
Normal file
421
dot_config/waybar/style.css.tmpl
Normal file
|
@ -0,0 +1,421 @@
|
|||
* {
|
||||
font-family: FontAwesome, Hack, monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: rgba(50, 61, 67, 0.85);
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
color: #d0bf9b;
|
||||
transition-property: background-color;
|
||||
transition-duration: 0.5s;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
/*
|
||||
window#waybar.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
window#waybar.solo {
|
||||
background-color: #4a555b;
|
||||
}
|
||||
*/
|
||||
|
||||
window#waybar.termite {
|
||||
background-color: #3f3f3f;
|
||||
}
|
||||
|
||||
window#waybar.chromium {
|
||||
background-color: #d8caac;
|
||||
border: none;
|
||||
}
|
||||
|
||||
button {
|
||||
/* Use box-shadow instead of border so the text isn't offset */
|
||||
box-shadow: inset 0 -3px transparent;
|
||||
/* Avoid rounded borders under each button name */
|
||||
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 #4a555b;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
background-color: transparent;
|
||||
color: #4a555b;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
background-color: #64727d;
|
||||
box-shadow: inset 0 -3px #4a555b;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: #e26c6e;
|
||||
}
|
||||
|
||||
#mode {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#clock,
|
||||
#battery,
|
||||
#cpu,
|
||||
#memory,
|
||||
#disk,
|
||||
#temperature,
|
||||
#backlight,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#wireplumber,
|
||||
#custom-media,
|
||||
#tray,
|
||||
#mode,
|
||||
#idle_inhibitor,
|
||||
#scratchpad,
|
||||
#mpd {
|
||||
padding: 0 10px;
|
||||
color: #4a555b;
|
||||
}
|
||||
|
||||
#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: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#battery {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#battery.charging,
|
||||
#battery.plugged.charging {
|
||||
color: #4a555b;
|
||||
background-color: #9bb86f;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #4a555b;
|
||||
color: #d8caac;
|
||||
}
|
||||
}
|
||||
|
||||
#battery.good {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#battery.warning:not(.charging) {
|
||||
background-color: #d5b26b;
|
||||
color: #4a555b;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: #e26c6e;
|
||||
color: #4a555b;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
label:focus {
|
||||
background-color: #d8caac;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#memory {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#disk {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#backlight {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#network {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
background-color: #e26c6e;
|
||||
color: #4a555b;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
background-color: #525c62;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#wireplumber {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#wireplumber.muted {
|
||||
background-color: #525c62;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#temperature {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#temperature.critical {
|
||||
background-color: #e26c6e;
|
||||
color: #4a555b;
|
||||
}
|
||||
|
||||
#tray {
|
||||
background-color: #323d43;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#tray > .passive {
|
||||
-gtk-icon-effect: dim;
|
||||
}
|
||||
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: #e26c6e;
|
||||
}
|
||||
|
||||
#idle_inhibitor {
|
||||
background-color: #525c62;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#idle_inhibitor.activated {
|
||||
background-color: #d0bf9b;
|
||||
color: #525c62;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(50, 61, 67, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(50, 61, 67, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#language {
|
||||
background: #00b093;
|
||||
color: #740864;
|
||||
padding: 0 5px;
|
||||
margin: 0 5px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
#keyboard-state {
|
||||
background: #323d43;
|
||||
color: #d8caac;
|
||||
padding: 0 0px;
|
||||
margin: 0 0px;
|
||||
min-width: 16px;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#keyboard-state > label {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
#keyboard-state > label.locked {
|
||||
background: rgba(0, 0, 0, .2);
|
||||
}
|
||||
|
||||
#scratchpad {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#scratchpad.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* River */
|
||||
|
||||
#mode.normal {
|
||||
background-color: #323d43;
|
||||
color: #d8caac;
|
||||
}
|
||||
|
||||
#mode.passthrough {
|
||||
background-color: #d0bf9b;
|
||||
color: #4a555b;
|
||||
}
|
||||
|
||||
#tags button {}
|
||||
|
||||
#tags button.occupied {
|
||||
background-color: #525c62;
|
||||
color: #d8caac;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(208, 191, 155, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#tags button.focused {
|
||||
background-color: #d0bf9b;
|
||||
color: #4a555b;
|
||||
{{- if eq .chezmoi.hostname "hydrus"}}
|
||||
border-bottom: 3px solid rgba(50, 61, 67, 0.7);
|
||||
{{- else }}
|
||||
border-top: 3px solid rgba(50, 61, 67, 0.7);
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
#tags button.urgent {
|
||||
background-color: #e26c6e;
|
||||
color: #4a555b;
|
||||
}
|
||||
|
||||
#window {
|
||||
font-size: 12px;
|
||||
}
|
36
dot_config/wleave/layout
Normal file
36
dot_config/wleave/layout
Normal file
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"label" : "lock",
|
||||
"action" : "waylock -fork-on-lock -init-color 0x000000",
|
||||
"text" : "Lock",
|
||||
"keybind" : "l"
|
||||
}
|
||||
{
|
||||
"label" : "hibernate",
|
||||
"action" : "loginctl hibernate",
|
||||
"text" : "Hibernate",
|
||||
"keybind" : "h"
|
||||
}
|
||||
{
|
||||
"label" : "logout",
|
||||
"action" : "${HOME}/.local/bin/river-exit logout",
|
||||
"text" : "Logout",
|
||||
"keybind" : "e"
|
||||
}
|
||||
{
|
||||
"label" : "shutdown",
|
||||
"action" : "${HOME}/.local/bin/river-exit poweroff",
|
||||
"text" : "Shutdown",
|
||||
"keybind" : "s"
|
||||
}
|
||||
{
|
||||
"label" : "suspend",
|
||||
"action" : "loginctl suspend",
|
||||
"text" : "Suspend",
|
||||
"keybind" : "u"
|
||||
}
|
||||
{
|
||||
"label" : "reboot",
|
||||
"action" : "${HOME}/.local/bin/river-exit reboot",
|
||||
"text" : "Reboot",
|
||||
"keybind" : "r"
|
||||
}
|
47
dot_config/wleave/style.css
Normal file
47
dot_config/wleave/style.css
Normal file
|
@ -0,0 +1,47 @@
|
|||
* {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: rgba(12, 12, 12, 0.9);
|
||||
}
|
||||
|
||||
button {
|
||||
color: #d8caac;
|
||||
background-color: #323d43;
|
||||
border-style: solid;
|
||||
border-width: 2px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 40%;
|
||||
}
|
||||
|
||||
/* button:focus, */
|
||||
button:active, button:hover {
|
||||
background-color: #6eb2a9;
|
||||
outline-style: groove;
|
||||
}
|
||||
|
||||
#lock {
|
||||
background-image: image(url("/usr/share/wleave/icons/lock.svg"), url("/usr/local/share/wleave/icons/lock.svg"));
|
||||
}
|
||||
|
||||
#logout {
|
||||
background-image: image(url("/usr/share/wleave/icons/logout.svg"), url("/usr/local/share/wleave/icons/logout.svg"));
|
||||
}
|
||||
|
||||
#suspend {
|
||||
background-image: image(url("/usr/share/wleave/icons/suspend.svg"), url("/usr/local/share/wleave/icons/suspend.svg"));
|
||||
}
|
||||
|
||||
#hibernate {
|
||||
background-image: image(url("/usr/share/wleave/icons/hibernate.svg"), url("/usr/local/share/wleave/icons/hibernate.svg"));
|
||||
}
|
||||
|
||||
#shutdown {
|
||||
background-image: image(url("/usr/share/wleave/icons/shutdown.svg"), url("/usr/local/share/wleave/icons/shutdown.svg"));
|
||||
}
|
||||
|
||||
#reboot {
|
||||
background-image: image(url("/usr/share/wleave/icons/reboot.svg"), url("/usr/local/share/wleave/icons/reboot.svg"));
|
||||
}
|
224
dot_config/yambar/bar2.yml.tmpl
Normal file
224
dot_config/yambar/bar2.yml.tmpl
Normal file
|
@ -0,0 +1,224 @@
|
|||
# Colors
|
||||
.everforest:
|
||||
0: &foreground d8caacff
|
||||
1: &background 323d43dd
|
||||
2: &black 4a555bff
|
||||
3: &dark_grey 525c62ff
|
||||
4: &dark_red e26c6eff
|
||||
5: &red e68183ff
|
||||
6: &dark_green 9bb86fff
|
||||
7: &green a7c080ff
|
||||
8: &dark_yellow d5b26bff
|
||||
9: &yellow dbbc7fff
|
||||
10: &dark_blue 6eb2a9ff
|
||||
11: &blue 7fbbb3ff
|
||||
12: &dark_magenta cf87a9ff
|
||||
13: &magenta d699b6ff
|
||||
14: &dark_cyan 72b783ff
|
||||
15: &cyan 83c092ff
|
||||
16: &light_grey d0bf9bff
|
||||
17: &white d8caacff
|
||||
transparent_light_grey: &transparent_light_grey d0bf9b99
|
||||
transparent_black: &transparent_black 4a555b99
|
||||
# Fonts
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
hack: &hack Hack:pixelsize=28
|
||||
awesome: &awesome Font Awesome 6 Free:style=solid:pixelsize=28
|
||||
{{- else}}
|
||||
hack: &hack Hack:pixelsize=13
|
||||
awesome: &awesome Font Awesome 6 Free:style=solid:pixelsize=12
|
||||
{{- end }}
|
||||
# Labels
|
||||
separator: &separator {string: {text: " ", font: *hack, foreground: *light_grey}}
|
||||
|
||||
bar:
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
height: 64
|
||||
location: bottom
|
||||
{{- else if eq .chezmoi.hostname "hydrus" }}
|
||||
monitor: DP-2
|
||||
height: 28
|
||||
location: bottom
|
||||
{{- else }}
|
||||
height: 36
|
||||
location: bottom
|
||||
{{- end }}
|
||||
layer: top
|
||||
spacing: 2
|
||||
margin: 2
|
||||
font: *hack
|
||||
foreground: *foreground
|
||||
background: *background
|
||||
border:
|
||||
{{- if eq .chezmoi.hostname "hydrus" }}
|
||||
bottom-margin: 4
|
||||
left-margin: 8
|
||||
right-margin: 8
|
||||
{{- else }}
|
||||
top-margin: 8
|
||||
left-margin: 16
|
||||
right-margin: 16
|
||||
{{- end }}
|
||||
width: 0
|
||||
color: *transparent_light_grey
|
||||
|
||||
left:
|
||||
- river:
|
||||
anchors:
|
||||
- base: &river_base
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
left-margin: 56
|
||||
right-margin: 56
|
||||
{{- else }}
|
||||
left-margin: 22
|
||||
right-margin: 22
|
||||
{{- end }}
|
||||
text: "{id}"
|
||||
content:
|
||||
map:
|
||||
on-click:
|
||||
left: sh -c "riverctl set-focused-tags $((1 << ({id} - 1)))"
|
||||
middle: sh -c "riverctl toggle-view-tags $((1 << ({id} -1)))"
|
||||
right: sh -c "riverctl toggle-focused-tags $((1 << ({id} -1)))"
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
conditions:
|
||||
urgent:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_red}}, {border: {size: 6, color: *black}}]}
|
||||
foreground: *black
|
||||
focused:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *light_grey}}, {underline: {size: 6, color: *transparent_black}}]}
|
||||
foreground: *dark_grey
|
||||
visible && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *transparent_light_grey}}, {underline: {size: 6, color: *transparent_black}}]}
|
||||
foreground: *light_grey
|
||||
visible && ~occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *transparent_light_grey}}, {underline: {size: 6, color: *transparent_black}}]}
|
||||
foreground: *light_grey
|
||||
~visible && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_grey}}, {underline: {size: 6, color: *transparent_light_grey}}]}
|
||||
foreground: *light_grey
|
||||
~focused && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_grey}}, {underline: {size: 6, color: *transparent_light_grey}}]}
|
||||
foreground: *light_grey
|
||||
id < 10 && ~visible && ~occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
foreground: *light_grey
|
||||
id >= 10 && ~visible && ~occupied: {empty: {}}
|
||||
{{- else }}
|
||||
conditions:
|
||||
urgent:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_red}}, {border: {size: 2, color: *black}}]}
|
||||
foreground: *black
|
||||
focused:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *light_grey}}, {underline: {size: 1, color: *transparent_black}}]}
|
||||
foreground: *dark_grey
|
||||
visible && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *transparent_light_grey}}, {underline: {size: 1, color: *transparent_black}}]}
|
||||
foreground: *light_grey
|
||||
visible && ~occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *transparent_light_grey}}, {underline: {size: 1, color: *transparent_black}}]}
|
||||
foreground: *light_grey
|
||||
~visible && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_grey}}, {underline: {size: 1, color: *transparent_light_grey}}]}
|
||||
foreground: *light_grey
|
||||
~focused && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_grey}}, {underline: {size: 1, color: *transparent_light_grey}}]}
|
||||
foreground: *light_grey
|
||||
id < 10 && ~visible && ~occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {underline: {size: 1, color: *transparent_light_grey}}
|
||||
foreground: *light_grey
|
||||
id >= 10 && ~visible && ~occupied: {empty: {}}
|
||||
{{ end }}
|
||||
center:
|
||||
- foreign-toplevel:
|
||||
content:
|
||||
map:
|
||||
conditions:
|
||||
activated:
|
||||
- string: {text: "{app-id}: {title}"}
|
||||
~activated: {empty: {}}
|
||||
|
||||
right:
|
||||
{{- if eq .chezmoi.hostname "hydrus" }}
|
||||
- label:
|
||||
content: *separator
|
||||
- network:
|
||||
name: wlan0
|
||||
poll-interval: 2000
|
||||
content:
|
||||
map:
|
||||
default: {string: {text: , font: *awesome}}
|
||||
conditions:
|
||||
state == down: {string: {text: , font: *awesome, foreground: *dark_grey}}
|
||||
state == up:
|
||||
map:
|
||||
default:
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {name}: {dl-speed:mb} mb/s down - {ul-speed:mb} mb/s up"}
|
||||
conditions:
|
||||
ipv4 == "":
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {name}: {dl-speed:mb} mb/s down / {ul-speed:mb} mb/s up"}
|
||||
- network:
|
||||
name: eth0
|
||||
poll-interval: 2000
|
||||
content:
|
||||
map:
|
||||
conditions:
|
||||
~carrier: {empty: {}}
|
||||
carrier:
|
||||
map:
|
||||
default:
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {name}: {dl-speed:mb} mb/s down / {ul-speed:mb} mb/s up"}
|
||||
conditions:
|
||||
state == down: {string: {text: , font: *awesome}}
|
||||
ipv4 == "":
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {name}: {dl-speed:mb} mb/s down / {ul-speed:mb} mb/s up"}
|
||||
- label:
|
||||
content: *separator
|
||||
{{- end }}
|
||||
- cpu:
|
||||
poll-interval: 2000
|
||||
content:
|
||||
map:
|
||||
conditions:
|
||||
id == -1:
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {cpu}%"}
|
||||
- label:
|
||||
content: *separator
|
||||
- mem:
|
||||
poll-interval: 5000
|
||||
content:
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {used:mb} MiB ({percent_used}% Used)"}
|
||||
|
280
dot_config/yambar/config.yml.tmpl
Normal file
280
dot_config/yambar/config.yml.tmpl
Normal file
|
@ -0,0 +1,280 @@
|
|||
# Colors
|
||||
.everforest:
|
||||
0: &foreground d8caacff
|
||||
1: &background 323d43dd
|
||||
2: &black 4a555bff
|
||||
3: &dark_grey 525c62ff
|
||||
4: &dark_red e26c6eff
|
||||
5: &red e68183ff
|
||||
6: &dark_green 9bb86fff
|
||||
7: &green a7c080ff
|
||||
8: &dark_yellow d5b26bff
|
||||
9: &yellow dbbc7fff
|
||||
10: &dark_blue 6eb2a9ff
|
||||
11: &blue 7fbbb3ff
|
||||
12: &dark_magenta cf87a9ff
|
||||
13: &magenta d699b6ff
|
||||
14: &dark_cyan 72b783ff
|
||||
15: &cyan 83c092ff
|
||||
16: &light_grey d0bf9bff
|
||||
17: &white d8caacff
|
||||
transparent_light_grey: &transparent_light_grey d0bf9baa
|
||||
transparent_black: &transparent_black 4a555baa
|
||||
# Fonts
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
hack: &hack Hack:pixelsize=28
|
||||
awesome: &awesome Font Awesome 6 Free:style=solid:pixelsize=28
|
||||
{{- else}}
|
||||
hack: &hack Hack:pixelsize=13
|
||||
awesome: &awesome Font Awesome 6 Free:style=solid:pixelsize=12
|
||||
{{- end }}
|
||||
# Labels
|
||||
separator: &separator {string: {text: " ", font: *hack, foreground: *light_grey}}
|
||||
|
||||
bar:
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
height: 64
|
||||
location: top
|
||||
{{- else if eq .chezmoi.hostname "hydrus" }}
|
||||
monitor: DP-1
|
||||
height: 28
|
||||
location: bottom
|
||||
{{- else }}
|
||||
height: 36
|
||||
location: top
|
||||
{{- end }}
|
||||
layer: top
|
||||
spacing: 2
|
||||
margin: 2
|
||||
font: *hack
|
||||
foreground: *foreground
|
||||
background: *background
|
||||
border:
|
||||
{{- if eq .chezmoi.hostname "hydrus" }}
|
||||
bottom-margin: 4
|
||||
left-margin: 8
|
||||
right-margin: 8
|
||||
{{- else }}
|
||||
top-margin: 8
|
||||
left-margin: 16
|
||||
right-margin: 16
|
||||
{{- end }}
|
||||
width: 0
|
||||
color: *transparent_light_grey
|
||||
|
||||
left:
|
||||
- river:
|
||||
anchors:
|
||||
- base: &river_base
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
left-margin: 56
|
||||
right-margin: 56
|
||||
{{- else }}
|
||||
left-margin: 22
|
||||
right-margin: 22
|
||||
{{- end }}
|
||||
text: "{id}"
|
||||
content:
|
||||
map:
|
||||
on-click:
|
||||
left: sh -c "riverctl set-focused-tags $((1 << ({id} - 1)))"
|
||||
middle: sh -c "riverctl toggle-view-tags $((1 << ({id} -1)))"
|
||||
right: sh -c "riverctl toggle-focused-tags $((1 << ({id} -1)))"
|
||||
{{- if eq .chezmoi.hostname "helix" }}
|
||||
conditions:
|
||||
urgent:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_red}}, {border: {size: 6, color: *black}}]}
|
||||
foreground: *black
|
||||
focused:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *light_grey}}, {underline: {size: 6, color: *transparent_black}}]}
|
||||
foreground: *dark_grey
|
||||
visible && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *transparent_light_grey}}, {underline: {size: 6, color: *transparent_black}}]}
|
||||
foreground: *light_grey
|
||||
visible && ~occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *transparent_light_grey}}, {underline: {size: 6, color: *transparent_black}}]}
|
||||
foreground: *light_grey
|
||||
~visible && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_grey}}, {underline: {size: 6, color: *transparent_light_grey}}]}
|
||||
foreground: *light_grey
|
||||
~focused && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_grey}}, {underline: {size: 6, color: *transparent_light_grey}}]}
|
||||
foreground: *light_grey
|
||||
id < 10 && ~visible && ~occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
foreground: *light_grey
|
||||
id >= 10 && ~visible && ~occupied: {empty: {}}
|
||||
{{- else }}
|
||||
conditions:
|
||||
urgent:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_red}}, {border: {size: 2, color: *black}}]}
|
||||
foreground: *black
|
||||
focused:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *light_grey}}, {underline: {size: 1, color: *transparent_black}}]}
|
||||
foreground: *dark_grey
|
||||
visible && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *transparent_light_grey}}, {underline: {size: 1, color: *transparent_black}}]}
|
||||
foreground: *light_grey
|
||||
visible && ~occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *transparent_light_grey}}, {underline: {size: 1, color: *transparent_black}}]}
|
||||
foreground: *light_grey
|
||||
~visible && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_grey}}, {underline: {size: 1, color: *transparent_light_grey}}]}
|
||||
foreground: *light_grey
|
||||
~focused && occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {stack: [{background: {color: *dark_grey}}, {underline: {size: 1, color: *transparent_light_grey}}]}
|
||||
foreground: *light_grey
|
||||
id < 10 && ~visible && ~occupied:
|
||||
string:
|
||||
<<: *river_base
|
||||
deco: {underline: {size: 1, color: *transparent_light_grey}}
|
||||
foreground: *light_grey
|
||||
id >= 10 && ~visible && ~occupied: {empty: {}}
|
||||
{{ end }}
|
||||
center:
|
||||
- foreign-toplevel:
|
||||
content:
|
||||
map:
|
||||
conditions:
|
||||
activated:
|
||||
- string: {text: "{app-id}: {title}"}
|
||||
~activated: {empty: {}}
|
||||
|
||||
right:
|
||||
- pulse:
|
||||
content:
|
||||
map:
|
||||
on-click:
|
||||
left: sh -c "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
wheel-up: sh -c "pactl set-sink-volume @DEFAULT_SINK@ +5%"
|
||||
wheel-down: sh -c "pactl set-sink-volume @DEFAULT_SINK@ -5%"
|
||||
conditions:
|
||||
sink_muted:
|
||||
- string: {text: , font: *awesome, foreground: *transparent_light_grey}
|
||||
- string: {text: " {sink_percent}% ({sink_port})", foreground: *transparent_light_grey}
|
||||
~sink_muted:
|
||||
- ramp:
|
||||
tag: sink_percent
|
||||
items:
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {sink_percent}% ({sink_port})"}
|
||||
{{- if ne .chezmoi.hostname "hydrus" }}
|
||||
- label:
|
||||
content: *separator
|
||||
- backlight:
|
||||
name: amdgpu_bl1
|
||||
content:
|
||||
- ramp:
|
||||
tag: percent
|
||||
items:
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {percent}%"}
|
||||
- label:
|
||||
content: *separator
|
||||
- network:
|
||||
name: wlan0
|
||||
poll-interval: 2000
|
||||
content:
|
||||
map:
|
||||
default: {string: {text: , font: *awesome}}
|
||||
conditions:
|
||||
state == down: {string: {text: , font: *awesome, foreground: *dark_grey}}
|
||||
state == up:
|
||||
map:
|
||||
default:
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {name}: {state}"}
|
||||
conditions:
|
||||
ipv4 == "":
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {name}: {state}"}
|
||||
- network:
|
||||
name: eth0
|
||||
poll-interval: 2000
|
||||
content:
|
||||
map:
|
||||
conditions:
|
||||
~carrier: {empty: {}}
|
||||
carrier:
|
||||
map:
|
||||
default:
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {name}: {state}"}
|
||||
conditions:
|
||||
state == down: {string: {text: , font: *awesome}}
|
||||
ipv4 == "":
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {name}: {state}"}
|
||||
- label:
|
||||
content: *separator
|
||||
- battery:
|
||||
name: BAT0
|
||||
poll-interval: 5000
|
||||
anchors:
|
||||
discharging: &discharging
|
||||
list:
|
||||
items:
|
||||
- ramp:
|
||||
tag: capacity
|
||||
items:
|
||||
- string: {text: , foreground: *dark_red, font: *awesome}
|
||||
- string: {text: , foreground: *dark_yellow, font: *awesome}
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {capacity}% {estimate}"}
|
||||
content:
|
||||
map:
|
||||
conditions:
|
||||
state == unknown:
|
||||
<<: *discharging
|
||||
state == discharging:
|
||||
<<: *discharging
|
||||
state == charging:
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {capacity}% {estimate}"}
|
||||
state == full:
|
||||
- string: {text: , foreground: *dark_green, font: *awesome}
|
||||
- string: {text: " {capacity}% full", foreground: *dark_green}
|
||||
state == "not charging":
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {capacity}%"}
|
||||
{{- end }}
|
||||
- label:
|
||||
content: *separator
|
||||
- clock:
|
||||
date-format: "%a %b %d"
|
||||
time-format: "%R"
|
||||
content:
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {date} "}
|
||||
- string: {text: , font: *awesome}
|
||||
- string: {text: " {time} "}
|
|
@ -1,14 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Terminate already running bar instances
|
||||
killall -q polybar
|
||||
|
||||
# Wait until the processes have been shut down
|
||||
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
|
||||
|
||||
# Launch Polybar, using default config location ~/.config/polybar/config
|
||||
echo "---" | tee -a /tmp/polybar1.log /tmp/polybar2.log
|
||||
polybar one -r --config=~/.config/polybar/config.ini 2>&1 | tee -a /tmp/polybar1.log & disown
|
||||
polybar two -r --config=~/.config/polybar/config.ini 2>&1 | tee -a /tmp/polybar2.log & disown
|
||||
|
||||
echo "Polybar launched..."
|
|
@ -1,19 +1,28 @@
|
|||
#!/bin/bash
|
||||
#!/bin/sh
|
||||
|
||||
user=$(id -u)
|
||||
time=$(date +"%b %d, %Y %T")
|
||||
wire_log=$XDG_STATE_HOME/wireplumber.log
|
||||
pipe_log=$XDG_STATE_HOME/pipewire.log
|
||||
pulse_log=$XDG_STATE_HOME/pipewire-pulse.log
|
||||
|
||||
echo "--- $time ---" > "$wire_log"
|
||||
echo "--- $time ---" > "$pipe_log"
|
||||
echo "--- $time ---" > "$pulse_log"
|
||||
|
||||
# Kill any running pipewire processes
|
||||
killall -q wireplumber & killall -q pipewire-pulse & killall -q pipewire
|
||||
|
||||
# Wait for processes to stop
|
||||
while pgrep -u $UID -x wireplumber >/dev/null; do sleep 1; done
|
||||
while pgrep -u $UID -x pipewire >/dev/null; do sleep 1; done
|
||||
while pgrep -u $UID -x pipewire-pulse >/dev/null; do sleep 1; done
|
||||
while pgrep -u "$user" -x wireplumber >/dev/null; do sleep 1; done
|
||||
while pgrep -u "$user" -x pipewire >/dev/null; do sleep 1; done
|
||||
while pgrep -u "$user" -x pipewire-pulse >/dev/null; do sleep 1; done
|
||||
|
||||
# Wait for xdg-desktop-portal to start
|
||||
until pgrep -u $UID -f /usr/lib/xdg-desktop-portal >/dev/null; do sleep 1; done
|
||||
until pgrep -u "$user" -f /usr/lib/xdg-desktop-portal >/dev/null; do sleep 1; done
|
||||
|
||||
# Launch pipewire
|
||||
echo "---" | tee -a /tmp/{wireplumber.log,pipewire.log,pipewire-pulse.log}
|
||||
/usr/bin/wireplumber 2>&1 | tee -a /tmp/wireplumber.log & disown
|
||||
/usr/bin/pipewire 2>&1 | tee -a /tmp/pipewire.log & disown
|
||||
/usr/bin/pipewire-pulse 2>&1 | tee -a /tmp/pipewire-pulse.log & disown
|
||||
/usr/bin/wireplumber 2>&1 | tee -a "$wire_log" &
|
||||
/usr/bin/pipewire 2>&1 | tee -a "$pipe_log" &
|
||||
/usr/bin/pipewire-pulse 2>&1 | tee -a "$pulse_log" &
|
||||
|
||||
|
|
26
dot_local/bin/executable_river-exit
Normal file
26
dot_local/bin/executable_river-exit
Normal file
|
@ -0,0 +1,26 @@
|
|||
#!/bin/sh
|
||||
|
||||
river=$(ps -C river | awk '/river/')
|
||||
|
||||
if [ -z "$river" ]; then
|
||||
echo "error: $0: River is not running"
|
||||
exit 1
|
||||
elif [ $# -ne 1 ]; then
|
||||
echo "Usage: river-exit [command]"
|
||||
echo "Commands: logout, poweroff, or reboot"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "logout" ]; then
|
||||
riverctl spawn 'reset'
|
||||
riverctl exit
|
||||
elif [ "$1" = "poweroff" ]; then
|
||||
riverctl spawn 'reset'
|
||||
loginctl poweroff
|
||||
elif [ "$1" = "reboot" ]; then
|
||||
riverctl spawn 'reset'
|
||||
loginctl reboot
|
||||
else
|
||||
echo "error: $0: unexpected argument"
|
||||
exit 1
|
||||
fi
|
|
@ -1,14 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Terminate already running bar instances
|
||||
#killall -q polybar # needed if ipc disabled
|
||||
polybar-msg cmd quit
|
||||
|
||||
# Wait until the processes have been shut down
|
||||
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
|
||||
|
||||
# Launch Polybar
|
||||
echo "---" | tee -a /tmp/polybar.log
|
||||
polybar one -r --config=~/.config/polybar/config.ini 2>&1 | tee -a /tmp/polybar.log & disown
|
||||
|
||||
echo "Polybar launched..."
|
39
dot_local/bin/executable_swayidle-launcher.tmpl
Normal file
39
dot_local/bin/executable_swayidle-launcher.tmpl
Normal file
|
@ -0,0 +1,39 @@
|
|||
#!/bin/sh
|
||||
|
||||
time=$(date +"%b %d, %Y %T")
|
||||
log_file=$XDG_STATE_HOME/swayidle.log
|
||||
|
||||
echo "--- $time ---" > "$log_file"
|
||||
|
||||
# kill running processes
|
||||
killall -q swayidle
|
||||
|
||||
{{ if eq .chezmoi.hostname "helix" -}}
|
||||
# dim: 2m, lock: 5m, display: 15m, suspend: 1h
|
||||
swayidle -w \
|
||||
timeout 120 'light -O && light -S .1' \
|
||||
resume 'light -I' \
|
||||
timeout 300 'waylock-launcher' \
|
||||
resume 'light -I' \
|
||||
timeout 900 'light -I && wlr-randr --output eDP-1 --off' \
|
||||
resume 'wlr-randr --output eDP-1 --on && kanshictl reload' \
|
||||
timeout 3600 'loginctl suspend-then-hibernate' \
|
||||
resume 'wlr-randr --output eDP-1 --on && kanshictl reload' \
|
||||
lock 'waylock-launcher' \
|
||||
before-sleep 'waylock-launcher' \
|
||||
2>&1 | tee -a "$log_file" &
|
||||
{{- else if eq .chezmoi.hostname "hydrus" }}
|
||||
# lock: 5m, display: 15m
|
||||
swayidle -w \
|
||||
timeout 300 'waylock-launcher' \
|
||||
timeout 900 'kanshictl switch dual-off' \
|
||||
resume 'kanshictl switch dual' \
|
||||
lock 'waylock-launcher' \
|
||||
before-sleep 'waylock-launcher' \
|
||||
2>&1 | tee -a "$log_file" &
|
||||
{{- else }}
|
||||
# lock after 5m
|
||||
swayidle -w \
|
||||
timeout 300 'waylock-launcher' \
|
||||
2>&1 | tee -a "$log_file" &
|
||||
{{ end }}
|
|
@ -1,349 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# _*_ coding: utf-8 _*_
|
||||
|
||||
"""
|
||||
|
||||
This script uses the `python-psutil` module to display the CPU average load, frequency (current/max),
|
||||
the temperature sensor reading, the fan speed and memory usage (used/total).
|
||||
|
||||
Author: Piotr Miller
|
||||
e-mail: nwg.piotr@gmail.com
|
||||
Website: http://nwg.pl
|
||||
Project: https://github.com/nwg-piotr/tint2-executors
|
||||
|
||||
The script is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of the License, or any later version.
|
||||
The script is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
Inspired by tknomanzr's cpu.py at https://forums.bunsenlabs.org/viewtopic.php?id=4276
|
||||
|
||||
Command: python ~/tint2-executors/cpu-fan-mem.py [-C{components}] [-F] [-N] [-T] [-ALL] [-h] [--help]
|
||||
|
||||
-C stands for Components:
|
||||
|
||||
g - (g)raphical CPU load bar
|
||||
p - (p)ercentage for each core (text)
|
||||
a - (a)verage CPU load (text)
|
||||
q - fre(q)ency for each thread
|
||||
Q - fre(Q)ency for each thread/max frequency
|
||||
s - current CPU (s)peed
|
||||
S - current/max CPU (S)peed
|
||||
t - CPU (t)emperature
|
||||
f - (f)an speed
|
||||
m - (m)emory in use
|
||||
M - (M)emory in use/total
|
||||
w - s(w)ap memory in use
|
||||
W - s(W)ap memory in use/total
|
||||
d - (d)rives as names usage in %
|
||||
D - (D)rives as names used/total
|
||||
n - drives as mou(n)tpoints usage in %
|
||||
N - drives as mou(N)tpoints used/total
|
||||
u - (u)ptime HH:MM
|
||||
U - (U)ptime HH:MM:SS
|
||||
|
||||
-F - use Fahrenheit instead of ℃
|
||||
-N - display field names (except for (g)raphical CPU load bar)
|
||||
-T - test execution time
|
||||
-ALL - display all possible data (for use in terminal)
|
||||
|
||||
"""
|
||||
|
||||
import sys
|
||||
import psutil
|
||||
import re
|
||||
import time
|
||||
|
||||
|
||||
def main():
|
||||
fahrenheit = False
|
||||
names = False
|
||||
testing = False
|
||||
time_start = None
|
||||
components = "gStfM"
|
||||
|
||||
for i in range(1, len(sys.argv)):
|
||||
if sys.argv[i] == "-h" or sys.argv[i] == "--help":
|
||||
print_help()
|
||||
exit(0)
|
||||
|
||||
if sys.argv[i] == "-F":
|
||||
fahrenheit = True
|
||||
|
||||
if sys.argv[i] == "-N":
|
||||
names = True
|
||||
|
||||
if sys.argv[i] == "-T":
|
||||
testing = True
|
||||
|
||||
if sys.argv[i].startswith("-C"):
|
||||
components = sys.argv[i][2::]
|
||||
|
||||
if sys.argv[i] == "-ALL":
|
||||
components = "gpaQStfMWDU"
|
||||
names = True
|
||||
testing = True
|
||||
|
||||
if testing:
|
||||
time_start = int(round(time.time() * 1000))
|
||||
|
||||
pcpu, avg, speed, freqs, temp, fans, b_time, \
|
||||
memory, swap, disks_usage = None, None, None, None, None, None, None, None, None, None
|
||||
|
||||
output = ""
|
||||
|
||||
# Prepare ONLY requested data, ONLY once
|
||||
if "g" in components or "p" in components:
|
||||
try:
|
||||
pcpu = psutil.cpu_percent(interval=1, percpu=True)
|
||||
except:
|
||||
pass
|
||||
|
||||
if "a" in components:
|
||||
try:
|
||||
avg = str(psutil.cpu_percent(interval=1))
|
||||
if len(avg) < 4:
|
||||
avg = "~" + avg
|
||||
except:
|
||||
pass
|
||||
|
||||
if "s" in components or "S" in components:
|
||||
try:
|
||||
speed = psutil.cpu_freq(False)
|
||||
except:
|
||||
pass
|
||||
|
||||
if "q" in components or "Q" in components:
|
||||
try:
|
||||
freqs = psutil.cpu_freq(True)
|
||||
if len(freqs) == 0:
|
||||
freqs = None
|
||||
except:
|
||||
pass
|
||||
|
||||
if "t" in components:
|
||||
try:
|
||||
temp = psutil.sensors_temperatures(fahrenheit)
|
||||
except:
|
||||
pass
|
||||
|
||||
if "f" in components:
|
||||
try:
|
||||
fans = psutil.sensors_fans()
|
||||
except:
|
||||
pass
|
||||
|
||||
if "m" in components or "M" in components:
|
||||
try:
|
||||
memory = psutil.virtual_memory()
|
||||
except:
|
||||
pass
|
||||
|
||||
if "w" in components or "W" in components:
|
||||
try:
|
||||
s = psutil.swap_memory()
|
||||
swap = s[1], s[0]
|
||||
except:
|
||||
pass
|
||||
|
||||
drives = []
|
||||
# Find drive names, mountpoints
|
||||
if "d" in components or "D" in components or "n" in components or "N" in components:
|
||||
try:
|
||||
d = psutil.disk_partitions()
|
||||
# This will store name, mountpoint
|
||||
|
||||
for entry in d:
|
||||
n = entry[0].split("/")
|
||||
name = n[len(n) - 1]
|
||||
# name, mountpoint
|
||||
drive = name, entry[1]
|
||||
drives.append(drive)
|
||||
except:
|
||||
pass
|
||||
|
||||
if "d" in components or "D" in components:
|
||||
try:
|
||||
disks_usage = []
|
||||
for drive in drives:
|
||||
# Search drives by path
|
||||
data = psutil.disk_usage(drive[1])
|
||||
# Store name, used, total, percent
|
||||
essential = drive[0].upper(), data[1], data[0], data[3]
|
||||
disks_usage.append(essential)
|
||||
except:
|
||||
pass
|
||||
|
||||
if "n" in components or "N" in components:
|
||||
try:
|
||||
disks_usage = []
|
||||
for drive in drives:
|
||||
# Search drives by path
|
||||
data = psutil.disk_usage(drive[1])
|
||||
# Store mountpoint, used, total, percent
|
||||
essential = drive[1], data[1], data[0], data[3]
|
||||
disks_usage.append(essential)
|
||||
except:
|
||||
pass
|
||||
|
||||
if "u" in components or "U" in components:
|
||||
try:
|
||||
b_time = psutil.boot_time()
|
||||
except:
|
||||
pass
|
||||
|
||||
# Build output component after component
|
||||
for char in components:
|
||||
if char == "g" and pcpu is not None:
|
||||
output += " " + graph_per_cpu(pcpu) + " "
|
||||
|
||||
if char == "p" and pcpu is not None:
|
||||
output += " CPU:" if names else " "
|
||||
output += per_cpu(pcpu) + " "
|
||||
|
||||
if char == "a" and avg is not None:
|
||||
output += " avCPU:" if names else " "
|
||||
output += avg + "% "
|
||||
|
||||
if char == "q" and freqs is not None:
|
||||
output += " CPU:" if names else " "
|
||||
output += freq_per_cpu(freqs)[0][:-1] + "GHz "
|
||||
|
||||
if char == "Q" and freqs is not None:
|
||||
output += " CPU:" if names else " "
|
||||
result = freq_per_cpu(freqs)
|
||||
output += result[0][:-1] + "/" + str(result[1]) + "GHz "
|
||||
|
||||
if char == "s" and speed is not None:
|
||||
output += " SPD:" if names else " "
|
||||
output += str(round(speed[0] / 1000, 1)) + "GHz "
|
||||
|
||||
if char == "S" and speed is not None:
|
||||
output += " avSPD:" if names else " "
|
||||
output += str(round(speed[0] / 1000, 1)) + "/" + str(round(speed[2] / 1000, 1)) + "GHz "
|
||||
|
||||
if char == "t" and temp is not None and len(temp) > 0:
|
||||
output += " CORE:" if names else " "
|
||||
# "acpitz" for ACPI Thermal Zone
|
||||
output += str(temp["acpitz"][0][1])
|
||||
output += "℉ " if fahrenheit else "℃ "
|
||||
|
||||
if char == "f" and fans is not None and len(fans) > 0:
|
||||
output += " FAN:" if names else " "
|
||||
fan0 = next(iter(fans.values()))
|
||||
output += str(fan0[0][1]) + "/m "
|
||||
|
||||
if char == 'm' and memory is not None:
|
||||
output += " MEM:" if names else " "
|
||||
output += str(round((memory[0] - memory[1]) / 1073741824, 1)) + "GB "
|
||||
|
||||
if char == 'M' and memory is not None:
|
||||
output += " MEM:" if names else " "
|
||||
output += str(round((memory[3]) / 1073741824, 1)) + "/" + str(
|
||||
round(memory[0] / 1073741824, 1)) + "GB "
|
||||
|
||||
if char == 'u' and b_time is not None:
|
||||
up_time = int(time.time()) - b_time
|
||||
m, s = divmod(up_time, 60)
|
||||
h, m = divmod(m, 60)
|
||||
output += " UP:" if names else " "
|
||||
output += "%d:%02d " % (h, m)
|
||||
|
||||
if char == 'U' and b_time is not None:
|
||||
up_time = int(time.time()) - b_time
|
||||
m, s = divmod(up_time, 60)
|
||||
h, m = divmod(m, 60)
|
||||
output += " UP:" if names else " "
|
||||
output += "%d:%02d:%02d " % (h, m, s)
|
||||
|
||||
if char == "w" and swap is not None:
|
||||
output += " SWAP:" if names else " "
|
||||
output += str(round(swap[0] / 1073741824, 1)) + "GB "
|
||||
|
||||
if char == "W" and swap is not None:
|
||||
output += " SWAP:" if names else " "
|
||||
output += str(round(swap[0] / 1073741824, 1)) + "/"
|
||||
output += str(round(swap[1] / 1073741824, 1)) + "GB "
|
||||
|
||||
if char == "d" or char == "n" and disks_usage is not None:
|
||||
for entry in disks_usage:
|
||||
output += " " + entry[0] + ":"
|
||||
output += str(entry[3]) + "% "
|
||||
|
||||
if char == "D" or char == "N" and disks_usage is not None:
|
||||
for entry in disks_usage:
|
||||
output += " " + entry[0] + ":"
|
||||
output += str(round(entry[1] / 1073741824, 1)) + "/"
|
||||
output += str(round(entry[2] / 1073741824, 1)) + "GB "
|
||||
|
||||
if testing:
|
||||
output += " [" + str(int((round(time.time() * 1000)) - time_start) / 1000) + "s]"
|
||||
|
||||
# remove double, leading and trailing spaces before printing
|
||||
print(re.sub(' +', ' ', output).strip())
|
||||
|
||||
|
||||
def per_cpu(result):
|
||||
string = ""
|
||||
for val in result:
|
||||
proc = str(int(round(val, 1)))
|
||||
if len(proc) < 2:
|
||||
proc = "~" + proc
|
||||
string += proc + "% "
|
||||
return string
|
||||
|
||||
|
||||
def freq_per_cpu(result):
|
||||
string = ""
|
||||
max_freq = 0
|
||||
for val in result:
|
||||
freq = str(round(val[0] / 1000, 1))
|
||||
string += freq + "|"
|
||||
max_freq = str(round(val[2] / 1000, 1))
|
||||
|
||||
return string, max_freq
|
||||
|
||||
|
||||
def graph_per_cpu(result):
|
||||
graph = "_▁▂▃▄▅▆▇███"
|
||||
|
||||
string = ""
|
||||
for val in result:
|
||||
proc = int(round(val / 10, 0))
|
||||
string += graph[proc]
|
||||
return string
|
||||
|
||||
|
||||
def print_help():
|
||||
print("\nArguments: [-C{components}] [-F] [-N] [-T] [-ALL] [-h] [--help]")
|
||||
|
||||
print("\n-C defines Components. If none given, -CgStfM will be used by default\n")
|
||||
print(" g - (g)raphical CPU load bar")
|
||||
print(" p - (p)ercentage for each core (text)")
|
||||
print(" a - (a)verage CPU load (text)")
|
||||
print(" q - fre(q)ency for each thread")
|
||||
print(" Q - fre(Q)ency for each thread/max frequency")
|
||||
print(" s - current CPU (s)peed")
|
||||
print(" S - current/max CPU (S)peed")
|
||||
print(" t - CPU (t)emperature")
|
||||
print(" f - (f)an speed")
|
||||
print(" m - (m)emory in use")
|
||||
print(" M - (M)emory in use/total")
|
||||
print(" w - s(w)ap memory in use")
|
||||
print(" W - s(W)ap memory in use/total")
|
||||
print(" d - (d)rives as names usage in %")
|
||||
print(" D - (D)rives as names used/total")
|
||||
print(" n - drives as mou(n)tpoints usage in %")
|
||||
print(" N - drives as mou(N)tpoints used/total")
|
||||
print(" u - (u)ptime HH:MM")
|
||||
print(" U - (U)ptime HH:MM:SS")
|
||||
|
||||
print("\n-F - use Fahrenheit instead of ℃")
|
||||
print("-N - display field names (except for (g)raphical CPU load bar)")
|
||||
print("-T - test execution time")
|
||||
print("-ALL - display all possible data (for use in terminal)\n")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Terminate already running bar instances
|
||||
killall -q tint2
|
||||
|
||||
# Wait until the processes have been shut down
|
||||
while pgrep -u $UID -x tint2 >/dev/null; do sleep 1; done
|
||||
|
||||
# Launch tint2
|
||||
echo "---" | tee -a /tmp/tint2.log
|
||||
tint2 2>&1 | tee -a /tmp/tint2.log & disown
|
||||
|
||||
# Final command won't work without sleep
|
||||
sleep 1 &&
|
||||
|
||||
# Keep tint2 below other windows in fullscreen
|
||||
if pgrep -x "tint2" > /dev/null ; then
|
||||
xdo above -t "$(xdo id -N Bspwm -n root | sort | head -n 1)" $(xdo id -n tint2)
|
||||
fi
|
|
@ -1,9 +1,8 @@
|
|||
#!/bin/sh
|
||||
## A simple script to turn wifi on/off
|
||||
|
||||
if [ $(nmcli radio wifi | awk '/led/ {print}') = 'enabled' ] ; then
|
||||
nmcli radio wifi off
|
||||
if [ $(connmanctl state | awk '/State/ {print $NF}') == 'online' ]; then
|
||||
connmanctl disable wifi
|
||||
else
|
||||
nmcli radio wifi on
|
||||
connmanctl enable wifi
|
||||
fi
|
||||
|
||||
|
|
30
dot_local/bin/executable_update-all
Normal file
30
dot_local/bin/executable_update-all
Normal file
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
|
||||
alias paru='paru --skipreview'
|
||||
alias zigup='zigup --install-dir "${HOME}/.local/share/zigup" --path-link "${HOME}/.local/bin/zig"'
|
||||
|
||||
updates=$(checkupdates)
|
||||
aur_updates=$(paru -Qua)
|
||||
|
||||
if [ "$updates" = "" ] && [ "$aur_updates" = "" ]; then
|
||||
echo "System is already up to date."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
river_has_update=$(echo "$aur_updates" | grep -c 'river-git')
|
||||
zls_has_update=$(echo "$aur_updates" | grep -c 'zls-git')
|
||||
|
||||
if [ "$river_has_update" -ne 0 ] && [ "$zls_has_update" -ne 0 ]; then
|
||||
zigup master
|
||||
paru -Syu --exclude river-git
|
||||
zigup 0.11.0
|
||||
paru -S river-git
|
||||
zigup master
|
||||
elif [ "$river_has_update" -ne 0 ]; then
|
||||
zigup 0.11.0
|
||||
paru -Syu
|
||||
zigup master
|
||||
else
|
||||
zigup master
|
||||
paru -Syu
|
||||
fi
|
20
dot_local/bin/executable_waybar-launcher
Normal file
20
dot_local/bin/executable_waybar-launcher
Normal file
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
user=$(id -u)
|
||||
time=$(date +"%b %d, %Y %T")
|
||||
log_file=$XDG_STATE_HOME/waybar.log
|
||||
|
||||
echo "--- $time ---" > "$log_file"
|
||||
|
||||
# Terminate already running bar instances
|
||||
killall -q waybar
|
||||
|
||||
# Wait until the processes have been shut down
|
||||
while pgrep -u "$user" -x waybar >/dev/null; do sleep 1; done
|
||||
|
||||
# Make sure pipewire-pulse is running or module won't load
|
||||
until pgrep -u "$user" -x pipewire-pulse >/dev/null; do sleep 1; done
|
||||
|
||||
# Launch Waybar
|
||||
waybar 2>&1 | tee -a "$log_file" &
|
||||
|
20
dot_local/bin/executable_waylock-launcher
Normal file
20
dot_local/bin/executable_waylock-launcher
Normal file
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
user=$(id -u)
|
||||
time=$(date +"%b %d, %Y %T")
|
||||
log_file=$XDG_STATE_HOME/waylock.log
|
||||
|
||||
echo "--- $time ---" > "$log_file"
|
||||
|
||||
if pgrep -u "$user" -x waylock >/dev/null; then
|
||||
echo "error: waylock is already running" >> "$log_file"
|
||||
exit 1
|
||||
else
|
||||
waylock \
|
||||
-fork-on-lock \
|
||||
-init-color 0x000000 \
|
||||
-fail-color 0x000000 \
|
||||
-input-color 0x525c62 \
|
||||
2>&1 | tee -a "$log_file"
|
||||
fi
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Wait on pipewire or "--not-when-audio" will break everything
|
||||
until pgrep -u $UID -x pipewire-pulse >/dev/null; do sleep 1; done
|
||||
|
||||
# lock screen after 10 minutes
|
||||
echo "---" | tee -a /tmp/xidlehook.log
|
||||
xidlehook --not-when-audio --not-when-fullscreen \
|
||||
--timer 600 "xset s activate" "" \
|
||||
2>&1 | tee -a /tmp/xidlehook.log & disown
|
|
@ -1,12 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Wait on pipewire or "--not-when-audio" will break everything
|
||||
until pgrep -u $UID -x pipewire-pulse >/dev/null; do sleep 1; done
|
||||
|
||||
# dim screen after 2 minutes, lock screen after 10, suspend after an hour
|
||||
echo "---" | tee -a /tmp/xidlehook.log
|
||||
xidlehook --not-when-audio --not-when-fullscreen \
|
||||
--timer 120 "killall -q redshift && xrandr --output eDP-1 --brightness .1" "xrandr --output eDP-1 --brightness 1 && redshift -r & disown" \
|
||||
--timer 480 "xset s activate" "xrandr --output eDP-1 --brightness 1 && redshift -r & disown" \
|
||||
--timer 3000 "loginctl suspend" "xrandr --output eDP-1 --brightness 1 && redshift -r & disown" \
|
||||
2>&1 | tee -a /tmp/xidlehook.log & disown
|
25
dot_local/bin/executable_yambar-launcher.tmpl
Normal file
25
dot_local/bin/executable_yambar-launcher.tmpl
Normal file
|
@ -0,0 +1,25 @@
|
|||
#!/bin/sh
|
||||
|
||||
user=$(id -u)
|
||||
time=$(date +"%b %d, %Y %T")
|
||||
bar1_log=$XDG_STATE_HOME/yambar1.log
|
||||
{{- if eq .chezmoi.hostname "hydrus" }}
|
||||
bar2_log=$XDG_STATE_HOME/yambar2.log
|
||||
{{- end }}
|
||||
|
||||
echo "--- $time ---" > "$bar1_log"
|
||||
{{- if eq .chezmoi.hostname "hydrus" }}
|
||||
echo "--- $time ---" > "$bar2_log"
|
||||
{{- end }}
|
||||
|
||||
# Terminate already running bar instances
|
||||
killall -q yambar
|
||||
|
||||
# Wait until the processes have been shut down
|
||||
while pgrep -u "$user" -x yambar >/dev/null; do sleep 1; done
|
||||
|
||||
# Launch Yambar
|
||||
yambar -s 2>&1 | tee -a "$bar1_log" &
|
||||
{{- if eq .chezmoi.hostname "hydrus" }}
|
||||
yambar -s -c "$XDG_CONFIG_HOME/yambar/bar2.yml" 2>&1 | tee -a "$bar2_log" &
|
||||
{{- end }}
|
|
@ -1,26 +0,0 @@
|
|||
# -*- mode: snippet -*-
|
||||
# key : math doc
|
||||
# group: latex-mode
|
||||
# name : math doc
|
||||
# --
|
||||
\documentclass[12pt,letterpaper]{article}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{setspace}
|
||||
\usepackage{parskip}
|
||||
\usepackage[margin=1in]{geometry}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{amsmath}
|
||||
|
||||
\linespread{1.25}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\large
|
||||
$1\\\\
|
||||
$2\\\\
|
||||
$3\\\\
|
||||
$4\\\\
|
||||
\normalsize
|
||||
|
||||
|
||||
\end{document}
|
|
@ -1,674 +0,0 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
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
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
|
@ -1,74 +0,0 @@
|
|||
# Everforest Emacs Theme
|
||||
|
||||
An Emacs port of the [Everforest](https://github.com/sainnhe/everforest) Vim
|
||||
theme, a low-contrast green-coloured theme. This is a current work in progress,
|
||||
so expect issues and unorthodox coloring occasionally. The port is quite
|
||||
opinionated from the original everforest theme, but I try to keep as true to the
|
||||
original theme as possible, but making changes where needed for both functional
|
||||
and cosmetic reasons.
|
||||
|
||||
- [sourcehut mirror](https://git.sr.ht/~theorytoe/everforest-theme)
|
||||
|
||||
![Dark | Light](./dark_light.png)
|
||||
|
||||
## Installation
|
||||
|
||||
This theme is not on MELPA (yet), so a manual install is required
|
||||
for stock emacs.
|
||||
|
||||
### straight.el
|
||||
|
||||
```elisp
|
||||
(straight-use-package
|
||||
'(everforest) :type git :repo "https://git.sr.ht/~theorytoe/everforest-theme")
|
||||
|
||||
(load-theme 'everforest-hard-dark t)
|
||||
;; (load-theme 'everforest-hard-light t)
|
||||
```
|
||||
|
||||
### Doom Emacs (package!)
|
||||
|
||||
```elisp
|
||||
(package! everforest
|
||||
:recipe (:repo "https://git.sr.ht/~theorytoe/everforest-theme"))
|
||||
|
||||
(use-package! 'everforest')
|
||||
|
||||
(load-theme 'everforest-hard-dark t)
|
||||
;; (load-theme 'everforest-hard-light t)
|
||||
```
|
||||
|
||||
### Manual
|
||||
|
||||
Clone the Repo
|
||||
|
||||
```bash
|
||||
git clone https://git.sr.ht/~theorytoe/everforest-theme ~/.emacs.d/everforest-theme
|
||||
```
|
||||
|
||||
Add the theme to your custom-theme alist and load it
|
||||
|
||||
```elisp
|
||||
(add-to-list 'custom-theme-load-path "~/.emacs.d/everforest")
|
||||
(load-theme 'everforest-hard-dark t)
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
Load the theme (disable any existing theme):
|
||||
|
||||
```
|
||||
M-x load-theme RET everforest-hard-dark RET
|
||||
```
|
||||
|
||||
To load the theme on emacs startup:
|
||||
|
||||
```elisp
|
||||
(load-theme 'everforest-hard-dark t)
|
||||
```
|
||||
|
||||
# Roadmap
|
||||
|
||||
Currently, both the dark and light (high-contrast/hard) schemes
|
||||
have been ported. Support for both soft and medium will eventually
|
||||
arrive once most of the internal code has been cleaned up.
|
Binary file not shown.
Before Width: | Height: | Size: 282 KiB |
|
@ -1 +0,0 @@
|
|||
ref: refs/heads/master
|
|
@ -1,11 +0,0 @@
|
|||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = false
|
||||
logallrefupdates = true
|
||||
[remote "origin"]
|
||||
url = https://git.sr.ht/~theorytoe/everforest-theme
|
||||
fetch = +refs/heads/*:refs/remotes/origin/*
|
||||
[branch "master"]
|
||||
remote = origin
|
||||
merge = refs/heads/master
|
|
@ -1 +0,0 @@
|
|||
Unnamed repository; edit this file 'description' to name the repository.
|
|
@ -1,15 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message taken by
|
||||
# applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit. The hook is
|
||||
# allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "applypatch-msg".
|
||||
|
||||
. git-sh-setup
|
||||
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
|
||||
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
|
||||
:
|
|
@ -1,24 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message.
|
||||
# Called by "git commit" with one argument, the name of the file
|
||||
# that has the commit message. The hook should exit with non-zero
|
||||
# status after issuing an appropriate message if it wants to stop the
|
||||
# commit. The hook is allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "commit-msg".
|
||||
|
||||
# Uncomment the below to add a Signed-off-by line to the message.
|
||||
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
||||
# hook is more suited to it.
|
||||
#
|
||||
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
||||
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
|
@ -1,174 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use IPC::Open2;
|
||||
|
||||
# An example hook script to integrate Watchman
|
||||
# (https://facebook.github.io/watchman/) with git to speed up detecting
|
||||
# new and modified files.
|
||||
#
|
||||
# The hook is passed a version (currently 2) and last update token
|
||||
# formatted as a string and outputs to stdout a new update token and
|
||||
# all files that have been modified since the update token. Paths must
|
||||
# be relative to the root of the working tree and separated by a single NUL.
|
||||
#
|
||||
# To enable this hook, rename this file to "query-watchman" and set
|
||||
# 'git config core.fsmonitor .git/hooks/query-watchman'
|
||||
#
|
||||
my ($version, $last_update_token) = @ARGV;
|
||||
|
||||
# Uncomment for debugging
|
||||
# print STDERR "$0 $version $last_update_token\n";
|
||||
|
||||
# Check the hook interface version
|
||||
if ($version ne 2) {
|
||||
die "Unsupported query-fsmonitor hook version '$version'.\n" .
|
||||
"Falling back to scanning...\n";
|
||||
}
|
||||
|
||||
my $git_work_tree = get_working_dir();
|
||||
|
||||
my $retry = 1;
|
||||
|
||||
my $json_pkg;
|
||||
eval {
|
||||
require JSON::XS;
|
||||
$json_pkg = "JSON::XS";
|
||||
1;
|
||||
} or do {
|
||||
require JSON::PP;
|
||||
$json_pkg = "JSON::PP";
|
||||
};
|
||||
|
||||
launch_watchman();
|
||||
|
||||
sub launch_watchman {
|
||||
my $o = watchman_query();
|
||||
if (is_work_tree_watched($o)) {
|
||||
output_result($o->{clock}, @{$o->{files}});
|
||||
}
|
||||
}
|
||||
|
||||
sub output_result {
|
||||
my ($clockid, @files) = @_;
|
||||
|
||||
# Uncomment for debugging watchman output
|
||||
# open (my $fh, ">", ".git/watchman-output.out");
|
||||
# binmode $fh, ":utf8";
|
||||
# print $fh "$clockid\n@files\n";
|
||||
# close $fh;
|
||||
|
||||
binmode STDOUT, ":utf8";
|
||||
print $clockid;
|
||||
print "\0";
|
||||
local $, = "\0";
|
||||
print @files;
|
||||
}
|
||||
|
||||
sub watchman_clock {
|
||||
my $response = qx/watchman clock "$git_work_tree"/;
|
||||
die "Failed to get clock id on '$git_work_tree'.\n" .
|
||||
"Falling back to scanning...\n" if $? != 0;
|
||||
|
||||
return $json_pkg->new->utf8->decode($response);
|
||||
}
|
||||
|
||||
sub watchman_query {
|
||||
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
|
||||
or die "open2() failed: $!\n" .
|
||||
"Falling back to scanning...\n";
|
||||
|
||||
# In the query expression below we're asking for names of files that
|
||||
# changed since $last_update_token but not from the .git folder.
|
||||
#
|
||||
# To accomplish this, we're using the "since" generator to use the
|
||||
# recency index to select candidate nodes and "fields" to limit the
|
||||
# output to file names only. Then we're using the "expression" term to
|
||||
# further constrain the results.
|
||||
my $last_update_line = "";
|
||||
if (substr($last_update_token, 0, 1) eq "c") {
|
||||
$last_update_token = "\"$last_update_token\"";
|
||||
$last_update_line = qq[\n"since": $last_update_token,];
|
||||
}
|
||||
my $query = <<" END";
|
||||
["query", "$git_work_tree", {$last_update_line
|
||||
"fields": ["name"],
|
||||
"expression": ["not", ["dirname", ".git"]]
|
||||
}]
|
||||
END
|
||||
|
||||
# Uncomment for debugging the watchman query
|
||||
# open (my $fh, ">", ".git/watchman-query.json");
|
||||
# print $fh $query;
|
||||
# close $fh;
|
||||
|
||||
print CHLD_IN $query;
|
||||
close CHLD_IN;
|
||||
my $response = do {local $/; <CHLD_OUT>};
|
||||
|
||||
# Uncomment for debugging the watch response
|
||||
# open ($fh, ">", ".git/watchman-response.json");
|
||||
# print $fh $response;
|
||||
# close $fh;
|
||||
|
||||
die "Watchman: command returned no output.\n" .
|
||||
"Falling back to scanning...\n" if $response eq "";
|
||||
die "Watchman: command returned invalid output: $response\n" .
|
||||
"Falling back to scanning...\n" unless $response =~ /^\{/;
|
||||
|
||||
return $json_pkg->new->utf8->decode($response);
|
||||
}
|
||||
|
||||
sub is_work_tree_watched {
|
||||
my ($output) = @_;
|
||||
my $error = $output->{error};
|
||||
if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) {
|
||||
$retry--;
|
||||
my $response = qx/watchman watch "$git_work_tree"/;
|
||||
die "Failed to make watchman watch '$git_work_tree'.\n" .
|
||||
"Falling back to scanning...\n" if $? != 0;
|
||||
$output = $json_pkg->new->utf8->decode($response);
|
||||
$error = $output->{error};
|
||||
die "Watchman: $error.\n" .
|
||||
"Falling back to scanning...\n" if $error;
|
||||
|
||||
# Uncomment for debugging watchman output
|
||||
# open (my $fh, ">", ".git/watchman-output.out");
|
||||
# close $fh;
|
||||
|
||||
# Watchman will always return all files on the first query so
|
||||
# return the fast "everything is dirty" flag to git and do the
|
||||
# Watchman query just to get it over with now so we won't pay
|
||||
# the cost in git to look up each individual file.
|
||||
my $o = watchman_clock();
|
||||
$error = $output->{error};
|
||||
|
||||
die "Watchman: $error.\n" .
|
||||
"Falling back to scanning...\n" if $error;
|
||||
|
||||
output_result($o->{clock}, ("/"));
|
||||
$last_update_token = $o->{clock};
|
||||
|
||||
eval { launch_watchman() };
|
||||
return 0;
|
||||
}
|
||||
|
||||
die "Watchman: $error.\n" .
|
||||
"Falling back to scanning...\n" if $error;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub get_working_dir {
|
||||
my $working_dir;
|
||||
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
|
||||
$working_dir = Win32::GetCwd();
|
||||
$working_dir =~ tr/\\/\//;
|
||||
} else {
|
||||
require Cwd;
|
||||
$working_dir = Cwd::cwd();
|
||||
}
|
||||
|
||||
return $working_dir;
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare a packed repository for use over
|
||||
# dumb transports.
|
||||
#
|
||||
# To enable this hook, rename this file to "post-update".
|
||||
|
||||
exec git update-server-info
|
|
@ -1,14 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed
|
||||
# by applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-applypatch".
|
||||
|
||||
. git-sh-setup
|
||||
precommit="$(git rev-parse --git-path hooks/pre-commit)"
|
||||
test -x "$precommit" && exec "$precommit" ${1+"$@"}
|
||||
:
|
|
@ -1,49 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed.
|
||||
# Called by "git commit" with no arguments. The hook should
|
||||
# exit with non-zero status after issuing an appropriate message if
|
||||
# it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-commit".
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=$(git hash-object -t tree /dev/null)
|
||||
fi
|
||||
|
||||
# If you want to allow non-ASCII filenames set this variable to true.
|
||||
allownonascii=$(git config --type=bool hooks.allownonascii)
|
||||
|
||||
# Redirect output to stderr.
|
||||
exec 1>&2
|
||||
|
||||
# Cross platform projects tend to avoid non-ASCII filenames; prevent
|
||||
# them from being added to the repository. We exploit the fact that the
|
||||
# printable range starts at the space character and ends with tilde.
|
||||
if [ "$allownonascii" != "true" ] &&
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||
then
|
||||
cat <<\EOF
|
||||
Error: Attempt to add a non-ASCII file name.
|
||||
|
||||
This can cause problems if you want to work with people on other platforms.
|
||||
|
||||
To be portable it is advisable to rename the file.
|
||||
|
||||
If you know what you are doing you can disable this check using:
|
||||
|
||||
git config hooks.allownonascii true
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
exec git diff-index --check --cached $against --
|
|
@ -1,13 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed.
|
||||
# Called by "git merge" with no arguments. The hook should
|
||||
# exit with non-zero status after issuing an appropriate message to
|
||||
# stderr if it wants to stop the merge commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-merge-commit".
|
||||
|
||||
. git-sh-setup
|
||||
test -x "$GIT_DIR/hooks/pre-commit" &&
|
||||
exec "$GIT_DIR/hooks/pre-commit"
|
||||
:
|
|
@ -1,53 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# An example hook script to verify what is about to be pushed. Called by "git
|
||||
# push" after it has checked the remote status, but before anything has been
|
||||
# pushed. If this script exits with a non-zero status nothing will be pushed.
|
||||
#
|
||||
# This hook is called with the following parameters:
|
||||
#
|
||||
# $1 -- Name of the remote to which the push is being done
|
||||
# $2 -- URL to which the push is being done
|
||||
#
|
||||
# If pushing without using a named remote those arguments will be equal.
|
||||
#
|
||||
# Information about the commits which are being pushed is supplied as lines to
|
||||
# the standard input in the form:
|
||||
#
|
||||
# <local ref> <local oid> <remote ref> <remote oid>
|
||||
#
|
||||
# This sample shows how to prevent push of commits where the log message starts
|
||||
# with "WIP" (work in progress).
|
||||
|
||||
remote="$1"
|
||||
url="$2"
|
||||
|
||||
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
|
||||
|
||||
while read local_ref local_oid remote_ref remote_oid
|
||||
do
|
||||
if test "$local_oid" = "$zero"
|
||||
then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if test "$remote_oid" = "$zero"
|
||||
then
|
||||
# New branch, examine all commits
|
||||
range="$local_oid"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_oid..$local_oid"
|
||||
fi
|
||||
|
||||
# Check for WIP commit
|
||||
commit=$(git rev-list -n 1 --grep '^WIP' "$range")
|
||||
if test -n "$commit"
|
||||
then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
|
@ -1,169 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2006, 2008 Junio C Hamano
|
||||
#
|
||||
# The "pre-rebase" hook is run just before "git rebase" starts doing
|
||||
# its job, and can prevent the command from running by exiting with
|
||||
# non-zero status.
|
||||
#
|
||||
# The hook is called with the following parameters:
|
||||
#
|
||||
# $1 -- the upstream the series was forked from.
|
||||
# $2 -- the branch being rebased (or empty when rebasing the current branch).
|
||||
#
|
||||
# This sample shows how to prevent topic branches that are already
|
||||
# merged to 'next' branch from getting rebased, because allowing it
|
||||
# would result in rebasing already published history.
|
||||
|
||||
publish=next
|
||||
basebranch="$1"
|
||||
if test "$#" = 2
|
||||
then
|
||||
topic="refs/heads/$2"
|
||||
else
|
||||
topic=`git symbolic-ref HEAD` ||
|
||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
||||
fi
|
||||
|
||||
case "$topic" in
|
||||
refs/heads/??/*)
|
||||
;;
|
||||
*)
|
||||
exit 0 ;# we do not interrupt others.
|
||||
;;
|
||||
esac
|
||||
|
||||
# Now we are dealing with a topic branch being rebased
|
||||
# on top of master. Is it OK to rebase it?
|
||||
|
||||
# Does the topic really exist?
|
||||
git show-ref -q "$topic" || {
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Is topic fully merged to master?
|
||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
||||
if test -z "$not_in_master"
|
||||
then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
fi
|
||||
|
||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
||||
if test "$only_next_1" = "$only_next_2"
|
||||
then
|
||||
not_in_topic=`git rev-list "^$topic" master`
|
||||
if test -z "$not_in_topic"
|
||||
then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
||||
/usr/bin/perl -e '
|
||||
my $topic = $ARGV[0];
|
||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
||||
my (%not_in_next) = map {
|
||||
/^([0-9a-f]+) /;
|
||||
($1 => 1);
|
||||
} split(/\n/, $ARGV[1]);
|
||||
for my $elem (map {
|
||||
/^([0-9a-f]+) (.*)$/;
|
||||
[$1 => $2];
|
||||
} split(/\n/, $ARGV[2])) {
|
||||
if (!exists $not_in_next{$elem->[0]}) {
|
||||
if ($msg) {
|
||||
print STDERR $msg;
|
||||
undef $msg;
|
||||
}
|
||||
print STDERR " $elem->[1]\n";
|
||||
}
|
||||
}
|
||||
' "$topic" "$not_in_next" "$not_in_master"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
<<\DOC_END
|
||||
|
||||
This sample hook safeguards topic branches that have been
|
||||
published from being rewound.
|
||||
|
||||
The workflow assumed here is:
|
||||
|
||||
* Once a topic branch forks from "master", "master" is never
|
||||
merged into it again (either directly or indirectly).
|
||||
|
||||
* Once a topic branch is fully cooked and merged into "master",
|
||||
it is deleted. If you need to build on top of it to correct
|
||||
earlier mistakes, a new topic branch is created by forking at
|
||||
the tip of the "master". This is not strictly necessary, but
|
||||
it makes it easier to keep your history simple.
|
||||
|
||||
* Whenever you need to test or publish your changes to topic
|
||||
branches, merge them into "next" branch.
|
||||
|
||||
The script, being an example, hardcodes the publish branch name
|
||||
to be "next", but it is trivial to make it configurable via
|
||||
$GIT_DIR/config mechanism.
|
||||
|
||||
With this workflow, you would want to know:
|
||||
|
||||
(1) ... if a topic branch has ever been merged to "next". Young
|
||||
topic branches can have stupid mistakes you would rather
|
||||
clean up before publishing, and things that have not been
|
||||
merged into other branches can be easily rebased without
|
||||
affecting other people. But once it is published, you would
|
||||
not want to rewind it.
|
||||
|
||||
(2) ... if a topic branch has been fully merged to "master".
|
||||
Then you can delete it. More importantly, you should not
|
||||
build on top of it -- other people may already want to
|
||||
change things related to the topic as patches against your
|
||||
"master", so if you need further changes, it is better to
|
||||
fork the topic (perhaps with the same name) afresh from the
|
||||
tip of "master".
|
||||
|
||||
Let's look at this example:
|
||||
|
||||
o---o---o---o---o---o---o---o---o---o "next"
|
||||
/ / / /
|
||||
/ a---a---b A / /
|
||||
/ / / /
|
||||
/ / c---c---c---c B /
|
||||
/ / / \ /
|
||||
/ / / b---b C \ /
|
||||
/ / / / \ /
|
||||
---o---o---o---o---o---o---o---o---o---o---o "master"
|
||||
|
||||
|
||||
A, B and C are topic branches.
|
||||
|
||||
* A has one fix since it was merged up to "next".
|
||||
|
||||
* B has finished. It has been fully merged up to "master" and "next",
|
||||
and is ready to be deleted.
|
||||
|
||||
* C has not merged to "next" at all.
|
||||
|
||||
We would want to allow C to be rebased, refuse A, and encourage
|
||||
B to be deleted.
|
||||
|
||||
To compute (1):
|
||||
|
||||
git rev-list ^master ^topic next
|
||||
git rev-list ^master next
|
||||
|
||||
if these match, topic has not merged in next at all.
|
||||
|
||||
To compute (2):
|
||||
|
||||
git rev-list master..topic
|
||||
|
||||
if this is empty, it is fully merged to "master".
|
||||
|
||||
DOC_END
|
|
@ -1,24 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to make use of push options.
|
||||
# The example simply echoes all push options that start with 'echoback='
|
||||
# and rejects all pushes when the "reject" push option is used.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-receive".
|
||||
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
||||
then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
||||
do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
fi
|
|
@ -1,42 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare the commit log message.
|
||||
# Called by "git commit" with the name of the file that has the
|
||||
# commit message, followed by the description of the commit
|
||||
# message's source. The hook's purpose is to edit the commit
|
||||
# message file. If the hook fails with a non-zero status,
|
||||
# the commit is aborted.
|
||||
#
|
||||
# To enable this hook, rename this file to "prepare-commit-msg".
|
||||
|
||||
# This hook includes three examples. The first one removes the
|
||||
# "# Please enter the commit message..." help message.
|
||||
#
|
||||
# The second includes the output of "git diff --name-status -r"
|
||||
# into the message, just before the "git status" output. It is
|
||||
# commented because it doesn't cope with --amend or with squashed
|
||||
# commits.
|
||||
#
|
||||
# The third example adds a Signed-off-by line to the message, that can
|
||||
# still be edited. This is rarely a good idea.
|
||||
|
||||
COMMIT_MSG_FILE=$1
|
||||
COMMIT_SOURCE=$2
|
||||
SHA1=$3
|
||||
|
||||
/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
|
||||
|
||||
# case "$COMMIT_SOURCE,$SHA1" in
|
||||
# ,|template,)
|
||||
# /usr/bin/perl -i.bak -pe '
|
||||
# print "\n" . `git diff --cached --name-status -r`
|
||||
# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
|
||||
# *) ;;
|
||||
# esac
|
||||
|
||||
# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
|
||||
# if test -z "$COMMIT_SOURCE"
|
||||
# then
|
||||
# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
|
||||
# fi
|
|
@ -1,78 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# An example hook script to update a checked-out tree on a git push.
|
||||
#
|
||||
# This hook is invoked by git-receive-pack(1) when it reacts to git
|
||||
# push and updates reference(s) in its repository, and when the push
|
||||
# tries to update the branch that is currently checked out and the
|
||||
# receive.denyCurrentBranch configuration variable is set to
|
||||
# updateInstead.
|
||||
#
|
||||
# By default, such a push is refused if the working tree and the index
|
||||
# of the remote repository has any difference from the currently
|
||||
# checked out commit; when both the working tree and the index match
|
||||
# the current commit, they are updated to match the newly pushed tip
|
||||
# of the branch. This hook is to be used to override the default
|
||||
# behaviour; however the code below reimplements the default behaviour
|
||||
# as a starting point for convenient modification.
|
||||
#
|
||||
# The hook receives the commit with which the tip of the current
|
||||
# branch is going to be updated:
|
||||
commit=$1
|
||||
|
||||
# It can exit with a non-zero status to refuse the push (when it does
|
||||
# so, it must not modify the index or the working tree).
|
||||
die () {
|
||||
echo >&2 "$*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Or it can make any necessary changes to the working tree and to the
|
||||
# index to bring them to the desired state when the tip of the current
|
||||
# branch is updated to the new commit, and exit with a zero status.
|
||||
#
|
||||
# For example, the hook can simply run git read-tree -u -m HEAD "$1"
|
||||
# in order to emulate git fetch that is run in the reverse direction
|
||||
# with git push, as the two-tree form of git read-tree -u -m is
|
||||
# essentially the same as git switch or git checkout that switches
|
||||
# branches while keeping the local changes in the working tree that do
|
||||
# not interfere with the difference between the branches.
|
||||
|
||||
# The below is a more-or-less exact translation to shell of the C code
|
||||
# for the default behaviour for git's push-to-checkout hook defined in
|
||||
# the push_to_deploy() function in builtin/receive-pack.c.
|
||||
#
|
||||
# Note that the hook will be executed from the repository directory,
|
||||
# not from the working tree, so if you want to perform operations on
|
||||
# the working tree, you will have to adapt your code accordingly, e.g.
|
||||
# by adding "cd .." or using relative paths.
|
||||
|
||||
if ! git update-index -q --ignore-submodules --refresh
|
||||
then
|
||||
die "Up-to-date check failed"
|
||||
fi
|
||||
|
||||
if ! git diff-files --quiet --ignore-submodules --
|
||||
then
|
||||
die "Working directory has unstaged changes"
|
||||
fi
|
||||
|
||||
# This is a rough translation of:
|
||||
#
|
||||
# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX
|
||||
if git cat-file -e HEAD 2>/dev/null
|
||||
then
|
||||
head=HEAD
|
||||
else
|
||||
head=$(git hash-object -t tree --stdin </dev/null)
|
||||
fi
|
||||
|
||||
if ! git diff-index --quiet --cached --ignore-submodules $head --
|
||||
then
|
||||
die "Working directory has staged changes"
|
||||
fi
|
||||
|
||||
if ! git read-tree -u -m "$commit"
|
||||
then
|
||||
die "Could not update working tree to new HEAD"
|
||||
fi
|
|
@ -1,128 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to block unannotated tags from entering.
|
||||
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
|
||||
#
|
||||
# To enable this hook, rename this file to "update".
|
||||
#
|
||||
# Config
|
||||
# ------
|
||||
# hooks.allowunannotated
|
||||
# This boolean sets whether unannotated tags will be allowed into the
|
||||
# repository. By default they won't be.
|
||||
# hooks.allowdeletetag
|
||||
# This boolean sets whether deleting tags will be allowed in the
|
||||
# repository. By default they won't be.
|
||||
# hooks.allowmodifytag
|
||||
# This boolean sets whether a tag may be modified after creation. By default
|
||||
# it won't be.
|
||||
# hooks.allowdeletebranch
|
||||
# This boolean sets whether deleting branches will be allowed in the
|
||||
# repository. By default they won't be.
|
||||
# hooks.denycreatebranch
|
||||
# This boolean sets whether remotely creating branches will be denied
|
||||
# in the repository. By default this is allowed.
|
||||
#
|
||||
|
||||
# --- Command line
|
||||
refname="$1"
|
||||
oldrev="$2"
|
||||
newrev="$3"
|
||||
|
||||
# --- Safety check
|
||||
if [ -z "$GIT_DIR" ]; then
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Config
|
||||
allowunannotated=$(git config --type=bool hooks.allowunannotated)
|
||||
allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch)
|
||||
denycreatebranch=$(git config --type=bool hooks.denycreatebranch)
|
||||
allowdeletetag=$(git config --type=bool hooks.allowdeletetag)
|
||||
allowmodifytag=$(git config --type=bool hooks.allowmodifytag)
|
||||
|
||||
# check for no description
|
||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
||||
case "$projectdesc" in
|
||||
"Unnamed repository"* | "")
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Check types
|
||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
||||
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
|
||||
if [ "$newrev" = "$zero" ]; then
|
||||
newrev_type=delete
|
||||
else
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
fi
|
||||
|
||||
case "$refname","$newrev_type" in
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
||||
then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Finished
|
||||
exit 0
|
Binary file not shown.
|
@ -1,6 +0,0 @@
|
|||
# git ls-files --others --exclude-from=.git/info/exclude
|
||||
# Lines that start with '#' are comments.
|
||||
# For a project mostly in C, the following would be a good set of
|
||||
# exclude patterns (uncomment them if you want to use them):
|
||||
# *.[oa]
|
||||
# *~
|
|
@ -1 +0,0 @@
|
|||
0000000000000000000000000000000000000000 703b16b742b753f6ad077b5c7f51947d1926c530 Andrew Scott <git@acscott.dev> 1668497473 -0500 clone: from https://git.sr.ht/~theorytoe/everforest-theme
|
|
@ -1 +0,0 @@
|
|||
0000000000000000000000000000000000000000 703b16b742b753f6ad077b5c7f51947d1926c530 Andrew Scott <git@acscott.dev> 1668497473 -0500 clone: from https://git.sr.ht/~theorytoe/everforest-theme
|
|
@ -1 +0,0 @@
|
|||
0000000000000000000000000000000000000000 703b16b742b753f6ad077b5c7f51947d1926c530 Andrew Scott <git@acscott.dev> 1668497473 -0500 clone: from https://git.sr.ht/~theorytoe/everforest-theme
|
Binary file not shown.
Binary file not shown.
|
@ -1,2 +0,0 @@
|
|||
# pack-refs with: peeled fully-peeled sorted
|
||||
703b16b742b753f6ad077b5c7f51947d1926c530 refs/remotes/origin/master
|
|
@ -1 +0,0 @@
|
|||
703b16b742b753f6ad077b5c7f51947d1926c530
|
|
@ -1 +0,0 @@
|
|||
ref: refs/remotes/origin/master
|
|
@ -1,805 +0,0 @@
|
|||
;;; everforest-hard-dark-theme.el --- Everforest Hard Dark Theme -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2022 Evan Sarris
|
||||
|
||||
;; Author: Theory_of_Everything <evan@theoryware.net>
|
||||
;; URL: https://git.sr.ht/~theorytoe/everforest-theme
|
||||
;; Version: 0.1
|
||||
;; Package-Requires: ((emacs "24"))
|
||||
|
||||
;; This file is not part of GNU Emacs.
|
||||
|
||||
;; This file is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 3, or (at your option)
|
||||
;; any later version.
|
||||
|
||||
;; This file is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License v3.0 for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
;; Everforest hard dark
|
||||
|
||||
;;; Code:
|
||||
|
||||
(deftheme everforest-hard-dark
|
||||
"Everforest Hard Dark - sainnhe/everforest hard dark port to emacs")
|
||||
|
||||
(defvar everforest-hard-dark-colors-alist
|
||||
(let ((colors `(("everforest-hard-dark-accent" . "#a7c080")
|
||||
("everforest-hard-dark-fg" . "#d3c6aa")
|
||||
("everforest-hard-dark-bg" . "#2b3339")
|
||||
("everforest-hard-dark-bg-1" . "#323c41")
|
||||
("everforest-hard-dark-bg-hl" . "#3a454a")
|
||||
("everforest-hard-dark-gutter" . "#445055")
|
||||
("everforest-hard-dark-mono-1" . "#abb2bf")
|
||||
("everforest-hard-dark-mono-2" . "#503946")
|
||||
("everforest-hard-dark-mono-3" . "#859289")
|
||||
("everforest-hard-dark-cyan" . "#83c092")
|
||||
("everforest-hard-dark-blue" . "#7fbbb3")
|
||||
("everforest-hard-dark-purple" . "#d699b6")
|
||||
("everforest-hard-dark-green" . "#a7c080")
|
||||
("everforest-hard-dark-red" . "#e67e80")
|
||||
("everforest-hard-dark-orange" . "#e69875")
|
||||
("everforest-hard-dark-yellow" . "#ddbc7f")
|
||||
("everforest-hard-dark-gray" . "#323c41")
|
||||
("everforest-hard-dark-silver" . "#9da9a0")
|
||||
("everforest-hard-dark-black" . "#2b3339")
|
||||
("everforest-hard-dark-border" . "#445055")
|
||||
("everforest-hard-dark-visual" . "#323c41"))))
|
||||
colors)
|
||||
"List of Everforest Hard Dark Colors.")
|
||||
|
||||
(defmacro everforest-hard-dark-with-color-variables (&rest body)
|
||||
"Bind the colors list around BODY."
|
||||
(declare (indent 0))
|
||||
`(let ((class '((class color) (min-colors 89)))
|
||||
,@ (mapcar (lambda (cons)
|
||||
(list (intern (car cons)) (cdr cons)))
|
||||
everforest-hard-dark-colors-alist))
|
||||
,@body))
|
||||
|
||||
(everforest-hard-dark-with-color-variables
|
||||
(custom-theme-set-faces
|
||||
'everforest-hard-dark
|
||||
|
||||
`(default ((t (:foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-bg))))
|
||||
`(success ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(warning ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(error ((t (:foreground ,everforest-hard-dark-red :weight bold))))
|
||||
`(link ((t (:foreground ,everforest-hard-dark-blue :underline t :weight bold))))
|
||||
`(link-visited ((t (:foreground ,everforest-hard-dark-blue :underline t :weight normal))))
|
||||
`(cursor ((t (:background ,everforest-hard-dark-fg))))
|
||||
`(fringe ((t (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-silver))))
|
||||
`(region ((t (:background ,everforest-hard-dark-gray :distant-foreground ,everforest-hard-dark-mono-2))))
|
||||
`(highlight ((t (:background ,everforest-hard-dark-gray :distant-foreground ,everforest-hard-dark-mono-2))))
|
||||
`(hl-line ((t (:background ,everforest-hard-dark-visual :distant-foreground nil))))
|
||||
`(header-line ((t (:background ,everforest-hard-dark-black))))
|
||||
`(vertical-border ((t (:background ,everforest-hard-dark-border :foreground ,everforest-hard-dark-border))))
|
||||
`(secondary-selection ((t (:background ,everforest-hard-dark-bg-1))))
|
||||
`(query-replace ((t (:inherit (isearch)))))
|
||||
`(minibuffer-prompt ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(tooltip ((t (:foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-bg-1 :inherit variable-pitch))))
|
||||
|
||||
`(font-lock-builtin-face ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(font-lock-comment-face ((t (:foreground ,everforest-hard-dark-mono-3 :slant italic))))
|
||||
`(font-lock-comment-delimiter-face ((default (:inherit (font-lock-comment-face)))))
|
||||
`(font-lock-doc-face ((t (:inherit (font-lock-string-face)))))
|
||||
`(font-lock-function-name-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(font-lock-keyword-face ((t (:foreground ,everforest-hard-dark-red :weight normal))))
|
||||
`(font-lock-preprocessor-face ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(font-lock-string-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(font-lock-type-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(font-lock-constant-face ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(font-lock-variable-name-face ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(font-lock-warning-face ((t (:foreground ,everforest-hard-dark-mono-3 :bold t))))
|
||||
`(font-lock-negation-char-face ((t (:foreground ,everforest-hard-dark-cyan :bold t))))
|
||||
`(highlight-numbers-number ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
|
||||
;; eob
|
||||
`(vi-tilde-fringe-face ((t (:foreground ,everforest-hard-dark-silver))))
|
||||
`(solaire-fringe-face ((t (:foreground ,everforest-hard-dark-silver))))
|
||||
|
||||
;; mode-line
|
||||
`(mode-line ((t (:background ,everforest-hard-dark-visual :foreground ,everforest-hard-dark-silver))))
|
||||
`(mode-line-buffer-id ((t (:weight bold))))
|
||||
`(mode-line-emphasis ((t (:weight bold))))
|
||||
`(mode-line-inactive ((t (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-silver))))
|
||||
|
||||
;; window-divider
|
||||
`(window-divider ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(window-divider-first-pixel ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(window-divider-last-pixel ((t (:foreground ,everforest-hard-dark-border))))
|
||||
|
||||
;; custom
|
||||
`(custom-state ((t (:foreground ,everforest-hard-dark-green))))
|
||||
|
||||
;; Package/Plugin Customizations
|
||||
|
||||
;; ido
|
||||
`(ido-first-match ((t (:foreground ,everforest-hard-dark-purple :weight bold))))
|
||||
`(ido-only-match ((t (:foreground ,everforest-hard-dark-red :weight bold))))
|
||||
`(ido-subdir ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(ido-virtual ((t (:foreground ,everforest-hard-dark-mono-3))))
|
||||
|
||||
;; ace-jump
|
||||
`(ace-jump-face-background ((t (:foreground ,everforest-hard-dark-mono-3 :background ,everforest-hard-dark-bg-1 :inverse-video nil))))
|
||||
`(ace-jump-face-foreground ((t (:foreground ,everforest-hard-dark-red :background ,everforest-hard-dark-bg-1 :inverse-video nil))))
|
||||
|
||||
;; ace-window
|
||||
`(aw-background-face ((t (:inherit font-lock-comment-face))))
|
||||
`(aw-leading-char-face ((t (:foreground ,everforest-hard-dark-red :weight bold))))
|
||||
|
||||
;; centaur-tabs
|
||||
`(centaur-tabs-default ((t (:background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-black))))
|
||||
`(centaur-tabs-selected ((t (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-fg :weight bold))))
|
||||
`(centaur-tabs-unselected ((t (:background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-fg :weight light))))
|
||||
`(centaur-tabs-selected-modified ((t (:background ,everforest-hard-dark-bg
|
||||
:foreground ,everforest-hard-dark-blue :weight bold))))
|
||||
`(centaur-tabs-unselected-modified ((t (:background ,everforest-hard-dark-black :weight light
|
||||
:foreground ,everforest-hard-dark-blue))))
|
||||
`(centaur-tabs-active-bar-face ((t (:background ,everforest-hard-dark-accent))))
|
||||
`(centaur-tabs-modified-marker-selected ((t (:inherit 'centaur-tabs-selected :foreground,everforest-hard-dark-accent))))
|
||||
`(centaur-tabs-modified-marker-unselected ((t (:inherit 'centaur-tabs-unselected :foreground,everforest-hard-dark-accent))))
|
||||
|
||||
;; company-mode
|
||||
`(company-tooltip ((t (:foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-gray))))
|
||||
`(company-tooltip-annotation ((t (:foreground ,everforest-hard-dark-mono-2 :background ,everforest-hard-dark-gray))))
|
||||
`(company-tooltip-annotation-selection ((t (:foreground ,everforest-hard-dark-mono-2 :background ,everforest-hard-dark-mono-3))))
|
||||
`(company-tooltip-selection ((t (:foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-mono-3))))
|
||||
`(company-tooltip-mouse ((t (:background ,everforest-hard-dark-gray))))
|
||||
`(company-tooltip-common ((t (:foreground ,everforest-hard-dark-yellow :background ,everforest-hard-dark-gray))))
|
||||
`(company-tooltip-common-selection ((t (:foreground ,everforest-hard-dark-yellow :background ,everforest-hard-dark-mono-3))))
|
||||
`(company-preview ((t (:background ,everforest-hard-dark-bg))))
|
||||
`(company-preview-common ((t (:foreground ,everforest-hard-dark-yellow :background ,everforest-hard-dark-bg))))
|
||||
`(company-scrollbar-fg ((t (:background ,everforest-hard-dark-mono-1))))
|
||||
`(company-scrollbar-bg ((t (:background ,everforest-hard-dark-gray))))
|
||||
`(company-template-field ((t (:inherit highlight))))
|
||||
|
||||
;; doom-modeline
|
||||
`(doom-modeline-bar ((t (:background ,everforest-hard-dark-accent))))
|
||||
|
||||
;; flyspell
|
||||
`(flyspell-duplicate ((t (:underline (:color ,everforest-hard-dark-cyan :style wave)))))
|
||||
`(flyspell-incorrect ((t (:underline (:color ,everforest-hard-dark-red :style wave)))))
|
||||
|
||||
;; flymake
|
||||
`(flymake-error ((t (:underline (:color ,everforest-hard-dark-red :style wave)))))
|
||||
`(flymake-note ((t (:underline (:color ,everforest-hard-dark-green :style wave)))))
|
||||
`(flymake-warning ((t (:underline (:color ,everforest-hard-dark-orange :style wave)))))
|
||||
|
||||
;; flycheck
|
||||
`(flycheck-error ((t (:underline (:color ,everforest-hard-dark-red :style wave)))))
|
||||
`(flycheck-info ((t (:underline (:color ,everforest-hard-dark-green :style wave)))))
|
||||
`(flycheck-warning ((t (:underline (:color ,everforest-hard-dark-orange :style wave)))))
|
||||
|
||||
;; compilation
|
||||
`(compilation-face ((t (:foreground ,everforest-hard-dark-fg))))
|
||||
`(compilation-line-number ((t (:foreground ,everforest-hard-dark-mono-2))))
|
||||
`(compilation-column-number ((t (:foreground ,everforest-hard-dark-mono-2))))
|
||||
`(compilation-mode-line-exit ((t (:inherit compilation-info :weight bold))))
|
||||
`(compilation-mode-line-fail ((t (:inherit compilation-error :weight bold))))
|
||||
|
||||
;; isearch
|
||||
`(isearch ((t (:foreground ,everforest-hard-dark-bg :background ,everforest-hard-dark-purple))))
|
||||
`(isearch-fail ((t (:foreground ,everforest-hard-dark-red :background nil))))
|
||||
`(lazy-highlight ((t (:foreground ,everforest-hard-dark-purple :background ,everforest-hard-dark-bg-1 :underline ,everforest-hard-dark-purple))))
|
||||
|
||||
;; diff-hl (https://github.com/dgutov/diff-hl)
|
||||
'(diff-hl-change ((t (:foreground "#E9C062" :background "#8b733a"))))
|
||||
'(diff-hl-delete ((t (:foreground "#CC6666" :background "#7a3d3d"))))
|
||||
'(diff-hl-insert ((t (:foreground "#A8FF60" :background "#547f30"))))
|
||||
|
||||
;; dired-mode
|
||||
'(dired-directory ((t (:inherit (font-lock-keyword-face)))))
|
||||
'(dired-flagged ((t (:inherit (diff-hl-delete)))))
|
||||
'(dired-symlink ((t (:foreground "#FD5FF1"))))
|
||||
`(diredfl-file-name ((t (:foreground ,everforest-hard-dark-fg))))
|
||||
`(diredfl-file-suffix ((t (:foreground ,everforest-hard-dark-fg))))
|
||||
`(diredfl-number ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(diredfl-date-time ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(diredfl-no-priv ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(diredfl-dir-priv ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(diredfl-read-priv ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(diredfl-write-priv ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(diredfl-exec-priv ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(diredfl-link-priv ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(diredfl-dir-heading ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
|
||||
;; dired-async
|
||||
`(dired-async-failures ((t (:inherit error))))
|
||||
`(dired-async-message ((t (:inherit success))))
|
||||
`(dired-async-mode-message ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
|
||||
;; helm
|
||||
`(helm-header ((t (:foreground ,everforest-hard-dark-mono-2
|
||||
:background ,everforest-hard-dark-bg
|
||||
:underline nil
|
||||
:box (:line-width 6 :color ,everforest-hard-dark-bg)))))
|
||||
`(helm-source-header ((t (:foreground ,everforest-hard-dark-yellow
|
||||
:background ,everforest-hard-dark-bg
|
||||
:underline nil
|
||||
:weight bold
|
||||
:box (:line-width 6 :color ,everforest-hard-dark-bg)))))
|
||||
`(helm-selection ((t (:background ,everforest-hard-dark-gray))))
|
||||
`(helm-selection-line ((t (:background ,everforest-hard-dark-gray))))
|
||||
`(helm-visible-mark ((t (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-yellow))))
|
||||
`(helm-candidate-number ((t (:foreground ,everforest-hard-dark-green :background ,everforest-hard-dark-bg-1))))
|
||||
`(helm-separator ((t (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-red))))
|
||||
`(helm-M-x-key ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(helm-bookmark-addressbook ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(helm-bookmark-directory ((t (:foreground nil :background nil :inherit helm-ff-directory))))
|
||||
`(helm-bookmark-file ((t (:foreground nil :background nil :inherit helm-ff-file))))
|
||||
`(helm-bookmark-gnus ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(helm-bookmark-info ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(helm-bookmark-man ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(helm-bookmark-w3m ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(helm-match ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(helm-ff-directory ((t (:foreground ,everforest-hard-dark-cyan :background ,everforest-hard-dark-bg :weight bold))))
|
||||
`(helm-ff-file ((t (:foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-bg :weight normal))))
|
||||
`(helm-ff-executable ((t (:foreground ,everforest-hard-dark-green :background ,everforest-hard-dark-bg :weight normal))))
|
||||
`(helm-ff-invalid-symlink ((t (:foreground ,everforest-hard-dark-red :background ,everforest-hard-dark-bg :weight bold))))
|
||||
`(helm-ff-symlink ((t (:foreground ,everforest-hard-dark-yellow :background ,everforest-hard-dark-bg :weight bold))))
|
||||
`(helm-ff-prefix ((t (:foreground ,everforest-hard-dark-bg :background ,everforest-hard-dark-yellow :weight normal))))
|
||||
`(helm-buffer-not-saved ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(helm-buffer-process ((t (:foreground ,everforest-hard-dark-mono-2))))
|
||||
`(helm-buffer-saved-out ((t (:foreground ,everforest-hard-dark-fg))))
|
||||
`(helm-buffer-size ((t (:foreground ,everforest-hard-dark-mono-2))))
|
||||
`(helm-buffer-directory ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(helm-grep-cmd-line ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(helm-grep-file ((t (:foreground ,everforest-hard-dark-fg))))
|
||||
`(helm-grep-finish ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(helm-grep-lineno ((t (:foreground ,everforest-hard-dark-mono-2))))
|
||||
`(helm-grep-finish ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(helm-grep-match ((t (:foreground nil :background nil :inherit helm-match))))
|
||||
`(helm-swoop-target-line-block-face ((t (:background ,everforest-hard-dark-mono-3 :foreground "#222222"))))
|
||||
`(helm-swoop-target-line-face ((t (:background ,everforest-hard-dark-mono-3 :foreground "#222222"))))
|
||||
`(helm-swoop-target-word-face ((t (:background ,everforest-hard-dark-purple :foreground "#ffffff"))))
|
||||
`(helm-locate-finish ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(info-menu-star ((t (:foreground ,everforest-hard-dark-red))))
|
||||
|
||||
;; ivy
|
||||
`(ivy-confirm-face ((t (:inherit minibuffer-prompt :foreground ,everforest-hard-dark-green))))
|
||||
`(ivy-current-match ((t (:background ,everforest-hard-dark-gray :weight normal))))
|
||||
`(ivy-highlight-face ((t (:inherit font-lock-builtin-face))))
|
||||
`(ivy-match-required-face ((t (:inherit minibuffer-prompt :foreground ,everforest-hard-dark-red))))
|
||||
`(ivy-minibuffer-match-face-1 ((t (:background ,everforest-hard-dark-bg-hl))))
|
||||
`(ivy-minibuffer-match-face-2 ((t (:inherit ivy-minibuffer-match-face-1 :background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-purple :weight semi-bold))))
|
||||
`(ivy-minibuffer-match-face-3 ((t (:inherit ivy-minibuffer-match-face-2 :background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-green :weight semi-bold))))
|
||||
`(ivy-minibuffer-match-face-4 ((t (:inherit ivy-minibuffer-match-face-2 :background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-yellow :weight semi-bold))))
|
||||
`(ivy-minibuffer-match-highlight ((t (:inherit ivy-current-match))))
|
||||
`(ivy-modified-buffer ((t (:inherit default :foreground ,everforest-hard-dark-orange))))
|
||||
`(ivy-virtual ((t (:inherit font-lock-builtin-face :slant italic))))
|
||||
|
||||
;; counsel
|
||||
`(counsel-key-binding ((t (:foreground ,everforest-hard-dark-yellow :weight bold))))
|
||||
|
||||
;; swiper
|
||||
`(swiper-match-face-1 ((t (:inherit ivy-minibuffer-match-face-1))))
|
||||
`(swiper-match-face-2 ((t (:inherit ivy-minibuffer-match-face-2))))
|
||||
`(swiper-match-face-3 ((t (:inherit ivy-minibuffer-match-face-3))))
|
||||
`(swiper-match-face-4 ((t (:inherit ivy-minibuffer-match-face-4))))
|
||||
|
||||
;; git-commit
|
||||
`(git-commit-comment-action ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(git-commit-comment-branch ((t (:foreground ,everforest-hard-dark-blue :weight bold))))
|
||||
`(git-commit-comment-heading ((t (:foreground ,everforest-hard-dark-yellow :weight bold))))
|
||||
|
||||
;; git-gutter
|
||||
`(git-gutter:added ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(git-gutter:deleted ((t (:foreground ,everforest-hard-dark-red :weight bold))))
|
||||
`(git-gutter:modified ((t (:foreground ,everforest-hard-dark-orange :weight bold))))
|
||||
|
||||
;; eshell
|
||||
`(eshell-ls-archive ((t (:foreground ,everforest-hard-dark-purple :weight bold))))
|
||||
`(eshell-ls-backup ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(eshell-ls-clutter ((t (:foreground ,everforest-hard-dark-red :weight bold))))
|
||||
`(eshell-ls-directory ((t (:foreground ,everforest-hard-dark-blue :weight bold))))
|
||||
`(eshell-ls-executable ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(eshell-ls-missing ((t (:foreground ,everforest-hard-dark-red :weight bold))))
|
||||
`(eshell-ls-product ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(eshell-ls-special ((t (:foreground "#FD5FF1" :weight bold))))
|
||||
`(eshell-ls-symlink ((t (:foreground ,everforest-hard-dark-cyan :weight bold))))
|
||||
`(eshell-ls-unreadable ((t (:foreground ,everforest-hard-dark-mono-1))))
|
||||
`(eshell-prompt ((t (:inherit minibuffer-prompt))))
|
||||
|
||||
;; man
|
||||
`(Man-overstrike ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(Man-underline ((t (:inherit font-lock-keyword-face :slant italic :weight bold))))
|
||||
|
||||
;; woman
|
||||
`(woman-bold ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(woman-italic ((t (:inherit font-lock-keyword-face :slant italic :weight bold))))
|
||||
|
||||
;; dictionary
|
||||
`(dictionary-button-face ((t (:inherit widget-button))))
|
||||
`(dictionary-reference-face ((t (:inherit font-lock-type-face :weight bold))))
|
||||
`(dictionary-word-entry-face ((t (:inherit font-lock-keyword-face :slant italic :weight bold))))
|
||||
|
||||
;; erc
|
||||
`(erc-error-face ((t (:inherit error))))
|
||||
`(erc-input-face ((t (:inherit shadow))))
|
||||
`(erc-my-nick-face ((t (:foreground ,everforest-hard-dark-accent))))
|
||||
`(erc-notice-face ((t (:inherit font-lock-comment-face))))
|
||||
`(erc-timestamp-face ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
|
||||
;; jabber
|
||||
`(jabber-roster-user-online ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(jabber-roster-user-away ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(jabber-roster-user-xa ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(jabber-roster-user-dnd ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(jabber-roster-user-chatty ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(jabber-roster-user-error ((t (:foreground ,everforest-hard-dark-red :bold t))))
|
||||
`(jabber-roster-user-offline ((t (:foreground ,everforest-hard-dark-mono-3))))
|
||||
`(jabber-chat-prompt-local ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(jabber-chat-prompt-foreign ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(jabber-chat-prompt-system ((t (:foreground ,everforest-hard-dark-mono-3))))
|
||||
`(jabber-chat-error ((t (:inherit jabber-roster-user-error))))
|
||||
`(jabber-rare-time-face ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(jabber-activity-face ((t (:inherit jabber-chat-prompt-foreign))))
|
||||
`(jabber-activity-personal-face ((t (:inherit jabber-chat-prompt-local))))
|
||||
|
||||
;; eww
|
||||
`(eww-form-checkbox ((t (:inherit eww-form-submit))))
|
||||
`(eww-form-file ((t (:inherit eww-form-submit))))
|
||||
`(eww-form-select ((t (:inherit eww-form-submit))))
|
||||
`(eww-form-submit ((t (:background ,everforest-hard-dark-gray :foreground ,everforest-hard-dark-fg :box (:line-width 2 :color ,everforest-hard-dark-border :style released-button)))))
|
||||
`(eww-form-text ((t (:inherit widget-field :box (:line-width 1 :color ,everforest-hard-dark-border)))))
|
||||
`(eww-form-textarea ((t (:inherit eww-form-text))))
|
||||
`(eww-invalid-certificate ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(eww-valid-certificate ((t (:foreground ,everforest-hard-dark-green))))
|
||||
|
||||
;; ediff
|
||||
`(ediff-fine-diff-Ancestor ((t (:background "#885555"))))
|
||||
`(ediff-fine-diff-A ((t (:background "#885555"))))
|
||||
`(ediff-fine-diff-B ((t (:background "#558855"))))
|
||||
`(ediff-fine-diff-C ((t (:background "#555588"))))
|
||||
`(ediff-current-diff-Ancestor ((t (:background "#663333"))))
|
||||
`(ediff-current-diff-A ((t (:background "#663333"))))
|
||||
`(ediff-current-diff-B ((t (:background "#336633"))))
|
||||
`(ediff-current-diff-C ((t (:background "#333366"))))
|
||||
`(ediff-even-diff-Ancestor ((t (:background "#181a1f"))))
|
||||
`(ediff-even-diff-A ((t (:background "#181a1f"))))
|
||||
`(ediff-even-diff-B ((t (:background "#181a1f"))))
|
||||
`(ediff-even-diff-C ((t (:background "#181a1f"))))
|
||||
`(ediff-odd-diff-Ancestor ((t (:background "#181a1f"))))
|
||||
`(ediff-odd-diff-A ((t (:background "#181a1f"))))
|
||||
`(ediff-odd-diff-B ((t (:background "#181a1f"))))
|
||||
`(ediff-odd-diff-C ((t (:background "#181a1f"))))
|
||||
|
||||
;; magit
|
||||
`(magit-section-highlight ((t (:background ,everforest-hard-dark-bg-hl))))
|
||||
`(magit-section-heading ((t (:foreground ,everforest-hard-dark-yellow :weight bold))))
|
||||
`(magit-section-heading-selection ((t (:foreground ,everforest-hard-dark-fg :weight bold))))
|
||||
`(magit-diff-file-heading ((t (:weight bold))))
|
||||
`(magit-diff-file-heading-highlight ((t (:background ,everforest-hard-dark-gray :weight bold))))
|
||||
`(magit-diff-file-heading-selection ((t (:foreground ,everforest-hard-dark-yellow :background ,everforest-hard-dark-bg-hl :weight bold))))
|
||||
`(magit-diff-hunk-heading ((t (:foreground ,everforest-hard-dark-mono-2 :background ,everforest-hard-dark-gray))))
|
||||
`(magit-diff-hunk-heading-highlight ((t (:foreground ,everforest-hard-dark-mono-1 :background ,everforest-hard-dark-mono-3))))
|
||||
`(magit-diff-hunk-heading-selection ((t (:foreground ,everforest-hard-dark-purple :background ,everforest-hard-dark-mono-3))))
|
||||
`(magit-diff-context ((t (:foreground ,everforest-hard-dark-fg))))
|
||||
`(magit-diff-context-highlight ((t (:background ,everforest-hard-dark-bg-1 :foreground ,everforest-hard-dark-fg))))
|
||||
`(magit-diffstat-added ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(magit-diffstat-removed ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(magit-process-ok ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(magit-process-ng ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(magit-log-author ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(magit-log-date ((t (:foreground ,everforest-hard-dark-mono-2))))
|
||||
`(magit-log-graph ((t (:foreground ,everforest-hard-dark-silver))))
|
||||
`(magit-sequence-pick ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(magit-sequence-stop ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(magit-sequence-part ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(magit-sequence-head ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(magit-sequence-drop ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(magit-sequence-done ((t (:foreground ,everforest-hard-dark-mono-2))))
|
||||
`(magit-sequence-onto ((t (:foreground ,everforest-hard-dark-mono-2))))
|
||||
`(magit-bisect-good ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(magit-bisect-skip ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(magit-bisect-bad ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(magit-blame-heading ((t (:background ,everforest-hard-dark-bg-1 :foreground ,everforest-hard-dark-mono-2))))
|
||||
`(magit-blame-hash ((t (:background ,everforest-hard-dark-bg-1 :foreground ,everforest-hard-dark-purple))))
|
||||
`(magit-blame-name ((t (:background ,everforest-hard-dark-bg-1 :foreground ,everforest-hard-dark-yellow))))
|
||||
`(magit-blame-date ((t (:background ,everforest-hard-dark-bg-1 :foreground ,everforest-hard-dark-mono-3))))
|
||||
`(magit-blame-summary ((t (:background ,everforest-hard-dark-bg-1 :foreground ,everforest-hard-dark-mono-2))))
|
||||
`(magit-dimmed ((t (:foreground ,everforest-hard-dark-mono-2))))
|
||||
`(magit-hash ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(magit-tag ((t (:foreground ,everforest-hard-dark-orange :weight bold))))
|
||||
`(magit-branch-remote ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(magit-branch-local ((t (:foreground ,everforest-hard-dark-blue :weight bold))))
|
||||
`(magit-branch-current ((t (:foreground ,everforest-hard-dark-blue :weight bold :box t))))
|
||||
`(magit-head ((t (:foreground ,everforest-hard-dark-blue :weight bold))))
|
||||
`(magit-refname ((t (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-fg :weight bold))))
|
||||
`(magit-refname-stash ((t (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-fg :weight bold))))
|
||||
`(magit-refname-wip ((t (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-fg :weight bold))))
|
||||
`(magit-signature-good ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(magit-signature-bad ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(magit-signature-untrusted ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(magit-cherry-unmatched ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(magit-cherry-equivalent ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(magit-reflog-commit ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(magit-reflog-amend ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(magit-reflog-merge ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(magit-reflog-checkout ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(magit-reflog-reset ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(magit-reflog-rebase ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(magit-reflog-cherry-pick ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(magit-reflog-remote ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(magit-reflog-other ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
|
||||
;; message
|
||||
`(message-cited-text ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(message-header-cc ((t (:foreground ,everforest-hard-dark-orange :weight bold))))
|
||||
`(message-header-name ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(message-header-newsgroups ((t (:foreground ,everforest-hard-dark-yellow :weight bold :slant italic))))
|
||||
`(message-header-other ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(message-header-subject ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(message-header-to ((t (:foreground ,everforest-hard-dark-yellow :weight bold))))
|
||||
`(message-header-xheader ((t (:foreground ,everforest-hard-dark-silver))))
|
||||
`(message-mml ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(message-separator ((t (:foreground ,everforest-hard-dark-mono-3 :slant italic))))
|
||||
|
||||
;; epa
|
||||
`(epa-field-body ((t (:foreground ,everforest-hard-dark-blue :slant italic))))
|
||||
`(epa-field-name ((t (:foreground ,everforest-hard-dark-cyan :weight bold))))
|
||||
|
||||
;; notmuch
|
||||
`(notmuch-crypto-decryption ((t (:foreground ,everforest-hard-dark-purple :background ,everforest-hard-dark-black))))
|
||||
`(notmuch-crypto-signature-bad ((t (:foreground ,everforest-hard-dark-red :background ,everforest-hard-dark-black))))
|
||||
`(notmuch-crypto-signature-good ((t (:foreground ,everforest-hard-dark-green :background ,everforest-hard-dark-black))))
|
||||
`(notmuch-crypto-signature-good-key ((t (:foreground ,everforest-hard-dark-green :background ,everforest-hard-dark-black))))
|
||||
`(notmuch-crypto-signature-unknown ((t (:foreground ,everforest-hard-dark-orange :background ,everforest-hard-dark-black))))
|
||||
`(notmuch-hello-logo-background ((t (:inherit default))))
|
||||
`(notmuch-message-summary-face ((t (:background ,everforest-hard-dark-black))))
|
||||
`(notmuch-search-count ((t (:inherit default :foreground ,everforest-hard-dark-silver))))
|
||||
`(notmuch-search-date ((t (:inherit default :foreground ,everforest-hard-dark-purple))))
|
||||
`(notmuch-search-matching-authors ((t (:inherit default :foreground ,everforest-hard-dark-yellow))))
|
||||
`(notmuch-search-non-matching-authors ((t (:inherit font-lock-comment-face :slant italic))))
|
||||
`(notmuch-tag-added ((t (:underline t))))
|
||||
`(notmuch-tag-deleted ((t (:strike-through ,everforest-hard-dark-red))))
|
||||
`(notmuch-tag-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(notmuch-tag-unread ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(notmuch-tree-match-author-face ((t (:inherit notmuch-search-matching-authors))))
|
||||
`(notmuch-tree-match-date-face ((t (:inherit notmuch-search-date))))
|
||||
`(notmuch-tree-match-face ((t (:weight semi-bold))))
|
||||
`(notmuch-tree-match-tag-face ((t (:inherit notmuch-tag-face))))
|
||||
`(notmuch-tree-no-match-face ((t (:slant italic :weight light :inherit font-lock-comment-face))))
|
||||
|
||||
;; mu4e
|
||||
`(mu4e-header-key-face ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(mu4e-header-title-face ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(mu4e-title-face ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
|
||||
;; calendar
|
||||
`(cfw:face-title ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(cfw:face-select ((t (:foreground ,everforest-hard-dark-bg :background ,everforest-hard-dark-fg))))
|
||||
`(cfw:face-header ((t (:foreground ,everforest-hard-dark-fg :weight bold))))
|
||||
`(cfw:face-sunday ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(cfw:face-holiday ((t (:foreground ,everforest-hard-dark-blue :weight bold))))
|
||||
`(cfw:face-toolbar ((t (:background ,everforest-hard-dark-bg))))
|
||||
`(cfw:face-toolbar-button-on ((t (:foreground ,everforest-hard-dark-fg :weight bold))))
|
||||
`(cfw:face-toolbar-button-off ((t (:foreground ,everforest-hard-dark-silver :weight bold))))
|
||||
`(cfw:face-day-title ((t (:background ,everforest-hard-dark-bg))))
|
||||
`(cfw:face-today-title ((t (:foreground ,everforest-hard-dark-bg :background ,everforest-hard-dark-green))))
|
||||
|
||||
;; elfeed
|
||||
`(elfeed-log-debug-level-face ((t (:background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-green))))
|
||||
`(elfeed-log-error-level-face ((t (:background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-red))))
|
||||
`(elfeed-log-info-level-face ((t (:background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-blue))))
|
||||
`(elfeed-log-warn-level-face ((t (:background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-orange))))
|
||||
`(elfeed-search-date-face ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(elfeed-search-feed-face ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(elfeed-search-tag-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(elfeed-search-title-face ((t (:foreground ,everforest-hard-dark-silver))))
|
||||
`(elfeed-search-unread-title-face ((t (:foreground ,everforest-hard-dark-mono-1 :weight bold))))
|
||||
`(elfeed-search-unread-count-face ((t (:foreground ,everforest-hard-dark-silver))))
|
||||
|
||||
;; perspective
|
||||
`(persp-selected-face ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
|
||||
;; powerline
|
||||
`(powerline-active1 ((,class (:background ,everforest-hard-dark-bg-hl :foreground ,everforest-hard-dark-purple))))
|
||||
`(powerline-active2 ((,class (:background ,everforest-hard-dark-bg-hl :foreground ,everforest-hard-dark-purple))))
|
||||
`(powerline-inactive1 ((,class (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-fg))))
|
||||
`(powerline-inactive2 ((,class (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-fg))))
|
||||
|
||||
;; rainbow-delimiters
|
||||
`(rainbow-delimiters-depth-1-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(rainbow-delimiters-depth-2-face ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(rainbow-delimiters-depth-3-face ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(rainbow-delimiters-depth-4-face ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(rainbow-delimiters-depth-5-face ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(rainbow-delimiters-depth-6-face ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(rainbow-delimiters-depth-7-face ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(rainbow-delimiters-depth-8-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(rainbow-delimiters-depth-9-face ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(rainbow-delimiters-depth-10-face ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(rainbow-delimiters-depth-11-face ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(rainbow-delimiters-depth-12-face ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(rainbow-delimiters-unmatched-face ((t (:foreground ,everforest-hard-dark-red :weight bold))))
|
||||
|
||||
;; rbenv
|
||||
`(rbenv-active-ruby-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
|
||||
;; elixir
|
||||
`(elixir-atom-face ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(elixir-attribute-face ((t (:foreground ,everforest-hard-dark-red))))
|
||||
|
||||
;; show-paren
|
||||
`(show-paren-match ((,class (:foreground ,everforest-hard-dark-purple :inherit bold :underline t))))
|
||||
`(show-paren-mismatch ((,class (:foreground ,everforest-hard-dark-red :inherit bold :underline t))))
|
||||
|
||||
;; cider
|
||||
`(cider-fringe-good-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
|
||||
;; sly
|
||||
`(sly-error-face ((t (:underline (:color ,everforest-hard-dark-red :style wave)))))
|
||||
`(sly-mrepl-note-face ((t (:inherit font-lock-comment-face))))
|
||||
`(sly-mrepl-output-face ((t (:inherit font-lock-string-face))))
|
||||
`(sly-mrepl-prompt-face ((t (:inherit comint-highlight-prompt))))
|
||||
`(sly-note-face ((t (:underline (:color ,everforest-hard-dark-green :style wave)))))
|
||||
`(sly-style-warning-face ((t (:underline (:color ,everforest-hard-dark-yellow :style wave)))))
|
||||
`(sly-warning-face ((t (:underline (:color ,everforest-hard-dark-orange :style wave)))))
|
||||
|
||||
;; smartparens
|
||||
`(sp-show-pair-mismatch-face ((t (:foreground ,everforest-hard-dark-red :background ,everforest-hard-dark-gray :weight bold))))
|
||||
`(sp-show-pair-match-face ((t (:foreground ,everforest-hard-dark-blue :weight bold :underline t))))
|
||||
|
||||
;; lispy
|
||||
`(lispy-face-hint ((t (:background ,everforest-hard-dark-border :foreground ,everforest-hard-dark-yellow))))
|
||||
|
||||
;; lispyville
|
||||
`(lispyville-special-face ((t (:foreground ,everforest-hard-dark-red))))
|
||||
|
||||
;; spaceline
|
||||
`(spaceline-flycheck-error ((,class (:foreground ,everforest-hard-dark-red))))
|
||||
`(spaceline-flycheck-info ((,class (:foreground ,everforest-hard-dark-green))))
|
||||
`(spaceline-flycheck-warning ((,class (:foreground ,everforest-hard-dark-orange))))
|
||||
`(spaceline-python-venv ((,class (:foreground ,everforest-hard-dark-purple))))
|
||||
|
||||
;; solaire mode
|
||||
`(solaire-default-face ((,class (:inherit default :background ,everforest-hard-dark-black))))
|
||||
`(solaire-minibuffer-face ((,class (:inherit default :background ,everforest-hard-dark-black))))
|
||||
|
||||
;; web-mode
|
||||
`(web-mode-doctype-face ((t (:inherit font-lock-comment-face))))
|
||||
`(web-mode-error-face ((t (:background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-red))))
|
||||
`(web-mode-html-attr-equal-face ((t (:inherit default))))
|
||||
`(web-mode-html-attr-name-face ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(web-mode-html-tag-bracket-face ((t (:inherit default))))
|
||||
`(web-mode-html-tag-face ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(web-mode-symbol-face ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
|
||||
;; nxml
|
||||
`(nxml-attribute-local-name ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(nxml-element-local-name ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(nxml-markup-declaration-delimiter ((t (:inherit (font-lock-comment-face nxml-delimiter)))))
|
||||
`(nxml-processing-instruction-delimiter ((t (:inherit nxml-markup-declaration-delimiter))))
|
||||
|
||||
;; flx-ido
|
||||
`(flx-highlight-face ((t (:inherit (link) :weight bold))))
|
||||
|
||||
;; rpm-spec-mode
|
||||
`(rpm-spec-tag-face ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(rpm-spec-obsolete-tag-face ((t (:foreground "#FFFFFF" :background ,everforest-hard-dark-red))))
|
||||
`(rpm-spec-macro-face ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(rpm-spec-var-face ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(rpm-spec-doc-face ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(rpm-spec-dir-face ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(rpm-spec-package-face ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(rpm-spec-ghost-face ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(rpm-spec-section-face ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
|
||||
;; guix
|
||||
`(guix-true ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(guix-build-log-phase-end ((t (:inherit success))))
|
||||
`(guix-build-log-phase-start ((t (:inherit success :weight bold))))
|
||||
|
||||
;; gomoku
|
||||
`(gomoku-O ((t (:foreground ,everforest-hard-dark-red :weight bold))))
|
||||
`(gomoku-X ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
|
||||
;; tabbar
|
||||
`(tabbar-default ((,class (:foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-black))))
|
||||
`(tabbar-highlight ((,class (:underline t))))
|
||||
`(tabbar-button ((,class (:foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-bg))))
|
||||
`(tabbar-button-highlight ((,class (:inherit 'tabbar-button :inverse-video t))))
|
||||
`(tabbar-modified ((,class (:inherit tabbar-button :foreground ,everforest-hard-dark-purple :weight light :slant italic))))
|
||||
`(tabbar-unselected ((,class (:inherit tabbar-default :foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-black :slant italic :underline nil :box (:line-width 1 :color ,everforest-hard-dark-bg)))))
|
||||
`(tabbar-unselected-modified ((,class (:inherit tabbar-modified :background ,everforest-hard-dark-black :underline nil :box (:line-width 1 :color ,everforest-hard-dark-bg)))))
|
||||
`(tabbar-selected ((,class (:inherit tabbar-default :foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-bg :weight bold :underline nil :box (:line-width 1 :color ,everforest-hard-dark-bg)))))
|
||||
`(tabbar-selected-modified ((,class (:inherit tabbar-selected :foreground ,everforest-hard-dark-purple :underline nil :box (:line-width 1 :color ,everforest-hard-dark-bg)))))
|
||||
|
||||
;; linum
|
||||
`(linum ((t (:foreground ,everforest-hard-dark-gutter :background ,everforest-hard-dark-bg))))
|
||||
;; hlinum
|
||||
`(linum-highlight-face ((t (:foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-bg))))
|
||||
;; native line numbers (emacs version >=26)
|
||||
`(line-number ((t (:foreground ,everforest-hard-dark-gutter :background ,everforest-hard-dark-bg))))
|
||||
`(line-number-current-line ((t (:foreground ,everforest-hard-dark-fg :background ,everforest-hard-dark-bg))))
|
||||
|
||||
;; regexp-builder
|
||||
`(reb-match-0 ((t (:background ,everforest-hard-dark-gray))))
|
||||
`(reb-match-1 ((t (:background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-purple :weight semi-bold))))
|
||||
`(reb-match-2 ((t (:background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-green :weight semi-bold))))
|
||||
`(reb-match-3 ((t (:background ,everforest-hard-dark-black :foreground ,everforest-hard-dark-yellow :weight semi-bold))))
|
||||
|
||||
;; desktop-entry
|
||||
`(desktop-entry-deprecated-keyword-face ((t (:inherit font-lock-warning-face))))
|
||||
`(desktop-entry-group-header-face ((t (:inherit font-lock-type-face))))
|
||||
`(desktop-entry-locale-face ((t (:inherit font-lock-string-face))))
|
||||
`(desktop-entry-unknown-keyword-face ((t (:underline (:color ,everforest-hard-dark-red :style wave) :inherit font-lock-keyword-face))))
|
||||
`(desktop-entry-value-face ((t (:inherit default))))
|
||||
|
||||
;; calendar
|
||||
`(diary ((t (:inherit warning))))
|
||||
`(holiday ((t (:foreground ,everforest-hard-dark-green))))
|
||||
|
||||
;; gud
|
||||
`(breakpoint-disabled ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(breakpoint-enabled ((t (:foreground ,everforest-hard-dark-red :weight bold))))
|
||||
|
||||
;; realgud
|
||||
`(realgud-overlay-arrow1 ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(realgud-overlay-arrow3 ((t (:foreground ,everforest-hard-dark-orange)) `(realgud-overlay-arrow2 ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
))
|
||||
'(realgud-bp-enabled-face ((t (:inherit (error)))))
|
||||
`(realgud-bp-disabled-face ((t (:inherit (secondary-selection)))))
|
||||
`(realgud-bp-line-enabled-face ((t (:box (:color ,everforest-hard-dark-red)))))
|
||||
`(realgud-bp-line-disabled-face ((t (:box (:color ,everforest-hard-dark-gray)))))
|
||||
`(realgud-line-number ((t (:foreground ,everforest-hard-dark-mono-2))))
|
||||
`(realgud-backtrace-number ((t (:inherit (secondary-selection)))))
|
||||
|
||||
;; rmsbolt
|
||||
`(rmsbolt-current-line-face ((t (:inherit hl-line :weight bold))))
|
||||
|
||||
;; ruler-mode
|
||||
`(ruler-mode-column-number ((t (:inherit ruler-mode-default))))
|
||||
`(ruler-mode-comment-column ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(ruler-mode-current-column ((t (:foreground ,everforest-hard-dark-accent :inherit ruler-mode-default))))
|
||||
`(ruler-mode-default ((t (:inherit mode-line))))
|
||||
`(ruler-mode-fill-column ((t (:foreground ,everforest-hard-dark-orange :inherit ruler-mode-default))))
|
||||
`(ruler-mode-fringes ((t (:foreground ,everforest-hard-dark-green :inherit ruler-mode-default))))
|
||||
`(ruler-mode-goal-column ((t (:foreground ,everforest-hard-dark-cyan :inherit ruler-mode-default))))
|
||||
`(ruler-mode-margins ((t (:inherit ruler-mode-default))))
|
||||
`(ruler-mode-tab-stop ((t (:foreground ,everforest-hard-dark-mono-3 :inherit ruler-mode-default))))
|
||||
|
||||
;; undo-tree
|
||||
`(undo-tree-visualizer-current-face ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(undo-tree-visualizer-register-face ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(undo-tree-visualizer-unmodified-face ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
|
||||
;; tab-bar-mode
|
||||
`(tab-bar-tab-inactive ((t (:background ,everforest-hard-dark-bg-hl :foreground ,everforest-hard-dark-fg))))
|
||||
`(tab-bar-tab ((t (:background ,everforest-hard-dark-bg :foreground ,everforest-hard-dark-purple))))
|
||||
`(tab-bar ((t (:background ,everforest-hard-dark-bg-hl))))
|
||||
|
||||
;; all-the-icons
|
||||
`(all-the-icons-purple ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(all-the-icons-yellow ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
|
||||
;; dashboard
|
||||
`(dashboard-heading ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(dashboard-items-face ((t (:bold ,everforest-hard-dark-green))))
|
||||
|
||||
;; Language Customizations ----------------------------------------------------------------------
|
||||
;; these laguage customizations are seperate from certain larger lagu
|
||||
|
||||
;; markdown
|
||||
`(markdown-header-face-1 ((t (:foreground ,everforest-hard-dark-red :weight bold))))
|
||||
`(markdown-header-face-2 ((t (:foreground ,everforest-hard-dark-orange :weight bold))))
|
||||
`(markdown-link-face ((t (:foreground ,everforest-hard-dark-purple ))))
|
||||
`(markdown-url-face ((t (:foreground ,everforest-hard-dark-blue :underline t))))
|
||||
`(markdown-plain-url-face ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(markdown-header-delimiter-face ((t (:foreground ,everforest-hard-dark-silver))))
|
||||
`(markdown-language-keyword-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(markdown-markup-face ((t (:foreground ,everforest-hard-dark-silver))))
|
||||
`(markdown-pre-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(markdown-metadata-key-face ((t (:foreground ,everforest-hard-dark-green))))
|
||||
|
||||
;; org-mode
|
||||
`(org-date ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(org-document-info ((t (:foreground ,everforest-hard-dark-mono-3))))
|
||||
`(org-document-info-keyword ((t (:inherit org-meta-line :underline t))))
|
||||
`(org-document-title ((t (:weight bold))))
|
||||
`(org-footnote ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(org-sexp-date ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(org-table ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(org-drawer ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(org-headline-done ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
;; `(org-block ((t (:background ,everforest-hard-dark-bg-hl :foreground ,everforest-hard-dark-silver :extend t))))
|
||||
;; `(org-block-begin-line ((t (:background ,everforest-hard-dark-bg-hl :foreground ,everforest-hard-dark-silver :extend t))))
|
||||
;; `(org-block-end-line ((t (:background ,everforest-hard-dark-bg-hl :foreground ,everforest-hard-dark-silver :extend t))))
|
||||
`(org-level-1 ((t (:foreground ,everforest-hard-dark-green))))
|
||||
`(org-level-2 ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(org-level-3 ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(org-level-4 ((t (:foreground ,everforest-hard-dark-orange))))
|
||||
`(org-level-6 ((t (:foreground ,everforest-hard-dark-blue))))
|
||||
`(org-level-7 ((t (:foreground ,everforest-hard-dark-silver))))
|
||||
`(org-level-8 ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(org-cite ((t (:foreground ,everforest-hard-dark-blue :weight bold))))
|
||||
`(org-cite-key ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(org-hide ((t (:foreground ,everforest-hard-dark-bg))))
|
||||
|
||||
;; latex-mode
|
||||
`(font-latex-sectioning-0-face ((t (:foreground ,everforest-hard-dark-blue :height 1.0))))
|
||||
`(font-latex-sectioning-1-face ((t (:foreground ,everforest-hard-dark-blue :height 1.0))))
|
||||
`(font-latex-sectioning-2-face ((t (:foreground ,everforest-hard-dark-blue :height 1.0))))
|
||||
`(font-latex-sectioning-3-face ((t (:foreground ,everforest-hard-dark-blue :height 1.0))))
|
||||
`(font-latex-sectioning-4-face ((t (:foreground ,everforest-hard-dark-blue :height 1.0))))
|
||||
`(font-latex-sectioning-5-face ((t (:foreground ,everforest-hard-dark-blue :height 1.0))))
|
||||
`(font-latex-bold-face ((t (:foreground ,everforest-hard-dark-green :weight bold))))
|
||||
`(font-latex-italic-face ((t (:foreground ,everforest-hard-dark-green :slant italic))))
|
||||
`(font-latex-warning-face ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(font-latex-doctex-preprocessor-face ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(font-latex-script-char-face ((t (:foreground ,everforest-hard-dark-gray))))
|
||||
|
||||
;; sh-mode
|
||||
`(sh-heredoc ((t (:inherit font-lock-string-face :slant italic))))
|
||||
|
||||
;; js2-mode
|
||||
`(js2-error ((t (:underline (:color ,everforest-hard-dark-red :style wave)))))
|
||||
`(js2-external-variable ((t (:foreground ,everforest-hard-dark-cyan))))
|
||||
`(js2-warning ((t (:underline (:color ,everforest-hard-dark-orange :style wave)))))
|
||||
`(js2-function-call ((t (:inherit (font-lock-function-name-face)))))
|
||||
`(js2-function-param ((t (:foreground ,everforest-hard-dark-mono-1))))
|
||||
`(js2-jsdoc-tag ((t (:foreground ,everforest-hard-dark-purple))))
|
||||
`(js2-jsdoc-type ((t (:foreground ,everforest-hard-dark-yellow))))
|
||||
`(js2-jsdoc-value ((t (:foreground ,everforest-hard-dark-red))))
|
||||
`(js2-object-property ((t (:foreground ,everforest-hard-dark-red))))
|
||||
|
||||
;; whitespace-mode
|
||||
`(whitespace-big-indent ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(whitespace-empty ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(whitespace-hspace ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(whitespace-indentation ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(whitespace-line ((t (:background ,everforest-hard-dark-bg)))) ;; longer than 80
|
||||
`(whitespace-newline ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(whitespace-space ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(whitespace-space-after-tab ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(whitespace-space-before-tab ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(whitespace-tab ((t (:foreground ,everforest-hard-dark-border))))
|
||||
`(whitespace-trailing ((t (:foreground ,everforest-hard-dark-silver))))
|
||||
))
|
||||
|
||||
(everforest-hard-dark-with-color-variables
|
||||
(custom-theme-set-variables
|
||||
'everforest-hard-dark
|
||||
;; fill-column-indicator
|
||||
`(fci-rule-color ,everforest-hard-dark-gray)
|
||||
|
||||
;; tetris
|
||||
;; | Tetromino | Color |
|
||||
;; | O | `everforest-hard-dark-yellow' |
|
||||
;; | J | `everforest-hard-dark-blue' |
|
||||
;; | L | `everforest-hard-dark-orange' |
|
||||
;; | Z | `everforest-hard-dark-red' |
|
||||
;; | S | `everforest-hard-dark-green' |
|
||||
;; | T | `everforest-hard-dark-purple' |
|
||||
;; | I | `everforest-hard-dark-cyan' |
|
||||
'(tetris-x-colors
|
||||
[[229 192 123] [97 175 239] [209 154 102] [224 108 117] [152 195 121] [198 120 221] [86 182 194]])
|
||||
|
||||
;; ansi-color
|
||||
`(ansi-color-names-vector
|
||||
[,everforest-hard-dark-black ,everforest-hard-dark-red ,everforest-hard-dark-green ,everforest-hard-dark-yellow
|
||||
,everforest-hard-dark-blue ,everforest-hard-dark-purple ,everforest-hard-dark-cyan ,everforest-hard-dark-fg])))
|
||||
|
||||
;;;###autoload
|
||||
(and load-file-name
|
||||
(boundp 'custom-theme-load-path)
|
||||
(add-to-list 'custom-theme-load-path
|
||||
(file-name-as-directory
|
||||
(file-name-directory load-file-name))))
|
||||
;; Automatically add this theme to the load path
|
||||
|
||||
(provide-theme 'everforest-hard-dark)
|
||||
|
||||
;; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; End:
|
||||
;;; everforest-hard-dark-theme.el ends here
|
|
@ -1,796 +0,0 @@
|
|||
;;; everforest-hard-light-theme.el --- Everforest Hard light Theme -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2022 Evan Sarris
|
||||
|
||||
;; Author: Theory_of_Everything <evan@theoryware.net>
|
||||
;; URL: https://git.sr.ht/~theorytoe/everforest-theme
|
||||
;; Version: 0.1
|
||||
;; Package-Requires: ((emacs "24"))
|
||||
|
||||
;; This file is not part of GNU Emacs.
|
||||
|
||||
;; This file is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 3, or (at your option)
|
||||
;; any later version.
|
||||
|
||||
;; This file is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License v3.0 for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
;; Everforest hard light
|
||||
|
||||
;;; Code:
|
||||
|
||||
(deftheme everforest-hard-light
|
||||
"Everforest Hard light - sainnhe/everforest hard light port to emacs")
|
||||
|
||||
(defvar everforest-hard-light-colors-alist
|
||||
(let ((colors `(("everforest-hard-light-accent" . "#8da101")
|
||||
("everforest-hard-light-fg" . "#5c6a72")
|
||||
("everforest-hard-light-bg" . "#fff9e8")
|
||||
("everforest-hard-light-bg-1" . "#f7f4e0")
|
||||
("everforest-hard-light-bg-hl" . "#f0eed9")
|
||||
("everforest-hard-light-gutter" . "#e9e8d2")
|
||||
("everforest-hard-light-mono-1" . "#a6b0a0")
|
||||
("everforest-hard-light-mono-2" . "#939f91")
|
||||
("everforest-hard-light-mono-3" . "#829181")
|
||||
("everforest-hard-light-cyan" . "#35a77c")
|
||||
("everforest-hard-light-blue" . "#3a94c5")
|
||||
("everforest-hard-light-purple" . "#df69ba")
|
||||
("everforest-hard-light-green" . "#8da101")
|
||||
("everforest-hard-light-red" . "#f85552")
|
||||
("everforest-hard-light-orange" . "#f57d26")
|
||||
("everforest-hard-light-yellow" . "#dfa000")
|
||||
("everforest-hard-light-gray" . "#a6b0a0")
|
||||
("everforest-hard-light-silver" . "#9da9a0")
|
||||
("everforest-hard-light-black" . "#fff9e8")
|
||||
("everforest-hard-light-border" . "#5c6a72")
|
||||
("everforest-hard-light-visual" . "#edf0cd"))))
|
||||
colors)
|
||||
"List of Everforest Hard Light Colors.")
|
||||
|
||||
(defmacro everforest-hard-light-with-color-variables (&rest body)
|
||||
"Bind the colors list around BODY."
|
||||
(declare (indent 0))
|
||||
`(let ((class '((class color) (min-colors 89)))
|
||||
,@ (mapcar (lambda (cons)
|
||||
(list (intern (car cons)) (cdr cons)))
|
||||
everforest-hard-light-colors-alist))
|
||||
,@body))
|
||||
|
||||
(everforest-hard-light-with-color-variables
|
||||
(custom-theme-set-faces
|
||||
'everforest-hard-light
|
||||
|
||||
`(default ((t (:foreground ,everforest-hard-light-fg :background ,everforest-hard-light-bg))))
|
||||
`(success ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(warning ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(error ((t (:foreground ,everforest-hard-light-red :weight bold))))
|
||||
`(link ((t (:foreground ,everforest-hard-light-blue :underline t :weight bold))))
|
||||
`(link-visited ((t (:foreground ,everforest-hard-light-blue :underline t :weight normal))))
|
||||
`(cursor ((t (:background ,everforest-hard-light-fg))))
|
||||
`(fringe ((t (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-silver))))
|
||||
`(region ((t (:background ,everforest-hard-light-gray :distant-foreground ,everforest-hard-light-mono-2))))
|
||||
`(highlight ((t (:background ,everforest-hard-light-gray :distant-foreground ,everforest-hard-light-mono-2))))
|
||||
`(hl-line ((t (:background ,everforest-hard-light-visual :distant-foreground nil))))
|
||||
`(header-line ((t (:background ,everforest-hard-light-black))))
|
||||
`(vertical-border ((t (:background ,everforest-hard-light-border :foreground ,everforest-hard-light-border))))
|
||||
`(secondary-selection ((t (:background ,everforest-hard-light-bg-1))))
|
||||
`(query-replace ((t (:inherit (isearch)))))
|
||||
`(minibuffer-prompt ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(tooltip ((t (:foreground ,everforest-hard-light-fg :background ,everforest-hard-light-bg-1 :inherit variable-pitch))))
|
||||
|
||||
`(font-lock-builtin-face ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(font-lock-comment-face ((t (:foreground ,everforest-hard-light-mono-3 :slant italic))))
|
||||
`(font-lock-comment-delimiter-face ((default (:inherit (font-lock-comment-face)))))
|
||||
`(font-lock-doc-face ((t (:inherit (font-lock-string-face)))))
|
||||
`(font-lock-function-name-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(font-lock-keyword-face ((t (:foreground ,everforest-hard-light-red :weight normal))))
|
||||
`(font-lock-preprocessor-face ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(font-lock-string-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(font-lock-type-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(font-lock-constant-face ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(font-lock-variable-name-face ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(font-lock-warning-face ((t (:foreground ,everforest-hard-light-mono-3 :bold t))))
|
||||
`(font-lock-negation-char-face ((t (:foreground ,everforest-hard-light-cyan :bold t))))
|
||||
`(highlight-numbers-number ((t (:foreground ,everforest-hard-light-purple))))
|
||||
|
||||
;; eob
|
||||
`(vi-tilde-fringe-face ((t (:foreground ,everforest-hard-light-silver))))
|
||||
`(solaire-fringe-face ((t (:foreground ,everforest-hard-light-silver))))
|
||||
|
||||
;; mode-line
|
||||
`(mode-line ((t (:background ,everforest-hard-light-visual :foreground ,everforest-hard-light-silver))))
|
||||
`(mode-line-buffer-id ((t (:weight bold))))
|
||||
`(mode-line-emphasis ((t (:weight bold))))
|
||||
`(mode-line-inactive ((t (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-silver))))
|
||||
|
||||
;; window-divider
|
||||
`(window-divider ((t (:foreground ,everforest-hard-light-border))))
|
||||
`(window-divider-first-pixel ((t (:foreground ,everforest-hard-light-border))))
|
||||
`(window-divider-last-pixel ((t (:foreground ,everforest-hard-light-border))))
|
||||
|
||||
;; custom
|
||||
`(custom-state ((t (:foreground ,everforest-hard-light-green))))
|
||||
|
||||
;; Package/Plugin Customizations
|
||||
|
||||
;; ido
|
||||
`(ido-first-match ((t (:foreground ,everforest-hard-light-purple :weight bold))))
|
||||
`(ido-only-match ((t (:foreground ,everforest-hard-light-red :weight bold))))
|
||||
`(ido-subdir ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(ido-virtual ((t (:foreground ,everforest-hard-light-mono-3))))
|
||||
|
||||
;; ace-jump
|
||||
`(ace-jump-face-background ((t (:foreground ,everforest-hard-light-mono-3 :background ,everforest-hard-light-bg-1 :inverse-video nil))))
|
||||
`(ace-jump-face-foreground ((t (:foreground ,everforest-hard-light-red :background ,everforest-hard-light-bg-1 :inverse-video nil))))
|
||||
|
||||
;; ace-window
|
||||
`(aw-background-face ((t (:inherit font-lock-comment-face))))
|
||||
`(aw-leading-char-face ((t (:foreground ,everforest-hard-light-red :weight bold))))
|
||||
|
||||
;; centaur-tabs
|
||||
`(centaur-tabs-default ((t (:background ,everforest-hard-light-black :foreground ,everforest-hard-light-black))))
|
||||
`(centaur-tabs-selected ((t (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-fg :weight bold))))
|
||||
`(centaur-tabs-unselected ((t (:background ,everforest-hard-light-black :foreground ,everforest-hard-light-fg :weight light))))
|
||||
`(centaur-tabs-selected-modified ((t (:background ,everforest-hard-light-bg
|
||||
:foreground ,everforest-hard-light-blue :weight bold))))
|
||||
`(centaur-tabs-unselected-modified ((t (:background ,everforest-hard-light-black :weight light
|
||||
:foreground ,everforest-hard-light-blue))))
|
||||
`(centaur-tabs-active-bar-face ((t (:background ,everforest-hard-light-accent))))
|
||||
`(centaur-tabs-modified-marker-selected ((t (:inherit 'centaur-tabs-selected :foreground,everforest-hard-light-accent))))
|
||||
`(centaur-tabs-modified-marker-unselected ((t (:inherit 'centaur-tabs-unselected :foreground,everforest-hard-light-accent))))
|
||||
|
||||
;; company-mode
|
||||
`(company-tooltip ((t (:foreground ,everforest-hard-light-fg :background ,everforest-hard-light-gray))))
|
||||
`(company-tooltip-annotation ((t (:foreground ,everforest-hard-light-mono-2 :background ,everforest-hard-light-gray))))
|
||||
`(company-tooltip-annotation-selection ((t (:foreground ,everforest-hard-light-mono-2 :background ,everforest-hard-light-mono-3))))
|
||||
`(company-tooltip-selection ((t (:foreground ,everforest-hard-light-fg :background ,everforest-hard-light-mono-3))))
|
||||
`(company-tooltip-mouse ((t (:background ,everforest-hard-light-gray))))
|
||||
`(company-tooltip-common ((t (:foreground ,everforest-hard-light-yellow :background ,everforest-hard-light-gray))))
|
||||
`(company-tooltip-common-selection ((t (:foreground ,everforest-hard-light-yellow :background ,everforest-hard-light-mono-3))))
|
||||
`(company-preview ((t (:background ,everforest-hard-light-bg))))
|
||||
`(company-preview-common ((t (:foreground ,everforest-hard-light-yellow :background ,everforest-hard-light-bg))))
|
||||
`(company-scrollbar-fg ((t (:background ,everforest-hard-light-mono-1))))
|
||||
`(company-scrollbar-bg ((t (:background ,everforest-hard-light-gray))))
|
||||
`(company-template-field ((t (:inherit highlight))))
|
||||
|
||||
;; doom-modeline
|
||||
`(doom-modeline-bar ((t (:background ,everforest-hard-light-visual))))
|
||||
|
||||
;; flyspell
|
||||
`(flyspell-duplicate ((t (:underline (:color ,everforest-hard-light-cyan :style wave)))))
|
||||
`(flyspell-incorrect ((t (:underline (:color ,everforest-hard-light-red :style wave)))))
|
||||
|
||||
;; flymake
|
||||
`(flymake-error ((t (:underline (:color ,everforest-hard-light-red :style wave)))))
|
||||
`(flymake-note ((t (:underline (:color ,everforest-hard-light-green :style wave)))))
|
||||
`(flymake-warning ((t (:underline (:color ,everforest-hard-light-orange :style wave)))))
|
||||
|
||||
;; flycheck
|
||||
`(flycheck-error ((t (:underline (:color ,everforest-hard-light-red :style wave)))))
|
||||
`(flycheck-info ((t (:underline (:color ,everforest-hard-light-green :style wave)))))
|
||||
`(flycheck-warning ((t (:underline (:color ,everforest-hard-light-orange :style wave)))))
|
||||
|
||||
;; compilation
|
||||
`(compilation-face ((t (:foreground ,everforest-hard-light-fg))))
|
||||
`(compilation-line-number ((t (:foreground ,everforest-hard-light-mono-2))))
|
||||
`(compilation-column-number ((t (:foreground ,everforest-hard-light-mono-2))))
|
||||
`(compilation-mode-line-exit ((t (:inherit compilation-info :weight bold))))
|
||||
`(compilation-mode-line-fail ((t (:inherit compilation-error :weight bold))))
|
||||
|
||||
;; isearch
|
||||
`(isearch ((t (:foreground ,everforest-hard-light-bg :background ,everforest-hard-light-purple))))
|
||||
`(isearch-fail ((t (:foreground ,everforest-hard-light-red :background nil))))
|
||||
`(lazy-highlight ((t (:foreground ,everforest-hard-light-purple :background ,everforest-hard-light-bg-1 :underline ,everforest-hard-light-purple))))
|
||||
|
||||
;; diff-hl (https://github.com/dgutov/diff-hl)
|
||||
'(diff-hl-change ((t (:foreground "#E9C062" :background "#8b733a"))))
|
||||
'(diff-hl-delete ((t (:foreground "#CC6666" :background "#7a3d3d"))))
|
||||
'(diff-hl-insert ((t (:foreground "#A8FF60" :background "#547f30"))))
|
||||
|
||||
;; dired-mode
|
||||
'(dired-directory ((t (:inherit (font-lock-keyword-face)))))
|
||||
'(dired-flagged ((t (:inherit (diff-hl-delete)))))
|
||||
'(dired-symlink ((t (:foreground "#FD5FF1"))))
|
||||
`(diredfl-file-name ((t (:foreground ,everforest-hard-light-fg))))
|
||||
`(diredfl-file-suffix ((t (:foreground ,everforest-hard-light-fg))))
|
||||
`(diredfl-number ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(diredfl-date-time ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(diredfl-no-priv ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(diredfl-dir-priv ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(diredfl-read-priv ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(diredfl-write-priv ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(diredfl-exec-priv ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(diredfl-link-priv ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(diredfl-dir-heading ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
|
||||
;; dired-async
|
||||
`(dired-async-failures ((t (:inherit error))))
|
||||
`(dired-async-message ((t (:inherit success))))
|
||||
`(dired-async-mode-message ((t (:foreground ,everforest-hard-light-orange))))
|
||||
|
||||
;; helm
|
||||
`(helm-header ((t (:foreground ,everforest-hard-light-mono-2
|
||||
:background ,everforest-hard-light-bg
|
||||
:underline nil
|
||||
:box (:line-width 6 :color ,everforest-hard-light-bg)))))
|
||||
`(helm-source-header ((t (:foreground ,everforest-hard-light-yellow
|
||||
:background ,everforest-hard-light-bg
|
||||
:underline nil
|
||||
:weight bold
|
||||
:box (:line-width 6 :color ,everforest-hard-light-bg)))))
|
||||
`(helm-selection ((t (:background ,everforest-hard-light-gray))))
|
||||
`(helm-selection-line ((t (:background ,everforest-hard-light-gray))))
|
||||
`(helm-visible-mark ((t (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-yellow))))
|
||||
`(helm-candidate-number ((t (:foreground ,everforest-hard-light-green :background ,everforest-hard-light-bg-1))))
|
||||
`(helm-separator ((t (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-red))))
|
||||
`(helm-M-x-key ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(helm-bookmark-addressbook ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(helm-bookmark-directory ((t (:foreground nil :background nil :inherit helm-ff-directory))))
|
||||
`(helm-bookmark-file ((t (:foreground nil :background nil :inherit helm-ff-file))))
|
||||
`(helm-bookmark-gnus ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(helm-bookmark-info ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(helm-bookmark-man ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(helm-bookmark-w3m ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(helm-match ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(helm-ff-directory ((t (:foreground ,everforest-hard-light-cyan :background ,everforest-hard-light-bg :weight bold))))
|
||||
`(helm-ff-file ((t (:foreground ,everforest-hard-light-fg :background ,everforest-hard-light-bg :weight normal))))
|
||||
`(helm-ff-executable ((t (:foreground ,everforest-hard-light-green :background ,everforest-hard-light-bg :weight normal))))
|
||||
`(helm-ff-invalid-symlink ((t (:foreground ,everforest-hard-light-red :background ,everforest-hard-light-bg :weight bold))))
|
||||
`(helm-ff-symlink ((t (:foreground ,everforest-hard-light-yellow :background ,everforest-hard-light-bg :weight bold))))
|
||||
`(helm-ff-prefix ((t (:foreground ,everforest-hard-light-bg :background ,everforest-hard-light-yellow :weight normal))))
|
||||
`(helm-buffer-not-saved ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(helm-buffer-process ((t (:foreground ,everforest-hard-light-mono-2))))
|
||||
`(helm-buffer-saved-out ((t (:foreground ,everforest-hard-light-fg))))
|
||||
`(helm-buffer-size ((t (:foreground ,everforest-hard-light-mono-2))))
|
||||
`(helm-buffer-directory ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(helm-grep-cmd-line ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(helm-grep-file ((t (:foreground ,everforest-hard-light-fg))))
|
||||
`(helm-grep-finish ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(helm-grep-lineno ((t (:foreground ,everforest-hard-light-mono-2))))
|
||||
`(helm-grep-finish ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(helm-grep-match ((t (:foreground nil :background nil :inherit helm-match))))
|
||||
`(helm-swoop-target-line-block-face ((t (:background ,everforest-hard-light-mono-3 :foreground "#222222"))))
|
||||
`(helm-swoop-target-line-face ((t (:background ,everforest-hard-light-mono-3 :foreground "#222222"))))
|
||||
`(helm-swoop-target-word-face ((t (:background ,everforest-hard-light-purple :foreground "#ffffff"))))
|
||||
`(helm-locate-finish ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(info-menu-star ((t (:foreground ,everforest-hard-light-red))))
|
||||
|
||||
;; ivy
|
||||
`(ivy-confirm-face ((t (:inherit minibuffer-prompt :foreground ,everforest-hard-light-green))))
|
||||
`(ivy-current-match ((t (:background ,everforest-hard-light-gray :weight normal))))
|
||||
`(ivy-highlight-face ((t (:inherit font-lock-builtin-face))))
|
||||
`(ivy-match-required-face ((t (:inherit minibuffer-prompt :foreground ,everforest-hard-light-red))))
|
||||
`(ivy-minibuffer-match-face-1 ((t (:background ,everforest-hard-light-bg-hl))))
|
||||
`(ivy-minibuffer-match-face-2 ((t (:inherit ivy-minibuffer-match-face-1 :background ,everforest-hard-light-black :foreground ,everforest-hard-light-purple :weight semi-bold))))
|
||||
`(ivy-minibuffer-match-face-3 ((t (:inherit ivy-minibuffer-match-face-2 :background ,everforest-hard-light-black :foreground ,everforest-hard-light-green :weight semi-bold))))
|
||||
`(ivy-minibuffer-match-face-4 ((t (:inherit ivy-minibuffer-match-face-2 :background ,everforest-hard-light-black :foreground ,everforest-hard-light-yellow :weight semi-bold))))
|
||||
`(ivy-minibuffer-match-highlight ((t (:inherit ivy-current-match))))
|
||||
`(ivy-modified-buffer ((t (:inherit default :foreground ,everforest-hard-light-orange))))
|
||||
`(ivy-virtual ((t (:inherit font-lock-builtin-face :slant italic))))
|
||||
|
||||
;; counsel
|
||||
`(counsel-key-binding ((t (:foreground ,everforest-hard-light-yellow :weight bold))))
|
||||
|
||||
;; swiper
|
||||
`(swiper-match-face-1 ((t (:inherit ivy-minibuffer-match-face-1))))
|
||||
`(swiper-match-face-2 ((t (:inherit ivy-minibuffer-match-face-2))))
|
||||
`(swiper-match-face-3 ((t (:inherit ivy-minibuffer-match-face-3))))
|
||||
`(swiper-match-face-4 ((t (:inherit ivy-minibuffer-match-face-4))))
|
||||
|
||||
;; git-commit
|
||||
`(git-commit-comment-action ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(git-commit-comment-branch ((t (:foreground ,everforest-hard-light-blue :weight bold))))
|
||||
`(git-commit-comment-heading ((t (:foreground ,everforest-hard-light-yellow :weight bold))))
|
||||
|
||||
;; git-gutter
|
||||
`(git-gutter:added ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(git-gutter:deleted ((t (:foreground ,everforest-hard-light-red :weight bold))))
|
||||
`(git-gutter:modified ((t (:foreground ,everforest-hard-light-orange :weight bold))))
|
||||
|
||||
;; eshell
|
||||
`(eshell-ls-archive ((t (:foreground ,everforest-hard-light-purple :weight bold))))
|
||||
`(eshell-ls-backup ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(eshell-ls-clutter ((t (:foreground ,everforest-hard-light-red :weight bold))))
|
||||
`(eshell-ls-directory ((t (:foreground ,everforest-hard-light-blue :weight bold))))
|
||||
`(eshell-ls-executable ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(eshell-ls-missing ((t (:foreground ,everforest-hard-light-red :weight bold))))
|
||||
`(eshell-ls-product ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(eshell-ls-special ((t (:foreground "#FD5FF1" :weight bold))))
|
||||
`(eshell-ls-symlink ((t (:foreground ,everforest-hard-light-cyan :weight bold))))
|
||||
`(eshell-ls-unreadable ((t (:foreground ,everforest-hard-light-mono-1))))
|
||||
`(eshell-prompt ((t (:inherit minibuffer-prompt))))
|
||||
|
||||
;; man
|
||||
`(Man-overstrike ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(Man-underline ((t (:inherit font-lock-keyword-face :slant italic :weight bold))))
|
||||
|
||||
;; woman
|
||||
`(woman-bold ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(woman-italic ((t (:inherit font-lock-keyword-face :slant italic :weight bold))))
|
||||
|
||||
;; dictionary
|
||||
`(dictionary-button-face ((t (:inherit widget-button))))
|
||||
`(dictionary-reference-face ((t (:inherit font-lock-type-face :weight bold))))
|
||||
`(dictionary-word-entry-face ((t (:inherit font-lock-keyword-face :slant italic :weight bold))))
|
||||
|
||||
;; erc
|
||||
`(erc-error-face ((t (:inherit error))))
|
||||
`(erc-input-face ((t (:inherit shadow))))
|
||||
`(erc-my-nick-face ((t (:foreground ,everforest-hard-light-accent))))
|
||||
`(erc-notice-face ((t (:inherit font-lock-comment-face))))
|
||||
`(erc-timestamp-face ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
|
||||
;; jabber
|
||||
`(jabber-roster-user-online ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(jabber-roster-user-away ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(jabber-roster-user-xa ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(jabber-roster-user-dnd ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(jabber-roster-user-chatty ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(jabber-roster-user-error ((t (:foreground ,everforest-hard-light-red :bold t))))
|
||||
`(jabber-roster-user-offline ((t (:foreground ,everforest-hard-light-mono-3))))
|
||||
`(jabber-chat-prompt-local ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(jabber-chat-prompt-foreign ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(jabber-chat-prompt-system ((t (:foreground ,everforest-hard-light-mono-3))))
|
||||
`(jabber-chat-error ((t (:inherit jabber-roster-user-error))))
|
||||
`(jabber-rare-time-face ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(jabber-activity-face ((t (:inherit jabber-chat-prompt-foreign))))
|
||||
`(jabber-activity-personal-face ((t (:inherit jabber-chat-prompt-local))))
|
||||
|
||||
;; eww
|
||||
`(eww-form-checkbox ((t (:inherit eww-form-submit))))
|
||||
`(eww-form-file ((t (:inherit eww-form-submit))))
|
||||
`(eww-form-select ((t (:inherit eww-form-submit))))
|
||||
`(eww-form-submit ((t (:background ,everforest-hard-light-gray :foreground ,everforest-hard-light-fg :box (:line-width 2 :color ,everforest-hard-light-border :style released-button)))))
|
||||
`(eww-form-text ((t (:inherit widget-field :box (:line-width 1 :color ,everforest-hard-light-border)))))
|
||||
`(eww-form-textarea ((t (:inherit eww-form-text))))
|
||||
`(eww-invalid-certificate ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(eww-valid-certificate ((t (:foreground ,everforest-hard-light-green))))
|
||||
|
||||
;; ediff
|
||||
`(ediff-fine-diff-Ancestor ((t (:background "#885555"))))
|
||||
`(ediff-fine-diff-A ((t (:background "#885555"))))
|
||||
`(ediff-fine-diff-B ((t (:background "#558855"))))
|
||||
`(ediff-fine-diff-C ((t (:background "#555588"))))
|
||||
`(ediff-current-diff-Ancestor ((t (:background "#663333"))))
|
||||
`(ediff-current-diff-A ((t (:background "#663333"))))
|
||||
`(ediff-current-diff-B ((t (:background "#336633"))))
|
||||
`(ediff-current-diff-C ((t (:background "#333366"))))
|
||||
`(ediff-even-diff-Ancestor ((t (:background "#181a1f"))))
|
||||
`(ediff-even-diff-A ((t (:background "#181a1f"))))
|
||||
`(ediff-even-diff-B ((t (:background "#181a1f"))))
|
||||
`(ediff-even-diff-C ((t (:background "#181a1f"))))
|
||||
`(ediff-odd-diff-Ancestor ((t (:background "#181a1f"))))
|
||||
`(ediff-odd-diff-A ((t (:background "#181a1f"))))
|
||||
`(ediff-odd-diff-B ((t (:background "#181a1f"))))
|
||||
`(ediff-odd-diff-C ((t (:background "#181a1f"))))
|
||||
|
||||
;; magit
|
||||
`(magit-section-highlight ((t (:background ,everforest-hard-light-bg-hl))))
|
||||
`(magit-section-heading ((t (:foreground ,everforest-hard-light-yellow :weight bold))))
|
||||
`(magit-section-heading-selection ((t (:foreground ,everforest-hard-light-fg :weight bold))))
|
||||
`(magit-diff-file-heading ((t (:weight bold))))
|
||||
`(magit-diff-file-heading-highlight ((t (:background ,everforest-hard-light-gray :weight bold))))
|
||||
`(magit-diff-file-heading-selection ((t (:foreground ,everforest-hard-light-yellow :background ,everforest-hard-light-bg-hl :weight bold))))
|
||||
`(magit-diff-hunk-heading ((t (:foreground ,everforest-hard-light-mono-2 :background ,everforest-hard-light-gray))))
|
||||
`(magit-diff-hunk-heading-highlight ((t (:foreground ,everforest-hard-light-mono-1 :background ,everforest-hard-light-mono-3))))
|
||||
`(magit-diff-hunk-heading-selection ((t (:foreground ,everforest-hard-light-purple :background ,everforest-hard-light-mono-3))))
|
||||
`(magit-diff-context ((t (:foreground ,everforest-hard-light-fg))))
|
||||
`(magit-diff-context-highlight ((t (:background ,everforest-hard-light-bg-1 :foreground ,everforest-hard-light-fg))))
|
||||
`(magit-diffstat-added ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(magit-diffstat-removed ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(magit-process-ok ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(magit-process-ng ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(magit-log-author ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(magit-log-date ((t (:foreground ,everforest-hard-light-mono-2))))
|
||||
`(magit-log-graph ((t (:foreground ,everforest-hard-light-silver))))
|
||||
`(magit-sequence-pick ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(magit-sequence-stop ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(magit-sequence-part ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(magit-sequence-head ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(magit-sequence-drop ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(magit-sequence-done ((t (:foreground ,everforest-hard-light-mono-2))))
|
||||
`(magit-sequence-onto ((t (:foreground ,everforest-hard-light-mono-2))))
|
||||
`(magit-bisect-good ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(magit-bisect-skip ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(magit-bisect-bad ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(magit-blame-heading ((t (:background ,everforest-hard-light-bg-1 :foreground ,everforest-hard-light-mono-2))))
|
||||
`(magit-blame-hash ((t (:background ,everforest-hard-light-bg-1 :foreground ,everforest-hard-light-purple))))
|
||||
`(magit-blame-name ((t (:background ,everforest-hard-light-bg-1 :foreground ,everforest-hard-light-yellow))))
|
||||
`(magit-blame-date ((t (:background ,everforest-hard-light-bg-1 :foreground ,everforest-hard-light-mono-3))))
|
||||
`(magit-blame-summary ((t (:background ,everforest-hard-light-bg-1 :foreground ,everforest-hard-light-mono-2))))
|
||||
`(magit-dimmed ((t (:foreground ,everforest-hard-light-mono-2))))
|
||||
`(magit-hash ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(magit-tag ((t (:foreground ,everforest-hard-light-orange :weight bold))))
|
||||
`(magit-branch-remote ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(magit-branch-local ((t (:foreground ,everforest-hard-light-blue :weight bold))))
|
||||
`(magit-branch-current ((t (:foreground ,everforest-hard-light-blue :weight bold :box t))))
|
||||
`(magit-head ((t (:foreground ,everforest-hard-light-blue :weight bold))))
|
||||
`(magit-refname ((t (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-fg :weight bold))))
|
||||
`(magit-refname-stash ((t (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-fg :weight bold))))
|
||||
`(magit-refname-wip ((t (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-fg :weight bold))))
|
||||
`(magit-signature-good ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(magit-signature-bad ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(magit-signature-untrusted ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(magit-cherry-unmatched ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(magit-cherry-equivalent ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(magit-reflog-commit ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(magit-reflog-amend ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(magit-reflog-merge ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(magit-reflog-checkout ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(magit-reflog-reset ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(magit-reflog-rebase ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(magit-reflog-cherry-pick ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(magit-reflog-remote ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(magit-reflog-other ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(magit-diff-revision-summary ((t (:foreground ,everforest-hard-light-fg))))
|
||||
`(magit-diff-conflict-heading ((t (:foreground ,everforest-hard-light-fg))))
|
||||
`(magit-diff-hunk-heading ((t (:foreground ,everforest-hard-light-fg))))
|
||||
|
||||
;; message
|
||||
`(message-cited-text ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(message-header-cc ((t (:foreground ,everforest-hard-light-orange :weight bold))))
|
||||
`(message-header-name ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(message-header-newsgroups ((t (:foreground ,everforest-hard-light-yellow :weight bold :slant italic))))
|
||||
`(message-header-other ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(message-header-subject ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(message-header-to ((t (:foreground ,everforest-hard-light-yellow :weight bold))))
|
||||
`(message-header-xheader ((t (:foreground ,everforest-hard-light-silver))))
|
||||
`(message-mml ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(message-separator ((t (:foreground ,everforest-hard-light-mono-3 :slant italic))))
|
||||
|
||||
;; epa
|
||||
`(epa-field-body ((t (:foreground ,everforest-hard-light-blue :slant italic))))
|
||||
`(epa-field-name ((t (:foreground ,everforest-hard-light-cyan :weight bold))))
|
||||
|
||||
;; notmuch
|
||||
`(notmuch-crypto-decryption ((t (:foreground ,everforest-hard-light-purple :background ,everforest-hard-light-black))))
|
||||
`(notmuch-crypto-signature-bad ((t (:foreground ,everforest-hard-light-red :background ,everforest-hard-light-black))))
|
||||
`(notmuch-crypto-signature-good ((t (:foreground ,everforest-hard-light-green :background ,everforest-hard-light-black))))
|
||||
`(notmuch-crypto-signature-good-key ((t (:foreground ,everforest-hard-light-green :background ,everforest-hard-light-black))))
|
||||
`(notmuch-crypto-signature-unknown ((t (:foreground ,everforest-hard-light-orange :background ,everforest-hard-light-black))))
|
||||
`(notmuch-hello-logo-background ((t (:inherit default))))
|
||||
`(notmuch-message-summary-face ((t (:background ,everforest-hard-light-black))))
|
||||
`(notmuch-search-count ((t (:inherit default :foreground ,everforest-hard-light-silver))))
|
||||
`(notmuch-search-date ((t (:inherit default :foreground ,everforest-hard-light-purple))))
|
||||
`(notmuch-search-matching-authors ((t (:inherit default :foreground ,everforest-hard-light-yellow))))
|
||||
`(notmuch-search-non-matching-authors ((t (:inherit font-lock-comment-face :slant italic))))
|
||||
`(notmuch-tag-added ((t (:underline t))))
|
||||
`(notmuch-tag-deleted ((t (:strike-through ,everforest-hard-light-red))))
|
||||
`(notmuch-tag-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(notmuch-tag-unread ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(notmuch-tree-match-author-face ((t (:inherit notmuch-search-matching-authors))))
|
||||
`(notmuch-tree-match-date-face ((t (:inherit notmuch-search-date))))
|
||||
`(notmuch-tree-match-face ((t (:weight semi-bold))))
|
||||
`(notmuch-tree-match-tag-face ((t (:inherit notmuch-tag-face))))
|
||||
`(notmuch-tree-no-match-face ((t (:slant italic :weight light :inherit font-lock-comment-face))))
|
||||
|
||||
;; mu4e
|
||||
`(mu4e-header-key-face ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(mu4e-header-title-face ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(mu4e-title-face ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
|
||||
;; calendar
|
||||
`(cfw:face-title ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(cfw:face-select ((t (:foreground ,everforest-hard-light-bg :background ,everforest-hard-light-fg))))
|
||||
`(cfw:face-header ((t (:foreground ,everforest-hard-light-fg :weight bold))))
|
||||
`(cfw:face-sunday ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(cfw:face-holiday ((t (:foreground ,everforest-hard-light-blue :weight bold))))
|
||||
`(cfw:face-toolbar ((t (:background ,everforest-hard-light-bg))))
|
||||
`(cfw:face-toolbar-button-on ((t (:foreground ,everforest-hard-light-fg :weight bold))))
|
||||
`(cfw:face-toolbar-button-off ((t (:foreground ,everforest-hard-light-silver :weight bold))))
|
||||
`(cfw:face-day-title ((t (:background ,everforest-hard-light-bg))))
|
||||
`(cfw:face-today-title ((t (:foreground ,everforest-hard-light-bg :background ,everforest-hard-light-green))))
|
||||
|
||||
;; elfeed
|
||||
`(elfeed-log-debug-level-face ((t (:background ,everforest-hard-light-black :foreground ,everforest-hard-light-green))))
|
||||
`(elfeed-log-error-level-face ((t (:background ,everforest-hard-light-black :foreground ,everforest-hard-light-red))))
|
||||
`(elfeed-log-info-level-face ((t (:background ,everforest-hard-light-black :foreground ,everforest-hard-light-blue))))
|
||||
`(elfeed-log-warn-level-face ((t (:background ,everforest-hard-light-black :foreground ,everforest-hard-light-orange))))
|
||||
`(elfeed-search-date-face ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(elfeed-search-feed-face ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(elfeed-search-tag-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(elfeed-search-title-face ((t (:foreground ,everforest-hard-light-mono-1))))
|
||||
`(elfeed-search-unread-count-face ((t (:foreground ,everforest-hard-light-silver))))
|
||||
|
||||
;; perspective
|
||||
`(persp-selected-face ((t (:foreground ,everforest-hard-light-blue))))
|
||||
|
||||
;; powerline
|
||||
`(powerline-active1 ((,class (:background ,everforest-hard-light-bg-hl :foreground ,everforest-hard-light-purple))))
|
||||
`(powerline-active2 ((,class (:background ,everforest-hard-light-bg-hl :foreground ,everforest-hard-light-purple))))
|
||||
`(powerline-inactive1 ((,class (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-fg))))
|
||||
`(powerline-inactive2 ((,class (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-fg))))
|
||||
|
||||
;; rainbow-delimiters
|
||||
`(rainbow-delimiters-depth-1-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(rainbow-delimiters-depth-2-face ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(rainbow-delimiters-depth-3-face ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(rainbow-delimiters-depth-4-face ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(rainbow-delimiters-depth-5-face ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(rainbow-delimiters-depth-6-face ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(rainbow-delimiters-depth-7-face ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(rainbow-delimiters-depth-8-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(rainbow-delimiters-depth-9-face ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(rainbow-delimiters-depth-10-face ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(rainbow-delimiters-depth-11-face ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(rainbow-delimiters-depth-12-face ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(rainbow-delimiters-unmatched-face ((t (:foreground ,everforest-hard-light-red :weight bold))))
|
||||
|
||||
;; rbenv
|
||||
`(rbenv-active-ruby-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
|
||||
;; elixir
|
||||
`(elixir-atom-face ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(elixir-attribute-face ((t (:foreground ,everforest-hard-light-red))))
|
||||
|
||||
;; show-paren
|
||||
`(show-paren-match ((,class (:foreground ,everforest-hard-light-purple :inherit bold :underline t))))
|
||||
`(show-paren-mismatch ((,class (:foreground ,everforest-hard-light-red :inherit bold :underline t))))
|
||||
|
||||
;; cider
|
||||
`(cider-fringe-good-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
|
||||
;; sly
|
||||
`(sly-error-face ((t (:underline (:color ,everforest-hard-light-red :style wave)))))
|
||||
`(sly-mrepl-note-face ((t (:inherit font-lock-comment-face))))
|
||||
`(sly-mrepl-output-face ((t (:inherit font-lock-string-face))))
|
||||
`(sly-mrepl-prompt-face ((t (:inherit comint-highlight-prompt))))
|
||||
`(sly-note-face ((t (:underline (:color ,everforest-hard-light-green :style wave)))))
|
||||
`(sly-style-warning-face ((t (:underline (:color ,everforest-hard-light-yellow :style wave)))))
|
||||
`(sly-warning-face ((t (:underline (:color ,everforest-hard-light-orange :style wave)))))
|
||||
|
||||
;; smartparens
|
||||
`(sp-show-pair-mismatch-face ((t (:foreground ,everforest-hard-light-red :background ,everforest-hard-light-gray :weight bold))))
|
||||
`(sp-show-pair-match-face ((t (:foreground ,everforest-hard-light-blue :weight bold :underline t))))
|
||||
|
||||
;; lispy
|
||||
`(lispy-face-hint ((t (:background ,everforest-hard-light-border :foreground ,everforest-hard-light-yellow))))
|
||||
|
||||
;; lispyville
|
||||
`(lispyville-special-face ((t (:foreground ,everforest-hard-light-red))))
|
||||
|
||||
;; spaceline
|
||||
`(spaceline-flycheck-error ((,class (:foreground ,everforest-hard-light-red))))
|
||||
`(spaceline-flycheck-info ((,class (:foreground ,everforest-hard-light-green))))
|
||||
`(spaceline-flycheck-warning ((,class (:foreground ,everforest-hard-light-orange))))
|
||||
`(spaceline-python-venv ((,class (:foreground ,everforest-hard-light-purple))))
|
||||
|
||||
;; solaire mode
|
||||
`(solaire-default-face ((,class (:inherit default :background ,everforest-hard-light-black))))
|
||||
`(solaire-minibuffer-face ((,class (:inherit default :background ,everforest-hard-light-black))))
|
||||
|
||||
;; web-mode
|
||||
`(web-mode-doctype-face ((t (:inherit font-lock-comment-face))))
|
||||
`(web-mode-error-face ((t (:background ,everforest-hard-light-black :foreground ,everforest-hard-light-red))))
|
||||
`(web-mode-html-attr-equal-face ((t (:inherit default))))
|
||||
`(web-mode-html-attr-name-face ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(web-mode-html-tag-bracket-face ((t (:inherit default))))
|
||||
`(web-mode-html-tag-face ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(web-mode-symbol-face ((t (:foreground ,everforest-hard-light-orange))))
|
||||
|
||||
;; nxml
|
||||
`(nxml-attribute-local-name ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(nxml-element-local-name ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(nxml-markup-declaration-delimiter ((t (:inherit (font-lock-comment-face nxml-delimiter)))))
|
||||
`(nxml-processing-instruction-delimiter ((t (:inherit nxml-markup-declaration-delimiter))))
|
||||
|
||||
;; flx-ido
|
||||
`(flx-highlight-face ((t (:inherit (link) :weight bold))))
|
||||
|
||||
;; rpm-spec-mode
|
||||
`(rpm-spec-tag-face ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(rpm-spec-obsolete-tag-face ((t (:foreground "#FFFFFF" :background ,everforest-hard-light-red))))
|
||||
`(rpm-spec-macro-face ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(rpm-spec-var-face ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(rpm-spec-doc-face ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(rpm-spec-dir-face ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(rpm-spec-package-face ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(rpm-spec-ghost-face ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(rpm-spec-section-face ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
|
||||
;; guix
|
||||
`(guix-true ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(guix-build-log-phase-end ((t (:inherit success))))
|
||||
`(guix-build-log-phase-start ((t (:inherit success :weight bold))))
|
||||
|
||||
;; gomoku
|
||||
`(gomoku-O ((t (:foreground ,everforest-hard-light-red :weight bold))))
|
||||
`(gomoku-X ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
|
||||
;; tabbar
|
||||
`(tabbar-default ((,class (:foreground ,everforest-hard-light-fg :background ,everforest-hard-light-black))))
|
||||
`(tabbar-highlight ((,class (:underline t))))
|
||||
`(tabbar-button ((,class (:foreground ,everforest-hard-light-fg :background ,everforest-hard-light-bg))))
|
||||
`(tabbar-button-highlight ((,class (:inherit 'tabbar-button :inverse-video t))))
|
||||
`(tabbar-modified ((,class (:inherit tabbar-button :foreground ,everforest-hard-light-purple :weight light :slant italic))))
|
||||
`(tabbar-unselected ((,class (:inherit tabbar-default :foreground ,everforest-hard-light-fg :background ,everforest-hard-light-black :slant italic :underline nil :box (:line-width 1 :color ,everforest-hard-light-bg)))))
|
||||
`(tabbar-unselected-modified ((,class (:inherit tabbar-modified :background ,everforest-hard-light-black :underline nil :box (:line-width 1 :color ,everforest-hard-light-bg)))))
|
||||
`(tabbar-selected ((,class (:inherit tabbar-default :foreground ,everforest-hard-light-fg :background ,everforest-hard-light-bg :weight bold :underline nil :box (:line-width 1 :color ,everforest-hard-light-bg)))))
|
||||
`(tabbar-selected-modified ((,class (:inherit tabbar-selected :foreground ,everforest-hard-light-purple :underline nil :box (:line-width 1 :color ,everforest-hard-light-bg)))))
|
||||
|
||||
;; linum
|
||||
`(linum ((t (:foreground ,everforest-hard-light-gutter :background ,everforest-hard-light-bg))))
|
||||
;; hlinum
|
||||
`(linum-highlight-face ((t (:foreground ,everforest-hard-light-fg :background ,everforest-hard-light-bg))))
|
||||
;; native line numbers (emacs version >=26)
|
||||
`(line-number ((t (:foreground ,everforest-hard-light-gutter :background ,everforest-hard-light-bg))))
|
||||
`(line-number-current-line ((t (:foreground ,everforest-hard-light-fg :background ,everforest-hard-light-bg))))
|
||||
|
||||
;; regexp-builder
|
||||
`(reb-match-0 ((t (:background ,everforest-hard-light-gray))))
|
||||
`(reb-match-1 ((t (:background ,everforest-hard-light-black :foreground ,everforest-hard-light-purple :weight semi-bold))))
|
||||
`(reb-match-2 ((t (:background ,everforest-hard-light-black :foreground ,everforest-hard-light-green :weight semi-bold))))
|
||||
`(reb-match-3 ((t (:background ,everforest-hard-light-black :foreground ,everforest-hard-light-yellow :weight semi-bold))))
|
||||
|
||||
;; desktop-entry
|
||||
`(desktop-entry-deprecated-keyword-face ((t (:inherit font-lock-warning-face))))
|
||||
`(desktop-entry-group-header-face ((t (:inherit font-lock-type-face))))
|
||||
`(desktop-entry-locale-face ((t (:inherit font-lock-string-face))))
|
||||
`(desktop-entry-unknown-keyword-face ((t (:underline (:color ,everforest-hard-light-red :style wave) :inherit font-lock-keyword-face))))
|
||||
`(desktop-entry-value-face ((t (:inherit default))))
|
||||
|
||||
;; calendar
|
||||
`(diary ((t (:inherit warning))))
|
||||
`(holiday ((t (:foreground ,everforest-hard-light-green))))
|
||||
|
||||
;; gud
|
||||
`(breakpoint-disabled ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(breakpoint-enabled ((t (:foreground ,everforest-hard-light-red :weight bold))))
|
||||
|
||||
;; realgud
|
||||
`(realgud-overlay-arrow1 ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(realgud-overlay-arrow3 ((t (:foreground ,everforest-hard-light-orange)) `(realgud-overlay-arrow2 ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
))
|
||||
'(realgud-bp-enabled-face ((t (:inherit (error)))))
|
||||
`(realgud-bp-disabled-face ((t (:inherit (secondary-selection)))))
|
||||
`(realgud-bp-line-enabled-face ((t (:box (:color ,everforest-hard-light-red)))))
|
||||
`(realgud-bp-line-disabled-face ((t (:box (:color ,everforest-hard-light-gray)))))
|
||||
`(realgud-line-number ((t (:foreground ,everforest-hard-light-mono-2))))
|
||||
`(realgud-backtrace-number ((t (:inherit (secondary-selection)))))
|
||||
|
||||
;; rmsbolt
|
||||
`(rmsbolt-current-line-face ((t (:inherit hl-line :weight bold))))
|
||||
|
||||
;; ruler-mode
|
||||
`(ruler-mode-column-number ((t (:inherit ruler-mode-default))))
|
||||
`(ruler-mode-comment-column ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(ruler-mode-current-column ((t (:foreground ,everforest-hard-light-accent :inherit ruler-mode-default))))
|
||||
`(ruler-mode-default ((t (:inherit mode-line))))
|
||||
`(ruler-mode-fill-column ((t (:foreground ,everforest-hard-light-orange :inherit ruler-mode-default))))
|
||||
`(ruler-mode-fringes ((t (:foreground ,everforest-hard-light-green :inherit ruler-mode-default))))
|
||||
`(ruler-mode-goal-column ((t (:foreground ,everforest-hard-light-cyan :inherit ruler-mode-default))))
|
||||
`(ruler-mode-margins ((t (:inherit ruler-mode-default))))
|
||||
`(ruler-mode-tab-stop ((t (:foreground ,everforest-hard-light-mono-3 :inherit ruler-mode-default))))
|
||||
|
||||
;; undo-tree
|
||||
`(undo-tree-visualizer-current-face ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(undo-tree-visualizer-register-face ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(undo-tree-visualizer-unmodified-face ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
|
||||
;; tab-bar-mode
|
||||
`(tab-bar-tab-inactive ((t (:background ,everforest-hard-light-bg-hl :foreground ,everforest-hard-light-fg))))
|
||||
`(tab-bar-tab ((t (:background ,everforest-hard-light-bg :foreground ,everforest-hard-light-purple))))
|
||||
`(tab-bar ((t (:background ,everforest-hard-light-bg-hl))))
|
||||
|
||||
;; all-the-icons
|
||||
`(all-the-icons-purple ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(all-the-icons-yellow ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
|
||||
;; dashboard
|
||||
`(dashboard-heading ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(dashboard-items-face ((t (:bold ,everforest-hard-light-green))))
|
||||
|
||||
;; Language Customizations ----------------------------------------------------------------------
|
||||
;; these laguage customizations are seperate from certain larger lagu
|
||||
|
||||
;; markdown
|
||||
`(markdown-header-face-1 ((t (:foreground ,everforest-hard-light-red :weight bold))))
|
||||
`(markdown-header-face-2 ((t (:foreground ,everforest-hard-light-orange :weight bold))))
|
||||
`(markdown-link-face ((t (:foreground ,everforest-hard-light-purple ))))
|
||||
`(markdown-url-face ((t (:foreground ,everforest-hard-light-blue :underline t))))
|
||||
`(markdown-plain-url-face ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(markdown-header-delimiter-face ((t (:foreground ,everforest-hard-light-silver))))
|
||||
`(markdown-language-keyword-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(markdown-markup-face ((t (:foreground ,everforest-hard-light-silver))))
|
||||
`(markdown-pre-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(markdown-metadata-key-face ((t (:foreground ,everforest-hard-light-green))))
|
||||
|
||||
;; org-mode
|
||||
`(org-date ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(org-document-info ((t (:foreground ,everforest-hard-light-mono-3))))
|
||||
`(org-document-info-keyword ((t (:inherit org-meta-line :underline t))))
|
||||
`(org-document-title ((t (:weight bold))))
|
||||
`(org-footnote ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(org-sexp-date ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(org-table ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(org-drawer ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(org-headline-done ((t (:foreground ,everforest-hard-light-purple))))
|
||||
;; `(org-block ((t (:background ,everforest-hard-light-bg-hl :foreground ,everforest-hard-light-silver :extend t))))
|
||||
;; `(org-block-begin-line ((t (:background ,everforest-hard-light-bg-hl :foreground ,everforest-hard-light-silver :extend t))))
|
||||
;; `(org-block-end-line ((t (:background ,everforest-hard-light-bg-hl :foreground ,everforest-hard-light-silver :extend t))))
|
||||
`(org-level-1 ((t (:foreground ,everforest-hard-light-green))))
|
||||
`(org-level-2 ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(org-level-3 ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(org-level-4 ((t (:foreground ,everforest-hard-light-orange))))
|
||||
`(org-level-6 ((t (:foreground ,everforest-hard-light-blue))))
|
||||
`(org-level-7 ((t (:foreground ,everforest-hard-light-silver))))
|
||||
`(org-level-8 ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(org-cite ((t (:foreground ,everforest-hard-light-blue :weight bold))))
|
||||
`(org-cite-key ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(org-hide ((t (:foreground ,everforest-hard-light-bg))))
|
||||
|
||||
;; latex-mode
|
||||
`(font-latex-sectioning-0-face ((t (:foreground ,everforest-hard-light-blue :height 1.0))))
|
||||
`(font-latex-sectioning-1-face ((t (:foreground ,everforest-hard-light-blue :height 1.0))))
|
||||
`(font-latex-sectioning-2-face ((t (:foreground ,everforest-hard-light-blue :height 1.0))))
|
||||
`(font-latex-sectioning-3-face ((t (:foreground ,everforest-hard-light-blue :height 1.0))))
|
||||
`(font-latex-sectioning-4-face ((t (:foreground ,everforest-hard-light-blue :height 1.0))))
|
||||
`(font-latex-sectioning-5-face ((t (:foreground ,everforest-hard-light-blue :height 1.0))))
|
||||
`(font-latex-bold-face ((t (:foreground ,everforest-hard-light-green :weight bold))))
|
||||
`(font-latex-italic-face ((t (:foreground ,everforest-hard-light-green :slant italic))))
|
||||
`(font-latex-warning-face ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(font-latex-doctex-preprocessor-face ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(font-latex-script-char-face ((t (:foreground ,everforest-hard-light-gray))))
|
||||
|
||||
;; sh-mode
|
||||
`(sh-heredoc ((t (:inherit font-lock-string-face :slant italic))))
|
||||
|
||||
;; js2-mode
|
||||
`(js2-error ((t (:underline (:color ,everforest-hard-light-red :style wave)))))
|
||||
`(js2-external-variable ((t (:foreground ,everforest-hard-light-cyan))))
|
||||
`(js2-warning ((t (:underline (:color ,everforest-hard-light-orange :style wave)))))
|
||||
`(js2-function-call ((t (:inherit (font-lock-function-name-face)))))
|
||||
`(js2-function-param ((t (:foreground ,everforest-hard-light-mono-1))))
|
||||
`(js2-jsdoc-tag ((t (:foreground ,everforest-hard-light-purple))))
|
||||
`(js2-jsdoc-type ((t (:foreground ,everforest-hard-light-yellow))))
|
||||
`(js2-jsdoc-value ((t (:foreground ,everforest-hard-light-red))))
|
||||
`(js2-object-property ((t (:foreground ,everforest-hard-light-red))))
|
||||
|
||||
))
|
||||
|
||||
(everforest-hard-light-with-color-variables
|
||||
(custom-theme-set-variables
|
||||
'everforest-hard-light
|
||||
;; fill-column-indicator
|
||||
`(fci-rule-color ,everforest-hard-light-gray)
|
||||
|
||||
;; tetris
|
||||
;; | Tetromino | Color |
|
||||
;; | O | `everforest-hard-light-yellow' |
|
||||
;; | J | `everforest-hard-light-blue' |
|
||||
;; | L | `everforest-hard-light-orange' |
|
||||
;; | Z | `everforest-hard-light-red' |
|
||||
;; | S | `everforest-hard-light-green' |
|
||||
;; | T | `everforest-hard-light-purple' |
|
||||
;; | I | `everforest-hard-light-cyan' |
|
||||
'(tetris-x-colors
|
||||
[[229 192 123] [97 175 239] [209 154 102] [224 108 117] [152 195 121] [198 120 221] [86 182 194]])
|
||||
|
||||
;; ansi-color
|
||||
`(ansi-color-names-vector
|
||||
[,everforest-hard-light-black ,everforest-hard-light-red ,everforest-hard-light-green ,everforest-hard-light-yellow
|
||||
,everforest-hard-light-blue ,everforest-hard-light-purple ,everforest-hard-light-cyan ,everforest-hard-light-fg])
|
||||
))
|
||||
|
||||
;;;###autoload
|
||||
(and load-file-name
|
||||
(boundp 'custom-theme-load-path)
|
||||
(add-to-list 'custom-theme-load-path
|
||||
(file-name-as-directory
|
||||
(file-name-directory load-file-name))))
|
||||
;; Automatically add this theme to the load path
|
||||
|
||||
(provide-theme 'everforest-hard-light)
|
||||
|
||||
;; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; End:
|
||||
;;; everforest-hard-light-theme.el ends here
|
|
@ -1,32 +0,0 @@
|
|||
;;; everforest.el --- Everforest Theme pack -*- lexical-binding: t; -*-
|
||||
;;
|
||||
;; Copyright (C) 2022 Evan Sarris
|
||||
;;
|
||||
;;; Author: Theory_of_Everything <evan@theoryware.net>
|
||||
;;; Version: 0.1
|
||||
;;; Homepage: https://git.sr.ht/~theorytoe/everforest-theme
|
||||
;;; Package-Requires: ((emacs "24"))
|
||||
;;
|
||||
;; This file is not part of GNU Emacs.
|
||||
;;
|
||||
;;; Commentary:
|
||||
;; An Emacs port of the Everforest Vim theme, a low-contrast green-coloured
|
||||
;; theme. This is a current work in progress, so expect issues and unorthodox
|
||||
;; coloring occasionally. The port is quite opinionated from the original
|
||||
;; everforest theme, but I try to keep as true to the original theme as
|
||||
;; possible, but making changes where needed for both functional and cosmetic
|
||||
;; reasons.
|
||||
|
||||
;;; Code:
|
||||
|
||||
;;; TODO: Define more general macro here for better
|
||||
;;; definition/modification of themes
|
||||
|
||||
;;;###autoload
|
||||
;; (and load-file-name
|
||||
;; (add-to-list 'custom-theme-load-path
|
||||
;; (file-name-as-directory
|
||||
;; (file-name-directory load-file-name))))
|
||||
|
||||
;; (provide 'everforest-theme)
|
||||
;;; everforest.el ends here
|
Loading…
Reference in a new issue