Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
0ece064d30 | |||
f828e3237a |
83
.Xresources
Normal file
83
.Xresources
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
Xft.autohint: 1
|
||||||
|
Xft.antialias: 1
|
||||||
|
Xft.hinting: true
|
||||||
|
Xft.hintstyle: hintslight
|
||||||
|
Xft.rgba: rgb
|
||||||
|
Xft.lcdfilter: lcddefault
|
||||||
|
|
||||||
|
Xcursor.theme: Volantes Cursors
|
||||||
|
|
||||||
|
! ! special
|
||||||
|
! *.foreground: #abb2bf
|
||||||
|
! *.background: #14171e
|
||||||
|
! *.cursorColor: #abb2bf
|
||||||
|
!
|
||||||
|
! ! black
|
||||||
|
! *.color0: #1e2127
|
||||||
|
! *.color8: #5c6370
|
||||||
|
!
|
||||||
|
! ! red
|
||||||
|
! *.color1: #e06c75
|
||||||
|
! *.color9: #e06c75
|
||||||
|
!
|
||||||
|
! ! green
|
||||||
|
! *.color2: #98c379
|
||||||
|
! *.color10: #98c379
|
||||||
|
!
|
||||||
|
! ! yellow
|
||||||
|
! *.color3: #d19a66
|
||||||
|
! *.color11: #d19a66
|
||||||
|
!
|
||||||
|
! ! blue
|
||||||
|
! *.color4: #61afef
|
||||||
|
! *.color12: #61afef
|
||||||
|
!
|
||||||
|
! ! magenta
|
||||||
|
! *.color5: #c678dd
|
||||||
|
! *.color13: #c678dd
|
||||||
|
!
|
||||||
|
! ! cyan
|
||||||
|
! *.color6: #56b6c2
|
||||||
|
! *.color14: #56b6c2
|
||||||
|
!
|
||||||
|
! ! white
|
||||||
|
! *.color7: #abb2bf
|
||||||
|
! *.color15: #ffffff
|
||||||
|
|
||||||
|
! special
|
||||||
|
*.foreground: #ebd6a1
|
||||||
|
*.background: #211c1a
|
||||||
|
*.cursorColor: #ebd6a1
|
||||||
|
|
||||||
|
! black
|
||||||
|
*.color0: #141110
|
||||||
|
*.color8: #928374
|
||||||
|
|
||||||
|
! red
|
||||||
|
*.color1: #cc241d
|
||||||
|
*.color9: #fb4934
|
||||||
|
|
||||||
|
! green
|
||||||
|
*.color2: #88981a
|
||||||
|
*.color10: #b8bb26
|
||||||
|
|
||||||
|
! yellow
|
||||||
|
*.color3: #d79921
|
||||||
|
*.color11: #fabd2f
|
||||||
|
|
||||||
|
! blue
|
||||||
|
*.color4: #176d71
|
||||||
|
*.color12: #83a598
|
||||||
|
|
||||||
|
! magenta
|
||||||
|
*.color5: #b16286
|
||||||
|
*.color13: #d3869b
|
||||||
|
|
||||||
|
! cyan
|
||||||
|
*.color6: #689d6a
|
||||||
|
*.color14: #8ec07c
|
||||||
|
|
||||||
|
! white
|
||||||
|
*.color7: #a89984
|
||||||
|
*.color15: #ebdbb2
|
||||||
|
|
938
.config/alacritty/alacritty.yml
Normal file
938
.config/alacritty/alacritty.yml
Normal file
@ -0,0 +1,938 @@
|
|||||||
|
# Configuration for Alacritty, the GPU enhanced terminal emulator.
|
||||||
|
|
||||||
|
# Import additional configuration files
|
||||||
|
#
|
||||||
|
# Imports are loaded in order, skipping all missing files, with the importing
|
||||||
|
# file being loaded last. If a field is already present in a previous import, it
|
||||||
|
# will be replaced.
|
||||||
|
#
|
||||||
|
# All imports must either be absolute paths starting with `/`, or paths relative
|
||||||
|
# to the user's home directory starting with `~/`.
|
||||||
|
#import:
|
||||||
|
# - /path/to/alacritty.yml
|
||||||
|
|
||||||
|
# Any items in the `env` entry below will be added as
|
||||||
|
# environment variables. Some entries may override variables
|
||||||
|
# set by alacritty itself.
|
||||||
|
env:
|
||||||
|
# TERM variable
|
||||||
|
#
|
||||||
|
# This value is used to set the `$TERM` environment variable for
|
||||||
|
# each instance of Alacritty. If it is not present, alacritty will
|
||||||
|
# check the local terminfo database and use `alacritty` if it is
|
||||||
|
# available, otherwise `xterm-256color` is used.
|
||||||
|
TERM: "xterm-256color"
|
||||||
|
|
||||||
|
window:
|
||||||
|
# Window dimensions (changes require restart)
|
||||||
|
#
|
||||||
|
# Number of lines/columns (not pixels) in the terminal. The number of columns
|
||||||
|
# must be at least `2`, while using a value of `0` for columns and lines will
|
||||||
|
# fall back to the window manager's recommended size.
|
||||||
|
#dimensions:
|
||||||
|
# columns: 0
|
||||||
|
# lines: 0
|
||||||
|
|
||||||
|
# Window position (changes require restart)
|
||||||
|
#
|
||||||
|
# Specified in number of pixels.
|
||||||
|
# If the position is not set, the window manager will handle the placement.
|
||||||
|
#position:
|
||||||
|
# x: 0
|
||||||
|
# y: 0
|
||||||
|
|
||||||
|
# Window padding (changes require restart)
|
||||||
|
#
|
||||||
|
# Blank space added around the window in pixels. This padding is scaled
|
||||||
|
# by DPI and the specified value is always added at both opposing sides.
|
||||||
|
padding:
|
||||||
|
x: 10
|
||||||
|
y: 10
|
||||||
|
|
||||||
|
# Spread additional padding evenly around the terminal content.
|
||||||
|
dynamic_padding: true
|
||||||
|
|
||||||
|
# Window decorations
|
||||||
|
#
|
||||||
|
# Values for `decorations`:
|
||||||
|
# - full: Borders and title bar
|
||||||
|
# - none: Neither borders nor title bar
|
||||||
|
#
|
||||||
|
# Values for `decorations` (macOS only):
|
||||||
|
# - transparent: Title bar, transparent background and title bar buttons
|
||||||
|
# - buttonless: Title bar, transparent background and no title bar buttons
|
||||||
|
decorations: none
|
||||||
|
|
||||||
|
# Background opacity
|
||||||
|
#
|
||||||
|
# Window opacity as a floating point number from `0.0` to `1.0`.
|
||||||
|
# The value `0.0` is completely transparent and `1.0` is opaque.
|
||||||
|
#opacity: 1.0
|
||||||
|
|
||||||
|
# Startup Mode (changes require restart)
|
||||||
|
#
|
||||||
|
# Values for `startup_mode`:
|
||||||
|
# - Windowed
|
||||||
|
# - Maximized
|
||||||
|
# - Fullscreen
|
||||||
|
#
|
||||||
|
# Values for `startup_mode` (macOS only):
|
||||||
|
# - SimpleFullscreen
|
||||||
|
#startup_mode: Windowed
|
||||||
|
|
||||||
|
# Window title
|
||||||
|
#title: Alacritty
|
||||||
|
|
||||||
|
# Allow terminal applications to change Alacritty's window title.
|
||||||
|
dynamic_title: true
|
||||||
|
|
||||||
|
# Window class (Linux/BSD only):
|
||||||
|
#class:
|
||||||
|
# Application instance name
|
||||||
|
#instance: Alacritty
|
||||||
|
# General application class
|
||||||
|
#general: Alacritty
|
||||||
|
|
||||||
|
# GTK theme variant (Linux/BSD only)
|
||||||
|
#
|
||||||
|
# Override the variant of the GTK theme. Commonly supported values are `dark`
|
||||||
|
# and `light`. Set this to `None` to use the default theme variant.
|
||||||
|
#gtk_theme_variant: None
|
||||||
|
|
||||||
|
scrolling:
|
||||||
|
# Maximum number of lines in the scrollback buffer.
|
||||||
|
# Specifying '0' will disable scrolling.
|
||||||
|
history: 10000
|
||||||
|
|
||||||
|
# Scrolling distance multiplier.
|
||||||
|
multiplier: 3
|
||||||
|
|
||||||
|
# Font configuration
|
||||||
|
font:
|
||||||
|
# Normal (roman) font face
|
||||||
|
normal:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (macOS) Menlo
|
||||||
|
# - (Linux/BSD) monospace
|
||||||
|
# - (Windows) Consolas
|
||||||
|
family: Hack Nerd Font Mono
|
||||||
|
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
style: Regular
|
||||||
|
|
||||||
|
# Bold font face
|
||||||
|
bold:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the bold family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
family: Hack Nerd Font Mono
|
||||||
|
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
style: Bold
|
||||||
|
|
||||||
|
# Italic font face
|
||||||
|
italic:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the italic family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
family: Hack Nerd Font Mono
|
||||||
|
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
style: Italic
|
||||||
|
|
||||||
|
# Bold italic font face
|
||||||
|
bold_italic:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the bold italic family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
family: Hack Nerd Font Mono
|
||||||
|
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
style: Bold Italic
|
||||||
|
|
||||||
|
# Point size
|
||||||
|
size: 7
|
||||||
|
|
||||||
|
# Offset is the extra space around each character. `offset.y` can be thought
|
||||||
|
# of as modifying the line spacing, and `offset.x` as modifying the letter
|
||||||
|
# spacing.
|
||||||
|
#offset:
|
||||||
|
# x: 0
|
||||||
|
# y: 0
|
||||||
|
|
||||||
|
# Glyph offset determines the locations of the glyphs within their cells with
|
||||||
|
# the default being at the bottom. Increasing `x` moves the glyph to the
|
||||||
|
# right, increasing `y` moves the glyph upward.
|
||||||
|
#glyph_offset:
|
||||||
|
# x: 0
|
||||||
|
# y: 0
|
||||||
|
|
||||||
|
# Thin stroke font rendering (macOS only)
|
||||||
|
#
|
||||||
|
# Thin strokes are suitable for retina displays, but for non-retina screens
|
||||||
|
# it is recommended to set `use_thin_strokes` to `false`.
|
||||||
|
#use_thin_strokes: true
|
||||||
|
|
||||||
|
# Use built-in font for box drawing characters.
|
||||||
|
#
|
||||||
|
# If `true`, Alacritty will use a custom built-in font for box drawing
|
||||||
|
# characters (Unicode points 2500 - 259f).
|
||||||
|
#
|
||||||
|
#builtin_box_drawing: true
|
||||||
|
|
||||||
|
# If `true`, bold text is drawn using the bright color variants.
|
||||||
|
#draw_bold_text_with_bright_colors: false
|
||||||
|
|
||||||
|
# Onedark color-theme
|
||||||
|
# colors:
|
||||||
|
# # Default colors
|
||||||
|
# primary:
|
||||||
|
# background: '0x14171e'
|
||||||
|
# foreground: '0xabb2bf'
|
||||||
|
#
|
||||||
|
# # Normal colors
|
||||||
|
# normal:
|
||||||
|
# black: '0x1e2127'
|
||||||
|
# red: '0xe06c75'
|
||||||
|
# green: '0x98c379'
|
||||||
|
# yellow: '0xd19a66'
|
||||||
|
# blue: '0x61afef'
|
||||||
|
# magenta: '0xc678dd'
|
||||||
|
# cyan: '0x56b6c2'
|
||||||
|
# white: '0xabb2bf'
|
||||||
|
#
|
||||||
|
# # Bright colors
|
||||||
|
# bright:
|
||||||
|
# black: '0x5c6370'
|
||||||
|
# red: '0xe06c75'
|
||||||
|
# green: '0x98c379'
|
||||||
|
# yellow: '0xd19a66'
|
||||||
|
# blue: '0x61afef'
|
||||||
|
# magenta: '0xc678dd'
|
||||||
|
# cyan: '0x56b6c2'
|
||||||
|
# white: '0xffffff'
|
||||||
|
|
||||||
|
# Gruvbox-edited color theme
|
||||||
|
colors:
|
||||||
|
# Default colors
|
||||||
|
primary:
|
||||||
|
background: '0x211c1a'
|
||||||
|
foreground: '0xebd6a1'
|
||||||
|
|
||||||
|
# Normal colors
|
||||||
|
normal:
|
||||||
|
black: '0x141110'
|
||||||
|
red: '0xcc241d'
|
||||||
|
green: '0x88981a'
|
||||||
|
yellow: '0xd79921'
|
||||||
|
blue: '0x176d71'
|
||||||
|
magenta: '0xb16286'
|
||||||
|
cyan: '0x689d6a'
|
||||||
|
white: '0xa89984'
|
||||||
|
|
||||||
|
# Bright colors
|
||||||
|
bright:
|
||||||
|
black: '0x84684c'
|
||||||
|
red: '0xfb4934'
|
||||||
|
green: '0xb8bb26'
|
||||||
|
yellow: '0xfabd2f'
|
||||||
|
blue: '0x83a598'
|
||||||
|
magenta: '0xd3869b'
|
||||||
|
cyan: '0x8ec07c'
|
||||||
|
white: '0xebdbb2'
|
||||||
|
# Colors (Tomorrow Night)
|
||||||
|
#colors:
|
||||||
|
# Default colors
|
||||||
|
#primary:
|
||||||
|
# background: '#1d1f21'
|
||||||
|
# foreground: '#c5c8c6'
|
||||||
|
|
||||||
|
# Bright and dim foreground colors
|
||||||
|
#
|
||||||
|
# The dimmed foreground color is calculated automatically if it is not
|
||||||
|
# present. If the bright foreground color is not set, or
|
||||||
|
# `draw_bold_text_with_bright_colors` is `false`, the normal foreground
|
||||||
|
# color will be used.
|
||||||
|
#dim_foreground: '#828482'
|
||||||
|
#bright_foreground: '#eaeaea'
|
||||||
|
|
||||||
|
# Cursor colors
|
||||||
|
#
|
||||||
|
# Colors which should be used to draw the terminal cursor.
|
||||||
|
#
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#cursor:
|
||||||
|
# text: CellBackground
|
||||||
|
# cursor: CellForeground
|
||||||
|
|
||||||
|
# Vi mode cursor colors
|
||||||
|
#
|
||||||
|
# Colors for the cursor when the vi mode is active.
|
||||||
|
#
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#vi_mode_cursor:
|
||||||
|
# text: CellBackground
|
||||||
|
# cursor: CellForeground
|
||||||
|
|
||||||
|
# Search colors
|
||||||
|
#
|
||||||
|
# Colors used for the search bar and match highlighting.
|
||||||
|
#search:
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#matches:
|
||||||
|
# foreground: '#000000'
|
||||||
|
# background: '#ffffff'
|
||||||
|
#focused_match:
|
||||||
|
# foreground: '#ffffff'
|
||||||
|
# background: '#000000'
|
||||||
|
|
||||||
|
#bar:
|
||||||
|
# background: '#c5c8c6'
|
||||||
|
# foreground: '#1d1f21'
|
||||||
|
|
||||||
|
# Keyboard regex hints
|
||||||
|
#hints:
|
||||||
|
# First character in the hint label
|
||||||
|
#
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#start:
|
||||||
|
# foreground: '#1d1f21'
|
||||||
|
# background: '#e9ff5e'
|
||||||
|
|
||||||
|
# All characters after the first one in the hint label
|
||||||
|
#
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#end:
|
||||||
|
# foreground: '#e9ff5e'
|
||||||
|
# background: '#1d1f21'
|
||||||
|
|
||||||
|
# Line indicator
|
||||||
|
#
|
||||||
|
# Color used for the indicator displaying the position in history during
|
||||||
|
# search and vi mode.
|
||||||
|
#
|
||||||
|
# By default, these will use the opposing primary color.
|
||||||
|
#line_indicator:
|
||||||
|
# foreground: None
|
||||||
|
# background: None
|
||||||
|
|
||||||
|
# Selection colors
|
||||||
|
#
|
||||||
|
# Colors which should be used to draw the selection area.
|
||||||
|
#
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#selection:
|
||||||
|
# text: CellBackground
|
||||||
|
# background: CellForeground
|
||||||
|
|
||||||
|
# Normal colors
|
||||||
|
#normal:
|
||||||
|
# black: '#1d1f21'
|
||||||
|
# red: '#cc6666'
|
||||||
|
# green: '#b5bd68'
|
||||||
|
# yellow: '#f0c674'
|
||||||
|
# blue: '#81a2be'
|
||||||
|
# magenta: '#b294bb'
|
||||||
|
# cyan: '#8abeb7'
|
||||||
|
# white: '#c5c8c6'
|
||||||
|
|
||||||
|
# Bright colors
|
||||||
|
#bright:
|
||||||
|
# black: '#666666'
|
||||||
|
# red: '#d54e53'
|
||||||
|
# green: '#b9ca4a'
|
||||||
|
# yellow: '#e7c547'
|
||||||
|
# blue: '#7aa6da'
|
||||||
|
# magenta: '#c397d8'
|
||||||
|
# cyan: '#70c0b1'
|
||||||
|
# white: '#eaeaea'
|
||||||
|
|
||||||
|
# Dim colors
|
||||||
|
#
|
||||||
|
# If the dim colors are not set, they will be calculated automatically based
|
||||||
|
# on the `normal` colors.
|
||||||
|
#dim:
|
||||||
|
# black: '#131415'
|
||||||
|
# red: '#864343'
|
||||||
|
# green: '#777c44'
|
||||||
|
# yellow: '#9e824c'
|
||||||
|
# blue: '#556a7d'
|
||||||
|
# magenta: '#75617b'
|
||||||
|
# cyan: '#5b7d78'
|
||||||
|
# white: '#828482'
|
||||||
|
|
||||||
|
# Indexed Colors
|
||||||
|
#
|
||||||
|
# The indexed colors include all colors from 16 to 256.
|
||||||
|
# When these are not set, they're filled with sensible defaults.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `- { index: 16, color: '#ff00ff' }`
|
||||||
|
#
|
||||||
|
#indexed_colors: []
|
||||||
|
|
||||||
|
# Transparent cell backgrounds
|
||||||
|
#
|
||||||
|
# Whether or not `window.opacity` applies to all cell backgrounds or only to
|
||||||
|
# the default background. When set to `true` all cells will be transparent
|
||||||
|
# regardless of their background color.
|
||||||
|
#transparent_background_colors: false
|
||||||
|
|
||||||
|
# Bell
|
||||||
|
#
|
||||||
|
# The bell is rung every time the BEL control character is received.
|
||||||
|
#bell:
|
||||||
|
# Visual Bell Animation
|
||||||
|
#
|
||||||
|
# Animation effect for flashing the screen when the visual bell is rung.
|
||||||
|
#
|
||||||
|
# Values for `animation`:
|
||||||
|
# - Ease
|
||||||
|
# - EaseOut
|
||||||
|
# - EaseOutSine
|
||||||
|
# - EaseOutQuad
|
||||||
|
# - EaseOutCubic
|
||||||
|
# - EaseOutQuart
|
||||||
|
# - EaseOutQuint
|
||||||
|
# - EaseOutExpo
|
||||||
|
# - EaseOutCirc
|
||||||
|
# - Linear
|
||||||
|
#animation: EaseOutExpo
|
||||||
|
|
||||||
|
# Duration of the visual bell flash in milliseconds. A `duration` of `0` will
|
||||||
|
# disable the visual bell animation.
|
||||||
|
#duration: 0
|
||||||
|
|
||||||
|
# Visual bell animation color.
|
||||||
|
#color: '#ffffff'
|
||||||
|
|
||||||
|
# Bell Command
|
||||||
|
#
|
||||||
|
# This program is executed whenever the bell is rung.
|
||||||
|
#
|
||||||
|
# When set to `command: None`, no command will be executed.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# command:
|
||||||
|
# program: notify-send
|
||||||
|
# args: ["Hello, World!"]
|
||||||
|
#
|
||||||
|
#command: None
|
||||||
|
|
||||||
|
#selection:
|
||||||
|
# This string contains all characters that are used as separators for
|
||||||
|
# "semantic words" in Alacritty.
|
||||||
|
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
|
||||||
|
|
||||||
|
# When set to `true`, selected text will be copied to the primary clipboard.
|
||||||
|
#save_to_clipboard: false
|
||||||
|
|
||||||
|
cursor:
|
||||||
|
# Cursor style
|
||||||
|
style:
|
||||||
|
# Cursor shape
|
||||||
|
#
|
||||||
|
# Values for `shape`:
|
||||||
|
# - ▇ Block
|
||||||
|
# - _ Underline
|
||||||
|
# - | Beam
|
||||||
|
shape: Underline
|
||||||
|
|
||||||
|
# Cursor blinking state
|
||||||
|
#
|
||||||
|
# Values for `blinking`:
|
||||||
|
# - Never: Prevent the cursor from ever blinking
|
||||||
|
# - Off: Disable blinking by default
|
||||||
|
# - On: Enable blinking by default
|
||||||
|
# - Always: Force the cursor to always blink
|
||||||
|
blinking: On
|
||||||
|
|
||||||
|
# Vi mode cursor style
|
||||||
|
#
|
||||||
|
# If the vi mode cursor style is `None` or not specified, it will fall back to
|
||||||
|
# the style of the active value of the normal cursor.
|
||||||
|
#
|
||||||
|
# See `cursor.style` for available options.
|
||||||
|
#vi_mode_style: None
|
||||||
|
|
||||||
|
# Cursor blinking interval in milliseconds.
|
||||||
|
#blink_interval: 750
|
||||||
|
|
||||||
|
# If this is `true`, the cursor will be rendered as a hollow box when the
|
||||||
|
# window is not focused.
|
||||||
|
#unfocused_hollow: true
|
||||||
|
|
||||||
|
# Thickness of the cursor relative to the cell width as floating point number
|
||||||
|
# from `0.0` to `1.0`.
|
||||||
|
#thickness: 0.15
|
||||||
|
|
||||||
|
# Live config reload (changes require restart)
|
||||||
|
live_config_reload: true
|
||||||
|
|
||||||
|
# Shell
|
||||||
|
#
|
||||||
|
# You can set `shell.program` to the path of your favorite shell, e.g.
|
||||||
|
# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the
|
||||||
|
# shell.
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (macOS) /bin/bash --login
|
||||||
|
# - (Linux/BSD) user login shell
|
||||||
|
# - (Windows) powershell
|
||||||
|
#shell:
|
||||||
|
# program: /bin/bash
|
||||||
|
# args:
|
||||||
|
# - --login
|
||||||
|
|
||||||
|
# Startup directory
|
||||||
|
#
|
||||||
|
# Directory the shell is started in. If this is unset, or `None`, the working
|
||||||
|
# directory of the parent process will be used.
|
||||||
|
#working_directory: None
|
||||||
|
|
||||||
|
# Send ESC (\x1b) before characters when alt is pressed.
|
||||||
|
#alt_send_esc: true
|
||||||
|
|
||||||
|
# Offer IPC using `alacritty msg` (unix only)
|
||||||
|
#ipc_socket: true
|
||||||
|
|
||||||
|
#mouse:
|
||||||
|
# Click settings
|
||||||
|
#
|
||||||
|
# The `double_click` and `triple_click` settings control the time
|
||||||
|
# alacritty should wait for accepting multiple clicks as one double
|
||||||
|
# or triple click.
|
||||||
|
#double_click: { threshold: 300 }
|
||||||
|
#triple_click: { threshold: 300 }
|
||||||
|
|
||||||
|
# If this is `true`, the cursor is temporarily hidden when typing.
|
||||||
|
#hide_when_typing: false
|
||||||
|
|
||||||
|
# Regex hints
|
||||||
|
#
|
||||||
|
# Terminal hints can be used to find text in the visible part of the terminal
|
||||||
|
# and pipe it to other applications.
|
||||||
|
#hints:
|
||||||
|
# Keys used for the hint labels.
|
||||||
|
#alphabet: "jfkdls;ahgurieowpq"
|
||||||
|
|
||||||
|
# List with all available hints
|
||||||
|
#
|
||||||
|
# Each hint must have a `regex` and either an `action` or a `command` field.
|
||||||
|
# The fields `mouse`, `binding` and `post_processing` are optional.
|
||||||
|
#
|
||||||
|
# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
|
||||||
|
# `mouse.mods` accept the same values as they do in the `key_bindings` section.
|
||||||
|
#
|
||||||
|
# The `mouse.enabled` field controls if the hint should be underlined while
|
||||||
|
# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
|
||||||
|
#
|
||||||
|
# If the `post_processing` field is set to `true`, heuristics will be used to
|
||||||
|
# shorten the match if there are characters likely not to be part of the hint
|
||||||
|
# (e.g. a trailing `.`). This is most useful for URIs.
|
||||||
|
#
|
||||||
|
# Values for `action`:
|
||||||
|
# - Copy
|
||||||
|
# Copy the hint's text to the clipboard.
|
||||||
|
# - Paste
|
||||||
|
# Paste the hint's text to the terminal or search.
|
||||||
|
# - Select
|
||||||
|
# Select the hint's text.
|
||||||
|
# - MoveViModeCursor
|
||||||
|
# Move the vi mode cursor to the beginning of the hint.
|
||||||
|
#enabled:
|
||||||
|
# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
|
||||||
|
# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
|
||||||
|
# command: xdg-open
|
||||||
|
# post_processing: true
|
||||||
|
# mouse:
|
||||||
|
# enabled: true
|
||||||
|
# mods: None
|
||||||
|
# binding:
|
||||||
|
# key: U
|
||||||
|
# mods: Control|Shift
|
||||||
|
|
||||||
|
# Mouse bindings
|
||||||
|
#
|
||||||
|
# Mouse bindings are specified as a list of objects, much like the key
|
||||||
|
# bindings further below.
|
||||||
|
#
|
||||||
|
# To trigger mouse bindings when an application running within Alacritty
|
||||||
|
# captures the mouse, the `Shift` modifier is automatically added as a
|
||||||
|
# requirement.
|
||||||
|
#
|
||||||
|
# Each mouse binding will specify a:
|
||||||
|
#
|
||||||
|
# - `mouse`:
|
||||||
|
#
|
||||||
|
# - Middle
|
||||||
|
# - Left
|
||||||
|
# - Right
|
||||||
|
# - Numeric identifier such as `5`
|
||||||
|
#
|
||||||
|
# - `action` (see key bindings for actions not exclusive to mouse mode)
|
||||||
|
#
|
||||||
|
# - Mouse exclusive actions:
|
||||||
|
#
|
||||||
|
# - ExpandSelection
|
||||||
|
# Expand the selection to the current mouse cursor location.
|
||||||
|
#
|
||||||
|
# And optionally:
|
||||||
|
#
|
||||||
|
# - `mods` (see key bindings)
|
||||||
|
#mouse_bindings:
|
||||||
|
# - { mouse: Right, action: ExpandSelection }
|
||||||
|
# - { mouse: Right, mods: Control, action: ExpandSelection }
|
||||||
|
# - { mouse: Middle, mode: ~Vi, action: PasteSelection }
|
||||||
|
|
||||||
|
# Key bindings
|
||||||
|
#
|
||||||
|
# Key bindings are specified as a list of objects. For example, this is the
|
||||||
|
# default paste binding:
|
||||||
|
#
|
||||||
|
# `- { key: V, mods: Control|Shift, action: Paste }`
|
||||||
|
#
|
||||||
|
# Each key binding will specify a:
|
||||||
|
#
|
||||||
|
# - `key`: Identifier of the key pressed
|
||||||
|
#
|
||||||
|
# - A-Z
|
||||||
|
# - F1-F24
|
||||||
|
# - Key0-Key9
|
||||||
|
#
|
||||||
|
# A full list with available key codes can be found here:
|
||||||
|
# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
|
||||||
|
#
|
||||||
|
# Instead of using the name of the keys, the `key` field also supports using
|
||||||
|
# the scancode of the desired key. Scancodes have to be specified as a
|
||||||
|
# decimal number. This command will allow you to display the hex scancodes
|
||||||
|
# for certain keys:
|
||||||
|
#
|
||||||
|
# `showkey --scancodes`.
|
||||||
|
#
|
||||||
|
# Then exactly one of:
|
||||||
|
#
|
||||||
|
# - `chars`: Send a byte sequence to the running application
|
||||||
|
#
|
||||||
|
# The `chars` field writes the specified string to the terminal. This makes
|
||||||
|
# it possible to pass escape sequences. To find escape codes for bindings
|
||||||
|
# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
|
||||||
|
# of tmux. Note that applications use terminfo to map escape sequences back
|
||||||
|
# to keys. It is therefore required to update the terminfo when changing an
|
||||||
|
# escape sequence.
|
||||||
|
#
|
||||||
|
# - `action`: Execute a predefined action
|
||||||
|
#
|
||||||
|
# - ToggleViMode
|
||||||
|
# - SearchForward
|
||||||
|
# Start searching toward the right of the search origin.
|
||||||
|
# - SearchBackward
|
||||||
|
# Start searching toward the left of the search origin.
|
||||||
|
# - Copy
|
||||||
|
# - Paste
|
||||||
|
# - IncreaseFontSize
|
||||||
|
# - DecreaseFontSize
|
||||||
|
# - ResetFontSize
|
||||||
|
# - ScrollPageUp
|
||||||
|
# - ScrollPageDown
|
||||||
|
# - ScrollHalfPageUp
|
||||||
|
# - ScrollHalfPageDown
|
||||||
|
# - ScrollLineUp
|
||||||
|
# - ScrollLineDown
|
||||||
|
# - ScrollToTop
|
||||||
|
# - ScrollToBottom
|
||||||
|
# - ClearHistory
|
||||||
|
# Remove the terminal's scrollback history.
|
||||||
|
# - Hide
|
||||||
|
# Hide the Alacritty window.
|
||||||
|
# - Minimize
|
||||||
|
# Minimize the Alacritty window.
|
||||||
|
# - Quit
|
||||||
|
# Quit Alacritty.
|
||||||
|
# - ToggleFullscreen
|
||||||
|
# - SpawnNewInstance
|
||||||
|
# Spawn a new instance of Alacritty.
|
||||||
|
# - CreateNewWindow
|
||||||
|
# Create a new Alacritty window from the current process.
|
||||||
|
# - ClearLogNotice
|
||||||
|
# Clear Alacritty's UI warning and error notice.
|
||||||
|
# - ClearSelection
|
||||||
|
# Remove the active selection.
|
||||||
|
# - ReceiveChar
|
||||||
|
# - None
|
||||||
|
#
|
||||||
|
# - Vi mode exclusive actions:
|
||||||
|
#
|
||||||
|
# - Open
|
||||||
|
# Perform the action of the first matching hint under the vi mode cursor
|
||||||
|
# with `mouse.enabled` set to `true`.
|
||||||
|
# - ToggleNormalSelection
|
||||||
|
# - ToggleLineSelection
|
||||||
|
# - ToggleBlockSelection
|
||||||
|
# - ToggleSemanticSelection
|
||||||
|
# Toggle semantic selection based on `selection.semantic_escape_chars`.
|
||||||
|
#
|
||||||
|
# - Vi mode exclusive cursor motion actions:
|
||||||
|
#
|
||||||
|
# - Up
|
||||||
|
# One line up.
|
||||||
|
# - Down
|
||||||
|
# One line down.
|
||||||
|
# - Left
|
||||||
|
# One character left.
|
||||||
|
# - Right
|
||||||
|
# One character right.
|
||||||
|
# - First
|
||||||
|
# First column, or beginning of the line when already at the first column.
|
||||||
|
# - Last
|
||||||
|
# Last column, or beginning of the line when already at the last column.
|
||||||
|
# - FirstOccupied
|
||||||
|
# First non-empty cell in this terminal row, or first non-empty cell of
|
||||||
|
# the line when already at the first cell of the row.
|
||||||
|
# - High
|
||||||
|
# Top of the screen.
|
||||||
|
# - Middle
|
||||||
|
# Center of the screen.
|
||||||
|
# - Low
|
||||||
|
# Bottom of the screen.
|
||||||
|
# - SemanticLeft
|
||||||
|
# Start of the previous semantically separated word.
|
||||||
|
# - SemanticRight
|
||||||
|
# Start of the next semantically separated word.
|
||||||
|
# - SemanticLeftEnd
|
||||||
|
# End of the previous semantically separated word.
|
||||||
|
# - SemanticRightEnd
|
||||||
|
# End of the next semantically separated word.
|
||||||
|
# - WordLeft
|
||||||
|
# Start of the previous whitespace separated word.
|
||||||
|
# - WordRight
|
||||||
|
# Start of the next whitespace separated word.
|
||||||
|
# - WordLeftEnd
|
||||||
|
# End of the previous whitespace separated word.
|
||||||
|
# - WordRightEnd
|
||||||
|
# End of the next whitespace separated word.
|
||||||
|
# - Bracket
|
||||||
|
# Character matching the bracket at the cursor's location.
|
||||||
|
# - SearchNext
|
||||||
|
# Beginning of the next match.
|
||||||
|
# - SearchPrevious
|
||||||
|
# Beginning of the previous match.
|
||||||
|
# - SearchStart
|
||||||
|
# Start of the match to the left of the vi mode cursor.
|
||||||
|
# - SearchEnd
|
||||||
|
# End of the match to the right of the vi mode cursor.
|
||||||
|
#
|
||||||
|
# - Search mode exclusive actions:
|
||||||
|
# - SearchFocusNext
|
||||||
|
# Move the focus to the next search match.
|
||||||
|
# - SearchFocusPrevious
|
||||||
|
# Move the focus to the previous search match.
|
||||||
|
# - SearchConfirm
|
||||||
|
# - SearchCancel
|
||||||
|
# - SearchClear
|
||||||
|
# Reset the search regex.
|
||||||
|
# - SearchDeleteWord
|
||||||
|
# Delete the last word in the search regex.
|
||||||
|
# - SearchHistoryPrevious
|
||||||
|
# Go to the previous regex in the search history.
|
||||||
|
# - SearchHistoryNext
|
||||||
|
# Go to the next regex in the search history.
|
||||||
|
#
|
||||||
|
# - macOS exclusive actions:
|
||||||
|
# - ToggleSimpleFullscreen
|
||||||
|
# Enter fullscreen without occupying another space.
|
||||||
|
#
|
||||||
|
# - Linux/BSD exclusive actions:
|
||||||
|
#
|
||||||
|
# - CopySelection
|
||||||
|
# Copy from the selection buffer.
|
||||||
|
# - PasteSelection
|
||||||
|
# Paste from the selection buffer.
|
||||||
|
#
|
||||||
|
# - `command`: Fork and execute a specified command plus arguments
|
||||||
|
#
|
||||||
|
# The `command` field must be a map containing a `program` string and an
|
||||||
|
# `args` array of command line parameter strings. For example:
|
||||||
|
# `{ program: "alacritty", args: ["-e", "vttest"] }`
|
||||||
|
#
|
||||||
|
# And optionally:
|
||||||
|
#
|
||||||
|
# - `mods`: Key modifiers to filter binding actions
|
||||||
|
#
|
||||||
|
# - Command
|
||||||
|
# - Control
|
||||||
|
# - Option
|
||||||
|
# - Super
|
||||||
|
# - Shift
|
||||||
|
# - Alt
|
||||||
|
#
|
||||||
|
# Multiple `mods` can be combined using `|` like this:
|
||||||
|
# `mods: Control|Shift`.
|
||||||
|
# Whitespace and capitalization are relevant and must match the example.
|
||||||
|
#
|
||||||
|
# - `mode`: Indicate a binding for only specific terminal reported modes
|
||||||
|
#
|
||||||
|
# This is mainly used to send applications the correct escape sequences
|
||||||
|
# when in different modes.
|
||||||
|
#
|
||||||
|
# - AppCursor
|
||||||
|
# - AppKeypad
|
||||||
|
# - Search
|
||||||
|
# - Alt
|
||||||
|
# - Vi
|
||||||
|
#
|
||||||
|
# A `~` operator can be used before a mode to apply the binding whenever
|
||||||
|
# the mode is *not* active, e.g. `~Alt`.
|
||||||
|
#
|
||||||
|
# Bindings are always filled by default, but will be replaced when a new
|
||||||
|
# binding with the same triggers is defined. To unset a default binding, it can
|
||||||
|
# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
|
||||||
|
# a no-op if you do not wish to receive input characters for that binding.
|
||||||
|
#
|
||||||
|
# If the same trigger is assigned to multiple actions, all of them are executed
|
||||||
|
# in the order they were defined in.
|
||||||
|
#key_bindings:
|
||||||
|
#- { key: Paste, action: Paste }
|
||||||
|
#- { key: Copy, action: Copy }
|
||||||
|
#- { key: L, mods: Control, action: ClearLogNotice }
|
||||||
|
#- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" }
|
||||||
|
#- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, }
|
||||||
|
#- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown }
|
||||||
|
#- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, }
|
||||||
|
#- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
|
||||||
|
|
||||||
|
# Vi Mode
|
||||||
|
#- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
|
||||||
|
#- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
|
||||||
|
#- { key: Escape, mode: Vi|~Search, action: ClearSelection }
|
||||||
|
#- { key: I, mode: Vi|~Search, action: ToggleViMode }
|
||||||
|
#- { key: I, mode: Vi|~Search, action: ScrollToBottom }
|
||||||
|
#- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode }
|
||||||
|
#- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp }
|
||||||
|
#- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown }
|
||||||
|
#- { key: G, mode: Vi|~Search, action: ScrollToTop }
|
||||||
|
#- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom }
|
||||||
|
#- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp }
|
||||||
|
#- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown }
|
||||||
|
#- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp }
|
||||||
|
#- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown }
|
||||||
|
#- { key: Y, mode: Vi|~Search, action: Copy }
|
||||||
|
#- { key: Y, mode: Vi|~Search, action: ClearSelection }
|
||||||
|
#- { key: Copy, mode: Vi|~Search, action: ClearSelection }
|
||||||
|
#- { key: V, mode: Vi|~Search, action: ToggleNormalSelection }
|
||||||
|
#- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection }
|
||||||
|
#- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection }
|
||||||
|
#- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection }
|
||||||
|
#- { key: Return, mode: Vi|~Search, action: Open }
|
||||||
|
#- { key: K, mode: Vi|~Search, action: Up }
|
||||||
|
#- { key: J, mode: Vi|~Search, action: Down }
|
||||||
|
#- { key: H, mode: Vi|~Search, action: Left }
|
||||||
|
#- { key: L, mode: Vi|~Search, action: Right }
|
||||||
|
#- { key: Up, mode: Vi|~Search, action: Up }
|
||||||
|
#- { key: Down, mode: Vi|~Search, action: Down }
|
||||||
|
#- { key: Left, mode: Vi|~Search, action: Left }
|
||||||
|
#- { key: Right, mode: Vi|~Search, action: Right }
|
||||||
|
#- { key: Key0, mode: Vi|~Search, action: First }
|
||||||
|
#- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last }
|
||||||
|
#- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied }
|
||||||
|
#- { key: H, mods: Shift, mode: Vi|~Search, action: High }
|
||||||
|
#- { key: M, mods: Shift, mode: Vi|~Search, action: Middle }
|
||||||
|
#- { key: L, mods: Shift, mode: Vi|~Search, action: Low }
|
||||||
|
#- { key: B, mode: Vi|~Search, action: SemanticLeft }
|
||||||
|
#- { key: W, mode: Vi|~Search, action: SemanticRight }
|
||||||
|
#- { key: E, mode: Vi|~Search, action: SemanticRightEnd }
|
||||||
|
#- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft }
|
||||||
|
#- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight }
|
||||||
|
#- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd }
|
||||||
|
#- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket }
|
||||||
|
#- { key: Slash, mode: Vi|~Search, action: SearchForward }
|
||||||
|
#- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward }
|
||||||
|
#- { key: N, mode: Vi|~Search, action: SearchNext }
|
||||||
|
#- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious }
|
||||||
|
|
||||||
|
# Search Mode
|
||||||
|
#- { key: Return, mode: Search|Vi, action: SearchConfirm }
|
||||||
|
#- { key: Escape, mode: Search, action: SearchCancel }
|
||||||
|
#- { key: C, mods: Control, mode: Search, action: SearchCancel }
|
||||||
|
#- { key: U, mods: Control, mode: Search, action: SearchClear }
|
||||||
|
#- { key: W, mods: Control, mode: Search, action: SearchDeleteWord }
|
||||||
|
#- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious }
|
||||||
|
#- { key: N, mods: Control, mode: Search, action: SearchHistoryNext }
|
||||||
|
#- { key: Up, mode: Search, action: SearchHistoryPrevious }
|
||||||
|
#- { key: Down, mode: Search, action: SearchHistoryNext }
|
||||||
|
#- { key: Return, mode: Search|~Vi, action: SearchFocusNext }
|
||||||
|
#- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious }
|
||||||
|
|
||||||
|
# (Windows, Linux, and BSD only)
|
||||||
|
#- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste }
|
||||||
|
#- { key: C, mods: Control|Shift, action: Copy }
|
||||||
|
#- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward }
|
||||||
|
#- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward }
|
||||||
|
#- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection }
|
||||||
|
#- { key: Insert, mods: Shift, action: PasteSelection }
|
||||||
|
#- { key: Key0, mods: Control, action: ResetFontSize }
|
||||||
|
#- { key: Equals, mods: Control, action: IncreaseFontSize }
|
||||||
|
#- { key: Plus, mods: Control, action: IncreaseFontSize }
|
||||||
|
#- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
|
||||||
|
#- { key: Minus, mods: Control, action: DecreaseFontSize }
|
||||||
|
#- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
|
||||||
|
|
||||||
|
# (Windows only)
|
||||||
|
#- { key: Return, mods: Alt, action: ToggleFullscreen }
|
||||||
|
|
||||||
|
# (macOS only)
|
||||||
|
#- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
|
||||||
|
#- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory }
|
||||||
|
#- { key: Key0, mods: Command, action: ResetFontSize }
|
||||||
|
#- { key: Equals, mods: Command, action: IncreaseFontSize }
|
||||||
|
#- { key: Plus, mods: Command, action: IncreaseFontSize }
|
||||||
|
#- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
|
||||||
|
#- { key: Minus, mods: Command, action: DecreaseFontSize }
|
||||||
|
#- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
|
||||||
|
#- { key: V, mods: Command, action: Paste }
|
||||||
|
#- { key: C, mods: Command, action: Copy }
|
||||||
|
#- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection }
|
||||||
|
#- { key: H, mods: Command, action: Hide }
|
||||||
|
#- { key: H, mods: Command|Alt, action: HideOtherApplications }
|
||||||
|
#- { key: M, mods: Command, action: Minimize }
|
||||||
|
#- { key: Q, mods: Command, action: Quit }
|
||||||
|
#- { key: W, mods: Command, action: Quit }
|
||||||
|
#- { key: N, mods: Command, action: SpawnNewInstance }
|
||||||
|
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
|
||||||
|
#- { key: F, mods: Command, mode: ~Search, action: SearchForward }
|
||||||
|
#- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
|
||||||
|
|
||||||
|
#debug:
|
||||||
|
# Display the time it takes to redraw each frame.
|
||||||
|
#render_timer: false
|
||||||
|
|
||||||
|
# Keep the log file after quitting Alacritty.
|
||||||
|
#persistent_logging: false
|
||||||
|
|
||||||
|
# Log level
|
||||||
|
#
|
||||||
|
# Values for `log_level`:
|
||||||
|
# - Off
|
||||||
|
# - Error
|
||||||
|
# - Warn
|
||||||
|
# - Info
|
||||||
|
# - Debug
|
||||||
|
# - Trace
|
||||||
|
#log_level: Warn
|
||||||
|
|
||||||
|
# Print all received window events.
|
||||||
|
#print_events: false
|
||||||
|
|
||||||
|
# Highlight window damage information.
|
||||||
|
#highlight_damage: false
|
39
.config/bspwm/bspwmrc
Executable file
39
.config/bspwm/bspwmrc
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
pgrep -x sxhkd > /dev/null || sxhkd &
|
||||||
|
|
||||||
|
/home/nixen/.local/bin/screen-config &
|
||||||
|
# bspc monitor -d 1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
bspc query -M | xargs -i bspc monitor {} -d 1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
bspc config border_width 2
|
||||||
|
bspc config window_gap 4
|
||||||
|
|
||||||
|
bspc config split_ratio 0.5
|
||||||
|
bspc config single_monocle true
|
||||||
|
bspc config borderless_monocle true
|
||||||
|
bspc config gapless_monocle true
|
||||||
|
bspc config focus_follows_pointer true
|
||||||
|
bspc config top_padding 20
|
||||||
|
|
||||||
|
bspc config active_border_color \#d79921
|
||||||
|
bspc config normal_border_color \#211c1a
|
||||||
|
bspc config focused_border_color \#d79921
|
||||||
|
|
||||||
|
# bspc rule -a Gimp state=floating follow=on
|
||||||
|
# bspc rule -a Chromium desktop='^2'
|
||||||
|
# bspc rule -a mplayer2 state=floating
|
||||||
|
# bspc rule -a Kupfer.py focus=on
|
||||||
|
# bspc rule -a Screenkey manage=off
|
||||||
|
|
||||||
|
/home/nixen/.config/polybar/launch.sh &
|
||||||
|
nitrogen --restore &
|
||||||
|
picom &
|
||||||
|
setxkbmap pl &
|
||||||
|
pgrep bspswallow || bspswallow &
|
||||||
|
dbus-daemon --session --address=unix:path=$XDG_RUNTIME_DIR/bus &
|
||||||
|
# dbus-update-activation-environment --all &
|
||||||
|
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
|
||||||
|
# xrandr --output HDMI-0 --set TearFree on &
|
||||||
|
# xrandr --output DisplayPort-0 --set TearFree on &
|
3
.config/bspwm/noswallow
Normal file
3
.config/bspwm/noswallow
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
xorg-xev
|
||||||
|
xev
|
||||||
|
Xev
|
3
.config/bspwm/terminals
Normal file
3
.config/bspwm/terminals
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
St
|
||||||
|
Alacritty
|
||||||
|
Urxvt
|
212
.config/btop/btop.conf
Normal file
212
.config/btop/btop.conf
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
#? Config file for btop v. 1.2.9
|
||||||
|
|
||||||
|
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||||
|
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||||
|
color_theme = "/usr/share/btop/themes/gruvbox_dark.theme"
|
||||||
|
|
||||||
|
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||||
|
theme_background = True
|
||||||
|
|
||||||
|
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||||
|
truecolor = True
|
||||||
|
|
||||||
|
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||||
|
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||||
|
force_tty = False
|
||||||
|
|
||||||
|
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||||
|
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||||
|
#* Use withespace " " as separator between different presets.
|
||||||
|
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
|
||||||
|
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
|
||||||
|
|
||||||
|
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||||
|
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||||
|
vim_keys = False
|
||||||
|
|
||||||
|
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||||
|
rounded_corners = True
|
||||||
|
|
||||||
|
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||||
|
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||||
|
#* "block" has half the resolution of braille but uses more common characters.
|
||||||
|
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
|
||||||
|
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
|
||||||
|
graph_symbol = "braille"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_cpu = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_mem = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_net = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_proc = "default"
|
||||||
|
|
||||||
|
#* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace.
|
||||||
|
shown_boxes = "cpu mem net proc"
|
||||||
|
|
||||||
|
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||||
|
update_ms = 2000
|
||||||
|
|
||||||
|
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
||||||
|
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||||
|
proc_sorting = "cpu direct"
|
||||||
|
|
||||||
|
#* Reverse sorting order, True or False.
|
||||||
|
proc_reversed = False
|
||||||
|
|
||||||
|
#* Show processes as a tree.
|
||||||
|
proc_tree = False
|
||||||
|
|
||||||
|
#* Use the cpu graph colors in the process list.
|
||||||
|
proc_colors = True
|
||||||
|
|
||||||
|
#* Use a darkening gradient in the process list.
|
||||||
|
proc_gradient = True
|
||||||
|
|
||||||
|
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||||
|
proc_per_core = False
|
||||||
|
|
||||||
|
#* Show process memory as bytes instead of percent.
|
||||||
|
proc_mem_bytes = True
|
||||||
|
|
||||||
|
#* Show cpu graph for each process.
|
||||||
|
proc_cpu_graphs = True
|
||||||
|
|
||||||
|
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||||
|
proc_info_smaps = False
|
||||||
|
|
||||||
|
#* Show proc box on left side of screen instead of right.
|
||||||
|
proc_left = False
|
||||||
|
|
||||||
|
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||||
|
proc_filter_kernel = False
|
||||||
|
|
||||||
|
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||||
|
#* Select from a list of detected attributes from the options menu.
|
||||||
|
cpu_graph_upper = "total"
|
||||||
|
|
||||||
|
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
|
||||||
|
#* Select from a list of detected attributes from the options menu.
|
||||||
|
cpu_graph_lower = "total"
|
||||||
|
|
||||||
|
#* Toggles if the lower CPU graph should be inverted.
|
||||||
|
cpu_invert_lower = True
|
||||||
|
|
||||||
|
#* Set to True to completely disable the lower CPU graph.
|
||||||
|
cpu_single_graph = False
|
||||||
|
|
||||||
|
#* Show cpu box at bottom of screen instead of top.
|
||||||
|
cpu_bottom = False
|
||||||
|
|
||||||
|
#* Shows the system uptime in the CPU box.
|
||||||
|
show_uptime = True
|
||||||
|
|
||||||
|
#* Show cpu temperature.
|
||||||
|
check_temp = True
|
||||||
|
|
||||||
|
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||||
|
cpu_sensor = "Auto"
|
||||||
|
|
||||||
|
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||||
|
show_coretemp = True
|
||||||
|
|
||||||
|
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||||
|
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||||
|
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
|
||||||
|
#* Example: "4:0 5:1 6:3"
|
||||||
|
cpu_core_map = ""
|
||||||
|
|
||||||
|
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
|
||||||
|
temp_scale = "celsius"
|
||||||
|
|
||||||
|
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||||
|
base_10_sizes = False
|
||||||
|
|
||||||
|
#* Show CPU frequency.
|
||||||
|
show_cpu_freq = True
|
||||||
|
|
||||||
|
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||||
|
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||||
|
clock_format = "%X"
|
||||||
|
|
||||||
|
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||||
|
background_update = True
|
||||||
|
|
||||||
|
#* Custom cpu model name, empty string to disable.
|
||||||
|
custom_cpu_name = ""
|
||||||
|
|
||||||
|
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
||||||
|
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
|
||||||
|
disks_filter = ""
|
||||||
|
|
||||||
|
#* Show graphs instead of meters for memory values.
|
||||||
|
mem_graphs = True
|
||||||
|
|
||||||
|
#* Show mem box below net box instead of above.
|
||||||
|
mem_below_net = False
|
||||||
|
|
||||||
|
#* Count ZFS ARC in cached and available memory.
|
||||||
|
zfs_arc_cached = True
|
||||||
|
|
||||||
|
#* If swap memory should be shown in memory box.
|
||||||
|
show_swap = True
|
||||||
|
|
||||||
|
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||||
|
swap_disk = True
|
||||||
|
|
||||||
|
#* If mem box should be split to also show disks info.
|
||||||
|
show_disks = True
|
||||||
|
|
||||||
|
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||||
|
only_physical = True
|
||||||
|
|
||||||
|
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||||
|
use_fstab = True
|
||||||
|
|
||||||
|
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||||
|
zfs_hide_datasets = False
|
||||||
|
|
||||||
|
#* Set to true to show available disk space for privileged users.
|
||||||
|
disk_free_priv = False
|
||||||
|
|
||||||
|
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||||
|
show_io_stat = True
|
||||||
|
|
||||||
|
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||||
|
io_mode = False
|
||||||
|
|
||||||
|
#* Set to True to show combined read/write io graphs in io mode.
|
||||||
|
io_graph_combined = False
|
||||||
|
|
||||||
|
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||||
|
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||||
|
io_graph_speeds = ""
|
||||||
|
|
||||||
|
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||||
|
net_download = 100
|
||||||
|
|
||||||
|
net_upload = 100
|
||||||
|
|
||||||
|
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||||
|
net_auto = True
|
||||||
|
|
||||||
|
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||||
|
net_sync = True
|
||||||
|
|
||||||
|
#* Starts with the Network Interface specified here.
|
||||||
|
net_iface = ""
|
||||||
|
|
||||||
|
#* Show battery stats in top right if battery is present.
|
||||||
|
show_battery = True
|
||||||
|
|
||||||
|
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||||
|
selected_battery = "Auto"
|
||||||
|
|
||||||
|
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||||
|
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||||
|
log_level = "WARNING"
|
@ -306,21 +306,21 @@
|
|||||||
|
|
||||||
|
|
||||||
[global]
|
[global]
|
||||||
frame_color = "#89B4FA"
|
frame_color = "#d79921"
|
||||||
separator_color= frame
|
separator_color= frame
|
||||||
|
|
||||||
[urgency_low]
|
[urgency_low]
|
||||||
background = "#1E1E2E"
|
background = "#211c1a"
|
||||||
foreground = "#CDD6F4"
|
foreground = "#ebd6a1"
|
||||||
|
|
||||||
[urgency_normal]
|
[urgency_normal]
|
||||||
background = "#1E1E2E"
|
background = "#211c1a"
|
||||||
foreground = "#CDD6F4"
|
foreground = "#ebd6a1"
|
||||||
|
|
||||||
[urgency_critical]
|
[urgency_critical]
|
||||||
background = "#1E1E2E"
|
background = "#211c1a"
|
||||||
foreground = "#CDD6F4"
|
foreground = "#CDD6F4"
|
||||||
frame_color = "#FAB387"
|
frame_color = "#cc241d"
|
||||||
|
|
||||||
# Icon for notifications with critical urgency, uncomment to enable
|
# Icon for notifications with critical urgency, uncomment to enable
|
||||||
#default_icon = /path/to/icon
|
#default_icon = /path/to/icon
|
61
.config/htop/htoprc
Normal file
61
.config/htop/htoprc
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# Beware! This file is rewritten by htop when settings are changed in the interface.
|
||||||
|
# The parser is also very primitive, and not human-friendly.
|
||||||
|
htop_version=3.2.1
|
||||||
|
config_reader_min_version=3
|
||||||
|
fields=0 48 17 18 38 39 40 2 46 47 49 1
|
||||||
|
hide_kernel_threads=1
|
||||||
|
hide_userland_threads=0
|
||||||
|
shadow_other_users=0
|
||||||
|
show_thread_names=0
|
||||||
|
show_program_path=1
|
||||||
|
highlight_base_name=0
|
||||||
|
highlight_deleted_exe=1
|
||||||
|
highlight_megabytes=1
|
||||||
|
highlight_threads=1
|
||||||
|
highlight_changes=0
|
||||||
|
highlight_changes_delay_secs=5
|
||||||
|
find_comm_in_cmdline=1
|
||||||
|
strip_exe_from_cmdline=1
|
||||||
|
show_merged_command=0
|
||||||
|
header_margin=1
|
||||||
|
screen_tabs=1
|
||||||
|
detailed_cpu_time=0
|
||||||
|
cpu_count_from_one=0
|
||||||
|
show_cpu_usage=1
|
||||||
|
show_cpu_frequency=0
|
||||||
|
show_cpu_temperature=0
|
||||||
|
degree_fahrenheit=0
|
||||||
|
update_process_names=0
|
||||||
|
account_guest_in_cpu_meter=0
|
||||||
|
color_scheme=0
|
||||||
|
enable_mouse=1
|
||||||
|
delay=15
|
||||||
|
hide_function_bar=0
|
||||||
|
header_layout=two_50_50
|
||||||
|
column_meters_0=LeftCPUs Memory Swap
|
||||||
|
column_meter_modes_0=1 1 1
|
||||||
|
column_meters_1=RightCPUs Tasks LoadAverage Uptime
|
||||||
|
column_meter_modes_1=1 2 2 2
|
||||||
|
tree_view=0
|
||||||
|
sort_key=46
|
||||||
|
tree_sort_key=0
|
||||||
|
sort_direction=-1
|
||||||
|
tree_sort_direction=1
|
||||||
|
tree_view_always_by_pid=0
|
||||||
|
all_branches_collapsed=0
|
||||||
|
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command
|
||||||
|
.sort_key=PERCENT_CPU
|
||||||
|
.tree_sort_key=PID
|
||||||
|
.tree_view=0
|
||||||
|
.tree_view_always_by_pid=0
|
||||||
|
.sort_direction=-1
|
||||||
|
.tree_sort_direction=1
|
||||||
|
.all_branches_collapsed=0
|
||||||
|
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
|
||||||
|
.sort_key=IO_RATE
|
||||||
|
.tree_sort_key=PID
|
||||||
|
.tree_view=0
|
||||||
|
.tree_view_always_by_pid=0
|
||||||
|
.sort_direction=-1
|
||||||
|
.tree_sort_direction=1
|
||||||
|
.all_branches_collapsed=0
|
151
.config/mpv/scripts/skip-intro.lua
Normal file
151
.config/mpv/scripts/skip-intro.lua
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
MAX_SPEED = 100
|
||||||
|
NORMAL_SPEED = 1
|
||||||
|
ONE_SECOND = 1
|
||||||
|
skip = false
|
||||||
|
-- Max noise (dB) and min silence duration (s) to trigger
|
||||||
|
opts = { quietness = -45, duration = 0.85 }
|
||||||
|
|
||||||
|
|
||||||
|
function setOptions()
|
||||||
|
local options = require 'mp.options'
|
||||||
|
options.read_options(opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
function setTime(time)
|
||||||
|
mp.set_property_number('time-pos', time)
|
||||||
|
end
|
||||||
|
|
||||||
|
function getTime()
|
||||||
|
return mp.get_property_native('time-pos')
|
||||||
|
end
|
||||||
|
|
||||||
|
function setSpeed(speed)
|
||||||
|
mp.set_property('speed', speed)
|
||||||
|
end
|
||||||
|
|
||||||
|
function setPause(state)
|
||||||
|
mp.set_property_bool('pause', state)
|
||||||
|
end
|
||||||
|
|
||||||
|
function setMute(state)
|
||||||
|
mp.set_property_bool('mute', state)
|
||||||
|
end
|
||||||
|
|
||||||
|
function initAudioFilter()
|
||||||
|
local af_table = mp.get_property_native('af')
|
||||||
|
af_table[#af_table + 1] = {
|
||||||
|
enabled = false,
|
||||||
|
label = 'silencedetect',
|
||||||
|
name = 'lavfi',
|
||||||
|
params = { graph = 'silencedetect=noise=' .. opts.quietness .. 'dB:d=' .. opts.duration }
|
||||||
|
}
|
||||||
|
mp.set_property_native('af', af_table)
|
||||||
|
end
|
||||||
|
|
||||||
|
function initVideoFilter()
|
||||||
|
local vf_table = mp.get_property_native('vf')
|
||||||
|
vf_table[#vf_table + 1] = {
|
||||||
|
enabled = false,
|
||||||
|
label = 'blackout',
|
||||||
|
name = 'lavfi',
|
||||||
|
params = { graph = '' }
|
||||||
|
}
|
||||||
|
mp.set_property_native('vf', vf_table)
|
||||||
|
end
|
||||||
|
|
||||||
|
function setAudioFilter(state)
|
||||||
|
local af_table = mp.get_property_native('af')
|
||||||
|
if #af_table > 0 then
|
||||||
|
for i = #af_table, 1, -1 do
|
||||||
|
if af_table[i].label == 'silencedetect' then
|
||||||
|
af_table[i].enabled = state
|
||||||
|
mp.set_property_native('af', af_table)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function dim(state)
|
||||||
|
local dim = { width = 0, height = 0 }
|
||||||
|
if state == true then
|
||||||
|
dim.width = mp.get_property_native('width')
|
||||||
|
dim.height = mp.get_property_native('height')
|
||||||
|
end
|
||||||
|
return dim.width .. 'x' .. dim.height
|
||||||
|
end
|
||||||
|
|
||||||
|
function setVideoFilter(state)
|
||||||
|
local vf_table = mp.get_property_native('vf')
|
||||||
|
if #vf_table > 0 then
|
||||||
|
for i = #vf_table, 1, -1 do
|
||||||
|
if vf_table[i].label == 'blackout' then
|
||||||
|
vf_table[i].enabled = state
|
||||||
|
vf_table[i].params = { graph = 'nullsink,color=c=black:s=' .. dim(state) }
|
||||||
|
mp.set_property_native('vf', vf_table)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function silenceTrigger(name, value)
|
||||||
|
if value == '{}' or value == nil then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local skipTime = tonumber(string.match(value, '%d+%.?%d+'))
|
||||||
|
local currTime = getTime()
|
||||||
|
|
||||||
|
if skipTime == nil or skipTime < currTime + ONE_SECOND then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
stopSkip()
|
||||||
|
setTime(skipTime)
|
||||||
|
skip = false
|
||||||
|
end
|
||||||
|
|
||||||
|
function setAudioTrigger(state)
|
||||||
|
if state == true then
|
||||||
|
mp.observe_property('af-metadata/silencedetect', 'string', silenceTrigger)
|
||||||
|
else
|
||||||
|
mp.unobserve_property(silenceTrigger)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function startSkip()
|
||||||
|
startTime = getTime()
|
||||||
|
-- This audio filter detects moments of silence
|
||||||
|
setAudioFilter(true)
|
||||||
|
-- This video filter makes fast-forward faster
|
||||||
|
setVideoFilter(true)
|
||||||
|
setAudioTrigger(true)
|
||||||
|
setPause(false)
|
||||||
|
setMute(true)
|
||||||
|
setSpeed(MAX_SPEED)
|
||||||
|
end
|
||||||
|
|
||||||
|
function stopSkip()
|
||||||
|
setAudioFilter(false)
|
||||||
|
setVideoFilter(false)
|
||||||
|
setAudioTrigger(false)
|
||||||
|
setMute(false)
|
||||||
|
setSpeed(NORMAL_SPEED)
|
||||||
|
end
|
||||||
|
|
||||||
|
function keypress()
|
||||||
|
skip = not skip
|
||||||
|
if skip then
|
||||||
|
startSkip()
|
||||||
|
else
|
||||||
|
stopSkip()
|
||||||
|
setTime(startTime)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
setOptions(opts)
|
||||||
|
initAudioFilter()
|
||||||
|
initVideoFilter()
|
||||||
|
|
||||||
|
mp.add_key_binding('Tab', 'skip-key', keypress)
|
@ -5,7 +5,7 @@ M.plugins = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
M.ui = {
|
M.ui = {
|
||||||
theme = "catppuccin",
|
theme = "gruvbox",
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
416
.config/picom.conf
Normal file
416
.config/picom.conf
Normal file
@ -0,0 +1,416 @@
|
|||||||
|
#################################
|
||||||
|
## 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"
|
||||||
|
# ];
|
||||||
|
#
|
||||||
|
# # 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 = []
|
||||||
|
#
|
||||||
|
# # 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.8;
|
||||||
|
#
|
||||||
|
# # Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
|
||||||
|
# # frame-opacity = 1.0
|
||||||
|
# frame-opacity = 0.7;
|
||||||
|
#
|
||||||
|
# # 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 = []
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# #################################
|
||||||
|
# # 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 = 0
|
||||||
|
#
|
||||||
|
# # 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 =
|
||||||
|
# # blur-size = 12
|
||||||
|
# #
|
||||||
|
# # blur-deviation = false
|
||||||
|
# #
|
||||||
|
# # blur-strength = 5
|
||||||
|
#
|
||||||
|
# # 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 = false
|
||||||
|
#
|
||||||
|
# # 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 = false
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# # 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"
|
||||||
|
# ];
|
||||||
|
#
|
||||||
|
# #################################
|
||||||
|
# # 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 = true;
|
||||||
|
#
|
||||||
|
# # 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 = false
|
||||||
|
#
|
||||||
|
# # 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 everytime, 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.
|
||||||
|
# # See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
|
||||||
|
# # in the source tree for examples.
|
||||||
|
# #
|
||||||
|
# # glx-fshader-win = ""
|
||||||
|
#
|
||||||
|
# # 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
|
||||||
|
#
|
||||||
|
# # 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 wether 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 = 0.75; focus = true; full-shadow = false; };
|
||||||
|
# dock = { shadow = false; clip-shadow-above = true; }
|
||||||
|
# dnd = { shadow = false; }
|
||||||
|
# popup_menu = { opacity = 0.8; }
|
||||||
|
# dropdown_menu = { opacity = 0.8; }
|
||||||
|
# };
|
398
.config/polybar/2
Normal file
398
.config/polybar/2
Normal file
@ -0,0 +1,398 @@
|
|||||||
|
;==========================================================
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
||||||
|
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
||||||
|
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
||||||
|
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
|
||||||
|
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
|
||||||
|
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; To learn more about how to configure Polybar
|
||||||
|
; go to https://github.com/polybar/polybar
|
||||||
|
;
|
||||||
|
; The README contains a lot of information
|
||||||
|
;
|
||||||
|
;==========================================================
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
;background = ${xrdb:background}
|
||||||
|
background = ${xrdb:color0}
|
||||||
|
;foreground = #676b73
|
||||||
|
foreground = ${xrdb:foreground}
|
||||||
|
|
||||||
|
bg = ${xrdb:background}
|
||||||
|
color0 = ${xrdb:color0}
|
||||||
|
color1 = ${xrdb:color1}
|
||||||
|
color2 = ${xrdb:color2}
|
||||||
|
color3 = ${xrdb:color3}
|
||||||
|
color4 = ${xrdb:color4}
|
||||||
|
color5 = ${xrdb:color5}
|
||||||
|
color6 = ${xrdb:color6}
|
||||||
|
color7 = ${xrdb:color7}
|
||||||
|
color8 = ${xrdb:color8}
|
||||||
|
color9 = ${xrdb:color9}
|
||||||
|
color10 = ${xrdb:color10}
|
||||||
|
color11 = ${xrdb:color11}
|
||||||
|
color12 = ${xrdb:color12}
|
||||||
|
color13 = ${xrdb:color13}
|
||||||
|
color14 = ${xrdb:color14}
|
||||||
|
color15 = ${xrdb:color15}
|
||||||
|
dark-light = #272A2B
|
||||||
|
active-light = #313435
|
||||||
|
|
||||||
|
[bar/example]
|
||||||
|
tray-position = right
|
||||||
|
monitor = LVDS1
|
||||||
|
width = 100%
|
||||||
|
height = 22
|
||||||
|
padding-left = 1
|
||||||
|
padding-right = 0
|
||||||
|
padding-bottom = 4
|
||||||
|
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
bottom = false
|
||||||
|
border-top-size = 0
|
||||||
|
border-bottom-size = 4
|
||||||
|
border-top-color = ${colors.background}
|
||||||
|
border-bottom-color = ${colors.background}
|
||||||
|
|
||||||
|
line-size = 1
|
||||||
|
wm-restack = bspwm
|
||||||
|
|
||||||
|
modules-left = round-left bspwm round-right empty-space
|
||||||
|
modules-center =
|
||||||
|
modules-right = round-left pipewire-microphone pulseaudio-control round-right mail round-left cpu round-right updates wlan mem xbacklight battery round-left time round-right powermenu
|
||||||
|
font-0 = JetBrainsMono Nerd Font:style=Bold:pixelsize=11;3
|
||||||
|
font-1 = JetBrainsMono Nerd Font:size=12;4
|
||||||
|
# font-2 = Material Design Icons:style=Bold:size=9;3
|
||||||
|
# font-3 = unifont:fontformat=truetype:size=9;3
|
||||||
|
|
||||||
|
|
||||||
|
[bar/example2]
|
||||||
|
tray-position = right
|
||||||
|
monitor = DisplayPort-0
|
||||||
|
width = 100%
|
||||||
|
height = 22
|
||||||
|
padding-left = 1
|
||||||
|
padding-right = 0
|
||||||
|
padding-bottom = 4
|
||||||
|
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
bottom = false
|
||||||
|
border-top-size = 0
|
||||||
|
border-bottom-size = 4
|
||||||
|
border-top-color = ${colors.background}
|
||||||
|
border-bottom-color = ${colors.background}
|
||||||
|
|
||||||
|
line-size = 1
|
||||||
|
wm-restack = bspwm
|
||||||
|
|
||||||
|
modules-left = round-left bspwm round-right empty-space
|
||||||
|
modules-center =
|
||||||
|
modules-right = pipewire-microphone pulseaudio-control mail round-left cpu round-right updates wlan mem xbacklight battery round-left time round-right powermenu
|
||||||
|
font-0 = JetBrainsMono Nerd Font:style=Bold:pixelsize=9;3
|
||||||
|
font-1 = JetBrainsMono Nerd Font:size=14;4
|
||||||
|
# font-2 = Material Design Icons:style=Bold:size=9;3
|
||||||
|
# font-3 = unifont:fontformat=truetype:size=9;3
|
||||||
|
|
||||||
|
[module/pulseaudio-control]
|
||||||
|
type = custom/script
|
||||||
|
tail = true
|
||||||
|
format-underline = ${colors.cyan}
|
||||||
|
label-padding = 2
|
||||||
|
label-foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
# Icons mixed from Font Awesome 5 and Material Icons
|
||||||
|
# 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 " " --sink-nicknames-from "device.description" --sink-nickname "alsa_output.pci-0000_00_1b.0.analog-stereo: ﰝ Speakers" --sink-nickname "alsa_output.pci-0000_09_00.3.analog-stereo: Headphones" --sink-nickname "alsa_output.pci-0000_07_00.1.hdmi-stereo: HDMI" listen
|
||||||
|
click-right = exec pavucontrol &
|
||||||
|
click-left = pulseaudio-control togmute
|
||||||
|
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/polywins]
|
||||||
|
type = custom/script
|
||||||
|
exec = ~/.config/polybar/scripts/polywins.sh 2>/dev/null
|
||||||
|
format = <label>
|
||||||
|
format-background = #2a2e36
|
||||||
|
label = %output%
|
||||||
|
label-padding = 0
|
||||||
|
tail = true
|
||||||
|
|
||||||
|
[module/empty-space]
|
||||||
|
type = custom/text
|
||||||
|
content = " "
|
||||||
|
|
||||||
|
[module/round-left]
|
||||||
|
type = custom/text
|
||||||
|
content = %{T3}%{T-}
|
||||||
|
content-foreground = ${colors.bg}
|
||||||
|
|
||||||
|
[module/round-right]
|
||||||
|
type = custom/text
|
||||||
|
content = %{T3}%{T-}
|
||||||
|
content-foreground = ${colors.bg}
|
||||||
|
|
||||||
|
[module/roundd-left]
|
||||||
|
type = custom/text
|
||||||
|
content = %{T3}%{T-}
|
||||||
|
content-foreground = #a3be8c
|
||||||
|
|
||||||
|
[module/roundd-right]
|
||||||
|
type = custom/text
|
||||||
|
content = %{T3}%{T-}
|
||||||
|
content-foreground = #a3be8c
|
||||||
|
|
||||||
|
[module/temperature]
|
||||||
|
type = internal/temperature
|
||||||
|
thermal-zone = 0
|
||||||
|
warn-temperature = 70
|
||||||
|
|
||||||
|
format = <ramp> <label>
|
||||||
|
format-warn = <ramp> <label-warn>
|
||||||
|
format-padding = 1
|
||||||
|
label = %temperature%
|
||||||
|
label-warn = %temperature%
|
||||||
|
ramp-0 = ""
|
||||||
|
ramp-font = 3
|
||||||
|
ramp-foreground = #a4ebf3
|
||||||
|
|
||||||
|
|
||||||
|
[module/bspwm]
|
||||||
|
type = internal/bspwm
|
||||||
|
|
||||||
|
pin-workspaces = true
|
||||||
|
inline-mode = true
|
||||||
|
enable-click = true
|
||||||
|
enable-scroll = true
|
||||||
|
reverse-scroll = false
|
||||||
|
|
||||||
|
format = <label-state>
|
||||||
|
|
||||||
|
ws-icon-0 = 1;%{F#F9DE8F}
|
||||||
|
ws-icon-1 = 2;%{F#ff9b93}
|
||||||
|
ws-icon-2 = 3;%{F#95e1d3}
|
||||||
|
ws-icon-3 = 4;%{F#81A1C1}
|
||||||
|
ws-icon-4 = 5;%{F#A3BE8C}ﱮ
|
||||||
|
ws-icon-5 = 6;%{F#F9DE8F}
|
||||||
|
ws-icon-6 = 7;%{F#ff9b93}
|
||||||
|
ws-icon-7 = 8;%{F#95e1d3}
|
||||||
|
ws-icon-8 = 9;%{F#81A1C1}
|
||||||
|
|
||||||
|
label-separator = " "
|
||||||
|
label-separator-background = ${colors.bg}
|
||||||
|
|
||||||
|
label-focused = %icon%
|
||||||
|
label-focused-foreground = ${colors.foreground}
|
||||||
|
label-focused-padding = 1
|
||||||
|
label-focused-background = ${colors.color8}
|
||||||
|
label-focused-margin = 0
|
||||||
|
|
||||||
|
label-occupied = %icon%
|
||||||
|
label-occupied-foreground = ${colors.color8}
|
||||||
|
label-occupied-background = ${colors.bg}
|
||||||
|
label-occupied-padding = 1
|
||||||
|
label-occupied-margin = 0
|
||||||
|
|
||||||
|
label-empty = %icon%
|
||||||
|
label-empty-foreground = ${colors.foreground}
|
||||||
|
label-empty-padding = 1
|
||||||
|
label-empty-background = ${colors.bg}
|
||||||
|
label-empty-margin = 0
|
||||||
|
|
||||||
|
|
||||||
|
label-urgent = %icon%
|
||||||
|
label-urgent-foreground = ${colors.bg}
|
||||||
|
label-urgent-background = ${colors.color1}
|
||||||
|
label-urgent-padding = 1
|
||||||
|
|
||||||
|
[module/alsa]
|
||||||
|
type = internal/alsa
|
||||||
|
format-volume = <label-volume> <bar-volume>
|
||||||
|
label-volume = " "
|
||||||
|
label-volume-foreground = ${colors.foreground}
|
||||||
|
format-muted-foreground = ${colors.foreground}
|
||||||
|
label-muted =
|
||||||
|
|
||||||
|
format-muted-padding = 1
|
||||||
|
|
||||||
|
bar-volume-width = 10
|
||||||
|
bar-volume-foreground-0 = #61afef
|
||||||
|
bar-volume-foreground-1 = #61afef
|
||||||
|
bar-volume-foreground-2 = #61afef
|
||||||
|
bar-volume-foreground-3 = #61afef
|
||||||
|
bar-volume-foreground-4 = #61afef
|
||||||
|
bar-volume-foreground-5 = #61afef
|
||||||
|
bar-volume-foreground-6 = #61afef
|
||||||
|
bar-volume-gradient = false
|
||||||
|
bar-volume-indicator =
|
||||||
|
bar-volume-indicator-foreground = #61afef
|
||||||
|
bar-volume-indicator-font = 2
|
||||||
|
bar-volume-fill = ━
|
||||||
|
bar-volume-fill-foreground = #61afef
|
||||||
|
bar-volume-fill-font = 2
|
||||||
|
bar-volume-empty = ━
|
||||||
|
bar-volume-empty-font = 2
|
||||||
|
bar-volume-empty-foreground = #565c64
|
||||||
|
format-volume-padding = 2
|
||||||
|
|
||||||
|
[module/time]
|
||||||
|
type = internal/date
|
||||||
|
interval = 60
|
||||||
|
|
||||||
|
format = <label>
|
||||||
|
format-background = ${colors.bg}
|
||||||
|
format-foreground = #82868e
|
||||||
|
|
||||||
|
date = %H:%M%{F-}
|
||||||
|
time-alt = %a, %b %d%{F-}
|
||||||
|
|
||||||
|
label = %date%%time%
|
||||||
|
|
||||||
|
[module/mem]
|
||||||
|
type = custom/script
|
||||||
|
exec = free -m | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p'
|
||||||
|
format = <label>
|
||||||
|
format-prefix = " "
|
||||||
|
label = %output% MB
|
||||||
|
label-padding = 1
|
||||||
|
format-prefix-foreground = #d19a66
|
||||||
|
|
||||||
|
[module/updates]
|
||||||
|
type = custom/script
|
||||||
|
exec = xbps-updates
|
||||||
|
format = <label>
|
||||||
|
interval = 300
|
||||||
|
label = %output%
|
||||||
|
label-padding = 2
|
||||||
|
label-foreground = ${colors.color1}
|
||||||
|
|
||||||
|
[module/mail]
|
||||||
|
type = custom/script
|
||||||
|
exec = mails_unread.sh
|
||||||
|
format = <label>
|
||||||
|
interval = 10
|
||||||
|
label = %output%
|
||||||
|
label-padding = 2
|
||||||
|
click-left = alacritty -e "neomutt"
|
||||||
|
click-right = mw -Y
|
||||||
|
label-foreground = ${colors.color1}
|
||||||
|
|
||||||
|
[module/powermenu]
|
||||||
|
type = custom/text
|
||||||
|
content =" "
|
||||||
|
content-padding = 2
|
||||||
|
click-left = doas zzz &
|
||||||
|
content-foreground = ${colors.color1}
|
||||||
|
|
||||||
|
[module/wlan]
|
||||||
|
type = internal/network
|
||||||
|
interface = wlan0
|
||||||
|
interval = 3.0
|
||||||
|
format-connected = <label-connected>
|
||||||
|
label-connected = " %essid%: %signal%% "
|
||||||
|
label-connected-foreground = ${colors.color2}
|
||||||
|
format-disconnected = <label-disconnected>
|
||||||
|
label-disconnected = "睊 "
|
||||||
|
label-disconnected-foreground = ${colors.color1}
|
||||||
|
ramp-signal-0 = 😱
|
||||||
|
ramp-signal-1 = 😠
|
||||||
|
ramp-signal-2 = 😒
|
||||||
|
ramp-signal-3 = 😊
|
||||||
|
ramp-signal-4 = 😃
|
||||||
|
ramp-signal-5 = 😈
|
||||||
|
|
||||||
|
[module/battery]
|
||||||
|
type = internal/battery
|
||||||
|
battery = BAT0
|
||||||
|
adapter = AC
|
||||||
|
full-at = 100
|
||||||
|
|
||||||
|
format-charging = <animation-charging> <label-charging>
|
||||||
|
label-charging = %percentage%%
|
||||||
|
format-charging-foreground = ${colors.color4}
|
||||||
|
format-charging-background = ${colors.background}
|
||||||
|
|
||||||
|
format-discharging = <ramp-capacity> <label-discharging>
|
||||||
|
label-discharging = %percentage%%
|
||||||
|
format-discharging-foreground = ${colors.foreground}
|
||||||
|
format-discharging-background = ${colors.background}
|
||||||
|
|
||||||
|
format-full-prefix = " "
|
||||||
|
format-full-prefix-foreground = #A0E8A2
|
||||||
|
format-foreground = ${colors.color4}
|
||||||
|
format-background = ${colors.background}
|
||||||
|
|
||||||
|
label-discharging-foreground = ${colors.foreground}
|
||||||
|
ramp-capacity-foreground = #A0E8A2
|
||||||
|
label-charging-foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
label-padding = 1
|
||||||
|
|
||||||
|
ramp-capacity-0 = " "
|
||||||
|
ramp-capacity-1 = " "
|
||||||
|
ramp-capacity-2 = " "
|
||||||
|
ramp-capacity-3 = " "
|
||||||
|
ramp-capacity-4 = " "
|
||||||
|
|
||||||
|
|
||||||
|
animation-charging-0 = " "
|
||||||
|
animation-charging-1 = " "
|
||||||
|
animation-charging-2 = " "
|
||||||
|
animation-charging-3 = " "
|
||||||
|
animation-charging-4 = " "
|
||||||
|
|
||||||
|
|
||||||
|
animation-charging-foreground = #DF8890
|
||||||
|
animation-charging-framerate = 750
|
||||||
|
|
||||||
|
format-charging-padding = 1
|
||||||
|
format-discharging-padding = 1
|
||||||
|
|
||||||
|
[module/volume]
|
||||||
|
type = custom/script
|
||||||
|
exec = amixer get Master | awk '$0~/%/{print $4}' | tr -d '[]'
|
||||||
|
format = <label>
|
||||||
|
internal = 5.0
|
||||||
|
label = %output%
|
||||||
|
label-foreground = #BF616A
|
||||||
|
label-padding = 1
|
||||||
|
|
||||||
|
[module/xbacklight]
|
||||||
|
type = internal/xbacklight
|
||||||
|
format = <label>
|
||||||
|
format-prefix = " "
|
||||||
|
label = %percentage%
|
||||||
|
format-prefix-foreground = #61afef
|
||||||
|
label-foreground = #D8DEE9
|
||||||
|
format-padding = 1
|
||||||
|
|
||||||
|
[module/cpu]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 2.5
|
||||||
|
|
||||||
|
format-prefix =" "
|
||||||
|
format = <label>
|
||||||
|
|
||||||
|
label = CPU %percentage%%
|
||||||
|
format-background = ${colors.bg}
|
||||||
|
format-foreground = ${colors.color4}
|
||||||
|
|
||||||
|
[module/xwindow]
|
||||||
|
type = internal/xwindow
|
||||||
|
label = %title:0:30:...
|
||||||
|
|
||||||
|
|
||||||
|
[module/pipewire-microphone]
|
||||||
|
type = custom/script
|
||||||
|
exec = $HOME/.config/polybar/scripts/pipewire-microphone.sh
|
||||||
|
tail = true
|
||||||
|
click-left = $HOME/.config/polybar/scripts/pipewire-microphone.sh --toggle &
|
||||||
|
click-right = pavuctl
|
531
.config/polybar/config
Normal file
531
.config/polybar/config
Normal file
@ -0,0 +1,531 @@
|
|||||||
|
;==========================================================
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
||||||
|
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
||||||
|
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
||||||
|
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
|
||||||
|
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
|
||||||
|
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; To learn more about how to configure Polybar
|
||||||
|
; go to https://github.com/polybar/polybar
|
||||||
|
;
|
||||||
|
; The README contains a lot of information
|
||||||
|
;
|
||||||
|
;==========================================================
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
;background = ${xrdb:background}
|
||||||
|
background = ${xrdb:color0}
|
||||||
|
;foreground = #676b73
|
||||||
|
foreground = ${xrdb:foreground}
|
||||||
|
|
||||||
|
bg = ${xrdb:background}
|
||||||
|
color0 = ${xrdb:color0}
|
||||||
|
color1 = ${xrdb:color1}
|
||||||
|
color2 = ${xrdb:color2}
|
||||||
|
color3 = ${xrdb:color3}
|
||||||
|
color4 = ${xrdb:color4}
|
||||||
|
color5 = ${xrdb:color5}
|
||||||
|
color6 = ${xrdb:color6}
|
||||||
|
color7 = ${xrdb:color7}
|
||||||
|
color8 = ${xrdb:color8}
|
||||||
|
color9 = ${xrdb:color9}
|
||||||
|
color10 = ${xrdb:color10}
|
||||||
|
color11 = ${xrdb:color11}
|
||||||
|
color12 = ${xrdb:color12}
|
||||||
|
color13 = ${xrdb:color13}
|
||||||
|
color14 = ${xrdb:color14}
|
||||||
|
color15 = ${xrdb:color15}
|
||||||
|
dark-light = #272A2B
|
||||||
|
active-light = #313435
|
||||||
|
|
||||||
|
[bar/example]
|
||||||
|
tray-position = right
|
||||||
|
monitor = LVDS1
|
||||||
|
width = 100%
|
||||||
|
height = 16
|
||||||
|
padding-left = 1
|
||||||
|
padding-right = 0
|
||||||
|
padding-bottom = 4
|
||||||
|
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
bottom = false
|
||||||
|
border-top-size = 0
|
||||||
|
border-bottom-size = 4
|
||||||
|
border-top-color = ${colors.background}
|
||||||
|
border-bottom-color = ${colors.background}
|
||||||
|
|
||||||
|
line-size = 1
|
||||||
|
wm-restack = bspwm
|
||||||
|
|
||||||
|
modules-left = round-left bspwm round-right empty-space
|
||||||
|
modules-center = mpd
|
||||||
|
modules-right = pipewire-microphone pulseaudio-control mail round-left cpu temperature round-right updates wlan wired mem xbacklight battery round-left time round-right powermenu
|
||||||
|
font-0 = JetBrainsMono Nerd Font:style=Bold:pixelsize=9;3
|
||||||
|
font-1 = JetBrainsMono Nerd Font:size=14;4
|
||||||
|
# font-2 = Material Design Icons:style=Bold:size=9;3
|
||||||
|
# font-3 = unifont:fontformat=truetype:size=9;3
|
||||||
|
|
||||||
|
[bar/external1]
|
||||||
|
tray-position = right
|
||||||
|
monitor = HDMI2
|
||||||
|
width = 100%
|
||||||
|
height = 16
|
||||||
|
padding-left = 1
|
||||||
|
padding-right = 0
|
||||||
|
padding-bottom = 4
|
||||||
|
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
bottom = false
|
||||||
|
border-top-size = 0
|
||||||
|
border-bottom-size = 4
|
||||||
|
border-top-color = ${colors.background}
|
||||||
|
border-bottom-color = ${colors.background}
|
||||||
|
|
||||||
|
line-size = 1
|
||||||
|
wm-restack = bspwm
|
||||||
|
|
||||||
|
modules-left = round-left bspwm round-right empty-space
|
||||||
|
modules-center = mpd
|
||||||
|
modules-right = pipewire-microphone pulseaudio-control mail round-left cpu temperature round-right updates wlan wired mem xbacklight battery round-left time round-right powermenu
|
||||||
|
font-0 = JetBrainsMono Nerd Font:style=Bold:pixelsize=9;3
|
||||||
|
font-1 = JetBrainsMono Nerd Font:size=14;4
|
||||||
|
# font-2 = Material Design Icons:style=Bold:size=9;3
|
||||||
|
# font-3 = unifont:fontformat=truetype:size=9;3
|
||||||
|
|
||||||
|
[bar/example2]
|
||||||
|
tray-position = right
|
||||||
|
monitor = DisplayPort-0
|
||||||
|
width = 100%
|
||||||
|
height = 22
|
||||||
|
padding-left = 1
|
||||||
|
padding-right = 0
|
||||||
|
padding-bottom = 4
|
||||||
|
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
bottom = false
|
||||||
|
border-top-size = 0
|
||||||
|
border-bottom-size = 4
|
||||||
|
border-top-color = ${colors.background}
|
||||||
|
border-bottom-color = ${colors.background}
|
||||||
|
|
||||||
|
line-size = 1
|
||||||
|
wm-restack = bspwm
|
||||||
|
|
||||||
|
modules-left = round-left bspwm round-right empty-space
|
||||||
|
modules-center =
|
||||||
|
modules-right = pipewire-microphone pulseaudio-control mail round-left cpu round-right updates wlan mem xbacklight battery round-left time round-right powermenu
|
||||||
|
font-0 = JetBrainsMono Nerd Font:style=Bold:pixelsize=9;3
|
||||||
|
font-1 = JetBrainsMono Nerd Font:size=14;4
|
||||||
|
# font-2 = Material Design Icons:style=Bold:size=9;3
|
||||||
|
# font-3 = unifont:fontformat=truetype:size=9;3
|
||||||
|
|
||||||
|
[module/pulseaudio-control]
|
||||||
|
type = custom/script
|
||||||
|
tail = true
|
||||||
|
format-underline = ${colors.cyan}
|
||||||
|
label-padding = 2
|
||||||
|
label-foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
# Icons mixed from Font Awesome 5 and Material Icons
|
||||||
|
# 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 " " --sink-nicknames-from "device.description" --sink-nickname "alsa_output.pci-0000_00_1b.0.analog-stereo: ﰝ Speakers" --sink-nickname "alsa_output.pci-0000_09_00.3.analog-stereo: Headphones" --sink-nickname "alsa_output.pci-0000_07_00.1.hdmi-stereo: HDMI" listen
|
||||||
|
click-right = exec pavucontrol &
|
||||||
|
click-left = pulseaudio-control togmute
|
||||||
|
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/polywins]
|
||||||
|
type = custom/script
|
||||||
|
exec = ~/.config/polybar/scripts/polywins.sh 2>/dev/null
|
||||||
|
format = <label>
|
||||||
|
format-background = #2a2e36
|
||||||
|
label = %output%
|
||||||
|
label-padding = 0
|
||||||
|
tail = true
|
||||||
|
|
||||||
|
[module/empty-space]
|
||||||
|
type = custom/text
|
||||||
|
content = " "
|
||||||
|
|
||||||
|
[module/round-left]
|
||||||
|
type = custom/text
|
||||||
|
content = %{T3}%{T-}
|
||||||
|
content-foreground = ${colors.bg}
|
||||||
|
|
||||||
|
[module/round-right]
|
||||||
|
type = custom/text
|
||||||
|
content = %{T3}%{T-}
|
||||||
|
content-foreground = ${colors.bg}
|
||||||
|
|
||||||
|
[module/roundd-left]
|
||||||
|
type = custom/text
|
||||||
|
content = %{T3}%{T-}
|
||||||
|
content-foreground = #a3be8c
|
||||||
|
|
||||||
|
[module/roundd-right]
|
||||||
|
type = custom/text
|
||||||
|
content = %{T3}%{T-}
|
||||||
|
content-foreground = #a3be8c
|
||||||
|
|
||||||
|
[module/temperature]
|
||||||
|
type = internal/temperature
|
||||||
|
thermal-zone = 0
|
||||||
|
warn-temperature = 70
|
||||||
|
format-foreground = ${colors.color3}
|
||||||
|
format-background = ${colors.bg}
|
||||||
|
|
||||||
|
format = <ramp> <label>
|
||||||
|
format-warn = <ramp> <label-warn>
|
||||||
|
format-padding = 1
|
||||||
|
label = %temperature%
|
||||||
|
label-warn = %temperature%
|
||||||
|
ramp-0 = ""
|
||||||
|
ramp-font = 3
|
||||||
|
# ramp-foreground = #a4ebf3
|
||||||
|
|
||||||
|
|
||||||
|
[module/bspwm]
|
||||||
|
type = internal/bspwm
|
||||||
|
|
||||||
|
pin-workspaces = true
|
||||||
|
inline-mode = true
|
||||||
|
enable-click = true
|
||||||
|
enable-scroll = true
|
||||||
|
reverse-scroll = false
|
||||||
|
|
||||||
|
format = <label-state>
|
||||||
|
|
||||||
|
ws-icon-0 = "1;%{F#F9DE8F} "
|
||||||
|
ws-icon-1 = "2;%{F#ff9b93} "
|
||||||
|
ws-icon-2 = "3;%{F#95e1d3} "
|
||||||
|
ws-icon-3 = "4;%{F#81A1C1} "
|
||||||
|
ws-icon-4 = "5;%{F#A3BE8C} ﱮ "
|
||||||
|
ws-icon-5 = "6;%{F#F9DE8F} "
|
||||||
|
ws-icon-6 = "7;%{F#ff9b93} "
|
||||||
|
ws-icon-7 = "8;%{F#95e1d3} "
|
||||||
|
ws-icon-8 = "9;%{F#81A1C1} "
|
||||||
|
|
||||||
|
label-separator = ""
|
||||||
|
label-separator-background = ${colors.bg}
|
||||||
|
|
||||||
|
label-focused = %icon%
|
||||||
|
label-focused-foreground = ${colors.foreground}
|
||||||
|
label-focused-padding = 1
|
||||||
|
label-focused-background = ${colors.color8}
|
||||||
|
label-focused-margin = 0
|
||||||
|
|
||||||
|
label-occupied = %icon%
|
||||||
|
label-occupied-foreground = ${colors.color8}
|
||||||
|
label-occupied-background = ${colors.bg}
|
||||||
|
label-occupied-padding = 1
|
||||||
|
label-occupied-margin = 0
|
||||||
|
|
||||||
|
label-empty = %icon%
|
||||||
|
label-empty-foreground = ${colors.foreground}
|
||||||
|
label-empty-padding = 1
|
||||||
|
label-empty-background = ${colors.bg}
|
||||||
|
label-empty-margin = 0
|
||||||
|
|
||||||
|
|
||||||
|
label-urgent = %icon%
|
||||||
|
label-urgent-foreground = ${colors.bg}
|
||||||
|
label-urgent-background = ${colors.color1}
|
||||||
|
label-urgent-padding = 1
|
||||||
|
|
||||||
|
[module/alsa]
|
||||||
|
type = internal/alsa
|
||||||
|
format-volume = <label-volume> <bar-volume>
|
||||||
|
label-volume = " "
|
||||||
|
label-volume-foreground = ${colors.foreground}
|
||||||
|
format-muted-foreground = ${colors.foreground}
|
||||||
|
label-muted =
|
||||||
|
|
||||||
|
format-muted-padding = 1
|
||||||
|
|
||||||
|
bar-volume-width = 10
|
||||||
|
bar-volume-foreground-0 = #61afef
|
||||||
|
bar-volume-foreground-1 = #61afef
|
||||||
|
bar-volume-foreground-2 = #61afef
|
||||||
|
bar-volume-foreground-3 = #61afef
|
||||||
|
bar-volume-foreground-4 = #61afef
|
||||||
|
bar-volume-foreground-5 = #61afef
|
||||||
|
bar-volume-foreground-6 = #61afef
|
||||||
|
bar-volume-gradient = false
|
||||||
|
bar-volume-indicator =
|
||||||
|
bar-volume-indicator-foreground = #61afef
|
||||||
|
bar-volume-indicator-font = 2
|
||||||
|
bar-volume-fill = ━
|
||||||
|
bar-volume-fill-foreground = #61afef
|
||||||
|
bar-volume-fill-font = 2
|
||||||
|
bar-volume-empty = ━
|
||||||
|
bar-volume-empty-font = 2
|
||||||
|
bar-volume-empty-foreground = #565c64
|
||||||
|
format-volume-padding = 2
|
||||||
|
|
||||||
|
[module/time]
|
||||||
|
type = internal/date
|
||||||
|
interval = 60
|
||||||
|
|
||||||
|
format = <label>
|
||||||
|
format-background = ${colors.bg}
|
||||||
|
format-foreground = #82868e
|
||||||
|
|
||||||
|
date = %H:%M%{F-}
|
||||||
|
time-alt = %a, %b %d%{F-}
|
||||||
|
|
||||||
|
label = %date%%time%
|
||||||
|
|
||||||
|
[module/mem]
|
||||||
|
type = custom/script
|
||||||
|
exec = free -m | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p'
|
||||||
|
format = <label>
|
||||||
|
format-prefix = " "
|
||||||
|
label = %output% MB
|
||||||
|
label-padding = 1
|
||||||
|
format-prefix-foreground = #d19a66
|
||||||
|
|
||||||
|
[module/updates]
|
||||||
|
type = custom/script
|
||||||
|
exec = xbps-updates
|
||||||
|
format = <label>
|
||||||
|
interval = 300
|
||||||
|
label = %output%
|
||||||
|
label-padding = 2
|
||||||
|
label-foreground = ${colors.color1}
|
||||||
|
|
||||||
|
[module/mail]
|
||||||
|
type = custom/script
|
||||||
|
exec = mails_unread.sh
|
||||||
|
format = <label>
|
||||||
|
interval = 10
|
||||||
|
label = %output%
|
||||||
|
label-padding = 2
|
||||||
|
click-left = alacritty -e "neomutt"
|
||||||
|
click-right = mw -Y
|
||||||
|
label-foreground = ${colors.color1}
|
||||||
|
|
||||||
|
[module/powermenu]
|
||||||
|
type = custom/text
|
||||||
|
content =" "
|
||||||
|
content-padding = 2
|
||||||
|
click-left = doas zzz &
|
||||||
|
content-foreground = ${colors.color1}
|
||||||
|
|
||||||
|
[module/wlan]
|
||||||
|
type = internal/network
|
||||||
|
# interface = wlp1s0
|
||||||
|
interface-type = wireless
|
||||||
|
interval = 3.0
|
||||||
|
format-connected = <label-connected>
|
||||||
|
format-connected-prefix = ""
|
||||||
|
format-connected-prefix-padding = 1
|
||||||
|
label-connected = "%essid%: %signal%% "
|
||||||
|
label-connected-foreground = ${colors.color2}
|
||||||
|
format-connected-prefix-foreground = ${colors.color2}
|
||||||
|
label-connected-padding = 1
|
||||||
|
format-disconnected = <label-disconnected>
|
||||||
|
label-disconnected = "睊 "
|
||||||
|
label-disconnected-foreground = ${colors.color1}
|
||||||
|
ramp-signal-0 = 😱
|
||||||
|
ramp-signal-1 = 😠
|
||||||
|
ramp-signal-2 = 😒
|
||||||
|
ramp-signal-3 = 😊
|
||||||
|
ramp-signal-4 = 😃
|
||||||
|
ramp-signal-5 = 😈
|
||||||
|
|
||||||
|
[module/wired]
|
||||||
|
type = internal/network
|
||||||
|
# interface = eno0
|
||||||
|
interface-type = wired
|
||||||
|
interval = 1.0
|
||||||
|
|
||||||
|
format-connected = <label-connected>
|
||||||
|
format-connected-prefix =
|
||||||
|
format-connected-prefix-foreground = ${colors.color3}
|
||||||
|
format-connected-prefix-padding = 1
|
||||||
|
label-connected = "%linkspeed%"
|
||||||
|
label-connected-foreground = ${colors.color3}
|
||||||
|
label-connected-padding = 1
|
||||||
|
|
||||||
|
label-disconnected = ""
|
||||||
|
label-disconnected-foreground = ${colors.color1}
|
||||||
|
label-disconnected-padding = 1
|
||||||
|
|
||||||
|
[module/battery]
|
||||||
|
type = internal/battery
|
||||||
|
battery = BAT0
|
||||||
|
adapter = AC
|
||||||
|
full-at = 100
|
||||||
|
|
||||||
|
format-charging = <animation-charging> <label-charging>
|
||||||
|
label-charging = %percentage%%
|
||||||
|
format-charging-foreground = ${colors.color4}
|
||||||
|
format-charging-background = ${colors.background}
|
||||||
|
|
||||||
|
format-discharging = <ramp-capacity> <label-discharging>
|
||||||
|
label-discharging = %percentage%%
|
||||||
|
format-discharging-foreground = ${colors.foreground}
|
||||||
|
format-discharging-background = ${colors.background}
|
||||||
|
|
||||||
|
format-full-prefix = " "
|
||||||
|
format-full-prefix-foreground = #A0E8A2
|
||||||
|
format-foreground = ${colors.color4}
|
||||||
|
format-background = ${colors.background}
|
||||||
|
|
||||||
|
label-discharging-foreground = ${colors.foreground}
|
||||||
|
ramp-capacity-foreground = #A0E8A2
|
||||||
|
label-charging-foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
label-padding = 1
|
||||||
|
|
||||||
|
ramp-capacity-0 = " "
|
||||||
|
ramp-capacity-1 = " "
|
||||||
|
ramp-capacity-2 = " "
|
||||||
|
ramp-capacity-3 = " "
|
||||||
|
ramp-capacity-4 = " "
|
||||||
|
|
||||||
|
|
||||||
|
animation-charging-0 = " "
|
||||||
|
animation-charging-1 = " "
|
||||||
|
animation-charging-2 = " "
|
||||||
|
animation-charging-3 = " "
|
||||||
|
animation-charging-4 = " "
|
||||||
|
|
||||||
|
|
||||||
|
animation-charging-foreground = #DF8890
|
||||||
|
animation-charging-framerate = 750
|
||||||
|
|
||||||
|
format-charging-padding = 1
|
||||||
|
format-discharging-padding = 1
|
||||||
|
|
||||||
|
[module/volume]
|
||||||
|
type = custom/script
|
||||||
|
exec = amixer get Master | awk '$0~/%/{print $4}' | tr -d '[]'
|
||||||
|
format = <label>
|
||||||
|
internal = 5.0
|
||||||
|
label = %output%
|
||||||
|
label-foreground = #BF616A
|
||||||
|
label-padding = 1
|
||||||
|
|
||||||
|
[module/xbacklight]
|
||||||
|
type = internal/xbacklight
|
||||||
|
format = <label>
|
||||||
|
format-prefix = " "
|
||||||
|
label = %percentage%
|
||||||
|
format-prefix-foreground = #61afef
|
||||||
|
label-foreground = #D8DEE9
|
||||||
|
format-padding = 1
|
||||||
|
|
||||||
|
[module/cpu]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 2.5
|
||||||
|
|
||||||
|
format-prefix =" "
|
||||||
|
format = <label>
|
||||||
|
|
||||||
|
label = "%percentage%% "
|
||||||
|
format-background = ${colors.bg}
|
||||||
|
format-foreground = ${colors.color4}
|
||||||
|
|
||||||
|
[module/xwindow]
|
||||||
|
type = internal/xwindow
|
||||||
|
label = %title:0:30:...
|
||||||
|
|
||||||
|
|
||||||
|
[module/pipewire-microphone]
|
||||||
|
type = custom/script
|
||||||
|
exec = $HOME/.config/polybar/scripts/pipewire-microphone.sh
|
||||||
|
tail = true
|
||||||
|
click-left = $HOME/.config/polybar/scripts/pipewire-microphone.sh --toggle &
|
||||||
|
click-right = pavuctl
|
||||||
|
|
||||||
|
[module/mpd]
|
||||||
|
type = internal/mpd
|
||||||
|
|
||||||
|
host = 127.0.0.1
|
||||||
|
port = 6600
|
||||||
|
|
||||||
|
; Seconds to sleep between progressbar/song timer sync
|
||||||
|
; Default: 1
|
||||||
|
interval = 1
|
||||||
|
; Available tags:
|
||||||
|
; <label-song> (default)
|
||||||
|
; <label-time>
|
||||||
|
; <bar-progress>
|
||||||
|
; <toggle> - gets replaced with <icon-(pause|play)>
|
||||||
|
; <toggle-stop> - gets replaced with <icon-(stop|play)>
|
||||||
|
; <icon-random>
|
||||||
|
; <icon-repeat>
|
||||||
|
; <icon-repeatone> (deprecated)
|
||||||
|
; <icon-single> - Toggle playing only a single song. Replaces <icon-repeatone>
|
||||||
|
; <icon-consume>
|
||||||
|
; <icon-prev>
|
||||||
|
; <icon-stop>
|
||||||
|
; <icon-play>
|
||||||
|
; <icon-pause>
|
||||||
|
; <icon-next>
|
||||||
|
; <icon-seekb>
|
||||||
|
; <icon-seekf>
|
||||||
|
format-online = <icon-prev> <icon-stop> <toggle> <icon-next> <bar-progress> <label-song>
|
||||||
|
format-playing = ${self.format-online}
|
||||||
|
format-paused = ${self.format-online}
|
||||||
|
format-stopped = ${self.format-online}
|
||||||
|
|
||||||
|
; Available tags:
|
||||||
|
; <label-offline>
|
||||||
|
; Default: ""
|
||||||
|
format-offline = <label-offline>
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %artist%
|
||||||
|
; %album-artist%
|
||||||
|
; %album%
|
||||||
|
; %date%
|
||||||
|
; %title%
|
||||||
|
; Default: %artist% - %title%
|
||||||
|
label-song = %artist% - %title%
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; %elapsed%
|
||||||
|
; %total%
|
||||||
|
; Default: %elapsed% / %total%
|
||||||
|
;label-time = %elapsed% / %total%
|
||||||
|
|
||||||
|
; Available tokens:
|
||||||
|
; None
|
||||||
|
label-offline = ﱙ
|
||||||
|
|
||||||
|
; Only applies if <icon-X> is used
|
||||||
|
icon-play = ⏵
|
||||||
|
icon-pause = ⏸
|
||||||
|
icon-stop = ⏹
|
||||||
|
icon-prev = ⏮
|
||||||
|
icon-next = ⏭
|
||||||
|
icon-seekb = ⏪
|
||||||
|
icon-seekf = ⏩
|
||||||
|
icon-random = 🔀
|
||||||
|
icon-repeat = 🔁
|
||||||
|
icon-repeatone = 🔂
|
||||||
|
icon-single = 🔂
|
||||||
|
icon-consume = ✀
|
||||||
|
|
||||||
|
; Used to display the state of random/repeat/repeatone/single
|
||||||
|
; Only applies if <icon-[random|repeat|repeatone|single]> is used
|
||||||
|
toggle-on-foreground = #ff
|
||||||
|
toggle-off-foreground = #55
|
||||||
|
|
||||||
|
; Only applies if <bar-progress> is used
|
||||||
|
bar-progress-width = 45
|
||||||
|
bar-progress-indicator = |
|
||||||
|
bar-progress-fill = ─
|
||||||
|
bar-progress-empty = ─
|
14
.config/polybar/launch.sh
Executable file
14
.config/polybar/launch.sh
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Terminate already running bar instances
|
||||||
|
killall -q polybar
|
||||||
|
# If all your bars have ipc enabled, you can also use
|
||||||
|
# polybar-msg cmd quit
|
||||||
|
|
||||||
|
# Launch bar1 and bar2
|
||||||
|
echo "---" | tee -a /tmp/polybar1.log /tmp/polybar2.log
|
||||||
|
#polybar black >>/tmp/polybar1.log 2>&1 & disown
|
||||||
|
polybar example -r >>/tmp/polybar1.log 2>&1 & disown
|
||||||
|
polybar example2 -r >>/tmp/polybar2.log 2>&1 & disown
|
||||||
|
polybar external1 -r >>/tmp/polybar3.log 2>&1 & disown
|
||||||
|
echo "Bars launched..."
|
52
.config/polybar/scripts/pipewire-microphone.sh
Executable file
52
.config/polybar/scripts/pipewire-microphone.sh
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
get_mic_default() {
|
||||||
|
pactl get-default-source
|
||||||
|
}
|
||||||
|
|
||||||
|
is_mic_muted() {
|
||||||
|
mic_name="$(get_mic_default)"
|
||||||
|
|
||||||
|
pactl list sources | \
|
||||||
|
awk -v mic_name="${mic_name}" '{
|
||||||
|
if ($0 ~ "Name: " mic_name) {
|
||||||
|
matched_mic_name = 1;
|
||||||
|
} else if (matched_mic_name && /Mute/) {
|
||||||
|
print $2;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
}
|
||||||
|
|
||||||
|
get_mic_status() {
|
||||||
|
is_muted="$(is_mic_muted)"
|
||||||
|
|
||||||
|
if [ "${is_muted}" = "yes" ]; then
|
||||||
|
printf "%s\n" ""
|
||||||
|
else
|
||||||
|
printf "%s\n" ""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
listen() {
|
||||||
|
get_mic_status
|
||||||
|
|
||||||
|
LANG=EN; pactl subscribe | while read -r event; do
|
||||||
|
if printf "%s\n" "${event}" | grep --quiet "source" || printf "%s\n" "${event}" | grep --quiet "server"; then
|
||||||
|
get_mic_status
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
toggle() {
|
||||||
|
pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
--toggle)
|
||||||
|
toggle
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
listen
|
||||||
|
;;
|
||||||
|
esac
|
254
.config/polybar/scripts/polywins.sh
Normal file
254
.config/polybar/scripts/polywins.sh
Normal file
@ -0,0 +1,254 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# POLYWINS
|
||||||
|
|
||||||
|
# SETTINGS {{{ ---
|
||||||
|
|
||||||
|
active_text_color="#fca2aa"
|
||||||
|
active_bg=
|
||||||
|
active_underline="#f9929b"
|
||||||
|
|
||||||
|
inactive_text_color="#6a7078"
|
||||||
|
inactive_bg=
|
||||||
|
inactive_underline=
|
||||||
|
|
||||||
|
separator=" "
|
||||||
|
show="icon" # options: window_title, window_class, window_classname, icon
|
||||||
|
forbidden_classes="Polybar Conky Gmrun"
|
||||||
|
empty_desktop_message="Desktop"
|
||||||
|
|
||||||
|
char_limit=20
|
||||||
|
max_windows=15
|
||||||
|
char_case="normal" # normal, upper, lower
|
||||||
|
add_spaces="true"
|
||||||
|
resize_increment=16
|
||||||
|
wm_border_width=1 # setting this might be required for accurate resize position
|
||||||
|
|
||||||
|
# --- }}}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
# If no argument passed...
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
# ...print new window list every time
|
||||||
|
# the active window changes or
|
||||||
|
# a window is opened or closed
|
||||||
|
xprop -root -spy _NET_CLIENT_LIST _NET_ACTIVE_WINDOW |
|
||||||
|
while IFS= read -r _; do
|
||||||
|
generate_window_list
|
||||||
|
done
|
||||||
|
|
||||||
|
# If arguments are passed, run requested on-click function
|
||||||
|
else
|
||||||
|
"$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ON-CLICK FUNCTIONS {{{ ---
|
||||||
|
|
||||||
|
raise_or_minimize() {
|
||||||
|
if [ "$(get_active_wid)" = "$1" ]; then
|
||||||
|
bspc node $1 -g hidden=on
|
||||||
|
#wmctrl -ir "$1" -b toggle,hidden
|
||||||
|
else
|
||||||
|
bspc node $1 -g hidden=off -f
|
||||||
|
#wmctrl -ia "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
wmctrl -ic "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
slop_resize() {
|
||||||
|
wmctrl -ia "$1"
|
||||||
|
wmctrl -ir "$1" -e "$(slop -f 0,%x,%y,%w,%h)"
|
||||||
|
}
|
||||||
|
|
||||||
|
increment_size() {
|
||||||
|
while IFS="[ .]" read -r wid ws wx wy ww wh _; do
|
||||||
|
test "$wid" != "$1" && continue
|
||||||
|
x=$((wx - wm_border_width * 2 - resize_increment / 2))
|
||||||
|
y=$((wy - wm_border_width * 2 - resize_increment / 2))
|
||||||
|
w=$((ww + resize_increment))
|
||||||
|
h=$((wh + resize_increment))
|
||||||
|
done <<-EOF
|
||||||
|
$(wmctrl -lG)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
wmctrl -ir "$1" -e "0,$x,$y,$w,$h"
|
||||||
|
}
|
||||||
|
|
||||||
|
decrement_size() {
|
||||||
|
while IFS="[ .]" read -r wid ws wx wy ww wh _; do
|
||||||
|
test "$wid" != "$1" && continue
|
||||||
|
x=$((wx - wm_border_width * 2 + resize_increment / 2))
|
||||||
|
y=$((wy - wm_border_width * 2 + resize_increment / 2))
|
||||||
|
w=$((ww - resize_increment))
|
||||||
|
h=$((wh - resize_increment))
|
||||||
|
done <<-EOF
|
||||||
|
$(wmctrl -lG)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
wmctrl -ir "$1" -e "0,$x,$y,$w,$h"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- }}}
|
||||||
|
|
||||||
|
# WINDOW LIST SETUP {{{ ---
|
||||||
|
|
||||||
|
active_left="%{F$active_text_color}"
|
||||||
|
active_right="%{F-}"
|
||||||
|
inactive_left="%{F$inactive_text_color}"
|
||||||
|
inactive_right="%{F-}"
|
||||||
|
separator="%{F$inactive_text_color}$separator%{F-}"
|
||||||
|
|
||||||
|
if [ -n "$active_underline" ]; then
|
||||||
|
active_left="${active_left}%{+u}%{u$active_underline}"
|
||||||
|
active_right="%{-u}${active_right}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$active_bg" ]; then
|
||||||
|
active_left="${active_left}%{B$active_bg}"
|
||||||
|
active_right="%{B-}${active_right}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$inactive_underline" ]; then
|
||||||
|
inactive_left="${inactive_left}%{+u}%{u$inactive_underline}"
|
||||||
|
inactive_right="%{-u}${inactive_right}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$inactive_bg" ]; then
|
||||||
|
inactive_left="${inactive_left}%{B$inactive_bg}"
|
||||||
|
inactive_right="%{B-}${inactive_right}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
get_active_wid() {
|
||||||
|
active_wid=$(xprop -root _NET_ACTIVE_WINDOW)
|
||||||
|
active_wid="${active_wid#*\# }"
|
||||||
|
active_wid="${active_wid%,*}" # Necessary for XFCE
|
||||||
|
while [ ${#active_wid} -lt 10 ]; do
|
||||||
|
active_wid="0x0${active_wid#*x}"
|
||||||
|
done
|
||||||
|
echo "$active_wid"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_active_workspace() {
|
||||||
|
wmctrl -d |
|
||||||
|
while IFS="[ .]" read -r number active_status _; do
|
||||||
|
test "$active_status" = "*" && echo "$number" && break
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
generate_window_list() {
|
||||||
|
active_workspace=$(get_active_workspace)
|
||||||
|
active_wid=$(get_active_wid)
|
||||||
|
window_count=0
|
||||||
|
on_click="$0"
|
||||||
|
|
||||||
|
# Format each window name one by one
|
||||||
|
# Space and . are both used as IFS,
|
||||||
|
# because classname and class are separated by '.'
|
||||||
|
while IFS="[ .\.]" read -r wid ws cname cls host title; do
|
||||||
|
# Don't show the window if on another workspace (-1 = sticky)
|
||||||
|
if [ "$ws" != "$active_workspace" ] && [ "$ws" != "-1" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Don't show the window if its class is forbidden
|
||||||
|
case "$forbidden_classes" in
|
||||||
|
*$cls*) continue ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If max number of windows reached, just increment
|
||||||
|
# the windows counter
|
||||||
|
if [ "$window_count" -ge "$max_windows" ]; then
|
||||||
|
window_count=$((window_count + 1))
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Show the user-selected window property
|
||||||
|
case "$show" in
|
||||||
|
"window_class") w_name="$cls" ;;
|
||||||
|
"window_classname") w_name="$cname" ;;
|
||||||
|
"window_title") w_name="$title" ;;
|
||||||
|
"icon")
|
||||||
|
case "$cls" in
|
||||||
|
St) w_name='' ;;
|
||||||
|
Chromium-browser) w_name='' ;;
|
||||||
|
TelegramDesktop) w_name=' ' ;;
|
||||||
|
Pcmanfm) w_name='' ;;
|
||||||
|
SimpleScreenRecorder) w_name='' ;;
|
||||||
|
Blue-recorder) w_name='' ;;
|
||||||
|
Firefox) w_name='' ;;
|
||||||
|
figma-linux) w_name='' ;;
|
||||||
|
*) w_name="$cls" ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$show" != "icon" ]; then
|
||||||
|
# Use user-selected character case
|
||||||
|
case "$char_case" in
|
||||||
|
"lower") w_name=$(
|
||||||
|
echo "$w_name" | tr '[:upper:]' '[:lower:]'
|
||||||
|
) ;;
|
||||||
|
"upper") w_name=$(
|
||||||
|
echo "$w_name" | tr '[:lower:]' '[:upper:]'
|
||||||
|
) ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Truncate displayed name to user-selected limit
|
||||||
|
if [ "${#w_name}" -gt "$char_limit" ]; then
|
||||||
|
w_name="$(echo "$w_name" | cut -c1-$((char_limit - 1)))…"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Apply add-spaces setting
|
||||||
|
if [ "$add_spaces" = "true" ]; then
|
||||||
|
w_name=" $w_name "
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add left and right formatting to displayed name
|
||||||
|
if [ "$wid" = "$active_wid" ]; then
|
||||||
|
w_name="${active_left}${w_name}${active_right}"
|
||||||
|
else
|
||||||
|
w_name="${inactive_left}${w_name}${inactive_right}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add separator unless the window is first in list
|
||||||
|
if [ "$window_count" != 0 ]; then
|
||||||
|
printf "%s" "$separator"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add on-click action Polybar formatting
|
||||||
|
printf "%s" "%{A1:$on_click raise_or_minimize $wid:}"
|
||||||
|
printf "%s" "%{A2:$on_click close $wid:}"
|
||||||
|
printf "%s" "%{A3:$on_click slop_resize $wid:}"
|
||||||
|
printf "%s" "%{A4:$on_click increment_size $wid:}"
|
||||||
|
printf "%s" "%{A5:$on_click decrement_size $wid:}"
|
||||||
|
# Print the final window name
|
||||||
|
printf "%s" "$w_name"
|
||||||
|
printf "%s" "%{A}%{A}%{A}%{A}%{A}"
|
||||||
|
|
||||||
|
window_count=$((window_count + 1))
|
||||||
|
done <<-EOF
|
||||||
|
$(wmctrl -lx)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# After printing all the windows,
|
||||||
|
# print number of hidden windows
|
||||||
|
if [ "$window_count" -gt "$max_windows" ]; then
|
||||||
|
printf "%s" "+$((window_count - max_windows))"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Print empty desktop message if no windows are open
|
||||||
|
if [ "$window_count" = 0 ]; then
|
||||||
|
printf "%s" "$empty_desktop_message"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Print newline
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- }}}
|
||||||
|
|
||||||
|
main "$@"
|
41
.config/polybar/scripts/pop.sh
Normal file
41
.config/polybar/scripts/pop.sh
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
BAR_HEIGHT=12 # polybar height
|
||||||
|
BORDER_SIZE=1 # border size from your wm settings
|
||||||
|
YAD_WIDTH=222 # 222 is minimum possible value
|
||||||
|
YAD_HEIGHT=193 # 193 is minimum possible value
|
||||||
|
DATE="$(date +"%a %d %H:%M")"
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
--popup)
|
||||||
|
if [ "$(xdotool getwindowfocus getwindowname)" = "yad-calendar" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
eval "$(xdotool getmouselocation --shell)"
|
||||||
|
eval "$(xdotool getdisplaygeometry --shell)"
|
||||||
|
|
||||||
|
# X
|
||||||
|
if [ "$((X + YAD_WIDTH / 2 + BORDER_SIZE))" -gt "$WIDTH" ]; then #Right side
|
||||||
|
: $((pos_x = WIDTH - YAD_WIDTH - BORDER_SIZE))
|
||||||
|
elif [ "$((X - YAD_WIDTH / 2 - BORDER_SIZE))" -lt 0 ]; then #Left side
|
||||||
|
: $((pos_x = BORDER_SIZE))
|
||||||
|
else #Center
|
||||||
|
: $((pos_x = X - YAD_WIDTH / 2))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Y
|
||||||
|
if [ "$Y" -gt "$((HEIGHT / 2))" ]; then #Bottom
|
||||||
|
: $((pos_y = HEIGHT - YAD_HEIGHT - BAR_HEIGHT - BORDER_SIZE))
|
||||||
|
else #Top
|
||||||
|
: $((pos_y = BAR_HEIGHT + BORDER_SIZE))
|
||||||
|
fi
|
||||||
|
|
||||||
|
yad --calendar --undecorated --fixed --close-on-unfocus --no-buttons \
|
||||||
|
--width="$YAD_WIDTH" --height="$YAD_HEIGHT" --posx="$pos_x" --posy="$pos_y" \
|
||||||
|
--title="yad-calendar" --borders=0 >/dev/null &
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "$DATE"
|
||||||
|
;;
|
||||||
|
esac
|
16
.config/qutebrowser/autoconfig.yml
Normal file
16
.config/qutebrowser/autoconfig.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# If a config.py file exists, this file is ignored unless it's explicitly loaded
|
||||||
|
# via config.load_autoconfig(). For more information, see:
|
||||||
|
# https://github.com/qutebrowser/qutebrowser/blob/master/doc/help/configuring.asciidoc#loading-autoconfigyml
|
||||||
|
# DO NOT edit this file by hand, qutebrowser will overwrite it.
|
||||||
|
# Instead, create a config.py - see :help for details.
|
||||||
|
|
||||||
|
config_version: 2
|
||||||
|
settings:
|
||||||
|
colors.completion.category.border.bottom:
|
||||||
|
global: black
|
||||||
|
content.blocking.method:
|
||||||
|
global: adblock
|
||||||
|
content.notifications.enabled:
|
||||||
|
https://www.reddit.com: false
|
||||||
|
scrolling.bar:
|
||||||
|
global: overlay
|
1
.config/qutebrowser/bookmarks/urls
Normal file
1
.config/qutebrowser/bookmarks/urls
Normal file
@ -0,0 +1 @@
|
|||||||
|
https://www.reddit.com/r/qutebrowser/comments/nb5lhq/youtube_adblock/ YouTube adblock : qutebrowser
|
0
.config/qutebrowser/quickmarks
Normal file
0
.config/qutebrowser/quickmarks
Normal file
1
.config/rofi/config.rasi
Normal file
1
.config/rofi/config.rasi
Normal file
@ -0,0 +1 @@
|
|||||||
|
@theme "/usr/share/rofi/themes/gruvbox-dark-hard.rasi"
|
199
.config/sxhkd/sxhkdrc
Normal file
199
.config/sxhkd/sxhkdrc
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
#
|
||||||
|
# wm independent hotkeys
|
||||||
|
#
|
||||||
|
|
||||||
|
# terminal emulator
|
||||||
|
super + Return
|
||||||
|
alacritty
|
||||||
|
|
||||||
|
# program launcher
|
||||||
|
super + d
|
||||||
|
rofi -show drun
|
||||||
|
|
||||||
|
# make sxhkd reload its configuration files:
|
||||||
|
super + F1
|
||||||
|
pkill -USR1 -x sxhkd
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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 + shift + m
|
||||||
|
bspc desktop -l next
|
||||||
|
|
||||||
|
super + m
|
||||||
|
alacritty -e "neomutt"
|
||||||
|
|
||||||
|
super + n
|
||||||
|
alacritty -e "nmtui"
|
||||||
|
|
||||||
|
super + l
|
||||||
|
betterlockscreen -l
|
||||||
|
|
||||||
|
super + space
|
||||||
|
if [ -z "$(bspc query -N -n focused.floating)" ]; then \
|
||||||
|
bspc node focused -t floating; \
|
||||||
|
else \
|
||||||
|
bspc node focused -t tiled; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
super + s
|
||||||
|
rofi -show ssh
|
||||||
|
|
||||||
|
# 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,space,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}
|
||||||
|
|
||||||
|
super + {_,shift + }{Left,Down,Up,Right}
|
||||||
|
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} focused:'^{1-9,10}'
|
||||||
|
|
||||||
|
super + alt + {h,j,k,l}
|
||||||
|
bspc window -e {left -10,down +10,up -10,right +10}
|
||||||
|
|
||||||
|
super + alt + shift + {h,j,k,l}
|
||||||
|
bspc window -e {right -10,up +10,down -10,left +10}
|
||||||
|
|
||||||
|
#
|
||||||
|
# preselect
|
||||||
|
#
|
||||||
|
|
||||||
|
# preselect the direction
|
||||||
|
super + ctrl + {h,j,k,l}
|
||||||
|
bspc node -p {west,south,north,east}
|
||||||
|
|
||||||
|
super + ctrl + {Left,Right}
|
||||||
|
bspc monitor --focus {prev,next}
|
||||||
|
|
||||||
|
super + alt + {Left,Right}
|
||||||
|
bspc node -m {next,next}
|
||||||
|
|
||||||
|
# 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}
|
||||||
|
|
||||||
|
# media buttons
|
||||||
|
XF86MonBrightnessUp
|
||||||
|
xbacklight -inc 10
|
||||||
|
|
||||||
|
XF86MonBrightnessDown
|
||||||
|
xbacklight -dec 10
|
||||||
|
|
||||||
|
# output
|
||||||
|
XF86AudioMute
|
||||||
|
pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||||
|
|
||||||
|
XF86AudioRaiseVolume
|
||||||
|
pactl set-sink-volume @DEFAULT_SINK@ +5%
|
||||||
|
|
||||||
|
XF86AudioLowerVolume
|
||||||
|
pactl set-sink-volume @DEFAULT_SINK@ -5%
|
||||||
|
|
||||||
|
# input
|
||||||
|
super + XF86AudioMute
|
||||||
|
pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
||||||
|
|
||||||
|
super + XF86AudioRaiseVolume
|
||||||
|
pactl set-source-volume @DEFAULT_SOURCE@ +5%
|
||||||
|
|
||||||
|
super + XF86AudioLowerVolume
|
||||||
|
pactl set-source-volume @DEFAULT_SOURCE@ -5%
|
||||||
|
|
||||||
|
XF86Tools
|
||||||
|
alacritty -e "ncmpcpp"
|
||||||
|
|
||||||
|
XF86Explorer
|
||||||
|
alacritty -e "ranger"
|
||||||
|
|
||||||
|
XF86HomePage
|
||||||
|
firefox
|
||||||
|
|
||||||
|
super + w
|
||||||
|
firefox
|
||||||
|
|
||||||
|
XF86Mail
|
||||||
|
alacritty -e "neomutt"
|
||||||
|
|
||||||
|
super + p
|
||||||
|
rofi-pass
|
70
.local/bin/bspswallow
Executable file
70
.local/bin/bspswallow
Executable file
@ -0,0 +1,70 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Get class of a wid
|
||||||
|
get_class() {
|
||||||
|
id=$1
|
||||||
|
if [ -z "$id" ]; then
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
xprop -id "$id" | sed -n \
|
||||||
|
-e '/WM_CLASS/s/\( "\)/\n/g; s/[^\n]*\n\([^"]*\)[^\n]*/\1\n/g' \
|
||||||
|
-e '/WM_COMMAND/s/[^"]*/\n\n/1; s/\n"//1; s/\n\([^"]*\)".*/\n\1/; /\n/p' | sed '/^$/d' | head -n1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_pid() {
|
||||||
|
xprop _NET_WM_PID -id "$1" | awk '/[0-9]+/ {print $3}'
|
||||||
|
}
|
||||||
|
|
||||||
|
get_ppid() {
|
||||||
|
ps -o ppid= -p $1
|
||||||
|
}
|
||||||
|
|
||||||
|
check_swallowing_process() {
|
||||||
|
pid=$(get_pid $1)
|
||||||
|
[ -z $pid ] && return 0
|
||||||
|
gppid=$(get_ppid $(get_ppid $pid))
|
||||||
|
grep -i "^$(ps -o cmd= -p $gppid | awk '{print $1}' | sed 's_^.*/__')$" ~/.config/bspwm/terminals && return 0
|
||||||
|
[ "$(get_ppid "$(get_ppid "$(get_pid "$1")")")" = "$(get_pid "$2")" ] && return 0 || return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
swallow() {
|
||||||
|
addedtodesktop=$2
|
||||||
|
lasttermdesktop=$(bspc query -D -n last)
|
||||||
|
|
||||||
|
swallowerid=$1
|
||||||
|
swallowingid=$(bspc query -N -n last)
|
||||||
|
if [ "$addedtodesktop" = "$lasttermdesktop" ] && check_swallowing_process "$swallowerid" "$swallowingid"; then
|
||||||
|
grep -q "^$(get_class "$swallowerid")$" ~/.config/bspwm/{noswallow, terminals} && return
|
||||||
|
grep -i "^$(get_class "$swallowingid")$" ~/.config/bspwm/terminals || return
|
||||||
|
echo "$swallowerid $swallowingid" >> /tmp/swallowids
|
||||||
|
bspc node "$swallowingid" --flag hidden=on
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
spit() {
|
||||||
|
spitterid=$1
|
||||||
|
spitterdesktop=$2
|
||||||
|
grep "^$spitterid" /tmp/swallowids || return
|
||||||
|
spittingid=$(grep "^$spitterid" /tmp/swallowids | head -n1 | awk '{print $2}')
|
||||||
|
|
||||||
|
bspc node "$spittingid" --flag hidden=off
|
||||||
|
|
||||||
|
termdesktop=$(bspc query -D -n "$spittingid")
|
||||||
|
[ "$termdesktop" = "$spitterdesktop" ] || bspc node "$spittingid" -d "$spitterdesktop"
|
||||||
|
|
||||||
|
bspc node "$spittingid" -f
|
||||||
|
sed -i "/^$spitterid/d" /tmp/swallowids
|
||||||
|
}
|
||||||
|
|
||||||
|
bspc subscribe node_add node_remove | while read -r event
|
||||||
|
do
|
||||||
|
case $(echo "$event" | awk '{ print $1 }') in
|
||||||
|
node_add)
|
||||||
|
swallow $(echo "$event" | awk '{print $5 " " $3}')
|
||||||
|
;;
|
||||||
|
node_remove)
|
||||||
|
spit $(echo "$event" | awk '{print $4 " " $3}')
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
5
.local/bin/mails_unread.sh
Executable file
5
.local/bin/mails_unread.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
unread="$(find "${XDG_DATA_HOME:-$HOME/.local/share}"/mail/*/[Ii][Nn][Bb][Oo][Xx]/new/* -type f 2>/dev/null | wc -l 2>/dev/null)"
|
||||||
|
|
||||||
|
echo $unread
|
10
.local/bin/preview-image
Executable file
10
.local/bin/preview-image
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
[ -z "$5" ] && echo "Usage: $0 <image> <x> <y> <max height> max width>" && exit
|
||||||
|
|
||||||
|
source "`ueberzug library`"
|
||||||
|
|
||||||
|
ImageLayer 0< <(
|
||||||
|
ImageLayer::add [identifier]="example0" [x]="$2" [y]="$3" [max_width]="$5" [max_height]="$4" [path]="$1"
|
||||||
|
read
|
||||||
|
)
|
545
.local/bin/pulseaudio-control
Executable file
545
.local/bin/pulseaudio-control
Executable file
@ -0,0 +1,545 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Polybar Pulseaudio Control #
|
||||||
|
# https://github.com/marioortizmanero/polybar-pulseaudio-control #
|
||||||
|
##################################################################
|
||||||
|
|
||||||
|
# Defaults for configurable values, expected to be set by command-line arguments
|
||||||
|
AUTOSYNC="no"
|
||||||
|
COLOR_MUTED="%{F#6b6b6b}"
|
||||||
|
ICON_MUTED=
|
||||||
|
ICON_SINK=
|
||||||
|
NOTIFICATIONS="no"
|
||||||
|
OSD="no"
|
||||||
|
SINK_NICKNAMES_PROP=
|
||||||
|
VOLUME_STEP=2
|
||||||
|
VOLUME_MAX=130
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
FORMAT='$VOL_ICON ${VOL_LEVEL}% $ICON_SINK $SINK_NICKNAME'
|
||||||
|
declare -A SINK_NICKNAMES
|
||||||
|
declare -a ICONS_VOLUME
|
||||||
|
declare -a SINK_BLACKLIST
|
||||||
|
|
||||||
|
# Environment & global constants for the script
|
||||||
|
export LC_ALL=C # Some calls depend on English outputs of pactl
|
||||||
|
END_COLOR="%{F-}" # For Polybar colors
|
||||||
|
|
||||||
|
|
||||||
|
# Saves the currently default sink into a variable named `curSink`. It will
|
||||||
|
# return an error code when pulseaudio isn't running.
|
||||||
|
function getCurSink() {
|
||||||
|
if ! pactl info &>/dev/null; then return 1; fi
|
||||||
|
local curSinkName
|
||||||
|
|
||||||
|
curSinkName=$(pactl info | awk '/Default Sink: / {print $3}')
|
||||||
|
curSink=$(pactl list sinks | grep -B 4 -E "Name: $curSinkName\$" | sed -nE 's/^Sink #([0-9]+)$/\1/p')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Saves the sink passed by parameter's volume into a variable named `VOL_LEVEL`.
|
||||||
|
function getCurVol() {
|
||||||
|
VOL_LEVEL=$(pactl list sinks | grep -A 15 -E "^Sink #$1\$" | grep 'Volume:' | grep -E -v 'Base Volume:' | awk -F : '{print $3; exit}' | grep -o -P '.{0,3}%' | sed 's/.$//' | tr -d ' ')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Saves the name of the sink passed by parameter into a variable named
|
||||||
|
# `sinkName`.
|
||||||
|
function getSinkName() {
|
||||||
|
sinkName=$(pactl list sinks short | awk -v sink="$1" '{ if ($1 == sink) {print $2} }')
|
||||||
|
portName=$(pactl list sinks | grep -e 'Sink #' -e 'Active Port: ' | sed -n "/^Sink #$1\$/,+1p" | awk '/Active Port: / {print $3}')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Saves the name to be displayed for the sink passed by parameter into a
|
||||||
|
# variable called `SINK_NICKNAME`.
|
||||||
|
# If a mapping for the sink name exists, that is used. Otherwise, the string
|
||||||
|
# "Sink #<index>" is used.
|
||||||
|
function getNickname() {
|
||||||
|
getSinkName "$1"
|
||||||
|
unset SINK_NICKNAME
|
||||||
|
|
||||||
|
if [ -n "$sinkName" ] && [ -n "$portName" ] && [ -n "${SINK_NICKNAMES[$sinkName/$portName]}" ]; then
|
||||||
|
SINK_NICKNAME="${SINK_NICKNAMES[$sinkName/$portName]}"
|
||||||
|
elif [ -n "$sinkName" ] && [ -n "${SINK_NICKNAMES[$sinkName]}" ]; then
|
||||||
|
SINK_NICKNAME="${SINK_NICKNAMES[$sinkName]}"
|
||||||
|
elif [ -n "$sinkName" ]; then
|
||||||
|
# No exact match could be found, try a Glob Match
|
||||||
|
for glob in "${!SINK_NICKNAMES[@]}"; do
|
||||||
|
# shellcheck disable=SC2053 # Disable Shellcheck warning for Glob-Matching
|
||||||
|
if [[ "$sinkName/$portName" == $glob ]] || [[ "$sinkName" == $glob ]]; then
|
||||||
|
SINK_NICKNAME="${SINK_NICKNAMES[$glob]}"
|
||||||
|
# Cache that result for next time
|
||||||
|
SINK_NICKNAMES["$sinkName"]="$SINK_NICKNAME"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$SINK_NICKNAME" ] && [ -n "$sinkName" ] && [ -n "$SINK_NICKNAMES_PROP" ]; then
|
||||||
|
getNicknameFromProp "$SINK_NICKNAMES_PROP" "$sinkName"
|
||||||
|
# Cache that result for next time
|
||||||
|
SINK_NICKNAMES["$sinkName"]="$SINK_NICKNAME"
|
||||||
|
elif [ -z "$SINK_NICKNAME" ]; then
|
||||||
|
SINK_NICKNAME="Sink #$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Gets sink nickname based on a given property.
|
||||||
|
function getNicknameFromProp() {
|
||||||
|
local nickname_prop="$1"
|
||||||
|
local for_name="$2"
|
||||||
|
|
||||||
|
SINK_NICKNAME=
|
||||||
|
while read -r property value; do
|
||||||
|
case "$property" in
|
||||||
|
Name:)
|
||||||
|
sink_name="$value"
|
||||||
|
unset sink_desc
|
||||||
|
;;
|
||||||
|
"$nickname_prop")
|
||||||
|
if [ "$sink_name" != "$for_name" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
SINK_NICKNAME="${value:3:-1}"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done < <(pactl list sinks)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Saves the status of the sink passed by parameter into a variable named
|
||||||
|
# `IS_MUTED`.
|
||||||
|
function getIsMuted() {
|
||||||
|
IS_MUTED=$(pactl list sinks | grep -E "^Sink #$1\$" -A 15 | awk '/Mute: / {print $2}')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Saves all the sink inputs of the sink passed by parameter into a string
|
||||||
|
# named `sinkInputs`.
|
||||||
|
function getSinkInputs() {
|
||||||
|
sinkInputs=$(pactl list sink-inputs | grep -B 4 "Sink: $1" | sed -nE 's/^Sink Input #([0-9]+)$/\1/p')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function volUp() {
|
||||||
|
# Obtaining the current volume from pulseaudio into $VOL_LEVEL.
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
getCurVol "$curSink"
|
||||||
|
local maxLimit=$((VOLUME_MAX - VOLUME_STEP))
|
||||||
|
|
||||||
|
# Checking the volume upper bounds so that if VOLUME_MAX was 100% and the
|
||||||
|
# increase percentage was 3%, a 99% volume would top at 100% instead
|
||||||
|
# of 102%. If the volume is above the maximum limit, nothing is done.
|
||||||
|
if [ "$VOL_LEVEL" -le "$VOLUME_MAX" ] && [ "$VOL_LEVEL" -ge "$maxLimit" ]; then
|
||||||
|
pactl set-sink-volume "$curSink" "$VOLUME_MAX%"
|
||||||
|
elif [ "$VOL_LEVEL" -lt "$maxLimit" ]; then
|
||||||
|
pactl set-sink-volume "$curSink" "+$VOLUME_STEP%"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $OSD = "yes" ]; then showOSD "$curSink"; fi
|
||||||
|
if [ $AUTOSYNC = "yes" ]; then volSync; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function volDown() {
|
||||||
|
# Pactl already handles the volume lower bounds so that negative values
|
||||||
|
# are ignored.
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
pactl set-sink-volume "$curSink" "-$VOLUME_STEP%"
|
||||||
|
|
||||||
|
if [ $OSD = "yes" ]; then showOSD "$curSink"; fi
|
||||||
|
if [ $AUTOSYNC = "yes" ]; then volSync; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function volSync() {
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
getSinkInputs "$curSink"
|
||||||
|
getCurVol "$curSink"
|
||||||
|
|
||||||
|
# Every output found in the active sink has their volume set to the
|
||||||
|
# current one. This will only be called if $AUTOSYNC is `yes`.
|
||||||
|
for each in $sinkInputs; do
|
||||||
|
pactl set-sink-input-volume "$each" "$VOL_LEVEL%"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function volMute() {
|
||||||
|
# Switch to mute/unmute the volume with pactl.
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if [ "$1" = "toggle" ]; then
|
||||||
|
getIsMuted "$curSink"
|
||||||
|
if [ "$IS_MUTED" = "yes" ]; then
|
||||||
|
pactl set-sink-mute "$curSink" "no"
|
||||||
|
else
|
||||||
|
pactl set-sink-mute "$curSink" "yes"
|
||||||
|
fi
|
||||||
|
elif [ "$1" = "mute" ]; then
|
||||||
|
pactl set-sink-mute "$curSink" "yes"
|
||||||
|
elif [ "$1" = "unmute" ]; then
|
||||||
|
pactl set-sink-mute "$curSink" "no"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $OSD = "yes" ]; then showOSD "$curSink"; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function nextSink() {
|
||||||
|
# The final sinks list, removing the blacklisted ones from the list of
|
||||||
|
# currently available sinks.
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Obtaining a tuple of sink indexes after removing the blacklisted devices
|
||||||
|
# with their name.
|
||||||
|
sinks=()
|
||||||
|
local i=0
|
||||||
|
while read -r line; do
|
||||||
|
index=$(echo "$line" | cut -f1)
|
||||||
|
name=$(echo "$line" | cut -f2)
|
||||||
|
|
||||||
|
# If it's in the blacklist, continue the main loop. Otherwise, add
|
||||||
|
# it to the list.
|
||||||
|
for sink in "${SINK_BLACKLIST[@]}"; do
|
||||||
|
# shellcheck disable=SC2053 # Disable Shellcheck warning for Glob-Matching
|
||||||
|
if [[ "$name" == $sink ]]; then
|
||||||
|
continue 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
sinks[$i]="$index"
|
||||||
|
i=$((i + 1))
|
||||||
|
done < <(pactl list short sinks | sort -n)
|
||||||
|
|
||||||
|
# If the resulting list is empty, nothing is done
|
||||||
|
if [ ${#sinks[@]} -eq 0 ]; then return; fi
|
||||||
|
|
||||||
|
# If the current sink is greater or equal than last one, pick the first
|
||||||
|
# sink in the list. Otherwise just pick the next sink avaliable.
|
||||||
|
local newSink
|
||||||
|
if [ "$curSink" -ge "${sinks[-1]}" ]; then
|
||||||
|
newSink=${sinks[0]}
|
||||||
|
else
|
||||||
|
for sink in "${sinks[@]}"; do
|
||||||
|
if [ "$curSink" -lt "$sink" ]; then
|
||||||
|
newSink=$sink
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The new sink is set
|
||||||
|
pactl set-default-sink "$newSink"
|
||||||
|
|
||||||
|
# Move all audio threads to new sink
|
||||||
|
local inputs
|
||||||
|
inputs="$(pactl list short sink-inputs | cut -f 1)"
|
||||||
|
for i in $inputs; do
|
||||||
|
pactl move-sink-input "$i" "$newSink"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $NOTIFICATIONS = "yes" ]; then
|
||||||
|
getNickname "$newSink"
|
||||||
|
|
||||||
|
if command -v dunstify &>/dev/null; then
|
||||||
|
notify="dunstify --replace 201839192"
|
||||||
|
else
|
||||||
|
notify="notify-send"
|
||||||
|
fi
|
||||||
|
$notify "PulseAudio" "Changed output to $SINK_NICKNAME" --icon=audio-headphones-symbolic &
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# This function assumes that PulseAudio is already running. It only supports
|
||||||
|
# KDE OSDs for now. It will show a system message with the status of the
|
||||||
|
# sink passed by parameter, or the currently active one by default.
|
||||||
|
function showOSD() {
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
curSink="$1"
|
||||||
|
else
|
||||||
|
getCurSink
|
||||||
|
fi
|
||||||
|
getCurVol "$curSink"
|
||||||
|
getIsMuted "$curSink"
|
||||||
|
qdbus org.kde.kded /modules/kosd showVolume "$VOL_LEVEL" "$IS_MUTED"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function listen() {
|
||||||
|
local firstRun=0
|
||||||
|
|
||||||
|
# Listen for changes and immediately create new output for the bar.
|
||||||
|
# This is faster than having the script on an interval.
|
||||||
|
pactl subscribe 2>/dev/null | {
|
||||||
|
while true; do
|
||||||
|
{
|
||||||
|
# If this is the first time just continue and print the current
|
||||||
|
# state. Otherwise wait for events. This is to prevent the
|
||||||
|
# module being empty until an event occurs.
|
||||||
|
if [ $firstRun -eq 0 ]; then
|
||||||
|
firstRun=1
|
||||||
|
else
|
||||||
|
read -r event || break
|
||||||
|
# Avoid double events
|
||||||
|
if ! echo "$event" | grep -e "on card" -e "on sink" -e "on server"; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
} &>/dev/null
|
||||||
|
output
|
||||||
|
done
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function output() {
|
||||||
|
if ! getCurSink; then
|
||||||
|
echo "PulseAudio not running"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
getCurVol "$curSink"
|
||||||
|
getIsMuted "$curSink"
|
||||||
|
|
||||||
|
# Fixed volume icons over max volume
|
||||||
|
local iconsLen=${#ICONS_VOLUME[@]}
|
||||||
|
if [ "$iconsLen" -ne 0 ]; then
|
||||||
|
local volSplit=$((VOLUME_MAX / iconsLen))
|
||||||
|
for i in $(seq 1 "$iconsLen"); do
|
||||||
|
if [ $((i * volSplit)) -ge "$VOL_LEVEL" ]; then
|
||||||
|
VOL_ICON="${ICONS_VOLUME[$((i-1))]}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
VOL_ICON=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
getNickname "$curSink"
|
||||||
|
|
||||||
|
# Showing the formatted message
|
||||||
|
if [ "$IS_MUTED" = "yes" ]; then
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
VOL_ICON=$ICON_MUTED
|
||||||
|
echo "${COLOR_MUTED}$(eval echo "$FORMAT")${END_COLOR}"
|
||||||
|
else
|
||||||
|
eval echo "$FORMAT"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "\
|
||||||
|
Usage: $0 [OPTION...] ACTION
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--autosync | --no-autosync
|
||||||
|
Whether to maintain same volume for all programs.
|
||||||
|
Default: \"$AUTOSYNC\"
|
||||||
|
--color-muted <rrggbb>
|
||||||
|
Color in which to format when muted.
|
||||||
|
Default: \"${COLOR_MUTED:4:-1}\"
|
||||||
|
--notifications | --no-notifications
|
||||||
|
Whether to show notifications when changing sinks.
|
||||||
|
Default: \"$NOTIFICATIONS\"
|
||||||
|
--osd | --no-osd
|
||||||
|
Whether to display KDE's OSD message.
|
||||||
|
Default: \"$OSD\"
|
||||||
|
--icon-muted <icon>
|
||||||
|
Icon to use when muted.
|
||||||
|
Default: none
|
||||||
|
--icon-sink <icon>
|
||||||
|
Icon to use for sink.
|
||||||
|
Default: none
|
||||||
|
--format <string>
|
||||||
|
Use a format string to control the output.
|
||||||
|
Remember to pass this argument wrapped in single quotes (\`'\`) instead
|
||||||
|
of double quotes (\`\"\`) to avoid your shell from evaluating the
|
||||||
|
variables early.
|
||||||
|
Available variables:
|
||||||
|
* \$VOL_ICON
|
||||||
|
* \$VOL_LEVEL
|
||||||
|
* \$ICON_SINK
|
||||||
|
* \$SINK_NICKNAME
|
||||||
|
* \$IS_MUTED (yes/no)
|
||||||
|
Default: '$FORMAT'
|
||||||
|
--icons-volume <icon>[,<icon>...]
|
||||||
|
Icons for volume, from lower to higher.
|
||||||
|
Default: none
|
||||||
|
--volume-max <int>
|
||||||
|
Maximum volume to which to allow increasing.
|
||||||
|
Default: \"$VOLUME_MAX\"
|
||||||
|
--volume-step <int>
|
||||||
|
Step size when inc/decrementing volume.
|
||||||
|
Default: \"$VOLUME_STEP\"
|
||||||
|
--sink-blacklist <name>[,<name>...]
|
||||||
|
Sinks to ignore when switching. You can use globs. Don't forget to
|
||||||
|
quote the string when using globs, to avoid unwanted shell glob
|
||||||
|
extension.
|
||||||
|
Default: none
|
||||||
|
--sink-nicknames-from <prop>
|
||||||
|
pactl property to use for sink names, unless overriden by
|
||||||
|
--sink-nickname. Its possible values are listed under the 'Properties'
|
||||||
|
key in the output of \`pactl list sinks\`
|
||||||
|
Default: none
|
||||||
|
--sink-nickname <name>:<nick>
|
||||||
|
Nickname to assign to given sink name, taking priority over
|
||||||
|
--sink-nicknames-from. May be given multiple times, and 'name' is
|
||||||
|
exactly as listed in the output of \`pactl list sinks short | cut -f2\`.
|
||||||
|
Note that you can also specify a port name for the sink with
|
||||||
|
\`<name>/<port>\`.
|
||||||
|
It is also possible to use glob matching to match sink and port names.
|
||||||
|
Exact matches are prioritized. Don't forget to quote the string when
|
||||||
|
using globs, to avoid unwanted shell glob extension.
|
||||||
|
Default: none
|
||||||
|
|
||||||
|
Actions:
|
||||||
|
help display this message and exit
|
||||||
|
output print the PulseAudio status once
|
||||||
|
listen listen for changes in PulseAudio to automatically update
|
||||||
|
this script's output
|
||||||
|
up, down increase or decrease the default sink's volume
|
||||||
|
mute, unmute mute or unmute the default sink's audio
|
||||||
|
togmute switch between muted and unmuted
|
||||||
|
next-sink switch to the next available sink
|
||||||
|
sync synchronize all the output streams volume to be the same as
|
||||||
|
the current sink's volume
|
||||||
|
|
||||||
|
Author:
|
||||||
|
Mario Ortiz Manero
|
||||||
|
More info on GitHub:
|
||||||
|
https://github.com/marioortizmanero/polybar-pulseaudio-control"
|
||||||
|
}
|
||||||
|
|
||||||
|
while [[ "$1" = --* ]]; do
|
||||||
|
unset arg
|
||||||
|
unset val
|
||||||
|
if [[ "$1" = *=* ]]; then
|
||||||
|
arg="${1//=*/}"
|
||||||
|
val="${1//*=/}"
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
arg="$1"
|
||||||
|
# Support space-separated values, but also value-less flags
|
||||||
|
if [[ "$2" != --* ]]; then
|
||||||
|
val="$2"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$arg" in
|
||||||
|
--autosync)
|
||||||
|
AUTOSYNC=yes
|
||||||
|
;;
|
||||||
|
--no-autosync)
|
||||||
|
AUTOSYNC=no
|
||||||
|
;;
|
||||||
|
--color-muted|--colour-muted)
|
||||||
|
COLOR_MUTED="%{F#$val}"
|
||||||
|
;;
|
||||||
|
--notifications)
|
||||||
|
NOTIFICATIONS=yes
|
||||||
|
;;
|
||||||
|
--no-notifications)
|
||||||
|
NOTIFICATIONS=no
|
||||||
|
;;
|
||||||
|
--osd)
|
||||||
|
OSD=yes
|
||||||
|
;;
|
||||||
|
--no-osd)
|
||||||
|
OSD=no
|
||||||
|
;;
|
||||||
|
--icon-muted)
|
||||||
|
ICON_MUTED="$val"
|
||||||
|
;;
|
||||||
|
--icon-sink)
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
ICON_SINK="$val"
|
||||||
|
;;
|
||||||
|
--icons-volume)
|
||||||
|
IFS=, read -r -a ICONS_VOLUME <<< "${val//[[:space:]]/}"
|
||||||
|
;;
|
||||||
|
--volume-max)
|
||||||
|
VOLUME_MAX="$val"
|
||||||
|
;;
|
||||||
|
--volume-step)
|
||||||
|
VOLUME_STEP="$val"
|
||||||
|
;;
|
||||||
|
--sink-blacklist)
|
||||||
|
IFS=, read -r -a SINK_BLACKLIST <<< "${val//[[:space:]]/}"
|
||||||
|
;;
|
||||||
|
--sink-nicknames-from)
|
||||||
|
SINK_NICKNAMES_PROP="$val"
|
||||||
|
;;
|
||||||
|
--sink-nickname)
|
||||||
|
SINK_NICKNAMES["${val//:*/}"]="${val//*:}"
|
||||||
|
;;
|
||||||
|
--format)
|
||||||
|
FORMAT="$val"
|
||||||
|
;;
|
||||||
|
# Undocumented because the `help` action already exists, but makes the
|
||||||
|
# help message more accessible.
|
||||||
|
--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unrecognised option: $arg" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
up)
|
||||||
|
volUp
|
||||||
|
;;
|
||||||
|
down)
|
||||||
|
volDown
|
||||||
|
;;
|
||||||
|
togmute)
|
||||||
|
volMute toggle
|
||||||
|
;;
|
||||||
|
mute)
|
||||||
|
volMute mute
|
||||||
|
;;
|
||||||
|
unmute)
|
||||||
|
volMute unmute
|
||||||
|
;;
|
||||||
|
sync)
|
||||||
|
volSync
|
||||||
|
;;
|
||||||
|
listen)
|
||||||
|
listen
|
||||||
|
;;
|
||||||
|
next-sink)
|
||||||
|
nextSink
|
||||||
|
;;
|
||||||
|
output)
|
||||||
|
output
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unrecognised action: $1" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
8
.local/bin/pyrsa-decrypt
Executable file
8
.local/bin/pyrsa-decrypt
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from rsa.cli import decrypt
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(decrypt())
|
8
.local/bin/pyrsa-encrypt
Executable file
8
.local/bin/pyrsa-encrypt
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from rsa.cli import encrypt
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(encrypt())
|
8
.local/bin/pyrsa-keygen
Executable file
8
.local/bin/pyrsa-keygen
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from rsa.cli import keygen
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(keygen())
|
8
.local/bin/pyrsa-priv2pub
Executable file
8
.local/bin/pyrsa-priv2pub
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from rsa.util import private_to_public
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(private_to_public())
|
8
.local/bin/pyrsa-sign
Executable file
8
.local/bin/pyrsa-sign
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from rsa.cli import sign
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(sign())
|
8
.local/bin/pyrsa-verify
Executable file
8
.local/bin/pyrsa-verify
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from rsa.cli import verify
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(verify())
|
2
.local/bin/screen-config
Executable file
2
.local/bin/screen-config
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
xrandr --output DisplayPort-0 --mode 1920x1080 --pos 1680x0 --rotate normal --output HDMI-0 --primary --mode 1680x1050 --pos 0x0 --rotate normal --output DVI-0 --off --output DVI-1 --off
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user