Compare commits
42 Commits
386d50d7ce
...
macbook
| Author | SHA1 | Date | |
|---|---|---|---|
| 77d3404812 | |||
| be35b62a87 | |||
| a598dcd1fc | |||
| 95d80c31d5 | |||
| 51515037b3 | |||
| 0a6a42e0b7 | |||
| 1820a8eff5 | |||
| e43d39b957 | |||
| f83ad4c21e | |||
| 0659773daf | |||
| 6f574b81e0 | |||
| 88f0c9b0b9 | |||
| 153d829677 | |||
| d0ccffc8d0 | |||
| 78a32b5616 | |||
| 0ab0236ba2 | |||
| 61df95387e | |||
| 002092af34 | |||
| 452fa88d70 | |||
| c36d9b3464 | |||
| 616e2b2b6e | |||
| a7c52f39a0 | |||
| 727bc542a1 | |||
| 1d5d0e7a6f | |||
| 01adfc34b7 | |||
| 82e36f6f75 | |||
| 389a8c1dd2 | |||
| bf3225a165 | |||
| 39d1956216 | |||
| 853c0f5b5d | |||
| 09c6c9023b | |||
| a80bb51283 | |||
| 5b2d9c71e7 | |||
| 0fd17f71a1 | |||
| d4166aa883 | |||
| 462b538f78 | |||
| e41f4ad02a | |||
| 6c9ab3fa19 | |||
| def29c9e18 | |||
| a574204578 | |||
| b3c3640a54 | |||
| 145bbd1996 |
76
.config/aerospace/aerospace.toml
Normal file
76
.config/aerospace/aerospace.toml
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# i3 doesn't have "normalizations" feature that why we disable them here.
|
||||||
|
# But the feature is very helpful.
|
||||||
|
# Normalizations eliminate all sorts of weird tree configurations that don't make sense.
|
||||||
|
# Give normalizations a chance and enable them back.
|
||||||
|
enable-normalization-flatten-containers = true
|
||||||
|
enable-normalization-opposite-orientation-for-nested-containers = true
|
||||||
|
automatically-unhide-macos-hidden-apps = true
|
||||||
|
|
||||||
|
# Mouse follows focus when focused monitor changes
|
||||||
|
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
|
||||||
|
|
||||||
|
start-at-login = true
|
||||||
|
|
||||||
|
[gaps]
|
||||||
|
inner.horizontal = 10
|
||||||
|
inner.vertical = 10
|
||||||
|
outer.left = 5
|
||||||
|
outer.bottom = 5
|
||||||
|
outer.top = 5
|
||||||
|
outer.right = 5
|
||||||
|
|
||||||
|
|
||||||
|
[mode.main.binding]
|
||||||
|
alt-enter = 'exec-and-forget alacritty msg create-window || alacritty'
|
||||||
|
|
||||||
|
alt-b = 'exec-and-forget /Applications/LibreWolf.app/Contents/MacOS/librewolf'
|
||||||
|
|
||||||
|
# i3 wraps focus by default
|
||||||
|
alt-h = 'focus left'
|
||||||
|
alt-j = 'focus down'
|
||||||
|
alt-k = 'focus up'
|
||||||
|
alt-l = 'focus right'
|
||||||
|
|
||||||
|
# alt-shift-j = 'move left'
|
||||||
|
# alt-shift-k = 'move down'
|
||||||
|
# alt-shift-l = 'move up'
|
||||||
|
# alt-shift-semicolon = 'move right'
|
||||||
|
|
||||||
|
# Consider using 'join-with' command as a 'split' replacement if you want to enable
|
||||||
|
# normalizations
|
||||||
|
# alt-h = 'split horizontal'
|
||||||
|
# alt-v = 'split vertical'
|
||||||
|
|
||||||
|
alt-f = 'fullscreen'
|
||||||
|
|
||||||
|
alt-shift-q = 'exec-and-forget current_workspace="$(aerospace list-workspaces --focused)"; aerospace close; aerospace workspace "$current_workspace"'
|
||||||
|
|
||||||
|
alt-shift-space = 'layout floating tiling' # 'floating toggle' in i3
|
||||||
|
|
||||||
|
alt-1 = 'workspace 1'
|
||||||
|
alt-2 = 'workspace 2'
|
||||||
|
alt-3 = 'workspace 3'
|
||||||
|
alt-4 = 'workspace 4'
|
||||||
|
alt-5 = 'workspace 5'
|
||||||
|
alt-6 = 'workspace 6'
|
||||||
|
alt-7 = 'workspace 7'
|
||||||
|
alt-8 = 'workspace 8'
|
||||||
|
alt-9 = 'workspace 9'
|
||||||
|
alt-0 = 'workspace 10'
|
||||||
|
|
||||||
|
alt-shift-1 = 'move-node-to-workspace 1'
|
||||||
|
alt-shift-2 = 'move-node-to-workspace 2'
|
||||||
|
alt-shift-3 = 'move-node-to-workspace 3'
|
||||||
|
alt-shift-4 = 'move-node-to-workspace 4'
|
||||||
|
alt-shift-5 = 'move-node-to-workspace 5'
|
||||||
|
alt-shift-6 = 'move-node-to-workspace 6'
|
||||||
|
alt-shift-7 = 'move-node-to-workspace 7'
|
||||||
|
alt-shift-8 = 'move-node-to-workspace 8'
|
||||||
|
alt-shift-9 = 'move-node-to-workspace 9'
|
||||||
|
alt-shift-0 = 'move-node-to-workspace 10'
|
||||||
|
|
||||||
|
|
||||||
|
alt-shift-r = 'reload-config'
|
||||||
|
|
||||||
|
alt-y = 'resize width -50'
|
||||||
|
alt-o = 'resize width +50'
|
||||||
@ -2,22 +2,22 @@
|
|||||||
TERM = "xterm-256color"
|
TERM = "xterm-256color"
|
||||||
|
|
||||||
[font]
|
[font]
|
||||||
size = 12.0
|
size = 14
|
||||||
|
|
||||||
[font.normal]
|
[font.normal]
|
||||||
family = "Input Nerd Font"
|
family = "Hack Nerd Font Mono"
|
||||||
style = "Regular"
|
style = "Regular"
|
||||||
|
|
||||||
[font.bold]
|
[font.bold]
|
||||||
family = "Input Nerd Font"
|
family = "Hack Nerd Font Mono"
|
||||||
style = "Bold"
|
style = "Bold"
|
||||||
|
|
||||||
[font.bold_italic]
|
[font.bold_italic]
|
||||||
family = "Input Nerd Font"
|
family = "Hack Nerd Font Mono"
|
||||||
style = "Bold Italic"
|
style = "Bold Italic"
|
||||||
|
|
||||||
[font.italic]
|
[font.italic]
|
||||||
family = "Input Nerd Font"
|
family = "Hack Nerd Font Mono"
|
||||||
style = "Italic"
|
style = "Italic"
|
||||||
|
|
||||||
[font.offset]
|
[font.offset]
|
||||||
@ -29,7 +29,7 @@ x = 0
|
|||||||
y = 2
|
y = 2
|
||||||
|
|
||||||
[window.padding]
|
[window.padding]
|
||||||
x = 30
|
x = 20
|
||||||
y = 10
|
y = 10
|
||||||
|
|
||||||
[window]
|
[window]
|
||||||
|
|||||||
@ -1,34 +0,0 @@
|
|||||||
# From the famous Cobalt2 sublime theme
|
|
||||||
# Source : https://github.com/wesbos/cobalt2/tree/master/Cobalt2
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x122637'
|
|
||||||
foreground: '0xffffff'
|
|
||||||
|
|
||||||
# Colors the cursor will use if `custom_cursor_colors` is true
|
|
||||||
cursor:
|
|
||||||
text: '0x122637'
|
|
||||||
cursor: '0xf0cb09'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xff0000'
|
|
||||||
green: '0x37dd21'
|
|
||||||
yellow: '0xfee409'
|
|
||||||
blue: '0x1460d2'
|
|
||||||
magenta: '0xff005d'
|
|
||||||
cyan: '0x00bbbb'
|
|
||||||
white: '0xbbbbbb'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x545454'
|
|
||||||
red: '0xf40d17'
|
|
||||||
green: '0x3bcf1d'
|
|
||||||
yellow: '0xecc809'
|
|
||||||
blue: '0x5555ff'
|
|
||||||
magenta: '0xff55ff'
|
|
||||||
cyan: '0x6ae3f9'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,48 +0,0 @@
|
|||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x2c2c2c'
|
|
||||||
foreground: '0xd6d6d6'
|
|
||||||
|
|
||||||
dim_foreground: '0xdbdbdb'
|
|
||||||
bright_foreground: '0xd9d9d9'
|
|
||||||
dim_background: '0x202020' # not sure
|
|
||||||
bright_background: '0x3a3a3a' # not sure
|
|
||||||
|
|
||||||
# Cursor colors
|
|
||||||
cursor:
|
|
||||||
text: '0x2c2c2c'
|
|
||||||
cursor: '0xd9d9d9'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x1c1c1c'
|
|
||||||
red: '0xbc5653'
|
|
||||||
green: '0x909d63'
|
|
||||||
yellow: '0xebc17a'
|
|
||||||
blue: '0x7eaac7'
|
|
||||||
magenta: '0xaa6292'
|
|
||||||
cyan: '0x86d3ce'
|
|
||||||
white: '0xcacaca'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x636363'
|
|
||||||
red: '0xbc5653'
|
|
||||||
green: '0x909d63'
|
|
||||||
yellow: '0xebc17a'
|
|
||||||
blue: '0x7eaac7'
|
|
||||||
magenta: '0xaa6292'
|
|
||||||
cyan: '0x86d3ce'
|
|
||||||
white: '0xf7f7f7'
|
|
||||||
|
|
||||||
# Dim colors
|
|
||||||
dim:
|
|
||||||
black: '0x232323'
|
|
||||||
red: '0x74423f'
|
|
||||||
green: '0x5e6547'
|
|
||||||
yellow: '0x8b7653'
|
|
||||||
blue: '0x556b79'
|
|
||||||
magenta: '0x6e4962'
|
|
||||||
cyan: '0x5c8482'
|
|
||||||
white: '0x828282'
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x292C3E'
|
|
||||||
foreground: '0xEBEBEB'
|
|
||||||
|
|
||||||
# Cursor colors
|
|
||||||
cursor:
|
|
||||||
text: '0xFF261E'
|
|
||||||
cursor: '0xFF261E'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x0d0d0d'
|
|
||||||
red: '0xFF301B'
|
|
||||||
green: '0xA0E521'
|
|
||||||
yellow: '0xFFC620'
|
|
||||||
blue: '0x1BA6FA'
|
|
||||||
magenta: '0x8763B8'
|
|
||||||
cyan: '0x21DEEF'
|
|
||||||
white: '0xEBEBEB'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x6D7070'
|
|
||||||
red: '0xFF4352'
|
|
||||||
green: '0xB8E466'
|
|
||||||
yellow: '0xFFD750'
|
|
||||||
blue: '0x1BA6FA'
|
|
||||||
magenta: '0xA578EA'
|
|
||||||
cyan: '0x73FBF1'
|
|
||||||
white: '0xFEFEF8'
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
colors:
|
|
||||||
primary:
|
|
||||||
background: '0xf8f8f8'
|
|
||||||
foreground: '0x2a2b33'
|
|
||||||
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xde3d35'
|
|
||||||
green: '0x3e953a'
|
|
||||||
yellow: '0xd2b67b'
|
|
||||||
blue: '0x2f5af3'
|
|
||||||
magenta: '0xa00095'
|
|
||||||
cyan: '0x3e953a'
|
|
||||||
white: '0xbbbbbb'
|
|
||||||
|
|
||||||
bright:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xde3d35'
|
|
||||||
green: '0x3e953a'
|
|
||||||
yellow: '0xd2b67b'
|
|
||||||
blue: '0x2f5af3'
|
|
||||||
magenta: '0xa00095'
|
|
||||||
cyan: '0x3e953a'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Ayu Dark)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x0A0E14'
|
|
||||||
foreground: '0xB3B1AD'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x01060E'
|
|
||||||
red: '0xEA6C73'
|
|
||||||
green: '0x91B362'
|
|
||||||
yellow: '0xF9AF4F'
|
|
||||||
blue: '0x53BDFA'
|
|
||||||
magenta: '0xFAE994'
|
|
||||||
cyan: '0x90E1C6'
|
|
||||||
white: '0xC7C7C7'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x686868'
|
|
||||||
red: '0xF07178'
|
|
||||||
green: '0xC2D94C'
|
|
||||||
yellow: '0xFFB454'
|
|
||||||
blue: '0x59C2FF'
|
|
||||||
magenta: '0xFFEE99'
|
|
||||||
cyan: '0x95E6CB'
|
|
||||||
white: '0xFFFFFF'
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
# Colors (Base16 Default Dark)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x181818'
|
|
||||||
foreground: '0xd8d8d8'
|
|
||||||
|
|
||||||
# Colors the cursor will use if `custom_cursor_colors` is true
|
|
||||||
cursor:
|
|
||||||
text: '0xd8d8d8'
|
|
||||||
cursor: '0xd8d8d8'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x181818'
|
|
||||||
red: '0xab4642'
|
|
||||||
green: '0xa1b56c'
|
|
||||||
yellow: '0xf7ca88'
|
|
||||||
blue: '0x7cafc2'
|
|
||||||
magenta: '0xba8baf'
|
|
||||||
cyan: '0x86c1b9'
|
|
||||||
white: '0xd8d8d8'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x585858'
|
|
||||||
red: '0xab4642'
|
|
||||||
green: '0xa1b56c'
|
|
||||||
yellow: '0xf7ca88'
|
|
||||||
blue: '0x7cafc2'
|
|
||||||
magenta: '0xba8baf'
|
|
||||||
cyan: '0x86c1b9'
|
|
||||||
white: '0xf8f8f8'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Blood Moon)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x10100E'
|
|
||||||
foreground: '0xC6C6C4'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x10100E'
|
|
||||||
red: '0xC40233'
|
|
||||||
green: '0x009F6B'
|
|
||||||
yellow: '0xFFD700'
|
|
||||||
blue: '0x0087BD'
|
|
||||||
magenta: '0x9A4EAE'
|
|
||||||
cyan: '0x20B2AA'
|
|
||||||
white: '0xC6C6C4'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x696969'
|
|
||||||
red: '0xFF2400'
|
|
||||||
green: '0x03C03C'
|
|
||||||
yellow: '0xFDFF00'
|
|
||||||
blue: '0x007FFF'
|
|
||||||
magenta: '0xFF1493'
|
|
||||||
cyan: '0x00CCCC'
|
|
||||||
white: '0xFFFAFA'
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
# KDE Breeze (Ported from Konsole)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x232627'
|
|
||||||
foreground: '0xfcfcfc'
|
|
||||||
|
|
||||||
dim_foreground: '0xeff0f1'
|
|
||||||
bright_foreground: '0xffffff'
|
|
||||||
dim_background: '0x31363b'
|
|
||||||
bright_background: '0x000000'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x232627'
|
|
||||||
red: '0xed1515'
|
|
||||||
green: '0x11d116'
|
|
||||||
yellow: '0xf67400'
|
|
||||||
blue: '0x1d99f3'
|
|
||||||
magenta: '0x9b59b6'
|
|
||||||
cyan: '0x1abc9c'
|
|
||||||
white: '0xfcfcfc'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x7f8c8d'
|
|
||||||
red: '0xc0392b'
|
|
||||||
green: '0x1cdc9a'
|
|
||||||
yellow: '0xfdbc4b'
|
|
||||||
blue: '0x3daee9'
|
|
||||||
magenta: '0x8e44ad'
|
|
||||||
cyan: '0x16a085'
|
|
||||||
white: '0xffffff'
|
|
||||||
|
|
||||||
# Dim colors
|
|
||||||
dim:
|
|
||||||
black: '0x31363b'
|
|
||||||
red: '0x783228'
|
|
||||||
green: '0x17a262'
|
|
||||||
yellow: '0xb65619'
|
|
||||||
blue: '0x1b668f'
|
|
||||||
magenta: '0x614a73'
|
|
||||||
cyan: '0x186c60'
|
|
||||||
white: '0x63686d'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Campbell (Windows 10 default)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x0c0c0c'
|
|
||||||
foreground: '0xcccccc'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x0c0c0c'
|
|
||||||
red: '0xc50f1f'
|
|
||||||
green: '0x13a10e'
|
|
||||||
yellow: '0xc19c00'
|
|
||||||
blue: '0x0037da'
|
|
||||||
magenta: '0x881798'
|
|
||||||
cyan: '0x3a96dd'
|
|
||||||
white: '0xcccccc'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x767676'
|
|
||||||
red: '0xe74856'
|
|
||||||
green: '0x16c60c'
|
|
||||||
yellow: '0xf9f1a5'
|
|
||||||
blue: '0x3b78ff'
|
|
||||||
magenta: '0xb4009e'
|
|
||||||
cyan: '0x61d6d6'
|
|
||||||
white: '0xf2f2f2'
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
# Colors (Challenger Deep)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x1e1c31'
|
|
||||||
foreground: '0xcbe1e7'
|
|
||||||
# Colors the cursor will use if `custom_cursor_colors` is true
|
|
||||||
cursor:
|
|
||||||
text: '0xff271d'
|
|
||||||
cursor: '0xfbfcfc'
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x141228'
|
|
||||||
red: '0xff5458'
|
|
||||||
green: '0x62d196'
|
|
||||||
yellow: '0xffb378'
|
|
||||||
blue: '0x65b2ff'
|
|
||||||
magenta: '0x906cff'
|
|
||||||
cyan: '0x63f2f1'
|
|
||||||
white: '0xa6b3cc'
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x565575'
|
|
||||||
red: '0xff8080'
|
|
||||||
green: '0x95ffa4'
|
|
||||||
yellow: '0xffe9aa'
|
|
||||||
blue: '0x91ddff'
|
|
||||||
magenta: '0xc991e1'
|
|
||||||
cyan: '0xaaffe4'
|
|
||||||
white: '0xcbe3e7'
|
|
||||||
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
# Cyber Punk Neon
|
|
||||||
# Source: https://github.com/Roboron3042/Cyberpunk-Neon
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: "0x000b1e"
|
|
||||||
foreground: "0x0abdc6"
|
|
||||||
|
|
||||||
# Colors the cursor will use if `custom_cursor_colors` is true
|
|
||||||
cursor:
|
|
||||||
text: "0x000b1e"
|
|
||||||
cursor: "0x0abdc6"
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: "0x123e7c"
|
|
||||||
red: "0xff0000"
|
|
||||||
green: "0xd300c4"
|
|
||||||
yellow: "0xf57800"
|
|
||||||
blue: "0x123e7c"
|
|
||||||
magenta: "0x711c91"
|
|
||||||
cyan: "0x0abdc6"
|
|
||||||
white: "0xd7d7d5"
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: "0x1c61c2"
|
|
||||||
red: "0xff0000"
|
|
||||||
green: "0xd300c4"
|
|
||||||
yellow: "0xf57800"
|
|
||||||
blue: "0x00ff00"
|
|
||||||
magenta: "0x711c91"
|
|
||||||
cyan: "0x0abdc6"
|
|
||||||
white: "0xd7d7d5"
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Dracula)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x282a36'
|
|
||||||
foreground: '0xf8f8f2'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xff5555'
|
|
||||||
green: '0x50fa7b'
|
|
||||||
yellow: '0xf1fa8c'
|
|
||||||
blue: '0xcaa9fa'
|
|
||||||
magenta: '0xff79c6'
|
|
||||||
cyan: '0x8be9fd'
|
|
||||||
white: '0xbfbfbf'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x282a35'
|
|
||||||
red: '0xff6e67'
|
|
||||||
green: '0x5af78e'
|
|
||||||
yellow: '0xf4f99d'
|
|
||||||
blue: '0xcaa9fa'
|
|
||||||
magenta: '0xff92d0'
|
|
||||||
cyan: '0x9aedfe'
|
|
||||||
white: '0xe6e6e6'
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
|
|
||||||
# Colors (Konsole's Dark Pastels)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x2C2C2C'
|
|
||||||
foreground: '0xDCDCCC'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x3F3F3F'
|
|
||||||
red: '0x705050'
|
|
||||||
green: '0x60B48A'
|
|
||||||
yellow: '0xDFAF8F'
|
|
||||||
blue: '0x9AB8D7'
|
|
||||||
magenta: '0xDC8CC3'
|
|
||||||
cyan: '0x8CD0D3'
|
|
||||||
white: '0xDCDCCC'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x709080'
|
|
||||||
red: '0xDCA3A3'
|
|
||||||
green: '0x72D5A3'
|
|
||||||
yellow: '0xF0DFAF'
|
|
||||||
blue: '0x94BFF3'
|
|
||||||
magenta: '0xEC93D3'
|
|
||||||
cyan: '0x93E0E3'
|
|
||||||
white: '0xFFFFFF'
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
# Colors (Doom One)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x282c34'
|
|
||||||
foreground: '0xbbc2cf'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x282c34'
|
|
||||||
red: '0xff6c6b'
|
|
||||||
green: '0x98be65'
|
|
||||||
yellow: '0xecbe7b'
|
|
||||||
blue: '0x51afef'
|
|
||||||
magenta: '0xc678dd'
|
|
||||||
cyan: '0x46d9ff'
|
|
||||||
white: '0xbbc2cf'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Dracula)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x282a36'
|
|
||||||
foreground: '0xf8f8f2'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xff5555'
|
|
||||||
green: '0x50fa7b'
|
|
||||||
yellow: '0xf1fa8c'
|
|
||||||
blue: '0xbd93f9'
|
|
||||||
magenta: '0xff79c6'
|
|
||||||
cyan: '0x8be9fd'
|
|
||||||
white: '0xbbbbbb'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x555555'
|
|
||||||
red: '0xff5555'
|
|
||||||
green: '0x50fa7b'
|
|
||||||
yellow: '0xf1fa8c'
|
|
||||||
blue: '0xcaa9fa'
|
|
||||||
magenta: '0xff79c6'
|
|
||||||
cyan: '0x8be9fd'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
# falcon colorscheme for alacritty
|
|
||||||
# by fenetikm, https://github.com/fenetikm/falcon
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x020221'
|
|
||||||
foreground: '0xb4b4b9'
|
|
||||||
|
|
||||||
# Colors the cursor will use if `custom_cursor_colors` is true
|
|
||||||
cursor:
|
|
||||||
text: '0x020221'
|
|
||||||
cursor: '0xffe8c0'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000004'
|
|
||||||
red: '0xff3600'
|
|
||||||
green: '0x718e3f'
|
|
||||||
yellow: '0xffc552'
|
|
||||||
blue: '0x635196'
|
|
||||||
magenta: '0xff761a'
|
|
||||||
cyan: '0x34bfa4'
|
|
||||||
white: '0xb4b4b9'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x020221'
|
|
||||||
red: '0xff8e78'
|
|
||||||
green: '0xb1bf75'
|
|
||||||
yellow: '0xffd392'
|
|
||||||
blue: '0x99a4bc'
|
|
||||||
magenta: '0xffb07b'
|
|
||||||
cyan: '0x8bccbf'
|
|
||||||
white: '0xf8f8ff'
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
colors:
|
|
||||||
primary:
|
|
||||||
background: '0x272a34'
|
|
||||||
foreground: '0xFFFFFF'
|
|
||||||
|
|
||||||
normal:
|
|
||||||
black: '0x1F2229'
|
|
||||||
red: '0xEC0101'
|
|
||||||
green: '0x47D4B9'
|
|
||||||
yellow: '0xFF8A18'
|
|
||||||
blue: '0x277FFF'
|
|
||||||
magenta: '0xD71655'
|
|
||||||
cyan: '0x05A1F7'
|
|
||||||
white: '0xFFFFFF'
|
|
||||||
|
|
||||||
|
|
||||||
bright:
|
|
||||||
black: '0x1F2229'
|
|
||||||
red: '0xD41919'
|
|
||||||
green: '0x5EBDAB'
|
|
||||||
yellow: '0xFEA44C'
|
|
||||||
blue: '0x367bf0'
|
|
||||||
magenta: '0xBF2E5D'
|
|
||||||
cyan: '0x49AEE6'
|
|
||||||
white: '0xFFFFFF'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Gotham)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x0a0f14'
|
|
||||||
foreground: '0x98d1ce'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x0a0f14'
|
|
||||||
red: '0xc33027'
|
|
||||||
green: '0x26a98b'
|
|
||||||
yellow: '0xedb54b'
|
|
||||||
blue: '0x195465'
|
|
||||||
magenta: '0x4e5165'
|
|
||||||
cyan: '0x33859d'
|
|
||||||
white: '0x98d1ce'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x10151b'
|
|
||||||
red: '0xd26939'
|
|
||||||
green: '0x081f2d'
|
|
||||||
yellow: '0x245361'
|
|
||||||
blue: '0x093748'
|
|
||||||
magenta: '0x888ba5'
|
|
||||||
cyan: '0x599caa'
|
|
||||||
white: '0xd3ebe9'
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
# Colors (Gruvbox dark)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
# hard contrast: background = '0x1d2021'
|
|
||||||
background: '0x282828'
|
|
||||||
# soft contrast: background = '0x32302f'
|
|
||||||
foreground: '0xebdbb2'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x282828'
|
|
||||||
red: '0xcc241d'
|
|
||||||
green: '0x98971a'
|
|
||||||
yellow: '0xd79921'
|
|
||||||
blue: '0x458588'
|
|
||||||
magenta: '0xb16286'
|
|
||||||
cyan: '0x689d6a'
|
|
||||||
white: '0xa89984'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x928374'
|
|
||||||
red: '0xfb4934'
|
|
||||||
green: '0xb8bb26'
|
|
||||||
yellow: '0xfabd2f'
|
|
||||||
blue: '0x83a598'
|
|
||||||
magenta: '0xd3869b'
|
|
||||||
cyan: '0x8ec07c'
|
|
||||||
white: '0xebdbb2'
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
# Colors (Gruvbox light)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
# hard contrast: background = '0xf9f5d7'
|
|
||||||
background: '0xfbf1c7'
|
|
||||||
# soft contrast: background = '0xf2e5bc'
|
|
||||||
foreground: '0x3c3836'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0xfbf1c7'
|
|
||||||
red: '0xcc241d'
|
|
||||||
green: '0x98971a'
|
|
||||||
yellow: '0xd79921'
|
|
||||||
blue: '0x458588'
|
|
||||||
magenta: '0xb16286'
|
|
||||||
cyan: '0x689d6a'
|
|
||||||
white: '0x7c6f64'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x928374'
|
|
||||||
red: '0x9d0006'
|
|
||||||
green: '0x79740e'
|
|
||||||
yellow: '0xb57614'
|
|
||||||
blue: '0x076678'
|
|
||||||
magenta: '0x8f3f71'
|
|
||||||
cyan: '0x427b58'
|
|
||||||
white: '0x3c3836'
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
# Colors (Gruvbox Material Dark Medium)
|
|
||||||
colors:
|
|
||||||
primary:
|
|
||||||
background: '0x282828'
|
|
||||||
foreground: '0xdfbf8e'
|
|
||||||
|
|
||||||
normal:
|
|
||||||
black: '0x665c54'
|
|
||||||
red: '0xea6962'
|
|
||||||
green: '0xa9b665'
|
|
||||||
yellow: '0xe78a4e'
|
|
||||||
blue: '0x7daea3'
|
|
||||||
magenta: '0xd3869b'
|
|
||||||
cyan: '0x89b482'
|
|
||||||
white: '0xdfbf8e'
|
|
||||||
|
|
||||||
bright:
|
|
||||||
black: '0x928374'
|
|
||||||
red: '0xea6962'
|
|
||||||
green: '0xa9b665'
|
|
||||||
yellow: '0xe3a84e'
|
|
||||||
blue: '0x7daea3'
|
|
||||||
magenta: '0xd3869b'
|
|
||||||
cyan: '0x89b482'
|
|
||||||
white: '0xdfbf8e'
|
|
||||||
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
# Colors (High Contrast)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x444444'
|
|
||||||
foreground: '0xdddddd'
|
|
||||||
|
|
||||||
# Colors the cursor will use if `custom_cursor_colors` is true
|
|
||||||
cursor:
|
|
||||||
text: '0xaaaaaa'
|
|
||||||
cursor: '0xffffff'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xff0000'
|
|
||||||
green: '0x00ff00'
|
|
||||||
yellow: '0xffff00'
|
|
||||||
blue: '0x0000ff'
|
|
||||||
magenta: '0xff00ff'
|
|
||||||
cyan: '0x00ffff'
|
|
||||||
white: '0xffffff'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xff0000'
|
|
||||||
green: '0x00ff00'
|
|
||||||
yellow: '0xffff00'
|
|
||||||
blue: '0x0000ff'
|
|
||||||
magenta: '0xff00ff'
|
|
||||||
cyan: '0x00ffff'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Horizon Dark)
|
|
||||||
colors:
|
|
||||||
# Primary colors
|
|
||||||
primary:
|
|
||||||
background: '0x1c1e26'
|
|
||||||
foreground: '0xe0e0e0'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x16161c'
|
|
||||||
red: '0xe95678'
|
|
||||||
green: '0x29d398'
|
|
||||||
yellow: '0xfab795'
|
|
||||||
blue: '0x26bbd9'
|
|
||||||
magenta: '0xee64ac'
|
|
||||||
cyan: '0x59e1e3'
|
|
||||||
white: '0xd5d8da'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x5b5858'
|
|
||||||
red: '0xec6a88'
|
|
||||||
green: '0x3fdaa4'
|
|
||||||
yellow: '0xfbc3a7'
|
|
||||||
blue: '0x3fc4de'
|
|
||||||
magenta: '0xf075b5'
|
|
||||||
cyan: '0x6be4e6'
|
|
||||||
white: '0xd5d8da'
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
# Colors (Hyper)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x000000'
|
|
||||||
foreground: '0xffffff'
|
|
||||||
cursor:
|
|
||||||
text: '0xF81CE5'
|
|
||||||
cursor: '0xffffff'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xfe0100'
|
|
||||||
green: '0x33ff00'
|
|
||||||
yellow: '0xfeff00'
|
|
||||||
blue: '0x0066ff'
|
|
||||||
magenta: '0xcc00ff'
|
|
||||||
cyan: '0x00ffff'
|
|
||||||
white: '0xd0d0d0'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x808080'
|
|
||||||
red: '0xfe0100'
|
|
||||||
green: '0x33ff00'
|
|
||||||
yellow: '0xfeff00'
|
|
||||||
blue: '0x0066ff'
|
|
||||||
magenta: '0xcc00ff'
|
|
||||||
cyan: '0x00ffff'
|
|
||||||
white: '0xFFFFFF'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (iTerm 2 default theme)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x101421'
|
|
||||||
foreground: '0xfffbf6'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x2e2e2e'
|
|
||||||
red: '0xeb4129'
|
|
||||||
green: '0xabe047'
|
|
||||||
yellow: '0xf6c744'
|
|
||||||
blue: '0x47a0f3'
|
|
||||||
magenta: '0x7b5cb0'
|
|
||||||
cyan: '0x64dbed'
|
|
||||||
white: '0xe5e9f0'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x565656'
|
|
||||||
red: '0xec5357'
|
|
||||||
green: '0xc0e17d'
|
|
||||||
yellow: '0xf9da6a'
|
|
||||||
blue: '0x49a4f8'
|
|
||||||
magenta: '0xa47de9'
|
|
||||||
cyan: '0x99faf2'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
# Colors (Kanagawa Dragon)
|
|
||||||
# Source: https://github.com/rebelot/kanagawa.nvim
|
|
||||||
colors:
|
|
||||||
primary:
|
|
||||||
background: '0x181616'
|
|
||||||
foreground: '0xc5c9c5'
|
|
||||||
|
|
||||||
normal:
|
|
||||||
black: '0x0d0c0c'
|
|
||||||
blue: '0x8ba4b0'
|
|
||||||
cyan: '0x8ea4a2'
|
|
||||||
green: '0x8a9a7b'
|
|
||||||
magenta: '0xa292a3'
|
|
||||||
red: '0xc4746e'
|
|
||||||
white: '0xC8C093'
|
|
||||||
yellow: '0xc4b28a'
|
|
||||||
|
|
||||||
bright:
|
|
||||||
black: '0xa6a69c'
|
|
||||||
blue: '0x7FB4CA'
|
|
||||||
cyan: '0x7AA89F'
|
|
||||||
green: '0x87a987'
|
|
||||||
magenta: '0x938AA9'
|
|
||||||
red: '0xE46876'
|
|
||||||
white: '0xc5c9c5'
|
|
||||||
yellow: '0xE6C384'
|
|
||||||
|
|
||||||
selection:
|
|
||||||
background: '0x2d4f67'
|
|
||||||
foreground: '0xc8c093'
|
|
||||||
|
|
||||||
indexed_colors:
|
|
||||||
- { index: 16, color: '0xffa066' }
|
|
||||||
- { index: 17, color: '0xff5d62' }
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
# Colors (Kanagawa Wave)
|
|
||||||
# Source: https://github.com/rebelot/kanagawa.nvim
|
|
||||||
colors:
|
|
||||||
primary:
|
|
||||||
background: '0x1f1f28'
|
|
||||||
foreground: '0xdcd7ba'
|
|
||||||
|
|
||||||
normal:
|
|
||||||
black: '0x090618'
|
|
||||||
red: '0xc34043'
|
|
||||||
green: '0x76946a'
|
|
||||||
yellow: '0xc0a36e'
|
|
||||||
blue: '0x7e9cd8'
|
|
||||||
magenta: '0x957fb8'
|
|
||||||
cyan: '0x6a9589'
|
|
||||||
white: '0xc8c093'
|
|
||||||
|
|
||||||
bright:
|
|
||||||
black: '0x727169'
|
|
||||||
red: '0xe82424'
|
|
||||||
green: '0x98bb6c'
|
|
||||||
yellow: '0xe6c384'
|
|
||||||
blue: '0x7fb4ca'
|
|
||||||
magenta: '0x938aa9'
|
|
||||||
cyan: '0x7aa89f'
|
|
||||||
white: '0xdcd7ba'
|
|
||||||
|
|
||||||
selection:
|
|
||||||
background: '0x2d4f67'
|
|
||||||
foreground: '0xc8c093'
|
|
||||||
|
|
||||||
indexed_colors:
|
|
||||||
- { index: 16, color: '0xffa066' }
|
|
||||||
- { index: 17, color: '0xff5d62' }
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
# Color theme ported from Konsole: Linux colors
|
|
||||||
colors:
|
|
||||||
primary:
|
|
||||||
foreground: '0xe3e3e3'
|
|
||||||
bright_foreground: '0xffffff'
|
|
||||||
dim_foreground: '0xe3e3e3'
|
|
||||||
background: '0x1f1f1f'
|
|
||||||
bright_background: '0x686868' # not sure
|
|
||||||
dim_background: '0x1f1f1f' # not sure
|
|
||||||
|
|
||||||
cursor:
|
|
||||||
text: '0x191622'
|
|
||||||
cursor: '0xf8f8f2'
|
|
||||||
|
|
||||||
search:
|
|
||||||
matches:
|
|
||||||
foreground: '0xb2b2b2'
|
|
||||||
background: '0xb26818'
|
|
||||||
focused_match:
|
|
||||||
foreground: CellBackground
|
|
||||||
background: CellForeground
|
|
||||||
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xb21818'
|
|
||||||
green: '0x18b218'
|
|
||||||
yellow: '0xb26818'
|
|
||||||
blue: '0x1818b2'
|
|
||||||
magenta: '0xb218b2'
|
|
||||||
cyan: '0x18b2b2'
|
|
||||||
white: '0xb2b2b2'
|
|
||||||
|
|
||||||
bright:
|
|
||||||
black: '0x686868'
|
|
||||||
red: '0xff5454'
|
|
||||||
green: '0x54ff54'
|
|
||||||
yellow: '0xffff54'
|
|
||||||
blue: '0x5454ff'
|
|
||||||
magenta: '0xff54ff'
|
|
||||||
cyan: '0x54ffff'
|
|
||||||
white: '0xffffff'
|
|
||||||
|
|
||||||
dim:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xb21818'
|
|
||||||
green: '0x18b218'
|
|
||||||
yellow: '0xb26818'
|
|
||||||
blue: '0x1818b2'
|
|
||||||
magenta: '0xb218b2'
|
|
||||||
cyan: '0x18b2b2'
|
|
||||||
white: '0xb2b2b2'
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
# Colors (Dim)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x333333'
|
|
||||||
foreground: '0xdddddd'
|
|
||||||
|
|
||||||
# Colors the cursor will use if `custom_cursor_colors` is true
|
|
||||||
cursor:
|
|
||||||
text: '0xaaaaaa'
|
|
||||||
cursor: '0xffffff'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xbb0000'
|
|
||||||
green: '0x00bb00'
|
|
||||||
yellow: '0xbbbb00'
|
|
||||||
blue: '0x0000bb'
|
|
||||||
magenta: '0xbb00bb'
|
|
||||||
cyan: '0x00bbbb'
|
|
||||||
white: '0xbbbbbb'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xbb0000'
|
|
||||||
green: '0x00bb00'
|
|
||||||
yellow: '0xbbbb00'
|
|
||||||
blue: '0x0000bb'
|
|
||||||
magenta: '0xbb00bb'
|
|
||||||
cyan: '0x00bbbb'
|
|
||||||
white: '0xbbbbbb'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Material Theme)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x1e282d'
|
|
||||||
foreground: '0xc4c7d1'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x666666'
|
|
||||||
red: '0xeb606b'
|
|
||||||
green: '0xc3e88d'
|
|
||||||
yellow: '0xf7eb95'
|
|
||||||
blue: '0x80cbc4'
|
|
||||||
magenta: '0xff2f90'
|
|
||||||
cyan: '0xaeddff'
|
|
||||||
white: '0xffffff'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0xff262b'
|
|
||||||
red: '0xeb606b'
|
|
||||||
green: '0xc3e88d'
|
|
||||||
yellow: '0xf7eb95'
|
|
||||||
blue: '0x7dc6bf'
|
|
||||||
magenta: '0x6c71c4'
|
|
||||||
cyan: '0x35434d'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Material Theme)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x1e282d'
|
|
||||||
foreground: '0xc4c7d1'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x666666'
|
|
||||||
red: '0xeb606b'
|
|
||||||
green: '0xc3e88d'
|
|
||||||
yellow: '0xf7eb95'
|
|
||||||
blue: '0x80cbc4'
|
|
||||||
magenta: '0xff2f90'
|
|
||||||
cyan: '0xaeddff'
|
|
||||||
white: '0xffffff'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0xa1a1a1'
|
|
||||||
red: '0xeb606b'
|
|
||||||
green: '0xc3e88d'
|
|
||||||
yellow: '0xf7eb95'
|
|
||||||
blue: '0x7dc6bf'
|
|
||||||
magenta: '0x6c71c4'
|
|
||||||
cyan: '0x35434d'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x2D2A2E'
|
|
||||||
foreground: '0xfff1f3'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x2c2525'
|
|
||||||
red: '0xfd6883'
|
|
||||||
green: '0xadda78'
|
|
||||||
yellow: '0xf9cc6c'
|
|
||||||
blue: '0xf38d70'
|
|
||||||
magenta: '0xa8a9eb'
|
|
||||||
cyan: '0x85dacc'
|
|
||||||
white: '0xfff1f3'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x72696a'
|
|
||||||
red: '0xfd6883'
|
|
||||||
green: '0xadda78'
|
|
||||||
yellow: '0xf9cc6c'
|
|
||||||
blue: '0xf38d70'
|
|
||||||
magenta: '0xa8a9eb'
|
|
||||||
cyan: '0x85dacc'
|
|
||||||
white: '0xfff1f3'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
colors:
|
|
||||||
primary:
|
|
||||||
background: '0x1e2030'
|
|
||||||
foreground: '0x7f85a3'
|
|
||||||
|
|
||||||
cursor:
|
|
||||||
text: '0x7f85a3'
|
|
||||||
cursor: '0x808080'
|
|
||||||
|
|
||||||
normal:
|
|
||||||
black: '0x444a73'
|
|
||||||
red: '0xff5370'
|
|
||||||
green: '0x4fd6be'
|
|
||||||
yellow: '0xffc777'
|
|
||||||
blue: '0x3e68d7'
|
|
||||||
magenta: '0xfc7b7b'
|
|
||||||
cyan: '0x86e1fc'
|
|
||||||
white: '0xd0d0d0'
|
|
||||||
|
|
||||||
bright:
|
|
||||||
black: '0x828bb8'
|
|
||||||
red: '0xff98a4'
|
|
||||||
green: '0xc3e88d'
|
|
||||||
yellow: '0xffc777'
|
|
||||||
blue: '0x82aaff'
|
|
||||||
magenta: '0xff966c'
|
|
||||||
cyan: '0xb4f9f8'
|
|
||||||
white: '0x5f8787'
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
# Colors (Night Owlish Light)
|
|
||||||
colors:
|
|
||||||
bright:
|
|
||||||
black: '#7a8181'
|
|
||||||
blue: '#5ca7e4'
|
|
||||||
cyan: '#00c990'
|
|
||||||
green: '#49d0c5'
|
|
||||||
magenta: '#697098'
|
|
||||||
red: '#f76e6e'
|
|
||||||
white: '#989fb1'
|
|
||||||
yellow: '#dac26b'
|
|
||||||
cursor:
|
|
||||||
cursor: '#403f53'
|
|
||||||
text: '#fbfbfb'
|
|
||||||
normal:
|
|
||||||
black: '#011627'
|
|
||||||
blue: '#4876d6'
|
|
||||||
cyan: '#08916a'
|
|
||||||
green: '#2aa298'
|
|
||||||
magenta: '#403f53'
|
|
||||||
red: '#d3423e'
|
|
||||||
white: '#7a8181'
|
|
||||||
yellow: '#daaa01'
|
|
||||||
primary:
|
|
||||||
background: '#ffffff'
|
|
||||||
foreground: '#403f53'
|
|
||||||
selection:
|
|
||||||
background: '#f2f2f2'
|
|
||||||
text: '#403f53'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Nord)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x2E3440'
|
|
||||||
foreground: '0xD8DEE9'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x3B4252'
|
|
||||||
red: '0xBF616A'
|
|
||||||
green: '0xA3BE8C'
|
|
||||||
yellow: '0xEBCB8B'
|
|
||||||
blue: '0x81A1C1'
|
|
||||||
magenta: '0xB48EAD'
|
|
||||||
cyan: '0x88C0D0'
|
|
||||||
white: '0xE5E9F0'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x4C566A'
|
|
||||||
red: '0xBF616A'
|
|
||||||
green: '0xA3BE8C'
|
|
||||||
yellow: '0xEBCB8B'
|
|
||||||
blue: '0x81A1C1'
|
|
||||||
magenta: '0xB48EAD'
|
|
||||||
cyan: '0x8FBCBB'
|
|
||||||
white: '0xECEFF4'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Oceanic Next)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x1b2b34'
|
|
||||||
foreground: '0xd8dee9'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x29414f'
|
|
||||||
red: '0xec5f67'
|
|
||||||
green: '0x99c794'
|
|
||||||
yellow: '0xfac863'
|
|
||||||
blue: '0x6699cc'
|
|
||||||
magenta: '0xc594c5'
|
|
||||||
cyan: '0x5fb3b3'
|
|
||||||
white: '0x65737e'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x405860'
|
|
||||||
red: '0xec5f67'
|
|
||||||
green: '0x99c794'
|
|
||||||
yellow: '0xfac863'
|
|
||||||
blue: '0x6699cc'
|
|
||||||
magenta: '0xc594c5'
|
|
||||||
cyan: '0x5fb3b3'
|
|
||||||
white: '0xadb5c0'
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
colors:
|
|
||||||
primary:
|
|
||||||
background: '0x191622'
|
|
||||||
foreground: '0xe1e1e6'
|
|
||||||
|
|
||||||
cursor:
|
|
||||||
text: '0x191622'
|
|
||||||
cursor: '0xf8f8f2'
|
|
||||||
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xff5555'
|
|
||||||
green: '0x50fa7b'
|
|
||||||
yellow: '0xeffa78'
|
|
||||||
blue: '0xbd93f9'
|
|
||||||
magenta: '0xff79c6'
|
|
||||||
cyan: '0x8d79ba'
|
|
||||||
white: '0xbfbfbf'
|
|
||||||
|
|
||||||
bright:
|
|
||||||
black: '0x4d4d4d'
|
|
||||||
red: '0xff6e67'
|
|
||||||
green: '0x5af78e'
|
|
||||||
yellow: '0xeaf08d'
|
|
||||||
blue: '0xcaa9fa'
|
|
||||||
magenta: '0xff92d0'
|
|
||||||
cyan: '0xaa91e3'
|
|
||||||
white: '0xe6e6e6'
|
|
||||||
|
|
||||||
dim:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xa90000'
|
|
||||||
green: '0x049f2b'
|
|
||||||
yellow: '0xa3b106'
|
|
||||||
blue: '0x530aba'
|
|
||||||
magenta: '0xbb006b'
|
|
||||||
cyan: '0x433364'
|
|
||||||
white: '0x5f5f5f'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (One Dark)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x1e2127'
|
|
||||||
foreground: '0xabb2bf'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x1e2127'
|
|
||||||
red: '0xe06c75'
|
|
||||||
green: '0x98c379'
|
|
||||||
yellow: '0xd19a66'
|
|
||||||
blue: '0x61afef'
|
|
||||||
magenta: '0xc678dd'
|
|
||||||
cyan: '0x56b6c2'
|
|
||||||
white: '0xabb2bf'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x5c6370'
|
|
||||||
red: '0xe06c75'
|
|
||||||
green: '0x98c379'
|
|
||||||
yellow: '0xd19a66'
|
|
||||||
blue: '0x61afef'
|
|
||||||
magenta: '0xc678dd'
|
|
||||||
cyan: '0x56b6c2'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
# iTerm2 Material Design - Palenight theme for Alacritty
|
|
||||||
# Source : https://github.com/JonathanSpeek/palenight-iterm2
|
|
||||||
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x292d3e'
|
|
||||||
foreground: '0xd0d0d0'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x292d3e'
|
|
||||||
red: '0xf07178'
|
|
||||||
green: '0xc3e88d'
|
|
||||||
yellow: '0xffcb6b'
|
|
||||||
blue: '0x82aaff'
|
|
||||||
magenta: '0xc792ea'
|
|
||||||
cyan: '0x89ddff'
|
|
||||||
white: '0xd0d0d0'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x434758'
|
|
||||||
red: '0xff8b92'
|
|
||||||
green: '0xddffa7'
|
|
||||||
yellow: '0xffe585'
|
|
||||||
blue: '0x9cc4ff'
|
|
||||||
magenta: '0xe1acff'
|
|
||||||
cyan: '0xa3f7ff'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
# Colors (PaperColor - Dark)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x1c1c1c'
|
|
||||||
foreground: '0x808080'
|
|
||||||
|
|
||||||
cursor:
|
|
||||||
text: '0x1c1c1c'
|
|
||||||
cursor: '0x808080'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x1c1c1c'
|
|
||||||
red: '0xaf005f'
|
|
||||||
green: '0x5faf00'
|
|
||||||
yellow: '0xd7af5f'
|
|
||||||
blue: '0x5fafd7'
|
|
||||||
magenta: '0x808080'
|
|
||||||
cyan: '0xd7875f'
|
|
||||||
white: '0xd0d0d0'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x585858'
|
|
||||||
red: '0x5faf5f'
|
|
||||||
green: '0xafd700'
|
|
||||||
yellow: '0xaf87d7'
|
|
||||||
blue: '0xffaf00'
|
|
||||||
magenta: '0xffaf00'
|
|
||||||
cyan: '0x00afaf'
|
|
||||||
white: '0x5f8787'
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
# Colors (PaperColor - Light)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0xeeeeee'
|
|
||||||
foreground: '0x878787'
|
|
||||||
|
|
||||||
cursor:
|
|
||||||
text: '0xeeeeee'
|
|
||||||
cursor: '0x878787'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0xeeeeee'
|
|
||||||
red: '0xaf0000'
|
|
||||||
green: '0x008700'
|
|
||||||
yellow: '0x5f8700'
|
|
||||||
blue: '0x0087af'
|
|
||||||
magenta: '0x878787'
|
|
||||||
cyan: '0x005f87'
|
|
||||||
white: '0x444444'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0xbcbcbc'
|
|
||||||
red: '0xd70000'
|
|
||||||
green: '0xd70087'
|
|
||||||
yellow: '0x8700af'
|
|
||||||
blue: '0xd75f00'
|
|
||||||
magenta: '0xd75f00'
|
|
||||||
cyan: '0x005faf'
|
|
||||||
white: '0x005f87'
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
# Colors (Pencil Dark)
|
|
||||||
colors:
|
|
||||||
# Default Colors
|
|
||||||
primary:
|
|
||||||
background: '0x212121'
|
|
||||||
foreground: '0xf1f1f1'
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x212121'
|
|
||||||
red: '0xc30771'
|
|
||||||
green: '0x10a778'
|
|
||||||
yellow: '0xa89c14'
|
|
||||||
blue: '0x008ec4'
|
|
||||||
magenta: '0x523c79'
|
|
||||||
cyan: '0x20a5ba'
|
|
||||||
white: '0xe0e0e0'
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x818181'
|
|
||||||
red: '0xfb007a'
|
|
||||||
green: '0x5fd7af'
|
|
||||||
yellow: '0xf3e430'
|
|
||||||
blue: '0x20bbfc'
|
|
||||||
magenta: '0x6855de'
|
|
||||||
cyan: '0x4fb8cc'
|
|
||||||
white: '0xf1f1f1'
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
# Colors (Pencil Light)
|
|
||||||
colors:
|
|
||||||
# Default Colors
|
|
||||||
primary:
|
|
||||||
background: '0xf1f1f1'
|
|
||||||
foreground: '0x424242'
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x212121'
|
|
||||||
red: '0xc30771'
|
|
||||||
green: '0x10a778'
|
|
||||||
yellow: '0xa89c14'
|
|
||||||
blue: '0x008ec4'
|
|
||||||
magenta: '0x523c79'
|
|
||||||
cyan: '0x20a5ba'
|
|
||||||
white: '0xe0e0e0'
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x212121'
|
|
||||||
red: '0xfb007a'
|
|
||||||
green: '0x5fd7af'
|
|
||||||
yellow: '0xf3e430'
|
|
||||||
blue: '0x20bbfc'
|
|
||||||
magenta: '0x6855de'
|
|
||||||
cyan: '0x4fb8cc'
|
|
||||||
white: '0xf1f1f1'
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x2c2b2a'
|
|
||||||
foreground: '0xf9e7c4'
|
|
||||||
|
|
||||||
dim_foreground: '0x685E4A'
|
|
||||||
bright_foreground: '0x1C1508'
|
|
||||||
dim_background: '0x202322'
|
|
||||||
bright_background: '0x353433'
|
|
||||||
|
|
||||||
# Cursor colors
|
|
||||||
cursor:
|
|
||||||
text: '0xf9e7c4'
|
|
||||||
cursor: '0xf9e7c4'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x282a2e'
|
|
||||||
blue: '0x5f819d'
|
|
||||||
cyan: '0x5e8d87'
|
|
||||||
green: '0x8c9440'
|
|
||||||
magenta: '0x85678f'
|
|
||||||
orange: '0xcc6953'
|
|
||||||
red: '0xa54242'
|
|
||||||
white: '0x707880'
|
|
||||||
yellow: '0xde935f'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x373b41'
|
|
||||||
blue: '0x81a2be'
|
|
||||||
cyan: '0x8abeb7'
|
|
||||||
green: '0xb5bd68'
|
|
||||||
magenta: '0xb294bb'
|
|
||||||
red: '0xcc6666'
|
|
||||||
white: '0xc5c8c6'
|
|
||||||
yellow: '0xf0c674'
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
# Colors (SeaShells)
|
|
||||||
# Source : https://raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/master/schemes/SeaShells.itermcolors
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '#061923'
|
|
||||||
foreground: '#e5c49e'
|
|
||||||
|
|
||||||
# Colors the cursor will use if `custom_cursor_colors` is true
|
|
||||||
cursor:
|
|
||||||
text: '#061822'
|
|
||||||
cursor: '#feaf3c'
|
|
||||||
|
|
||||||
selection:
|
|
||||||
text: '#ffe9d7'
|
|
||||||
background: '#265b75'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '#1d485f'
|
|
||||||
red: '#db662d'
|
|
||||||
green: '#008eab'
|
|
||||||
yellow: '#feaf3c'
|
|
||||||
blue: '#255a62'
|
|
||||||
magenta: '#77dbf4'
|
|
||||||
cyan: '#5fb1c2'
|
|
||||||
white: '#e5c49e'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '#545d65'
|
|
||||||
red: '#dd998a'
|
|
||||||
green: '#739da8'
|
|
||||||
yellow: '#fedaae'
|
|
||||||
blue: '#0bc7e3'
|
|
||||||
magenta: '#c6e8f1'
|
|
||||||
cyan: '#97b9c0'
|
|
||||||
white: '#ffe9d7'
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
# Color theme ported from iTerm 2: Smoooooth
|
|
||||||
|
|
||||||
colors:
|
|
||||||
primary:
|
|
||||||
foreground: '0xdbdbdb'
|
|
||||||
background: '0x14191e'
|
|
||||||
cursor:
|
|
||||||
text: '0x000000'
|
|
||||||
cursor: '0xfefffe'
|
|
||||||
selection:
|
|
||||||
text: '0x000000'
|
|
||||||
background: '0xb3d7ff'
|
|
||||||
normal:
|
|
||||||
black: '0x14191e'
|
|
||||||
red: '0xb43c29'
|
|
||||||
green: '0x00c200'
|
|
||||||
yellow: '0xc7c400'
|
|
||||||
blue: '0x2743c7'
|
|
||||||
magenta: '0xbf3fbd'
|
|
||||||
cyan: '0x00c5c7'
|
|
||||||
white: '0xc7c7c7'
|
|
||||||
bright:
|
|
||||||
black: '0x676767'
|
|
||||||
red: '0xdc7974'
|
|
||||||
green: '0x57e690'
|
|
||||||
yellow: '0xece100'
|
|
||||||
blue: '0xa6aaf1'
|
|
||||||
magenta: '0xe07de0'
|
|
||||||
cyan: '0x5ffdff'
|
|
||||||
white: '0xfeffff'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Snazzy)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x282a36'
|
|
||||||
foreground: '0xeff0eb'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x282a36'
|
|
||||||
red: '0xff5c57'
|
|
||||||
green: '0x5af78e'
|
|
||||||
yellow: '0xf3f99d'
|
|
||||||
blue: '0x57c7ff'
|
|
||||||
magenta: '0xff6ac1'
|
|
||||||
cyan: '0x9aedfe'
|
|
||||||
white: '0xf1f1f0'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x686868'
|
|
||||||
red: '0xff5c57'
|
|
||||||
green: '0x5af78e'
|
|
||||||
yellow: '0xf3f99d'
|
|
||||||
blue: '0x57c7ff'
|
|
||||||
magenta: '0xff6ac1'
|
|
||||||
cyan: '0x9aedfe'
|
|
||||||
white: '0xf1f1f0'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Solarized Dark)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x002b36'
|
|
||||||
foreground: '0x839496'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x073642'
|
|
||||||
red: '0xdc322f'
|
|
||||||
green: '0x859900'
|
|
||||||
yellow: '0xb58900'
|
|
||||||
blue: '0x268bd2'
|
|
||||||
magenta: '0xd33682'
|
|
||||||
cyan: '0x2aa198'
|
|
||||||
white: '0xeee8d5'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x002b36'
|
|
||||||
red: '0xcb4b16'
|
|
||||||
green: '0x586e75'
|
|
||||||
yellow: '0x657b83'
|
|
||||||
blue: '0x839496'
|
|
||||||
magenta: '0x6c71c4'
|
|
||||||
cyan: '0x93a1a1'
|
|
||||||
white: '0xfdf6e3'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Solarized Light)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0xfdf6e3'
|
|
||||||
foreground: '0x586e75'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x073642'
|
|
||||||
red: '0xdc322f'
|
|
||||||
green: '0x859900'
|
|
||||||
yellow: '0xb58900'
|
|
||||||
blue: '0x268bd2'
|
|
||||||
magenta: '0xd33682'
|
|
||||||
cyan: '0x2aa198'
|
|
||||||
white: '0xeee8d5'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x002b36'
|
|
||||||
red: '0xcb4b16'
|
|
||||||
green: '0x586e75'
|
|
||||||
yellow: '0x657b83'
|
|
||||||
blue: '0x839496'
|
|
||||||
magenta: '0x6c71c4'
|
|
||||||
cyan: '0x93a1a1'
|
|
||||||
white: '0xfdf6e3'
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
# Colors (Taerminal)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x26282a'
|
|
||||||
foreground: '0xf0f0f0'
|
|
||||||
cursor:
|
|
||||||
background: '0xf0f0f0'
|
|
||||||
foreground: '0x26282a'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x26282a'
|
|
||||||
red: '0xff8878'
|
|
||||||
green: '0xb4fb73'
|
|
||||||
yellow: '0xfffcb7'
|
|
||||||
blue: '0x8bbce5'
|
|
||||||
magenta: '0xffb2fe'
|
|
||||||
cyan: '0xa2e1f8'
|
|
||||||
white: '0xf1f1f1'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x6f6f6f'
|
|
||||||
red: '0xfe978b'
|
|
||||||
green: '0xd6fcba'
|
|
||||||
yellow: '0xfffed5'
|
|
||||||
blue: '0xc2e3ff'
|
|
||||||
magenta: '0xffc6ff'
|
|
||||||
cyan: '0xc0e9f8'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
# GNOME Terminal Tango Dark
|
|
||||||
colors:
|
|
||||||
primary:
|
|
||||||
background: '0x2e3436'
|
|
||||||
foreground: '0xd3d7cf'
|
|
||||||
|
|
||||||
normal:
|
|
||||||
black: '0x2e3436'
|
|
||||||
red: '0xcc0000'
|
|
||||||
green: '0x4e9a06'
|
|
||||||
yellow: '0xc4a000'
|
|
||||||
blue: '0x3465a4'
|
|
||||||
magenta: '0x75507b'
|
|
||||||
cyan: '0x06989a'
|
|
||||||
white: '0xd3d7cf'
|
|
||||||
|
|
||||||
bright:
|
|
||||||
black: '0x555753'
|
|
||||||
red: '0xef2929'
|
|
||||||
green: '0x8ae234'
|
|
||||||
yellow: '0xfce94f'
|
|
||||||
blue: '0x729fcf'
|
|
||||||
magenta: '0xad7fa8'
|
|
||||||
cyan: '0x34e2e2'
|
|
||||||
white: '0xeeeeec'
|
|
||||||
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x282828'
|
|
||||||
foreground: '0xeeeeee'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x282828'
|
|
||||||
red: '0xf43753'
|
|
||||||
green: '0xc9d05c'
|
|
||||||
yellow: '0xffc24b'
|
|
||||||
blue: '0xb3deef'
|
|
||||||
magenta: '0xd3b987'
|
|
||||||
cyan: '0x73cef4'
|
|
||||||
white: '0xeeeeee'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x4c4c4c'
|
|
||||||
red: '0xf43753'
|
|
||||||
green: '0xc9d05c'
|
|
||||||
yellow: '0xffc24b'
|
|
||||||
blue: '0xb3deef'
|
|
||||||
magenta: '0xd3b987'
|
|
||||||
cyan: '0x73cef4'
|
|
||||||
white: '0xfeffff'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Terminal.app)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x000000'
|
|
||||||
foreground: '0xb6b6b6'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0x990000'
|
|
||||||
green: '0x00a600'
|
|
||||||
yellow: '0x999900'
|
|
||||||
blue: '0x0000b2'
|
|
||||||
magenta: '0xb200b2'
|
|
||||||
cyan: '0x00a6b2'
|
|
||||||
white: '0xbfbfbf'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x666666'
|
|
||||||
red: '0xe50000'
|
|
||||||
green: '0x00d900'
|
|
||||||
yellow: '0xe5e500'
|
|
||||||
blue: '0x0000ff'
|
|
||||||
magenta: '0xe500e5'
|
|
||||||
cyan: '0x00e5e5'
|
|
||||||
white: '0xe5e5e5'
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x1D1F28'
|
|
||||||
foreground: '0xFDFDFD'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
# Bright colors
|
|
||||||
black: '0x282A36'
|
|
||||||
red: '0xF37F97'
|
|
||||||
green: '0x5ADECD'
|
|
||||||
yellow: '0xF2A272'
|
|
||||||
blue: '0x8897F4'
|
|
||||||
magenta: '0xC574DD'
|
|
||||||
cyan: '0x79E6F3'
|
|
||||||
white: '0xFDFDFD'
|
|
||||||
bright:
|
|
||||||
black: '0x414458'
|
|
||||||
red: '0xFF4971'
|
|
||||||
green: '0x18E3C8'
|
|
||||||
yellow: '0xEBCB8B'
|
|
||||||
blue: '0xFF8037'
|
|
||||||
magenta: '0x556FFF'
|
|
||||||
cyan: '0x3FDCEE'
|
|
||||||
white: '0xBEBEC1'
|
|
||||||
indexed_colors: []
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
# Colors (Tokyo Night: Storm variant)
|
|
||||||
# Source: https://github.com/zatchheems/tokyo-night-alacritty-theme
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x24283b'
|
|
||||||
foreground: '0xa9b1d6'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x32344a'
|
|
||||||
red: '0xf7768e'
|
|
||||||
green: '0x9ece6a'
|
|
||||||
yellow: '0xe0af68'
|
|
||||||
blue: '0x7aa2f7'
|
|
||||||
magenta: '0xad8ee6'
|
|
||||||
cyan: '0x449dab'
|
|
||||||
white: '0x9699a8'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x444b6a'
|
|
||||||
red: '0xff7a93'
|
|
||||||
green: '0xb9f27c'
|
|
||||||
yellow: '0xff9e64'
|
|
||||||
blue: '0x7da6ff'
|
|
||||||
magenta: '0xbb9af7'
|
|
||||||
cyan: '0x0db9d7'
|
|
||||||
white: '0xacb0d0'
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
# Colors (Tokyo Night)
|
|
||||||
# Source: https://github.com/zatchheems/tokyo-night-alacritty-theme
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x1a1b26'
|
|
||||||
foreground: '0xa9b1d6'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x32344a'
|
|
||||||
red: '0xf7768e'
|
|
||||||
green: '0x9ece6a'
|
|
||||||
yellow: '0xe0af68'
|
|
||||||
blue: '0x7aa2f7'
|
|
||||||
magenta: '0xad8ee6'
|
|
||||||
cyan: '0x449dab'
|
|
||||||
white: '0x787c99'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x444b6a'
|
|
||||||
red: '0xff7a93'
|
|
||||||
green: '0xb9f27c'
|
|
||||||
yellow: '0xff9e64'
|
|
||||||
blue: '0x7da6ff'
|
|
||||||
magenta: '0xbb9af7'
|
|
||||||
cyan: '0x0db9d7'
|
|
||||||
white: '0xacb0d0'
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
# Colors (Tomorrow Night)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x1d1f21'
|
|
||||||
foreground: '0xc5c8c6'
|
|
||||||
|
|
||||||
# Colors the cursor will use if `custom_cursor_colors` is true
|
|
||||||
cursor:
|
|
||||||
text: '0x1d1f21'
|
|
||||||
cursor: '0xffffff'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x1d1f21'
|
|
||||||
red: '0xcc6666'
|
|
||||||
green: '0xb5bd68'
|
|
||||||
yellow: '0xe6c547'
|
|
||||||
blue: '0x81a2be'
|
|
||||||
magenta: '0xb294bb'
|
|
||||||
cyan: '0x70c0ba'
|
|
||||||
white: '0x373b41'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x666666'
|
|
||||||
red: '0xff3334'
|
|
||||||
green: '0x9ec400'
|
|
||||||
yellow: '0xf0c674'
|
|
||||||
blue: '0x81a2be'
|
|
||||||
magenta: '0xb77ee0'
|
|
||||||
cyan: '0x54ced6'
|
|
||||||
white: '0x282a2e'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Tomorrow Night Bright)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x000000'
|
|
||||||
foreground: '0xeaeaea'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xd54e53'
|
|
||||||
green: '0xb9ca4a'
|
|
||||||
yellow: '0xe6c547'
|
|
||||||
blue: '0x7aa6da'
|
|
||||||
magenta: '0xc397d8'
|
|
||||||
cyan: '0x70c0ba'
|
|
||||||
white: '0x424242'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x666666'
|
|
||||||
red: '0xff3334'
|
|
||||||
green: '0x9ec400'
|
|
||||||
yellow: '0xe7c547'
|
|
||||||
blue: '0x7aa6da'
|
|
||||||
magenta: '0xb77ee0'
|
|
||||||
cyan: '0x54ced6'
|
|
||||||
white: '0x2a2a2a'
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
# Colors (Wombat)
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x1f1f1f'
|
|
||||||
foreground: '0xe5e1d8'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xf7786d'
|
|
||||||
green: '0xbde97c'
|
|
||||||
yellow: '0xefdfac'
|
|
||||||
blue: '0x6ebaf8'
|
|
||||||
magenta: '0xef88ff'
|
|
||||||
cyan: '0x90fdf8'
|
|
||||||
white: '0xe5e1d8'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0xb4b4b4'
|
|
||||||
red: '0xf99f92'
|
|
||||||
green: '0xe3f7a1'
|
|
||||||
yellow: '0xf2e9bf'
|
|
||||||
blue: '0xb3d2ff'
|
|
||||||
magenta: '0xe5bdff'
|
|
||||||
cyan: '0xc2fefa'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
# XTerm's default colors
|
|
||||||
colors:
|
|
||||||
# Default colors
|
|
||||||
primary:
|
|
||||||
background: '0x000000'
|
|
||||||
foreground: '0xffffff'
|
|
||||||
# Normal colors
|
|
||||||
normal:
|
|
||||||
black: '0x000000'
|
|
||||||
red: '0xcd0000'
|
|
||||||
green: '0x00cd00'
|
|
||||||
yellow: '0xcdcd00'
|
|
||||||
blue: '0x0000ee'
|
|
||||||
magenta: '0xcd00cd'
|
|
||||||
cyan: '0x00cdcd'
|
|
||||||
white: '0xe5e5e5'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
bright:
|
|
||||||
black: '0x7f7f7f'
|
|
||||||
red: '0xff0000'
|
|
||||||
green: '0x00ff00'
|
|
||||||
yellow: '0xffff00'
|
|
||||||
blue: '0x5c5cff'
|
|
||||||
magenta: '0xff00ff'
|
|
||||||
cyan: '0x00ffff'
|
|
||||||
white: '0xffffff'
|
|
||||||
@ -1,464 +0,0 @@
|
|||||||
-- If LuaRocks is installed, make sure that packages installed through it are
|
|
||||||
-- found (e.g. lgi). If LuaRocks is not installed, do nothing.
|
|
||||||
pcall(require, "luarocks.loader")
|
|
||||||
|
|
||||||
-- Standard awesome library
|
|
||||||
local gears = require("gears")
|
|
||||||
local awful = require("awful")
|
|
||||||
require("awful.autofocus")
|
|
||||||
-- Widget and layout library
|
|
||||||
local wibox = require("wibox")
|
|
||||||
-- Theme handling library
|
|
||||||
local beautiful = require("beautiful")
|
|
||||||
-- Notification library
|
|
||||||
local naughty = require("naughty")
|
|
||||||
local hotkeys_popup = require("awful.hotkeys_popup")
|
|
||||||
-- Enable hotkeys help widget for VIM and other apps
|
|
||||||
-- when client with a matching name is opened:
|
|
||||||
require("awful.hotkeys_popup.keys")
|
|
||||||
|
|
||||||
-- {{{ Error handling
|
|
||||||
-- Check if awesome encountered an error during startup and fell back to
|
|
||||||
-- another config (This code will only ever execute for the fallback config)
|
|
||||||
if awesome.startup_errors then
|
|
||||||
naughty.notify({
|
|
||||||
preset = naughty.config.presets.critical,
|
|
||||||
title = "Oops, there were errors during startup!",
|
|
||||||
text = awesome.startup_errors,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Handle runtime errors after startup
|
|
||||||
do
|
|
||||||
local in_error = false
|
|
||||||
awesome.connect_signal("debug::error", function(err)
|
|
||||||
-- Make sure we don't go into an endless error loop
|
|
||||||
if in_error then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
in_error = true
|
|
||||||
|
|
||||||
naughty.notify({
|
|
||||||
preset = naughty.config.presets.critical,
|
|
||||||
title = "Oops, an error happened!",
|
|
||||||
text = tostring(err),
|
|
||||||
})
|
|
||||||
in_error = false
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- {{{ Variable definitions
|
|
||||||
-- Themes define colours, icons, font and wallpapers.
|
|
||||||
beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua")
|
|
||||||
|
|
||||||
-- This is used later as the default terminal and editor to run.
|
|
||||||
browser = "librewolf"
|
|
||||||
terminal = "alacritty"
|
|
||||||
editor = os.getenv("nvim") or "nvim"
|
|
||||||
editor_cmd = terminal .. " -e " .. editor
|
|
||||||
|
|
||||||
modkey = "Mod4"
|
|
||||||
|
|
||||||
awful.layout.layouts = {
|
|
||||||
awful.layout.suit.tile,
|
|
||||||
}
|
|
||||||
|
|
||||||
local taglist_buttons = gears.table.join(
|
|
||||||
awful.button({}, 1, function(t)
|
|
||||||
t:view_only()
|
|
||||||
end),
|
|
||||||
awful.button({ modkey }, 1, function(t)
|
|
||||||
if client.focus then
|
|
||||||
client.focus:move_to_tag(t)
|
|
||||||
end
|
|
||||||
end),
|
|
||||||
awful.button({}, 3, awful.tag.viewtoggle),
|
|
||||||
awful.button({ modkey }, 3, function(t)
|
|
||||||
if client.focus then
|
|
||||||
client.focus:toggle_tag(t)
|
|
||||||
end
|
|
||||||
end),
|
|
||||||
awful.button({}, 4, function(t)
|
|
||||||
awful.tag.viewnext(t.screen)
|
|
||||||
end),
|
|
||||||
awful.button({}, 5, function(t)
|
|
||||||
awful.tag.viewprev(t.screen)
|
|
||||||
end)
|
|
||||||
)
|
|
||||||
|
|
||||||
local tasklist_buttons = gears.table.join(
|
|
||||||
awful.button({}, 1, function(c)
|
|
||||||
if c == client.focus then
|
|
||||||
c.minimized = true
|
|
||||||
else
|
|
||||||
c:emit_signal("request::activate", "tasklist", { raise = true })
|
|
||||||
end
|
|
||||||
end),
|
|
||||||
awful.button({}, 3, function()
|
|
||||||
awful.menu.client_list({ theme = { width = 250 } })
|
|
||||||
end),
|
|
||||||
awful.button({}, 4, function()
|
|
||||||
awful.client.focus.byidx(1)
|
|
||||||
end),
|
|
||||||
awful.button({}, 5, function()
|
|
||||||
awful.client.focus.byidx(-1)
|
|
||||||
end)
|
|
||||||
)
|
|
||||||
|
|
||||||
local function set_wallpaper(s)
|
|
||||||
-- Wallpaper
|
|
||||||
if beautiful.wallpaper then
|
|
||||||
local wallpaper = beautiful.wallpaper
|
|
||||||
-- If wallpaper is a function, call it with the screen
|
|
||||||
if type(wallpaper) == "function" then
|
|
||||||
wallpaper = wallpaper(s)
|
|
||||||
end
|
|
||||||
gears.wallpaper.maximized(wallpaper, s, true)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
|
|
||||||
screen.connect_signal("property::geometry", set_wallpaper)
|
|
||||||
|
|
||||||
awful.screen.connect_for_each_screen(function(s)
|
|
||||||
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- {{{ Mouse bindings
|
|
||||||
root.buttons(gears.table.join(
|
|
||||||
-- awful.button({}, 3, function()
|
|
||||||
-- mymainmenu:toggle()
|
|
||||||
-- end),
|
|
||||||
awful.button({}, 4, awful.tag.viewnext),
|
|
||||||
awful.button({}, 5, awful.tag.viewprev)
|
|
||||||
))
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- {{{ Key bindings
|
|
||||||
globalkeys = gears.table.join(
|
|
||||||
awful.key({ modkey }, "s", hotkeys_popup.show_help, { description = "show help", group = "awesome" }),
|
|
||||||
-- awful.key({ modkey }, "Left", awful.tag.viewprev, { description = "view previous", group = "tag" }),
|
|
||||||
-- awful.key({ modkey }, "Right", awful.tag.viewnext, { description = "view next", group = "tag" }),
|
|
||||||
awful.key({ modkey }, "Escape", awful.tag.history.restore, { description = "go back", group = "tag" }),
|
|
||||||
awful.key({ modkey }, "l", function()
|
|
||||||
awful.client.focus.byidx(1)
|
|
||||||
end, { description = "focus next by index", group = "client" }),
|
|
||||||
awful.key({ modkey }, "h", function()
|
|
||||||
awful.client.focus.byidx(-1)
|
|
||||||
end, { description = "focus previous by index", group = "client" }),
|
|
||||||
awful.key({ modkey }, "w", function()
|
|
||||||
mymainmenu:show()
|
|
||||||
end, { description = "show main menu", group = "awesome" }),
|
|
||||||
|
|
||||||
-- Layout manipulation
|
|
||||||
awful.key({ modkey, "Shift" }, "h", function()
|
|
||||||
awful.client.swap.byidx(1)
|
|
||||||
end, { description = "swap with next client by index", group = "client" }),
|
|
||||||
awful.key({ modkey, "Shift" }, "l", function()
|
|
||||||
awful.client.swap.byidx(-1)
|
|
||||||
end, { description = "swap with previous client by index", group = "client" }),
|
|
||||||
awful.key({ modkey }, "k", function()
|
|
||||||
awful.screen.focus_relative(1)
|
|
||||||
end, { description = "focus the next screen", group = "screen" }),
|
|
||||||
awful.key({ modkey }, "j", function()
|
|
||||||
awful.screen.focus_relative(-1)
|
|
||||||
end, { description = "focus the previous screen", group = "screen" }),
|
|
||||||
awful.key({ modkey }, "u", awful.client.urgent.jumpto, { description = "jump to urgent client", group = "client" }),
|
|
||||||
awful.key({ modkey }, "Tab", function()
|
|
||||||
awful.client.focus.history.previous()
|
|
||||||
if client.focus then
|
|
||||||
client.focus:raise()
|
|
||||||
end
|
|
||||||
end, { description = "go back", group = "client" }),
|
|
||||||
|
|
||||||
-- Standard program
|
|
||||||
awful.key({ modkey, "Shift" }, "r", awesome.restart, { description = "reload awesome", group = "awesome" }),
|
|
||||||
awful.key({ modkey, "Shift" }, "e", awesome.quit, { description = "quit awesome", group = "awesome" }),
|
|
||||||
awful.key({ modkey }, "y", function()
|
|
||||||
awful.tag.incmwfact(0.05)
|
|
||||||
end, { description = "increase master width factor", group = "layout" }),
|
|
||||||
awful.key({ modkey }, "o", function()
|
|
||||||
awful.tag.incmwfact(-0.05)
|
|
||||||
end, { description = "decrease master width factor", group = "layout" }),
|
|
||||||
|
|
||||||
-- launch dmenu
|
|
||||||
awful.key({ modkey }, "d", function()
|
|
||||||
awful.util.spawn("dmenu_run")
|
|
||||||
end, { description = "dmenu", group = "launcher" }),
|
|
||||||
|
|
||||||
-- launch browser
|
|
||||||
awful.key({ modkey }, "b", function()
|
|
||||||
awful.util.spawn(browser)
|
|
||||||
end, { description = "launch browser", group = "launcher" }),
|
|
||||||
|
|
||||||
-- launch terminal
|
|
||||||
awful.key({ modkey }, "Return", function()
|
|
||||||
awful.spawn(terminal)
|
|
||||||
end, { description = "open a terminal", group = "launcher" }),
|
|
||||||
|
|
||||||
-- launch ncmpcpp
|
|
||||||
awful.key({ modkey }, "m", function()
|
|
||||||
awful.spawn.with_shell(terminal .. " -e ncmpcpp")
|
|
||||||
end, { description = "open ncmpcpp", group = "launcher" }),
|
|
||||||
|
|
||||||
-- music player daemon controls
|
|
||||||
awful.key({}, "XF86AudioPlay", function()
|
|
||||||
awful.spawn("playerctl play-pause")
|
|
||||||
end, { description = "toggle play", group = "launcher" }),
|
|
||||||
awful.key({}, "XF86AudioPause", function()
|
|
||||||
awful.spawn.with_shell("playerctl play-pause")
|
|
||||||
end, { description = "toggle play", group = "launcher" }),
|
|
||||||
awful.key({}, "XF86AudioNext", function()
|
|
||||||
awful.spawn.with_shell("playerctl next")
|
|
||||||
end, { description = "next", group = "launcher" }),
|
|
||||||
awful.key({}, "XF86AudioPrev", function()
|
|
||||||
awful.spawn.with_shell("playerctl previous")
|
|
||||||
end, { description = "previous", group = "launcher" }),
|
|
||||||
awful.key({ modkey, "Shift" }, "bracketleft", function()
|
|
||||||
awful.spawn.with_shell("playerctl -p mpd volume 0.05-")
|
|
||||||
end, { description = "decrease volume", group = "launcher" }),
|
|
||||||
awful.key({ modkey, "Shift" }, "bracketright", function()
|
|
||||||
awful.spawn.with_shell("playerctl -p mpd volume 0.05+")
|
|
||||||
end, { description = "increase volume", group = "launcher" }),
|
|
||||||
-- media hotkeys
|
|
||||||
awful.key({}, "XF86AudioRaiseVolume", function()
|
|
||||||
awful.spawn("pactl set-sink-volume @DEFAULT_SINK@ +10%")
|
|
||||||
end, { description = "raise volume", group = "launcher" }),
|
|
||||||
awful.key({}, "XF86AudioLowerVolume", function()
|
|
||||||
awful.spawn("pactl set-sink-volume @DEFAULT_SINK@ -10%")
|
|
||||||
end, { description = "lower volume", group = "launcher" }),
|
|
||||||
awful.key({}, "XF86AudioMute", function()
|
|
||||||
awful.spawn("pactl set-sink-mute @DEFAULT_SINK@ toggle")
|
|
||||||
end, { description = "toggle mute", group = "launcher" }),
|
|
||||||
|
|
||||||
-- toggle picom
|
|
||||||
awful.key({ modkey }, "c", function()
|
|
||||||
awful.spawn.with_shell("~/.config/awesome/scripts/toggle_picom.sh")
|
|
||||||
end, { description = "toggle picom", group = "launcher" }),
|
|
||||||
|
|
||||||
-- make screenshot
|
|
||||||
awful.key({ modkey }, "Print", function()
|
|
||||||
awful.spawn.with_shell("flameshot gui")
|
|
||||||
end, { description = "flameshot", group = "launcher" }),
|
|
||||||
|
|
||||||
-- logout
|
|
||||||
awful.key({ modkey, "Shift" }, "BackSpace", function()
|
|
||||||
awful.spawn.with_shell("$HOME/.config/awesome/scripts/logout_script.sh")
|
|
||||||
end, { description = "logout", group = "launcher" })
|
|
||||||
)
|
|
||||||
|
|
||||||
clientkeys = gears.table.join(
|
|
||||||
awful.key({ modkey }, "f", function(c)
|
|
||||||
c.fullscreen = not c.fullscreen
|
|
||||||
c:raise()
|
|
||||||
end, { description = "toggle fullscreen", group = "client" }),
|
|
||||||
awful.key({ modkey, "Shift" }, "q", function(c)
|
|
||||||
c:kill()
|
|
||||||
end, { description = "close", group = "client" }),
|
|
||||||
awful.key(
|
|
||||||
{ modkey, "Shift" },
|
|
||||||
"space",
|
|
||||||
awful.client.floating.toggle,
|
|
||||||
{ description = "toggle floating", group = "client" }
|
|
||||||
),
|
|
||||||
awful.key({ modkey }, "space", function(c)
|
|
||||||
c:swap(awful.client.getmaster())
|
|
||||||
end, { description = "move to master", group = "client" }),
|
|
||||||
awful.key({ modkey }, "p", function(c)
|
|
||||||
c:move_to_screen()
|
|
||||||
end, { description = "move to screen", group = "client" }),
|
|
||||||
awful.key({ modkey }, "t", function(c)
|
|
||||||
c.ontop = not c.ontop
|
|
||||||
end, { description = "toggle keep on top", group = "client" })
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Bind all key numbers to tags.
|
|
||||||
-- Be careful: we use keycodes to make it work on any keyboard layout.
|
|
||||||
-- This should map on the top row of your keyboard, usually 1 to 9.
|
|
||||||
for i = 1, 9 do
|
|
||||||
globalkeys = gears.table.join(
|
|
||||||
globalkeys,
|
|
||||||
-- View tag only.
|
|
||||||
awful.key({ modkey }, "#" .. i + 9, function()
|
|
||||||
local screen = awful.screen.focused()
|
|
||||||
local tag = screen.tags[i]
|
|
||||||
if tag then
|
|
||||||
tag:view_only()
|
|
||||||
end
|
|
||||||
end, { description = "view tag #" .. i, group = "tag" }),
|
|
||||||
-- Toggle tag display.
|
|
||||||
awful.key({ modkey, "Control" }, "#" .. i + 9, function()
|
|
||||||
local screen = awful.screen.focused()
|
|
||||||
local tag = screen.tags[i]
|
|
||||||
if tag then
|
|
||||||
awful.tag.viewtoggle(tag)
|
|
||||||
end
|
|
||||||
end, { description = "toggle tag #" .. i, group = "tag" }),
|
|
||||||
-- Move client to tag.
|
|
||||||
awful.key({ modkey, "Shift" }, "#" .. i + 9, function()
|
|
||||||
if client.focus then
|
|
||||||
local tag = client.focus.screen.tags[i]
|
|
||||||
if tag then
|
|
||||||
client.focus:move_to_tag(tag)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end, { description = "move focused client to tag #" .. i, group = "tag" }),
|
|
||||||
-- Toggle tag on focused client.
|
|
||||||
awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, function()
|
|
||||||
if client.focus then
|
|
||||||
local tag = client.focus.screen.tags[i]
|
|
||||||
if tag then
|
|
||||||
client.focus:toggle_tag(tag)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end, { description = "toggle focused client on tag #" .. i, group = "tag" })
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
clientbuttons = gears.table.join(
|
|
||||||
awful.button({}, 1, function(c)
|
|
||||||
c:emit_signal("request::activate", "mouse_click", { raise = true })
|
|
||||||
end),
|
|
||||||
awful.button({ modkey }, 1, function(c)
|
|
||||||
c:emit_signal("request::activate", "mouse_click", { raise = true })
|
|
||||||
awful.mouse.client.move(c)
|
|
||||||
end),
|
|
||||||
awful.button({ modkey }, 3, function(c)
|
|
||||||
c:emit_signal("request::activate", "mouse_click", { raise = true })
|
|
||||||
awful.mouse.client.resize(c)
|
|
||||||
end)
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Set keys
|
|
||||||
root.keys(globalkeys)
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- {{{ Rules
|
|
||||||
-- Rules to apply to new clients (through the "manage" signal).
|
|
||||||
awful.rules.rules = {
|
|
||||||
-- All clients will match this rule.
|
|
||||||
{
|
|
||||||
rule = {},
|
|
||||||
properties = {
|
|
||||||
border_width = beautiful.border_width,
|
|
||||||
border_color = beautiful.border_normal,
|
|
||||||
focus = awful.client.focus.filter,
|
|
||||||
raise = true,
|
|
||||||
keys = clientkeys,
|
|
||||||
buttons = clientbuttons,
|
|
||||||
screen = awful.screen.preferred,
|
|
||||||
placement = awful.placement.no_overlap + awful.placement.no_offscreen,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rule = { instance = "polybar" },
|
|
||||||
properties = { border_width = false, focusable = false, below = true },
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Floating clients.
|
|
||||||
{
|
|
||||||
rule_any = {
|
|
||||||
instance = {
|
|
||||||
"DTA", -- Firefox addon DownThemAll.
|
|
||||||
"copyq", -- Includes session name in class.
|
|
||||||
"pinentry",
|
|
||||||
},
|
|
||||||
class = {
|
|
||||||
"Arandr",
|
|
||||||
"Blueman-manager",
|
|
||||||
"Gpick",
|
|
||||||
"Kruler",
|
|
||||||
"MessageWin", -- kalarm.
|
|
||||||
"Sxiv",
|
|
||||||
"Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
|
|
||||||
"Wpa_gui",
|
|
||||||
"veromix",
|
|
||||||
"xtightvncviewer",
|
|
||||||
},
|
|
||||||
-- Note that the name property shown in xprop might be set slightly after creation of the client
|
|
||||||
-- and the name shown there might not match defined rules here.
|
|
||||||
name = {
|
|
||||||
"Event Tester", -- xev.
|
|
||||||
},
|
|
||||||
role = {
|
|
||||||
"AlarmWindow", -- Thunderbird's calendar.
|
|
||||||
"ConfigManager", -- Thunderbird's about:config.
|
|
||||||
"pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
|
|
||||||
},
|
|
||||||
},
|
|
||||||
properties = { floating = true },
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Add titlebars to normal clients and dialogs
|
|
||||||
{ rule_any = { type = { "normal", "dialog" } }, properties = { titlebars_enabled = false } },
|
|
||||||
}
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- {{{ Signals
|
|
||||||
-- Signal function to execute when a new client appears.
|
|
||||||
client.connect_signal("manage", function(c)
|
|
||||||
-- Set the windows at the slave,
|
|
||||||
-- i.e. put it at the end of others instead of setting it master.
|
|
||||||
-- if not awesome.startup then awful.client.setslave(c) end
|
|
||||||
|
|
||||||
if awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then
|
|
||||||
-- Prevent clients from being unreachable after screen count changes.
|
|
||||||
awful.placement.no_offscreen(c)
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- Enable sloppy focus, so that focus follows mouse.
|
|
||||||
client.connect_signal("mouse::enter", function(c)
|
|
||||||
c:emit_signal("request::activate", "mouse_enter", { raise = false })
|
|
||||||
end)
|
|
||||||
|
|
||||||
client.connect_signal("focus", function(c)
|
|
||||||
c.border_color = beautiful.border_focus
|
|
||||||
end)
|
|
||||||
client.connect_signal("unfocus", function(c)
|
|
||||||
c.border_color = beautiful.border_normal
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- Gaps
|
|
||||||
beautiful.useless_gap = 10
|
|
||||||
|
|
||||||
client.connect_signal("property::minimized", function(c)
|
|
||||||
c.minimized = false
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- client.connect_signal("property::maximized", function(c)
|
|
||||||
-- c.shape = function(cr, w, h)
|
|
||||||
-- gears.shape.rounded_rect(cr, w, h, 0)
|
|
||||||
-- end
|
|
||||||
-- end)
|
|
||||||
|
|
||||||
-- rounded borders
|
|
||||||
client.connect_signal("manage", function(c)
|
|
||||||
if c.instance ~= "polybar" then
|
|
||||||
c.shape = function(cr, w, h)
|
|
||||||
gears.shape.rounded_rect(cr, w, h, 0)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- !!! somehow this breaks fullscreen !!!
|
|
||||||
-- floating on top always
|
|
||||||
-- client.connect_signal("property::floating", function(c)
|
|
||||||
-- if c.floating then
|
|
||||||
-- c.ontop = true
|
|
||||||
-- else
|
|
||||||
-- c.ontop = false
|
|
||||||
-- end
|
|
||||||
-- end)
|
|
||||||
|
|
||||||
-- Autostart
|
|
||||||
-- awful.spawn.with_shell("picom")
|
|
||||||
awful.spawn.with_shell("$HOME/.config/polybar/launch_polybar.sh")
|
|
||||||
awful.spawn.with_shell("~/.fehbg")
|
|
||||||
awful.spawn.with_shell("xinput set-prop 13 298 0, -1")
|
|
||||||
awful.spawn.with_shell("amixer -c 0 set Front unmute")
|
|
||||||
-- awful.spawn.with_shell("mpDris2")
|
|
||||||
-- awful.spawn.with_shell("dex -ae i3")
|
|
||||||
|
|
||||||
naughty.config.defaults.icon_size = 32
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# a simple dmenu session script
|
|
||||||
#
|
|
||||||
###
|
|
||||||
|
|
||||||
DMENU='dmenu -i'
|
|
||||||
choice=$(echo -e "logout\nshutdown\nreboot\nsuspend\nhibernate" | $DMENU)
|
|
||||||
|
|
||||||
case "$choice" in
|
|
||||||
shutdown) shutdown -h now & ;;
|
|
||||||
reboot) shutdown -r now & ;;
|
|
||||||
suspend) systemctl suspend & ;;
|
|
||||||
hibernate) systemctl hibernate & ;;
|
|
||||||
esac
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
pgrep picom>/dev/null &&
|
|
||||||
killall picom &>/dev/null ||
|
|
||||||
setsid picom --config ~/.config/picom/picom.conf & >/dev/null
|
|
||||||
@ -1,236 +0,0 @@
|
|||||||
exec-once = copyq --start-server
|
|
||||||
|
|
||||||
exec-once=waybar
|
|
||||||
exec-once=hyprpaper
|
|
||||||
exec-once=dunst
|
|
||||||
|
|
||||||
exec-once = hyprpm reload -n
|
|
||||||
|
|
||||||
monitor=HDMI-A-1,1920x1080@60,0x360,1
|
|
||||||
monitor=DP-2,2560x1440@144,1920x0,1,vrr,2
|
|
||||||
|
|
||||||
env = GDK_BACKEND,wayland,x11,*
|
|
||||||
# env = QT_QPA_PLATFORM,wayland,xcb,*
|
|
||||||
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
|
|
||||||
|
|
||||||
debug {
|
|
||||||
disable_logs = false
|
|
||||||
}
|
|
||||||
|
|
||||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
|
||||||
input {
|
|
||||||
kb_layout = us,ru
|
|
||||||
kb_variant =
|
|
||||||
kb_model =
|
|
||||||
kb_options = grp:alt_shift_toggle, caps:escape
|
|
||||||
kb_rules =
|
|
||||||
|
|
||||||
accel_profile =
|
|
||||||
|
|
||||||
sensitivity = 1
|
|
||||||
follow_mouse = 1
|
|
||||||
mouse_refocus = true
|
|
||||||
|
|
||||||
repeat_rate = 35
|
|
||||||
repeat_delay = 500
|
|
||||||
|
|
||||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
|
||||||
force_no_accel = true
|
|
||||||
}
|
|
||||||
|
|
||||||
general {
|
|
||||||
gaps_in = 8
|
|
||||||
gaps_out = 20
|
|
||||||
border_size = 2
|
|
||||||
|
|
||||||
col.active_border = rgba(7e9cd8FF)
|
|
||||||
col.inactive_border = rgba(1f1f28FF)
|
|
||||||
|
|
||||||
layout = master
|
|
||||||
}
|
|
||||||
|
|
||||||
cursor {
|
|
||||||
inactive_timeout = 3
|
|
||||||
}
|
|
||||||
|
|
||||||
decoration {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
|
|
||||||
# rounding = 10
|
|
||||||
rounding = 2
|
|
||||||
# drop_shadow = no
|
|
||||||
# shadow_range = 4
|
|
||||||
# shadow_render_power = 3
|
|
||||||
# col.shadow = rgba(1a1a1aee)
|
|
||||||
# inactive_opacity = 0.90
|
|
||||||
# active_opacity = 0.90
|
|
||||||
|
|
||||||
blur {
|
|
||||||
enabled = yes
|
|
||||||
size = 4
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
animations {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
|
||||||
|
|
||||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
|
||||||
|
|
||||||
animation = windows, 1, 4, myBezier, popin 70%
|
|
||||||
animation = windowsOut, 1, 4, default, popin 80%
|
|
||||||
animation = border, 0, 10, default
|
|
||||||
animation = borderangle, 0, 8, default
|
|
||||||
animation = fade, 0, 7, default
|
|
||||||
animation = workspaces, 0, 6, default
|
|
||||||
}
|
|
||||||
|
|
||||||
dwindle {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
|
||||||
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = yes # you probably want this
|
|
||||||
}
|
|
||||||
|
|
||||||
master {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
new_status = master
|
|
||||||
new_on_top = true
|
|
||||||
mfact = 0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
gestures {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
workspace_swipe = off
|
|
||||||
}
|
|
||||||
|
|
||||||
misc {
|
|
||||||
vrr = 2
|
|
||||||
disable_hyprland_logo = true
|
|
||||||
# no_direct_scanout = false
|
|
||||||
}
|
|
||||||
|
|
||||||
# Example windowrule v1
|
|
||||||
# windowrule = float, ^(kitty)$
|
|
||||||
# Example windowrule v2
|
|
||||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
|
||||||
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
||||||
$mainMod = SUPER
|
|
||||||
$terminal = alacritty
|
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
||||||
#
|
|
||||||
bind = $mainMod_SHIFT, E, exit
|
|
||||||
bind = $mainMod_SHIFT, Q, killactive,
|
|
||||||
bind = $mainMod_SHIFT, SPACE, togglefloating,
|
|
||||||
|
|
||||||
bind = $mainMod, D, exec, tofi-drun | xargs hyprctl dispatch exec --
|
|
||||||
|
|
||||||
|
|
||||||
# Apps binds
|
|
||||||
bind = $mainMod, RETURN, exec, $terminal
|
|
||||||
bind = $mainMod, B, exec, librewolf
|
|
||||||
bind = $mainMod, M, exec, $terminal -e ncmpcpp
|
|
||||||
bind = $mainMod, E, exec, $terminal -e neomutt
|
|
||||||
bind = $mainMod, N, exec, $terminal -e newsboat
|
|
||||||
|
|
||||||
# screenshot area
|
|
||||||
bind = $mainMod_SHIFT, S, exec, grim -g "$(slurp)" - | wl-copy
|
|
||||||
|
|
||||||
# powermenu
|
|
||||||
bind = $mainMod_SHIFT, BackSpace, exec, ~/.config/tofi/powermenu.sh
|
|
||||||
|
|
||||||
# bind = $mainMod, P, pseudo, # dwindle
|
|
||||||
# bind = $mainMod, J, togglesplit, # dwindle
|
|
||||||
|
|
||||||
# Move focus with mainMod + arrow keys
|
|
||||||
# bind = $mainMod, L, movefocus, l
|
|
||||||
# bind = $mainMod, H, movefocus, r
|
|
||||||
# bind = $mainMod, up, movefocus, u
|
|
||||||
# bind = $mainMod, down, movefocus, d
|
|
||||||
#
|
|
||||||
bind = $mainMod, L, layoutmsg, cyclenext
|
|
||||||
bind = $mainMod, H, layoutmsg, cycleprev
|
|
||||||
|
|
||||||
bind = $mainMod, J, focusmonitor, -1
|
|
||||||
bind = $mainMod, K, focusmonitor, +1
|
|
||||||
|
|
||||||
bind = $mainMod, Y, splitratio, +0.1
|
|
||||||
bind = $mainMod, O, splitratio, -0.1
|
|
||||||
|
|
||||||
bind = $mainMod, P, movewindow, mon:-1
|
|
||||||
|
|
||||||
bind = $mainMod, SPACE, layoutmsg, swapwithmaster
|
|
||||||
|
|
||||||
bind = $mainMod, F, fullscreen, swapwithmaster
|
|
||||||
|
|
||||||
bind = $mainMod, MINUS, exec, pkill -SIGUSR1 waybar
|
|
||||||
# bindr = SUPER, H, exec, pkill -SIGUSR1 waybar
|
|
||||||
|
|
||||||
|
|
||||||
# volume controls
|
|
||||||
bind = ,XF86AudioPlay, exec, playerctl play-pause
|
|
||||||
bind = ,XF86AudioPause, exec, playerctl play-pause
|
|
||||||
bind = ,XF86AudioNext, exec, playerctl next
|
|
||||||
bind = ,XF86AudioPrev, exec, playerctl previous
|
|
||||||
|
|
||||||
bind = $mainMod_SHIFT, bracketleft, exec, playerctl -p mpd volume 0.05-
|
|
||||||
bind = $mainMod_SHIFT, bracketright, exec, playerctl -p mpd volume 0.05+
|
|
||||||
|
|
||||||
bind = $mainMod, PAGE_UP, pass, ^(discord)$
|
|
||||||
# bind = $mainMod, PAGE_UP, pass, ^(vencord)$
|
|
||||||
# bind = $mainMod, PAGE_UP, pass, ^(discord-screenaudio)$
|
|
||||||
|
|
||||||
bind = ,XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
|
|
||||||
bind = ,XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
|
|
||||||
bind = ,XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
|
|
||||||
|
|
||||||
bind = ,XF86MonBrightnessDown, exec, ddcutil -d 2 setvcp 10 - 5
|
|
||||||
bind = ,XF86MonBrightnessUp, exec, ddcutil -d 2 setvcp 10 + 5
|
|
||||||
|
|
||||||
exec=sleep 5; amixer -c 0 set Front unmute
|
|
||||||
exec=sleep 5; amixer -c 1 set Front unmute
|
|
||||||
|
|
||||||
plugin {
|
|
||||||
split-monitor-workspaces {
|
|
||||||
count = 10
|
|
||||||
enable_persistent_workspaces = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
bind = $mainMod, 1, split-workspace, 1
|
|
||||||
bind = $mainMod, 2, split-workspace, 2
|
|
||||||
bind = $mainMod, 3, split-workspace, 3
|
|
||||||
bind = $mainMod, 4, split-workspace, 4
|
|
||||||
bind = $mainMod, 5, split-workspace, 5
|
|
||||||
bind = $mainMod, 6, split-workspace, 6
|
|
||||||
bind = $mainMod, 7, split-workspace, 7
|
|
||||||
bind = $mainMod, 8, split-workspace, 8
|
|
||||||
bind = $mainMod, 9, split-workspace, 9
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
bind = $mainMod SHIFT, 1, split-movetoworkspacesilent, 1
|
|
||||||
bind = $mainMod SHIFT, 2, split-movetoworkspacesilent, 2
|
|
||||||
bind = $mainMod SHIFT, 3, split-movetoworkspacesilent, 3
|
|
||||||
bind = $mainMod SHIFT, 4, split-movetoworkspacesilent, 4
|
|
||||||
bind = $mainMod SHIFT, 5, split-movetoworkspacesilent, 5
|
|
||||||
bind = $mainMod SHIFT, 6, split-movetoworkspacesilent, 6
|
|
||||||
bind = $mainMod SHIFT, 7, split-movetoworkspacesilent, 7
|
|
||||||
bind = $mainMod SHIFT, 8, split-movetoworkspacesilent, 8
|
|
||||||
bind = $mainMod SHIFT, 9, split-movetoworkspacesilent, 9
|
|
||||||
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
|
|
||||||
exec=sleep 10;xrandr --output DP-2 --primary
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
preload = ~/Pictures/wallpapers/nord-street.png
|
|
||||||
|
|
||||||
wallpaper = HDMI-A-1,~/Pictures/wallpapers/nord-street.png
|
|
||||||
wallpaper = DP-2,~/Pictures/wallpapers/nord-street.png
|
|
||||||
splash = false
|
|
||||||
@ -1,61 +0,0 @@
|
|||||||
$rosewaterAlpha = f5e0dc
|
|
||||||
$flamingoAlpha = f2cdcd
|
|
||||||
$pinkAlpha = f5c2e7
|
|
||||||
$mauveAlpha = cba6f7
|
|
||||||
$redAlpha = f38ba8
|
|
||||||
$maroonAlpha = eba0ac
|
|
||||||
$peachAlpha = fab387
|
|
||||||
$yellowAlpha = f9e2af
|
|
||||||
$greenAlpha = a6e3a1
|
|
||||||
$tealAlpha = 94e2d5
|
|
||||||
$skyAlpha = 89dceb
|
|
||||||
$sapphireAlpha = 74c7ec
|
|
||||||
$blueAlpha = 89b4fa
|
|
||||||
$lavenderAlpha = b4befe
|
|
||||||
|
|
||||||
$textAlpha = cdd6f4
|
|
||||||
$subtext1Alpha = bac2de
|
|
||||||
$subtext0Alpha = a6adc8
|
|
||||||
|
|
||||||
$overlay2Alpha = 9399b2
|
|
||||||
$overlay1Alpha = 7f849c
|
|
||||||
$overlay0Alpha = 6c7086
|
|
||||||
|
|
||||||
$surface2Alpha = 585b70
|
|
||||||
$surface1Alpha = 45475a
|
|
||||||
$surface0Alpha = 313244
|
|
||||||
|
|
||||||
$baseAlpha = 1e1e2e
|
|
||||||
$mantleAlpha = 181825
|
|
||||||
$crustAlpha = 11111b
|
|
||||||
|
|
||||||
$rosewater = 0xfff5e0dc
|
|
||||||
$flamingo = 0xfff2cdcd
|
|
||||||
$pink = 0xfff5c2e7
|
|
||||||
$mauve = 0xffcba6f7
|
|
||||||
$red = 0xfff38ba8
|
|
||||||
$maroon = 0xffeba0ac
|
|
||||||
$peach = 0xfffab387
|
|
||||||
$yellow = 0xfff9e2af
|
|
||||||
$green = 0xffa6e3a1
|
|
||||||
$teal = 0xff94e2d5
|
|
||||||
$sky = 0xff89dceb
|
|
||||||
$sapphire = 0xff74c7ec
|
|
||||||
$blue = 0xff89b4fa
|
|
||||||
$lavender = 0xffb4befe
|
|
||||||
|
|
||||||
$text = 0xffcdd6f4
|
|
||||||
$subtext1 = 0xffbac2de
|
|
||||||
$subtext0 = 0xffa6adc8
|
|
||||||
|
|
||||||
$overlay2 = 0xff9399b2
|
|
||||||
$overlay1 = 0xff7f849c
|
|
||||||
$overlay0 = 0xff6c7086
|
|
||||||
|
|
||||||
$surface2 = 0xff585b70
|
|
||||||
$surface1 = 0xff45475a
|
|
||||||
$surface0 = 0xff313244
|
|
||||||
|
|
||||||
$base = 0xff1e1e2e
|
|
||||||
$mantle = 0xff181825
|
|
||||||
$crust = 0xff11111b
|
|
||||||
@ -1,155 +0,0 @@
|
|||||||
General usage
|
|
||||||
=============
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
mpv infile -o outfile [-of outfileformat] [-ofopts formatoptions] [-orawts] \
|
|
||||||
[(any other mpv options)] \
|
|
||||||
-ovc outvideocodec [-ovcopts outvideocodecoptions] \
|
|
||||||
-oac outaudiocodec [-oacopts outaudiocodecoptions]
|
|
||||||
|
|
||||||
Help for these options is provided if giving help as parameter, as in::
|
|
||||||
|
|
||||||
mpv -ovc help
|
|
||||||
|
|
||||||
The suboptions of these generally are identical to ffmpeg's (as option parsing
|
|
||||||
is simply delegated to ffmpeg). The option -ocopyts enables copying timestamps
|
|
||||||
from the source as-is, instead of fixing them to match audio playback time
|
|
||||||
(note: this doesn't work with all output container formats); -orawts even turns
|
|
||||||
off discontinuity fixing.
|
|
||||||
|
|
||||||
Note that if neither -ofps nor -oautofps is specified, VFR encoding is assumed
|
|
||||||
and the time base is 24000fps. -oautofps sets -ofps to a guessed fps number
|
|
||||||
from the input video. Note that not all codecs and not all formats support VFR
|
|
||||||
encoding, and some which do have bugs when a target bitrate is specified - use
|
|
||||||
-ofps or -oautofps to force CFR encoding in these cases.
|
|
||||||
|
|
||||||
Of course, the options can be stored in a profile, like this .config/mpv/mpv.conf
|
|
||||||
section::
|
|
||||||
|
|
||||||
[myencprofile]
|
|
||||||
vf-add = scale=480:-2
|
|
||||||
ovc = libx264
|
|
||||||
ovcopts-add = preset=medium
|
|
||||||
ovcopts-add = tune=fastdecode
|
|
||||||
ovcopts-add = crf=23
|
|
||||||
ovcopts-add = maxrate=1500k
|
|
||||||
ovcopts-add = bufsize=1000k
|
|
||||||
ovcopts-add = rc_init_occupancy=900k
|
|
||||||
ovcopts-add = refs=2
|
|
||||||
ovcopts-add = profile=baseline
|
|
||||||
oac = aac
|
|
||||||
oacopts-add = b=96k
|
|
||||||
|
|
||||||
It's also possible to define default encoding options by putting them into
|
|
||||||
the section named ``[encoding]``. (This behavior changed after mpv 0.3.x. In
|
|
||||||
mpv 0.3.x, config options in the default section / no section were applied
|
|
||||||
to encoding. This is not the case anymore.)
|
|
||||||
|
|
||||||
One can then encode using this profile using the command::
|
|
||||||
|
|
||||||
mpv infile -o outfile.mp4 -profile myencprofile
|
|
||||||
|
|
||||||
Some example profiles are provided in a file
|
|
||||||
etc/encoding-profiles.conf; as for this, see below.
|
|
||||||
|
|
||||||
|
|
||||||
Encoding examples
|
|
||||||
=================
|
|
||||||
|
|
||||||
These are some examples of encoding targets this code has been used and tested
|
|
||||||
for.
|
|
||||||
|
|
||||||
Typical MPEG-4 Part 2 ("ASP", "DivX") encoding, AVI container::
|
|
||||||
|
|
||||||
mpv infile -o outfile.avi \
|
|
||||||
--vf=fps=25 \
|
|
||||||
-ovc mpeg4 -ovcopts qscale=4 \
|
|
||||||
-oac libmp3lame -oacopts ab=128k
|
|
||||||
|
|
||||||
Note: AVI does not support variable frame rate, so the fps filter must be used.
|
|
||||||
The frame rate should ideally match the input (25 for PAL, 24000/1001 or
|
|
||||||
30000/1001 for NTSC)
|
|
||||||
|
|
||||||
Typical MPEG-4 Part 10 ("AVC", "H.264") encoding, Matroska (MKV) container::
|
|
||||||
|
|
||||||
mpv infile -o outfile.mkv \
|
|
||||||
-ovc libx264 -ovcopts preset=medium,crf=23,profile=baseline \
|
|
||||||
-oac libvorbis -oacopts qscale=3
|
|
||||||
|
|
||||||
Typical MPEG-4 Part 10 ("AVC", "H.264") encoding, MPEG-4 (MP4) container::
|
|
||||||
|
|
||||||
mpv infile -o outfile.mp4 \
|
|
||||||
-ovc libx264 -ovcopts preset=medium,crf=23,profile=baseline \
|
|
||||||
-oac aac -oacopts ab=128k
|
|
||||||
|
|
||||||
Typical VP8 encoding, WebM (restricted Matroska) container::
|
|
||||||
|
|
||||||
mpv infile -o outfile.mkv \
|
|
||||||
-of webm \
|
|
||||||
-ovc libvpx -ovcopts qmin=6,b=1000000k \
|
|
||||||
-oac libvorbis -oacopts qscale=3
|
|
||||||
|
|
||||||
|
|
||||||
Device targets
|
|
||||||
==============
|
|
||||||
|
|
||||||
As the options for various devices can get complex, profiles can be used.
|
|
||||||
|
|
||||||
An example profile file for encoding is provided in
|
|
||||||
etc/encoding-profiles.conf in the source tree. This file is installed and loaded
|
|
||||||
by default. If you want to modify it, you can replace and it with your own copy
|
|
||||||
by doing::
|
|
||||||
|
|
||||||
mkdir -p ~/.mpv
|
|
||||||
cp /etc/mpv/encoding-profiles.conf ~/.mpv/encoding-profiles.conf
|
|
||||||
|
|
||||||
Keep in mind that the default profile is the playback one. If you want to add
|
|
||||||
options that apply only in encoding mode, put them into a ``[encoding]``
|
|
||||||
section.
|
|
||||||
|
|
||||||
Refer to the top of that file for more comments - in a nutshell, the following
|
|
||||||
options are added by it::
|
|
||||||
|
|
||||||
-profile enc-to-dvdpal DVD-Video PAL, use dvdauthor -v pal+4:3 -a ac3+en
|
|
||||||
-profile enc-to-dvdntsc DVD-Video NTSC, use dvdauthor -v ntsc+4:3 -a ac3+en
|
|
||||||
-profile enc-to-bb-9000 MP4 for Blackberry Bold 9000
|
|
||||||
-profile enc-to-nok-6300 3GP for Nokia 6300
|
|
||||||
-profile enc-to-psp MP4 for PlayStation Portable
|
|
||||||
-profile enc-to-iphone MP4 for iPhone
|
|
||||||
-profile enc-to-iphone-4 MP4 for iPhone 4 (double res)
|
|
||||||
-profile enc-to-iphone-5 MP4 for iPhone 5 (even larger res)
|
|
||||||
|
|
||||||
You can encode using these with a command line like::
|
|
||||||
|
|
||||||
mpv infile -o outfile.mp4 -profile enc-to-bb-9000
|
|
||||||
|
|
||||||
Of course, you are free to override options set by these profiles by specifying
|
|
||||||
them after the -profile option.
|
|
||||||
|
|
||||||
|
|
||||||
What works
|
|
||||||
==========
|
|
||||||
|
|
||||||
* Encoding at variable frame rate (default)
|
|
||||||
* Encoding at constant frame rate using --vf=fps=RATE
|
|
||||||
* 2-pass encoding (specify flags=+pass1 in the first pass's -ovcopts, specify
|
|
||||||
flags=+pass2 in the second pass)
|
|
||||||
* Hardcoding subtitles using vobsub, ass or srt subtitle rendering (just
|
|
||||||
configure mpv for the subtitles as usual)
|
|
||||||
* Hardcoding any other mpv OSD (e.g. time codes, using -osdlevel 3 and -vf
|
|
||||||
expand=::::1)
|
|
||||||
* Encoding directly from a DVD, network stream, webcam, or any other source
|
|
||||||
mpv supports
|
|
||||||
* Using x264 presets/tunings/profiles (by using profile=, tune=, preset= in the
|
|
||||||
-ovcopts)
|
|
||||||
* Deinterlacing/Inverse Telecine with any of mpv's filters for that
|
|
||||||
* Audio file converting: mpv -o outfile.mp3 infile.flac -no-video -oac
|
|
||||||
libmp3lame -oacopts ab=320k
|
|
||||||
|
|
||||||
What does not work yet
|
|
||||||
======================
|
|
||||||
|
|
||||||
* 3-pass encoding (ensuring constant total size and bitrate constraints while
|
|
||||||
having VBR audio; mencoder calls this "frameno")
|
|
||||||
* Direct stream copy
|
|
||||||
@ -1,179 +0,0 @@
|
|||||||
# mpv keybindings
|
|
||||||
#
|
|
||||||
# Location of user-defined bindings: ~/.config/mpv/input.conf
|
|
||||||
#
|
|
||||||
# Lines starting with # are comments. Use SHARP to assign the # key.
|
|
||||||
# Copy this file and uncomment and edit the bindings you want to change.
|
|
||||||
#
|
|
||||||
# List of commands and further details: DOCS/man/input.rst
|
|
||||||
# List of special keys: --input-keylist
|
|
||||||
# Keybindings testing mode: mpv --input-test --force-window --idle
|
|
||||||
#
|
|
||||||
# Use 'ignore' to unbind a key fully (e.g. 'ctrl+a ignore').
|
|
||||||
#
|
|
||||||
# Strings need to be quoted and escaped:
|
|
||||||
# KEY show-text "This is a single backslash: \\ and a quote: \" !"
|
|
||||||
#
|
|
||||||
# You can use modifier-key combinations like Shift+Left or Ctrl+Alt+x with
|
|
||||||
# the modifiers Shift, Ctrl, Alt and Meta (may not work on the terminal).
|
|
||||||
#
|
|
||||||
# The default keybindings are hardcoded into the mpv binary.
|
|
||||||
# You can disable them completely with: --no-input-default-bindings
|
|
||||||
|
|
||||||
# Developer note:
|
|
||||||
# On compilation, this file is baked into the mpv binary, and all lines are
|
|
||||||
# uncommented (unless '#' is followed by a space) - thus this file defines the
|
|
||||||
# default key bindings.
|
|
||||||
|
|
||||||
# If this is enabled, treat all the following bindings as default.
|
|
||||||
#default-bindings start
|
|
||||||
|
|
||||||
#MBTN_LEFT ignore # don't do anything
|
|
||||||
#MBTN_LEFT_DBL cycle fullscreen # toggle fullscreen
|
|
||||||
#MBTN_RIGHT cycle pause # toggle pause/playback mode
|
|
||||||
#MBTN_BACK playlist-prev # skip to the previous file
|
|
||||||
#MBTN_FORWARD playlist-next # skip to the next file
|
|
||||||
|
|
||||||
# Mouse wheels, touchpad or other input devices that have axes
|
|
||||||
# if the input devices supports precise scrolling it will also scale the
|
|
||||||
# numeric value accordingly
|
|
||||||
#WHEEL_UP seek 10 # seek 10 seconds forward
|
|
||||||
#WHEEL_DOWN seek -10 # seek 10 seconds backward
|
|
||||||
#WHEEL_LEFT add volume -2
|
|
||||||
#WHEEL_RIGHT add volume 2
|
|
||||||
|
|
||||||
## Seek units are in seconds, but note that these are limited by keyframes
|
|
||||||
#RIGHT seek 5 # seek 5 seconds forward
|
|
||||||
#LEFT seek -5 # seek 5 seconds backward
|
|
||||||
#UP seek 60 # seek 1 minute forward
|
|
||||||
#DOWN seek -60 # seek 1 minute backward
|
|
||||||
# Do smaller, always exact (non-keyframe-limited), seeks with shift.
|
|
||||||
# Don't show them on the OSD (no-osd).
|
|
||||||
#Shift+RIGHT no-osd seek 1 exact # seek exactly 1 second forward
|
|
||||||
#Shift+LEFT no-osd seek -1 exact # seek exactly 1 second backward
|
|
||||||
#Shift+UP no-osd seek 5 exact # seek exactly 5 seconds forward
|
|
||||||
#Shift+DOWN no-osd seek -5 exact # seek exactly 5 seconds backward
|
|
||||||
#Ctrl+LEFT no-osd sub-seek -1 # seek to the previous subtitle
|
|
||||||
#Ctrl+RIGHT no-osd sub-seek 1 # seek to the next subtitle
|
|
||||||
#Ctrl+Shift+LEFT sub-step -1 # change subtitle timing such that the previous subtitle is displayed
|
|
||||||
#Ctrl+Shift+RIGHT sub-step 1 # change subtitle timing such that the next subtitle is displayed
|
|
||||||
#Alt+left add video-pan-x 0.1 # move the video right
|
|
||||||
#Alt+right add video-pan-x -0.1 # move the video left
|
|
||||||
#Alt+up add video-pan-y 0.1 # move the video down
|
|
||||||
#Alt+down add video-pan-y -0.1 # move the video up
|
|
||||||
#Alt++ add video-zoom 0.1 # zoom in
|
|
||||||
#Alt+- add video-zoom -0.1 # zoom out
|
|
||||||
#Alt+BS set video-zoom 0 ; set video-pan-x 0 ; set video-pan-y 0 # reset zoom and pan settings
|
|
||||||
#PGUP add chapter 1 # seek to the next chapter
|
|
||||||
#PGDWN add chapter -1 # seek to the previous chapter
|
|
||||||
#Shift+PGUP seek 600 # seek 10 minutes forward
|
|
||||||
#Shift+PGDWN seek -600 # seek 10 minutes backward
|
|
||||||
#[ multiply speed 1/1.1 # decrease the playback speed
|
|
||||||
#] multiply speed 1.1 # increase the playback speed
|
|
||||||
#{ multiply speed 0.5 # halve the playback speed
|
|
||||||
#} multiply speed 2.0 # double the playback speed
|
|
||||||
#BS set speed 1.0 # reset the speed to normal
|
|
||||||
#Shift+BS revert-seek # undo the previous (or marked) seek
|
|
||||||
#Shift+Ctrl+BS revert-seek mark # mark the position for revert-seek
|
|
||||||
#q quit
|
|
||||||
#Q quit-watch-later # exit and remember the playback position
|
|
||||||
#q {encode} quit 4
|
|
||||||
#ESC set fullscreen no # leave fullscreen
|
|
||||||
#ESC {encode} quit 4
|
|
||||||
#p cycle pause # toggle pause/playback mode
|
|
||||||
#. frame-step # advance one frame and pause
|
|
||||||
#, frame-back-step # go back by one frame and pause
|
|
||||||
#SPACE cycle pause # toggle pause/playback mode
|
|
||||||
#> playlist-next # skip to the next file
|
|
||||||
#ENTER playlist-next # skip to the next file
|
|
||||||
#< playlist-prev # skip to the previous file
|
|
||||||
#O no-osd cycle-values osd-level 3 1 # toggle displaying the OSD on user interaction or always
|
|
||||||
#o show-progress # show playback progress
|
|
||||||
#P show-progress # show playback progress
|
|
||||||
#i script-binding stats/display-stats # display information and statistics
|
|
||||||
#I script-binding stats/display-stats-toggle # toggle displaying information and statistics
|
|
||||||
#` script-binding console/enable # open the console
|
|
||||||
#z add sub-delay -0.1 # shift subtitles 100 ms earlier
|
|
||||||
#Z add sub-delay +0.1 # delay subtitles by 100 ms
|
|
||||||
#x add sub-delay +0.1 # delay subtitles by 100 ms
|
|
||||||
#ctrl++ add audio-delay 0.100 # change audio/video sync by delaying the audio
|
|
||||||
#ctrl+- add audio-delay -0.100 # change audio/video sync by shifting the audio earlier
|
|
||||||
#Shift+g add sub-scale +0.1 # increase the subtitle font size
|
|
||||||
#Shift+f add sub-scale -0.1 # decrease the subtitle font size
|
|
||||||
#9 add volume -2
|
|
||||||
#/ add volume -2
|
|
||||||
#0 add volume 2
|
|
||||||
#* add volume 2
|
|
||||||
#m cycle mute # toggle mute
|
|
||||||
#1 add contrast -1
|
|
||||||
#2 add contrast 1
|
|
||||||
#3 add brightness -1
|
|
||||||
#4 add brightness 1
|
|
||||||
#5 add gamma -1
|
|
||||||
#6 add gamma 1
|
|
||||||
#7 add saturation -1
|
|
||||||
#8 add saturation 1
|
|
||||||
#Alt+0 set current-window-scale 0.5 # halve the window size
|
|
||||||
#Alt+1 set current-window-scale 1.0 # reset the window size
|
|
||||||
#Alt+2 set current-window-scale 2.0 # double the window size
|
|
||||||
#d cycle deinterlace # toggle the deinterlacing filter
|
|
||||||
#r add sub-pos -1 # move subtitles up
|
|
||||||
#R add sub-pos +1 # move subtitles down
|
|
||||||
#t add sub-pos +1 # move subtitles down
|
|
||||||
#v cycle sub-visibility # hide or show the subtitles
|
|
||||||
#Alt+v cycle secondary-sub-visibility # hide or show the secondary subtitles
|
|
||||||
#V cycle sub-ass-vsfilter-aspect-compat # toggle stretching SSA/ASS subtitles with anamorphic videos to match the historical renderer
|
|
||||||
#u cycle-values sub-ass-override "force" "no" # toggle overriding SSA/ASS subtitle styles with the normal styles
|
|
||||||
#j cycle sub # switch subtitle track
|
|
||||||
#J cycle sub down # switch subtitle track backwards
|
|
||||||
#SHARP cycle audio # switch audio track
|
|
||||||
#_ cycle video # switch video track
|
|
||||||
#T cycle ontop # toggle placing the video on top of other windows
|
|
||||||
#f cycle fullscreen # toggle fullscreen
|
|
||||||
#s screenshot # take a screenshot of the video in its original resolution with subtitles
|
|
||||||
#S screenshot video # take a screenshot of the video in its original resolution without subtitles
|
|
||||||
#Ctrl+s screenshot window # take a screenshot of the window with OSD and subtitles
|
|
||||||
#Alt+s screenshot each-frame # automatically screenshot every frame; issue this command again to stop taking screenshots
|
|
||||||
#w add panscan -0.1 # decrease panscan
|
|
||||||
#W add panscan +0.1 # shrink black bars by cropping the video
|
|
||||||
#e add panscan +0.1 # shrink black bars by cropping the video
|
|
||||||
#A cycle-values video-aspect-override "16:9" "4:3" "2.35:1" "-1" # cycle the video aspect ratio ("-1" is the container aspect)
|
|
||||||
#POWER quit
|
|
||||||
#PLAY cycle pause # toggle pause/playback mode
|
|
||||||
#PAUSE cycle pause # toggle pause/playback mode
|
|
||||||
#PLAYPAUSE cycle pause # toggle pause/playback mode
|
|
||||||
#PLAYONLY set pause no # unpause
|
|
||||||
#PAUSEONLY set pause yes # pause
|
|
||||||
#STOP quit
|
|
||||||
#FORWARD seek 60 # seek 1 minute forward
|
|
||||||
#REWIND seek -60 # seek 1 minute backward
|
|
||||||
#NEXT playlist-next # skip to the next file
|
|
||||||
#PREV playlist-prev # skip to the previous file
|
|
||||||
#VOLUME_UP add volume 2
|
|
||||||
#VOLUME_DOWN add volume -2
|
|
||||||
#MUTE cycle mute # toggle mute
|
|
||||||
#CLOSE_WIN quit
|
|
||||||
#CLOSE_WIN {encode} quit 4
|
|
||||||
#ctrl+w quit
|
|
||||||
#E cycle edition # switch edition
|
|
||||||
#l ab-loop # set/clear A-B loop points
|
|
||||||
#L cycle-values loop-file "inf" "no" # toggle infinite looping
|
|
||||||
#ctrl+c quit 4
|
|
||||||
#DEL script-binding osc/visibility # cycle OSC visibility between never, auto (mouse-move) and always
|
|
||||||
#ctrl+h cycle-values hwdec "auto" "no" # toggle hardware decoding
|
|
||||||
#F8 show-text ${playlist} # show the playlist
|
|
||||||
#F9 show-text ${track-list} # show the list of video, audio and sub tracks
|
|
||||||
|
|
||||||
#
|
|
||||||
# Legacy bindings (may or may not be removed in the future)
|
|
||||||
#
|
|
||||||
#! add chapter -1 # seek to the previous chapter
|
|
||||||
#@ add chapter 1 # seek to the next chapter
|
|
||||||
|
|
||||||
#
|
|
||||||
# Not assigned by default
|
|
||||||
# (not an exhaustive list of unbound commands)
|
|
||||||
#
|
|
||||||
|
|
||||||
# ? cycle sub-forced-only # toggle DVD forced subs
|
|
||||||
# ? stop # stop playback (quit or enter idle mode)
|
|
||||||
@ -1,61 +0,0 @@
|
|||||||
|
|
||||||
# This file contains all bindings that were removed after a certain release.
|
|
||||||
# If you want MPlayer bindings, use mplayer-input.conf
|
|
||||||
|
|
||||||
# Pick the bindings you want back and add them to your own input.conf. Append
|
|
||||||
# this file to your input.conf if you want them all back:
|
|
||||||
#
|
|
||||||
# cat restore-old-bindings.conf >> ~/.config/mpv/input.conf
|
|
||||||
#
|
|
||||||
# Older installations use ~/.mpv/input.conf instead.
|
|
||||||
|
|
||||||
# changed in mpv 0.27.0 (macOS and Wayland only)
|
|
||||||
|
|
||||||
# WHEEL_UP seek 10
|
|
||||||
# WHEEL_DOWN seek -10
|
|
||||||
# WHEEL_LEFT seek 5
|
|
||||||
# WHEEL_RIGHT seek -5
|
|
||||||
|
|
||||||
# changed in mpv 0.26.0
|
|
||||||
|
|
||||||
h cycle tv-channel -1 # previous channel
|
|
||||||
k cycle tv-channel +1 # next channel
|
|
||||||
H cycle dvb-channel-name -1 # previous channel
|
|
||||||
K cycle dvb-channel-name +1 # next channel
|
|
||||||
|
|
||||||
I show-text "${filename}" # display filename in osd
|
|
||||||
|
|
||||||
# changed in mpv 0.24.0
|
|
||||||
|
|
||||||
L cycle-values loop "inf" "no"
|
|
||||||
|
|
||||||
# changed in mpv 0.10.0
|
|
||||||
|
|
||||||
O osd
|
|
||||||
D cycle deinterlace
|
|
||||||
d cycle framedrop
|
|
||||||
|
|
||||||
# changed in mpv 0.7.0
|
|
||||||
|
|
||||||
ENTER playlist-next force
|
|
||||||
|
|
||||||
# changed in mpv 0.6.0
|
|
||||||
|
|
||||||
ESC quit
|
|
||||||
|
|
||||||
# changed in mpv 0.5.0
|
|
||||||
|
|
||||||
PGUP seek 600
|
|
||||||
PGDWN seek -600
|
|
||||||
RIGHT seek 10
|
|
||||||
LEFT seek -10
|
|
||||||
+ add audio-delay 0.100
|
|
||||||
- add audio-delay -0.100
|
|
||||||
( add balance -0.1
|
|
||||||
) add balance 0.1
|
|
||||||
F cycle sub-forced-only
|
|
||||||
TAB cycle program
|
|
||||||
A cycle angle
|
|
||||||
U stop
|
|
||||||
o osd
|
|
||||||
I show-text "${filename}"
|
|
||||||
@ -1,657 +0,0 @@
|
|||||||
This file intends to give a big picture overview of how mpv is structured.
|
|
||||||
|
|
||||||
player/*.c:
|
|
||||||
Essentially makes up the player applications, including the main() function
|
|
||||||
and the playback loop.
|
|
||||||
|
|
||||||
Generally, it accesses all other subsystems, initializes them, and pushes
|
|
||||||
data between them during playback.
|
|
||||||
|
|
||||||
The structure is as follows (as of commit e13c05366557cb):
|
|
||||||
* main():
|
|
||||||
* basic initializations (e.g. init_libav() and more)
|
|
||||||
* pre-parse command line (verbosity level, config file locations)
|
|
||||||
* load config files (parse_cfgfiles())
|
|
||||||
* parse command line, add files from the command line to playlist
|
|
||||||
(m_config_parse_mp_command_line())
|
|
||||||
* check help options etc. (call handle_help_options()), possibly exit
|
|
||||||
* call mp_play_files() function that works down the playlist:
|
|
||||||
* run idle loop (idle_loop()), until there are files in the
|
|
||||||
playlist or an exit command was given (only if --idle it set)
|
|
||||||
* actually load and play a file in play_current_file():
|
|
||||||
* run all the dozens of functions to load the file and
|
|
||||||
initialize playback
|
|
||||||
* run a small loop that does normal playback, until the file is
|
|
||||||
done or a command terminates playback
|
|
||||||
(on each iteration, run_playloop() is called, which is rather
|
|
||||||
big and complicated - it decodes some audio and video on
|
|
||||||
each frame, waits for input, etc.)
|
|
||||||
* uninitialize playback
|
|
||||||
* determine next entry on the playlist to play
|
|
||||||
* loop, or exit if no next file or quit is requested
|
|
||||||
(see enum stop_play_reason)
|
|
||||||
* call mp_destroy()
|
|
||||||
* run_playloop():
|
|
||||||
* calls fill_audio_out_buffers()
|
|
||||||
This checks whether new audio needs to be decoded, and pushes it
|
|
||||||
to the AO.
|
|
||||||
* calls write_video()
|
|
||||||
Decode new video, and push it to the VO.
|
|
||||||
* determines whether playback of the current file has ended
|
|
||||||
* determines when to start playback after seeks
|
|
||||||
* and calls a whole lot of other stuff
|
|
||||||
(Really, this function does everything.)
|
|
||||||
|
|
||||||
Things worth saying about the playback core:
|
|
||||||
- most state is in MPContext (core.h), which is not available to the
|
|
||||||
subsystems (and should not be made available)
|
|
||||||
- the currently played tracks are in mpctx->current_tracks, and decoder
|
|
||||||
state in track.dec/d_sub
|
|
||||||
- the other subsystems rarely call back into the frontend, and the frontend
|
|
||||||
polls them instead (probably a good thing)
|
|
||||||
- one exceptions are wakeup callbacks, which notify a "higher" component
|
|
||||||
of a changed situation in a subsystem
|
|
||||||
|
|
||||||
I like to call the player/*.c files the "frontend".
|
|
||||||
|
|
||||||
ta.h & ta.c:
|
|
||||||
Hierarchical memory manager inspired by talloc from Samba. It's like a
|
|
||||||
malloc() with more features. Most importantly, each talloc allocation can
|
|
||||||
have a parent, and if the parent is free'd, all children will be free'd as
|
|
||||||
well. The parent is an arbitrary talloc allocation. It's either set by the
|
|
||||||
allocation call by passing a talloc parent, usually as first argument to the
|
|
||||||
allocation function. It can also be set or reset later by other calls (at
|
|
||||||
least talloc_steal()). A talloc allocation that is used as parent is often
|
|
||||||
called a talloc context.
|
|
||||||
|
|
||||||
One very useful feature of talloc is fast tracking of memory leaks. ("Fast"
|
|
||||||
as in it doesn't require valgrind.) You can enable it by setting the
|
|
||||||
MPV_LEAK_REPORT environment variable to "1":
|
|
||||||
export MPV_LEAK_REPORT=1
|
|
||||||
Or permanently by building with --enable-ta-leak-report.
|
|
||||||
This will list all unfree'd allocations on exit.
|
|
||||||
|
|
||||||
Documentation can be found here:
|
|
||||||
http://git.samba.org/?p=samba.git;a=blob;f=lib/talloc/talloc.h;hb=HEAD
|
|
||||||
|
|
||||||
For some reason, we're still using API-compatible wrappers instead of TA
|
|
||||||
directly. The talloc wrapper has only a subset of the functionality, and
|
|
||||||
in particular the wrappers abort() on memory allocation failure.
|
|
||||||
|
|
||||||
Note: unlike tcmalloc, jemalloc, etc., talloc() is not actually a malloc
|
|
||||||
replacement. It works on top of system malloc and provides additional
|
|
||||||
features that are supposed to make memory management easier.
|
|
||||||
|
|
||||||
player/command.c:
|
|
||||||
This contains the implementation for client API commands and properties.
|
|
||||||
Properties are essentially dynamic variables changed by certain commands.
|
|
||||||
This is basically responsible for all user commands, like initiating
|
|
||||||
seeking, switching tracks, etc. It calls into other player/*.c files,
|
|
||||||
where most of the work is done, but also calls other parts of mpv.
|
|
||||||
|
|
||||||
player/core.h:
|
|
||||||
Data structures and function prototypes for most of player/*.c. They are
|
|
||||||
usually not accessed by other parts of mpv for the sake of modularization.
|
|
||||||
|
|
||||||
player/client.c:
|
|
||||||
This implements the client API (libmpv/client.h). For the most part, this
|
|
||||||
just calls into other parts of the player. This also manages a ringbuffer
|
|
||||||
of events from player to clients.
|
|
||||||
|
|
||||||
options/options.h, options/options.c
|
|
||||||
options.h contains the global option struct MPOpts. The option declarations
|
|
||||||
(option names, types, and MPOpts offsets for the option parser) are in
|
|
||||||
options.c. Most default values for options and MPOpts are in
|
|
||||||
mp_default_opts at the end of options.c.
|
|
||||||
|
|
||||||
MPOpts is unfortunately quite monolithic, but is being incrementally broken
|
|
||||||
up into sub-structs. Many components have their own sub-option structs
|
|
||||||
separate from MPOpts. New options should be bound to the component that uses
|
|
||||||
them. Add a new option table/struct if needed.
|
|
||||||
|
|
||||||
The global MPOpts still contains the sub-structs as fields, which serves to
|
|
||||||
link them to the option parser. For example, an entry like this may be
|
|
||||||
typical:
|
|
||||||
|
|
||||||
{"", OPT_SUBSTRUCT(demux_opts, demux_conf)},
|
|
||||||
|
|
||||||
This directs the option access code to include all options in demux_conf
|
|
||||||
into the global option list, with no prefix (""), and as part of the
|
|
||||||
MPOpts.demux_opts field. The MPOpts.demux_opts field is actually not
|
|
||||||
accessed anywhere, and instead demux.c does this:
|
|
||||||
|
|
||||||
struct m_config_cache *opts_cache =
|
|
||||||
m_config_cache_alloc(demuxer, global, &demux_conf);
|
|
||||||
struct demux_opts *opts = opts_cache->opts;
|
|
||||||
|
|
||||||
... to get a copy of its options.
|
|
||||||
|
|
||||||
See m_config.h (below) how to access options.
|
|
||||||
|
|
||||||
The actual option parser is spread over m_option.c, m_config.c, and
|
|
||||||
parse_commandline.c, and uses the option table in options.c.
|
|
||||||
|
|
||||||
options/m_config.h & m_config.c:
|
|
||||||
Code for querying and managing options. This (unfortunately) contains both
|
|
||||||
declarations for the "legacy-ish" global m_config struct, and ways to access
|
|
||||||
options in a threads-safe way anywhere, like m_config_cache_alloc().
|
|
||||||
|
|
||||||
m_config_cache_alloc() lets anyone read, observe, and write options in any
|
|
||||||
thread. The only state it needs is struct mpv_global, which is an opaque
|
|
||||||
type that can be passed "down" the component hierarchy. For safety reasons,
|
|
||||||
you should not pass down any pointers to option structs (like MPOpts), but
|
|
||||||
instead pass down mpv_global, and use m_config_cache_alloc() (or similar)
|
|
||||||
to get a synchronized copy of the options.
|
|
||||||
|
|
||||||
input/input.c:
|
|
||||||
This translates keyboard input coming from VOs and other sources (such
|
|
||||||
as remote control devices like Apple IR or client API commands) to the
|
|
||||||
key bindings listed in the user's (or the builtin) input.conf and turns
|
|
||||||
them into items of type struct mp_cmd. These commands are queued, and read
|
|
||||||
by playloop.c. They get pushed with run_command() to command.c.
|
|
||||||
|
|
||||||
Note that keyboard input and commands used by the client API are the same.
|
|
||||||
The client API only uses the command parser though, and has its own queue
|
|
||||||
of input commands somewhere else.
|
|
||||||
|
|
||||||
common/msg.h:
|
|
||||||
All terminal output must go through mp_msg().
|
|
||||||
|
|
||||||
stream/*:
|
|
||||||
File input is implemented here. stream.h/.c provides a simple stream based
|
|
||||||
interface (like reading a number of bytes at a given offset). mpv can
|
|
||||||
also play from http streams and such, which is implemented here.
|
|
||||||
|
|
||||||
E.g. if mpv sees "http://something" on the command line, it will pick
|
|
||||||
stream_lavf.c based on the prefix, and pass the rest of the filename to it.
|
|
||||||
|
|
||||||
Some stream inputs are quite special: stream_dvd.c turns DVDs into mpeg
|
|
||||||
streams (DVDs are actually a bunch of vob files etc. on a filesystem),
|
|
||||||
stream_tv.c provides TV input including channel switching.
|
|
||||||
|
|
||||||
Some stream inputs are just there to invoke special demuxers, like
|
|
||||||
stream_mf.c. (Basically to make the prefix "mf://" do something special.)
|
|
||||||
|
|
||||||
demux/:
|
|
||||||
Demuxers split data streams into audio/video/sub streams, which in turn
|
|
||||||
are split in packets. Packets (see demux_packet.h) are mostly byte chunks
|
|
||||||
tagged with a playback time (PTS). These packets are passed to the decoders.
|
|
||||||
|
|
||||||
Most demuxers have been removed from this fork, and the only important and
|
|
||||||
"actual" demuxers left are demux_mkv.c and demux_lavf.c (uses libavformat).
|
|
||||||
There are some pseudo demuxers like demux_cue.c.
|
|
||||||
|
|
||||||
The main interface is in demux.h. The stream headers are in stheader.h.
|
|
||||||
There is a stream header for each audio/video/sub stream, and each of them
|
|
||||||
holds codec information about the stream and other information.
|
|
||||||
|
|
||||||
demux.c is a bit big, the main reason being that it contains the demuxer
|
|
||||||
cache, which is implemented as a list of packets. The cache is complex
|
|
||||||
because it support seeking, multiple ranges, prefetching, and so on.
|
|
||||||
|
|
||||||
video/:
|
|
||||||
This contains several things related to audio/video decoding, as well as
|
|
||||||
video filters.
|
|
||||||
|
|
||||||
mp_image.h and img_format.h define how mpv stores decoded video frames
|
|
||||||
internally.
|
|
||||||
|
|
||||||
video/decode/:
|
|
||||||
vd_*.c are video decoders. (There's only vd_lavc.c left.) dec_video.c
|
|
||||||
handles most of connecting the frontend with the actual decoder.
|
|
||||||
|
|
||||||
video/filter/:
|
|
||||||
vf_*.c and vf.c form the video filter chain. They are fed by the video
|
|
||||||
decoder, and output the filtered images to the VOs though vf_vo.c. By
|
|
||||||
default, no video filters (except vf_vo) are used. vf_scale is automatically
|
|
||||||
inserted if the video output can't handle the video format used by the
|
|
||||||
decoder.
|
|
||||||
|
|
||||||
video/out/:
|
|
||||||
Video output. They also create GUI windows and handle user input. In most
|
|
||||||
cases, the windowing code is shared among VOs, like x11_common.c for X11 and
|
|
||||||
w32_common.c for Windows. The VOs stand between frontend and windowing code.
|
|
||||||
vo_gpu can pick a windowing system at runtime, e.g. the same binary can
|
|
||||||
provide both X11 and Cocoa support on OSX.
|
|
||||||
|
|
||||||
VOs can be reconfigured at runtime. A vo_reconfig() call can change the video
|
|
||||||
resolution and format, without destroying the window.
|
|
||||||
|
|
||||||
vo_gpu should be taken as reference.
|
|
||||||
|
|
||||||
audio/:
|
|
||||||
format.h/format.c define the uncompressed audio formats. (As well as some
|
|
||||||
compressed formats used for spdif.)
|
|
||||||
|
|
||||||
audio/decode/:
|
|
||||||
ad_*.c and dec_audio.c handle audio decoding. ad_lavc.c is the
|
|
||||||
decoder using ffmpeg. ad_spdif.c is not really a decoder, but is used for
|
|
||||||
compressed audio passthrough.
|
|
||||||
|
|
||||||
audio/filter/:
|
|
||||||
Audio filter chain. af_lavrresample is inserted if any form of conversion
|
|
||||||
between audio formats is needed.
|
|
||||||
|
|
||||||
audio/out/:
|
|
||||||
Audio outputs.
|
|
||||||
|
|
||||||
Unlike VOs, AOs can't be reconfigured on a format change. On audio format
|
|
||||||
changes, the AO will simply be closed and re-opened.
|
|
||||||
|
|
||||||
There are wrappers to support for two types of audio APIs: push.c and
|
|
||||||
pull.c. ao.c calls into one of these. They contain generic code to deal
|
|
||||||
with the data flow these APIs impose.
|
|
||||||
|
|
||||||
Note that mpv synchronizes the video to the audio. That's the reason
|
|
||||||
why buggy audio drivers can have a bad influence on playback quality.
|
|
||||||
|
|
||||||
sub/:
|
|
||||||
Contains subtitle and OSD rendering.
|
|
||||||
|
|
||||||
osd.c/.h is actually the OSD code. It queries dec_sub.c to retrieve
|
|
||||||
decoded/rendered subtitles. osd_libass.c is the actual implementation of
|
|
||||||
the OSD text renderer (which uses libass, and takes care of all the tricky
|
|
||||||
fontconfig/freetype API usage and text layouting).
|
|
||||||
|
|
||||||
The VOs call osd.c to render OSD and subtitle (via e.g. osd_draw()). osd.c
|
|
||||||
in turn asks dec_sub.c for subtitle overlay bitmaps, which relays the
|
|
||||||
request to one of the sd_*.c subtitle decoders/renderers.
|
|
||||||
|
|
||||||
Subtitle loading is in demux/. The MPlayer subreader.c is mostly gone - parts
|
|
||||||
of it survive in demux_subreader.c. It's used as last fallback, or to handle
|
|
||||||
some text subtitle types on Libav. It should go away eventually. Normally,
|
|
||||||
subtitles are loaded via demux_lavf.c.
|
|
||||||
|
|
||||||
The subtitles are passed to dec_sub.c and the subtitle decoders in sd_*.c
|
|
||||||
as they are demuxed. All text subtitles are rendered by sd_ass.c. If text
|
|
||||||
subtitles are not in the ASS format, the libavcodec subtitle converters are
|
|
||||||
used (lavc_conv.c).
|
|
||||||
|
|
||||||
Text subtitles can be preloaded, in which case they are read fully as soon
|
|
||||||
as the subtitle is selected. In this case, they are effectively stored in
|
|
||||||
sd_ass.c's internal state.
|
|
||||||
|
|
||||||
etc/:
|
|
||||||
The file input.conf is actually integrated into the mpv binary by the
|
|
||||||
build system. It contains the default keybindings.
|
|
||||||
|
|
||||||
Best practices and Concepts within mpv
|
|
||||||
======================================
|
|
||||||
|
|
||||||
General contribution etc.
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
See: DOCS/contribute.md
|
|
||||||
|
|
||||||
Error checking
|
|
||||||
--------------
|
|
||||||
|
|
||||||
If an error is relevant, it should be handled. If it's interesting, log the
|
|
||||||
error. However, mpv often keeps errors silent and reports failures somewhat
|
|
||||||
coarsely by propagating them upwards the caller chain. This is OK, as long as
|
|
||||||
the errors are not very interesting, or would require a developer to debug it
|
|
||||||
anyway (in which case using a debugger would be more convenient, and the
|
|
||||||
developer would need to add temporary debug printfs to get extremely detailed
|
|
||||||
information which would not be appropriate during normal operation).
|
|
||||||
|
|
||||||
Basically, keep a balance on error reporting. But always check them, unless you
|
|
||||||
have a good argument not to.
|
|
||||||
|
|
||||||
Memory allocation errors (OOM) are a special class of errors. Normally such
|
|
||||||
allocation failures are not handled "properly". Instead, abort() is called.
|
|
||||||
(New code should use MP_HANDLE_OOM() for this.) This is done out of laziness and
|
|
||||||
for convenience, and due to the fact that MPlayer/mplayer2 never handled it
|
|
||||||
correctly. (MPlayer varied between handling it correctly, trying to do so but
|
|
||||||
failing, and just not caring, while mplayer2 started using abort() for it.)
|
|
||||||
|
|
||||||
This is justifiable in a number of ways. Error handling paths are notoriously
|
|
||||||
untested and buggy, so merely having them won't make your program more reliable.
|
|
||||||
Having these error handling paths also complicates non-error code, due to the
|
|
||||||
need to roll back state at any point after a memory allocation.
|
|
||||||
|
|
||||||
Take any larger body of code, that is supposed to handle OOM, and test whether
|
|
||||||
the error paths actually work, for example by overriding malloc with a version
|
|
||||||
that randomly fails. You will find bugs quickly, and often they will be very
|
|
||||||
annoying to fix (if you can even reproduce them).
|
|
||||||
|
|
||||||
In addition, a clear indication that something went wrong may be missing. On
|
|
||||||
error your program may exhibit "degraded" behavior by design. Consider a video
|
|
||||||
encoder dropping frames somewhere in the middle of a video due to temporary
|
|
||||||
allocation failures, instead of just exiting with an errors. In other cases, it
|
|
||||||
may open conceptual security holes. Failing fast may be better.
|
|
||||||
|
|
||||||
mpv uses GPU APIs, which may be break on allocation errors (because driver
|
|
||||||
authors will have the same issues as described here), or don't even have a real
|
|
||||||
concept for dealing with OOM (OpenGL).
|
|
||||||
|
|
||||||
libmpv is often used by GUIs, which I predict always break if OOM happens.
|
|
||||||
|
|
||||||
Last but not least, OSes like Linux use "overcommit", which basically means that
|
|
||||||
your program may crash any time OOM happens, even if it doesn't use malloc() at
|
|
||||||
all!
|
|
||||||
|
|
||||||
But still, don't just assume malloc() always succeeds. Use MP_HANDLE_OOM(). The
|
|
||||||
ta* APIs do this for you. The reason for this is that dereferencing a NULL
|
|
||||||
pointer can have security relevant consequences if large offsets are involved.
|
|
||||||
Also, a clear error message is better than a random segfault.
|
|
||||||
|
|
||||||
Some big memory allocations are checked anyway. For example, all code must
|
|
||||||
assume that allocating video frames or packets can fail. (The above example
|
|
||||||
of dropping video frames during encoding is entirely possible in mpv.)
|
|
||||||
|
|
||||||
Undefined behavior
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Undefined behavior (UB) is a concept in the C language. C is famous for being a
|
|
||||||
language that makes it almost impossible to write working code, because
|
|
||||||
undefined behavior is so easily triggered, compilers will happily abuse it to
|
|
||||||
generate "faster" code, debugging tools will shout at you, and sometimes it
|
|
||||||
even means your code doesn't work.
|
|
||||||
|
|
||||||
There is a lot of literature on this topic. Read it.
|
|
||||||
|
|
||||||
(In C's defense, UB exists in other languages too, but since they're not used
|
|
||||||
for low level infrastructure, and/or these languages are at times not rigorously
|
|
||||||
defined, simply nobody cares. However, the C standard committee is still guilty
|
|
||||||
for not addressing this. I'll admit that I can't even tell from the standard's
|
|
||||||
gibberish whether some specific behavior is UB or not. It's written like tax
|
|
||||||
law.)
|
|
||||||
|
|
||||||
In mpv, we generally try to avoid undefined behavior. For one, we want portable
|
|
||||||
and reliable operation. But more importantly, we want clean output from
|
|
||||||
debugging tools, in order to find real bugs more quickly and effectively.
|
|
||||||
|
|
||||||
Avoid the "works in practice" argument. Once debugging tools come into play, or
|
|
||||||
simply when "in practice" stops being true, this will all get back to you in a
|
|
||||||
bad way.
|
|
||||||
|
|
||||||
Global state, library safety
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
Mutable global state is when code uses global variables that are not read-only.
|
|
||||||
This must be avoided in mpv. Always use context structs that the caller of
|
|
||||||
your code needs to allocate, and whose pointers are passed to your functions.
|
|
||||||
|
|
||||||
Library safety means that your code (or library) can be used by a library
|
|
||||||
without causing conflicts with other library users in the same process. To any
|
|
||||||
piece of code, a "safe" library's API can simply be used, without having to
|
|
||||||
worry about other API users that may be around somewhere.
|
|
||||||
|
|
||||||
Libraries are often not library safe, because they they use global mutable state
|
|
||||||
or other "global" resources. Typical examples include use of signals, simple
|
|
||||||
global variables (like hsearch() in libc), or internal caches not protected by
|
|
||||||
locks.
|
|
||||||
|
|
||||||
A surprisingly high number of libraries are not library safe because they need
|
|
||||||
global initialization. Typically they provide an API function, which
|
|
||||||
"initializes" the library, and which must be called before calling any other
|
|
||||||
API functions. Often, you are to provide global configuration parameters, which
|
|
||||||
can change the behavior of the library. If two libraries A and B use library C,
|
|
||||||
but A and B initialize C with different parameters, something "bad" may happen.
|
|
||||||
In addition, these global initialization functions are often not thread-safe. So
|
|
||||||
if A and B try to initialize C at the same time (from different threads and
|
|
||||||
without knowing about each other), it may cause undefined behavior. (libcurl is
|
|
||||||
a good example of both of these issues. FFmpeg and some TLS libraries used to be
|
|
||||||
affected, but improved.)
|
|
||||||
|
|
||||||
This is so bad because library A and B from the previous example most likely
|
|
||||||
have no way to cooperate, because they're from different authors and have no
|
|
||||||
business knowing each others. They'd need a library D, which wraps library C
|
|
||||||
in a safe way. Unfortunately, typically something worse happens: libraries get
|
|
||||||
"infected" by the unsafeness of its sub-libraries, and export a global init API
|
|
||||||
just to initialize the sub-libraries. In the previous example, libraries A and B
|
|
||||||
would export global init APIs just to init library C, even though the rest of
|
|
||||||
A/B are clean and library safe. (Again, libcurl is an example of this, if you
|
|
||||||
subtract other historic anti-features.)
|
|
||||||
|
|
||||||
The main problem with library safety is that its lack propagates to all
|
|
||||||
libraries using the library.
|
|
||||||
|
|
||||||
We require libmpv to be library safe. This is not really possible, because some
|
|
||||||
libraries are not library safe (FFmpeg, Xlib, partially ALSA). However, for
|
|
||||||
ideological reasons, there is no global init API, and best effort is made to try
|
|
||||||
to avoid problems.
|
|
||||||
|
|
||||||
libmpv has some features that are not library safe, but which are disabled by
|
|
||||||
default (such as terminal usage aka stdout, or JSON IPC blocking SIGPIPE for
|
|
||||||
internal convenience).
|
|
||||||
|
|
||||||
A notable, very disgustingly library unsafe behavior of libmpv is calling
|
|
||||||
abort() on some memory allocation failure. See error checking section.
|
|
||||||
|
|
||||||
Logging
|
|
||||||
-------
|
|
||||||
|
|
||||||
All logging and terminal output in mpv goes through the functions and macros
|
|
||||||
provided in common/msg.h. This is in part for library safety, and in part to
|
|
||||||
make sure users can silence all output, or to redirect the output elsewhere,
|
|
||||||
like a log file or the internal console.lua script.
|
|
||||||
|
|
||||||
Locking
|
|
||||||
-------
|
|
||||||
|
|
||||||
See generally available literature. In mpv, we use pthread for this.
|
|
||||||
|
|
||||||
Always keep locking clean. Don't skip locking just because it will work "in
|
|
||||||
practice". (See undefined behavior section.) If your use case is simple, you may
|
|
||||||
use C11 atomics (osdep/atomic.h for partial C99 support), but most likely you
|
|
||||||
will only hurt yourself and others.
|
|
||||||
|
|
||||||
Always make clear which fields in a struct are protected by which lock. If a
|
|
||||||
field is immutable, or simply not thread-safe (e.g. state for a single worker
|
|
||||||
thread), document it as well.
|
|
||||||
|
|
||||||
Internal mpv APIs are assumed to be not thread-safe by default. If they have
|
|
||||||
special guarantees (such as being usable by more than one thread at a time),
|
|
||||||
these should be explicitly documented.
|
|
||||||
|
|
||||||
All internal mpv APIs must be free of global state. Even if a component is not
|
|
||||||
thread-safe, multiple threads can use _different_ instances of it without any
|
|
||||||
locking.
|
|
||||||
|
|
||||||
On a side note, recursive locks may seem convenient at first, but introduce
|
|
||||||
additional problems with condition variables and locking hierarchies. They
|
|
||||||
should be avoided.
|
|
||||||
|
|
||||||
Locking hierarchy
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
A simple way to avoid deadlocks with classic locking is to define a locking
|
|
||||||
hierarchy or lock order. If all threads acquire locks in the same order, no
|
|
||||||
deadlocks will happen.
|
|
||||||
|
|
||||||
For example, a "leaf" lock is a lock that is below all other locks in the
|
|
||||||
hierarchy. You can acquire it any time, as long as you don't acquire other
|
|
||||||
locks while holding it.
|
|
||||||
|
|
||||||
Unfortunately, C has no way to declare or check the lock order, so you should at
|
|
||||||
least document it.
|
|
||||||
|
|
||||||
In addition, try to avoid exposing locks to the outside. Making the declaration
|
|
||||||
of a lock private to a specific .c file (and _not_ exporting accessors or
|
|
||||||
lock/unlock functions that manipulate the lock) is a good idea. Your component's
|
|
||||||
API may acquire internal locks, but should release them when returning. Keeping
|
|
||||||
the entire locking in a single file makes it easy to check it.
|
|
||||||
|
|
||||||
Avoiding callback hell
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
mpv code is separated in components, like the "frontend" (i.e. MPContext mpctx),
|
|
||||||
VOs, AOs, demuxers, and more. The frontend usually calls "down" the usage
|
|
||||||
hierarchy: mpctx almost on top, then things like vo/ao, and utility code on the
|
|
||||||
very bottom.
|
|
||||||
|
|
||||||
"Callback hell" is when when components call both up and down the hierarchy,
|
|
||||||
which for example leads to accidentally recursion, reentrancy problems, or
|
|
||||||
locking nightmares. This is avoided by (mostly) calling only down the hierarchy.
|
|
||||||
Basically the call graph forms a DAG. The other direction is handled by event
|
|
||||||
queues, wakeup callbacks, and similar mechanisms.
|
|
||||||
|
|
||||||
Typically, a component provides an API, and does not know anything about its
|
|
||||||
user. The API user (component higher in the hierarchy) polls the state of the
|
|
||||||
lower component when needed.
|
|
||||||
|
|
||||||
This also enforces some level of modularization, and with some luck the locking
|
|
||||||
hierarchy. (Basically, locks of lower components automatically become leaf
|
|
||||||
locks.) Another positive effect is simpler memory management.
|
|
||||||
|
|
||||||
(Also see e.g.: http://250bpm.com/blog:24)
|
|
||||||
|
|
||||||
Wakeup callbacks
|
|
||||||
----------------
|
|
||||||
|
|
||||||
This is a common concept in mpv. Even the public API uses it. It's used when an
|
|
||||||
API has internal threads (or otherwise triggers asynchronous events), but the
|
|
||||||
component call hierarchy needs to be kept. The wakeup callback is the only
|
|
||||||
exception to the call hierarchy, and always calls up.
|
|
||||||
|
|
||||||
For example, vo spawns a thread that the API user (the mpv frontend) does not
|
|
||||||
need to know about. vo simply provides a single-threaded API (or that looks like
|
|
||||||
one). This API needs a way to notify the API user of new events. But the vo
|
|
||||||
event producer is on the vo thread - it can't simply invoke a callback back into
|
|
||||||
the API user, because then the API user has to deal with locking, despite not
|
|
||||||
using threads. In addition, this will probably cause problems like mentioned in
|
|
||||||
the "callback hell" section, especially lock order issues.
|
|
||||||
|
|
||||||
The solution is the wakeup callback. It merely unblocks the API user from
|
|
||||||
waiting, and the API user then uses the normal vo API to examine whether or
|
|
||||||
which state changed. As a concept, it documents what a wakeup callback is
|
|
||||||
allowed to do and what not, to avoid the aforementioned problems.
|
|
||||||
|
|
||||||
Generally, you are not allowed to call any API from the wakeup callback. You
|
|
||||||
just do whatever is needed to unblock your thread. For example, if it's waiting
|
|
||||||
on a mutex/condition variable, acquire the mutex, set a change flag, signal
|
|
||||||
the condition variable, unlock, return. (This mutex must not be held when
|
|
||||||
calling the API. It must be a leaf lock.)
|
|
||||||
|
|
||||||
Restricting the wakeup callback like this sidesteps any reentrancy issues and
|
|
||||||
other complexities. The API implementation can simply hold internal (and
|
|
||||||
non-recursive) locks while invoking the wakeup callback.
|
|
||||||
|
|
||||||
The API user still needs to deal with locking (probably), but there's only the
|
|
||||||
need to implement a single "receiver", that can handle the entire API of the
|
|
||||||
used component. (Or multiple APIs - MPContext for example has only 1 wakeup
|
|
||||||
callback that handles all AOs, VOs, input, demuxers, and more. It simple re-runs
|
|
||||||
the playloop.)
|
|
||||||
|
|
||||||
You could get something more advanced by turning this into a message queue. The
|
|
||||||
API would append a message to the queue, and the API user can read it. But then
|
|
||||||
you still need a way to "wakeup" the API user (unless you force the API user
|
|
||||||
to block on your API, which will make things inconvenient for the API user). You
|
|
||||||
also need to worry about what happens if the message queue overruns (you either
|
|
||||||
lose messages or have unbounded memory usage). In the mpv public API, the
|
|
||||||
distinction between message queue and wakeup callback is sort of blurry, because
|
|
||||||
it does provide a message queue, but an additional wakeup callback, so API
|
|
||||||
users are not required to call mpv_wait_event() with a high timeout.
|
|
||||||
|
|
||||||
mpv itself prefers using wakeup callbacks over a generic event queue, because
|
|
||||||
most times an event queue is not needed (or complicates things), and it is
|
|
||||||
better to do it manually.
|
|
||||||
|
|
||||||
(You could still abstract the API user side of wakeup callback handling, and
|
|
||||||
avoid reimplementing it all the time. Although mp_dispatch_queue already
|
|
||||||
provides mechanisms for this.)
|
|
||||||
|
|
||||||
Condition variables
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
They're used whenever a thread needs to wait for something, without nonsense
|
|
||||||
like sleep calls or busy waiting. mpv uses the standard pthread API for this.
|
|
||||||
There's a lot of literature on it. Read it.
|
|
||||||
|
|
||||||
For initial understanding, it may be helpful to know that condition variables
|
|
||||||
are not variables that signal a condition. pthread_cond_t does not have any
|
|
||||||
state per-se. Maybe pthread_cond_t would better be named pthread_interrupt_t,
|
|
||||||
because its sole purpose is to interrupt a thread waiting via pthread_cond_wait()
|
|
||||||
(or similar). The "something" in "waiting for something" can be called
|
|
||||||
predicate (to avoid confusing it with "condition"). Consult literature for the
|
|
||||||
proper terms.
|
|
||||||
|
|
||||||
The very short version is...
|
|
||||||
|
|
||||||
Shared declarations:
|
|
||||||
|
|
||||||
pthread_mutex_t lock;
|
|
||||||
pthread_cond_t cond_var;
|
|
||||||
struct something state_var; // protected by lock, changes signaled by cond_var
|
|
||||||
|
|
||||||
Waiter thread:
|
|
||||||
|
|
||||||
pthread_mutex_lock(&lock);
|
|
||||||
|
|
||||||
// Wait for a change in state_var. We want to wait until predicate_fulfilled()
|
|
||||||
// returns true.
|
|
||||||
// Must be a loop for 2 reasons:
|
|
||||||
// 1. cond_var may be associated with other conditions too
|
|
||||||
// 2. pthread_cond_wait() can have sporadic wakeups
|
|
||||||
while (!predicate_fulfilled(&state_var)) {
|
|
||||||
// This unlocks, waits for cond_var to be signaled, and then locks again.
|
|
||||||
// The _whole_ point of cond_var is that unlocking and waiting for the
|
|
||||||
// signal happens atomically.
|
|
||||||
pthread_cond_wait(&cond_var, &lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Here you may react to the state change. The state cannot change
|
|
||||||
// asynchronously as long as you still hold the lock (and didn't release
|
|
||||||
// and reacquire it).
|
|
||||||
// ...
|
|
||||||
|
|
||||||
pthread_mutex_unlock(&lock);
|
|
||||||
|
|
||||||
Signaler thread:
|
|
||||||
|
|
||||||
pthread_mutex_lock(&lock);
|
|
||||||
|
|
||||||
// Something changed. Update the shared variable with the new state.
|
|
||||||
update_state(&state_var);
|
|
||||||
|
|
||||||
// Notify that something changed. This will wake up the waiter thread if
|
|
||||||
// it's blocked in pthread_cond_wait(). If not, nothing happens.
|
|
||||||
pthread_cond_broadcast(&cond_var);
|
|
||||||
|
|
||||||
// Fun fact: good implementations wake up the waiter only when the lock is
|
|
||||||
// released, to reduce kernel scheduling overhead.
|
|
||||||
pthread_mutex_unlock(&lock);
|
|
||||||
|
|
||||||
Some basic rules:
|
|
||||||
1. Always access your state under proper locking
|
|
||||||
2. Always check your predicate before every call to pthread_cond_wait()
|
|
||||||
(And don't call pthread_cond_wait() if the predicate is fulfilled.)
|
|
||||||
3. Always call pthread_cond_wait() in a loop
|
|
||||||
(And only if your predicate failed without releasing the lock..)
|
|
||||||
4. Always call pthread_cond_broadcast()/_signal() inside of its associated
|
|
||||||
lock
|
|
||||||
|
|
||||||
mpv sometimes violates rule 3, and leaves "retrying" (i.e. looping) to the
|
|
||||||
caller.
|
|
||||||
|
|
||||||
Common pitfalls:
|
|
||||||
- Thinking that pthread_cond_t is some kind of semaphore, or holds any
|
|
||||||
application state or the user predicate (it _only_ wakes up threads
|
|
||||||
that are at the same time blocking on pthread_cond_wait() and friends,
|
|
||||||
nothing else)
|
|
||||||
- Changing the predicate, but not updating all pthread_cond_broadcast()/
|
|
||||||
_signal() calls correctly
|
|
||||||
- Forgetting that pthread_cond_wait() unlocks the lock (other threads can
|
|
||||||
and must acquire the lock)
|
|
||||||
- Holding multiple nested locks while trying to wait (=> deadlock, violates
|
|
||||||
the lock order anyway)
|
|
||||||
- Waiting for a predicate correctly, but unlocking/relocking before acting
|
|
||||||
on it (unlocking allows arbitrary state changes)
|
|
||||||
- Confusing which lock/condition var. is used to manage a bit of state
|
|
||||||
|
|
||||||
Generally available literature probably has better examples and explanations.
|
|
||||||
|
|
||||||
Using condition variables the proper way is generally preferred over using more
|
|
||||||
messy variants of them. (Just saying because on win32, "SetEvent" exists, and
|
|
||||||
it's inferior to condition variables. Try to avoid the win32 primitives, even if
|
|
||||||
you're dealing with Windows-only code.)
|
|
||||||
|
|
||||||
Threads
|
|
||||||
-------
|
|
||||||
|
|
||||||
Threading should be conservatively used. Normally, mpv code pretends to be
|
|
||||||
single-threaded, and provides thread-unsafe APIs. Threads are used coarsely,
|
|
||||||
and if you can avoid messing with threads, you should. For example, VOs and AOs
|
|
||||||
do not need to deal with threads normally, even though they run on separate
|
|
||||||
threads. The glue code "isolates" them from any threading issues.
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
start=7562.692000
|
|
||||||
volume=52.000000
|
|
||||||
aid=4
|
|
||||||
sid=1
|
|
||||||
@ -10,4 +10,5 @@ def_key "l"
|
|||||||
enter_directory
|
enter_directory
|
||||||
def_key "h"
|
def_key "h"
|
||||||
jump_to_parent_directory
|
jump_to_parent_directory
|
||||||
|
def_key "4"
|
||||||
|
show_lyrics
|
||||||
|
|||||||
@ -375,7 +375,7 @@ song_list_format = {%a - }{%t}|{$8%f$9}$R{$3%l$9}
|
|||||||
#
|
#
|
||||||
## Available values: classic, alternative.
|
## Available values: classic, alternative.
|
||||||
##
|
##
|
||||||
#user_interface = classic
|
user_interface = alternative
|
||||||
#
|
#
|
||||||
#data_fetching_delay = yes
|
#data_fetching_delay = yes
|
||||||
#
|
#
|
||||||
@ -406,7 +406,7 @@ song_list_format = {%a - }{%t}|{$8%f$9}$R{$3%l$9}
|
|||||||
#
|
#
|
||||||
#cyclic_scrolling = no
|
#cyclic_scrolling = no
|
||||||
#
|
#
|
||||||
#lyrics_fetchers = azlyrics, genius, musixmatch, sing365, metrolyrics, justsomelyrics, jahlyrics, plyrics, tekstowo, zeneszoveg, internet
|
lyrics_fetchers = genius
|
||||||
#
|
#
|
||||||
#follow_now_playing_lyrics = no
|
#follow_now_playing_lyrics = no
|
||||||
#
|
#
|
||||||
|
|||||||
@ -16,13 +16,9 @@ vim.opt.tabstop = 2
|
|||||||
vim.opt.shiftwidth = 2
|
vim.opt.shiftwidth = 2
|
||||||
vim.opt.updatetime = 300
|
vim.opt.updatetime = 300
|
||||||
vim.opt.timeoutlen = 2000
|
vim.opt.timeoutlen = 2000
|
||||||
-- vim.opt.ttimeoutlen = 5
|
|
||||||
-- vim.cmd "set notimeout"
|
|
||||||
-- vim.cmd "set ttimeout"
|
|
||||||
vim.opt.signcolumn = "yes:2"
|
vim.opt.signcolumn = "yes:2"
|
||||||
vim.opt.jumpoptions = "stack,view"
|
vim.opt.jumpoptions = "stack,view"
|
||||||
|
|
||||||
vim.opt.keymap = "russian-jcukenwin"
|
|
||||||
vim.opt.iminsert = 0
|
vim.opt.iminsert = 0
|
||||||
vim.opt.imsearch = 0
|
vim.opt.imsearch = 0
|
||||||
|
|
||||||
|
|||||||
@ -21,14 +21,11 @@ return {
|
|||||||
highlight_grey = "LineNr",
|
highlight_grey = "LineNr",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
config = function ()
|
config = function(_, opts)
|
||||||
require("nvim-autopairs").setup()
|
require("nvim-autopairs").setup(opts)
|
||||||
-- require ("nvim-autopairs.completion.cmp")
|
|
||||||
-- local cmp_status_ok, cmp = pcall(require, "cmp")
|
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
|
||||||
-- if not cmp_status_ok then
|
local cmp = require "cmp"
|
||||||
-- return
|
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } })
|
||||||
-- end
|
|
||||||
-- cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } })
|
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
return {
|
return {
|
||||||
{
|
|
||||||
"lewis6991/gitsigns.nvim",
|
"lewis6991/gitsigns.nvim",
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
opts = {
|
opts = {
|
||||||
@ -40,7 +39,8 @@ return {
|
|||||||
row = 0,
|
row = 0,
|
||||||
col = 1,
|
col = 1,
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
config = function (_, opts)
|
||||||
|
require('gitsigns').setup(opts)
|
||||||
|
end
|
||||||
}
|
}
|
||||||
|
|||||||
21
.config/nvim/lua/user/plugins/lazygit.lua
Normal file
21
.config/nvim/lua/user/plugins/lazygit.lua
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
return {
|
||||||
|
"kdheepak/lazygit.nvim",
|
||||||
|
lazy = true,
|
||||||
|
event = "VeryLazy",
|
||||||
|
cmd = {
|
||||||
|
"LazyGit",
|
||||||
|
"LazyGitConfig",
|
||||||
|
"LazyGitCurrentFile",
|
||||||
|
"LazyGitFilter",
|
||||||
|
"LazyGitFilterCurrentFile",
|
||||||
|
},
|
||||||
|
-- optional for floating window border decoration
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
},
|
||||||
|
-- setting the keybinding for LazyGit with 'keys' is recommended in
|
||||||
|
-- order to load the plugin when the command is run for the first time
|
||||||
|
keys = {
|
||||||
|
{ "<leader>lg", "<cmd>LazyGit<cr>", desc = "LazyGit" }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,7 +2,7 @@ local M = {}
|
|||||||
|
|
||||||
M.setup = function()
|
M.setup = function()
|
||||||
local config = {
|
local config = {
|
||||||
virtual_text = true,
|
virtual_text = false,
|
||||||
signs = {
|
signs = {
|
||||||
text = {
|
text = {
|
||||||
[vim.diagnostic.severity.ERROR] = '',
|
[vim.diagnostic.severity.ERROR] = '',
|
||||||
@ -12,7 +12,7 @@ M.setup = function()
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
update_in_insert = true,
|
update_in_insert = true,
|
||||||
underline = true,
|
underline = false,
|
||||||
severity_sort = true,
|
severity_sort = true,
|
||||||
float = {
|
float = {
|
||||||
focusable = true,
|
focusable = true,
|
||||||
|
|||||||
@ -1,30 +1,45 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
"williamboman/mason.nvim",
|
"williamboman/mason.nvim",
|
||||||
event = "VeryLazy",
|
|
||||||
config = true
|
config = true
|
||||||
}, -- simple to use language server installer
|
},
|
||||||
{
|
{
|
||||||
"williamboman/mason-lspconfig.nvim",
|
"mason-org/mason-lspconfig.nvim",
|
||||||
event = "VeryLazy",
|
|
||||||
config = function()
|
config = function()
|
||||||
require("user.plugins.lsp.mason_lsp_config")
|
require("user.plugins.lsp.mason_lsp_config")
|
||||||
require("user.plugins.lsp.diagnostics_config").setup()
|
require("user.plugins.lsp.diagnostics_config").setup()
|
||||||
-- require("user.lsp.none_ls")
|
-- require("user.lsp.none_ls")
|
||||||
|
|
||||||
vim.cmd([[ command! Format execute 'lua vim.lsp.buf.format{async=true}' ]])
|
local which_key = require("which-key")
|
||||||
end
|
which_key.add({
|
||||||
|
{
|
||||||
|
"<leader>ch",
|
||||||
|
function()
|
||||||
|
local current = vim.diagnostic.config().virtual_text
|
||||||
|
vim.diagnostic.config({ virtual_text = not current })
|
||||||
|
end,
|
||||||
|
desc = "toggle inline diagnostics"
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.cmd([[ command! Format execute 'lua vim.lsp.buf.format{async=true}' ]])
|
||||||
|
end,
|
||||||
|
dependencies = {
|
||||||
|
{ "mason-org/mason.nvim", opts = {} },
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
event = "BufReadPre BufNewFile",
|
||||||
|
dependencies = {
|
||||||
|
"nvimtools/none-ls.nvim",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{ "neovim/nvim-lspconfig", event = "VeryLazy" }, -- enable LSP
|
|
||||||
{
|
{
|
||||||
"lukas-reineke/lsp-format.nvim",
|
"lukas-reineke/lsp-format.nvim",
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
config = function()
|
config = function()
|
||||||
local on_attach = function(client)
|
|
||||||
require("lsp-format").on_attach(client)
|
|
||||||
end
|
|
||||||
|
|
||||||
require("lspconfig").gopls.setup { on_attach = on_attach }
|
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -4,6 +4,8 @@ vim.lsp.enable({
|
|||||||
"omnisharp",
|
"omnisharp",
|
||||||
"pylsp",
|
"pylsp",
|
||||||
"rust_analyzer",
|
"rust_analyzer",
|
||||||
|
"luals",
|
||||||
|
"vimls"
|
||||||
})
|
})
|
||||||
|
|
||||||
-- TODO: this does not work, need to install pylsp-mypy plugin manually
|
-- TODO: this does not work, need to install pylsp-mypy plugin manually
|
||||||
@ -45,4 +47,20 @@ vim.lsp.config('rust_analyzer', {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
vim.lsp.config('luals', {
|
||||||
|
settings = {
|
||||||
|
Lua = {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.config('rust_analyzer', {
|
||||||
|
settings = {
|
||||||
|
["rust-analyzer"] = {
|
||||||
|
cargo = {
|
||||||
|
features = "all",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
mason_lspconfig.setup()
|
mason_lspconfig.setup()
|
||||||
|
|||||||
@ -8,6 +8,16 @@ return {
|
|||||||
},
|
},
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
opts = {
|
opts = {
|
||||||
|
filesystem = {
|
||||||
|
window = {
|
||||||
|
mappings = {
|
||||||
|
-- disable fuzzy finder
|
||||||
|
["/"] = "noop",
|
||||||
|
-- disable folder collapse
|
||||||
|
["z"] = "noop",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
enable_diagnostics = false,
|
enable_diagnostics = false,
|
||||||
enable_git_status = true,
|
enable_git_status = true,
|
||||||
default_component_configs = {
|
default_component_configs = {
|
||||||
@ -88,5 +98,5 @@ return {
|
|||||||
end
|
end
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
"petertriho/nvim-scrollbar",
|
"petertriho/nvim-scrollbar",
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
config = true
|
config = function (_, opts)
|
||||||
|
require("scrollbar").setup(opts)
|
||||||
|
end
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
return {
|
return {
|
||||||
{ "L3MON4D3/LuaSnip", event = "VeryLazy" }, --snippet engine
|
|
||||||
{ "rafamadriz/friendly-snippets", event = "VeryLazy" }, -- a bunch of snippets to use
|
|
||||||
{
|
{
|
||||||
"dsznajder/vscode-es7-javascript-react-snippets",
|
"L3MON4D3/LuaSnip",
|
||||||
run = "yarn install --frozen-lockfile && yarn compile",
|
event = "VeryLazy",
|
||||||
event = "VeryLazy"
|
config = true,
|
||||||
},
|
dependencies = {
|
||||||
|
"rafamadriz/friendly-snippets",
|
||||||
|
-- "dsznajder/vscode-es7-javascript-react-snippets",
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
.config/nvim/lua/user/plugins/tab_autodetect.lua
Normal file
4
.config/nvim/lua/user/plugins/tab_autodetect.lua
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
'https://github.com/tpope/vim-sleuth',
|
||||||
|
lazy = false,
|
||||||
|
}
|
||||||
@ -1,13 +1,18 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
"nvim-telescope/telescope.nvim",
|
"nvim-telescope/telescope.nvim",
|
||||||
dependencies = { "nvim-telescope/telescope-media-files.nvim", "nvim-lua/plenary.nvim" },
|
dependencies = {
|
||||||
|
"nvim-telescope/telescope-media-files.nvim",
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"nvim-telescope/telescope-fzf-native.nvim",
|
||||||
|
},
|
||||||
lazy = false,
|
lazy = false,
|
||||||
config = function(_, _opts)
|
config = function(_, _opts)
|
||||||
local telescope = require("telescope")
|
local telescope = require("telescope")
|
||||||
telescope.setup(_opts)
|
telescope.setup(_opts)
|
||||||
|
|
||||||
telescope.load_extension("media_files")
|
telescope.load_extension("media_files")
|
||||||
|
telescope.load_extension("fzf")
|
||||||
|
|
||||||
local which_key = require("which-key")
|
local which_key = require("which-key")
|
||||||
which_key.add({
|
which_key.add({
|
||||||
@ -117,5 +122,9 @@ return {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'nvim-telescope/telescope-fzf-native.nvim',
|
||||||
|
build = 'make'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -99,7 +99,7 @@ return {
|
|||||||
})
|
})
|
||||||
|
|
||||||
which_key.add({
|
which_key.add({
|
||||||
{ "<leader>l", "<cmd>lua vim.diagnostic.setloclist()<CR>", desc = "Show diagnostic list" },
|
{ "<leader>cd", "<cmd>lua vim.diagnostic.setloclist()<CR>", desc = "Show diagnostic list" },
|
||||||
})
|
})
|
||||||
|
|
||||||
which_key.add({
|
which_key.add({
|
||||||
|
|||||||
759
.config/ranger/rc.conf
Normal file
759
.config/ranger/rc.conf
Normal file
@ -0,0 +1,759 @@
|
|||||||
|
# ===================================================================
|
||||||
|
# This file contains the default startup commands for ranger.
|
||||||
|
# To change them, it is recommended to create either /etc/ranger/rc.conf
|
||||||
|
# (system-wide) or ~/.config/ranger/rc.conf (per user) and add your custom
|
||||||
|
# commands there.
|
||||||
|
#
|
||||||
|
# If you copy this whole file there, you may want to set the environment
|
||||||
|
# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
|
||||||
|
#
|
||||||
|
# The purpose of this file is mainly to define keybindings and settings.
|
||||||
|
# For running more complex python code, please create a plugin in "plugins/" or
|
||||||
|
# a command in "commands.py".
|
||||||
|
#
|
||||||
|
# Each line is a command that will be run before the user interface
|
||||||
|
# is initialized. As a result, you can not use commands which rely
|
||||||
|
# on the UI such as :delete or :mark.
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Options
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
# Which viewmode should be used? Possible values are:
|
||||||
|
# miller: Use miller columns which show multiple levels of the hierarchy
|
||||||
|
# multipane: Midnight-commander like multipane view showing all tabs next
|
||||||
|
# to each other
|
||||||
|
set viewmode miller
|
||||||
|
#set viewmode multipane
|
||||||
|
|
||||||
|
# How many columns are there, and what are their relative widths?
|
||||||
|
set column_ratios 1,3,4
|
||||||
|
|
||||||
|
# Which files should be hidden? (regular expression)
|
||||||
|
set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
|
||||||
|
|
||||||
|
# Show hidden files? You can toggle this by typing 'zh'
|
||||||
|
set show_hidden false
|
||||||
|
|
||||||
|
# Ask for a confirmation when running the "delete" command?
|
||||||
|
# Valid values are "always", "never", "multiple" (default)
|
||||||
|
# With "multiple", ranger will ask only if you delete multiple files at once.
|
||||||
|
set confirm_on_delete multiple
|
||||||
|
|
||||||
|
# Use non-default path for file preview script?
|
||||||
|
# ranger ships with scope.sh, a script that calls external programs (see
|
||||||
|
# README.md for dependencies) to preview images, archives, etc.
|
||||||
|
#set preview_script ~/.config/ranger/scope.sh
|
||||||
|
|
||||||
|
# Use the external preview script or display simple plain text or image previews?
|
||||||
|
set use_preview_script true
|
||||||
|
|
||||||
|
# Automatically count files in the directory, even before entering them?
|
||||||
|
set automatically_count_files true
|
||||||
|
|
||||||
|
# Open all images in this directory when running certain image viewers
|
||||||
|
# like feh or sxiv? You can still open selected files by marking them.
|
||||||
|
set open_all_images true
|
||||||
|
|
||||||
|
# Be aware of version control systems and display information.
|
||||||
|
set vcs_aware false
|
||||||
|
|
||||||
|
# State of the four backends git, hg, bzr, svn. The possible states are
|
||||||
|
# disabled, local (only show local info), enabled (show local and remote
|
||||||
|
# information).
|
||||||
|
set vcs_backend_git enabled
|
||||||
|
set vcs_backend_hg disabled
|
||||||
|
set vcs_backend_bzr disabled
|
||||||
|
set vcs_backend_svn disabled
|
||||||
|
|
||||||
|
# Truncate the long commit messages to this length when shown in the statusbar.
|
||||||
|
set vcs_msg_length 50
|
||||||
|
|
||||||
|
# Use one of the supported image preview protocols
|
||||||
|
set preview_images false
|
||||||
|
|
||||||
|
# Set the preview image method. Supported methods:
|
||||||
|
#
|
||||||
|
# * w3m (default):
|
||||||
|
# Preview images in full color with the external command "w3mimgpreview"?
|
||||||
|
# This requires the console web browser "w3m" and a supported terminal.
|
||||||
|
# It has been successfully tested with "xterm" and "urxvt" without tmux.
|
||||||
|
#
|
||||||
|
# * iterm2:
|
||||||
|
# Preview images in full color using iTerm2 image previews
|
||||||
|
# (http://iterm2.com/images.html). This requires using iTerm2 compiled
|
||||||
|
# with image preview support.
|
||||||
|
#
|
||||||
|
# This feature relies on the dimensions of the terminal's font. By default, a
|
||||||
|
# width of 8 and height of 11 are used. To use other values, set the options
|
||||||
|
# iterm2_font_width and iterm2_font_height to the desired values.
|
||||||
|
#
|
||||||
|
# * terminology:
|
||||||
|
# Previews images in full color in the terminology terminal emulator.
|
||||||
|
# Supports a wide variety of formats, even vector graphics like svg.
|
||||||
|
#
|
||||||
|
# * urxvt:
|
||||||
|
# Preview images in full color using urxvt image backgrounds. This
|
||||||
|
# requires using urxvt compiled with pixbuf support.
|
||||||
|
#
|
||||||
|
# * urxvt-full:
|
||||||
|
# The same as urxvt but utilizing not only the preview pane but the
|
||||||
|
# whole terminal window.
|
||||||
|
#
|
||||||
|
# * kitty:
|
||||||
|
# Preview images in full color using kitty image protocol.
|
||||||
|
# Requires python PIL or pillow library.
|
||||||
|
# If ranger does not share the local filesystem with kitty
|
||||||
|
# the transfer method is changed to encode the whole image;
|
||||||
|
# while slower, this allows remote previews,
|
||||||
|
# for example during an ssh session.
|
||||||
|
# Tmux is unsupported.
|
||||||
|
#
|
||||||
|
# * ueberzug:
|
||||||
|
# Preview images in full color with the external command "ueberzug".
|
||||||
|
# Images are shown by using a child window.
|
||||||
|
# Only for users who run X11 in GNU/Linux.
|
||||||
|
set preview_images_method w3m
|
||||||
|
|
||||||
|
# Delay in seconds before displaying an image with the w3m method.
|
||||||
|
# Increase it in case of experiencing display corruption.
|
||||||
|
set w3m_delay 0.02
|
||||||
|
|
||||||
|
# Manually adjust the w3mimg offset when using a terminal which needs this
|
||||||
|
set w3m_offset 0
|
||||||
|
|
||||||
|
# Default iTerm2 font size (see: preview_images_method: iterm2)
|
||||||
|
set iterm2_font_width 8
|
||||||
|
set iterm2_font_height 11
|
||||||
|
|
||||||
|
# Use a unicode "..." character to mark cut-off filenames?
|
||||||
|
set unicode_ellipsis false
|
||||||
|
|
||||||
|
# BIDI support - try to properly display file names in RTL languages (Hebrew, Arabic).
|
||||||
|
# Requires the python-bidi pip package
|
||||||
|
set bidi_support false
|
||||||
|
|
||||||
|
# Show dotfiles in the bookmark preview box?
|
||||||
|
set show_hidden_bookmarks true
|
||||||
|
|
||||||
|
# Which colorscheme to use? These colorschemes are available by default:
|
||||||
|
# default, jungle, snow, solarized
|
||||||
|
set colorscheme default
|
||||||
|
|
||||||
|
# Preview files on the rightmost column?
|
||||||
|
# And collapse (shrink) the last column if there is nothing to preview?
|
||||||
|
set preview_files false
|
||||||
|
set preview_directories true
|
||||||
|
set collapse_preview false
|
||||||
|
|
||||||
|
# Wrap long lines in plain text previews?
|
||||||
|
set wrap_plaintext_previews false
|
||||||
|
|
||||||
|
# Save the console history on exit?
|
||||||
|
set save_console_history true
|
||||||
|
|
||||||
|
# Draw the status bar on top of the browser window (default: bottom)
|
||||||
|
set status_bar_on_top false
|
||||||
|
|
||||||
|
# Draw a progress bar in the status bar which displays the average state of all
|
||||||
|
# currently running tasks which support progress bars?
|
||||||
|
set draw_progress_bar_in_status_bar true
|
||||||
|
|
||||||
|
# Draw borders around columns? (separators, outline, both, or none)
|
||||||
|
# Separators are vertical lines between columns.
|
||||||
|
# Outline draws a box around all the columns.
|
||||||
|
# Both combines the two.
|
||||||
|
set draw_borders none
|
||||||
|
|
||||||
|
# Display the directory name in tabs?
|
||||||
|
set dirname_in_tabs false
|
||||||
|
|
||||||
|
# Enable the mouse support?
|
||||||
|
set mouse_enabled true
|
||||||
|
|
||||||
|
# Display the file size in the main column or status bar?
|
||||||
|
set display_size_in_main_column true
|
||||||
|
set display_size_in_status_bar true
|
||||||
|
|
||||||
|
# Display the free disk space in the status bar?
|
||||||
|
set display_free_space_in_status_bar true
|
||||||
|
|
||||||
|
# Display files tags in all columns or only in main column?
|
||||||
|
set display_tags_in_all_columns true
|
||||||
|
|
||||||
|
# Set a title for the window? Updates both `WM_NAME` and `WM_ICON_NAME`
|
||||||
|
set update_title false
|
||||||
|
|
||||||
|
# Set the tmux/screen window-name to "ranger"?
|
||||||
|
set update_tmux_title true
|
||||||
|
|
||||||
|
# Shorten the title if it gets long? The number defines how many
|
||||||
|
# directories are displayed at once, 0 turns off this feature.
|
||||||
|
set shorten_title 3
|
||||||
|
|
||||||
|
# Show hostname in titlebar?
|
||||||
|
set hostname_in_titlebar true
|
||||||
|
|
||||||
|
# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
|
||||||
|
set tilde_in_titlebar false
|
||||||
|
|
||||||
|
# How many directory-changes or console-commands should be kept in history?
|
||||||
|
set max_history_size 20
|
||||||
|
set max_console_history_size 50
|
||||||
|
|
||||||
|
# Try to keep so much space between the top/bottom border when scrolling:
|
||||||
|
set scroll_offset 8
|
||||||
|
|
||||||
|
# Flush the input after each key hit? (Noticeable when ranger lags)
|
||||||
|
set flushinput true
|
||||||
|
|
||||||
|
# Padding on the right when there's no preview?
|
||||||
|
# This allows you to click into the space to run the file.
|
||||||
|
set padding_right true
|
||||||
|
|
||||||
|
# Save bookmarks (used with mX and `X) instantly?
|
||||||
|
# This helps to synchronize bookmarks between multiple ranger
|
||||||
|
# instances but leads to *slight* performance loss.
|
||||||
|
# When false, bookmarks are saved when ranger is exited.
|
||||||
|
set autosave_bookmarks true
|
||||||
|
|
||||||
|
# Save the "`" bookmark to disk. This can be used to switch to the last
|
||||||
|
# directory by typing "``".
|
||||||
|
set save_backtick_bookmark true
|
||||||
|
|
||||||
|
# You can display the "real" cumulative size of directories by using the
|
||||||
|
# command :get_cumulative_size or typing "dc". The size is expensive to
|
||||||
|
# calculate and will not be updated automatically. You can choose
|
||||||
|
# to update it automatically though by turning on this option:
|
||||||
|
set autoupdate_cumulative_size false
|
||||||
|
|
||||||
|
# Turning this on makes sense for screen readers:
|
||||||
|
set show_cursor false
|
||||||
|
|
||||||
|
# One of: size, natural, basename, atime, ctime, mtime, type, random
|
||||||
|
set sort natural
|
||||||
|
|
||||||
|
# Additional sorting options
|
||||||
|
set sort_reverse false
|
||||||
|
set sort_case_insensitive true
|
||||||
|
set sort_directories_first true
|
||||||
|
set sort_unicode false
|
||||||
|
|
||||||
|
# Enable this if key combinations with the Alt Key don't work for you.
|
||||||
|
# (Especially on xterm)
|
||||||
|
set xterm_alt_key false
|
||||||
|
|
||||||
|
# Whether to include bookmarks in cd command
|
||||||
|
set cd_bookmarks true
|
||||||
|
|
||||||
|
# Changes case sensitivity for the cd command tab completion
|
||||||
|
set cd_tab_case sensitive
|
||||||
|
|
||||||
|
# Use fuzzy tab completion with the "cd" command. For example,
|
||||||
|
# ":cd /u/lo/b<tab>" expands to ":cd /usr/local/bin".
|
||||||
|
set cd_tab_fuzzy false
|
||||||
|
|
||||||
|
# Avoid previewing files larger than this size, in bytes. Use a value of 0 to
|
||||||
|
# disable this feature.
|
||||||
|
set preview_max_size 0
|
||||||
|
|
||||||
|
# The key hint lists up to this size have their sublists expanded.
|
||||||
|
# Otherwise the submaps are replaced with "...".
|
||||||
|
set hint_collapse_threshold 10
|
||||||
|
|
||||||
|
# Add the highlighted file to the path in the titlebar
|
||||||
|
set show_selection_in_titlebar true
|
||||||
|
|
||||||
|
# The delay that ranger idly waits for user input, in milliseconds, with a
|
||||||
|
# resolution of 100ms. Lower delay reduces lag between directory updates but
|
||||||
|
# increases CPU load.
|
||||||
|
set idle_delay 2000
|
||||||
|
|
||||||
|
# When the metadata manager module looks for metadata, should it only look for
|
||||||
|
# a ".metadata.json" file in the current directory, or do a deep search and
|
||||||
|
# check all directories above the current one as well?
|
||||||
|
set metadata_deep_search false
|
||||||
|
|
||||||
|
# Clear all existing filters when leaving a directory
|
||||||
|
set clear_filters_on_dir_change false
|
||||||
|
|
||||||
|
# Disable displaying line numbers in main column.
|
||||||
|
# Possible values: false, absolute, relative.
|
||||||
|
set line_numbers false
|
||||||
|
|
||||||
|
# When line_numbers=relative show the absolute line number in the
|
||||||
|
# current line.
|
||||||
|
set relative_current_zero false
|
||||||
|
|
||||||
|
# Start line numbers from 1 instead of 0
|
||||||
|
set one_indexed false
|
||||||
|
|
||||||
|
# Save tabs on exit
|
||||||
|
set save_tabs_on_exit false
|
||||||
|
|
||||||
|
# Enable scroll wrapping - moving down while on the last item will wrap around to
|
||||||
|
# the top and vice versa.
|
||||||
|
set wrap_scroll false
|
||||||
|
|
||||||
|
# Set the global_inode_type_filter to nothing. Possible options: d, f and l for
|
||||||
|
# directories, files and symlinks respectively.
|
||||||
|
set global_inode_type_filter
|
||||||
|
|
||||||
|
# This setting allows to freeze the list of files to save I/O bandwidth. It
|
||||||
|
# should be 'false' during start-up, but you can toggle it by pressing F.
|
||||||
|
set freeze_files false
|
||||||
|
|
||||||
|
# Print file sizes in bytes instead of the default human-readable format.
|
||||||
|
set size_in_bytes false
|
||||||
|
|
||||||
|
# Warn at startup if RANGER_LEVEL env var is greater than 0, in other words
|
||||||
|
# give a warning when you nest ranger in a subshell started by ranger.
|
||||||
|
# Special value "error" makes the warning more visible.
|
||||||
|
set nested_ranger_warning true
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Local Options
|
||||||
|
# ===================================================================
|
||||||
|
# You can set local options that only affect a single directory.
|
||||||
|
|
||||||
|
# Examples:
|
||||||
|
# setlocal path=~/downloads sort mtime
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Command Aliases in the Console
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
alias e edit
|
||||||
|
alias q quit
|
||||||
|
alias q! quit!
|
||||||
|
alias qa quitall
|
||||||
|
alias qa! quitall!
|
||||||
|
alias qall quitall
|
||||||
|
alias qall! quitall!
|
||||||
|
alias setl setlocal
|
||||||
|
|
||||||
|
alias filter scout -prts
|
||||||
|
alias find scout -aets
|
||||||
|
alias mark scout -mr
|
||||||
|
alias unmark scout -Mr
|
||||||
|
alias search scout -rs
|
||||||
|
alias search_inc scout -rts
|
||||||
|
alias travel scout -aefklst
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Define keys for the browser
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
# Basic
|
||||||
|
map Q quitall
|
||||||
|
map q quit
|
||||||
|
copymap q ZZ ZQ
|
||||||
|
|
||||||
|
map R reload_cwd
|
||||||
|
map F set freeze_files!
|
||||||
|
map <C-r> reset
|
||||||
|
map <C-l> redraw_window
|
||||||
|
map <C-c> abort
|
||||||
|
map <esc> change_mode normal
|
||||||
|
map ~ set viewmode!
|
||||||
|
|
||||||
|
map i display_file
|
||||||
|
map <A-j> scroll_preview 1
|
||||||
|
map <A-k> scroll_preview -1
|
||||||
|
map ? help
|
||||||
|
map W display_log
|
||||||
|
map w taskview_open
|
||||||
|
map S shell $SHELL
|
||||||
|
|
||||||
|
map : console
|
||||||
|
map ; console
|
||||||
|
map ! console shell%space
|
||||||
|
map @ console -p6 shell %%s
|
||||||
|
map # console shell -p%space
|
||||||
|
map s console shell%space
|
||||||
|
map r chain draw_possible_programs; console open_with%space
|
||||||
|
map f console find%space
|
||||||
|
map cd console cd%space
|
||||||
|
|
||||||
|
map <C-p> chain console; eval fm.ui.console.history_move(-1)
|
||||||
|
|
||||||
|
# Change the line mode
|
||||||
|
map Mf linemode filename
|
||||||
|
map Mi linemode fileinfo
|
||||||
|
map Mm linemode mtime
|
||||||
|
map Mh linemode humanreadablemtime
|
||||||
|
map Mp linemode permissions
|
||||||
|
map Ms linemode sizemtime
|
||||||
|
map MH linemode sizehumanreadablemtime
|
||||||
|
map Mt linemode metatitle
|
||||||
|
|
||||||
|
# Tagging / Marking
|
||||||
|
map t tag_toggle
|
||||||
|
map ut tag_remove
|
||||||
|
map "<any> tag_toggle tag=%any
|
||||||
|
map <Space> mark_files toggle=True
|
||||||
|
map v mark_files all=True toggle=True
|
||||||
|
map uv mark_files all=True val=False
|
||||||
|
map V toggle_visual_mode
|
||||||
|
map uV toggle_visual_mode reverse=True
|
||||||
|
|
||||||
|
# For the nostalgics: Midnight Commander bindings
|
||||||
|
map <F1> help
|
||||||
|
map <F2> rename_append
|
||||||
|
map <F3> display_file
|
||||||
|
map <F4> edit
|
||||||
|
map <F5> copy
|
||||||
|
map <F6> cut
|
||||||
|
map <F7> console mkdir%space
|
||||||
|
map <F8> console delete
|
||||||
|
#map <F8> console trash
|
||||||
|
map <F10> exit
|
||||||
|
|
||||||
|
# In case you work on a keyboard with dvorak layout
|
||||||
|
map <UP> move up=1
|
||||||
|
map <DOWN> move down=1
|
||||||
|
map <LEFT> move left=1
|
||||||
|
map <RIGHT> move right=1
|
||||||
|
map <HOME> move to=0
|
||||||
|
map <END> move to=-1
|
||||||
|
map <PAGEDOWN> move down=1 pages=True
|
||||||
|
map <PAGEUP> move up=1 pages=True
|
||||||
|
map <CR> move right=1
|
||||||
|
#map <DELETE> console delete
|
||||||
|
map <INSERT> console touch%space
|
||||||
|
|
||||||
|
# VIM-like
|
||||||
|
copymap <UP> k
|
||||||
|
copymap <DOWN> j
|
||||||
|
copymap <LEFT> h
|
||||||
|
copymap <RIGHT> l
|
||||||
|
copymap <HOME> gg
|
||||||
|
copymap <END> G
|
||||||
|
copymap <PAGEDOWN> <C-F>
|
||||||
|
copymap <PAGEUP> <C-B>
|
||||||
|
|
||||||
|
map J move down=0.5 pages=True
|
||||||
|
map K move up=0.5 pages=True
|
||||||
|
copymap J <C-D>
|
||||||
|
copymap K <C-U>
|
||||||
|
|
||||||
|
# Jumping around
|
||||||
|
map H history_go -1
|
||||||
|
map L history_go 1
|
||||||
|
map ] move_parent 1
|
||||||
|
map [ move_parent -1
|
||||||
|
map } traverse
|
||||||
|
map { traverse_backwards
|
||||||
|
map ) jump_non
|
||||||
|
|
||||||
|
map gh cd ~
|
||||||
|
map ge cd /etc
|
||||||
|
map gu cd /usr
|
||||||
|
map gd cd /dev
|
||||||
|
map gl cd -r .
|
||||||
|
map gL cd -r %f
|
||||||
|
map go cd /opt
|
||||||
|
map gv cd /var
|
||||||
|
map gm cd /media
|
||||||
|
map gi eval fm.cd('/run/media/' + os.getenv('USER'))
|
||||||
|
map gM cd /mnt
|
||||||
|
map gs cd /srv
|
||||||
|
map gp cd /tmp
|
||||||
|
map gr cd /
|
||||||
|
map gR eval fm.cd(ranger.RANGERDIR)
|
||||||
|
map g/ cd /
|
||||||
|
map g? cd /usr/share/doc/ranger
|
||||||
|
|
||||||
|
# External Programs
|
||||||
|
map E edit
|
||||||
|
map du shell -p du --max-depth=1 -h --apparent-size
|
||||||
|
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
|
||||||
|
map yp yank path
|
||||||
|
map yd yank dir
|
||||||
|
map yn yank name
|
||||||
|
map y. yank name_without_extension
|
||||||
|
|
||||||
|
# Filesystem Operations
|
||||||
|
map = chmod
|
||||||
|
|
||||||
|
map cw console rename%space
|
||||||
|
map a rename_append
|
||||||
|
map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
|
||||||
|
map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
|
||||||
|
|
||||||
|
map pp paste
|
||||||
|
map po paste overwrite=True
|
||||||
|
map pP paste append=True
|
||||||
|
map pO paste overwrite=True append=True
|
||||||
|
map pl paste_symlink relative=False
|
||||||
|
map pL paste_symlink relative=True
|
||||||
|
map phl paste_hardlink
|
||||||
|
map pht paste_hardlinked_subtree
|
||||||
|
map pd console paste dest=
|
||||||
|
map p`<any> paste dest=%any_path
|
||||||
|
map p'<any> paste dest=%any_path
|
||||||
|
|
||||||
|
map dD console delete
|
||||||
|
map dT console trash
|
||||||
|
|
||||||
|
map dd cut
|
||||||
|
map ud uncut
|
||||||
|
map da cut mode=add
|
||||||
|
map dr cut mode=remove
|
||||||
|
map dt cut mode=toggle
|
||||||
|
|
||||||
|
map yy copy
|
||||||
|
map uy uncut
|
||||||
|
map ya copy mode=add
|
||||||
|
map yr copy mode=remove
|
||||||
|
map yt copy mode=toggle
|
||||||
|
|
||||||
|
# Temporary workarounds
|
||||||
|
map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
|
||||||
|
map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
|
||||||
|
map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
|
||||||
|
map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
|
||||||
|
map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
|
||||||
|
map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
|
||||||
|
map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
|
||||||
|
map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
|
||||||
|
|
||||||
|
# Searching
|
||||||
|
map / console search%space
|
||||||
|
map n search_next
|
||||||
|
map N search_next forward=False
|
||||||
|
map ct search_next order=tag
|
||||||
|
map cs search_next order=size
|
||||||
|
map ci search_next order=mimetype
|
||||||
|
map cc search_next order=ctime
|
||||||
|
map cm search_next order=mtime
|
||||||
|
map ca search_next order=atime
|
||||||
|
|
||||||
|
# Tabs
|
||||||
|
map <C-n> tab_new
|
||||||
|
map <C-w> tab_close
|
||||||
|
map <TAB> tab_move 1
|
||||||
|
map <S-TAB> tab_move -1
|
||||||
|
map <A-Right> tab_move 1
|
||||||
|
map <A-Left> tab_move -1
|
||||||
|
map gt tab_move 1
|
||||||
|
map gT tab_move -1
|
||||||
|
map gn tab_new
|
||||||
|
map gc tab_close
|
||||||
|
map uq tab_restore
|
||||||
|
map <a-1> tab_open 1
|
||||||
|
map <a-2> tab_open 2
|
||||||
|
map <a-3> tab_open 3
|
||||||
|
map <a-4> tab_open 4
|
||||||
|
map <a-5> tab_open 5
|
||||||
|
map <a-6> tab_open 6
|
||||||
|
map <a-7> tab_open 7
|
||||||
|
map <a-8> tab_open 8
|
||||||
|
map <a-9> tab_open 9
|
||||||
|
map <a-r> tab_shift 1
|
||||||
|
map <a-l> tab_shift -1
|
||||||
|
|
||||||
|
# Sorting
|
||||||
|
map or set sort_reverse!
|
||||||
|
map oz set sort=random
|
||||||
|
map os chain set sort=size; set sort_reverse=False
|
||||||
|
map ob chain set sort=basename; set sort_reverse=False
|
||||||
|
map on chain set sort=natural; set sort_reverse=False
|
||||||
|
map om chain set sort=mtime; set sort_reverse=False
|
||||||
|
map oc chain set sort=ctime; set sort_reverse=False
|
||||||
|
map oa chain set sort=atime; set sort_reverse=False
|
||||||
|
map ot chain set sort=type; set sort_reverse=False
|
||||||
|
map oe chain set sort=extension; set sort_reverse=False
|
||||||
|
|
||||||
|
map oS chain set sort=size; set sort_reverse=True
|
||||||
|
map oB chain set sort=basename; set sort_reverse=True
|
||||||
|
map oN chain set sort=natural; set sort_reverse=True
|
||||||
|
map oM chain set sort=mtime; set sort_reverse=True
|
||||||
|
map oC chain set sort=ctime; set sort_reverse=True
|
||||||
|
map oA chain set sort=atime; set sort_reverse=True
|
||||||
|
map oT chain set sort=type; set sort_reverse=True
|
||||||
|
map oE chain set sort=extension; set sort_reverse=True
|
||||||
|
|
||||||
|
map dc get_cumulative_size
|
||||||
|
|
||||||
|
# Settings
|
||||||
|
map zc set collapse_preview!
|
||||||
|
map zd set sort_directories_first!
|
||||||
|
map zh set show_hidden!
|
||||||
|
map <C-h> set show_hidden!
|
||||||
|
copymap <C-h> <backspace>
|
||||||
|
copymap <backspace> <backspace2>
|
||||||
|
map zI set flushinput!
|
||||||
|
map zi set preview_images!
|
||||||
|
map zm set mouse_enabled!
|
||||||
|
map zp set preview_files!
|
||||||
|
map zP set preview_directories!
|
||||||
|
map zs set sort_case_insensitive!
|
||||||
|
map zu set autoupdate_cumulative_size!
|
||||||
|
map zv set use_preview_script!
|
||||||
|
map zf console filter%space
|
||||||
|
copymap zf zz
|
||||||
|
|
||||||
|
# Filter stack
|
||||||
|
map .d filter_stack add type d
|
||||||
|
map .f filter_stack add type f
|
||||||
|
map .l filter_stack add type l
|
||||||
|
map .m console filter_stack add mime%space
|
||||||
|
map .n console filter_stack add name%space
|
||||||
|
map .# console filter_stack add hash%space
|
||||||
|
map ." filter_stack add duplicate
|
||||||
|
map .' filter_stack add unique
|
||||||
|
map .| filter_stack add or
|
||||||
|
map .& filter_stack add and
|
||||||
|
map .! filter_stack add not
|
||||||
|
map .r filter_stack rotate
|
||||||
|
map .c filter_stack clear
|
||||||
|
map .* filter_stack decompose
|
||||||
|
map .p filter_stack pop
|
||||||
|
map .. filter_stack show
|
||||||
|
|
||||||
|
# Bookmarks
|
||||||
|
map `<any> enter_bookmark %any
|
||||||
|
map '<any> enter_bookmark %any
|
||||||
|
map m<any> set_bookmark %any
|
||||||
|
map um<any> unset_bookmark %any
|
||||||
|
|
||||||
|
map m<bg> draw_bookmarks
|
||||||
|
copymap m<bg> um<bg> `<bg> '<bg>
|
||||||
|
|
||||||
|
# Generate all the chmod bindings with some python help:
|
||||||
|
eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
|
||||||
|
|
||||||
|
eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Define keys for the console
|
||||||
|
# ===================================================================
|
||||||
|
# Note: Unmapped keys are passed directly to the console.
|
||||||
|
|
||||||
|
# Basic
|
||||||
|
cmap <tab> eval fm.ui.console.tab()
|
||||||
|
cmap <s-tab> eval fm.ui.console.tab(-1)
|
||||||
|
cmap <ESC> eval fm.ui.console.close()
|
||||||
|
cmap <CR> eval fm.ui.console.execute()
|
||||||
|
cmap <C-l> redraw_window
|
||||||
|
|
||||||
|
copycmap <ESC> <C-c>
|
||||||
|
copycmap <CR> <C-j>
|
||||||
|
|
||||||
|
# Move around
|
||||||
|
cmap <up> eval fm.ui.console.history_move(-1)
|
||||||
|
cmap <down> eval fm.ui.console.history_move(1)
|
||||||
|
cmap <left> eval fm.ui.console.move(left=1)
|
||||||
|
cmap <right> eval fm.ui.console.move(right=1)
|
||||||
|
cmap <home> eval fm.ui.console.move(right=0, absolute=True)
|
||||||
|
cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
|
||||||
|
cmap <a-b> eval fm.ui.console.move_word(left=1)
|
||||||
|
cmap <a-f> eval fm.ui.console.move_word(right=1)
|
||||||
|
|
||||||
|
copycmap <a-b> <a-left>
|
||||||
|
copycmap <a-f> <a-right>
|
||||||
|
|
||||||
|
# Line Editing
|
||||||
|
cmap <backspace> eval fm.ui.console.delete(-1)
|
||||||
|
cmap <delete> eval fm.ui.console.delete(0)
|
||||||
|
cmap <C-w> eval fm.ui.console.delete_word()
|
||||||
|
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
|
||||||
|
cmap <C-k> eval fm.ui.console.delete_rest(1)
|
||||||
|
cmap <C-u> eval fm.ui.console.delete_rest(-1)
|
||||||
|
cmap <C-y> eval fm.ui.console.paste()
|
||||||
|
|
||||||
|
# And of course the emacs way
|
||||||
|
copycmap <ESC> <C-g>
|
||||||
|
copycmap <up> <C-p>
|
||||||
|
copycmap <down> <C-n>
|
||||||
|
copycmap <left> <C-b>
|
||||||
|
copycmap <right> <C-f>
|
||||||
|
copycmap <home> <C-a>
|
||||||
|
copycmap <end> <C-e>
|
||||||
|
copycmap <delete> <C-d>
|
||||||
|
copycmap <backspace> <C-h>
|
||||||
|
|
||||||
|
# Note: There are multiple ways to express backspaces. <backspace> (code 263)
|
||||||
|
# and <backspace2> (code 127). To be sure, use both.
|
||||||
|
copycmap <backspace> <backspace2>
|
||||||
|
|
||||||
|
# This special expression allows typing in numerals:
|
||||||
|
cmap <allow_quantifiers> false
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Pager Keybindings
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
# Movement
|
||||||
|
pmap <down> pager_move down=1
|
||||||
|
pmap <up> pager_move up=1
|
||||||
|
pmap <left> pager_move left=4
|
||||||
|
pmap <right> pager_move right=4
|
||||||
|
pmap <home> pager_move to=0
|
||||||
|
pmap <end> pager_move to=-1
|
||||||
|
pmap <pagedown> pager_move down=1.0 pages=True
|
||||||
|
pmap <pageup> pager_move up=1.0 pages=True
|
||||||
|
pmap <C-d> pager_move down=0.5 pages=True
|
||||||
|
pmap <C-u> pager_move up=0.5 pages=True
|
||||||
|
|
||||||
|
copypmap <UP> k <C-p>
|
||||||
|
copypmap <DOWN> j <C-n> <CR>
|
||||||
|
copypmap <LEFT> h
|
||||||
|
copypmap <RIGHT> l
|
||||||
|
copypmap <HOME> g
|
||||||
|
copypmap <END> G
|
||||||
|
copypmap <C-d> d
|
||||||
|
copypmap <C-u> u
|
||||||
|
copypmap <PAGEDOWN> n f <C-F> <Space>
|
||||||
|
copypmap <PAGEUP> p b <C-B>
|
||||||
|
|
||||||
|
# Basic
|
||||||
|
pmap <C-l> redraw_window
|
||||||
|
pmap <ESC> pager_close
|
||||||
|
copypmap <ESC> q Q i <F3>
|
||||||
|
pmap E edit_file
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Taskview Keybindings
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
# Movement
|
||||||
|
tmap <up> taskview_move up=1
|
||||||
|
tmap <down> taskview_move down=1
|
||||||
|
tmap <home> taskview_move to=0
|
||||||
|
tmap <end> taskview_move to=-1
|
||||||
|
tmap <pagedown> taskview_move down=1.0 pages=True
|
||||||
|
tmap <pageup> taskview_move up=1.0 pages=True
|
||||||
|
tmap <C-d> taskview_move down=0.5 pages=True
|
||||||
|
tmap <C-u> taskview_move up=0.5 pages=True
|
||||||
|
|
||||||
|
copytmap <UP> k <C-p>
|
||||||
|
copytmap <DOWN> j <C-n> <CR>
|
||||||
|
copytmap <HOME> g
|
||||||
|
copytmap <END> G
|
||||||
|
copytmap <C-u> u
|
||||||
|
copytmap <PAGEDOWN> n f <C-F> <Space>
|
||||||
|
copytmap <PAGEUP> p b <C-B>
|
||||||
|
|
||||||
|
# Changing priority and deleting tasks
|
||||||
|
tmap J eval -q fm.ui.taskview.task_move(-1)
|
||||||
|
tmap K eval -q fm.ui.taskview.task_move(0)
|
||||||
|
tmap dd eval -q fm.ui.taskview.task_remove()
|
||||||
|
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
|
||||||
|
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
|
||||||
|
tmap <delete> eval -q fm.ui.taskview.task_remove()
|
||||||
|
|
||||||
|
# Basic
|
||||||
|
tmap <C-l> redraw_window
|
||||||
|
tmap <ESC> taskview_close
|
||||||
|
copytmap <ESC> q Q w <C-c>
|
||||||
@ -1,67 +0,0 @@
|
|||||||
alt - return : alacritty msg create-window || open -n -a 'Alacritty.app'
|
|
||||||
alt - b : /Applications/LibreWolf.app/Contents/MacOS/librewolf
|
|
||||||
|
|
||||||
# Navigation
|
|
||||||
alt - h : yabai -m window --focus west
|
|
||||||
alt - j : yabai -m window --focus south
|
|
||||||
alt - k : yabai -m window --focus north
|
|
||||||
alt - l : yabai -m window --focus east
|
|
||||||
|
|
||||||
#kill Yabai
|
|
||||||
shift + alt - c : brew services stop yabai
|
|
||||||
#start Yabai
|
|
||||||
alt - c : brew services start yabai
|
|
||||||
|
|
||||||
# Moving windows
|
|
||||||
shift + alt - h : yabai -m window --warp west
|
|
||||||
shift + alt - j : yabai -m window --warp south
|
|
||||||
shift + alt - k : yabai -m window --warp north
|
|
||||||
shift + alt - l : yabai -m window --warp east
|
|
||||||
|
|
||||||
#resize windows
|
|
||||||
alt - y : yabai -m window --resize left:-50:0; \
|
|
||||||
yabai -m window --resize right:-50:0
|
|
||||||
alt - u : yabai -m window --resize bottom:0:50; \
|
|
||||||
yabai -m window --resize top:0:50
|
|
||||||
alt - i : yabai -m window --resize top:0:-50; \
|
|
||||||
yabai -m window --resize bottom:0:-50
|
|
||||||
alt - o : yabai -m window --resize right:50:0; \
|
|
||||||
yabai -m window --resize left:50:0
|
|
||||||
|
|
||||||
# Make window native fullscreen
|
|
||||||
alt - f : yabai -m window --toggle zoom-fullscreen
|
|
||||||
shift + alt - f : yabai -m window --toggle native-fullscreen
|
|
||||||
|
|
||||||
# Float / Unfloat window
|
|
||||||
shift + alt - space : \
|
|
||||||
yabai -m window --toggle float; \
|
|
||||||
yabai -m window --toggle border
|
|
||||||
|
|
||||||
shift + alt - r : \
|
|
||||||
/usr/bin/env osascript <<< \
|
|
||||||
"display notification \"Restarting Yabai\" with title \"Yabai\""; \
|
|
||||||
launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai"
|
|
||||||
|
|
||||||
shift + alt - 1 : yabai -m window --space 1;
|
|
||||||
shift + alt - 2 : yabai -m window --space 2;
|
|
||||||
shift + alt - 3 : yabai -m window --space 3;
|
|
||||||
shift + alt - 4 : yabai -m window --space 4;
|
|
||||||
shift + alt - 5 : yabai -m window --space 5;
|
|
||||||
shift + alt - 6 : yabai -m window --space 6;
|
|
||||||
shift + alt - 7 : yabai -m window --space 7;
|
|
||||||
|
|
||||||
alt - 1 : yabai -m space --focus 1;
|
|
||||||
alt - 2 : yabai -m space --focus 2;
|
|
||||||
alt - 3 : yabai -m space --focus 3;
|
|
||||||
alt - 4 : yabai -m space --focus 4;
|
|
||||||
alt - 5 : yabai -m space --focus 5;
|
|
||||||
alt - 6 : yabai -m space --focus 6;
|
|
||||||
alt - 7 : yabai -m space --focus 7;
|
|
||||||
|
|
||||||
|
|
||||||
play : mpc toggle;
|
|
||||||
rewind : mpc prev;
|
|
||||||
fast : mpc next;
|
|
||||||
|
|
||||||
alt - 0x2C : mpc volume -10;
|
|
||||||
alt - 0x1C : mpc volume +10;
|
|
||||||
@ -11,10 +11,12 @@ set $right l
|
|||||||
|
|
||||||
# start daemons
|
# start daemons
|
||||||
exec copyq --start-server
|
exec copyq --start-server
|
||||||
|
exec swayidle
|
||||||
# exec waybar
|
# exec waybar
|
||||||
exec dunst
|
exec dunst
|
||||||
exec playerctld daemon
|
exec playerctld daemon
|
||||||
exec_always autotiling
|
exec_always autotiling
|
||||||
|
exec ~/Scripts/sway/toggle_mouse_show_timer.sh
|
||||||
|
|
||||||
# subscribe to ntfy notifications
|
# subscribe to ntfy notifications
|
||||||
exec ~/Scripts/ntfy/ntfy_subscribe.sh &
|
exec ~/Scripts/ntfy/ntfy_subscribe.sh &
|
||||||
@ -26,10 +28,11 @@ exec xrandr --output DP-2 --primary
|
|||||||
|
|
||||||
bar {
|
bar {
|
||||||
id 1
|
id 1
|
||||||
|
mode hide
|
||||||
tray_output none
|
tray_output none
|
||||||
font Input Nerd Font 9
|
font Hack Nerd Font 9
|
||||||
status_command "~/Scripts/sway/bar.sh"
|
status_command "~/Scripts/sway/bar.sh"
|
||||||
gaps 0 6 0 0
|
gaps 0 0 0 0
|
||||||
colors {
|
colors {
|
||||||
# focused_workspace #7E9CD8 #7E9CD8 #AAAAAA
|
# focused_workspace #7E9CD8 #7E9CD8 #AAAAAA
|
||||||
}
|
}
|
||||||
@ -46,7 +49,7 @@ output HDMI-A-1 position 2560 360 mode 1920x1080@60Hz
|
|||||||
# input configuration
|
# input configuration
|
||||||
# you can get the names of your inputs by running: swaymsg -t get_inputs
|
# you can get the names of your inputs by running: swaymsg -t get_inputs
|
||||||
# read `man 5 sway-input` for more information about this section.
|
# read `man 5 sway-input` for more information about this section.
|
||||||
input "1133:16505:Logitech_G_Pro" {
|
input type:pointer {
|
||||||
pointer_accel 0
|
pointer_accel 0
|
||||||
accel_profile "flat"
|
accel_profile "flat"
|
||||||
}
|
}
|
||||||
@ -74,6 +77,9 @@ bindsym --to-code $mod+m exec $term msg create-window --class in_scratchpad -e n
|
|||||||
bindsym --to-code $mod+e exec $term msg create-window -e neomutt || $term -e neomutt
|
bindsym --to-code $mod+e exec $term msg create-window -e neomutt || $term -e neomutt
|
||||||
bindsym --to-code $mod+n exec $term msg create-window -e newsboat || $term -e newsboat
|
bindsym --to-code $mod+n exec $term msg create-window -e newsboat || $term -e newsboat
|
||||||
|
|
||||||
|
# toggle showing bar
|
||||||
|
bindsym --to-code $mod+minus exec "swaymsg bar 1 mode toggle"
|
||||||
|
|
||||||
# open windows with id "in_scratchpad" in scratchpad
|
# open windows with id "in_scratchpad" in scratchpad
|
||||||
for_window [app_id="in_scratchpad"] move container to scratchpad, focus
|
for_window [app_id="in_scratchpad"] move container to scratchpad, focus
|
||||||
|
|
||||||
@ -86,6 +92,7 @@ assign [app_id="taxsee.im.desktop*"] workspace 24
|
|||||||
|
|
||||||
assign [app_id="Element"] workspace number 25
|
assign [app_id="Element"] workspace number 25
|
||||||
assign [class="Element"] workspace number 25
|
assign [class="Element"] workspace number 25
|
||||||
|
assign [app_id="librewolf"] workspace number 12
|
||||||
|
|
||||||
# powermenu
|
# powermenu
|
||||||
bindsym --to-code $mod+SHIFT+BackSpace exec ~/Scripts/tofi/powermenu.sh
|
bindsym --to-code $mod+SHIFT+BackSpace exec ~/Scripts/tofi/powermenu.sh
|
||||||
@ -123,7 +130,6 @@ client.urgent #1f1f28 #1f1f28 #888888 #1f1f28 #1f1f28
|
|||||||
client.focused_inactive #1f1f28 #1f1f28 #888888 #1f1f28 #1f1f28
|
client.focused_inactive #1f1f28 #1f1f28 #888888 #1f1f28 #1f1f28
|
||||||
|
|
||||||
# bind workspaces to specific outputs
|
# bind workspaces to specific outputs
|
||||||
workspace 10 output DP-2
|
|
||||||
workspace 11 output DP-2
|
workspace 11 output DP-2
|
||||||
workspace 12 output DP-2
|
workspace 12 output DP-2
|
||||||
workspace 13 output DP-2
|
workspace 13 output DP-2
|
||||||
@ -133,7 +139,6 @@ workspace 16 output DP-2
|
|||||||
workspace 17 output DP-2
|
workspace 17 output DP-2
|
||||||
workspace 18 output DP-2
|
workspace 18 output DP-2
|
||||||
workspace 19 output DP-2
|
workspace 19 output DP-2
|
||||||
workspace 10 output DP-2
|
|
||||||
|
|
||||||
workspace 21 output HDMI-A-1
|
workspace 21 output HDMI-A-1
|
||||||
workspace 22 output HDMI-A-1
|
workspace 22 output HDMI-A-1
|
||||||
@ -144,7 +149,6 @@ workspace 26 output HDMI-A-1
|
|||||||
workspace 27 output HDMI-A-1
|
workspace 27 output HDMI-A-1
|
||||||
workspace 28 output HDMI-A-1
|
workspace 28 output HDMI-A-1
|
||||||
workspace 29 output HDMI-A-1
|
workspace 29 output HDMI-A-1
|
||||||
workspace 20 output HDMI-A-1
|
|
||||||
|
|
||||||
# move mouse to focused window/workspace
|
# move mouse to focused window/workspace
|
||||||
mouse_warping output
|
mouse_warping output
|
||||||
@ -190,7 +194,6 @@ bindsym --to-code --no-warn $mod+6 workspace 16
|
|||||||
bindsym --to-code --no-warn $mod+7 workspace 17
|
bindsym --to-code --no-warn $mod+7 workspace 17
|
||||||
bindsym --to-code --no-warn $mod+8 workspace 18
|
bindsym --to-code --no-warn $mod+8 workspace 18
|
||||||
bindsym --to-code --no-warn $mod+9 workspace 19
|
bindsym --to-code --no-warn $mod+9 workspace 19
|
||||||
bindsym --to-code --no-warn $mod+0 workspace 10
|
|
||||||
|
|
||||||
bindsym --to-code --no-warn $mod+Alt+1 workspace 21
|
bindsym --to-code --no-warn $mod+Alt+1 workspace 21
|
||||||
bindsym --to-code --no-warn $mod+Alt+2 workspace 22
|
bindsym --to-code --no-warn $mod+Alt+2 workspace 22
|
||||||
@ -223,7 +226,6 @@ bindsym --to-code --no-warn $mod+Shift+6 exec "swaysome move 6"
|
|||||||
bindsym --to-code --no-warn $mod+Shift+7 exec "swaysome move 7"
|
bindsym --to-code --no-warn $mod+Shift+7 exec "swaysome move 7"
|
||||||
bindsym --to-code --no-warn $mod+Shift+8 exec "swaysome move 8"
|
bindsym --to-code --no-warn $mod+Shift+8 exec "swaysome move 8"
|
||||||
bindsym --to-code --no-warn $mod+Shift+9 exec "swaysome move 9"
|
bindsym --to-code --no-warn $mod+Shift+9 exec "swaysome move 9"
|
||||||
bindsym --to-code --no-warn $mod+Shift+0 exec "swaysome move 0"
|
|
||||||
|
|
||||||
# Move focused container to other monitor
|
# Move focused container to other monitor
|
||||||
bindsym --to-code $mod+p exec "swaysome next-output"
|
bindsym --to-code $mod+p exec "swaysome next-output"
|
||||||
@ -247,11 +249,11 @@ bindsym --to-code $mod+o resize grow width 5ppt
|
|||||||
# bindsym --to-code $right resize grow width 10px
|
# bindsym --to-code $right resize grow width 10px
|
||||||
|
|
||||||
# utilities
|
# utilities
|
||||||
# special keys to adjust volume via pulseaudio
|
|
||||||
bindsym --to-code $mod+Shift+bracketleft exec playerctl -p mpd volume 0.05-
|
bindsym --to-code $mod+Shift+bracketleft exec playerctl -p mpd volume 0.05-
|
||||||
bindsym --to-code $mod+Shift+bracketright exec playerctl -p mpd volume 0.05+
|
bindsym --to-code $mod+Shift+bracketright exec playerctl -p mpd volume 0.05+
|
||||||
bindsym --to-code $mod+Shift+y exec playerctl -p mpd shuffle Toggle
|
bindsym --to-code $mod+Shift+y exec playerctl -p mpd shuffle Toggle
|
||||||
|
|
||||||
|
# special keys to adjust volume via pulseaudio
|
||||||
bindsym --to-code --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
|
bindsym --to-code --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
|
||||||
bindsym --to-code --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
|
bindsym --to-code --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
|
||||||
bindsym --to-code --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
|
bindsym --to-code --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
|
||||||
|
|||||||
2
.config/swayidle/config
Normal file
2
.config/swayidle/config
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
timeout 3600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"'
|
||||||
|
|
||||||
@ -43,7 +43,6 @@ set -g @tpm_plugins ' \
|
|||||||
tmux-plugins/tmux-sensible \
|
tmux-plugins/tmux-sensible \
|
||||||
tmux-plugins/tmux-resurrect \
|
tmux-plugins/tmux-resurrect \
|
||||||
tmux-plugins/tmux-yank \
|
tmux-plugins/tmux-yank \
|
||||||
Nybkox/tmux-kanagawa \
|
|
||||||
tmux-plugins/tmux-continuum \
|
tmux-plugins/tmux-continuum \
|
||||||
'
|
'
|
||||||
|
|
||||||
@ -52,14 +51,20 @@ set -g @continuum-save-interval '30'
|
|||||||
|
|
||||||
set -g @resurrect-processes 'false'
|
set -g @resurrect-processes 'false'
|
||||||
|
|
||||||
set -g @kanagawa-ignore-window-colors true
|
# border colours
|
||||||
|
set -g pane-border-style "fg=#282728"
|
||||||
|
set -g pane-active-border-style "fg=#938AA9"
|
||||||
|
|
||||||
set -g @kanagawa-plugins " "
|
# status bar
|
||||||
set -g @kanagawa-show-battery false
|
set-option -g status-style bg=default
|
||||||
set -g @kanagawa-day-month true
|
set -g message-command-style bg=default
|
||||||
set -g @kanagawa-show-timezone false
|
set -g message-style bg=default
|
||||||
set -g @kanagawa-time-format "%R"
|
set -g status-left '| #S | '
|
||||||
|
set -g status-right ''
|
||||||
|
set -g status-left-length 500
|
||||||
|
|
||||||
|
set -g window-status-format "#I:#W "
|
||||||
|
set -g window-status-current-format "#[fg=red]#I#[fg=default]:#W* "
|
||||||
|
|
||||||
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||||||
run '~/.config/tmux/plugins/tpm/tpm'
|
run '~/.config/tmux/plugins/tpm/tpm'
|
||||||
|
|||||||
@ -1,118 +0,0 @@
|
|||||||
{
|
|
||||||
"layer": "top", // Waybar at top layer
|
|
||||||
"position": "bottom", // Waybar position (top|bottom|left|right)
|
|
||||||
"margin-bottom": 0,
|
|
||||||
"margin-left": 0,
|
|
||||||
"margin-right": 0,
|
|
||||||
"spacing": 10, // Gaps between modules (4px)
|
|
||||||
"modules-left": [
|
|
||||||
// "hyprland/workspaces"
|
|
||||||
"sway/workspaces"
|
|
||||||
],
|
|
||||||
"modules-center": [
|
|
||||||
"mpd"
|
|
||||||
],
|
|
||||||
"modules-right": [
|
|
||||||
// "hyprland/language",
|
|
||||||
"sway/language",
|
|
||||||
"custom/vpn",
|
|
||||||
"pulseaudio",
|
|
||||||
"cpu",
|
|
||||||
"memory",
|
|
||||||
// "custom/weather",
|
|
||||||
"clock"
|
|
||||||
],
|
|
||||||
// Modules configuration
|
|
||||||
"sway/language": {
|
|
||||||
"format": "{}",
|
|
||||||
"format-en": "en",
|
|
||||||
"format-ru": "ru",
|
|
||||||
"keyboard-name": "keychron-keychron-q1-keyboard"
|
|
||||||
},
|
|
||||||
"custom/weather": {
|
|
||||||
"exec": "$HOME/.config/waybar/weather-plugin.sh",
|
|
||||||
"interval": 600,
|
|
||||||
"signal": "8"
|
|
||||||
},
|
|
||||||
"custom/vpn": {
|
|
||||||
"exec": "$HOME/Scripts/vpn_controls/check_vpn_status.sh",
|
|
||||||
"format": "VPN {text}",
|
|
||||||
"interval": 10
|
|
||||||
},
|
|
||||||
"sway/workspaces": {
|
|
||||||
"tooltip": false,
|
|
||||||
"on-click": "activate",
|
|
||||||
"sort-by-number": true,
|
|
||||||
"all-outputs": false,
|
|
||||||
"warp-on-scroll": true,
|
|
||||||
"disable-scroll": true,
|
|
||||||
"show-special": true
|
|
||||||
},
|
|
||||||
"mpd": {
|
|
||||||
"on-click": "mpc toggle",
|
|
||||||
"tooltip": false,
|
|
||||||
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {title}",
|
|
||||||
"format-disconnected": "Disconnected ",
|
|
||||||
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
|
|
||||||
"unknown-tag": "N/A",
|
|
||||||
"interval": 2,
|
|
||||||
"consume-icons": {
|
|
||||||
"on": " "
|
|
||||||
},
|
|
||||||
"random-icons": {
|
|
||||||
"off": "<span color=\"#f53c3c\"></span> ",
|
|
||||||
"on": " "
|
|
||||||
},
|
|
||||||
"repeat-icons": {
|
|
||||||
"on": " "
|
|
||||||
},
|
|
||||||
"single-icons": {
|
|
||||||
"on": "1 "
|
|
||||||
},
|
|
||||||
"state-icons": {
|
|
||||||
"paused": "",
|
|
||||||
"playing": ""
|
|
||||||
},
|
|
||||||
"max-length": 40,
|
|
||||||
"tooltip-format": "MPD (connected)",
|
|
||||||
"tooltip-format-disconnected": "MPD (disconnected)"
|
|
||||||
},
|
|
||||||
"clock": {
|
|
||||||
// "timezone": "America/New_York",
|
|
||||||
"format": "{:%a, %b %d %H:%M}",
|
|
||||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
|
||||||
"format-alt": "{:%Y-%m-%d}"
|
|
||||||
},
|
|
||||||
"cpu": {
|
|
||||||
"format": "{usage}% ",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
"memory": {
|
|
||||||
"format": "{}% "
|
|
||||||
},
|
|
||||||
"pulseaudio": {
|
|
||||||
"tooltip": false,
|
|
||||||
// "scroll-step": 1, // %, can be a float
|
|
||||||
//"format": "{volume}% {icon} {format_source}",
|
|
||||||
"format": "{volume}% {icon}",
|
|
||||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
|
||||||
"format-bluetooth-muted": " {icon} {format_source}",
|
|
||||||
"format-muted": "",
|
|
||||||
"format-source": "{volume}% ",
|
|
||||||
"format-source-muted": "",
|
|
||||||
"format-icons": {
|
|
||||||
"headphone": "",
|
|
||||||
"hands-free": "",
|
|
||||||
"headset": "",
|
|
||||||
"phone": "",
|
|
||||||
"portable": "",
|
|
||||||
"car": "",
|
|
||||||
"default": [
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"on-click": "pavucontrol"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,54 +0,0 @@
|
|||||||
*, body{
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
font-family: 'Input Nerd Font';
|
|
||||||
font-size: 13px;
|
|
||||||
min-height: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
background: #000000;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
margin: 0;
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-bottom: 5px;
|
|
||||||
padding-left: 10px;
|
|
||||||
padding-right: 10px;
|
|
||||||
border-bottom: 2px solid #7e9cd8;
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
border-bottom: 2px solid white;
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.focused {
|
|
||||||
border-bottom: 2px solid white;
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock,
|
|
||||||
#backlight,
|
|
||||||
#pulseaudio,
|
|
||||||
#bluetooth,
|
|
||||||
#network,
|
|
||||||
#battery,
|
|
||||||
#mpd,
|
|
||||||
#cpu,
|
|
||||||
#memory,
|
|
||||||
#custom-weather,
|
|
||||||
#custom-vpn,
|
|
||||||
#language {
|
|
||||||
border-bottom: 2px solid #7e9cd8;
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-bottom: 5px;
|
|
||||||
padding-left: 10px;
|
|
||||||
padding-right: 10px;
|
|
||||||
}
|
|
||||||
@ -1,297 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# SETTINGS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
|
||||||
|
|
||||||
# API settings ________________________________________________________________
|
|
||||||
|
|
||||||
APIKEY=`cat $HOME/.owm-key`
|
|
||||||
CITY_NAME='Tyumen'
|
|
||||||
COUNTRY_CODE='RUS'
|
|
||||||
# Desired output language
|
|
||||||
LANG="en"
|
|
||||||
# UNITS can be "metric", "imperial" or "kelvin". Set KNOTS to "yes" if you
|
|
||||||
# want the wind in knots:
|
|
||||||
|
|
||||||
# | temperature | wind
|
|
||||||
# -----------------------------------
|
|
||||||
# metric | Celsius | km/h
|
|
||||||
# imperial | Fahrenheit | miles/hour
|
|
||||||
# kelvin | Kelvin | km/h
|
|
||||||
|
|
||||||
UNITS="metric"
|
|
||||||
|
|
||||||
# Color Settings ______________________________________________________________
|
|
||||||
|
|
||||||
COLOR_CLOUD="#606060"
|
|
||||||
COLOR_THUNDER="#d3b987"
|
|
||||||
COLOR_LIGHT_RAIN="#73cef4"
|
|
||||||
COLOR_HEAVY_RAIN="#b3deef"
|
|
||||||
COLOR_SNOW="#FFFFFF"
|
|
||||||
COLOR_FOG="#606060"
|
|
||||||
COLOR_TORNADO="#d3b987"
|
|
||||||
COLOR_SUN="#ffc24b"
|
|
||||||
COLOR_MOON="#FFFFFF"
|
|
||||||
COLOR_ERR="#f43753"
|
|
||||||
COLOR_WIND="#73cef4"
|
|
||||||
COLOR_COLD="#b3deef"
|
|
||||||
COLOR_HOT="#f43753"
|
|
||||||
COLOR_NORMAL_TEMP="#FFFFFF"
|
|
||||||
|
|
||||||
# Leave "" if you want the default polybar color
|
|
||||||
COLOR_TEXT=""
|
|
||||||
# Polybar settings ____________________________________________________________
|
|
||||||
|
|
||||||
# Font for the weather icons
|
|
||||||
WEATHER_FONT_CODE=4
|
|
||||||
|
|
||||||
# Font for the thermometer icon
|
|
||||||
TEMP_FONT_CODE=2
|
|
||||||
|
|
||||||
# Wind settings _______________________________________________________________
|
|
||||||
|
|
||||||
# Display info about the wind or not. yes/no
|
|
||||||
DISPLAY_WIND="yes"
|
|
||||||
|
|
||||||
# Display in knots. yes/no
|
|
||||||
KNOTS="no"
|
|
||||||
|
|
||||||
# How many decimals after the floating point
|
|
||||||
DECIMALS=0
|
|
||||||
|
|
||||||
# Min. wind force required to display wind info (it depends on what
|
|
||||||
# measurement unit you have set: knots, m/s or mph). Set to 0 if you always
|
|
||||||
# want to display wind info. It's ignored if DISPLAY_WIND is false.
|
|
||||||
|
|
||||||
MIN_WIND=0
|
|
||||||
|
|
||||||
# Display the numeric wind force or not. If not, only the wind icon will
|
|
||||||
# appear. yes/no
|
|
||||||
|
|
||||||
DISPLAY_FORCE="yes"
|
|
||||||
|
|
||||||
# Display the wind unit if wind force is displayed. yes/no
|
|
||||||
DISPLAY_WIND_UNIT="yes"
|
|
||||||
|
|
||||||
# Thermometer settings ________________________________________________________
|
|
||||||
|
|
||||||
# When the thermometer icon turns red
|
|
||||||
HOT_TEMP=25
|
|
||||||
|
|
||||||
# When the thermometer icon turns blue
|
|
||||||
COLD_TEMP=0
|
|
||||||
|
|
||||||
# Other settings ______________________________________________________________
|
|
||||||
|
|
||||||
# Display the weather description. yes/no
|
|
||||||
DISPLAY_LABEL="yes"
|
|
||||||
|
|
||||||
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
if [ "$COLOR_TEXT" != "" ]; then
|
|
||||||
COLOR_TEXT_BEGIN="%{F$COLOR_TEXT}"
|
|
||||||
COLOR_TEXT_END="%{F-}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
RESPONSE=""
|
|
||||||
ERROR=0
|
|
||||||
ERR_MSG=""
|
|
||||||
if [ $UNITS = "kelvin" ]; then
|
|
||||||
UNIT_URL=""
|
|
||||||
else
|
|
||||||
UNIT_URL="&units=$UNITS"
|
|
||||||
fi
|
|
||||||
URL="api.openweathermap.org/data/2.5/weather?appid=$APIKEY$UNIT_URL&lang=$LANG&q=$CITY_NAME,$COUNTRY_CODE"
|
|
||||||
|
|
||||||
function getData {
|
|
||||||
ERROR=0
|
|
||||||
# For logging purposes
|
|
||||||
# echo " " >> "$HOME/.weather.log"
|
|
||||||
# echo `date`" ################################" >> "$HOME/.weather.log"
|
|
||||||
RESPONSE=`curl -s $URL`
|
|
||||||
if [ "$1" = "-d" ]; then
|
|
||||||
echo $RESPONSE
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
CODE="$?"
|
|
||||||
# echo "Response: $RESPONSE" >> "$HOME/.weather.log"
|
|
||||||
RESPONSECODE=0
|
|
||||||
if [ $CODE -eq 0 ]; then
|
|
||||||
RESPONSECODE=`echo $RESPONSE | jq .cod`
|
|
||||||
fi
|
|
||||||
if [ $CODE -ne 0 ] || [ $RESPONSECODE -ne 200 ]; then
|
|
||||||
if [ $CODE -ne 0 ]; then
|
|
||||||
ERR_MSG="curl Error $CODE"
|
|
||||||
# echo "curl Error $CODE" >> "$HOME/.weather.log"
|
|
||||||
else
|
|
||||||
ERR_MSG="Conn. Err. $RESPONSECODE"
|
|
||||||
# echo "API Error $RESPONSECODE" >> "$HOME/.weather.log"
|
|
||||||
fi
|
|
||||||
ERROR=1
|
|
||||||
# else
|
|
||||||
# echo "$RESPONSE" > "$HOME/.weather-last"
|
|
||||||
# echo `date +%s` >> "$HOME/.weather-last"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function getDataWttrIn {
|
|
||||||
RESPONSE_WTTR_IN=`curl -s wttr.in`
|
|
||||||
}
|
|
||||||
function setIcons {
|
|
||||||
if [ $WID -le 232 ]; then
|
|
||||||
#Thunderstorm
|
|
||||||
ICON_COLOR=$COLOR_THUNDER
|
|
||||||
if [ $DATE -ge $SUNRISE -a $DATE -le $SUNSET ]; then
|
|
||||||
ICON=""
|
|
||||||
else
|
|
||||||
ICON=""
|
|
||||||
fi
|
|
||||||
elif [ $WID -le 311 ]; then
|
|
||||||
#Light drizzle
|
|
||||||
ICON_COLOR=$COLOR_LIGHT_RAIN
|
|
||||||
if [ $DATE -ge $SUNRISE -a $DATE -le $SUNSET ]; then
|
|
||||||
ICON=""
|
|
||||||
else
|
|
||||||
ICON=""
|
|
||||||
fi
|
|
||||||
elif [ $WID -le 321 ]; then
|
|
||||||
#Heavy drizzle
|
|
||||||
ICON_COLOR=$COLOR_HEAVY_RAIN
|
|
||||||
if [ $DATE -ge $SUNRISE -a $DATE -le $SUNSET ]; then
|
|
||||||
ICON=""
|
|
||||||
else
|
|
||||||
ICON=""
|
|
||||||
fi
|
|
||||||
elif [ $WID -le 531 ]; then
|
|
||||||
#Rain
|
|
||||||
ICON_COLOR=$COLOR_HEAVY_RAIN
|
|
||||||
if [ $DATE -ge $SUNRISE -a $DATE -le $SUNSET ]; then
|
|
||||||
ICON=""
|
|
||||||
else
|
|
||||||
ICON=""
|
|
||||||
fi
|
|
||||||
elif [ $WID -le 622 ]; then
|
|
||||||
#Snow
|
|
||||||
ICON_COLOR=$COLOR_SNOW
|
|
||||||
ICON=""
|
|
||||||
elif [ $WID -le 771 ]; then
|
|
||||||
#Fog
|
|
||||||
ICON_COLOR=$COLOR_FOG
|
|
||||||
ICON=""
|
|
||||||
elif [ $WID -eq 781 ]; then
|
|
||||||
#Tornado
|
|
||||||
ICON_COLOR=$COLOR_TORNADO
|
|
||||||
ICON=""
|
|
||||||
elif [ $WID -eq 800 ]; then
|
|
||||||
#Clear sky
|
|
||||||
if [ $DATE -ge $SUNRISE -a $DATE -le $SUNSET ]; then
|
|
||||||
ICON_COLOR=$COLOR_SUN
|
|
||||||
ICON=""
|
|
||||||
else
|
|
||||||
ICON_COLOR=$COLOR_MOON
|
|
||||||
ICON=""
|
|
||||||
fi
|
|
||||||
elif [ $WID -eq 801 ]; then
|
|
||||||
# Few clouds
|
|
||||||
if [ $DATE -ge $SUNRISE -a $DATE -le $SUNSET ]; then
|
|
||||||
ICON_COLOR=$COLOR_SUN
|
|
||||||
ICON=""
|
|
||||||
else
|
|
||||||
ICON_COLOR=$COLOR_MOON
|
|
||||||
ICON=""
|
|
||||||
fi
|
|
||||||
elif [ $WID -le 804 ]; then
|
|
||||||
# Overcast
|
|
||||||
ICON_COLOR=$COLOR_CLOUD
|
|
||||||
ICON=""
|
|
||||||
else
|
|
||||||
ICON_COLOR=$COLOR_ERR
|
|
||||||
ICON=""
|
|
||||||
fi
|
|
||||||
WIND=""
|
|
||||||
WINDFORCE=`echo "$RESPONSE" | jq .wind.speed`
|
|
||||||
if [ $KNOTS = "yes" ]; then
|
|
||||||
case $UNITS in
|
|
||||||
"imperial")
|
|
||||||
# The division by one is necessary because scale works only for divisions. bc is stupid.
|
|
||||||
WINDFORCE=`echo "scale=$DECIMALS;$WINDFORCE * 0.8689762419 / 1" | bc`
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
WINDFORCE=`echo "scale=$DECIMALS;$WINDFORCE * 1.943844 / 1" | bc`
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
if [ $UNITS != "imperial" ]; then
|
|
||||||
# Conversion from m/s to km/h
|
|
||||||
WINDFORCE=`echo "scale=$DECIMALS;$WINDFORCE * 3.6 / 1" | bc`
|
|
||||||
else
|
|
||||||
WINDFORCE=`echo "scale=$DECIMALS;$WINDFORCE / 1" | bc`
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ "$DISPLAY_WIND" = "yes" ] && [ `echo "$WINDFORCE >= $MIN_WIND" |bc -l` -eq 1 ]; then
|
|
||||||
WIND=""
|
|
||||||
if [ $DISPLAY_FORCE = "yes" ]; then
|
|
||||||
WIND="$WIND $COLOR_TEXT_BEGIN$WINDFORCE$COLOR_TEXT_END"
|
|
||||||
if [ $DISPLAY_WIND_UNIT = "yes" ]; then
|
|
||||||
if [ $KNOTS = "yes" ]; then
|
|
||||||
WIND="$WIND ${COLOR_TEXT_BEGIN}kn$COLOR_TEXT_END"
|
|
||||||
elif [ $UNITS = "imperial" ]; then
|
|
||||||
WIND="$WIND ${COLOR_TEXT_BEGIN}mph$COLOR_TEXT_END"
|
|
||||||
else
|
|
||||||
WIND="$WIND ${COLOR_TEXT_BEGIN}km/h$COLOR_TEXT_END"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
WIND="$WIND |"
|
|
||||||
fi
|
|
||||||
if [ "$UNITS" = "metric" ]; then
|
|
||||||
TEMP_ICON="糖"
|
|
||||||
elif [ "$UNITS" = "imperial" ]; then
|
|
||||||
TEMP_ICON="宅"
|
|
||||||
else
|
|
||||||
TEMP_ICON="洞"
|
|
||||||
fi
|
|
||||||
|
|
||||||
TEMP=`echo "$TEMP" | cut -d "." -f 1`
|
|
||||||
|
|
||||||
if [ "$TEMP" -le $COLD_TEMP ]; then
|
|
||||||
TEMP=" $COLOR_TEXT_BEGIN$TEMP$TEMP_ICON$COLOR_TEXT_END"
|
|
||||||
elif [ `echo "$TEMP >= $HOT_TEMP" | bc` -eq 1 ]; then
|
|
||||||
TEMP=" $COLOR_TEXT_BEGIN$TEMP$TEMP_ICON$COLOR_TEXT_END"
|
|
||||||
else
|
|
||||||
TEMP=" $COLOR_TEXT_BEGIN$TEMP$TEMP_ICON$COLOR_TEXT_END"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function outputCompact {
|
|
||||||
OUTPUT="$WIND $ICON $ERR_MSG$COLOR_TEXT_BEGIN$DESCRIPTION$COLOR_TEXT_END| $TEMP"
|
|
||||||
# getDataWttrIn
|
|
||||||
#
|
|
||||||
# echo "Output: $OUTPUT" >> "$HOME/.weather.log"
|
|
||||||
# printf "$OUTPUT\n$RESPONSE_WTTR_IN"
|
|
||||||
# echo $OUTPUT
|
|
||||||
echo "$OUTPUT"
|
|
||||||
# $RESPONSE_WTTR_IN"
|
|
||||||
# printf '{"text": "%s", "tooltip": "%s"}', "$OUTPUT", "$OUTPUT"
|
|
||||||
}
|
|
||||||
|
|
||||||
getData $1
|
|
||||||
if [ $ERROR -eq 0 ]; then
|
|
||||||
MAIN=`echo $RESPONSE | jq .weather[0].main`
|
|
||||||
WID=`echo $RESPONSE | jq .weather[0].id`
|
|
||||||
DESC=`echo $RESPONSE | jq .weather[0].description`
|
|
||||||
SUNRISE=`echo $RESPONSE | jq .sys.sunrise`
|
|
||||||
SUNSET=`echo $RESPONSE | jq .sys.sunset`
|
|
||||||
DATE=`date +%s`
|
|
||||||
WIND=""
|
|
||||||
TEMP=`echo $RESPONSE | jq .main.temp`
|
|
||||||
if [ $DISPLAY_LABEL = "yes" ]; then
|
|
||||||
DESCRIPTION=`echo "$RESPONSE" | jq .weather[0].description | tr -d '"' | sed 's/.*/\L&/; s/[a-z]*/\u&/g'`" "
|
|
||||||
else
|
|
||||||
DESCRIPTION=""
|
|
||||||
fi
|
|
||||||
PRESSURE=`echo $RESPONSE | jq .main.pressure`
|
|
||||||
HUMIDITY=`echo $RESPONSE | jq .main.humidity`
|
|
||||||
setIcons
|
|
||||||
outputCompact
|
|
||||||
else
|
|
||||||
echo " "
|
|
||||||
fi
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo "$(whoami) ALL=(root) NOPASSWD: sha256:$(shasum -a 256 $(which yabai) | cut -d " " -f 1) $(which yabai) --load-sa" | sudo tee /private/etc/sudoers.d/yabai
|
|
||||||
@ -1,45 +0,0 @@
|
|||||||
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"
|
|
||||||
sudo yabai --load-sa
|
|
||||||
|
|
||||||
yabai -m config layout bsp
|
|
||||||
yabai -m config window_placement second_child
|
|
||||||
|
|
||||||
yabai -m config window_topmost on
|
|
||||||
|
|
||||||
yabai -m config focus_follows_mouse autoraise
|
|
||||||
|
|
||||||
yabai -m config window_opacity on
|
|
||||||
yabai -m config active_window_opacity 0.95
|
|
||||||
yabai -m config normal_window_opacity 0.85
|
|
||||||
|
|
||||||
yabai -m config window_gap 10
|
|
||||||
yabai -m config top_padding 10
|
|
||||||
yabai -m config right_padding 10
|
|
||||||
yabai -m config left_padding 10
|
|
||||||
yabai -m config bottom_padding 10
|
|
||||||
|
|
||||||
yabai -m config window_border off
|
|
||||||
yabai -m config window_opacity off
|
|
||||||
yabai -m config window_shadow off
|
|
||||||
|
|
||||||
|
|
||||||
yabai -m rule --add label="Finder" app="^Finder$" title="(Co(py|nnect)|Move|Info|Pref)" manage=off
|
|
||||||
yabai -m rule --add label="macfeh" app="^macfeh$" manage=off
|
|
||||||
yabai -m rule --add label="System Preferences" app="^System Preferences$" title=".*" manage=off
|
|
||||||
yabai -m rule --add label="App Store" app="^App Store$" manage=off
|
|
||||||
yabai -m rule --add label="Activity Monitor" app="^Activity Monitor$" manage=off
|
|
||||||
yabai -m rule --add label="KeePassXC" app="^KeePassXC$" manage=off
|
|
||||||
yabai -m rule --add label="Calculator" app="^Calculator$" manage=off
|
|
||||||
yabai -m rule --add label="Dictionary" app="^Dictionary$" manage=off
|
|
||||||
yabai -m rule --add label="mpv" app="^mpv$" manage=off
|
|
||||||
yabai -m rule --add label="Software Update" title="Software Update" manage=off
|
|
||||||
yabai -m rule --add label="About This Mac" app="System Information" title="About This Mac" manage=off
|
|
||||||
|
|
||||||
yabai -m signal --add event=application_front_switched action="${ubersicht_spaces_refresh_command}"
|
|
||||||
yabai -m signal --add event=display_changed action="${ubersicht_spaces_refresh_command}"
|
|
||||||
yabai -m signal --add event=space_changed action="${ubersicht_spaces_refresh_command}"
|
|
||||||
yabai -m signal --add event=window_created action="${ubersicht_spaces_refresh_command}"
|
|
||||||
yabai -m signal --add event=window_destroyed action="${ubersicht_spaces_refresh_command}"
|
|
||||||
yabai -m signal --add event=window_focused action="${ubersicht_spaces_refresh_command}"
|
|
||||||
yabai -m signal --add event=window_title_changed action="${ubersicht_spaces_refresh_command}"
|
|
||||||
|
|
||||||
@ -5,6 +5,13 @@ export SUDO_EDITOR=/usr/bin/nvim
|
|||||||
export XDG_CURRENT_DESKTOP=Sway
|
export XDG_CURRENT_DESKTOP=Sway
|
||||||
export HOMEBREW_NO_AUTO_UPDATE=true
|
export HOMEBREW_NO_AUTO_UPDATE=true
|
||||||
export ELECTRON_OZONE_PLATFORM_HINT=auto
|
export ELECTRON_OZONE_PLATFORM_HINT=auto
|
||||||
|
# Created by `pipx` on 2024-10-08 14:33:09
|
||||||
|
export PATH="$PATH:/Users/nikitabykov/.local/bin"
|
||||||
|
|
||||||
|
# >>> coursier install directory >>>
|
||||||
|
export PATH="$PATH:/Users/nikitabykov/Library/Application Support/Coursier/bin"
|
||||||
|
# <<< coursier install directory <<<
|
||||||
|
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||||
|
|
||||||
if [[ -z $DISPLAY && $TTY = /dev/tty1 ]]; then
|
if [[ -z $DISPLAY && $TTY = /dev/tty1 ]]; then
|
||||||
exec sway
|
exec sway
|
||||||
|
|||||||
11
.zshrc
11
.zshrc
@ -12,9 +12,13 @@ HISTSIZE=15000
|
|||||||
SAVEHIST=15000
|
SAVEHIST=15000
|
||||||
setopt appendhistory
|
setopt appendhistory
|
||||||
|
|
||||||
|
bindkey -e
|
||||||
bindkey '^R' history-incremental-search-backward
|
bindkey '^R' history-incremental-search-backward
|
||||||
bindkey '^I^I' autosuggest-accept
|
bindkey '^I^I' autosuggest-accept
|
||||||
|
|
||||||
|
bindkey '^k' up-line-or-history
|
||||||
|
bindkey '^j' down-line-or-history
|
||||||
|
|
||||||
alias v="nvim"
|
alias v="nvim"
|
||||||
alias ta='tmux at || tmux'
|
alias ta='tmux at || tmux'
|
||||||
alias ls="ls --color"
|
alias ls="ls --color"
|
||||||
@ -26,6 +30,11 @@ alias weather='curl wttr.in/tyumen'
|
|||||||
alias toggle_vpn='sudo toggle_vpn'
|
alias toggle_vpn='sudo toggle_vpn'
|
||||||
alias rr='ranger'
|
alias rr='ranger'
|
||||||
|
|
||||||
|
# naviagtion aliases
|
||||||
|
alias dots='cd ~/dotfiles'
|
||||||
|
alias notes='cd ~/Documents/woopvault/'
|
||||||
|
alias work='cd ~/Code/maxim/'
|
||||||
|
|
||||||
### Added by Zinit's installer
|
### Added by Zinit's installer
|
||||||
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
|
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
|
||||||
print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
|
print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
|
||||||
@ -39,7 +48,7 @@ source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
|
|||||||
autoload -Uz _zinit
|
autoload -Uz _zinit
|
||||||
(( ${+_comps} )) && _comps[zinit]=_zinit
|
(( ${+_comps} )) && _comps[zinit]=_zinit
|
||||||
|
|
||||||
ZSH_AUTOSUGGEST_STRATEGY=(match_prev_cmd completion)
|
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
|
||||||
|
|
||||||
# Load a few important annexes, without Turbo
|
# Load a few important annexes, without Turbo
|
||||||
# (this is currently required for annexes)
|
# (this is currently required for annexes)
|
||||||
|
|||||||
Reference in New Issue
Block a user