feat: massive update
This commit is contained in:
parent
23f34782a8
commit
82ebb9bc4b
@ -1,911 +0,0 @@
|
|||||||
# Configuration for Alacritty, the GPU enhanced terminal emulator.
|
|
||||||
|
|
||||||
# Import additional configuration files
|
|
||||||
#
|
|
||||||
# Imports are loaded in order, skipping all missing files, with the importing
|
|
||||||
# file being loaded last. If a field is already present in a previous import, it
|
|
||||||
# will be replaced.
|
|
||||||
#
|
|
||||||
# All imports must either be absolute paths starting with `/`, or paths relative
|
|
||||||
# to the user's home directory starting with `~/`.
|
|
||||||
#import:
|
|
||||||
# - /path/to/alacritty.yml
|
|
||||||
|
|
||||||
# Any items in the `env` entry below will be added as
|
|
||||||
# environment variables. Some entries may override variables
|
|
||||||
# set by alacritty itself.
|
|
||||||
env:
|
|
||||||
# TERM variable
|
|
||||||
#
|
|
||||||
# This value is used to set the `$TERM` environment variable for
|
|
||||||
# each instance of Alacritty. If it is not present, alacritty will
|
|
||||||
# check the local terminfo database and use `alacritty` if it is
|
|
||||||
# available, otherwise `xterm-256color` is used.
|
|
||||||
TERM: alacritty
|
|
||||||
|
|
||||||
window:
|
|
||||||
# Window dimensions (changes require restart)
|
|
||||||
#
|
|
||||||
# Number of lines/columns (not pixels) in the terminal. Both lines and columns
|
|
||||||
# must be non-zero for this to take effect. The number of columns must be at
|
|
||||||
# least `2`, while using a value of `0` for columns and lines will fall back
|
|
||||||
# to the window manager's recommended size
|
|
||||||
#dimensions:
|
|
||||||
# columns: 0
|
|
||||||
# lines: 0
|
|
||||||
|
|
||||||
# Window position (changes require restart)
|
|
||||||
#
|
|
||||||
# Specified in number of pixels.
|
|
||||||
# If the position is not set, the window manager will handle the placement.
|
|
||||||
#position:
|
|
||||||
# x: 0
|
|
||||||
# y: 0
|
|
||||||
|
|
||||||
# Window padding (changes require restart)
|
|
||||||
#
|
|
||||||
# Blank space added around the window in pixels. This padding is scaled
|
|
||||||
# by DPI and the specified value is always added at both opposing sides.
|
|
||||||
#padding:
|
|
||||||
# x: 0
|
|
||||||
# y: 0
|
|
||||||
|
|
||||||
# Spread additional padding evenly around the terminal content.
|
|
||||||
#dynamic_padding: false
|
|
||||||
|
|
||||||
# Window decorations
|
|
||||||
#
|
|
||||||
# Values for `decorations`:
|
|
||||||
# - full: Borders and title bar
|
|
||||||
# - none: Neither borders nor title bar
|
|
||||||
#
|
|
||||||
# Values for `decorations` (macOS only):
|
|
||||||
# - transparent: Title bar, transparent background and title bar buttons
|
|
||||||
# - buttonless: Title bar, transparent background and no title bar buttons
|
|
||||||
#decorations: full
|
|
||||||
|
|
||||||
# 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: 0.95
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# Decorations theme variant
|
|
||||||
#
|
|
||||||
# Override the variant of the System theme/GTK theme/Wayland client side
|
|
||||||
# decorations. Commonly supported values are `Dark`, `Light`, and `None` for
|
|
||||||
# auto pick-up. Set this to `None` to use the default theme variant.
|
|
||||||
#decorations_theme_variant: None
|
|
||||||
|
|
||||||
# Resize increments
|
|
||||||
#
|
|
||||||
# Prefer resizing window by discrete steps equal to cell dimensions.
|
|
||||||
#resize_increments: false
|
|
||||||
|
|
||||||
# Make `Option` key behave as `Alt` (macOS only):
|
|
||||||
# - OnlyLeft
|
|
||||||
# - OnlyRight
|
|
||||||
# - Both
|
|
||||||
# - None (default)
|
|
||||||
#option_as_alt: 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: monospace
|
|
||||||
|
|
||||||
# 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: monospace
|
|
||||||
|
|
||||||
# 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: monospace
|
|
||||||
|
|
||||||
# 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: monospace
|
|
||||||
|
|
||||||
# The `style` can be specified to pick a specific face.
|
|
||||||
#style: Bold Italic
|
|
||||||
|
|
||||||
# Point size
|
|
||||||
#size: 11.0
|
|
||||||
|
|
||||||
# Offset is the extra space around each character. `offset.y` can be thought
|
|
||||||
# of as modifying the line spacing, and `offset.x` as modifying the letter
|
|
||||||
# spacing.
|
|
||||||
#offset:
|
|
||||||
# x: 0
|
|
||||||
# y: 0
|
|
||||||
|
|
||||||
# Glyph offset determines the locations of the glyphs within their cells with
|
|
||||||
# the default being at the bottom. Increasing `x` moves the glyph to the
|
|
||||||
# right, increasing `y` moves the glyph upward.
|
|
||||||
#glyph_offset:
|
|
||||||
# x: 0
|
|
||||||
# y: 0
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# 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'
|
|
||||||
|
|
||||||
# Keyboard 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
|
|
||||||
|
|
||||||
# Footer bar
|
|
||||||
#
|
|
||||||
# Color used for the footer bar on the bottom, used by search regex input,
|
|
||||||
# hyperlink URI preview, etc.
|
|
||||||
#
|
|
||||||
#footer_bar:
|
|
||||||
# background: '#c5c8c6'
|
|
||||||
# foreground: '#1d1f21'
|
|
||||||
|
|
||||||
# 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: Block
|
|
||||||
|
|
||||||
# Cursor blinking state
|
|
||||||
#
|
|
||||||
# Values for `blinking`:
|
|
||||||
# - Never: Prevent the cursor from ever blinking
|
|
||||||
# - Off: Disable blinking by default
|
|
||||||
# - On: Enable blinking by default
|
|
||||||
# - Always: Force the cursor to always blink
|
|
||||||
#blinking: Off
|
|
||||||
|
|
||||||
# Vi mode cursor style
|
|
||||||
#
|
|
||||||
# If the vi mode cursor style is `None` or not specified, it will fall back to
|
|
||||||
# the style of the active value of the normal cursor.
|
|
||||||
#
|
|
||||||
# See `cursor.style` for available options.
|
|
||||||
#vi_mode_style: None
|
|
||||||
|
|
||||||
# Cursor blinking interval in milliseconds.
|
|
||||||
#blink_interval: 750
|
|
||||||
|
|
||||||
# Time after which cursor stops blinking, in seconds.
|
|
||||||
#
|
|
||||||
# Specifying '0' will disable timeout for blinking.
|
|
||||||
#blink_timeout: 5
|
|
||||||
|
|
||||||
# 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:
|
|
||||||
# - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset
|
|
||||||
# - (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
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# Hints
|
|
||||||
#
|
|
||||||
# Terminal hints can be used to find text or hyperlink 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 any of `regex` or `hyperlinks` field and either an
|
|
||||||
# `action` or a `command` field. The fields `mouse`, `binding` and
|
|
||||||
# `post_processing` are optional.
|
|
||||||
#
|
|
||||||
# The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be
|
|
||||||
# highlighted.
|
|
||||||
#
|
|
||||||
# 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 and applies only to
|
|
||||||
# `regex` matches.
|
|
||||||
#
|
|
||||||
# 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{-}\\^⟨⟩`]+"
|
|
||||||
# hyperlinks: true
|
|
||||||
# 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/winit/*/winit/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
|
|
||||||
# - ToggleMaximized
|
|
||||||
# - 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`.
|
|
||||||
# - CenterAroundViCursor
|
|
||||||
# Center view around vi mode cursor
|
|
||||||
#
|
|
||||||
# - 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: Z, mode: Vi|~Search, action: CenterAroundViCursor }
|
|
||||||
#- { 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: CreateNewWindow }
|
|
||||||
#- { 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
|
|
||||||
|
|
||||||
# Renderer override.
|
|
||||||
# - glsl3
|
|
||||||
# - gles2
|
|
||||||
# - gles2_pure
|
|
||||||
#renderer: None
|
|
||||||
|
|
||||||
# Print all received window events.
|
|
||||||
#print_events: false
|
|
||||||
|
|
||||||
# Highlight window damage information.
|
|
||||||
#highlight_damage: false
|
|
2
.config/alacritty/alacritty.toml
Normal file
2
.config/alacritty/alacritty.toml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[window]
|
||||||
|
opacity = 0.95
|
9
.config/autorandr/ip-tls/config
Normal file
9
.config/autorandr/ip-tls/config
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
output eDP
|
||||||
|
mode 1920x1080
|
||||||
|
pos 0x0
|
||||||
|
primary
|
||||||
|
rate 60.00
|
||||||
|
output HDMI-A-0
|
||||||
|
mode 1920x1080
|
||||||
|
pos 1920x0
|
||||||
|
rate 60.00
|
2
.config/autorandr/ip-tls/setup
Normal file
2
.config/autorandr/ip-tls/setup
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
HDMI-A-0 00ffffffffffff004c2d200d34415743191e010380341d782a9315a655519c27115054bfef80714f81c0810081809500a9c0b3000101023a801871382d40582c450009252100001e000000fd00324b1e5111000a202020202020000000fc00533234463335300a2020202020000000ff0048345a4e3630323031370a20200114020311b14690041f13120365030c001000011d00bc52d01e20b828554009252100001e8c0ad090204031200c4055000925210000188c0ad08a20e02d10103e9600092521000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051
|
||||||
|
eDP 00ffffffffffff0009e5d50800000000231d0104a5221378030b95935c59932a20505400000001010101010101010101010101010101043a803671381e403020360058c21000001a000000000000000000000000000000000000000000fe00424f452043510a202020202020000000fe004e5431353646484d2d4e34330a000e
|
6
.config/autorandr/ip/config
Normal file
6
.config/autorandr/ip/config
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
output HDMI-A-0
|
||||||
|
off
|
||||||
|
output eDP
|
||||||
|
mode 1920x1080
|
||||||
|
pos 0x0
|
||||||
|
rate 60.00
|
1
.config/autorandr/ip/setup
Normal file
1
.config/autorandr/ip/setup
Normal file
@ -0,0 +1 @@
|
|||||||
|
eDP 00ffffffffffff0009e5d50800000000231d0104a5221378030b95935c59932a20505400000001010101010101010101010101010101043a803671381e403020360058c21000001a000000000000000000000000000000000000000000fe00424f452043510a202020202020000000fe004e5431353646484d2d4e34330a000e
|
2
.config/black
Normal file
2
.config/black
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[tool.black]
|
||||||
|
line-length = 79
|
@ -1,6 +1,6 @@
|
|||||||
[user]
|
[user]
|
||||||
email = ange.duhayon@epitech.eu
|
email = ange@duhayon.com
|
||||||
name = AngeD
|
name = ange
|
||||||
[credential]
|
[credential]
|
||||||
helper = store
|
helper = store
|
||||||
[diff]
|
[diff]
|
||||||
@ -9,3 +9,5 @@
|
|||||||
cmd = nvim -d -c \"wincmd l\" \"$LOCAL\" \"$REMOTE\"
|
cmd = nvim -d -c \"wincmd l\" \"$LOCAL\" \"$REMOTE\"
|
||||||
[init]
|
[init]
|
||||||
defaultBranch = main
|
defaultBranch = main
|
||||||
|
[commit]
|
||||||
|
gpgsign = true
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
function! TekHeader(ft=&filetype)
|
|
||||||
let com_arr = {
|
|
||||||
\ 'c': {'top': '/*', 'mid': '**', 'bot': '*/'},
|
|
||||||
\ 'make': {'top': '##', 'mid': '##', 'bot': '##'},
|
|
||||||
\ 'haskell': {'top': '{-', 'mid': '--', 'bot': '-}'},
|
|
||||||
\ }
|
|
||||||
|
|
||||||
if (!has_key(com_arr, a:ft))
|
|
||||||
echoerr "Unsupported filetype: " . a:ft
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
let top = com_arr[a:ft]['top']
|
|
||||||
let mid = com_arr[a:ft]['mid']
|
|
||||||
let bot = com_arr[a:ft]['bot']
|
|
||||||
let dir_name = fnamemodify(getcwd(), ':t')
|
|
||||||
let file_name = expand('%:t:r')
|
|
||||||
|
|
||||||
call append(0, top)
|
|
||||||
call append(1, mid . ' EPITECH PROJECT, ' . strftime('%Y'))
|
|
||||||
call append(2, mid . ' ' . dir_name)
|
|
||||||
call append(3, mid . ' File description:')
|
|
||||||
call append(4, mid . ' ' . file_name)
|
|
||||||
call append(5, bot)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! TekHHeader()
|
|
||||||
call TekHeader('c')
|
|
||||||
call append(6, '')
|
|
||||||
call append(7, '#pragma once')
|
|
||||||
call append(8, '')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! TekHppHeader()
|
|
||||||
let file_name = expand('%:t:r')
|
|
||||||
|
|
||||||
call append(0, '#pragma once')
|
|
||||||
call append(1, '')
|
|
||||||
call append(2, 'class ' .. file_name .. ' {')
|
|
||||||
call append(3, ' public:')
|
|
||||||
call append(4, ' ' .. file_name .. '(void);')
|
|
||||||
call append(5, ' ~' .. file_name .. '(void);')
|
|
||||||
call append(6, '')
|
|
||||||
call append(7, ' protected:')
|
|
||||||
call append(8, '};')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
au BufNewFile *.c call TekHeader('c')
|
|
||||||
au BufNewFile *.hs call TekHeader('haskell')
|
|
||||||
au BufNewFile Makefile call TekHeader('make')
|
|
||||||
|
|
||||||
au BufNewFile *.h call TekHHeader()
|
|
||||||
au BufNewFile *.hpp call TekHppHeader()
|
|
||||||
|
|
||||||
command Header call TekHeader()
|
|
@ -36,7 +36,6 @@ vim.o.grepprg = "grep -rn"
|
|||||||
|
|
||||||
vim.o.scrolloff = 2
|
vim.o.scrolloff = 2
|
||||||
vim.wo.colorcolumn = "80"
|
vim.wo.colorcolumn = "80"
|
||||||
vim.g.black_linelength = 79
|
|
||||||
|
|
||||||
vim.g.netrw_banner = 0
|
vim.g.netrw_banner = 0
|
||||||
vim.g.netrw_list_hide = "\\.o$,\\.d$,\\.gc..$"
|
vim.g.netrw_list_hide = "\\.o$,\\.d$,\\.gc..$"
|
||||||
@ -59,14 +58,12 @@ require"pack-easy-align"
|
|||||||
require"pack-lspconfig"
|
require"pack-lspconfig"
|
||||||
require"pack-telescope"
|
require"pack-telescope"
|
||||||
require"pack-treesitter"
|
require"pack-treesitter"
|
||||||
vim.cmd("source ~/.config/nvim/epitech.vim")
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
----- keybindings -----
|
----- keybindings -----
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
-- remove trailing whitespaces
|
-- remove trailing whitespaces
|
||||||
vim.keymap.set("n", "<Leader>e", "<cmd>exe getline(line('.'))<CR>")
|
|
||||||
vim.keymap.set("n", "<Leader>f", "<cmd>%s/\\s\\+$//e<CR>")
|
vim.keymap.set("n", "<Leader>f", "<cmd>%s/\\s\\+$//e<CR>")
|
||||||
vim.keymap.set("n", "n", "nzz")
|
vim.keymap.set("n", "n", "nzz")
|
||||||
vim.keymap.set("n", "p", "pzz")
|
vim.keymap.set("n", "N", "Nzz")
|
||||||
|
@ -1,40 +1,40 @@
|
|||||||
lspconfig = require"lspconfig"
|
local lspconfig = require"lspconfig"
|
||||||
|
|
||||||
local servers = {
|
local servers = {
|
||||||
"pyright",
|
"pyright",
|
||||||
}
|
}
|
||||||
|
|
||||||
local on_attach = function(client, bufnr)
|
-- Global mappings.
|
||||||
-- Enable completion triggered by <c-x><c-o>
|
|
||||||
vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc")
|
|
||||||
|
|
||||||
-- Mappings.
|
|
||||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
|
||||||
local bufopts = { noremap=true, silent=true, buffer=bufnr }
|
|
||||||
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, bufopts)
|
|
||||||
vim.keymap.set("n", "gd", vim.lsp.buf.definition, bufopts)
|
|
||||||
vim.keymap.set("n", "K", vim.lsp.buf.hover, bufopts)
|
|
||||||
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, bufopts)
|
|
||||||
vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, bufopts)
|
|
||||||
vim.keymap.set("n", "<Leader>wa", vim.lsp.buf.add_workspace_folder, bufopts)
|
|
||||||
vim.keymap.set("n", "<Leader>wr", vim.lsp.buf.remove_workspace_folder, bufopts)
|
|
||||||
vim.keymap.set("n", "<Leader>wl", function()
|
|
||||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
|
||||||
end, bufopts)
|
|
||||||
vim.keymap.set("n", "<Leader>D", vim.lsp.buf.type_definition, bufopts)
|
|
||||||
vim.keymap.set("n", "<Leader>rn", vim.lsp.buf.rename, bufopts)
|
|
||||||
vim.keymap.set("n", "<Leader>ca", vim.lsp.buf.code_action, bufopts)
|
|
||||||
vim.keymap.set("n", "gr", vim.lsp.buf.references, bufopts)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Mappings.
|
|
||||||
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
||||||
local opts = { noremap=true, silent=true }
|
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float)
|
||||||
vim.keymap.set("n", "<Leader>e", vim.diagnostic.open_float, opts)
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
|
||||||
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
|
||||||
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist)
|
||||||
vim.keymap.set("n", "<Leader>q", vim.diagnostic.setloclist, opts)
|
|
||||||
|
-- Use LspAttach autocommand to only map the following keys
|
||||||
|
-- after the language server attaches to the current buffer
|
||||||
|
local on_attach = function(client, bufnr)
|
||||||
|
vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
|
||||||
|
|
||||||
|
-- Buffer local mappings.
|
||||||
|
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||||
|
local opts = { buffer = ev.buf }
|
||||||
|
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
|
||||||
|
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
|
||||||
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
|
||||||
|
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
|
||||||
|
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
|
||||||
|
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
|
||||||
|
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
|
||||||
|
vim.keymap.set('n', '<space>wl', function()
|
||||||
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
|
end, opts)
|
||||||
|
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
|
||||||
|
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
|
||||||
|
vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
|
||||||
|
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
|
||||||
|
end
|
||||||
|
|
||||||
for _, server in ipairs(servers) do
|
for _, server in ipairs(servers) do
|
||||||
lspconfig[server].setup {on_attach = on_attach}
|
lspconfig[server].setup { on_attach = on_attach }
|
||||||
end
|
end
|
||||||
|
@ -3,3 +3,4 @@ require"nvim-treesitter.configs".setup {
|
|||||||
auto_install = true,
|
auto_install = true,
|
||||||
highlight = {enable = true},
|
highlight = {enable = true},
|
||||||
}
|
}
|
||||||
|
vim.cmd("TSUpdate")
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit b9acd92ded2ba155867ca5af9d618e933d96e3b0
|
Subproject commit c5476a091b0f1b4e853db91c91ff941f848a1cdd
|
@ -1 +1 @@
|
|||||||
Subproject commit 50012918b2fc8357b87cff2a7f7f0446e47da174
|
Subproject commit 55d9fe89e33efd26f532ef20223e5f9430c8b0c0
|
@ -1 +1 @@
|
|||||||
Subproject commit 20bf20500c95208c3ac0ef07245065bf94dcab15
|
Subproject commit 983460fb8cd864748311f4c7f0c8337091f24d59
|
@ -1 +1 @@
|
|||||||
Subproject commit 075a64addc33390028ea124a1046a43497f05cd1
|
Subproject commit 0da349ed303bea955942f409d29059cdb89dbe2c
|
@ -48,7 +48,9 @@ static const Layout layouts[] = {
|
|||||||
#define MODKEY Mod1Mask
|
#define MODKEY Mod1Mask
|
||||||
#define TAGKEYS(KEY,TAG) \
|
#define TAGKEYS(KEY,TAG) \
|
||||||
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
||||||
|
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
|
||||||
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
|
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
|
||||||
|
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
|
||||||
|
|
||||||
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
|
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
|
||||||
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
|
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
|
||||||
@ -61,16 +63,24 @@ static const Key keys[] = {
|
|||||||
/* modifier key function argument */
|
/* modifier key function argument */
|
||||||
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
|
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
|
||||||
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
|
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
|
||||||
|
{ MODKEY, XK_b, togglebar, {0} },
|
||||||
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
||||||
{ MODKEY, XK_k, focusstack, {.i = -1 } },
|
{ MODKEY, XK_k, focusstack, {.i = -1 } },
|
||||||
|
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
|
||||||
|
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
|
||||||
|
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
|
||||||
|
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
|
||||||
{ MODKEY, XK_Return, zoom, {0} },
|
{ MODKEY, XK_Return, zoom, {0} },
|
||||||
{ MODKEY, XK_Tab, view, {0} },
|
{ MODKEY, XK_Tab, view, {0} },
|
||||||
{ MODKEY|ShiftMask, XK_c, killclient, {0} },
|
{ MODKEY|ShiftMask, XK_c, killclient, {0} },
|
||||||
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
|
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
|
||||||
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
|
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
|
||||||
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
|
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
|
||||||
|
{ MODKEY, XK_space, setlayout, {0} },
|
||||||
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
|
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
|
||||||
{ MODKEY|ShiftMask, XK_f, togglefullscr, {0} },
|
{ MODKEY|ShiftMask, XK_f, togglefullscr, {0} },
|
||||||
|
{ MODKEY, XK_0, view, {.ui = ~0 } },
|
||||||
|
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
|
||||||
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
|
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
|
||||||
{ MODKEY, XK_period, focusmon, {.i = +1 } },
|
{ MODKEY, XK_period, focusmon, {.i = +1 } },
|
||||||
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
|
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
|
||||||
@ -97,6 +107,8 @@ static const Button buttons[] = {
|
|||||||
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
|
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
|
||||||
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
|
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
|
||||||
{ ClkTagBar, 0, Button1, view, {0} },
|
{ ClkTagBar, 0, Button1, view, {0} },
|
||||||
|
{ ClkTagBar, 0, Button3, toggleview, {0} },
|
||||||
{ ClkTagBar, MODKEY, Button1, tag, {0} },
|
{ ClkTagBar, MODKEY, Button1, tag, {0} },
|
||||||
|
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -5,8 +5,8 @@ dwm \- dynamic window manager
|
|||||||
.B dwm
|
.B dwm
|
||||||
.RB [ \-v ]
|
.RB [ \-v ]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
dwm is a dynamic window manager for X. It manages windows in tiled, monocle and
|
dwm is a dynamic window manager for X. It manages windows in tiled, monocle
|
||||||
floating layouts. Either layout can be applied dynamically, optimising the
|
and floating layouts. Either layout can be applied dynamically, optimising the
|
||||||
environment for the application in use and the task performed.
|
environment for the application in use and the task performed.
|
||||||
.P
|
.P
|
||||||
In tiled layouts windows are managed in a master and stacking area. The master
|
In tiled layouts windows are managed in a master and stacking area. The master
|
||||||
@ -17,17 +17,17 @@ maximised to the screen size. In floating layout windows can be resized and
|
|||||||
moved freely. Dialog windows are always managed floating, regardless of the
|
moved freely. Dialog windows are always managed floating, regardless of the
|
||||||
layout applied.
|
layout applied.
|
||||||
.P
|
.P
|
||||||
Windows are grouped by tags. Each window can be tagged with one tag. Selecting
|
Windows are grouped by tags. Each window can be tagged with one or multiple
|
||||||
a tag displays all windows with this tag.
|
tags. Selecting certain tags displays all windows with these tags.
|
||||||
.P
|
.P
|
||||||
Each screen contains a small status bar which displays all available tags, the
|
Each screen contains a small status bar which displays all available tags, the
|
||||||
layout, the title of the focused window, and the text read from the root window
|
layout, the title of the focused window, and the text read from the root window
|
||||||
name property, if the screen is focused. A floating window is indicated with an
|
name property, if the screen is focused. A floating window is indicated with an
|
||||||
empty square and a maximised floating window is indicated with a filled square
|
empty square and a maximised floating window is indicated with a filled square
|
||||||
before the windows title. The selected tag is indicated with a different color.
|
before the windows title. The selected tags are indicated with a different
|
||||||
The tag of the focused window is indicated with a filled square in the top left
|
color. The tags of the focused window are indicated with a filled square in the
|
||||||
corner. The tags which are applied to one or more windows are indicated with an
|
top left corner. The tags which are applied to one or more windows are
|
||||||
empty square in the top left corner.
|
indicated with an empty square in the top left corner.
|
||||||
.P
|
.P
|
||||||
dwm draws a small border around windows to indicate the focus state.
|
dwm draws a small border around windows to indicate the focus state.
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
@ -43,7 +43,17 @@ is read and displayed in the status text area. It can be set with the
|
|||||||
command.
|
command.
|
||||||
.TP
|
.TP
|
||||||
.B Button1
|
.B Button1
|
||||||
click on a tag label to display all windows with that tag.
|
click on a tag label to display all windows with that tag, click on the layout
|
||||||
|
label toggles between tiled and floating layout.
|
||||||
|
.TP
|
||||||
|
.B Button3
|
||||||
|
click on a tag label adds/removes all windows with that tag to/from the view.
|
||||||
|
.TP
|
||||||
|
.B Mod1\-Button1
|
||||||
|
click on a tag label applies that tag to the focused window.
|
||||||
|
.TP
|
||||||
|
.B Mod1\-Button3
|
||||||
|
click on a tag label adds/removes that tag to/from the focused window.
|
||||||
.SS Keyboard commands
|
.SS Keyboard commands
|
||||||
.TP
|
.TP
|
||||||
.B Mod1\-Shift\-Return
|
.B Mod1\-Shift\-Return
|
||||||
@ -67,6 +77,9 @@ Send focused window to previous screen, if any.
|
|||||||
.B Mod1\-Shift\-.
|
.B Mod1\-Shift\-.
|
||||||
Send focused window to next screen, if any.
|
Send focused window to next screen, if any.
|
||||||
.TP
|
.TP
|
||||||
|
.B Mod1\-b
|
||||||
|
Toggles bar on and off.
|
||||||
|
.TP
|
||||||
.B Mod1\-t
|
.B Mod1\-t
|
||||||
Sets tiled layout.
|
Sets tiled layout.
|
||||||
.TP
|
.TP
|
||||||
@ -85,6 +98,18 @@ Focus next window.
|
|||||||
.B Mod1\-k
|
.B Mod1\-k
|
||||||
Focus previous window.
|
Focus previous window.
|
||||||
.TP
|
.TP
|
||||||
|
.B Mod1\-i
|
||||||
|
Increase number of windows in master area.
|
||||||
|
.TP
|
||||||
|
.B Mod1\-d
|
||||||
|
Decrease number of windows in master area.
|
||||||
|
.TP
|
||||||
|
.B Mod1\-l
|
||||||
|
Increase master area size.
|
||||||
|
.TP
|
||||||
|
.B Mod1\-h
|
||||||
|
Decrease master area size.
|
||||||
|
.TP
|
||||||
.B Mod1\-Return
|
.B Mod1\-Return
|
||||||
Zooms/cycles focused window to/from master area (tiled layouts only).
|
Zooms/cycles focused window to/from master area (tiled layouts only).
|
||||||
.TP
|
.TP
|
||||||
@ -103,9 +128,21 @@ Toggles to the previously selected tags.
|
|||||||
.B Mod1\-Shift\-[1..n]
|
.B Mod1\-Shift\-[1..n]
|
||||||
Apply nth tag to focused window.
|
Apply nth tag to focused window.
|
||||||
.TP
|
.TP
|
||||||
|
.B Mod1\-Shift\-0
|
||||||
|
Apply all tags to focused window.
|
||||||
|
.TP
|
||||||
|
.B Mod1\-Control\-Shift\-[1..n]
|
||||||
|
Add/remove nth tag to/from focused window.
|
||||||
|
.TP
|
||||||
.B Mod1\-[1..n]
|
.B Mod1\-[1..n]
|
||||||
View all windows with nth tag.
|
View all windows with nth tag.
|
||||||
.TP
|
.TP
|
||||||
|
.B Mod1\-0
|
||||||
|
View all windows with any tag.
|
||||||
|
.TP
|
||||||
|
.B Mod1\-Control\-[1..n]
|
||||||
|
Add/remove all windows with nth tag to/from the view.
|
||||||
|
.TP
|
||||||
.B Mod1\-Shift\-q
|
.B Mod1\-Shift\-q
|
||||||
Quit dwm.
|
Quit dwm.
|
||||||
.SS Mouse commands
|
.SS Mouse commands
|
||||||
|
@ -168,12 +168,12 @@ static void focusin(XEvent *e);
|
|||||||
static void focusmon(const Arg *arg);
|
static void focusmon(const Arg *arg);
|
||||||
static void focusstack(const Arg *arg);
|
static void focusstack(const Arg *arg);
|
||||||
static Atom getatomprop(Client *c, Atom prop);
|
static Atom getatomprop(Client *c, Atom prop);
|
||||||
static Client *getclientptr(void);
|
|
||||||
static int getrootptr(int *x, int *y);
|
static int getrootptr(int *x, int *y);
|
||||||
static long getstate(Window w);
|
static long getstate(Window w);
|
||||||
static int gettextprop(Window w, Atom atom, char *text, unsigned int size);
|
static int gettextprop(Window w, Atom atom, char *text, unsigned int size);
|
||||||
static void grabbuttons(Client *c, int focused);
|
static void grabbuttons(Client *c, int focused);
|
||||||
static void grabkeys(void);
|
static void grabkeys(void);
|
||||||
|
static void incnmaster(const Arg *arg);
|
||||||
static void keypress(XEvent *e);
|
static void keypress(XEvent *e);
|
||||||
static void killclient(const Arg *arg);
|
static void killclient(const Arg *arg);
|
||||||
static void manage(Window w, XWindowAttributes *wa);
|
static void manage(Window w, XWindowAttributes *wa);
|
||||||
@ -199,6 +199,7 @@ static void setclientstate(Client *c, long state);
|
|||||||
static void setfocus(Client *c);
|
static void setfocus(Client *c);
|
||||||
static void setfullscreen(Client *c, int fullscreen);
|
static void setfullscreen(Client *c, int fullscreen);
|
||||||
static void setlayout(const Arg *arg);
|
static void setlayout(const Arg *arg);
|
||||||
|
static void setmfact(const Arg *arg);
|
||||||
static void setup(void);
|
static void setup(void);
|
||||||
static void seturgent(Client *c, int urg);
|
static void seturgent(Client *c, int urg);
|
||||||
static void showhide(Client *c);
|
static void showhide(Client *c);
|
||||||
@ -207,8 +208,11 @@ static void spawn(const Arg *arg);
|
|||||||
static void tag(const Arg *arg);
|
static void tag(const Arg *arg);
|
||||||
static void tagmon(const Arg *arg);
|
static void tagmon(const Arg *arg);
|
||||||
static void tile(Monitor *m);
|
static void tile(Monitor *m);
|
||||||
|
static void togglebar(const Arg *arg);
|
||||||
static void togglefloating(const Arg *arg);
|
static void togglefloating(const Arg *arg);
|
||||||
static void togglefullscr(const Arg *arg);
|
static void togglefullscr(const Arg *arg);
|
||||||
|
static void toggletag(const Arg *arg);
|
||||||
|
static void toggleview(const Arg *arg);
|
||||||
static void unfocus(Client *c, int setfocus);
|
static void unfocus(Client *c, int setfocus);
|
||||||
static void unmanage(Client *c, int destroyed);
|
static void unmanage(Client *c, int destroyed);
|
||||||
static void unmapnotify(XEvent *e);
|
static void unmapnotify(XEvent *e);
|
||||||
@ -223,7 +227,6 @@ static void updatetitle(Client *c);
|
|||||||
static void updatewindowtype(Client *c);
|
static void updatewindowtype(Client *c);
|
||||||
static void updatewmhints(Client *c);
|
static void updatewmhints(Client *c);
|
||||||
static void view(const Arg *arg);
|
static void view(const Arg *arg);
|
||||||
static void warp(const Monitor *m);
|
|
||||||
static Client *wintoclient(Window w);
|
static Client *wintoclient(Window w);
|
||||||
static Monitor *wintomon(Window w);
|
static Monitor *wintomon(Window w);
|
||||||
static int xerror(Display *dpy, XErrorEvent *ee);
|
static int xerror(Display *dpy, XErrorEvent *ee);
|
||||||
@ -821,7 +824,7 @@ focusmon(const Arg *arg)
|
|||||||
return;
|
return;
|
||||||
unfocus(selmon->sel, 0);
|
unfocus(selmon->sel, 0);
|
||||||
selmon = m;
|
selmon = m;
|
||||||
warp(m);
|
focus(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -866,17 +869,6 @@ getatomprop(Client *c, Atom prop)
|
|||||||
return atom;
|
return atom;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client *
|
|
||||||
getclientptr(void)
|
|
||||||
{
|
|
||||||
int di;
|
|
||||||
unsigned int dui;
|
|
||||||
Window win, dummy;
|
|
||||||
|
|
||||||
XQueryPointer(dpy, root, &dummy, &win, &di, &di, &di, &di, &dui);
|
|
||||||
return wintoclient(win);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
getrootptr(int *x, int *y)
|
getrootptr(int *x, int *y)
|
||||||
{
|
{
|
||||||
@ -967,6 +959,13 @@ grabkeys(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
incnmaster(const Arg *arg)
|
||||||
|
{
|
||||||
|
selmon->nmaster = MAX(selmon->nmaster + arg->i, 0);
|
||||||
|
arrange(selmon);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef XINERAMA
|
#ifdef XINERAMA
|
||||||
static int
|
static int
|
||||||
isuniquegeom(XineramaScreenInfo *unique, size_t n, XineramaScreenInfo *info)
|
isuniquegeom(XineramaScreenInfo *unique, size_t n, XineramaScreenInfo *info)
|
||||||
@ -1501,6 +1500,21 @@ setlayout(const Arg *arg)
|
|||||||
drawbar(selmon);
|
drawbar(selmon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* arg > 1.0 will set mfact absolutely */
|
||||||
|
void
|
||||||
|
setmfact(const Arg *arg)
|
||||||
|
{
|
||||||
|
float f;
|
||||||
|
|
||||||
|
if (!arg || !selmon->lt[selmon->sellt]->arrange)
|
||||||
|
return;
|
||||||
|
f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0;
|
||||||
|
if (f < 0.05 || f > 0.95)
|
||||||
|
return;
|
||||||
|
selmon->mfact = f;
|
||||||
|
arrange(selmon);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
setup(void)
|
setup(void)
|
||||||
{
|
{
|
||||||
@ -1668,6 +1682,15 @@ tile(Monitor *m)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
togglebar(const Arg *arg)
|
||||||
|
{
|
||||||
|
selmon->showbar = !selmon->showbar;
|
||||||
|
updatebarpos(selmon);
|
||||||
|
XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
|
||||||
|
arrange(selmon);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
togglefloating(const Arg *arg)
|
togglefloating(const Arg *arg)
|
||||||
{
|
{
|
||||||
@ -1689,6 +1712,33 @@ togglefullscr(const Arg *arg)
|
|||||||
setfullscreen(selmon->sel, !selmon->sel->isfullscreen);
|
setfullscreen(selmon->sel, !selmon->sel->isfullscreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
toggletag(const Arg *arg)
|
||||||
|
{
|
||||||
|
unsigned int newtags;
|
||||||
|
|
||||||
|
if (!selmon->sel)
|
||||||
|
return;
|
||||||
|
newtags = selmon->sel->tags ^ (arg->ui & TAGMASK);
|
||||||
|
if (newtags) {
|
||||||
|
selmon->sel->tags = newtags;
|
||||||
|
focus(NULL);
|
||||||
|
arrange(selmon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
toggleview(const Arg *arg)
|
||||||
|
{
|
||||||
|
unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK);
|
||||||
|
|
||||||
|
if (newtagset) {
|
||||||
|
selmon->tagset[selmon->seltags] = newtagset;
|
||||||
|
focus(NULL);
|
||||||
|
arrange(selmon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
unfocus(Client *c, int setfocus)
|
unfocus(Client *c, int setfocus)
|
||||||
{
|
{
|
||||||
@ -1987,14 +2037,6 @@ view(const Arg *arg)
|
|||||||
selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
|
selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
|
||||||
focus(NULL);
|
focus(NULL);
|
||||||
arrange(selmon);
|
arrange(selmon);
|
||||||
focus(getclientptr());
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
warp(const Monitor *m)
|
|
||||||
{
|
|
||||||
XWarpPointer(dpy, None, root, 0, 0, 0, 0, selmon->wx + selmon->ww / 2, selmon->wy + selmon->wh / 2);
|
|
||||||
focus(NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Client *
|
Client *
|
||||||
|
@ -1,40 +0,0 @@
|
|||||||
diff --git a/dwm.c b/dwm.c
|
|
||||||
index e5efb6a..750783a 100644
|
|
||||||
--- a/dwm.c
|
|
||||||
+++ b/dwm.c
|
|
||||||
@@ -170,6 +170,7 @@ static void focusin(XEvent *e);
|
|
||||||
static void focusmon(const Arg *arg);
|
|
||||||
static void focusstack(const Arg *arg);
|
|
||||||
static Atom getatomprop(Client *c, Atom prop);
|
|
||||||
+static Client *getclientptr(void);
|
|
||||||
static int getrootptr(int *x, int *y);
|
|
||||||
static long getstate(Window w);
|
|
||||||
static int gettextprop(Window w, Atom atom, char *text, unsigned int size);
|
|
||||||
@@ -878,6 +879,17 @@ getatomprop(Client *c, Atom prop)
|
|
||||||
return atom;
|
|
||||||
}
|
|
||||||
|
|
||||||
+Client *
|
|
||||||
+getclientptr(void)
|
|
||||||
+{
|
|
||||||
+ int di;
|
|
||||||
+ unsigned int dui;
|
|
||||||
+ Window win, dummy;
|
|
||||||
+
|
|
||||||
+ XQueryPointer(dpy, root, &dummy, &win, &di, &di, &di, &di, &dui);
|
|
||||||
+ return wintoclient(win);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int
|
|
||||||
getrootptr(int *x, int *y)
|
|
||||||
{
|
|
||||||
@@ -2040,8 +2052,8 @@ view(const Arg *arg)
|
|
||||||
selmon->seltags ^= 1; /* toggle sel tagset */
|
|
||||||
if (arg->ui & TAGMASK)
|
|
||||||
selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
|
|
||||||
- focus(NULL);
|
|
||||||
arrange(selmon);
|
|
||||||
+ focus(getclientptr());
|
|
||||||
}
|
|
||||||
|
|
||||||
Client *
|
|
@ -1,273 +0,0 @@
|
|||||||
diff --git a/config.def.h b/config.def.h
|
|
||||||
index 061ad66..5c548df 100644
|
|
||||||
--- a/config.def.h
|
|
||||||
+++ b/config.def.h
|
|
||||||
@@ -48,9 +48,7 @@ static const Layout layouts[] = {
|
|
||||||
#define MODKEY Mod1Mask
|
|
||||||
#define TAGKEYS(KEY,TAG) \
|
|
||||||
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
|
||||||
- { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
|
|
||||||
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
|
|
||||||
- { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
|
|
||||||
|
|
||||||
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
|
|
||||||
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
|
|
||||||
@@ -63,23 +61,15 @@ static const Key keys[] = {
|
|
||||||
/* modifier key function argument */
|
|
||||||
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
|
|
||||||
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
|
|
||||||
- { MODKEY, XK_b, togglebar, {0} },
|
|
||||||
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
|
||||||
{ MODKEY, XK_k, focusstack, {.i = -1 } },
|
|
||||||
- { MODKEY, XK_i, incnmaster, {.i = +1 } },
|
|
||||||
- { MODKEY, XK_d, incnmaster, {.i = -1 } },
|
|
||||||
- { MODKEY, XK_h, setmfact, {.f = -0.05} },
|
|
||||||
- { MODKEY, XK_l, setmfact, {.f = +0.05} },
|
|
||||||
{ MODKEY, XK_Return, zoom, {0} },
|
|
||||||
{ MODKEY, XK_Tab, view, {0} },
|
|
||||||
{ MODKEY|ShiftMask, XK_c, killclient, {0} },
|
|
||||||
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
|
|
||||||
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
|
|
||||||
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
|
|
||||||
- { MODKEY, XK_space, setlayout, {0} },
|
|
||||||
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
|
|
||||||
- { MODKEY, XK_0, view, {.ui = ~0 } },
|
|
||||||
- { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
|
|
||||||
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
|
|
||||||
{ MODKEY, XK_period, focusmon, {.i = +1 } },
|
|
||||||
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
|
|
||||||
@@ -108,8 +98,6 @@ static const Button buttons[] = {
|
|
||||||
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
|
|
||||||
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
|
|
||||||
{ ClkTagBar, 0, Button1, view, {0} },
|
|
||||||
- { ClkTagBar, 0, Button3, toggleview, {0} },
|
|
||||||
{ ClkTagBar, MODKEY, Button1, tag, {0} },
|
|
||||||
- { ClkTagBar, MODKEY, Button3, toggletag, {0} },
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/dwm.1 b/dwm.1
|
|
||||||
index ddc8321..b8ced05 100644
|
|
||||||
--- a/dwm.1
|
|
||||||
+++ b/dwm.1
|
|
||||||
@@ -5,8 +5,8 @@ dwm \- dynamic window manager
|
|
||||||
.B dwm
|
|
||||||
.RB [ \-v ]
|
|
||||||
.SH DESCRIPTION
|
|
||||||
-dwm is a dynamic window manager for X. It manages windows in tiled, monocle
|
|
||||||
-and floating layouts. Either layout can be applied dynamically, optimising the
|
|
||||||
+dwm is a dynamic window manager for X. It manages windows in tiled, monocle and
|
|
||||||
+floating layouts. Either layout can be applied dynamically, optimising the
|
|
||||||
environment for the application in use and the task performed.
|
|
||||||
.P
|
|
||||||
In tiled layouts windows are managed in a master and stacking area. The master
|
|
||||||
@@ -17,17 +17,17 @@ maximised to the screen size. In floating layout windows can be resized and
|
|
||||||
moved freely. Dialog windows are always managed floating, regardless of the
|
|
||||||
layout applied.
|
|
||||||
.P
|
|
||||||
-Windows are grouped by tags. Each window can be tagged with one or multiple
|
|
||||||
-tags. Selecting certain tags displays all windows with these tags.
|
|
||||||
+Windows are grouped by tags. Each window can be tagged with one tag. Selecting
|
|
||||||
+a tag displays all windows with this tag.
|
|
||||||
.P
|
|
||||||
Each screen contains a small status bar which displays all available tags, the
|
|
||||||
layout, the title of the focused window, and the text read from the root window
|
|
||||||
name property, if the screen is focused. A floating window is indicated with an
|
|
||||||
empty square and a maximised floating window is indicated with a filled square
|
|
||||||
-before the windows title. The selected tags are indicated with a different
|
|
||||||
-color. The tags of the focused window are indicated with a filled square in the
|
|
||||||
-top left corner. The tags which are applied to one or more windows are
|
|
||||||
-indicated with an empty square in the top left corner.
|
|
||||||
+before the windows title. The selected tag is indicated with a different color.
|
|
||||||
+The tag of the focused window is indicated with a filled square in the top left
|
|
||||||
+corner. The tags which are applied to one or more windows are indicated with an
|
|
||||||
+empty square in the top left corner.
|
|
||||||
.P
|
|
||||||
dwm draws a small border around windows to indicate the focus state.
|
|
||||||
.SH OPTIONS
|
|
||||||
@@ -43,17 +43,7 @@ is read and displayed in the status text area. It can be set with the
|
|
||||||
command.
|
|
||||||
.TP
|
|
||||||
.B Button1
|
|
||||||
-click on a tag label to display all windows with that tag, click on the layout
|
|
||||||
-label toggles between tiled and floating layout.
|
|
||||||
-.TP
|
|
||||||
-.B Button3
|
|
||||||
-click on a tag label adds/removes all windows with that tag to/from the view.
|
|
||||||
-.TP
|
|
||||||
-.B Mod1\-Button1
|
|
||||||
-click on a tag label applies that tag to the focused window.
|
|
||||||
-.TP
|
|
||||||
-.B Mod1\-Button3
|
|
||||||
-click on a tag label adds/removes that tag to/from the focused window.
|
|
||||||
+click on a tag label to display all windows with that tag.
|
|
||||||
.SS Keyboard commands
|
|
||||||
.TP
|
|
||||||
.B Mod1\-Shift\-Return
|
|
||||||
@@ -77,9 +67,6 @@ Send focused window to previous screen, if any.
|
|
||||||
.B Mod1\-Shift\-.
|
|
||||||
Send focused window to next screen, if any.
|
|
||||||
.TP
|
|
||||||
-.B Mod1\-b
|
|
||||||
-Toggles bar on and off.
|
|
||||||
-.TP
|
|
||||||
.B Mod1\-t
|
|
||||||
Sets tiled layout.
|
|
||||||
.TP
|
|
||||||
@@ -98,18 +85,6 @@ Focus next window.
|
|
||||||
.B Mod1\-k
|
|
||||||
Focus previous window.
|
|
||||||
.TP
|
|
||||||
-.B Mod1\-i
|
|
||||||
-Increase number of windows in master area.
|
|
||||||
-.TP
|
|
||||||
-.B Mod1\-d
|
|
||||||
-Decrease number of windows in master area.
|
|
||||||
-.TP
|
|
||||||
-.B Mod1\-l
|
|
||||||
-Increase master area size.
|
|
||||||
-.TP
|
|
||||||
-.B Mod1\-h
|
|
||||||
-Decrease master area size.
|
|
||||||
-.TP
|
|
||||||
.B Mod1\-Return
|
|
||||||
Zooms/cycles focused window to/from master area (tiled layouts only).
|
|
||||||
.TP
|
|
||||||
@@ -125,21 +100,9 @@ Toggles to the previously selected tags.
|
|
||||||
.B Mod1\-Shift\-[1..n]
|
|
||||||
Apply nth tag to focused window.
|
|
||||||
.TP
|
|
||||||
-.B Mod1\-Shift\-0
|
|
||||||
-Apply all tags to focused window.
|
|
||||||
-.TP
|
|
||||||
-.B Mod1\-Control\-Shift\-[1..n]
|
|
||||||
-Add/remove nth tag to/from focused window.
|
|
||||||
-.TP
|
|
||||||
.B Mod1\-[1..n]
|
|
||||||
View all windows with nth tag.
|
|
||||||
.TP
|
|
||||||
-.B Mod1\-0
|
|
||||||
-View all windows with any tag.
|
|
||||||
-.TP
|
|
||||||
-.B Mod1\-Control\-[1..n]
|
|
||||||
-Add/remove all windows with nth tag to/from the view.
|
|
||||||
-.TP
|
|
||||||
.B Mod1\-Shift\-q
|
|
||||||
Quit dwm.
|
|
||||||
.SS Mouse commands
|
|
||||||
diff --git a/dwm.c b/dwm.c
|
|
||||||
index e5efb6a..8f63c64 100644
|
|
||||||
--- a/dwm.c
|
|
||||||
+++ b/dwm.c
|
|
||||||
@@ -175,7 +175,6 @@ static long getstate(Window w);
|
|
||||||
static int gettextprop(Window w, Atom atom, char *text, unsigned int size);
|
|
||||||
static void grabbuttons(Client *c, int focused);
|
|
||||||
static void grabkeys(void);
|
|
||||||
-static void incnmaster(const Arg *arg);
|
|
||||||
static void keypress(XEvent *e);
|
|
||||||
static void killclient(const Arg *arg);
|
|
||||||
static void manage(Window w, XWindowAttributes *wa);
|
|
||||||
@@ -201,7 +200,6 @@ static void setclientstate(Client *c, long state);
|
|
||||||
static void setfocus(Client *c);
|
|
||||||
static void setfullscreen(Client *c, int fullscreen);
|
|
||||||
static void setlayout(const Arg *arg);
|
|
||||||
-static void setmfact(const Arg *arg);
|
|
||||||
static void setup(void);
|
|
||||||
static void seturgent(Client *c, int urg);
|
|
||||||
static void showhide(Client *c);
|
|
||||||
@@ -210,10 +208,7 @@ static void spawn(const Arg *arg);
|
|
||||||
static void tag(const Arg *arg);
|
|
||||||
static void tagmon(const Arg *arg);
|
|
||||||
static void tile(Monitor *m);
|
|
||||||
-static void togglebar(const Arg *arg);
|
|
||||||
static void togglefloating(const Arg *arg);
|
|
||||||
-static void toggletag(const Arg *arg);
|
|
||||||
-static void toggleview(const Arg *arg);
|
|
||||||
static void unfocus(Client *c, int setfocus);
|
|
||||||
static void unmanage(Client *c, int destroyed);
|
|
||||||
static void unmapnotify(XEvent *e);
|
|
||||||
@@ -968,13 +963,6 @@ grabkeys(void)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-void
|
|
||||||
-incnmaster(const Arg *arg)
|
|
||||||
-{
|
|
||||||
- selmon->nmaster = MAX(selmon->nmaster + arg->i, 0);
|
|
||||||
- arrange(selmon);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
#ifdef XINERAMA
|
|
||||||
static int
|
|
||||||
isuniquegeom(XineramaScreenInfo *unique, size_t n, XineramaScreenInfo *info)
|
|
||||||
@@ -1512,21 +1500,6 @@ setlayout(const Arg *arg)
|
|
||||||
drawbar(selmon);
|
|
||||||
}
|
|
||||||
|
|
||||||
-/* arg > 1.0 will set mfact absolutely */
|
|
||||||
-void
|
|
||||||
-setmfact(const Arg *arg)
|
|
||||||
-{
|
|
||||||
- float f;
|
|
||||||
-
|
|
||||||
- if (!arg || !selmon->lt[selmon->sellt]->arrange)
|
|
||||||
- return;
|
|
||||||
- f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0;
|
|
||||||
- if (f < 0.05 || f > 0.95)
|
|
||||||
- return;
|
|
||||||
- selmon->mfact = f;
|
|
||||||
- arrange(selmon);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
void
|
|
||||||
setup(void)
|
|
||||||
{
|
|
||||||
@@ -1694,15 +1667,6 @@ tile(Monitor *m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-void
|
|
||||||
-togglebar(const Arg *arg)
|
|
||||||
-{
|
|
||||||
- selmon->showbar = !selmon->showbar;
|
|
||||||
- updatebarpos(selmon);
|
|
||||||
- XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
|
|
||||||
- arrange(selmon);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
void
|
|
||||||
togglefloating(const Arg *arg)
|
|
||||||
{
|
|
||||||
@@ -1717,33 +1681,6 @@ togglefloating(const Arg *arg)
|
|
||||||
arrange(selmon);
|
|
||||||
}
|
|
||||||
|
|
||||||
-void
|
|
||||||
-toggletag(const Arg *arg)
|
|
||||||
-{
|
|
||||||
- unsigned int newtags;
|
|
||||||
-
|
|
||||||
- if (!selmon->sel)
|
|
||||||
- return;
|
|
||||||
- newtags = selmon->sel->tags ^ (arg->ui & TAGMASK);
|
|
||||||
- if (newtags) {
|
|
||||||
- selmon->sel->tags = newtags;
|
|
||||||
- focus(NULL);
|
|
||||||
- arrange(selmon);
|
|
||||||
- }
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-void
|
|
||||||
-toggleview(const Arg *arg)
|
|
||||||
-{
|
|
||||||
- unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK);
|
|
||||||
-
|
|
||||||
- if (newtagset) {
|
|
||||||
- selmon->tagset[selmon->seltags] = newtagset;
|
|
||||||
- focus(NULL);
|
|
||||||
- arrange(selmon);
|
|
||||||
- }
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
void
|
|
||||||
unfocus(Client *c, int setfocus)
|
|
||||||
{
|
|
@ -1,8 +1,6 @@
|
|||||||
if ! pgrep -u "$USER" ssh-agent > /dev/null; then
|
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
|
||||||
ssh-agent > "$XDG_RUNTIME_DIR/ssh-agent.env"
|
gpgconf --launch gpg-agent
|
||||||
fi
|
gpg-connect-agent updatestartuptty /bye
|
||||||
|
|
||||||
. "$XDG_RUNTIME_DIR/ssh-agent.env"
|
|
||||||
|
|
||||||
[ "$XDG_VTNR" = 1 ] && {
|
[ "$XDG_VTNR" = 1 ] && {
|
||||||
GUILOG="$HOME/.local/share/gui.log"
|
GUILOG="$HOME/.local/share/gui.log"
|
||||||
@ -12,14 +10,6 @@ fi
|
|||||||
|
|
||||||
export XDG_CURRENT_DESKTOP=Unity
|
export XDG_CURRENT_DESKTOP=Unity
|
||||||
exec startx > "$GUILOG" 2>&1
|
exec startx > "$GUILOG" 2>&1
|
||||||
|
|
||||||
#export SDL_VIDEODRIVER=wayland \
|
|
||||||
# _JAVA_AWT_WM_NONREPARENTING=1 \
|
|
||||||
# QT_QPA_PLATFORM=wayland \
|
|
||||||
# XDG_CURRENT_DESKTOP=sway \
|
|
||||||
# XDG_SESSION_DESKTOP=sway \
|
|
||||||
# MOZ_ENABLE_WAYLAND=1
|
|
||||||
#exec sway > "$GUILOG" 2>&1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim: ft=zsh
|
# vim: ft=zsh
|
||||||
|
@ -23,12 +23,15 @@ setopt COMPLETE_IN_WORD
|
|||||||
unsetopt FLOW_CONTROL
|
unsetopt FLOW_CONTROL
|
||||||
|
|
||||||
setopt AUTO_CD
|
setopt AUTO_CD
|
||||||
|
setopt RM_STAR_SILENT
|
||||||
|
|
||||||
setopt HIST_IGNORE_DUPS
|
setopt HIST_IGNORE_DUPS
|
||||||
setopt HIST_IGNORE_SPACE
|
setopt HIST_IGNORE_SPACE
|
||||||
setopt SHARE_HISTORY
|
setopt SHARE_HISTORY
|
||||||
setopt EXTENDED_HISTORY
|
setopt EXTENDED_HISTORY
|
||||||
|
|
||||||
|
setopt EXTENDED_GLOB
|
||||||
|
|
||||||
export PAGER=less
|
export PAGER=less
|
||||||
export LESS_TERMCAP_mb="${fg_bold[red]}"
|
export LESS_TERMCAP_mb="${fg_bold[red]}"
|
||||||
export LESS_TERMCAP_md="${fg_bold[red]}"
|
export LESS_TERMCAP_md="${fg_bold[red]}"
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
alias docker='sudo docker'
|
||||||
|
alias docker-compose='sudo docker-compose'
|
||||||
alias dk='docker'
|
alias dk='docker'
|
||||||
|
|
||||||
## container
|
## container
|
||||||
|
@ -38,21 +38,20 @@ alias -g ...='../..' \
|
|||||||
.....='../../../..' \
|
.....='../../../..' \
|
||||||
......='../../../../..'
|
......='../../../../..'
|
||||||
|
|
||||||
alias cp="cp -vi" \
|
alias cp="cp -vi" \
|
||||||
mv="mv -vi" \
|
mv="mv -vi" \
|
||||||
rm="rm -v" \
|
rm="rm -i" \
|
||||||
mkdir="mkdir -v" \
|
mkdir="mkdir -v" \
|
||||||
rsync="rsync -P"
|
rsync="rsync -P"
|
||||||
|
|
||||||
alias ls='ls --color=tty' \
|
alias ls='ls --color=tty' \
|
||||||
l='ls -lah' \
|
|
||||||
ll='ls -lh' \
|
ll='ls -lh' \
|
||||||
la='ls -lAh'
|
l='ll -a' \
|
||||||
|
la='ll -A'
|
||||||
|
|
||||||
alias diff='diff --color'
|
alias diff='diff --color'
|
||||||
|
|
||||||
alias grep="grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}" \
|
alias grep="grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}" \
|
||||||
egrep="grep -E --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}" \
|
egrep="grep -E"
|
||||||
fgrep="grep -F --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}"
|
|
||||||
|
|
||||||
# vim: ft=zsh
|
# vim: ft=zsh
|
||||||
|
8503
.config/zsh/completions/_git
Normal file
8503
.config/zsh/completions/_git
Normal file
File diff suppressed because it is too large
Load Diff
@ -1 +1 @@
|
|||||||
Subproject commit 174ce9bf0166c657404a21f4dc9608da935f7325
|
Subproject commit cc6ed4be416b70fe4e3f97d17061c751abaca04f
|
2
.gnupg/gpg-agent.conf
Normal file
2
.gnupg/gpg-agent.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
enable-ssh-support
|
||||||
|
pinentry-program /usr/bin/pinentry-tty
|
1
.gnupg/sshcontrol
Normal file
1
.gnupg/sshcontrol
Normal file
@ -0,0 +1 @@
|
|||||||
|
8B64484EC42A914650DD8960BF3D9BBD9FE71327
|
4
.mozilla/firefox/ange/chrome/userChrome.css
Normal file
4
.mozilla/firefox/ange/chrome/userChrome.css
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#unified-extensions-button, #unified-extensions-button > .toolbarbutton-icon{
|
||||||
|
width: 0px !important;
|
||||||
|
padding: 0px !important;
|
||||||
|
}
|
37
.mozilla/firefox/ange/user.js
Normal file
37
.mozilla/firefox/ange/user.js
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
user_pref("app.shield.optoutstudies.enabled", true);
|
||||||
|
user_pref("browser.aboutConfig.showWarning", false);
|
||||||
|
user_pref("browser.contentblocking.category", "strict");
|
||||||
|
user_pref("browser.download.useDownloadDir", false);
|
||||||
|
user_pref("browser.formfill.enable", false);
|
||||||
|
user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
|
||||||
|
user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
|
||||||
|
user_pref("browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines", "");
|
||||||
|
user_pref("browser.newtabpage.enabled", false);
|
||||||
|
user_pref("browser.preferences.moreFromMozilla", false);
|
||||||
|
user_pref("browser.privatebrowsing.vpnpromourl", "");
|
||||||
|
user_pref("browser.startup.homepage", "chrome://browser/content/blanktab.html");
|
||||||
|
user_pref("browser.tabs.tabmanager.enabled", false);
|
||||||
|
user_pref("browser.topsites.contile.cachedTiles", "");
|
||||||
|
user_pref("datareporting.healthreport.uploadEnabled", false);
|
||||||
|
user_pref("datareporting.policy.dataSubmissionEnabled", false);
|
||||||
|
user_pref("dom.security.https_only_mode", true);
|
||||||
|
user_pref("extensions.formautofill.addresses.enabled", false);
|
||||||
|
user_pref("extensions.formautofill.creditCards.enabled", false);
|
||||||
|
user_pref("extensions.pocket.enabled", false);
|
||||||
|
user_pref("findbar.highlightAll", true);
|
||||||
|
user_pref("identity.fxaccounts.enabled", false);
|
||||||
|
user_pref("media.videocontrols.picture-in-picture.video-toggle.enabled", false);
|
||||||
|
user_pref("network.proxy.socks_remote_dns", true);
|
||||||
|
user_pref("signon.rememberSignons", false);
|
||||||
|
user_pref("startup.homepage_override_url", "");
|
||||||
|
user_pref("startup.homepage_welcome_url", "");
|
||||||
|
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
|
||||||
|
user_pref("toolkit.telemetry.archive.enabled", false);
|
||||||
|
|
||||||
|
// user preferences
|
||||||
|
user_pref("browser.startup.page", 3);
|
||||||
|
user_pref("browser.tabs.inTitlebar", 0);
|
||||||
|
user_pref("browser.toolbars.bookmarks.visibility", "newtab");
|
||||||
|
user_pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[],\"unified-extensions-area\":[],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"urlbar-container\",\"downloads-button\",\"fxa-toolbar-menu-button\",\"unified-extensions-button\",\"ublock0_raymondhill_net-browser-action\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"tabbrowser-tabs\",\"alltabs-button\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"currentVersion\":20,\"newElementCount\":3}");
|
||||||
|
user_pref("browser.zoom.siteSpecific", false);
|
||||||
|
user_pref("media.autoplay.default", 5);
|
11
.mozilla/firefox/profiles.ini
Normal file
11
.mozilla/firefox/profiles.ini
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[General]
|
||||||
|
Version=2
|
||||||
|
|
||||||
|
[Install4F96D1932A9F858E]
|
||||||
|
Default=ange
|
||||||
|
Locked=1
|
||||||
|
|
||||||
|
[Profile0]
|
||||||
|
Name=ange
|
||||||
|
IsRelative=1
|
||||||
|
Path=ange
|
4
.xinitrc
4
.xinitrc
@ -8,7 +8,7 @@ xss-lock -n screensaver -- lock &
|
|||||||
/usr/libexec/polkit-gnome-authentication-agent-1 & # fedora
|
/usr/libexec/polkit-gnome-authentication-agent-1 & # fedora
|
||||||
picom &
|
picom &
|
||||||
gammastep 2> /dev/null &
|
gammastep 2> /dev/null &
|
||||||
sbar &
|
sbar.py &
|
||||||
"$HOME/keepass/keepassxc" &
|
"$HOME/keepass/keepassxc" &
|
||||||
|
|
||||||
exec dbus-launch .config/suckless/dwm-6.4/dwm
|
exec dbus-launch dwm
|
||||||
|
10
.zshenv
10
.zshenv
@ -14,7 +14,15 @@ export ZSH_CUSTOM="$ZDOTDIR/custom"
|
|||||||
export ZLE_RPROMPT_INDENT=0
|
export ZLE_RPROMPT_INDENT=0
|
||||||
export LESSHISTFILE='-'
|
export LESSHISTFILE='-'
|
||||||
|
|
||||||
path=("$HOME/bin" "$HOME/.local/bin" "$XDG_DATA_HOME/flatpak/exports/bin" /var/lib/flatpak/exports/bin $path)
|
export PYTHONPYCACHEPREFIX="$XDG_CACHE_HOME/python"
|
||||||
|
|
||||||
|
path=(
|
||||||
|
"$HOME/bin"
|
||||||
|
"$HOME/.local/bin"
|
||||||
|
"$XDG_DATA_HOME/flatpak/exports/bin"
|
||||||
|
/var/lib/flatpak/exports/bin
|
||||||
|
$path
|
||||||
|
)
|
||||||
|
|
||||||
export BROWSER=firefox
|
export BROWSER=firefox
|
||||||
export EDITOR=nvim
|
export EDITOR=nvim
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# dotfiles
|
# dotfiles
|
||||||
|
|
||||||
|
See (https://git.maby.dev/ange/archinstall.git) for installation
|
||||||
|
|
||||||
To clone the repo :
|
To clone the repo :
|
||||||
```console
|
```console
|
||||||
pacman -Syu --needed zsh sway firefox alacritty neovim
|
|
||||||
|
|
||||||
git clone --bare https://git.maby.dev/ange/.dotfiles.git ~/.dotfiles
|
git clone --bare https://git.maby.dev/ange/.dotfiles.git ~/.dotfiles
|
||||||
alias config='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
|
alias config='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
CRI=(podman)
|
CRI=(sudo docker)
|
||||||
|
|
||||||
REPORTS="$(mktemp -d)"
|
REPORTS="$(mktemp -d)"
|
||||||
LOGS="$REPORTS/coding-style-reports.log"
|
LOGS="$REPORTS/coding-style-reports.log"
|
||||||
|
49
bin/crypto
49
bin/crypto
@ -1,37 +1,50 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import http.client as http
|
||||||
import json
|
import json
|
||||||
|
|
||||||
import http.client as http
|
# curl -sS https://api.coingecko.com/api/v3/coins/list
|
||||||
|
|
||||||
# curl https://api.coingecko.com/api/v3/coins/list
|
|
||||||
COINS = [
|
COINS = [
|
||||||
# [id, symbol]
|
# [id, symbol]
|
||||||
["bitcoin", "BTC"],
|
["bitcoin", "BTC"],
|
||||||
["monero", "XMR"],
|
["ordinals", "ORDI"],
|
||||||
]
|
]
|
||||||
CURRENCY = "eur"
|
CURRENCY = "usd"
|
||||||
FORMAT = "{coin}=€{price:.0f}"
|
FORMAT = "{coin}=${price:.0f}"
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def get_btc_fees() -> str:
|
||||||
coin_ids = ",".join([coin[0] for coin in COINS])
|
url = "mempool.space"
|
||||||
url = "api.coingecko.com"
|
path = "/api/v1/fees/mempool-blocks"
|
||||||
path = f"/api/v3/simple/price?ids={coin_ids}&vs_currencies={CURRENCY}"
|
|
||||||
|
|
||||||
client = http.HTTPSConnection(url)
|
client = http.HTTPSConnection(url)
|
||||||
client.request("GET", path)
|
client.request("GET", path)
|
||||||
|
|
||||||
# {'bitcoin': {'usd': 69420}}
|
# https://mempool.space/docs/api/rest#get-mempool-blocks-fees
|
||||||
|
response = json.loads(client.getresponse().read())
|
||||||
|
return f"{int(response[0]['medianFee'])} sat/vB"
|
||||||
|
|
||||||
|
|
||||||
|
def get_coins_values() -> str:
|
||||||
|
ids = ",".join([coin[0] for coin in COINS])
|
||||||
|
url = "api.coingecko.com"
|
||||||
|
path = f"/api/v3/simple/price?ids={ids}&vs_currencies={CURRENCY}"
|
||||||
|
|
||||||
|
client = http.HTTPSConnection(url)
|
||||||
|
client.request("GET", path)
|
||||||
|
|
||||||
|
# https://www.coingecko.com/api/documentation
|
||||||
prices = json.loads(client.getresponse().read())
|
prices = json.loads(client.getresponse().read())
|
||||||
|
|
||||||
print(
|
return " ".join(
|
||||||
*[
|
FORMAT.format(coin=coin[1], price=prices[coin[0]][CURRENCY])
|
||||||
FORMAT.format(coin=coin[1], price=prices[coin[0]][CURRENCY])
|
for coin in COINS
|
||||||
for coin in COINS
|
|
||||||
]
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print(f"{get_btc_fees()} {get_coins_values()}")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
CRI=(podman)
|
CRI=(sudo docker)
|
||||||
|
|
||||||
"${CRI[@]}" run --rm -it -v "$PWD:/mnt/" -w /mnt/ docker.io/debian:12-slim
|
"${CRI[@]}" run --rm -it -v "$PWD:/mnt/" -w /mnt/ docker.io/debian:12-slim
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
CRI=(podman)
|
CRI=(sudo docker)
|
||||||
CRI_OPT=()
|
CRI_OPT=()
|
||||||
|
|
||||||
if [ -z "$WAYLAND_DISPLAY" ]; then
|
if [ -z "$WAYLAND_DISPLAY" ]; then
|
||||||
|
31
bin/sbar
31
bin/sbar
@ -5,22 +5,24 @@ echo "$$" > "$HOME/.cache/pidofbar"
|
|||||||
|
|
||||||
# MODULES
|
# MODULES
|
||||||
update_crypto() {
|
update_crypto() {
|
||||||
crypto="$(crypto)"
|
local c="$(crypto)"
|
||||||
|
|
||||||
|
[ -n c ] && crypto="$c |"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_cpu() {
|
update_cpu() {
|
||||||
cpu=" $(grep -o "^[^ ]*" /proc/loadavg)"
|
cpu=" $(grep -o "^[^ ]*" /proc/loadavg) |"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_memory() {
|
update_memory() {
|
||||||
memory=" $(free -h | sed -n '2s/\([^ ]* *\)\{2\}\([^ ]*\).*/\2/p')"
|
memory=" $(free -h | sed -n '2s/\([^ ]* *\)\{2\}\([^ ]*\).*/\2/p') |"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_bat() {
|
update_bat() {
|
||||||
local dir; dir="$(echo /sys/class/power_supply/BAT*/ | sort -n | tail -n1)"
|
local dir; dir="$(echo /sys/class/power_supply/BAT*/ | sort -n | tail -n1)"
|
||||||
|
|
||||||
bat="$(grep -q Charging "$dir/status" && printf '' || printf '')"
|
bat="$(grep -q Charging "$dir/status" && printf '' || printf '')"
|
||||||
bat="$bat $(cat "$dir/capacity")%"
|
bat="$bat $(cat "$dir/capacity")% |"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_vol() {
|
update_vol() {
|
||||||
@ -31,11 +33,12 @@ update_vol() {
|
|||||||
else
|
else
|
||||||
vol=" $((10#$(tr -dc '0-9' <<< "$v")))"
|
vol=" $((10#$(tr -dc '0-9' <<< "$v")))"
|
||||||
fi
|
fi
|
||||||
|
vol="$vol |"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_wlp() {
|
update_wlp() {
|
||||||
local sig; sig="$(grep wlp /proc/net/wireless | awk '{print $3 * 100}')"
|
local sig; sig="$(grep wlp /proc/net/wireless | awk '{print $3 * 100}')"
|
||||||
local ssid; ssid="$(nmcli -t -f name,device connection show --active | grep wlp | cut -d: -f1)"
|
local ssid; ssid="$(nmcli device wifi show-password | grep SSID | sed 's/SSID: //')"
|
||||||
|
|
||||||
[ -z "$ssid" ] && wlp='⚠' && return
|
[ -z "$ssid" ] && wlp='⚠' && return
|
||||||
[ -z "$sig" ] && sig=0
|
[ -z "$sig" ] && sig=0
|
||||||
@ -46,19 +49,13 @@ update_wlp() {
|
|||||||
{ [ "$sig" -gt 1650 ] && wlp="▂▄__ $ssid"; } ||
|
{ [ "$sig" -gt 1650 ] && wlp="▂▄__ $ssid"; } ||
|
||||||
{ [ "$sig" -gt 275 ] && wlp="▂___ $ssid"; } ||
|
{ [ "$sig" -gt 275 ] && wlp="▂___ $ssid"; } ||
|
||||||
{ wlp="____ $ssid"; }
|
{ wlp="____ $ssid"; }
|
||||||
|
wlp="$wlp |"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_time() {
|
update_time() {
|
||||||
time="$(date "+%a %m/%d %R")"
|
time="$(date "+%a %m/%d %R")"
|
||||||
}
|
}
|
||||||
|
|
||||||
# For calcurse users, refer https://github.com/pystardust/automeet
|
|
||||||
#update_event () {
|
|
||||||
# event="$(calcurse -n | sed 1d | \
|
|
||||||
# sed -E "s_^ *\[(.*):(.*)\] ([^\t]*)\t?.*_[\1h \2m->\3]_")"
|
|
||||||
# [ "[]" = "$event" ] && event=""
|
|
||||||
#}
|
|
||||||
|
|
||||||
# modules that don't update on their own need to be run at the start for getting their initial value
|
# modules that don't update on their own need to be run at the start for getting their initial value
|
||||||
while [ -z "$(wpctl get-volume '@DEFAULT_AUDIO_SINK@' 2> /dev/null)" ]; do
|
while [ -z "$(wpctl get-volume '@DEFAULT_AUDIO_SINK@' 2> /dev/null)" ]; do
|
||||||
sleep 1
|
sleep 1
|
||||||
@ -70,7 +67,7 @@ reload_bar() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
display() {
|
display() {
|
||||||
"${DISPLAYCMD[@]}" "$crypto | $cpu | $memory | $vol | $wlp | $bat | $time"
|
"${DISPLAYCMD[@]}" "$crypto $cpu $memory $vol $wlp $bat $time"
|
||||||
}
|
}
|
||||||
|
|
||||||
# SIGNALING
|
# SIGNALING
|
||||||
@ -88,10 +85,12 @@ else
|
|||||||
DISPLAYCMD=(xsetroot -name)
|
DISPLAYCMD=(xsetroot -name)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# crypto & > /tmp
|
||||||
|
# sleep 5 && cat /tmp
|
||||||
sec=0
|
sec=0
|
||||||
while true; do
|
while true; do
|
||||||
[ "$((sec % 300))" = 0 ] && update_crypto
|
[ "$((sec % 300))" = 0 ] && update_crypto
|
||||||
[ "$((sec % 5 ))" = 0 ] && {
|
[ "$((sec % 10))" = 0 ] && {
|
||||||
update_time
|
update_time
|
||||||
update_cpu
|
update_cpu
|
||||||
update_memory
|
update_memory
|
||||||
@ -100,6 +99,6 @@ while true; do
|
|||||||
display
|
display
|
||||||
}
|
}
|
||||||
|
|
||||||
sleep 1 & wait
|
sleep "$(awk "BEGIN {s=$(date '+%S.%N'); print 10 - s % 10}")" & wait
|
||||||
sec="$((sec + 1))"
|
sec="$((sec + 10))"
|
||||||
done
|
done
|
||||||
|
167
bin/sbar.py
Executable file
167
bin/sbar.py
Executable file
@ -0,0 +1,167 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import runpy
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from os import getenv, getpid
|
||||||
|
from signal import signal
|
||||||
|
from subprocess import CalledProcessError, check_output, run
|
||||||
|
from time import sleep, time
|
||||||
|
|
||||||
|
|
||||||
|
crypto = runpy.run_path(getenv("HOME", "") + "/bin/crypto")
|
||||||
|
|
||||||
|
|
||||||
|
def get_stdout(command: list[str]) -> str:
|
||||||
|
try:
|
||||||
|
return check_output(command).decode().rstrip()
|
||||||
|
except CalledProcessError:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
def update_crypto():
|
||||||
|
try:
|
||||||
|
fees = crypto["get_btc_fees"]()
|
||||||
|
coins = crypto["get_coins_values"]()
|
||||||
|
except:
|
||||||
|
OUT["cryto"] = ""
|
||||||
|
return
|
||||||
|
OUT["crypto"] = f"{fees} {coins}"
|
||||||
|
|
||||||
|
|
||||||
|
def update_cpu():
|
||||||
|
loadavg: str
|
||||||
|
|
||||||
|
with open("/proc/loadavg") as f:
|
||||||
|
loadavg = f.read().split()[0]
|
||||||
|
OUT["cpu"] = f" {loadavg}"
|
||||||
|
|
||||||
|
|
||||||
|
def update_memory():
|
||||||
|
kbtot: int
|
||||||
|
kbavail: int
|
||||||
|
gbused: float
|
||||||
|
lines: list[str]
|
||||||
|
|
||||||
|
with open("/proc/meminfo") as f:
|
||||||
|
lines = f.read().split("\n")
|
||||||
|
kbtot = int(lines[0].split()[1])
|
||||||
|
kbavail = int(lines[2].split()[1])
|
||||||
|
gbused = (kbtot - kbavail) / 1024 / 1024
|
||||||
|
OUT["ram"] = f" {gbused:.1f}G"
|
||||||
|
|
||||||
|
|
||||||
|
def update_bat():
|
||||||
|
dir = "/sys/class/power_supply/BAT0"
|
||||||
|
status: str
|
||||||
|
capacity: str
|
||||||
|
|
||||||
|
with open(dir + "/status") as f:
|
||||||
|
status = "" if f.read() == "Charging\n" else ""
|
||||||
|
with open(dir + "/capacity") as f:
|
||||||
|
capacity = f.read().rstrip()
|
||||||
|
OUT["bat"] = f"{status} {capacity}%"
|
||||||
|
|
||||||
|
|
||||||
|
def update_vol():
|
||||||
|
vol = get_stdout(["wpctl", "get-volume", "@DEFAULT_AUDIO_SINK@"])
|
||||||
|
|
||||||
|
while not vol:
|
||||||
|
vol = get_stdout(["wpctl", "get-volume", "@DEFAULT_AUDIO_SINK@"])
|
||||||
|
sleep(1)
|
||||||
|
if "MUTED" in vol:
|
||||||
|
OUT["vol"] = "🔇"
|
||||||
|
else:
|
||||||
|
OUT["vol"] = f" {int(float(vol.split()[1]) * 100)}"
|
||||||
|
|
||||||
|
|
||||||
|
def update_wlp():
|
||||||
|
sig = 0
|
||||||
|
ssid = ""
|
||||||
|
lines: list[str]
|
||||||
|
|
||||||
|
with open("/proc/net/wireless") as f:
|
||||||
|
lines = f.read().split("\n")
|
||||||
|
for l in lines:
|
||||||
|
if l.startswith("wlp"):
|
||||||
|
sig = float(l.split()[2])
|
||||||
|
break
|
||||||
|
lines = get_stdout(["nmcli", "device", "wifi", "show-password"]).split("\n")
|
||||||
|
for l in lines:
|
||||||
|
if l.startswith("SSID: "):
|
||||||
|
ssid = l[6:]
|
||||||
|
break
|
||||||
|
|
||||||
|
# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/d9b06a95/src/libnmc-base/nm-client-utils.c#L628
|
||||||
|
if sig > 56: # 70 is max
|
||||||
|
OUT["wlp"] = f"▂▄▆█ {ssid}"
|
||||||
|
elif sig > 38:
|
||||||
|
OUT["wlp"] = f"▂▄▆_ {ssid}"
|
||||||
|
elif sig > 21:
|
||||||
|
OUT["wlp"] = f"▂▄__ {ssid}"
|
||||||
|
elif sig > 3:
|
||||||
|
OUT["wlp"] = f"▂___ {ssid}"
|
||||||
|
else:
|
||||||
|
OUT["wlp"] = f"____ {ssid}"
|
||||||
|
|
||||||
|
|
||||||
|
def update_time():
|
||||||
|
OUT["time"] = datetime.now().strftime("%a %m/%d %R")
|
||||||
|
|
||||||
|
|
||||||
|
def display():
|
||||||
|
s = f"{OUT.get('crypto')} | {OUT.get('cpu')} | {OUT.get('ram')} | {OUT.get('vol')} | {OUT.get('wlp')} | {OUT.get('bat')} | {OUT.get('time')}"
|
||||||
|
|
||||||
|
if getenv("XDG_SESSION_TYPE") == "wayland":
|
||||||
|
print(s)
|
||||||
|
else:
|
||||||
|
run(["xsetroot", "-name", s])
|
||||||
|
|
||||||
|
|
||||||
|
def handler(signum: int, _):
|
||||||
|
if signum == 34:
|
||||||
|
update_vol()
|
||||||
|
# elif signum == 35:
|
||||||
|
# pass
|
||||||
|
display()
|
||||||
|
|
||||||
|
|
||||||
|
def setup_sig():
|
||||||
|
cache_dir = getenv("XDG_CACHE_HOME") or f"{getenv('HOME')}/.cache"
|
||||||
|
|
||||||
|
with open(cache_dir + "/pidofbar", "w") as f:
|
||||||
|
f.write(str(getpid()))
|
||||||
|
|
||||||
|
# kill -m "$(cat ~/.cache/pidofbar)"
|
||||||
|
signal(34, handler)
|
||||||
|
|
||||||
|
|
||||||
|
OUT = dict()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
sec = 0
|
||||||
|
|
||||||
|
setup_sig()
|
||||||
|
|
||||||
|
# modules that don't update on their own need to be run at the start for
|
||||||
|
# getting their initial value
|
||||||
|
update_vol()
|
||||||
|
|
||||||
|
# TODO async?
|
||||||
|
while True:
|
||||||
|
if not sec % 300:
|
||||||
|
update_crypto()
|
||||||
|
if not sec % 10:
|
||||||
|
update_time()
|
||||||
|
update_cpu()
|
||||||
|
update_memory()
|
||||||
|
update_bat()
|
||||||
|
update_wlp()
|
||||||
|
display()
|
||||||
|
sec += 10
|
||||||
|
sleep(10 - time() % 10)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
177
bin/sbar_async.py
Executable file
177
bin/sbar_async.py
Executable file
@ -0,0 +1,177 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import asyncio
|
||||||
|
import runpy
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from os import getenv, getpid
|
||||||
|
from signal import signal
|
||||||
|
from subprocess import CalledProcessError, check_output, run
|
||||||
|
from time import sleep, time
|
||||||
|
|
||||||
|
|
||||||
|
def get_stdout(command: list[str]) -> str:
|
||||||
|
try:
|
||||||
|
return check_output(command).decode().rstrip()
|
||||||
|
except CalledProcessError:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
async def update_crypto():
|
||||||
|
crypto = runpy.run_path(getenv("HOME", "") + "/bin/crypto")
|
||||||
|
|
||||||
|
try:
|
||||||
|
fees = crypto["get_btc_fees"]()
|
||||||
|
coins = crypto["get_coins_values"]()
|
||||||
|
except:
|
||||||
|
return ""
|
||||||
|
return f"{fees} {coins}"
|
||||||
|
|
||||||
|
|
||||||
|
async def update_cpu():
|
||||||
|
loadavg: str
|
||||||
|
|
||||||
|
with open("/proc/loadavg") as f:
|
||||||
|
loadavg = f.read().split()[0]
|
||||||
|
return f" {loadavg}"
|
||||||
|
|
||||||
|
|
||||||
|
async def update_memory():
|
||||||
|
kbtot: int
|
||||||
|
kbavail: int
|
||||||
|
gbused: float
|
||||||
|
lines: list[str]
|
||||||
|
|
||||||
|
with open("/proc/meminfo") as f:
|
||||||
|
lines = f.read().split("\n")
|
||||||
|
kbtot = int(lines[0].split()[1])
|
||||||
|
kbavail = int(lines[2].split()[1])
|
||||||
|
gbused = (kbtot - kbavail) / 1024 / 1024
|
||||||
|
return f" {gbused:.1f}G"
|
||||||
|
|
||||||
|
|
||||||
|
async def update_bat():
|
||||||
|
dir = "/sys/class/power_supply/BAT0"
|
||||||
|
status: str
|
||||||
|
capacity: str
|
||||||
|
|
||||||
|
with open(dir + "/status") as f:
|
||||||
|
status = "" if f.read() == "Charging\n" else ""
|
||||||
|
with open(dir + "/capacity") as f:
|
||||||
|
capacity = f.read().rstrip()
|
||||||
|
return f"{status} {capacity}%"
|
||||||
|
|
||||||
|
|
||||||
|
async def update_vol():
|
||||||
|
vol = get_stdout(["wpctl", "get-volume", "@DEFAULT_AUDIO_SINK@"])
|
||||||
|
|
||||||
|
while not vol:
|
||||||
|
vol = get_stdout(["wpctl", "get-volume", "@DEFAULT_AUDIO_SINK@"])
|
||||||
|
sleep(1)
|
||||||
|
if "MUTED" in vol:
|
||||||
|
return "🔇"
|
||||||
|
return f" {int(float(vol.split()[1]) * 100)}"
|
||||||
|
|
||||||
|
|
||||||
|
async def update_wlp():
|
||||||
|
sig = 0
|
||||||
|
ssid = ""
|
||||||
|
lines: list[str]
|
||||||
|
|
||||||
|
with open("/proc/net/wireless") as f:
|
||||||
|
lines = f.read().split("\n")
|
||||||
|
for l in lines:
|
||||||
|
if l.startswith("wlp"):
|
||||||
|
sig = float(l.split()[2])
|
||||||
|
break
|
||||||
|
lines = get_stdout(
|
||||||
|
[
|
||||||
|
"nmcli",
|
||||||
|
"-t",
|
||||||
|
"-f",
|
||||||
|
"device,name",
|
||||||
|
"connection",
|
||||||
|
"show",
|
||||||
|
"--active",
|
||||||
|
]
|
||||||
|
).split("\n")
|
||||||
|
for l in lines:
|
||||||
|
if l.startswith("wlp"):
|
||||||
|
ssid = l.split(":")[1]
|
||||||
|
|
||||||
|
# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/d9b06a95/src/libnmc-base/nm-client-utils.c#L628
|
||||||
|
if sig > 56: # 70 is max
|
||||||
|
return f"▂▄▆█ {ssid}"
|
||||||
|
if sig > 38:
|
||||||
|
return f"▂▄▆_ {ssid}"
|
||||||
|
if sig > 21:
|
||||||
|
return f"▂▄__ {ssid}"
|
||||||
|
if sig > 3:
|
||||||
|
return f"▂___ {ssid}"
|
||||||
|
return f"____ {ssid}"
|
||||||
|
|
||||||
|
|
||||||
|
async def update_time():
|
||||||
|
return datetime.now().strftime("%a %m/%d %R")
|
||||||
|
|
||||||
|
|
||||||
|
async def display(*args):
|
||||||
|
res = []
|
||||||
|
for arg in args:
|
||||||
|
try:
|
||||||
|
res += arg.result()
|
||||||
|
except:
|
||||||
|
res += ""
|
||||||
|
print(res)
|
||||||
|
s = " | ".join(res)
|
||||||
|
|
||||||
|
if getenv("XDG_SESSION_TYPE") == "wayland":
|
||||||
|
print(s)
|
||||||
|
else:
|
||||||
|
run(["xsetroot", "-name", s])
|
||||||
|
|
||||||
|
|
||||||
|
def handler(signum: int, _):
|
||||||
|
if signum == 34:
|
||||||
|
asyncio.run(update_vol())
|
||||||
|
# elif signum == 35:
|
||||||
|
# pass
|
||||||
|
asyncio.run(display())
|
||||||
|
|
||||||
|
|
||||||
|
def setup_sig():
|
||||||
|
cache_dir = getenv("XDG_CACHE_HOME") or f"{getenv('HOME')}/.cache"
|
||||||
|
|
||||||
|
with open(cache_dir + "/pidofbar", "w") as f:
|
||||||
|
f.write(str(getpid()))
|
||||||
|
|
||||||
|
# kill -m "$(cat ~/.cache/pidofbar)"
|
||||||
|
signal(34, handler)
|
||||||
|
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
sec = 0
|
||||||
|
crypto = asyncio.create_task(update_crypto())
|
||||||
|
date = asyncio.create_task(update_time())
|
||||||
|
cpu = asyncio.create_task(update_cpu())
|
||||||
|
mem = asyncio.create_task(update_memory())
|
||||||
|
vol = asyncio.create_task(update_vol())
|
||||||
|
bat = asyncio.create_task(update_bat())
|
||||||
|
wlp = asyncio.create_task(update_wlp())
|
||||||
|
|
||||||
|
setup_sig()
|
||||||
|
while True:
|
||||||
|
if not sec % 300:
|
||||||
|
crypto = asyncio.create_task(update_crypto())
|
||||||
|
if not sec % 10:
|
||||||
|
date = asyncio.create_task(update_time())
|
||||||
|
cpu = asyncio.create_task(update_cpu())
|
||||||
|
mem = asyncio.create_task(update_memory())
|
||||||
|
bat = asyncio.create_task(update_bat())
|
||||||
|
wlp = asyncio.create_task(update_wlp())
|
||||||
|
await display(crypto, cpu, mem, vol, wlp, bat, date)
|
||||||
|
sec += 10
|
||||||
|
sleep(10 - time() % 10)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
asyncio.run(main())
|
@ -40,4 +40,4 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# update sbar
|
# update sbar
|
||||||
kill -35 "$(cat "$HOME/.cache/pidofbar")"
|
kill -34 "$(cat "$HOME/.cache/pidofbar")"
|
||||||
|
Loading…
Reference in New Issue
Block a user