Compare commits

..

No commits in common. "main" and "update-sudo" have entirely different histories.

27 changed files with 633 additions and 2117 deletions

View File

@ -1,649 +0,0 @@
[general]
live_config_reload = true
[bell]
animation = "EaseOutExpo"
duration = 0
[colors]
draw_bold_text_with_bright_colors = true
[colors.bright]
black = "0x666666"
blue = "0x5c5cff"
cyan = "0x00ffff"
green = "0x00ff00"
magenta = "0xff00ff"
red = "0xff0000"
white = "0xffffff"
yellow = "0xffff00"
[colors.dim]
black = "0x333333"
blue = "0x6699cc"
cyan = "0x66cccc"
green = "0x99cc99"
magenta = "0xcc99cc"
red = "0xf2777a"
white = "0xdddddd"
yellow = "0xffcc66"
[colors.normal]
black = "0x000000"
blue = "0x7aa6da"
cyan = "0x3465a4"
green = "0x00cd00"
magenta = "0xcd00cd"
red = "0xcd0000"
white = "0xe5e5e5"
yellow = "0xcdcd00"
[colors.primary]
background = "0x000000"
foreground = "0xeaeaea"
[cursor]
style = "Block"
unfocused_hollow = true
[font]
size = 11.0
[font.glyph_offset]
x = 0
y = 0
[font.normal]
family = "Ubuntu Mono Nerd Font"
[font.offset]
x = 0
y = 0
[[keyboard.bindings]]
command = "clone-terminal"
key = "E"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Paste"
key = "V"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Copy"
key = "C"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Paste"
key = "Paste"
[[keyboard.bindings]]
action = "Copy"
key = "Copy"
[[keyboard.bindings]]
action = "PasteSelection"
key = "Insert"
mods = "Shift"
[[keyboard.bindings]]
action = "ResetFontSize"
key = "Key0"
mods = "Control"
[[keyboard.bindings]]
action = "IncreaseFontSize"
key = "Equals"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001BOH"
key = "Home"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[H"
key = "Home"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOF"
key = "End"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[F"
key = "End"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001B[5;2~"
key = "PageUp"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[5;5~"
key = "PageUp"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[5~"
key = "PageUp"
[[keyboard.bindings]]
chars = "\u001B[6;2~"
key = "PageDown"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[6;5~"
key = "PageDown"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[6~"
key = "PageDown"
[[keyboard.bindings]]
chars = "\u001B[Z"
key = "Tab"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u007F"
key = "Back"
[[keyboard.bindings]]
chars = "\u001B\u007F"
key = "Back"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[2~"
key = "Insert"
[[keyboard.bindings]]
chars = "\u001B[3~"
key = "Delete"
[[keyboard.bindings]]
chars = "\u001B[1;2D"
key = "Left"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5D"
key = "Left"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3D"
key = "Left"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[D"
key = "Left"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOD"
key = "Left"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2C"
key = "Right"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5C"
key = "Right"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3C"
key = "Right"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[C"
key = "Right"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOC"
key = "Right"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2A"
key = "Up"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5A"
key = "Up"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3A"
key = "Up"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[A"
key = "Up"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOA"
key = "Up"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2B"
key = "Down"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5B"
key = "Down"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3B"
key = "Down"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[B"
key = "Down"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOB"
key = "Down"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001BOP"
key = "F1"
[[keyboard.bindings]]
chars = "\u001BOQ"
key = "F2"
[[keyboard.bindings]]
chars = "\u001BOR"
key = "F3"
[[keyboard.bindings]]
chars = "\u001BOS"
key = "F4"
[[keyboard.bindings]]
chars = "\u001B[15~"
key = "F5"
[[keyboard.bindings]]
chars = "\u001B[17~"
key = "F6"
[[keyboard.bindings]]
chars = "\u001B[18~"
key = "F7"
[[keyboard.bindings]]
chars = "\u001B[19~"
key = "F8"
[[keyboard.bindings]]
chars = "\u001B[20~"
key = "F9"
[[keyboard.bindings]]
chars = "\u001B[21~"
key = "F10"
[[keyboard.bindings]]
chars = "\u001B[23~"
key = "F11"
[[keyboard.bindings]]
chars = "\u001B[24~"
key = "F12"
[[keyboard.bindings]]
chars = "\u001B[1;2P"
key = "F1"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;2Q"
key = "F2"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;2R"
key = "F3"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;2S"
key = "F4"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[15;2~"
key = "F5"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[17;2~"
key = "F6"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[18;2~"
key = "F7"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[19;2~"
key = "F8"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[20;2~"
key = "F9"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[21;2~"
key = "F10"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[23;2~"
key = "F11"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[24;2~"
key = "F12"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5P"
key = "F1"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;5Q"
key = "F2"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;5R"
key = "F3"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;5S"
key = "F4"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[15;5~"
key = "F5"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[17;5~"
key = "F6"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[18;5~"
key = "F7"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[19;5~"
key = "F8"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[20;5~"
key = "F9"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[21;5~"
key = "F10"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[23;5~"
key = "F11"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[24;5~"
key = "F12"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;6P"
key = "F1"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;6Q"
key = "F2"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;6R"
key = "F3"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;6S"
key = "F4"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[15;6~"
key = "F5"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[17;6~"
key = "F6"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[18;6~"
key = "F7"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[19;6~"
key = "F8"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[20;6~"
key = "F9"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[21;6~"
key = "F10"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[23;6~"
key = "F11"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[24;6~"
key = "F12"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;3P"
key = "F1"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[1;3Q"
key = "F2"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[1;3R"
key = "F3"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[1;3S"
key = "F4"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[15;3~"
key = "F5"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[17;3~"
key = "F6"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[18;3~"
key = "F7"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[19;3~"
key = "F8"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[20;3~"
key = "F9"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[21;3~"
key = "F10"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[23;3~"
key = "F11"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[24;3~"
key = "F12"
mods = "Super"
[[keyboard.bindings]]
chars = "\u000A"
key = "NumpadEnter"
[[keyboard.bindings]]
chars = "\u002E"
key = "NumpadDecimal"
[[keyboard.bindings]]
chars = "\u002B"
key = "NumpadAdd"
[[keyboard.bindings]]
chars = "\u002D"
key = "NumpadSubtract"
[[keyboard.bindings]]
chars = "\u002A"
key = "NumpadMultiply"
[[keyboard.bindings]]
chars = "\u002F"
key = "NumpadDivide"
[[keyboard.bindings]]
chars = "\u0030"
key = "Numpad0"
[[keyboard.bindings]]
chars = "\u0031"
key = "Numpad1"
[[keyboard.bindings]]
chars = "\u0032"
key = "Numpad2"
[[keyboard.bindings]]
chars = "\u0033"
key = "Numpad3"
[[keyboard.bindings]]
chars = "\u0034"
key = "Numpad4"
[[keyboard.bindings]]
chars = "\u0035"
key = "Numpad5"
[[keyboard.bindings]]
chars = "\u0036"
key = "Numpad6"
[[keyboard.bindings]]
chars = "\u0037"
key = "Numpad7"
[[keyboard.bindings]]
chars = "\u0038"
key = "Numpad8"
[[keyboard.bindings]]
chars = "\u0039"
key = "Numpad9"
[mouse]
hide_when_typing = false
[[mouse.bindings]]
action = "PasteSelection"
mouse = "Middle"
[scrolling]
history = 10000
multiplier = 3
[selection]
save_to_clipboard = false
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
[window]
decorations = "none"
dynamic_title = false
opacity = 0.6
[window.dimensions]
columns = 0
lines = 0
[window.padding]
x = 0
y = 0

501
alacritty.yml Normal file
View File

@ -0,0 +1,501 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator.
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty itself.
#env:
# TERM variable
#
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use 'alacritty' if it is
# available, otherwise 'xterm-256color' is used.
#TERM: xterm-256color
window:
# Window dimensions (changes require restart)
#
# Specified in number of columns/lines, not pixels.
# If both are `0`, this setting is ignored.
dimensions:
columns: 0
lines: 0
# Window padding (changes require restart)
#
# Blank space added around the window in pixels. This padding is not scaled
# by DPI and the specified value is always added at both opposing sides.
padding:
x: 0
y: 0
# Window decorations
#
# Values for `decorations`:
# - full: Borders and title bar
# - none: Neither borders nor title bar
decorations: none
dynamic_title: false
opacity: 0.8
scrolling:
# Maximum number of lines in the scrollback buffer.
# Specifying '0' will disable scrolling.
history: 10000
# Number of lines the viewport will move for every line scrolled when
# scrollback is enabled (history > 0).
multiplier: 3
# Font configuration (changes require restart)
#
# Important font attributes like antialiasing, subpixel aa, and hinting can be
# controlled through fontconfig. Specifically, the following attributes should
# have an effect:
# - hintstyle
# - antialias
# - lcdfilter
# - rgba
#
# For instance, if you wish to disable subpixel antialiasing, you might set the
# rgba property to `none`. If you wish to completely disable antialiasing, you
# can set antialias to `false`.
#
# Please see these resources for more information on how to use fontconfig:
# - https://wiki.archlinux.org/index.php/font_configuration#Fontconfig_configuration
# - file:///usr/share/doc/fontconfig/fontconfig-user.html
font:
# Normal (roman) font face
normal:
# family: Ubuntu Mono Nerd Font
family: custom monospace
# family: Ubuntu Mono derivative Powerline
# family: Inconsolata for Powerline
# The `style` can be specified to pick a specific face.
#style: Regular
# # Bold font face
# bold:
# family: Inconsolata for Powerline
# # The `style` can be specified to pick a specific face.
# #style: Bold
# # Italic font face
# italic:
# family: Inconsolata for Powerline
# # The `style` can be specified to pick a specific face.
# #style: Italic
# Point size
size: 8.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 upwards.
glyph_offset:
x: 0
y: 0
# If `true`, bold text is drawn using the bright color variants.
draw_bold_text_with_bright_colors: true
# Colors (Tomorrow Night Bright)
colors:
# Default colors
primary:
background: '0x000000'
foreground: '0xeaeaea'
# 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: '0x9a9a9a'
#bright_foreground: '0xffffff'
# Cursor colors
#
# Colors which should be used to draw the terminal cursor. If these are unset,
# the cursor color will be the inverse of the cell color.
#cursor:
# text: '0x000000'
# cursor: '0xffffff'
# Normal colors
normal:
black: '0x000000'
red: '0xcd0000'
green: '0x00cd00'
yellow: '0xcdcd00'
blue: '0x7aa6da'
magenta: '0xcd00cd'
cyan: '0x3465a4'
white: '0xe5e5e5'
# Bright colors
bright:
black: '0x666666'
red: '0xff0000'
green: '0x00ff00'
yellow: '0xffff00'
blue: '0x5c5cff'
magenta: '0xff00ff'
cyan: '0x00ffff'
white: '0xffffff'
# Dim colors
#
# If the dim colors are not set, they will be calculated automatically based
# on the `normal` colors.
dim:
black: '0x333333'
red: '0xf2777a'
green: '0x99cc99'
yellow: '0xffcc66'
blue: '0x6699cc'
magenta: '0xcc99cc'
cyan: '0x66cccc'
white: '0xdddddd'
# # Colors (Tomorrow Night Bright)
# colors:
# # Default colors
# primary:
# background: '0xffffff'
# foreground: '0x000000'
#
# # 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: '0x9a9a9a'
# #bright_foreground: '0xffffff'
#
# # Cursor colors
# #
# # Colors which should be used to draw the terminal cursor. If these are unset,
# # the cursor color will be the inverse of the cell color.
# #cursor:
# # text: '0x000000'
# # cursor: '0xffffff'
#
# # Normal colors
# normal:
#
# black: '0x000000'
# red: '0xcd0000'
# green: '0x00cd00'
# yellow: '0xcdcd00'
# blue: '0x0000cd'
# magenta: '0xcd00cd'
# cyan: '0x00cdcd'
# white: '0xfaebd7'
#
# # Bright colors
# bright:
# black: '0x000000'
# red: '0xcd0000'
# green: '0x00cd00'
# yellow: '0xcdcd00'
# blue: '0x0000cd'
# magenta: '0xcd00cd'
# cyan: '0x00cdcd'
# white: '0xfaebd7'
#
# # Dim colors
# #
# # If the dim colors are not set, they will be calculated automatically based
# # on the `normal` colors.
# dim:
# black: '0x333333'
# red: '0xf2777a'
# green: '0x99cc99'
# yellow: '0xffcc66'
# blue: '0x6699cc'
# magenta: '0xcc99cc'
# cyan: '0x66cccc'
# white: '0xdddddd'
#
# background_opacity: 1.0
# Visual Bell
#
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
# rung, the terminal background will be set to white and transition back to the
# default background color. You can control the rate of this transition by
# setting the `duration` property (represented in milliseconds). You can also
# configure the transition function by setting the `animation` property.
#
# Values for `animation`:
# - Ease
# - EaseOut
# - EaseOutSine
# - EaseOutQuad
# - EaseOutCubic
# - EaseOutQuart
# - EaseOutQuint
# - EaseOutExpo
# - EaseOutCirc
# - Linear
#
# Specifying a `duration` of `0` will disable the visual bell.
bell:
animation: EaseOutExpo
duration: 0
# Mouse bindings
#
# Available fields:
# - mouse
# - action
# - mods (optional)
#
# Values for `mouse`:
# - Middle
# - Left
# - Right
# - Numeric identifier such as `5`
#
# All available `mods` and `action` values are documented in the key binding
# section.
mouse_bindings:
- { mouse: Middle, action: PasteSelection }
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
selection:
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
# When set to `true`, selected text will be copied to both the primary and
# the selection clipboard. Otherwise, it will only be copied to the selection
# clipboard.
save_to_clipboard: false
cursor:
# Cursor style
#
# Values for 'style':
# - ▇ Block
# - _ Underline
# - | Beam
style: Block
# If this is `true`, the cursor will be rendered as a hollow box when the
# window is not focused.
unfocused_hollow: true
# 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.
#shell:
# program: /bin/bash
# args:
# - --login
# Key bindings
#
# Key bindings are specified as a list of objects. Each binding will specify
# a key and modifiers required to trigger it, terminal modes where the binding
# is applicable, and what should be done when the key binding fires. It can
# either send a byte sequnce to the running application (`chars`), execute
# a predefined action (`action`) or fork and execute a specified command plus
# arguments (`command`).
#
# Example:
# `- { key: V, mods: Command, action: Paste }`
#
# Available fields:
# - key
# - mods (optional)
# - chars | action | command (exactly one required)
# - mode (optional)
#
# Values for `key`:
# - `A` -> `Z`
# - `F1` -> `F12`
# - `Key1` -> `Key0`
#
# A full list with available key codes can be found here:
# https://docs.rs/glutin/*/glutin/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`
#
# Values for `mods`:
# - Command
# - Control
# - Shift
# - Alt
#
# Multiple `mods` can be combined using `|` like this: `mods: Control|Shift`.
# Whitespace and capitalization is relevant and must match the example.
#
# Values for `chars`:
# 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.
#
# Values for `action`:
# - Paste
# - PasteSelection
# - Copy
# - IncreaseFontSize
# - DecreaseFontSize
# - ResetFontSize
# - ScrollPageUp
# - ScrollPageDown
# - ScrollToTop
# - ScrollToBottom
# - ClearHistory
# - Hide
# - Quit
#
# Values for `command`:
# The `command` field must be a map containing a `program` string and
# an `args` array of command line parameter strings.
#
# Example:
# `command: { program: "alacritty", args: ["-e", "vttest"] }`
#
# Values for `mode`:
# - ~AppCursor
# - AppCursor
# - ~AppKeypad
# - AppKeypad
key_bindings:
# Custom
- { key: E, mods: Control|Shift, action: SpawnNewInstance }
# Already present
- { key: V, mods: Control|Shift, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: Paste, action: Paste }
- { key: Copy, action: Copy }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Home, chars: "\x1bOH", mode: AppCursor }
- { key: Home, chars: "\x1b[H", mode: ~AppCursor }
- { key: End, chars: "\x1bOF", mode: AppCursor }
- { key: End, chars: "\x1b[F", mode: ~AppCursor }
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~" }
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" }
- { key: PageUp, chars: "\x1b[5~" }
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~" }
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" }
- { key: PageDown, chars: "\x1b[6~" }
- { key: Tab, mods: Shift, chars: "\x1b[Z" }
- { key: Back, chars: "\x7f" }
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
- { key: Insert, chars: "\x1b[2~" }
- { key: Delete, chars: "\x1b[3~" }
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
- { key: Left, chars: "\x1bOD", mode: AppCursor }
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
- { key: Right, chars: "\x1bOC", mode: AppCursor }
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
- { key: Up, chars: "\x1bOA", mode: AppCursor }
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
- { key: Down, chars: "\x1bOB", mode: AppCursor }
- { key: F1, chars: "\x1bOP" }
- { key: F2, chars: "\x1bOQ" }
- { key: F3, chars: "\x1bOR" }
- { key: F4, chars: "\x1bOS" }
- { key: F5, chars: "\x1b[15~" }
- { key: F6, chars: "\x1b[17~" }
- { key: F7, chars: "\x1b[18~" }
- { key: F8, chars: "\x1b[19~" }
- { key: F9, chars: "\x1b[20~" }
- { key: F10, chars: "\x1b[21~" }
- { key: F11, chars: "\x1b[23~" }
- { key: F12, chars: "\x1b[24~" }
- { key: F1, mods: Shift, chars: "\x1b[1;2P" }
- { key: F2, mods: Shift, chars: "\x1b[1;2Q" }
- { key: F3, mods: Shift, chars: "\x1b[1;2R" }
- { key: F4, mods: Shift, chars: "\x1b[1;2S" }
- { key: F5, mods: Shift, chars: "\x1b[15;2~" }
- { key: F6, mods: Shift, chars: "\x1b[17;2~" }
- { key: F7, mods: Shift, chars: "\x1b[18;2~" }
- { key: F8, mods: Shift, chars: "\x1b[19;2~" }
- { key: F9, mods: Shift, chars: "\x1b[20;2~" }
- { key: F10, mods: Shift, chars: "\x1b[21;2~" }
- { key: F11, mods: Shift, chars: "\x1b[23;2~" }
- { key: F12, mods: Shift, chars: "\x1b[24;2~" }
- { key: F1, mods: Control, chars: "\x1b[1;5P" }
- { key: F2, mods: Control, chars: "\x1b[1;5Q" }
- { key: F3, mods: Control, chars: "\x1b[1;5R" }
- { key: F4, mods: Control, chars: "\x1b[1;5S" }
- { key: F5, mods: Control, chars: "\x1b[15;5~" }
- { key: F6, mods: Control, chars: "\x1b[17;5~" }
- { key: F7, mods: Control, chars: "\x1b[18;5~" }
- { key: F8, mods: Control, chars: "\x1b[19;5~" }
- { key: F9, mods: Control, chars: "\x1b[20;5~" }
- { key: F10, mods: Control, chars: "\x1b[21;5~" }
- { key: F11, mods: Control, chars: "\x1b[23;5~" }
- { key: F12, mods: Control, chars: "\x1b[24;5~" }
- { key: F1, mods: Alt, chars: "\x1b[1;6P" }
- { key: F2, mods: Alt, chars: "\x1b[1;6Q" }
- { key: F3, mods: Alt, chars: "\x1b[1;6R" }
- { key: F4, mods: Alt, chars: "\x1b[1;6S" }
- { key: F5, mods: Alt, chars: "\x1b[15;6~" }
- { key: F6, mods: Alt, chars: "\x1b[17;6~" }
- { key: F7, mods: Alt, chars: "\x1b[18;6~" }
- { key: F8, mods: Alt, chars: "\x1b[19;6~" }
- { key: F9, mods: Alt, chars: "\x1b[20;6~" }
- { key: F10, mods: Alt, chars: "\x1b[21;6~" }
- { key: F11, mods: Alt, chars: "\x1b[23;6~" }
- { key: F12, mods: Alt, chars: "\x1b[24;6~" }
- { key: F1, mods: Super, chars: "\x1b[1;3P" }
- { key: F2, mods: Super, chars: "\x1b[1;3Q" }
- { key: F3, mods: Super, chars: "\x1b[1;3R" }
- { key: F4, mods: Super, chars: "\x1b[1;3S" }
- { key: F5, mods: Super, chars: "\x1b[15;3~" }
- { key: F6, mods: Super, chars: "\x1b[17;3~" }
- { key: F7, mods: Super, chars: "\x1b[18;3~" }
- { key: F8, mods: Super, chars: "\x1b[19;3~" }
- { key: F9, mods: Super, chars: "\x1b[20;3~" }
- { key: F10, mods: Super, chars: "\x1b[21;3~" }
- { key: F11, mods: Super, chars: "\x1b[23;3~" }
- { key: F12, mods: Super, chars: "\x1b[24;3~" }

View File

@ -1,19 +0,0 @@
#!/usr/bin/env bash
# Extract parent window uuid
# On hyprland
hyprctl monitors > /dev/null 2>&1
if [ $? -eq 0 ]; then
WM_NAME=$(hyprctl activewindow | grep title | cut -d ':' -f 2 | tr -d ' ')
else
WINDOW_ID=$(xdotool getactivewindow)
WM_NAME=$(xprop -id $WINDOW_ID WM_NAME | cut -d '"' -f 2)
fi
# Generate new uuid for new terminal
uuid=$(uuidgen)
alacritty --title $uuid -e sh -c "TERMINAL_UUID=$uuid PARENT_TERMINAL=$WM_NAME exec $SHELL"

View File

@ -4,10 +4,5 @@ if [ $# -eq 0 ]; then
xclip -selection c
else
file_type=$(file -b --mime-type "$1")
if [ "$file_type" = "image/jpg" ] || [ "$file_type" = "image/jpeg" ]; then
convert $1 png:- | xclip -selection c -t image/png
else
xclip -selection c -t $file_type < $1
fi
xclip -selection c -t $file_type < $1
fi

View File

@ -1,4 +0,0 @@
#!/usr/bin/env bash
UUID=$(uuidgen)
alacritty --title $UUID -e sh -c "TERMINAL_UUID=$UUID exec $SHELL"

View File

@ -1,9 +0,0 @@
#!/usr/bin/env bash
# auto fix issues with my scanner
input="$3"
color=$(magick "$input" -format "%[hex:u.p{100,-1}]" info:)
tmp=$(mktemp --suffix=.png)
magick "$input" -page +0-100 -background \#$color -flatten -auto-level $tmp
magick $tmp -quality 100 "${input%.*}.pdf"
rm -rf $tmp "$input"

View File

@ -1,3 +0,0 @@
#!/usr/bin/env bash
xclip -sel clip -o | sed -e 's/^/> /' | xclip -sel clip

View File

@ -189,31 +189,18 @@ update-system() {
fi
fi
command -v snap > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo $password | sudo -Sp "" snap refresh
fi
# Archlinux based systems
command -v paru > /dev/null 2>&1
command -v yay > /dev/null 2>&1
if [ $? -eq 0 ]; then
paru -Syu --noconfirm
yay -Syu --noconfirm
yay -Syua --noconfirm
else
command -v yay > /dev/null 2>&1
command -v pacman > /dev/null 2>&1
if [ $? -eq 0 ]; then
yay -Syu --noconfirm
yay -Syua --noconfirm
else
command -v pacman > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo $password | sudo -Sp "" pacman -Syu --noconfirm
fi
echo $password | sudo -Sp "" pacman -Syu --noconfirm
fi
fi
@ -244,31 +231,21 @@ update-rust() {
echo -e "\033[32;1m=== Updating rust ===\033[0m"
rustup update
cargo install-update --help > /dev/null 2>&1
# Program to update cargo programs is not installed
if [ $? -ne 0 ]; then
echo -e "\033[33;1m=== To allow updating rust packages, run \`cargo install cargo-update\`===\033[0m"
fi
# If the user has no root, and if he doesn't have openssl, we won't install cargo update.
# Before running cargo update, we check again that it is installed.
cargo install-update --help > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo -e "\033[32;1m=== Updating rust packages ===\033[0m"
IFS=$'\n'
for line in $(cargo install --list); do
if [[ $line == " "* ]] || [[ $line == "\t"* ]]; then
continue
fi
if [[ $line == *"("* ]]; then
crate=$(echo $line | cut -d ' ' -f 1)
full_repo=$(echo $line | cut -d '(' -f 2 | cut -d ')' -f 1)
repo=$(echo $full_repo | cut -d '#' -f 1)
current_commit=$(echo $full_repo | cut -d '#' -f 2)
latest_commit=$(git ls-remote $repo | head -n 1 | cut -d $'\t' -f 1)
if [[ $latest_commit == ${current_commit}* ]]; then
echo -e " \x1b[32;1mIgnored\x1b[0m package \`$crate\` is already installed"
else
cargo install --git $repo
fi
else
cargo install $(echo $line | cut -d ' ' -f 1)
fi
done
cargo install-update -ag
fi
local seconds=$((`date +%s` - $start))
@ -378,11 +355,6 @@ update-dotfiles() {
cd ~/.config/awesome/ && git pull
fi
if [ -d ~/.config/nushell/.git ]; then
echo -e "\033[32;1m=== Updating nushell config ===\033[0m"
cd ~/.config/nushell/ && git pull
fi
cd $current_dir
local seconds=$((`date +%s` - $start))
@ -512,7 +484,7 @@ main() {
fi
local start=`date +%s`
echo -e "\033[32;1m=== Starting full update of $(whoami)@$(hostname) ===\033[0m"
echo -e "\033[32;1m=== Starting full update ===\033[0m"
# Update the system
_check_running

View File

@ -1,7 +1,4 @@
{
"inlayHint": {
"enable": false
},
"languageserver": {
"rust": {
"command": "rustup",
@ -13,15 +10,6 @@
"command": "elm-language-server",
"filetypes": ["elm"],
"rootPatterns": ["elm.json"]
},
"python": {
"command": "pylsp",
"filetypes": ["python"]
},
"typscript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"filetypes": ["typescript"]
}
}
}

3
hypr/.gitignore vendored
View File

@ -1,3 +0,0 @@
.stat.txt
monitors.conf
exec-once.conf

View File

@ -1,327 +0,0 @@
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hyprland.org/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
source = ~/.config/dotfiles/hypr/monitors.conf
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = new-terminal
$fileManager = dolphin
$menu = rofi -show drun -theme ~/.config/rofi/theme.rasi
$hyprscript = ~/.config/dotfiles/hypr/hyprscript
$social = firefox "http://jdb.localhost/todo.html" "https://web.telegram.org" "https://web.whatsapp.com/" "https://discord.com/app" "https://nuage.polymny.studio/index.php/apps/calendar/"
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
exec-once = $hyprscript stat
exec-once = hyprpaper
exec-once = nm-applet
exec-once = flameshot
exec-once = blueberry-tray
exec-once = nextcloud --background
exec-once = [workspace special:a_social silent] $social
exec-once = [workspace special:b_mail silent] thunderbird
exec-once = [workspace special:c_terminal silent] alacritty
source = ~/.config/dotfiles/hypr/exec-once.conf
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,18
env = HYPRCURSOR_SIZE,18
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 0
gaps_out = 0
border_size = 1
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(ffffffaa)
col.inactive_border = rgba(ffffff22)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 0
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = false
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
}
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# Borders only on alacritty
windowrule = noborder, class:negative:Alacritty
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
force_split = 2 # split to the right / bottom
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
focus_on_activate = true
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = fr
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
numlock_by_default = true
touchpad {
natural_scroll = false,
tap-to-click = false,
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
workspace_swipe = false
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, return, exec, $terminal
bind = $mainMod, A, exec, firefox
bind = $mainMod SHIFT, A, exec, firefox -private-window
bind = $mainMod SHIFT, C, killactive,
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, J, exec, $hyprscript focusnextmonitor
bind = $mainMod, O, exec, $hyprscript movewindow
bind = $mainMod, Tab, cyclenext
bind = $mainMod CTRL, R, exec, $hyprscript reload
bind = $mainMod SHIFT, Q, exec, hyprctl dispatch exit
bind = $mainMod, Z, exec, $social
bind = $mainMod, E, exec, firefox "ext+container:name=Yuzzit&url=https://yip.atlassian.net/wiki/spaces/Y/overview" "ext+container:name=Yuzzit&url=https://yip.atlassian.net/" "ext+container:name=Yuzzit&url=https://app.slack.com/client/T03UFFGJK/D07KS0S1LDT" "ext+container:name=Yuzzit&url=https://app.gather.town/app/bZRkf3gh7MIximOa/ytopenspace"
bind = $mainMod, C, exec, alacritty -e numbat
bind = $mainMod, P, exec, pavucontrol
bind = $mainMod, B, exec, blueberry
bind = $mainMod SHIFT, M, exec, sleep 0.5s && wtype "thomas@forgione.fr"
bind = $mainMod SHIFT, code:48, exec, sleep 0.5s && wtype "thomas@polymny.studio"
# Move focus with mainMod + arrow keys
# bind = $mainMod, left, movefocus, l
# bind = $mainMod, right, movefocus, r
# bind = $mainMod, up, movefocus, u
# bind = $mainMod, down, movefocus, d
bind = $mainMod, left, exec, $hyprscript workspace previous
bind = $mainMod, right, exec, $hyprscript workspace next
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, code:10, exec, $hyprscript workspace 1
bind = $mainMod, code:11, exec, $hyprscript workspace 2
bind = $mainMod, code:12, exec, $hyprscript workspace 3
bind = $mainMod, code:13, exec, $hyprscript workspace 4
bind = $mainMod, code:14, exec, $hyprscript workspace 5
bind = $mainMod, code:15, exec, $hyprscript workspace 6
bind = $mainMod, code:16, exec, $hyprscript workspace 7
bind = $mainMod, code:17, exec, $hyprscript workspace 8
bind = $mainMod, code:18, exec, $hyprscript workspace 9
bind = $mainMod, code:19, exec, $hyprscript workspace 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, code:10, exec, $hyprscript movetoworkspace 1
bind = $mainMod SHIFT, code:11, exec, $hyprscript movetoworkspace 2
bind = $mainMod SHIFT, code:12, exec, $hyprscript movetoworkspace 3
bind = $mainMod SHIFT, code:13, exec, $hyprscript movetoworkspace 4
bind = $mainMod SHIFT, code:14, exec, $hyprscript movetoworkspace 5
bind = $mainMod SHIFT, code:15, exec, $hyprscript movetoworkspace 6
bind = $mainMod SHIFT, code:16, exec, $hyprscript movetoworkspace 7
bind = $mainMod SHIFT, code:17, exec, $hyprscript movetoworkspace 8
bind = $mainMod SHIFT, code:18, exec, $hyprscript movetoworkspace 9
bind = $mainMod SHIFT, code:19, exec, $hyprscript movetoworkspace 10
# Screenshot
bind = , Print, exec, grim -g "$(slurp -d)" - | wl-copy
# Example special workspace (scratchpad)
bind = $mainMod, Q, togglespecialworkspace, a_social
bind = $mainMod, S, togglespecialworkspace, b_mail
bind = $mainMod, D, togglespecialworkspace, c_terminal
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 2%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 2%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
# Nvidia config
env = LIBVA_DRIVER_NAME,nvidia
env = __GLX_VENDOR_LIBRARY_NAME,nvidia

View File

@ -1,2 +0,0 @@
preload = /home/thomas/.config/awesome/Wallpapers/cobra-kai-1.png
wallpaper = , /home/thomas/.config/awesome/Wallpapers/cobra-kai-1.png

View File

@ -1,286 +0,0 @@
#!/usr/bin/env python
import json
import os
import os.path
import subprocess
import sys
import typing
os.chdir(os.path.expanduser('~/.config/dotfiles/hypr'))
bars = "_▂▃▄▅▆▇█"
batteries = "󰂎󰁺󰁻󰁼󰁽󰁾󰁿󰂀󰂁󰂁󰁹"
batteries_charging = "󰢟󰢜󰂆󰂇󰂈󰢝󰂉󰢞󰂊󰂋󰂅"
class Monitor:
"""
A monitor on which many workspaces can appear.
"""
def __init__(self, id: int, name: str, special_workspace: typing.Optional['Workspace']):
"""
Constructs a monitor from its id and its name.
"""
self.id = id
self.name = name
self.special_workspace = special_workspace
def __eq__(self, other):
"""
Returns true if the monitors are the same.
"""
self.id == other.id
@staticmethod
def active(monitors: list['Monitor']) -> 'Monitor':
"""
Returns the active monitor.
"""
proc = subprocess.run(['hyprctl', 'activeworkspace', '-j'], capture_output=True)
result = json.loads(proc.stdout)
return next((monitor for monitor in monitors if monitor.id == result['monitorID']))
@staticmethod
def all() -> list['Monitor']:
"""
Returns the list of available monitors.
"""
monitors: list['Monitor'] = []
proc = subprocess.run(['hyprctl', 'monitors', '-j'], capture_output=True)
result = json.loads(proc.stdout)
for mon in result:
if mon['specialWorkspace']['id'] == 0:
monitors.append(Monitor(mon['id'], mon['name'], None))
else:
special_workspace = Workspace(mon['specialWorkspace']['id'], mon['specialWorkspace']['name'])
monitors.append(Monitor(mon['id'], mon['name'], special_workspace))
return monitors
def previous(self, monitors: list['Monitor'], move: bool = False):
"""
Moves the focus to the previous monitor.
Params:
move: whether you want to move the active window to the new monitor.
"""
mon = monitors[(monitors.index(self) - 1) % len(monitors)]
if move:
subprocess.run(['hyprctl', 'dispatch', 'movewindow', 'mon:' + str(mon.id)])
else:
subprocess.run(['hyprctl', 'dispatch', 'focusmonitor', str(mon.id)])
def next(self, monitors: list['Monitor'], move: bool = False):
"""
Moves the focus to the next monitor.
Params:
move: whether you want to move the active window to the new monitor.
"""
mon = monitors[(monitors.index(self) + 1) % len(monitors)]
if move:
subprocess.run(['hyprctl', 'dispatch', 'movewindow', 'mon:' + str(mon.name)])
else:
subprocess.run(['hyprctl', 'dispatch', 'focusmonitor', str(mon.name)])
class Workspace:
"""
A workspace bound to a monitor.
Workspaces with id from 10 * n + k belongs to the same monitor for k in [1, 10].
"""
def __init__(self, id: int, name: str):
"""
Constructs a workspace from its id and its name.
"""
self.id = id
self.name = name
def is_special(self) -> bool:
"""
Returns true if the workspace is a magic workspace.
"""
return self.id < 0
def special_name(self) -> typing.Optional[str]:
"""
Returns the part after the : if the workspace is special, none otherwise.
"""
if self.is_special():
return ':'.join(self.name.split(':')[1:])
else:
return None
@staticmethod
def active() -> 'Workspace':
"""
Returns the active workspace.
"""
proc = subprocess.run(['hyprctl', 'activeworkspace', '-j'], capture_output=True)
result = json.loads(proc.stdout)
return Workspace(result['id'], result['name'])
def nth(self, n: int, monitor: Monitor, move: bool = False):
"""
Goes to the nth workspace on the same monitor as the current workspace.
Params:
n: workspace to go to, between 1 and 10.
monitor: active monitor.
move: whether you want to move the active window to the new workspace.
"""
new_id = (self.id - 1) // 10 * 10 + n
current = monitor.special_workspace
if current is not None:
subprocess.run(['hyprctl', 'dispatch', 'togglespecialworkspace', current.special_name()])
subprocess.run(['hyprctl', 'dispatch', 'movetoworkspace' if move else 'workspace', str(new_id)])
def previous(self, monitor: Monitor, move: bool = False):
"""
Goes to the previous workspace on the same monitor, or the last if we're on the first.
Params:
monitor: active monitor.
move: whether you want to move the active window to the new workspace.
"""
new_id = self.id - 1
if new_id % 10 == 0:
new_id += 10
current = monitor.special_workspace
if current is not None:
subprocess.run(['hyprctl', 'dispatch', 'togglespecialworkspace', current.special_name()])
subprocess.run(['hyprctl', 'dispatch', 'movetoworkspace' if move else 'workspace', str(new_id)])
def next(self, monitor: Monitor, move: bool = False):
"""
Goes to the next workspace on the same monitor, or the first if we're on the last.
Params:
monitor: active monitor.
move: whether you want to move the active window to the new workspace.
"""
new_id = self.id + 1
if new_id % 10 == 1:
new_id -= 10
current = monitor.special_workspace
if current is not None:
subprocess.run(['hyprctl', 'dispatch', 'togglespecialworkspace', current.special_name()])
subprocess.run(['hyprctl', 'dispatch', 'movetoworkspace' if move else 'workspace', str(new_id)])
def to_bar(x):
return bars[round((len(bars) - 1) * x / 100)]
def monitor_stats():
"""
Monitors CPU and MEM usage and prints info in file.
"""
try:
import psutil
except ModuleNotFoundError:
print('Stats requires psutil (run `pip install psutil`)', file=sys.stderr)
sys.exit(1)
cpu_values = [0] * 10
mem_values = [0] * 10
while True:
cpu_percent = psutil.cpu_percent(interval=2)
mem_percent = psutil.virtual_memory().percent
battery = psutil.sensors_battery()
for i in range(len(cpu_values) - 1):
cpu_values[i] = cpu_values[i+1]
mem_values[i] = mem_values[i+1]
cpu_values[-1] = cpu_percent
mem_values[-1] = mem_percent
if battery is None:
battery_json = '{"text": "", "class": "hidden"}'
else:
battery_index = round(battery.percent / 10)
battery_icon = batteries_charging[battery_index] if battery.power_plugged else batteries[battery_index]
if battery.power_plugged:
battery_class = 'charging'
elif battery.percent < 30.0:
battery_class = 'low'
elif battery.percent < 15.0:
battery_class = 'critical'
else:
battery_class = None
battery_json = f', "class": "{battery_class}"' if battery_class else ''
battery_json = '{"text": "' + battery_icon + ' ' + "% 4.0f" % battery.percent + '%"' + battery_json + '}'
with open('.stat.txt', 'w') as f:
f.write(
' ' + ''.join([to_bar(x) for x in cpu_values]) + ' ' + "% 5.1f" % cpu_percent + '%\n' +
' ' + ''.join([to_bar(x) for x in mem_values]) + ' ' + "% 5.1f" % mem_percent + '%\n' +
battery_json
)
def main():
if len(sys.argv) < 2:
return
if sys.argv[1] == 'workspace' or sys.argv[1] == 'movetoworkspace':
monitors = Monitor.all()
monitor = Monitor.active(monitors)
workspace = Workspace.active()
move = sys.argv[1] == 'movetoworkspace'
if sys.argv[2] == 'next':
workspace.next(monitor, move)
elif sys.argv[2] == 'previous':
workspace.previous(monitor, move)
else:
new_workspace = int(sys.argv[2])
workspace.nth(new_workspace, monitor, move)
elif sys.argv[1] in ['movewindow', 'focusnextmonitor', 'focuspreviousmonitor']:
monitors = Monitor.all()
monitor = Monitor.active(monitors)
if sys.argv[1] == 'movewindow':
monitor.next(monitors, True)
elif sys.argv[1] == 'focusnextmonitor':
monitor.next(monitors)
elif sys.argv[1] == 'focuspreviousmonitor':
monitor.previous(monitors)
elif sys.argv[1] == 'reload':
subprocess.run(['systemctl', 'restart', 'waybar', '--user'])
elif sys.argv[1] == 'stat':
monitor_stats()
else:
print(f'Command not found: {sys.argv[1]}', file=sys.stderr)
sys.exit(1)
if __name__ == '__main__':
main()

View File

@ -1,17 +0,0 @@
$mainMonitorName = eDP-1
$mainMonitorResolution = 1920x1080@59.99900
$mainMonitorPosition = 0x0
$mainMonitorScale = 1
workspace = 11, monitor:$mainMonitorName, default:true
workspace = 12, monitor:$mainMonitorName
workspace = 13, monitor:$mainMonitorName
workspace = 14, monitor:$mainMonitorName
workspace = 15, monitor:$mainMonitorName
workspace = 16, monitor:$mainMonitorName
workspace = 17, monitor:$mainMonitorName
workspace = 18, monitor:$mainMonitorName
workspace = 19, monitor:$mainMonitorName
workspace = 20, monitor:$mainMonitorName
monitor = $mainMonitorName, $mainMonitorResolution, $mainMonitorPosition, $mainMonitorScale

View File

@ -13,7 +13,6 @@ Plug 'vim-airline/vim-airline-themes'
Plug 'https://gitea.tforgione.fr/tforgione/peach.git'
Plug 'scrooloose/nerdtree'
Plug 'tpope/vim-abolish'
Plug 'lambdalisue/suda.vim'
" Language specific plugins
@ -29,8 +28,8 @@ Plug 'cespare/vim-toml'
" Pug
Plug 'digitaltoad/vim-pug'
" Typst
Plug 'kaarmu/typst.vim'
" Spandex
Plug 'rust-spandex/spandex.vim'
call plug#end()
@ -47,9 +46,6 @@ set tabstop=4
set shiftwidth=4
set autoindent
set tw=120
if !empty($NVIM_TEXT_WIDTH)
execute 'set tw=' . $NVIM_TEXT_WIDTH
endif
" }}}
" UI CONFIG #########################################################{{{
@ -83,9 +79,6 @@ elseif executable('make')
vnoremap <silent><F12> :wa \|!make -p %:p<CR>
endif
" SudaWrite with W
command W SudaWrite
" Escape on F1
map <F1> <Esc>
imap <F1> <Esc>
@ -95,10 +88,8 @@ let g:airline_powerline_fonts = 1
let g:airline#extensions#branch#format = 1
let g:airline_theme='dark'
set t_Co=256
set textwidth=0
" Set textwidth for latex
" autocmd FileType tex set textwidth=79
autocmd FileType markdown set textwidth=120
" }}}
" COLOR #############################################################{{{
@ -110,9 +101,6 @@ catch
endtry
highlight BadWhitespace ctermbg=red guibg=red
match BadWhitespace / \| \+\t/
" Use html for tera files
autocmd BufNewFile,BufRead *.tera set ft=html
" }}}
" SEARCHING #########################################################{{{
@ -224,7 +212,3 @@ inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
" CUSTOM THINGS DEPENDING ON ENV ####################################{{{
let g:rustfmt_autosave = 1
" Apprently some people don't use vim
" set autoread | au CursorHold * checktime | call feedkeys("lh")

View File

@ -1,216 +0,0 @@
local Plug = vim.fn['plug#']
-- PLUGINS
vim.call('plug#begin')
-- General plugins
Plug('vim-airline/vim-airline')
Plug('vim-airline/vim-airline-themes')
Plug('tpope/vim-abolish')
Plug('lambdalisue/suda.vim')
Plug('https://gitea.tforgione.fr/tforgione/peach.git')
-- Language specific plugins
Plug('rust-lang/rust.vim')
Plug('ElmCast/elm-vim')
Plug('cespare/vim-toml')
Plug('kaarmu/typst.vim')
vim.call('plug#end')
-- INDENTATION
vim.opt.expandtab = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.autoindent = true
vim.opt.textwidth = 120
-- UI
vim.opt.number = true
vim.opt.showcmd = true
vim.opt.wildmenu = true
vim.opt.lazyredraw = true
vim.opt.encoding = 'utf8'
vim.opt.clipboard = 'unnamedplus'
vim.opt.updatecount = 50
vim.opt.mouse = 'a'
vim.opt.guicursor = nil
vim.opt.updatetime = 300
vim.opt.list = true
vim.opt.listchars = { trail = '·', tab = ' ', nbsp = '¬' }
-- Auto remove trailing spaces
vim.api.nvim_create_autocmd({'BufWritePre'}, {
pattern = {'*'},
callback = function(ev)
vim.cmd('%s/\\s\\+$//e')
end
})
-- COLOR --
pcall(vim.cmd.colorscheme, 'peach')
vim.cmd.highlight({'BadWhitespace', 'ctermbg=red', 'guibg=red'})
vim.g.airline_powerline_fonts = 1
vim.g.airline_theme = 'dark'
-- SEARCHING
vim.opt.title = true
vim.opt.showmatch = true
vim.opt.hlsearch = true
vim.opt.incsearch = true
-- BACKUPS
vim.opt.undofile = true
vim.opt.undolevels = 1000
vim.opt.undoreload = 10000
vim.opt.undodir = os.getenv('HOME') .. '/.nvim/undo'
vim.g.backup_dir = os.getenv('HOME') .. '/.nvim/backups'
vim.api.nvim_create_autocmd({'BufWritePost'}, {
pattern = {'*'},
callback = function(ev)
local backup_path = vim.g.backup_dir .. '/' .. vim.api.nvim_buf_get_name(0):gsub('/', '\\%%')
vim.cmd('silent w! ' .. backup_path)
end
})
-- LSPs
-- Config
vim.opt.completeopt = { 'menuone', 'noselect' }
vim.diagnostic.config {
signs = {
text = {
[vim.diagnostic.severity.ERROR] = '',
[vim.diagnostic.severity.WARN] = '',
[vim.diagnostic.severity.HINT] = '',
},
color = {},
},
float = {
header = false,
border = 'rounded',
}
}
-- Show diagnostics on hover
vim.api.nvim_create_autocmd({'CursorHold'}, {
pattern = {'*'},
callback = function(ev)
vim.diagnostic.open_float()
end
})
-- Shortcuts for mapping shortcuts
local map = function(type, key, value)
vim.api.nvim_buf_set_keymap(0, type, key, value, { noremap = true, silent = true });
end
-- Compile on F12
vim.keymap.set('n', '<F12>', function(e)
vim.cmd('wa')
vim.cmd('!mars -p %:p')
end, { silent = true, expr = true })
vim.keymap.set('i', '<F12>', function(e)
vim.cmd('wa')
vim.cmd('!mars -p %:p')
end, { silent = true, expr = true })
vim.keymap.set('i', '<F12>', function(e)
vim.cmd('wa')
vim.cmd('!mars -p %:p')
end, { silent = true, expr = true })
-- Autocomplete with tab
vim.keymap.set('v', '<Tab>', function()
if vim.fn.pumvisible() == 1 then
return '<C-n>'
else
return '<Tab>'
end
end, { silent = true, expr = true })
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
-- Enable auto-completion. Note: Use CTRL-Y to select an item.
if client:supports_method('textDocument/completion') then
-- Trigger autocompletion on EVERY keypress. May be slow!
local chars = {}; for i = 32, 126 do table.insert(chars, string.char(i)) end
client.server_capabilities.completionProvider.triggerCharacters = chars
vim.lsp.completion.enable(true, client.id, args.buf, {
autotrigger = true,
convert = function(item)
return { abbr = item.label:gsub('%b()', '') }
end,
})
end
-- Auto-format on save.
if not client:supports_method('textDocument/willSaveWaitUntil') and client:supports_method('textDocument/formatting') then
vim.api.nvim_create_autocmd('BufWritePre', {
group = vim.api.nvim_create_augroup('my.lsp', {clear=false}),
buffer = args.buf,
callback = function()
vim.lsp.buf.format({ bufnr = args.buf, id = client.id, timeout_ms = 1000 })
end,
})
end
-- Don't use lsp to manage colorscheme
client.server_capabilities.semanticTokensProvider = nil
-- Some nice shortcuts
map('n','gD','<cmd>lua vim.lsp.buf.declaration()<CR>')
map('n','gd','<cmd>lua vim.lsp.buf.definition()<CR>')
map('n','K','<cmd>lua vim.lsp.buf.hover()<CR>')
map('n','gr','<cmd>lua vim.lsp.buf.references()<CR>')
map('n','gs','<cmd>lua vim.lsp.buf.signature_help()<CR>')
map('n','gi','<cmd>lua vim.lsp.buf.implementation()<CR>')
map('n','gt','<cmd>lua vim.lsp.buf.type_definition()<CR>')
map('n','<leader>gw','<cmd>lua vim.lsp.buf.document_symbol()<CR>')
map('n','<leader>gW','<cmd>lua vim.lsp.buf.workspace_symbol()<CR>')
map('n','<leader>ah','<cmd>lua vim.lsp.buf.hover()<CR>')
map('n','<leader>af','<cmd>lua vim.lsp.buf.code_action()<CR>')
map('n','<leader>ee','<cmd>lua vim.lsp.util.show_line_diagnostics()<CR>')
map('n','<leader>rn','<cmd>lua vim.lsp.buf.rename()<CR>')
map('n','<leader>=', '<cmd>lua vim.lsp.buf.formatting()<CR>')
map('n','<leader>ai','<cmd>lua vim.lsp.buf.incoming_calls()<CR>')
map('n','<leader>ao','<cmd>lua vim.lsp.buf.outgoing_calls()<CR>')
end,
});
-- Rust
vim.lsp.config['rust'] = {
cmd = { 'rustup', 'run', 'stable', 'rust-analyzer' },
filetypes = { 'rust' },
root_markers = { 'Cargo.toml' },
}
vim.lsp.enable('rust')
-- Elm
vim.lsp.config['elm'] = {
cmd = { 'elm-language-server' },
filetypes = { 'elm' },
root_markers = { 'elm.json' },
}
vim.lsp.enable('elm')
-- Python
vim.lsp.config['python'] = {
cmd = { 'pylsp' },
filetypes = { 'python' },
}
vim.lsp.enable('python')

View File

@ -1,2 +0,0 @@
[pycodestyle]
max-line-length = 160

View File

@ -1,155 +0,0 @@
{
"name": "float",
"layer": "top",
"position": "bottom",
"exclusive": false,
"passthrough": false,
"gtk-layer-shell": true,
"margin-right": 10,
"margin-bottom": 0,
"margin-top" : 0,
"margin-left": 0,
"margin-right": 0,
"height" : 16,
"modules-left": [
],
"modules-center": [
],
"modules-right": [
"hyprland/workspaces",
"custom/cpu",
"custom/mem",
"custom/battery",
"tray",
"clock"
],
"hyprland/window": {
"format": "{}",
"max-length": 35,
"rewrite": {
"": "Harsh"
},
"separate-outputs": true,
},
"hyprland/workspaces": {
"format": "{icon}",
"format-icons": {
"a_social": "󰍥 ",
"b_mail": " ",
"c_terminal": " ",
"11": "1",
"12": "2",
"13": "3",
"14": "4",
"15": "5",
"16": "6",
"17": "7",
"18": "8",
"19": "9",
"20": "0",
"21": "1",
"22": "2",
"23": "3",
"24": "4",
"25": "5",
"26": "6",
"27": "7",
"28": "8",
"29": "9",
"30": "0",
},
"on-click": "activate",
"sort-by-number": true,
"persistent-workspaces": {
"eDP-1": [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
"DP-3": [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
"DP-2": [21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
},
"show-special": true
},
"clock": {
"format": "{:L%A %d %B %H:%M}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{}",
"interval": 1
},
"battery": {
"states": {
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-full": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-alt": "{time} {icon}",
"format-icons": ["", "", "", "", ""]
},
"pulseaudio#1": {
"format": "{volume}% {icon}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click-right": "pavucontrol",
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
"on-scroll-up": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+",
"on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
},
"pulseaudio#2": {
"format": "{format_source}",
"format-bluetooth": "{volume}% {icon}",
"format-muted": "{format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphones": "",
"handsfree": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": [
"",
"",
""
]
},
"on-click-right": "pavucontrol",
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle",
"on-scroll-up": "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+",
"on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
"icon-size": 16,
"spacing": 5
},
"custom/cpu": {
"exec": "sed '1q;d' ~/.config/dotfiles/hypr/.stat.txt",
"restart-interval": 2
},
"custom/mem": {
"exec": "sed '2q;d' ~/.config/dotfiles/hypr/.stat.txt",
"restart-interval": 2
},
"custom/battery": {
"exec": "sed '3q;d' ~/.config/dotfiles/hypr/.stat.txt",
"return-type": "json",
"restart-interval": 2
}
}

View File

@ -1,26 +0,0 @@
@define-color rosewater #f4dbd6;
@define-color flamingo #f0c6c6;
@define-color pink #f5bde6;
@define-color mauve #c6a0f6;
@define-color red #ed8796;
@define-color maroon #ee99a0;
@define-color peach #f5a97f;
@define-color yellow #eed49f;
@define-color green #a6da95;
@define-color teal #8bd5ca;
@define-color sky #91d7e3;
@define-color sapphire #7dc4e4;
@define-color blue #8aadf4;
@define-color lavender #b7bdf8;
@define-color text #cad3f5;
@define-color subtext1 #b8c0e0;
@define-color subtext0 #a5adcb;
@define-color overlay2 #939ab7;
@define-color overlay1 #8087a2;
@define-color overlay0 #6e738d;
@define-color surface2 #5b6078;
@define-color surface1 #494d64;
@define-color surface0 #363a4f;
@define-color base #24273a;
@define-color mantle #1e2030;
@define-color crust #181926;

View File

@ -1,179 +0,0 @@
@import "macchiato.css";
window#waybar {
opacity: 0.3;
}
window#waybar.full {
background: @bar-bg;
}
window#waybar.float {
background-color: transparent;
}
* {
font-family: "Ubuntu Mono Nerd Font", Roboto, Helvetica, Arial, sans-serif;
font-size: 14px;
min-height: 0px;
}
window#waybar {
background-color: rgba(0, 0, 0, 0);
border-radius: 13px;
transition-property: background-color;
transition-duration: .5s;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
}
#workspaces button {
padding: 0px 2px;
background-color: white;
color: #000000;
border-radius: 50px;
border-color: transparent;
border: 1px solid;
border-color: transparent;
}
#workspaces button.empty {
color: white;
background-color: transparent;
}
#workspaces button.active {
color: black;
font-weight: bold;
background-color: @green;
}
#workspaces button.active.empty {
font-weight: bold;
background-color: transparent;
border-color: @green;
color: @green;
}
#workspaces button.active:hover {
background-color: @green;
}
#workspaces button.focused {
background-color: @lavender;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#temperature,
#network,
#pulseaudio,
#idle_inhibitor,
#custom-cpu,
#custom-mem,
#custom-battery {
padding: 0 10px;
}
#custom-cpu {
color: @red;
}
#custom-mem {
color: @blue;
}
#custom-battery.charging {
color: @green;
}
#custom-battery.low {
color: @yellow;
}
#custom-battery.critical {
color: @red;
}
#custom-battery.hidden {
padding: 0;
}
#network {
color: @yellow;
}
#temperature {
color: @sky;
}
#battery {
color: @green;
}
#clock {
color: @white;
}
#window {
color: @rosewater;
}
#idle_inhibitor {
color: @teal;
}
.modules-right {
background-color: @base;
border-radius: 15px;
}
#battery.charging,
#battery.plugged {
color: @sapphire;
}
@keyframes blink {
to {
color: #000000;
}
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #000000;
}

View File

@ -2,7 +2,6 @@
# v is shorter
alias v="$EDITOR"
alias vdc="$EDITOR docker-compose.yml"
# htop is better
alias top="htop"
@ -27,9 +26,6 @@ alias cd..="cd .."
alias cd...="cd ../.."
alias cd....="cd ../../.."
# Colored ip
alias ip="ip -c"
# Alias for ls
command -v exa > /dev/null 2>&1
@ -72,9 +68,6 @@ cdw() {
fi
}
# Numbat shortcut
alias nb=numbat
# Initialize thefuck
command -v thefuck > /dev/null 2>&1
@ -110,35 +103,23 @@ fi
command -v docker-compose > /dev/null 2>&1
if [ $? -eq 0 ]; then
alias dc="docker-compose"
alias dcb="docker-compose build"
alias dcp="docker-compose build && docker-compose push"
alias dcu="docker-compose up -d --build --remove-orphans"
alias dcd="docker-compose down"
alias dcr="docker-compose down && docker-compose up -d --build --remove-orphans"
fi
command -v kubectl > /dev/null 2>&1
if [ $? -eq 0 ]; then
if [ -d $HOME/.config/polymny ]; then
export PATH=$HOME/.config/polymny/bin:$PATH
fi
if [ -f $HOME/.kubes/current-cube ]; then
export KUBECONFIG=$(cat $HOME/.kubes/current-cube)
fi
# Sets the kube config
kube() {
local kube_config=$HOME/.kubes/$1/config
if [ $# -ne 1 ]; then
rm ~/.kubes/current-cube
export KUBECONFIG=""
echo >&2 error: kube expects a single argument
return 1
elif [ ! -f $kube_config ]; then
echo >&2 error: no such kube config: $kube_config
return 1
else
echo $kube_config > ~/.kubes/current-cube
export KUBECONFIG=$kube_config
fi
}

View File

@ -21,7 +21,7 @@ DISABLE_AUTO_TITLE="true"
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/me
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git myjump pass $ZSH_EXTRA_PLUGINS)
zstyle ':omz:alpha:lib:git' async-prompt no
source $ZSH/oh-my-zsh.sh
# Source gulp completion

View File

@ -7,7 +7,7 @@ else
fi
# Parallel conpilation with make
export MAKEFLAGS="-j`nproc`"
export MAKEFLAGS="+j`nproc`"
# I want clang as default compiler if it exists
command -v clang > /dev/null 2>&1
@ -26,14 +26,5 @@ export WINEDEBUG=-all
# for rust
export RUST_BACKTRACE=full
# for python
if [ -d $HOME/.venv ]; then
export PATH=$HOME/.venv/bin:$PATH
export VIRTUAL_ENV=$HOME/.venv
fi
# Use port 8000 by default for flask, cause why would we use anything different?
export FLASK_RUN_PORT=8000
export TERM=xterm-256color
export REPORTTIME=5

View File

@ -30,7 +30,7 @@ if [[ $UID -ge 1000 ]]; then # normal user
local PR_ARROW_DOWN='$PR_MAGENTA└${PR_NO_COLOR}'
fi
elif [[ $UID -eq 0 ]]; then # root
eval PR_USER='${PR_RED}%n${PR_YELLOW}@${PR_GREEN}%M${PR_NO_COLOR}'
eval PR_USER='${PR_RED}%n${PR_NO_COLOR}'
eval PR_USER_OP='${PR_RED}%#${PR_NO_COLOR}'
local PR_ARROW_UP='${PR_RED}┌── ${PR_NO_COLOR}'
local PR_ARROW_DOWN='${PR_RED}└${PR_NO_COLOR}'
@ -76,25 +76,8 @@ else
fi
fi
git_prompt_info_no_space() {
current="$PWD"
while [ "$PWD" != "/" ] && [ ! -d "$PWD/.git" ]; do
builtin cd ..
done
if [ -f "$PWD/.gitskipprompt" ]; then
return
fi
builtin cd "$current"
local info=$(git_prompt_info)
if [ ! -z $info ]; then
echo " $info"
fi
}
local return_code=""
local git_branch='$(git_prompt_info_no_space)'
local git_branch=' $(git_prompt_info)'
local PR_DATE='${PR_BOLD}${PR_MAGENTA}[%D{%H:%M}]${PR_NO_COLOR}'

View File

@ -0,0 +1,103 @@
# ZSH Theme - Preview: http://dl.dropbox.com/u/4109351/pics/gnzh-zsh-theme.png
# Based on bira theme
# load some modules
autoload -U colors zsh/terminfo # Used in the colour alias below
colors
setopt prompt_subst
# make some aliases for the colours: (coud use normal escap.seq's too)
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
eval PR_$color='%{$fg[${(L)color}]%}'
done
eval PR_NO_COLOR="%{$terminfo[sgr0]%}"
eval PR_BOLD="%{$terminfo[bold]%}"
# Check the UID
if [[ $UID -ge 1000 ]]; then # normal user
# If ssh
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
eval PR_USER='${PR_GREEN}%n${PR_NO_COLOR}'
eval PR_USER_OP='${PR_GREEN}%#${PR_NO_COLOR}'
local PR_ARROW_UP='${PR_GREEN}┌── ${PR_NO_COLOR}'
local PR_ARROW_DOWN='${PR_GREEN}└${PR_NO_COLOR}'
local PR_PROMPT='$PR_GREEN▷$PR_NO_COLOR'
else
eval PR_USER='${PR_MAGENTA}%n${PR_NO_COLOR}'
eval PR_USER_OP='${PR_BLUE}%#${PR_NO_COLOR}'
local PR_PROMPT='$PR_MAGENTA▷$PR_NO_COLOR'
local PR_ARROW_UP='$PR_MAGENTA┌── ${PR_NO_COLOR}'
local PR_ARROW_DOWN='$PR_MAGENTA└${PR_NO_COLOR}'
fi
elif [[ $UID -eq 0 ]]; then # root
eval PR_USER='${PR_RED}%n${PR_NO_COLOR}'
eval PR_USER_OP='${PR_RED}%#${PR_NO_COLOR}'
local PR_ARROW_UP='${PR_RED}┌── ${PR_NO_COLOR}'
local PR_ARROW_DOWN='${PR_RED}└${PR_NO_COLOR}'
local PR_PROMPT='$PR_RED▷$PR_NO_COLOR'
fi
# Check if we are on SSH or not
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
eval PR_HOST='${PR_GREEN}%M${PR_NO_COLOR}' #SSH
else
eval PR_HOST='${PR_BLUE}%M${PR_NO_COLOR}' # no SSH
fi
# local return_code="%(?..%{$PR_RED%}%? ↵%{$PR_NO_COLOR%})"
truncated_pwd() {
local max_allowed_size=$(( `tput cols` - 30 ))
local path_name=$(print -rD $PWD)
local new_path_name=""
local truncated=0
while [ ${#path_name} -gt $max_allowed_size ]; do
truncated=1
new_path_name=`echo $path_name | cut -d '/' -f 2-`
if [[ "$new_path_name" == "$path_name" ]]; then
break
fi
path_name=$new_path_name
done
if [ $truncated -eq 1 ]; then
echo "~/.../"$path_name
else
echo $path_name
fi
}
local user_host='$PR_BOLD${PR_USER}$PR_BOLD'
local current_dir='$PR_BOLD%{$PR_BLUE%}$(truncated_pwd)$PR_NO_COLOR%}'
local rvm_ruby=''
if which rvm-prompt &> /dev/null; then
rvm_ruby='%{$PR_RED%}$(rvm-prompt i v g s)%{$PR_NO_COLOR%}'
else
if which rbenv &> /dev/null; then
rvm_ruby='%{$PR_RED%}$(rbenv version | sed -e "s/ (set.*$//")%{$PR_NO_COLOR%}'
fi
fi
local return_code=""
local git_branch='$(git_prompt_info)'
local PR_DATE='${PR_BOLD}${PR_MAGENTA}[%D{%H:%M}]${PR_NO_COLOR}'
#PROMPT="${user_host} ${current_dir} ${rvm_ruby}${git_branch}$PR_PROMPT "
separator='${PR_YELLOW}::${PR_NO_COLOR}'
tty | read tty_value
if [[ $tty_value == *pts* ]]; then # if in a tty
PROMPT="$PR_ARROW_UP${PR_DATE} ${user_host}${separator}${PR_NO_COLOR}${current_dir} ${rvm_ruby}${git_branch}
$PR_ARROW_DOWN$PR_PROMPT ${PR_NO_COLOR}"
return_code="%(?.%{$PR_GREEN%}%? ↵%{$PR_NO_COLOR%}.%{$PR_RED%}%? ↵%{$PR_NO_COLOR%})"
else
eval PR_NO_COLOR="$PR_WHITE"
PROMPT="${user_host} ${current_dir} ${rvm_ruby} ${git_branch}> ${PR_NO_COLOR}"
return_code="%(?.%{$PR_GREEN%}%? <%{$PR_NO_COLOR%}.%{$PR_RED%}%? <%{$PR_NO_COLOR%})"
fi
RPS1=" ${return_code}"
ZSH_THEME_GIT_PROMPT_PREFIX="%{$PR_YELLOW%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$PR_NO_COLOR%}"
TMOUT=30
TRAPALRM() {
zle reset-prompt
}

View File

@ -1,84 +0,0 @@
if [ "$PRESERVE_SSH_CWD" = "true" ]; then
# Ensure the directory where we store terminal cwds and ssh exists
mkdir -p $HOME/.config/terminalscwd/
# Alias for cd: when we change directory, we write the new cwd in the file corresponding to the terminal uuid
cd() {
if [ -z "$1" ]; then
directory=$HOME
elif [[ "$1" == "-P" ]] && [ -z $2 ]; then
directory="$HOME"
option="$1"
elif [[ "$1" == "-P" ]]; then
directory="$2"
option="$1"
else
directory="$1"
fi
if [ -z "$option" ]; then
builtin cd "$directory"
else
builtin cd "$option" "$directory"
fi
pwd > $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd
}
# Alias for ssh: when we ssh somewhere, we write it so that we know we should ssh when cloning terminal
ssh() {
echo $1 > $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh
/usr/bin/ssh $@
rm $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh
pwd > $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd
}
# If terminal uuid does not exit
if [ -z $TERMINAL_UUID ]; then
# Generate one
export TERMINAL_UUID=$(uuidgen)
fi
# Copy state for new terminal
if [ ! -z $PARENT_TERMINAL ]; then
if [ -f $HOME/.config/terminalscwd/$PARENT_TERMINAL.cwd ]; then
cp $HOME/.config/terminalscwd/$PARENT_TERMINAL.cwd $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd
fi
if [ -f $HOME/.config/terminalscwd/$PARENT_TERMINAL.ssh ]; then
cp $HOME/.config/terminalscwd/$PARENT_TERMINAL.ssh $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh
fi
fi
# When we're done, delete the uuid files
preserve_ssh_cleanup() {
rm -rf $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd
rm -rf $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh
}
trap preserve_ssh_cleanup EXIT
# If there already is a file corresponding to the current uuid
if [ -f $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd ]; then
# Go the the right directory
cd "$(cat $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd)"
else
# Use our custom alias to go to home, and set the file cwd
cd
fi
# If we're running in an ssh session
if [ -f $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh ]; then
# Run the ssh command, and exec shell in the end so the terminal doesn't exit at end of ssh
ssh $(cat $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh)
fi
fi

3
zshrc
View File

@ -21,7 +21,7 @@ DISABLE_AUTO_UPDATE="true"
ZSH=$HOME/.config/ohmyzsh
ZSH_CUSTOM=$HOME/.config/dotfiles/zsh/ohmyzsh
ZSH_THEME="tforgione"
ZSH_THEME="laptop"
if [ -f $DOTFILES/zsh/env.zsh ]; then
source $DOTFILES/zsh/env.zsh
@ -31,7 +31,6 @@ source $DOTFILES/zsh/config.zsh
source $DOTFILES/zsh/path.zsh
source $DOTFILES/zsh/exports.zsh
source $DOTFILES/zsh/aliases.zsh
source $DOTFILES/zsh/preserve-cwd-ssh.zsh
if [ -f $DOTFILES/zsh/extraconfig.zsh ]; then
source $DOTFILES/zsh/extraconfig.zsh