Compare commits
No commits in common. "master" and "p53" have entirely different histories.
15
.gitmodules
vendored
15
.gitmodules
vendored
@ -1,15 +0,0 @@
|
||||
[submodule "neovim"]
|
||||
path = neovim
|
||||
url = https://github.com/Legrems/nv-chad.git
|
||||
[submodule "scripts"]
|
||||
path = scripts
|
||||
url = ../scripts.git
|
||||
[submodule "scripts-hidden"]
|
||||
path = scripts-hidden
|
||||
url = ../scripts-hidden.git
|
||||
[submodule "neovim-config"]
|
||||
path = neovim-config
|
||||
url = ../neovim-config.git
|
||||
[submodule "hyprland-config"]
|
||||
path = hyprland-config
|
||||
url = ../hyprland-config.git
|
||||
4
bashrc
4
bashrc
@ -16,8 +16,8 @@ HISTCONTROL=ignoreboth
|
||||
shopt -s histappend
|
||||
|
||||
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
||||
HISTSIZE=10000000
|
||||
HISTFILESIZE=10000000
|
||||
HISTSIZE=1000
|
||||
HISTFILESIZE=2000
|
||||
|
||||
# check the window size after each command and, if necessary,
|
||||
# update the values of LINES and COLUMNS.
|
||||
|
||||
@ -1,27 +0,0 @@
|
||||
import = ["/home/legrems/.config/alacritty/colors.toml", "/home/legrems/.config/alacritty/fonts.toml"]
|
||||
live_config_reload = true
|
||||
|
||||
[cursor]
|
||||
unfocused_hollow = false
|
||||
|
||||
[cursor.style]
|
||||
blinking = "On"
|
||||
shape = "Block"
|
||||
|
||||
[env]
|
||||
TERM = "xterm-256color"
|
||||
WINIT_X11_SCALE_FACTOR = "1.0"
|
||||
|
||||
[window]
|
||||
decorations = "full"
|
||||
dynamic_title = true
|
||||
opacity = 0.97
|
||||
startup_mode = "Windowed"
|
||||
|
||||
[window.dimensions]
|
||||
columns = 82
|
||||
lines = 24
|
||||
|
||||
[window.padding]
|
||||
x = 8
|
||||
y = 8
|
||||
@ -1,23 +0,0 @@
|
||||
[colors.bright]
|
||||
black = "#50545B"
|
||||
blue = "#6CB8F9"
|
||||
cyan = "#5FC0CC"
|
||||
green = "#A2CD83"
|
||||
magenta = "#D282E7"
|
||||
red = "#EA757E"
|
||||
white = "#B5BCC9"
|
||||
yellow = "#EFCA84"
|
||||
|
||||
[colors.normal]
|
||||
black = "#32363D"
|
||||
blue = "#62AEEF"
|
||||
cyan = "#55B6C2"
|
||||
green = "#98C379"
|
||||
magenta = "#C778DD"
|
||||
red = "#E06B74"
|
||||
white = "#ABB2BF"
|
||||
yellow = "#E5C07A"
|
||||
|
||||
[colors.primary]
|
||||
background = "#1E2128"
|
||||
foreground = "#ABB2BF"
|
||||
@ -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,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,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0xf3f3f3'
|
||||
foreground: '0x707070'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0xd3d3d3'
|
||||
red: '0xef6b7b'
|
||||
green: '0xa1d569'
|
||||
yellow: '0xf59335'
|
||||
blue: '0x4ec2e8'
|
||||
magenta: '0xfec7cd'
|
||||
cyan: '0x95c1c0'
|
||||
white: '0x707070'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0xb3b3b3'
|
||||
red: '0xed5466'
|
||||
green: '0xafdb80'
|
||||
yellow: '0xf59335'
|
||||
blue: '0x5dc7ea'
|
||||
magenta: '0xd2a4b4'
|
||||
cyan: '0x75a1a0'
|
||||
white: '0x909090'
|
||||
@ -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 @@
|
||||
# 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,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,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,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x181b20'
|
||||
foreground: '0x9b9081'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x353535'
|
||||
red: '0x744b40'
|
||||
green: '0x6d6137'
|
||||
yellow: '0x765636'
|
||||
blue: '0x61564b'
|
||||
magenta: '0x6b4a49'
|
||||
cyan: '0x435861'
|
||||
white: '0xb3b3b3'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x5f5f5f'
|
||||
red: '0x785850'
|
||||
green: '0x6f6749'
|
||||
yellow: '0x776049'
|
||||
blue: '0x696057'
|
||||
magenta: '0x6f5a59'
|
||||
cyan: '0x525f66'
|
||||
white: '0xcdcdcd'
|
||||
@ -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,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x181512'
|
||||
foreground: '0xbea492'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x332d29'
|
||||
red: '0x8c644c'
|
||||
green: '0x746c48'
|
||||
yellow: '0x908a66'
|
||||
blue: '0x646a6d'
|
||||
magenta: '0x605655'
|
||||
cyan: '0x4b5c5e'
|
||||
white: '0x504339'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x817267'
|
||||
red: '0x9f7155'
|
||||
green: '0x857b52'
|
||||
yellow: '0x9c956e'
|
||||
blue: '0x71777a'
|
||||
magenta: '0x656565'
|
||||
cyan: '0x556d70'
|
||||
white: '0x9a875f'
|
||||
@ -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,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x161616'
|
||||
foreground: '0xffffff'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x222222'
|
||||
red: '0xe84f4f'
|
||||
green: '0xb7ce42'
|
||||
yellow: '0xfea63c'
|
||||
blue: '0x66aabb'
|
||||
magenta: '0xb7416e'
|
||||
cyan: '0x6d878d'
|
||||
white: '0xdddddd'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x666666'
|
||||
red: '0xd23d3d'
|
||||
green: '0xbde077'
|
||||
yellow: '0xffe863'
|
||||
blue: '0xaaccbb'
|
||||
magenta: '0xe16a98'
|
||||
cyan: '0x42717b'
|
||||
white: '0xcccccc'
|
||||
@ -1,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x1d1f21'
|
||||
foreground: '0xc5c8c6'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x282a2e'
|
||||
red: '0xa54242'
|
||||
green: '0x8c9440'
|
||||
yellow: '0xde935f'
|
||||
blue: '0x5f819d'
|
||||
magenta: '0x85678f'
|
||||
cyan: '0x5e8d87'
|
||||
white: '0x707880'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x373b41'
|
||||
red: '0xcc6666'
|
||||
green: '0xb5bd68'
|
||||
yellow: '0xf0c674'
|
||||
blue: '0x81a2be'
|
||||
magenta: '0xb294bb'
|
||||
cyan: '0x8abeb7'
|
||||
white: '0xc5c8c6'
|
||||
@ -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,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x232323'
|
||||
foreground: '0xa0a0a0'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x303030'
|
||||
red: '0xd370a3'
|
||||
green: '0x6d9e3f'
|
||||
yellow: '0xb58858'
|
||||
blue: '0x6095c5'
|
||||
magenta: '0xac7bde'
|
||||
cyan: '0x3ba275'
|
||||
white: '0xcfcfcf'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x686868'
|
||||
red: '0xffa7da'
|
||||
green: '0xa3d572'
|
||||
yellow: '0xefbd8b'
|
||||
blue: '0x98cbfe'
|
||||
magenta: '0xe5b0ff'
|
||||
cyan: '0x75daa9'
|
||||
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,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x1e1e1e'
|
||||
foreground: '0xffffff'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x5a7260'
|
||||
red: '0x8f423c'
|
||||
green: '0xbbbb88'
|
||||
yellow: '0xf9d25b'
|
||||
blue: '0xe0ba69'
|
||||
magenta: '0x709289'
|
||||
cyan: '0xd13516'
|
||||
white: '0xefe2e0'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x8da691'
|
||||
red: '0xeeaa88'
|
||||
green: '0xccc68d'
|
||||
yellow: '0xeedd99'
|
||||
blue: '0xc9b957'
|
||||
magenta: '0xffcbab'
|
||||
cyan: '0xc25431'
|
||||
white: '0xf9f1ed'
|
||||
@ -1,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x1b1b1b'
|
||||
foreground: '0xffffff'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x3d3d3d'
|
||||
red: '0x6673bf'
|
||||
green: '0x3ea290'
|
||||
yellow: '0xb0ead9'
|
||||
blue: '0x31658c'
|
||||
magenta: '0x596196'
|
||||
cyan: '0x8292b2'
|
||||
white: '0xc8cacc'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x4d4d4d'
|
||||
red: '0x899aff'
|
||||
green: '0x52ad91'
|
||||
yellow: '0x98c9bb'
|
||||
blue: '0x477ab3'
|
||||
magenta: '0x7882bf'
|
||||
cyan: '0x95a7cc'
|
||||
white: '0xedeff2'
|
||||
@ -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: '0x272822'
|
||||
foreground: '0xf1ebeb'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x48483e'
|
||||
red: '0xdc2566'
|
||||
green: '0x8fc029'
|
||||
yellow: '0xd4c96e'
|
||||
blue: '0x55bcce'
|
||||
magenta: '0x9358fe'
|
||||
cyan: '0x56b7a5'
|
||||
white: '0xacada1'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x76715e'
|
||||
red: '0xfa2772'
|
||||
green: '0xa7e22e'
|
||||
yellow: '0xe7db75'
|
||||
blue: '0x66d9ee'
|
||||
magenta: '0xae82ff'
|
||||
cyan: '0x66efd5'
|
||||
white: '0xcfd0c2'
|
||||
@ -1,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x021b21'
|
||||
foreground: '0xe8dfd6'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x032c36'
|
||||
red: '0xc2454e'
|
||||
green: '0x7cbf9e'
|
||||
yellow: '0x8a7a63'
|
||||
blue: '0x2e3340'
|
||||
magenta: '0xff5879'
|
||||
cyan: '0x44b5b1'
|
||||
white: '0xf2f1b9'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x065f73'
|
||||
red: '0xef5847'
|
||||
green: '0xa2d9b1'
|
||||
yellow: '0xbeb090'
|
||||
blue: '0x61778d'
|
||||
magenta: '0xff99a1'
|
||||
cyan: '0x9ed9d8'
|
||||
white: '0xf6f6c9'
|
||||
@ -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 - 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,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x151515'
|
||||
foreground: '0x888888'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x292929'
|
||||
red: '0xcf6a4c'
|
||||
green: '0x19cb00'
|
||||
yellow: '0xfad07a'
|
||||
blue: '0x8197bf'
|
||||
magenta: '0x8787af'
|
||||
cyan: '0x668799'
|
||||
white: '0x888888'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x525252'
|
||||
red: '0xff9d80'
|
||||
green: '0x23fd00'
|
||||
yellow: '0xffefbf'
|
||||
blue: '0xaccaff'
|
||||
magenta: '0xc4c4ff'
|
||||
cyan: '0x80bfaf'
|
||||
white: '0xe8e8d3'
|
||||
@ -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,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,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x1f1f1f'
|
||||
foreground: '0xc0b18b'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x4a3637'
|
||||
red: '0xd17b49'
|
||||
green: '0x7b8748'
|
||||
yellow: '0xaf865a'
|
||||
blue: '0x535c5c'
|
||||
magenta: '0x775759'
|
||||
cyan: '0x6d715e'
|
||||
white: '0xc0b18b'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x402e2e'
|
||||
red: '0xac5d2f'
|
||||
green: '0x647035'
|
||||
yellow: '0x8f6840'
|
||||
blue: '0x444b4b'
|
||||
magenta: '0x614445'
|
||||
cyan: '0x585c49'
|
||||
white: '0x978965'
|
||||
@ -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)
|
||||
# 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,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,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,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x101010'
|
||||
foreground: '0xd2c5bc'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x202020'
|
||||
red: '0xb91e2e'
|
||||
green: '0x81957c'
|
||||
yellow: '0xf9bb80'
|
||||
blue: '0x356579'
|
||||
magenta: '0x2d2031'
|
||||
cyan: '0x0b3452'
|
||||
white: '0x909090'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x606060'
|
||||
red: '0xd14548'
|
||||
green: '0xa7b79a'
|
||||
yellow: '0xfae3a0'
|
||||
blue: '0x7491a1'
|
||||
magenta: '0x87314e'
|
||||
cyan: '0x0f829d'
|
||||
white: '0xfff0f0'
|
||||
@ -1,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x333333'
|
||||
foreground: '0xcccccc'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x666666'
|
||||
red: '0xcc6699'
|
||||
green: '0x99cc66'
|
||||
yellow: '0xcc9966'
|
||||
blue: '0x6699cc'
|
||||
magenta: '0x9966cc'
|
||||
cyan: '0x66cc99'
|
||||
white: '0xcccccc'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x999999'
|
||||
red: '0xff99cc'
|
||||
green: '0xccff99'
|
||||
yellow: '0xffcc99'
|
||||
blue: '0x99ccff'
|
||||
magenta: '0xcc99ff'
|
||||
cyan: '0x99ffcc'
|
||||
white: '0xffffff'
|
||||
@ -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,27 +0,0 @@
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0xf5e7de'
|
||||
foreground: '0x34302d'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x666661'
|
||||
red: '0x992e2e'
|
||||
green: '0x4c3226'
|
||||
yellow: '0xa67c53'
|
||||
blue: '0x4c7399'
|
||||
magenta: '0xbf9986'
|
||||
cyan: '0xd97742'
|
||||
white: '0x34302d'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x7f7f7a'
|
||||
red: '0xb23636'
|
||||
green: '0x664233'
|
||||
yellow: '0xbf8f60'
|
||||
blue: '0x5986b2'
|
||||
magenta: '0xd9ae98'
|
||||
cyan: '0xf2854a'
|
||||
white: '0x4c4742'
|
||||
@ -1,14 +0,0 @@
|
||||
[font]
|
||||
size = 10
|
||||
|
||||
[font.bold]
|
||||
family = "JetBrainsMono Nerd Font"
|
||||
|
||||
[font.bold_italic]
|
||||
family = "JetBrainsMono Nerd Font"
|
||||
|
||||
[font.italic]
|
||||
family = "JetBrainsMono Nerd Font"
|
||||
|
||||
[font.normal]
|
||||
family = "JetBrainsMono Nerd Font"
|
||||
554
config/i3/config
554
config/i3/config
@ -1,328 +1,334 @@
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## i3wm configuration for Archcraft
|
||||
##
|
||||
## i3 config file (v4)
|
||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
||||
# finds out, if available)
|
||||
#bar {
|
||||
#status_command i3status
|
||||
#}
|
||||
|
||||
##-- Include Config Files ----------------------
|
||||
# This file has been auto-generated by i3-config-wizard(1).
|
||||
# It will not be overwritten, so edit it as you like.
|
||||
#
|
||||
# Should you change your keyboard layout some time, delete
|
||||
# this file and re-run i3-config-wizard(1).
|
||||
#
|
||||
|
||||
## Tilde expands to the user’s home directory:
|
||||
#include ~/.config/i3/01_theme.conf
|
||||
# i3 config file (v4)
|
||||
#
|
||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
||||
#
|
||||
|
||||
## Environment variables are expanded:
|
||||
#include $HOME/.config/i3/01_theme.conf
|
||||
set $mod Mod4
|
||||
|
||||
## Wildcards are expanded:
|
||||
#include ~/.config/i3/config.d/*.conf
|
||||
# Font for window titles. Will also be used by the bar unless a different font
|
||||
# is used in the bar {} block below.
|
||||
font pango:DejaVu Sans Mono 10
|
||||
|
||||
## Command substitution:
|
||||
#include ~/.config/i3/`hostname`.conf
|
||||
# This font is widely installed, provides lots of unicode glyphs, right-to-left
|
||||
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
||||
#font pango:DejaVu Sans Mono 8
|
||||
|
||||
## i3 changes the working directory while parsing a config file
|
||||
## so that relative paths are interpreted relative to the directory
|
||||
## of the config file that contains the path:
|
||||
#include 01_theme.conf
|
||||
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
|
||||
# they are included here as an example. Modify as you see fit.
|
||||
|
||||
## To list all loaded configuration files, run `i3 --moreversion`
|
||||
# xss-lock zen grabs a logind suspend inhibit lock and will use i3lock to lock the
|
||||
# screen before suspend.
|
||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
|
||||
|
||||
#------
|
||||
# NetworkManager is the most popular way to manage wireless networks on Linux,
|
||||
# and nm-applet is a desktop environment-independent system tray GUI for it.
|
||||
exec --no-startup-id nm-applet
|
||||
|
||||
## Load i3 config files
|
||||
include ~/.config/i3/config.d/*.conf
|
||||
exec --no-startup-id telegram-desktop
|
||||
# exec --no-startup-id syncthing-gtk
|
||||
exec --no-startup-id keepass
|
||||
exec --no-startup-id onboard
|
||||
exec --no-startup-id touchegg
|
||||
exec --no-startup-id xscreensaver
|
||||
# exec --no-startup-id mailspring
|
||||
# exec --no-startup-id minetime
|
||||
|
||||
## Enable/Disable i3 bar
|
||||
#include ~/.config/i3/i3status/statusbar.conf
|
||||
# No border :)
|
||||
default_border pixel 1
|
||||
default_floating_border none
|
||||
# Default colors
|
||||
# class border backgr. text indicator child_border
|
||||
client.focused #ffffff #888888 #000000 #ffffff #888888
|
||||
client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
|
||||
client.unfocused #a000ff #040404 #888888 #444444 #444444
|
||||
client.urgent #2f343a #600099 #ffffff #600099 #600099
|
||||
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
|
||||
|
||||
##-- Mod Keys ----------------------------------
|
||||
set $MOD Mod4
|
||||
set $ALT Mod1
|
||||
client.background #000000
|
||||
|
||||
##-- General Settings --------------------------
|
||||
# Use pactl to adjust volume in PulseAudio.
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +8%
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -7%
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||
|
||||
## Floating Modifier
|
||||
##
|
||||
## To move floating windows with your mouse, you can either grab their titlebar
|
||||
## or configure the so-called floating modifier which you can then press and click
|
||||
## anywhere in the window itself to move it.
|
||||
##
|
||||
## When holding the floating modifier, you can resize a floating window by pressing
|
||||
## the right mouse button on it and moving around while holding it.
|
||||
## If you hold the shift button as well, the resize will be proportional
|
||||
## (the aspect ratio will be preserved).
|
||||
floating_modifier $MOD
|
||||
# Brightness settings
|
||||
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 5
|
||||
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 5
|
||||
|
||||
#------
|
||||
# Transparent lock
|
||||
bindsym $mod+i exec xtrlock
|
||||
|
||||
## Orientation for new workspaces
|
||||
##
|
||||
## New workspaces get a reasonable default orientation: Wide-screen monitors
|
||||
## (anything wider than high) get horizontal orientation, rotated monitors
|
||||
## (anything higher than wide) get vertical orientation.
|
||||
##
|
||||
## Syntax: default_orientation horizontal|vertical|auto
|
||||
default_orientation auto
|
||||
# Multiple display settings
|
||||
bindsym XF86Display exec --no-startup-id arandr
|
||||
|
||||
#------
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
## Layout mode for new containers
|
||||
##
|
||||
## This option determines in which mode new containers on workspace level will start.
|
||||
##
|
||||
## Syntax: workspace_layout default|stacking|tabbed
|
||||
workspace_layout default
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec i3-sensible-terminal
|
||||
|
||||
#------
|
||||
# kill focused window
|
||||
bindsym $mod+w kill
|
||||
|
||||
## Window title alignment
|
||||
##
|
||||
## This option determines the window title’s text alignment. Default is left
|
||||
##
|
||||
## Syntax: title_align left|center|right
|
||||
title_align center
|
||||
# start dmenu (a program launcher)
|
||||
#bindsym $mod+r exec dmenu_run
|
||||
bindsym $mod+r exec --no-startup-id ~/.config/rofi/bin/menu_powermenu
|
||||
#bindsym $mod+r exec --no-startup-id ~/rofi/files/powermenu/type-2/powermenu.sh
|
||||
# start rofi
|
||||
bindsym $mod+p exec "rofi -modes combi -show combi run,window"
|
||||
# switch rofi
|
||||
bindsym $mod+q exec rofi -show window
|
||||
# rofi fb
|
||||
bindsym $mod+g exec rofi -show file-browser-extended
|
||||
# ssh rofi
|
||||
#bindsym $mod+c exec rofi -show ssh
|
||||
bindsym $mod+c exec --no-startup-id ~/.config/rofi/bin/menu_time
|
||||
# lock screen
|
||||
bindsym $mod+o exec ~/lock.sh
|
||||
#bindsym $mod+o exec slimlock
|
||||
# ristretto
|
||||
bindsym $mod+e exec nemo
|
||||
|
||||
## Print all window titles in format of 'class | title'
|
||||
for_window [class=".*"] title_format "%class | %title"
|
||||
# There also is the (new) i3-dmenu-desktop which only displays applications
|
||||
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
|
||||
# installed.
|
||||
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
|
||||
|
||||
## Enable window icons for all windows
|
||||
for_window [all] title_window_icon off
|
||||
# change focus
|
||||
bindsym $mod+h focus left
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
|
||||
## Enable window icons for all windows with extra horizontal padding
|
||||
#for_window [all] title_window_icon padding 5px
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
#------
|
||||
# move focused window
|
||||
bindsym $mod+Shift+h move left
|
||||
bindsym $mod+Shift+j move down
|
||||
bindsym $mod+Shift+k move up
|
||||
bindsym $mod+Shift+l move right
|
||||
|
||||
## Default border style for new windows
|
||||
##
|
||||
## This option determines which border style new windows will have. The default is `normal`.
|
||||
## Note that `default_floating_border` applies only to windows which are starting out
|
||||
## as floating windows, e.g., dialog windows, but not windows that are floated later on.
|
||||
##
|
||||
## Setting border style to `pixel` eliminates title bars. The border style `normal`
|
||||
## allows you to adjust edge border width while keeping your title bar.
|
||||
##
|
||||
## Syntax:
|
||||
#default_border normal|none|pixel
|
||||
#default_border normal|pixel <px>
|
||||
#default_floating_border normal|none|pixel
|
||||
#default_floating_border normal|pixel <px>
|
||||
#default_border pixel 2
|
||||
#default_floating_border pixel 2
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
#------
|
||||
# Resizing windows
|
||||
bindsym $mod+Ctrl+Shift+Up resize shrink height 10 px or 10 ppt
|
||||
bindsym $mod+Ctrl+Shift+Down resize grow height 10 px or 10 ppt
|
||||
bindsym $mod+Ctrl+Shift+Right resize shrink width 10 px or 10 ppt
|
||||
bindsym $mod+Ctrl+Shift+Left resize grow width 10 px or 10 ppt
|
||||
|
||||
## Hiding borders adjacent to the screen edges
|
||||
##
|
||||
## You can hide container borders adjacent to the screen edges using `hide_edge_borders`
|
||||
## (the default is none). Hiding borders is useful if you are using scrollbars,
|
||||
## or do not want to waste even two pixels in displayspace.
|
||||
##
|
||||
## The `smart` setting hides borders on workspaces with only one window visible,
|
||||
## but keeps them on workspaces with multiple windows visible.
|
||||
##
|
||||
## The `smart_no_gaps` setting hides edge-specific borders of a container if the
|
||||
## container is the only container on its workspace and the gaps to the screen edge are 0.
|
||||
##
|
||||
## Syntax: hide_edge_borders none|vertical|horizontal|both|smart|smart_no_gaps
|
||||
hide_edge_borders none
|
||||
bindsym $mod+Ctrl+Shift+k resize shrink height 10 px or 10 ppt
|
||||
bindsym $mod+Ctrl+Shift+j resize grow height 10 px or 10 ppt
|
||||
bindsym $mod+Ctrl+Shift+l resize shrink width 10 px or 10 ppt
|
||||
bindsym $mod+Ctrl+Shift+h resize grow width 10 px or 10 ppt
|
||||
|
||||
#------
|
||||
# split in horizontal orientation
|
||||
bindsym $mod+b split h
|
||||
|
||||
## Smart borders
|
||||
##
|
||||
## Smart borders will draw borders on windows only if there is more than one window
|
||||
## in a workspace. This feature can also be enabled only if the gap size between
|
||||
## window and screen edge is 0.
|
||||
##
|
||||
## Syntax: smart_borders on|off|no_gaps
|
||||
#smart_borders on
|
||||
# split in vertical orientation
|
||||
bindsym $mod+v split v
|
||||
|
||||
#------
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
## Don’t focus window upon opening
|
||||
##
|
||||
## When a new window appears, it will be focused. The `no_focus` directive allows
|
||||
## preventing this from happening and must be used in combination with [command_criteria].
|
||||
##
|
||||
## Syntax: no_focus <criteria>
|
||||
#no_focus [window_role="pop-up"]
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+t layout tabbed
|
||||
bindsym $mod+a layout toggle split
|
||||
|
||||
#------
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
## Automatically putting workspaces on specific screens
|
||||
##
|
||||
## If you assign clients to workspaces, it might be handy to put the workspaces on
|
||||
## specific screens. Also, the assignment of workspaces to screens will determine
|
||||
## which workspace i3 uses for a new screen when adding screens or when starting
|
||||
## (e.g., by default it will use 1 for the first screen, 2 for the second screen and so on).
|
||||
##
|
||||
## Syntax: workspace <workspace> output <output1> [output2]…
|
||||
##
|
||||
## The `output` is the name of the RandR output you attach your screen to.
|
||||
## On a laptop, you might have VGA1 and LVDS1 as output names.
|
||||
## You can see the available outputs by running `xrandr --current`
|
||||
#workspace 1 output LVDS1
|
||||
#workspace 2 output primary
|
||||
#workspace 5 output VGA1 LVDS1
|
||||
#workspace "2: vim" output VGA1
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
#------
|
||||
# focus the parent container
|
||||
# bindsym $mod+a focus parent
|
||||
|
||||
## Interprocess communication
|
||||
##
|
||||
## i3 uses Unix sockets to provide an IPC interface. This allows third-party programs
|
||||
## to get information from i3, such as the current workspaces (to display a workspace bar), and to control i3.
|
||||
##
|
||||
## You can override the default path through the environment-variable `I3SOCK`
|
||||
## or by specifying the `ipc-socket` directive.This is discouraged, though,
|
||||
## since i3 does the right thing by default. If you decide to change it,
|
||||
## it is strongly recommended to set this to a location in your home directory
|
||||
## so that no other user can create that directory.
|
||||
#ipc-socket ~/.i3/i3-ipc.sock
|
||||
# focus the child container
|
||||
#bindsym $mod+d focus child
|
||||
|
||||
#------
|
||||
# Define names for default workspaces for which we configure key bindings later on.
|
||||
# We use variables to avoid repeating the names in multiple places.
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
set $ws11 "A"
|
||||
set $ws12 "B"
|
||||
set $ws13 "C"
|
||||
set $ws14 "D"
|
||||
set $ws15 "E"
|
||||
set $ws16 "F"
|
||||
set $ws17 "G"
|
||||
set $ws18 "H"
|
||||
set $ws19 "I"
|
||||
set $ws20 "J"
|
||||
|
||||
## Focus follows mouse
|
||||
##
|
||||
## By default, window focus follows your mouse movements as the mouse crosses window borders.
|
||||
## However, if you have a setup where your mouse usually is in your way
|
||||
## (like a touchpad on your laptop which you do not want to disable completely),
|
||||
## you might want to disable `focus follows mouse` and control focus only by using your keyboard.
|
||||
## The mouse will still be useful inside the currently active window (for example to click on links in your browser window).
|
||||
##
|
||||
## Syntax: focus_follows_mouse yes|no
|
||||
focus_follows_mouse yes
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace $ws1
|
||||
bindsym $mod+2 workspace $ws2
|
||||
bindsym $mod+3 workspace $ws3
|
||||
bindsym $mod+4 workspace $ws4
|
||||
bindsym $mod+5 workspace $ws5
|
||||
bindsym $mod+6 workspace $ws6
|
||||
bindsym $mod+7 workspace $ws7
|
||||
bindsym $mod+8 workspace $ws8
|
||||
bindsym $mod+9 workspace $ws9
|
||||
bindsym $mod+0 workspace $ws10
|
||||
bindsym $mod+F1 workspace $ws11
|
||||
bindsym $mod+F2 workspace $ws12
|
||||
bindsym $mod+F3 workspace $ws13
|
||||
bindsym $mod+F4 workspace $ws14
|
||||
bindsym $mod+F5 workspace $ws15
|
||||
bindsym $mod+F6 workspace $ws16
|
||||
bindsym $mod+F7 workspace $ws17
|
||||
bindsym $mod+F8 workspace $ws18
|
||||
bindsym $mod+F9 workspace $ws19
|
||||
bindsym $mod+F10 workspace $ws20
|
||||
|
||||
#------
|
||||
# Scratchpad
|
||||
# Make the currently focused window a scratchpad
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
# Show the first scratchpad window
|
||||
bindsym $mod+minus scratchpad show
|
||||
|
||||
## Mouse warping
|
||||
##
|
||||
## By default, when switching focus to a window on a different output
|
||||
## (e.g. focusing a window on workspace 3 on output VGA-1, coming from workspace 2 on LVDS-1),
|
||||
## the mouse cursor is warped to the center of that window.
|
||||
##
|
||||
## With the `mouse_warping` option, you can control when the mouse cursor should be warped.
|
||||
## `none` disables warping entirely, whereas `output` is the default behavior described above.
|
||||
##
|
||||
## Syntax: mouse_warping output|none
|
||||
mouse_warping none
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace $ws10
|
||||
bindsym $mod+Shift+F1 move container to workspace $ws11
|
||||
bindsym $mod+Shift+F2 move container to workspace $ws12
|
||||
bindsym $mod+Shift+F3 move container to workspace $ws13
|
||||
bindsym $mod+Shift+F4 move container to workspace $ws14
|
||||
bindsym $mod+Shift+F5 move container to workspace $ws15
|
||||
bindsym $mod+Shift+F6 move container to workspace $ws16
|
||||
bindsym $mod+Shift+F7 move container to workspace $ws17
|
||||
bindsym $mod+Shift+F8 move container to workspace $ws18
|
||||
bindsym $mod+Shift+F9 move container to workspace $ws19
|
||||
bindsym $mod+Shift+F10 move container to workspace $ws20
|
||||
|
||||
#------
|
||||
# reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
# exit i3 (logs you out of your X session)
|
||||
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
|
||||
#
|
||||
#resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# These bindings trigger as soon as you enter the resize mode
|
||||
|
||||
## Popups during fullscreen mode
|
||||
##
|
||||
## When you are in fullscreen mode, some applications still open popup windows (take Xpdf for example).
|
||||
## This is because these applications might not be aware that they are in fullscreen mode
|
||||
## (they do not check the corresponding hint).
|
||||
## There are three things which are possible to do in this situation.
|
||||
##
|
||||
## Syntax: popup_during_fullscreen smart|ignore|leave_fullscreen
|
||||
popup_during_fullscreen smart
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym j resize shrink width 10 px or 10 ppt
|
||||
bindsym k resize grow height 10 px or 10 ppt
|
||||
bindsym l resize shrink height 10 px or 10 ppt
|
||||
bindsym semicolon resize grow width 10 px or 10 ppt
|
||||
|
||||
#------
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
## Focus wrapping
|
||||
##
|
||||
## By default, when in a container with several windows or child containers,
|
||||
## the opposite window will be focused when trying to move the focus over the edge of
|
||||
## a container (and there are no other containers in that direction) — the focus wraps.
|
||||
##
|
||||
## Syntax: focus_wrapping yes|no|force|workspace
|
||||
# Disable focus wrapping
|
||||
#focus_wrapping no
|
||||
# Force focus wrapping
|
||||
#focus_wrapping force
|
||||
# back to normal: Enter or Escape or $mod+r
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
#
|
||||
# Supposed to kill with center button
|
||||
bindsym --release button2 killa
|
||||
|
||||
#------
|
||||
# Custom config window
|
||||
for_window [class="vlc"] floating enable
|
||||
for_window [class="feh"] floating enable
|
||||
|
||||
## Forcing Xinerama
|
||||
##
|
||||
## As explained in-depth in https://i3wm.org/docs/multi-monitor.html, some X11 video
|
||||
## drivers (especially the nVidia binary driver) only provide support for Xinerama
|
||||
## instead of RandR. In such a situation, i3 must be told to use the inferior Xinerama
|
||||
## API explicitly and therefore don’t provide support for reconfiguring your screens
|
||||
## on the fly (they are read only once on startup and that’s it).
|
||||
##
|
||||
## Syntax: force_xinerama yes|no
|
||||
#force_xinerama yes
|
||||
# Assign to desktop
|
||||
assign [class="Firefox"] 1
|
||||
assign [class="KeePass"] 3
|
||||
assign [class="Clementine"] 8
|
||||
assign [class="Telegram"] 9
|
||||
assign [class="Mailspring"] 7
|
||||
assign [class="MineTime"] 7
|
||||
|
||||
#------
|
||||
#bindsym $mod+Return mode "resize"
|
||||
|
||||
## Automatic back-and-forth when switching to the current workspace
|
||||
##
|
||||
## This configuration directive enables automatic `workspace back_and_forth`
|
||||
## when switching to the workspace that is currently focused.
|
||||
##
|
||||
## Syntax: workspace_auto_back_and_forth yes|no
|
||||
workspace_auto_back_and_forth yes
|
||||
# Workspace config
|
||||
#workspace 1 output DisplayPort-2
|
||||
|
||||
#------
|
||||
# i3 bar configuration
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
## Delaying urgency hint reset on workspace change
|
||||
##
|
||||
## If an application on another workspace sets an urgency hint, switching to this
|
||||
## workspace might lead to immediate focus of the application, which also means the
|
||||
## window decoration color would be immediately reset to `client.focused`.
|
||||
## This might make it unnecessarily hard to tell which window originally raised the event.
|
||||
##
|
||||
## In order to prevent this, you can tell i3 to delay resetting the urgency state by
|
||||
## a certain time using the `force_display_urgency_hint` directive.
|
||||
## Setting the value to 0 disables this feature. The default is 500ms.
|
||||
##
|
||||
## Syntax: force_display_urgency_hint <timeout> ms
|
||||
force_display_urgency_hint 500 ms
|
||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
||||
# finds out, if available)
|
||||
bar {
|
||||
# status_command i3status --
|
||||
status_command py3status
|
||||
|
||||
#------
|
||||
position top
|
||||
tray_output primary
|
||||
|
||||
## Focus on window activation
|
||||
##
|
||||
## If a window is activated, e.g., via `google-chrome www.google.com`, it may request to take focus.
|
||||
## Since this might not be preferable, different reactions can be configured.
|
||||
##
|
||||
## Note that this might not affect windows that are being opened.
|
||||
## To prevent new windows from being focused.
|
||||
##
|
||||
## Syntax: focus_on_window_activation smart|urgent|focus|none
|
||||
focus_on_window_activation smart
|
||||
colors {
|
||||
background #000000
|
||||
statusline #a000ff
|
||||
separator #aaaaaa
|
||||
|
||||
#------
|
||||
# Default conf
|
||||
# focused_workspace #4c7899 #285577 #ffffff
|
||||
focused_workspace #ffffff #888888 #000000
|
||||
active_workspace #888888 #444444 #ffffff
|
||||
inactive_workspace #888888 #000000 #a000ff
|
||||
urgent_workspace #2f343a #600099 #ffffff
|
||||
binding_mode #2f343a #600099 #ffffff
|
||||
}
|
||||
|
||||
## Drawing marks on window decoration
|
||||
##
|
||||
## If activated, marks on windows are drawn in their window decoration.
|
||||
## However, any mark starting with an underscore in its name (_) will not be drawn
|
||||
## even if this option is activated.
|
||||
##
|
||||
## The default for this option is yes.
|
||||
##
|
||||
## Syntax: show_marks yes|no
|
||||
show_marks yes
|
||||
separator_symbol "ʃ"
|
||||
#separator_symbol "❰"
|
||||
#separator_symbol "❱"
|
||||
#separator_symbol " ▷ "
|
||||
#separator_symbol " ∠ "
|
||||
#separator_symbol "|"
|
||||
#separator_symbol "ǁ"
|
||||
|
||||
#------
|
||||
strip_workspace_name no
|
||||
strip_workspace_numbers yes
|
||||
|
||||
## Tiling drag
|
||||
##
|
||||
## You can configure how to initiate the tiling drag feature.
|
||||
##
|
||||
## Syntax:
|
||||
#tiling_drag off
|
||||
#tiling_drag modifier|titlebar [modifier|titlebar]
|
||||
tiling_drag modifier titlebar
|
||||
|
||||
##-- Autostart ---------------------------------
|
||||
|
||||
## Automatically starting applications on i3 startup
|
||||
##
|
||||
## By using the `exec` keyword outside a keybinding, you can configure which commands
|
||||
## will be performed by i3 on initial startup. `exec` commands will not run when
|
||||
## restarting i3, if you need a command to run also when restarting i3 you should
|
||||
## use the `exec_always` keyword. These commands will be run in order.
|
||||
##
|
||||
## Syntax:
|
||||
#exec [--no-startup-id] <command>
|
||||
#exec_always [--no-startup-id] <command>
|
||||
# exec_always --no-startup-id setxkbmap us
|
||||
exec_always --no-startup-id ~/.screenlayout/default.sh
|
||||
exec_always --no-startup-id ~/.config/i3/scripts/i3_autostart
|
||||
|
||||
## The --no-startup-id parameter disables startup-notification support for this particular exec command.
|
||||
## With startup-notification, i3 can make sure that a window appears on the workspace on which you used the exec command.
|
||||
binding_mode_indicator no
|
||||
}
|
||||
|
||||
@ -1,91 +0,0 @@
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Theme
|
||||
|
||||
##-- Theme Variables ---------------------
|
||||
|
||||
#~ Fonts
|
||||
set $i3_fonts JetBrainsMono Nerd Font 10
|
||||
|
||||
#~ Border
|
||||
set $i3_border_size 2
|
||||
set $i3_border_style pixel
|
||||
|
||||
#~ Gaps
|
||||
set $i3_gaps_inner 10
|
||||
set $i3_gaps_outer 0
|
||||
set $i3_gaps_smart off
|
||||
|
||||
#~ Colors
|
||||
set $i3_cl_col_bg #1E2128
|
||||
set $i3_cl_col_fg #ABB2BF
|
||||
set $i3_cl_col_in #1786e8
|
||||
set $i3_cl_col_afoc #96cf6e
|
||||
set $i3_cl_col_ifoc #a2cff6
|
||||
set $i3_cl_col_ufoc #292d37
|
||||
set $i3_cl_col_urgt #C778DD
|
||||
set $i3_cl_col_phol #1E2128
|
||||
|
||||
##-- Fonts (Global) ----------------------
|
||||
|
||||
## i3 has support for both X core fonts and FreeType fonts (through Pango) to render window titles.
|
||||
## To generate an X core font description, you can use `xfontsel`
|
||||
#font <X core font description>
|
||||
#font pango:<family list> [<style options>] <size>
|
||||
|
||||
## Examples
|
||||
#font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||
#font pango:DejaVu Sans Mono 10
|
||||
#font pango:DejaVu Sans Mono, Terminus Bold Semi-Condensed 11
|
||||
#font pango:Terminus 11px
|
||||
|
||||
font pango:$i3_fonts
|
||||
|
||||
##-- Border ------------------------------
|
||||
|
||||
## Default border style for new/existing windows
|
||||
for_window [class=".*"] border $i3_border_style $i3_border_size
|
||||
|
||||
##-- Gaps --------------------------------
|
||||
|
||||
## Gaps
|
||||
##
|
||||
## Since i3 4.22, you can configure window gaps. “Gaps” are added spacing between
|
||||
## windows (or split containers) and to the screen edges.
|
||||
##
|
||||
## Syntax:
|
||||
##
|
||||
## Inner gaps for all windows: space between two adjacent windows.
|
||||
#gaps inner <gap_size>[px]
|
||||
|
||||
## Outer gaps for all windows: space along the screen edges.
|
||||
#gaps outer|horizontal|vertical|top|left|bottom|right <gap_size>[px]
|
||||
|
||||
## Inner and outer gaps for all windows on a specific workspace.
|
||||
## <ws> can be a workspace number or name.
|
||||
#workspace <ws> gaps inner <gap_size>[px]
|
||||
#workspace <ws> gaps outer|horizontal|vertical|top|left|bottom|right <gap_size>[px]
|
||||
|
||||
## Enabling “Smart Gaps” means no gaps will be shown when there is
|
||||
## precisely one window or split container on the workspace.
|
||||
##
|
||||
## inverse_outer only enables outer gaps when there is exactly one
|
||||
## window or split container on the workspace.
|
||||
#smart_gaps on|off|inverse_outer
|
||||
|
||||
gaps inner $i3_gaps_inner
|
||||
gaps outer $i3_gaps_outer
|
||||
smart_gaps $i3_gaps_smart
|
||||
|
||||
##-- Colors ------------------------------
|
||||
|
||||
## You can change all colors which i3 uses to draw the window decorations.
|
||||
## Syntax: <colorclass> <border> <background> <text> <indicator> <child_border>
|
||||
|
||||
# class border backgr. text indicator child_border
|
||||
client.focused $i3_cl_col_afoc $i3_cl_col_afoc $i3_cl_col_bg $i3_cl_col_in $i3_cl_col_afoc
|
||||
client.focused_inactive $i3_cl_col_ifoc $i3_cl_col_ifoc $i3_cl_col_bg $i3_cl_col_in $i3_cl_col_ifoc
|
||||
client.unfocused $i3_cl_col_ufoc $i3_cl_col_ufoc $i3_cl_col_fg $i3_cl_col_in $i3_cl_col_ufoc
|
||||
client.urgent $i3_cl_col_urgt $i3_cl_col_urgt $i3_cl_col_fg $i3_cl_col_in $i3_cl_col_urgt
|
||||
client.placeholder $i3_cl_col_phol $i3_cl_col_phol $i3_cl_col_fg $i3_cl_col_in $i3_cl_col_phol
|
||||
client.background $i3_cl_col_bg
|
||||
@ -1,250 +0,0 @@
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>config.d
|
||||
##
|
||||
## Keybindings
|
||||
|
||||
##-- Key Bindings ------------------------
|
||||
|
||||
## A keysym (key symbol) is a description for a specific symbol, like "a" or "b",
|
||||
## but also more strange ones like "underscore" instead of "_".
|
||||
## These are the ones you use in Xmodmap to remap your keys.
|
||||
## To get the current mapping of your keys, use `xmodmap -pke`.
|
||||
## To interactively enter a key and see what keysym it is configured to, use `xev`.
|
||||
##
|
||||
## Keycodes do not need to have a symbol assigned (handy for custom vendor hotkeys on some notebooks)
|
||||
## and they will not change their meaning as you switch to a different keyboard layout (when using `xmodmap`).
|
||||
##
|
||||
## If you often switch keyboard layouts but you want to keep your bindings in the
|
||||
## same physical location on the keyboard, use keycodes.
|
||||
## If you don’t switch layouts, and want a clean and simple config file, use keysyms.
|
||||
##
|
||||
## Available Modifiers: Mod1-Mod5, Shift, Control
|
||||
##
|
||||
## Syntax:
|
||||
# bindsym [--release] [<Group>+][<Modifiers>+]<keysym> command
|
||||
# bindcode [--release] [<Group>+][<Modifiers>+]<keycode> command
|
||||
|
||||
##-- Variables ---------------------------
|
||||
set $terminal ~/.config/i3/scripts/i3_term
|
||||
set $music_player ~/.config/i3/scripts/i3_music
|
||||
set $color_picker ~/.config/i3/scripts/i3_colorpicker
|
||||
set $brightness ~/.config/i3/scripts/i3_brightness
|
||||
set $volume ~/.config/i3/scripts/i3_volume
|
||||
set $screenshot ~/.config/i3/scripts/i3_screenshot
|
||||
set $alacritty alacritty --config-file ~/.config/i3/alacritty/alacritty.yml
|
||||
set $rofi_applets ~/.config/i3/scripts
|
||||
set $file_manager nemo
|
||||
set $text_editor nvim
|
||||
set $web_browser firefox
|
||||
|
||||
## -- Terminal --
|
||||
bindsym $MOD+Return exec --no-startup-id $terminal
|
||||
# bindsym $MOD+Shift+Return exec --no-startup-id "$terminal --float"
|
||||
# bindsym $MOD+$ALT+Return exec --no-startup-id "$terminal --full"
|
||||
|
||||
## -- GUI Apps --
|
||||
bindsym $MOD+Shift+f exec --no-startup-id $file_manager
|
||||
bindsym $MOD+Shift+e exec --no-startup-id $text_editor
|
||||
bindsym $MOD+Shift+w exec --no-startup-id $web_browser
|
||||
|
||||
## -- CLI Apps --
|
||||
bindsym $MOD+Shift+Return exec --no-startup-id "$terminal --float -e tmux new-session nvim"
|
||||
# bindsym $MOD+Control+h exec --no-startup-id "$terminal -e tmux new-session htop"
|
||||
|
||||
## -- Rofi Applets --
|
||||
bindsym $MOD+p exec --no-startup-id $rofi_applets/rofi_launcher -dpi 1
|
||||
bindsym $MOD+n exec --no-startup-id $rofi_applets/network_menu -dpi 1
|
||||
bindsym $MOD+r exec --no-startup-id $rofi_applets/rofi_powermenu -dpi 1
|
||||
bindsym $MOD+q exec --no-startup-id $rofi_applets/rofi_windows -dpi 1
|
||||
bindsym $MOD+m exec --no-startup-id $rofi_applets/rofi_music -dpi 1
|
||||
# bindsym $MOD+r exec --no-startup-id $rofi_applets/rofi_asroot
|
||||
# bindsym $MOD+s exec --no-startup-id $rofi_applets/rofi_screenshot
|
||||
bindsym $MOD+t exec --no-startup-id $rofi_applets/rofi_themes -dpi 1
|
||||
|
||||
## -- Function keys --
|
||||
bindsym XF86MonBrightnessUp exec --no-startup-id "$brightness --inc"
|
||||
bindsym XF86MonBrightnessDown exec --no-startup-id "$brightness --dec"
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id "$volume --inc"
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id "$volume --dec"
|
||||
bindsym XF86AudioMute exec --no-startup-id "$volume --toggle"
|
||||
bindsym XF86AudioMicMute exec --no-startup-id "$volume --toggle-mic"
|
||||
bindsym XF86AudioNext exec --no-startup-id "mpc next"
|
||||
bindsym XF86AudioPrev exec --no-startup-id "mpc prev"
|
||||
bindsym XF86AudioPlay exec --no-startup-id "mpc toggle"
|
||||
bindsym XF86AudioStop exec --no-startup-id "mpc stop"
|
||||
|
||||
## -- Screenshots --
|
||||
bindsym Print exec --no-startup-id "$screenshot --now"
|
||||
bindsym Control+Print exec --no-startup-id "$screenshot --in5"
|
||||
# bindsym Shift+Print exec --no-startup-id "$screenshot --in10"
|
||||
bindsym Shift+Print exec --no-startup-id $rofi_applets/rofi_screenshot
|
||||
bindsym Control+Shift+Print exec --no-startup-id "$screenshot --win"
|
||||
bindsym $MOD+Print exec --no-startup-id "$screenshot --area"
|
||||
|
||||
## -- Misc --
|
||||
# bindsym --release $MOD+p exec --no-startup-id $color_picker
|
||||
bindsym $ALT+Control+l exec --no-startup-id "betterlockscreen --lock"
|
||||
|
||||
##-- WM Specific -------------------------
|
||||
|
||||
## Kill focused window
|
||||
##
|
||||
bindsym $MOD+w kill
|
||||
bindsym $MOD+c kill
|
||||
|
||||
#------
|
||||
|
||||
## Send Notification
|
||||
##
|
||||
set $send-notify exec --no-startup-id dunstify -u low -h string:x-dunst-stack-tag:i3config
|
||||
|
||||
## Splitting containers
|
||||
##
|
||||
## split in horizontal orientation
|
||||
bindsym $MOD+h split horizontal, $send-notify 'Split Horizontally'
|
||||
## split in vertical orientation
|
||||
bindsym $MOD+v split vertical, $send-notify 'Split Vertically'
|
||||
## toggle split
|
||||
#bindsym $MOD+g split toggle, $send-notify 'Split Mode'
|
||||
|
||||
#------
|
||||
|
||||
## Manipulating layout
|
||||
##
|
||||
## change container layout (stacked, tabbed, toggle split)
|
||||
## Set stacking layout
|
||||
bindsym $MOD+Shift+s layout stacking, $send-notify 'Layout - Stacking'
|
||||
## Set tabbed layout
|
||||
bindsym $MOD+Shift+t layout tabbed, $send-notify 'Layout - Tabbed'
|
||||
## Set default layout
|
||||
bindsym $MOD+Shift+d layout default, $send-notify 'Layout - Default'
|
||||
## Toggle between stacking/tabbed/split:
|
||||
bindsym $MOD+Shift+l layout toggle, $send-notify 'Cycling Layouts'
|
||||
## Toggle between horizontal/vertical:
|
||||
bindsym $MOD+Shift+v layout toggle split, $send-notify 'Layout - Hor/Vert'
|
||||
## Toggle fullscreen
|
||||
bindsym $MOD+f fullscreen toggle, $send-notify 'Toggled Fullscreen'
|
||||
## Toggle floating/tiling
|
||||
bindsym $MOD+space floating toggle, $send-notify 'Toggled Floating Mode'
|
||||
|
||||
#------
|
||||
|
||||
## Focusing containers
|
||||
##
|
||||
## Sets focus to the nearest container in the given direction.
|
||||
bindsym $MOD+Left focus left
|
||||
bindsym $MOD+Down focus down
|
||||
bindsym $MOD+Up focus up
|
||||
bindsym $MOD+Right focus right
|
||||
|
||||
bindsym $MOD+a focus left
|
||||
bindsym $MOD+d focus right
|
||||
## Sets focus to the parent container of the current container.
|
||||
# bindsym $MOD+a focus parent
|
||||
## The opposite of `focus parent`, sets the focus to the last focused child container.
|
||||
# bindsym $MOD+d focus child
|
||||
## Automatically sets focus to the adjacent container.
|
||||
bindsym $MOD+Tab focus next
|
||||
## Toggles focus between floating/tiling containers.
|
||||
bindsym $MOD+Shift+space focus mode_toggle
|
||||
|
||||
#------
|
||||
|
||||
## Moving containers
|
||||
##
|
||||
## move focused window in the given direction.
|
||||
bindsym $MOD+Shift+Left move left
|
||||
bindsym $MOD+Shift+Down move down
|
||||
bindsym $MOD+Shift+Up move up
|
||||
bindsym $MOD+Shift+Right move right
|
||||
## Move floating container to the center of all outputs (floating only)
|
||||
bindsym $MOD+$ALT+c move absolute position center
|
||||
## Move container to the current position of the cursor (floating only)
|
||||
bindsym $MOD+$ALT+p move position mouse
|
||||
|
||||
#------
|
||||
|
||||
## Resizing containers/windows
|
||||
##
|
||||
bindsym $MOD+$ALT+Left resize shrink width 50 px or 10 ppt
|
||||
bindsym $MOD+$ALT+Down resize grow height 50 px or 10 ppt
|
||||
bindsym $MOD+$ALT+Up resize shrink height 50 px or 10 ppt
|
||||
bindsym $MOD+$ALT+Right resize grow width 50 px or 10 ppt
|
||||
|
||||
#------
|
||||
|
||||
## Sticky floating windows (floating only)
|
||||
##
|
||||
bindsym $MOD+Shift+o sticky toggle, $send-notify 'Toggled Sticky'
|
||||
|
||||
#------
|
||||
|
||||
## Changing border style
|
||||
##
|
||||
bindsym $MOD+y border toggle, $send-notify 'Toggled Borders'
|
||||
|
||||
#------
|
||||
|
||||
## Scratchpad
|
||||
##
|
||||
## Make the currently focused window a scratchpad
|
||||
bindsym $MOD+Shift+minus move scratchpad, $send-notify 'Scratchpad'
|
||||
## Show the first scratchpad window
|
||||
bindsym $MOD+minus scratchpad show
|
||||
|
||||
#------
|
||||
|
||||
## restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym Ctrl+Shift+r restart, $send-notify 'i3wm Restarted!'
|
||||
## reload the configuration file
|
||||
bindsym $MOD+Shift+c reload, $send-notify 'Configuration Reloaded!'
|
||||
## quit i3 session
|
||||
bindsym $MOD+Shift+q exit
|
||||
|
||||
#------
|
||||
|
||||
## Changing (named) workspaces/moving to workspaces
|
||||
##
|
||||
## Define names for default workspaces for which we configure key bindings later on.
|
||||
## We use variables to avoid repeating the names in multiple places.
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
## switch to workspace
|
||||
bindsym $MOD+1 workspace number $ws1
|
||||
bindsym $MOD+2 workspace number $ws2
|
||||
bindsym $MOD+3 workspace number $ws3
|
||||
bindsym $MOD+4 workspace number $ws4
|
||||
bindsym $MOD+5 workspace number $ws5
|
||||
bindsym $MOD+6 workspace number $ws6
|
||||
bindsym $MOD+7 workspace number $ws7
|
||||
bindsym $MOD+8 workspace number $ws8
|
||||
bindsym $MOD+9 workspace number $ws9
|
||||
bindsym $MOD+0 workspace number $ws10
|
||||
|
||||
## move focused container to workspace
|
||||
bindsym $MOD+Shift+1 move container to workspace number $ws1
|
||||
bindsym $MOD+Shift+2 move container to workspace number $ws2
|
||||
bindsym $MOD+Shift+3 move container to workspace number $ws3
|
||||
bindsym $MOD+Shift+4 move container to workspace number $ws4
|
||||
bindsym $MOD+Shift+5 move container to workspace number $ws5
|
||||
bindsym $MOD+Shift+6 move container to workspace number $ws6
|
||||
bindsym $MOD+Shift+7 move container to workspace number $ws7
|
||||
bindsym $MOD+Shift+8 move container to workspace number $ws8
|
||||
bindsym $MOD+Shift+9 move container to workspace number $ws9
|
||||
bindsym $MOD+Shift+0 move container to workspace number $ws10
|
||||
|
||||
## move a container to the next/previous workspace
|
||||
bindsym $MOD+Control+Right "move container to workspace next, workspace next"
|
||||
bindsym $MOD+Control+Left "move container to workspace prev, workspace prev"
|
||||
|
||||
## switch between the current and the previously focused one
|
||||
bindsym $MOD+b workspace back_and_forth
|
||||
bindsym $MOD+Shift+b "move container to workspace back_and_forth, workspace back_and_forth"
|
||||
@ -1,25 +0,0 @@
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Mousebindings
|
||||
|
||||
##-- Mouse Bindings ------------------------
|
||||
|
||||
## A mouse binding makes i3 execute a command upon pressing a specific mouse button
|
||||
## in the scope of the clicked container.
|
||||
## You can configure mouse bindings in a similar way to key bindings.
|
||||
##
|
||||
## Syntax:
|
||||
# bindsym [--release] [--border] [--whole-window] [--exclude-titlebar] [<Modifiers>+]button<n> command
|
||||
|
||||
## By default, the binding will only run when you click on the titlebar of the window.
|
||||
## If the `--release` flag is given, it will run when the mouse button is released.
|
||||
## If the `--whole-window` flag is given, the binding will also run when any part of
|
||||
## the window is clicked, with the exception of the border.
|
||||
## To have a bind run when the border is clicked, specify the `--border` flag.
|
||||
## If the `--exclude-titlebar` flag is given, the titlebar will not be considered for the keybinding.
|
||||
|
||||
## Kill the container with middle button click on titlebar
|
||||
bindsym --release button2 kill
|
||||
|
||||
## Kill the container with Super+middle button click on anywhere in a window
|
||||
bindsym --whole-window $MOD+button2 kill
|
||||
@ -1,79 +0,0 @@
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Modes
|
||||
|
||||
## Resize container (you can also use the mouse for that)
|
||||
mode "Resize" {
|
||||
# These bindings trigger as soon as you enter the 'Resize' mode
|
||||
bindsym Left resize shrink width 50 px or 10 ppt
|
||||
bindsym Down resize grow height 50 px or 10 ppt
|
||||
bindsym Up resize shrink height 50 px or 10 ppt
|
||||
bindsym Right resize grow width 50 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape or $MOD+r
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $MOD+Shift+r mode "default"
|
||||
}
|
||||
bindsym $MOD+Shift+r mode "Resize"
|
||||
|
||||
#------
|
||||
|
||||
## Move container (you can also use the mouse for that)
|
||||
mode "Move" {
|
||||
# These bindings trigger as soon as you enter the 'Move' mode
|
||||
bindsym Left move left 20px
|
||||
bindsym Down move down 20px
|
||||
bindsym Up move up 20px
|
||||
bindsym Right move right 20px
|
||||
|
||||
# back to normal: Enter or Escape or $MOD+m
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $MOD+Shift+m mode "default"
|
||||
}
|
||||
bindsym $MOD+Shift+m mode "Move"
|
||||
|
||||
#------
|
||||
|
||||
## Gaps
|
||||
set $mode_gaps Gaps: (o)uter, (i)nner
|
||||
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
|
||||
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
|
||||
|
||||
## Outer Gaps
|
||||
mode "$mode_gaps_outer" {
|
||||
bindsym plus gaps outer current plus 5
|
||||
bindsym minus gaps outer current minus 5
|
||||
bindsym 0 gaps outer current set 0
|
||||
|
||||
bindsym Shift+plus gaps outer all plus 5
|
||||
bindsym Shift+minus gaps outer all minus 5
|
||||
bindsym Shift+0 gaps outer all set 0
|
||||
|
||||
bindsym Return mode "$mode_gaps"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
## Inner Gaps
|
||||
mode "$mode_gaps_inner" {
|
||||
bindsym plus gaps inner current plus 5
|
||||
bindsym minus gaps inner current minus 5
|
||||
bindsym 0 gaps inner current set 0
|
||||
|
||||
bindsym Shift+plus gaps inner all plus 5
|
||||
bindsym Shift+minus gaps inner all minus 5
|
||||
bindsym Shift+0 gaps inner all set 0
|
||||
|
||||
bindsym Return mode "$mode_gaps"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
mode "$mode_gaps" {
|
||||
bindsym o mode "$mode_gaps_outer"
|
||||
bindsym i mode "$mode_gaps_inner"
|
||||
bindsym Return mode "$mode_gaps"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
bindsym $MOD+Shift+g mode "$mode_gaps"
|
||||
@ -1,74 +0,0 @@
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Rules
|
||||
|
||||
##-- Workspace Rules ------------------------
|
||||
|
||||
workspace 1 output HDMI-A-0
|
||||
workspace 2 output HDMI-A-0
|
||||
workspace 3 output DisplayPort-0
|
||||
|
||||
# workspace 1 output DisplayPort-0
|
||||
# workspace 2 output DisplayPort-0
|
||||
# workspace 3 output HDMI-A-0
|
||||
|
||||
## Automatically putting clients on specific workspaces
|
||||
##
|
||||
## To automatically make a specific window show up on a specific workspace,
|
||||
## you can use an 'assignment'. You can match windows by using any criteria.
|
||||
## The difference between assign and `for_window <criteria> move to workspace` is that
|
||||
## the former will only be executed when the application maps the window
|
||||
## (mapping means actually displaying it on the screen) but the latter will be executed
|
||||
## whenever a window changes its properties to something that matches the specified criteria.
|
||||
##
|
||||
## Thus, it is recommended that you match on window classes (and instances, when appropriate)
|
||||
## instead of window titles whenever possible because some applications first create
|
||||
## their window, and then worry about setting the correct title. Firefox with Vimperator
|
||||
## comes to mind. The window starts up being named Firefox, and only when Vimperator is
|
||||
## loaded does the title change. As i3 will get the title as soon as the application
|
||||
## maps the window, you’d need to have to match on Firefox in this case. Another known
|
||||
## issue is with Spotify, which doesn’t set the class hints when mapping the window,
|
||||
## meaning you’ll have to use a for_window rule to assign Spotify to a specific workspace.
|
||||
## Finally, using assign [tiling] and assign [floating] is not supported.
|
||||
##
|
||||
## You can also assign a window to show up on a specific output. You can use RandR
|
||||
## names such as 'VGA1' or names relative to the output with the currently focused
|
||||
## workspace such as 'left' and 'down'.
|
||||
##
|
||||
## Assignments are processed by i3 in the order in which they appear in the config file.
|
||||
## The first one which matches the window wins and later assignments are not considered.
|
||||
##
|
||||
## Syntax:
|
||||
#assign <criteria> [→] [workspace] [number] <workspace>
|
||||
#assign <criteria> [→] output left|right|up|down|primary|nonprimary|<output>
|
||||
|
||||
## Also, the arrow is not required, it just looks good :-). If you decide to use it,
|
||||
## it has to be a UTF-8 encoded arrow, not -> or something like that.
|
||||
##
|
||||
## To get the class and instance, you can use `xprop`. After clicking on the window,
|
||||
## you will see the following output: WM_CLASS(STRING) = "irssi", "URxvt"
|
||||
## The first part of the WM_CLASS is the instance ("irssi" in this example),
|
||||
## the second part is the class ("URxvt" in this example).
|
||||
##
|
||||
assign [class="Lxappearance|Nitrogen"] 6
|
||||
assign [class="Pavucontrol|Xfce4-power-manager-settings"] 6
|
||||
|
||||
##-- Window Rules ---------------------------
|
||||
|
||||
## Arbitrary commands for specific windows (for_window)
|
||||
##
|
||||
## With the `for_window` directive, you can let i3 execute any command when it encounters
|
||||
## a specific window. This can be used to set windows to floating or to change their
|
||||
## border style, for example.
|
||||
##
|
||||
## Syntax: for_window <criteria> <command>
|
||||
##
|
||||
for_window [window_role="pop-up"] floating enable
|
||||
for_window [window_role="task_dialog"] floating enable
|
||||
for_window [class="alacritty-float|Music"] floating enable
|
||||
for_window [class="Pcmanfm|Onboard|Yad"] floating enable
|
||||
for_window [class="Lxappearance|Nitrogen"] floating enable
|
||||
for_window [class="Pavucontrol|Xfce4-power-manager-settings|Nm-connection-editor"] floating enable
|
||||
for_window [class="feh|Viewnior|Gpicview|Gimp|MPlayer"] floating enable
|
||||
for_window [class="Kvantum Manager|qt5ct"] floating enable
|
||||
for_window [class="VirtualBox Manager|qemu|Qemu-system-x86_64"] floating enable
|
||||
@ -1,71 +0,0 @@
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
[global]
|
||||
monitor = 0
|
||||
follow = mouse
|
||||
width = 300
|
||||
height = 80
|
||||
origin = top-right
|
||||
offset = 10x48
|
||||
corner_radius = 0
|
||||
scale = 0
|
||||
notification_limit = 0
|
||||
progress_bar = true
|
||||
progress_bar_height = 80
|
||||
progress_bar_frame_width = 2
|
||||
progress_bar_min_width = 300
|
||||
progress_bar_max_width = 300
|
||||
indicate_hidden = yes
|
||||
transparency = 0
|
||||
separator_height = 2
|
||||
padding = 15
|
||||
horizontal_padding = 15
|
||||
text_icon_padding = 0
|
||||
frame_width = 2
|
||||
gap_size = 0
|
||||
separator_color = frame
|
||||
sort = yes
|
||||
idle_threshold = 120
|
||||
font = JetBrains Mono 10
|
||||
line_height = 2
|
||||
markup = full
|
||||
format = %s\n%b
|
||||
alignment = left
|
||||
vertical_alignment = center
|
||||
show_age_threshold = 60
|
||||
ellipsize = middle
|
||||
ignore_newline = no
|
||||
stack_duplicates = true
|
||||
hide_duplicate_count = false
|
||||
show_indicators = yes
|
||||
enable_recursive_icon_lookup = true
|
||||
icon_position = left
|
||||
min_icon_size = 24
|
||||
max_icon_size = 48
|
||||
sticky_history = yes
|
||||
history_length = 20
|
||||
browser = /usr/bin/xdg-open
|
||||
always_run_script = true
|
||||
mouse_left_click = close_current
|
||||
mouse_middle_click = do_action, close_current
|
||||
mouse_right_click = close_all
|
||||
title = Dunst
|
||||
class = Dunst
|
||||
|
||||
[urgency_low]
|
||||
timeout = 2
|
||||
background = "#1E2128"
|
||||
foreground = "#ABB2BF"
|
||||
frame_color = "#292d37"
|
||||
|
||||
[urgency_normal]
|
||||
timeout = 5
|
||||
background = "#1E2128"
|
||||
foreground = "#ABB2BF"
|
||||
frame_color = "#292d37"
|
||||
|
||||
[urgency_critical]
|
||||
timeout = 0
|
||||
background = "#1E2128"
|
||||
foreground = "#E06B74"
|
||||
frame_color = "#E06B74"
|
||||
@ -1,168 +0,0 @@
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## i3status configuration for Archcraft
|
||||
|
||||
##-- General ---------------------------
|
||||
general {
|
||||
output_format = "i3bar"
|
||||
interval = 5
|
||||
markup = "pango"
|
||||
separator = " "
|
||||
colors = true
|
||||
color_good = "#98C379"
|
||||
color_degraded = "#E5C07A"
|
||||
color_bad = "#E06B74"
|
||||
color_separator = "#292d37"
|
||||
}
|
||||
|
||||
##-- Modules Order ---------------------
|
||||
order += "volume master"
|
||||
order += "battery all"
|
||||
order += "wireless _first_"
|
||||
order += "cpu_usage"
|
||||
order += "memory"
|
||||
order += "disk /"
|
||||
order += "time"
|
||||
#order += "load"
|
||||
#order += "ipv6"
|
||||
#order += "run_watch DHCP"
|
||||
#order += "run_watch VPNC"
|
||||
#order += "path_exists VPN"
|
||||
#order += "ethernet _first_"
|
||||
#order += "cpu_temperature 0"
|
||||
#order += "tztime kolkata"
|
||||
#order += "read_file UPTIME"
|
||||
|
||||
##-- Modules ---------------------------
|
||||
|
||||
## Module :: ipv6
|
||||
ipv6 {
|
||||
format_up = "%ip"
|
||||
format_down = "No IPv6"
|
||||
}
|
||||
|
||||
## Module :: disk
|
||||
disk "/" {
|
||||
# %free | %avail | %total | %percentage_used/free/avail
|
||||
format = " %free"
|
||||
format_not_mounted = " Not Mounted"
|
||||
prefix_type = custom
|
||||
low_threshold = 2
|
||||
format_below_threshold = " Warning: %free Free Space"
|
||||
threshold_type = gbytes_free
|
||||
}
|
||||
|
||||
## Module :: run_watch
|
||||
run_watch DHCP {
|
||||
format = "%title: %status"
|
||||
format_down = ""
|
||||
}
|
||||
|
||||
## Module :: run_watch
|
||||
run_watch VPNC {
|
||||
format = "%title: %status"
|
||||
format_down = ""
|
||||
}
|
||||
|
||||
## Module :: path_exists
|
||||
path_exists VPN {
|
||||
format = "%title: %status"
|
||||
format_down = ""
|
||||
}
|
||||
|
||||
## Module :: wireless
|
||||
wireless _first_ {
|
||||
# %quality | %essid | %bitrate | %frequency | %ip
|
||||
format_up = " %essid"
|
||||
format_down = " Disconnected"
|
||||
format_bitrate = "%g %cb/s"
|
||||
format_noise = "%03d%s"
|
||||
format_quality = "%03d%s"
|
||||
format_signal = "%03d%s"
|
||||
}
|
||||
|
||||
## Module :: ethernet
|
||||
ethernet _first_ {
|
||||
format_up = "%ip (%speed)"
|
||||
format_down = "Disconnected"
|
||||
}
|
||||
|
||||
## Module :: battery
|
||||
battery all {
|
||||
# %percentage | %status | %remaining | %emptytime | %consumption
|
||||
format = "%status %percentage (%remaining)"
|
||||
format_down = "No Battery"
|
||||
format_percentage = "%.00f%s"
|
||||
integer_battery_capacity = true
|
||||
last_full_capacity = true
|
||||
hide_seconds = true
|
||||
low_threshold = 20
|
||||
threshold_type = percentage
|
||||
status_chr = ""
|
||||
status_bat = ""
|
||||
status_unk = ""
|
||||
status_full = ""
|
||||
}
|
||||
|
||||
## Module :: cpu_temperature
|
||||
cpu_temperature 0 {
|
||||
path = "/sys/devices/platform/coretemp.0/temp1_input"
|
||||
format = "%degrees °C"
|
||||
max_threshold = 60
|
||||
format_above_threshold = " Warning: %degrees °C"
|
||||
}
|
||||
|
||||
## Module :: cpu_usage
|
||||
cpu_usage {
|
||||
format = " %usage"
|
||||
degraded_threshold = 25
|
||||
format_above_degraded_threshold = " %usage"
|
||||
max_threshold = 75
|
||||
format_above_threshold = " Warning: %usage"
|
||||
}
|
||||
|
||||
## Module :: memory
|
||||
memory {
|
||||
# %total | %free | %used | %available | %shared
|
||||
format = " %free"
|
||||
unit = auto
|
||||
decimals = 1
|
||||
threshold_degraded = 1G
|
||||
threshold_critical = 1G
|
||||
format_degraded = " Low Memory: %free"
|
||||
}
|
||||
|
||||
## Module :: load
|
||||
load {
|
||||
format = " %1min %5min %15min"
|
||||
max_threshold = "5"
|
||||
format_above_threshold = " Warning: %1min %5min %15min"
|
||||
}
|
||||
|
||||
## Module :: time
|
||||
time {
|
||||
format = " %I:%M %p"
|
||||
}
|
||||
|
||||
## Module :: tztime
|
||||
tztime kolkata {
|
||||
format = " %I:%M %p"
|
||||
timezone = "Asia/Kolkata"
|
||||
locale = "en_US.UTF-8"
|
||||
hide_if_equals_localtime = false
|
||||
}
|
||||
|
||||
## Module :: volume
|
||||
volume master {
|
||||
device = "pulse"
|
||||
format = " %volume"
|
||||
format_muted = " Muted"
|
||||
}
|
||||
|
||||
## Module :: read_file
|
||||
read_file UPTIME {
|
||||
format = "%title: %content"
|
||||
format_bad = "%title - %errno: %error"
|
||||
path = "/proc/uptime"
|
||||
Max_characters = 255
|
||||
}
|
||||
@ -1,48 +0,0 @@
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Status Bar
|
||||
|
||||
##-- Colors ---------------------------
|
||||
set $i3_bar_bg #1E2128
|
||||
set $i3_bar_fg #ABB2BF
|
||||
set $i3_bar_sep #292d37
|
||||
set $i3_bar_foc #5294E2
|
||||
set $i3_bar_act #62AEEF
|
||||
set $i3_bar_ina #292d37
|
||||
set $i3_bar_urg #C778DD
|
||||
set $i3_bar_mod #98C379
|
||||
|
||||
set $i3_bar_fonts JetBrainsMono Nerd Font 10
|
||||
|
||||
##-- Bar ------------------------------
|
||||
bar {
|
||||
status_command i3status -c ~/.config/i3/i3status/config
|
||||
id main-bar
|
||||
position bottom
|
||||
output primary
|
||||
mode dock
|
||||
hidden_state show
|
||||
modifier Mod1
|
||||
bindsym button2 workspace back_and_forth
|
||||
bindsym --release button3 layout toggle
|
||||
tray_output primary
|
||||
tray_padding 6
|
||||
separator_symbol "|"
|
||||
workspace_buttons yes
|
||||
workspace_min_width 34
|
||||
strip_workspace_numbers yes
|
||||
binding_mode_indicator yes
|
||||
padding 6 10 6 0
|
||||
font pango:$i3_bar_fonts
|
||||
colors {
|
||||
background $i3_bar_bg
|
||||
statusline $i3_bar_fg
|
||||
separator $i3_bar_sep
|
||||
|
||||
focused_workspace $i3_bar_foc $i3_bar_foc $i3_bar_bg
|
||||
active_workspace $i3_bar_act $i3_bar_act $i3_bar_bg
|
||||
inactive_workspace $i3_bar_ina $i3_bar_ina $i3_bar_fg
|
||||
urgent_workspace $i3_bar_urg $i3_bar_urg $i3_bar_bg
|
||||
binding_mode $i3_bar_mod $i3_bar_mod $i3_bar_bg
|
||||
}
|
||||
}
|
||||
@ -1,419 +0,0 @@
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
#========================= Corners =========================#
|
||||
|
||||
corner-radius = 0;
|
||||
rounded-corners-exclude = [
|
||||
"window_type = 'normal'",
|
||||
"class_g ?= 'rofi'",
|
||||
"class_g ?= 'polybar'",
|
||||
"class_g ?= 'tint2'"
|
||||
];
|
||||
|
||||
round-borders = 0;
|
||||
round-borders-exclude = [
|
||||
"class_g = 'TelegramDesktop'"
|
||||
];
|
||||
|
||||
# Specify a list of border width rules, in the format `PIXELS:PATTERN`,
|
||||
# Note we don't make any guarantee about possible conflicts with the
|
||||
# border_width set by the window manager.
|
||||
#
|
||||
# example:
|
||||
# round-borders-rule = [ "2:class_g = 'URxvt'" ];
|
||||
#
|
||||
round-borders-rule = [
|
||||
"2:class_g ?= 'URxvt'",
|
||||
"2:class_g ?= 'Alacritty'",
|
||||
"0:class_g ?= 'firefox'"
|
||||
];
|
||||
|
||||
#========================= Shadows =========================#
|
||||
|
||||
# Enabled client-side shadows on windows. Note desktop windows
|
||||
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
|
||||
# unless explicitly requested using the wintypes option.
|
||||
#
|
||||
shadow = true;
|
||||
|
||||
# The blur radius for shadows, in pixels. (defaults to 12)
|
||||
shadow-radius = 14;
|
||||
|
||||
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
|
||||
shadow-opacity = 0.30;
|
||||
|
||||
# The left offset for shadows, in pixels. (defaults to -15)
|
||||
shadow-offset-x = -12;
|
||||
|
||||
# The top offset for shadows, in pixels. (defaults to -15)
|
||||
shadow-offset-y = -12;
|
||||
|
||||
# Red color value of shadow (0.0 - 1.0, defaults to 0).
|
||||
# shadow-red = 0
|
||||
|
||||
# Green color value of shadow (0.0 - 1.0, defaults to 0).
|
||||
# shadow-green = 0
|
||||
|
||||
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
|
||||
# shadow-blue = 0
|
||||
|
||||
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
|
||||
# shadow-color = "#000000"
|
||||
|
||||
# Specify a list of conditions of windows that should have no shadow.
|
||||
#
|
||||
# examples:
|
||||
# shadow-exclude = "n:e:Notification";
|
||||
#
|
||||
# shadow-exclude = []
|
||||
shadow-exclude = [
|
||||
"class_g = 'Cairo-clock'",
|
||||
"class_g = 'CoverGloobus'",
|
||||
"class_g = 'Tilda'",
|
||||
"name ?= 'gnome-pie'",
|
||||
# "class_g = 'Dmenu'",
|
||||
# "class_g ?= 'rofi'",
|
||||
# "class_g ?= 'polybar'",
|
||||
"class_g ?= 'Plank'",
|
||||
"name *= 'recordmydesktop'",
|
||||
"name = 'Notification'",
|
||||
"name = 'Docky'",
|
||||
"name = 'Kupfer'",
|
||||
"name = 'xfce4-notifyd'",
|
||||
"name *= 'VLC'",
|
||||
"name *= 'Chromium'",
|
||||
"name *= 'Chrome'",
|
||||
"class_g = 'Conky'",
|
||||
"class_g = 'Kupfer'",
|
||||
"class_g = 'Synapse'",
|
||||
"class_g ?= 'Notify-osd'",
|
||||
"class_g ?= 'Cairo-dock'",
|
||||
"class_g ?= 'Xfce4-notifyd'",
|
||||
"class_g ?= 'Xfce4-power-manager'",
|
||||
"_GTK_FRAME_EXTENTS@:c",
|
||||
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
|
||||
];
|
||||
|
||||
# Specify a X geometry that describes the region in which shadow should not
|
||||
# be painted in, such as a dock window region. Use
|
||||
# shadow-exclude-reg = "x10+0+0"
|
||||
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
|
||||
#
|
||||
# shadow-exclude-reg = ""
|
||||
|
||||
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
|
||||
# xinerama-shadow-crop = false
|
||||
|
||||
#========================= Fading =========================#
|
||||
|
||||
# Fade windows in/out when opening/closing and when opacity changes,
|
||||
# unless no-fading-openclose is used.
|
||||
fading = true;
|
||||
|
||||
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
|
||||
fade-in-step = 0.03;
|
||||
|
||||
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
|
||||
fade-out-step = 0.03;
|
||||
|
||||
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
|
||||
fade-delta = 5;
|
||||
|
||||
# Specify a list of conditions of windows that should not be faded.
|
||||
# don't need this, we disable fading for all normal windows with wintypes: {}
|
||||
fade-exclude = [
|
||||
"class_g = 'slop'" # maim
|
||||
]
|
||||
|
||||
# Do not fade on window open/close.
|
||||
no-fading-openclose = false
|
||||
|
||||
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
|
||||
no-fading-destroyed-argb = true
|
||||
|
||||
#========================= Opacity =========================#
|
||||
|
||||
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
|
||||
# inactive-opacity = 1
|
||||
inactive-opacity = 1;
|
||||
|
||||
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
|
||||
# frame-opacity = 1.0
|
||||
frame-opacity = 1.0;
|
||||
|
||||
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
|
||||
# inactive-opacity-override = true
|
||||
inactive-opacity-override = false;
|
||||
|
||||
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
|
||||
active-opacity = 1.0;
|
||||
|
||||
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
|
||||
#inactive-dim = 0.5
|
||||
|
||||
# Specify a list of conditions of windows that should always be considered focused.
|
||||
# focus-exclude = []
|
||||
focus-exclude = [
|
||||
"class_g = 'Cairo-clock'",
|
||||
"class_g = 'Bar'", # lemonbar
|
||||
"class_g = 'slop'" # maim
|
||||
];
|
||||
|
||||
# Use fixed inactive dim value, instead of adjusting according to window opacity.
|
||||
# inactive-dim-fixed = 1.0
|
||||
|
||||
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
|
||||
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
|
||||
# Note we don't make any guarantee about possible conflicts with other
|
||||
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
|
||||
# example:
|
||||
# opacity-rule = [ "80:class_g = 'URxvt'" ];
|
||||
#
|
||||
# opacity-rule = []
|
||||
opacity-rule = [
|
||||
"100:class_g = 'Bar'", # lemonbar
|
||||
"100:class_g = 'slop'", # maim
|
||||
"100:class_g = 'XTerm'",
|
||||
"100:class_g = 'URxvt'",
|
||||
"100:class_g = 'kitty'",
|
||||
"100:class_g = 'Alacritty'",
|
||||
"100:class_g = 'Polybar'",
|
||||
"100:class_g = 'code-oss'",
|
||||
"100:class_g = 'Meld'",
|
||||
"100:class_g = 'TelegramDesktop'",
|
||||
"100:class_g = 'Joplin'",
|
||||
"100:class_g = 'firefox'",
|
||||
"100:class_g = 'Thunderbird'"
|
||||
];
|
||||
|
||||
#========================= Blurring =========================#
|
||||
|
||||
blur: {
|
||||
method = "none";
|
||||
strength = 0;
|
||||
background = false;
|
||||
background-frame = false;
|
||||
background-fixed = false;
|
||||
kern = "3x3box";
|
||||
}
|
||||
|
||||
# Exclude conditions for background blur.
|
||||
blur-background-exclude = [
|
||||
"window_type = 'dock'",
|
||||
"window_type = 'desktop'",
|
||||
"class_g = 'Plank'",
|
||||
"class_g = 'slop'",
|
||||
"_GTK_FRAME_EXTENTS@:c"
|
||||
];
|
||||
|
||||
#========================= General Settings =========================#
|
||||
|
||||
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
|
||||
# daemon = false
|
||||
|
||||
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
|
||||
# `xrender` is the default one.
|
||||
#
|
||||
#experimental-backends = true;
|
||||
backend = "glx";
|
||||
|
||||
# Enable/disable VSync.
|
||||
# vsync = false
|
||||
vsync = true;
|
||||
|
||||
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
|
||||
# dbus = false
|
||||
|
||||
# Try to detect WM windows (a non-override-redirect window with no
|
||||
# child that has 'WM_STATE') and mark them as active.
|
||||
#
|
||||
# mark-wmwin-focused = false
|
||||
mark-wmwin-focused = true;
|
||||
|
||||
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
|
||||
# mark-ovredir-focused = false
|
||||
mark-ovredir-focused = true;
|
||||
|
||||
# Try to detect windows with rounded corners and don't consider them
|
||||
# shaped windows. The accuracy is not very high, unfortunately.
|
||||
#
|
||||
# detect-rounded-corners = false
|
||||
detect-rounded-corners = true;
|
||||
|
||||
# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
|
||||
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
|
||||
#
|
||||
# detect-client-opacity = false
|
||||
detect-client-opacity = true;
|
||||
|
||||
# Specify refresh rate of the screen. If not specified or 0, picom will
|
||||
# try detecting this with X RandR extension.
|
||||
#
|
||||
# refresh-rate = 60
|
||||
refresh-rate = 0;
|
||||
|
||||
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
|
||||
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
|
||||
# provided that the WM supports it.
|
||||
#
|
||||
# use-ewmh-active-win = false
|
||||
|
||||
# Unredirect all windows if a full-screen opaque window is detected,
|
||||
# to maximize performance for full-screen windows. Known to cause flickering
|
||||
# when redirecting/unredirecting windows.
|
||||
#
|
||||
# unredir-if-possible = false
|
||||
|
||||
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
|
||||
# unredir-if-possible-delay = 0
|
||||
|
||||
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
|
||||
# unredir-if-possible-exclude = []
|
||||
|
||||
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
|
||||
# in the same group focused at the same time.
|
||||
#
|
||||
# detect-transient = false
|
||||
detect-transient = true;
|
||||
|
||||
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
|
||||
# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
|
||||
# detect-transient is enabled, too.
|
||||
#
|
||||
# detect-client-leader = false
|
||||
detect-client-leader = true;
|
||||
|
||||
# Resize damaged region by a specific number of pixels.
|
||||
# A positive value enlarges it while a negative one shrinks it.
|
||||
# If the value is positive, those additional pixels will not be actually painted
|
||||
# to screen, only used in blur calculation, and such. (Due to technical limitations,
|
||||
# with use-damage, those pixels will still be incorrectly painted to screen.)
|
||||
# Primarily used to fix the line corruption issues of blur,
|
||||
# in which case you should use the blur radius value here
|
||||
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
|
||||
# with a 5x5 one you use `--resize-damage 2`, and so on).
|
||||
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
|
||||
#
|
||||
# resize-damage = 1
|
||||
|
||||
# Specify a list of conditions of windows that should be painted with inverted color.
|
||||
# Resource-hogging, and is not well tested.
|
||||
#
|
||||
# invert-color-include = []
|
||||
|
||||
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
|
||||
# Might cause incorrect opacity when rendering transparent content (but never
|
||||
# practically happened) and may not work with blur-background.
|
||||
# My tests show a 15% performance boost. Recommended.
|
||||
#
|
||||
glx-no-stencil = true;
|
||||
|
||||
# GLX backend: Avoid rebinding pixmap on window damage.
|
||||
# Probably could improve performance on rapid window content changes,
|
||||
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
|
||||
# Recommended if it works.
|
||||
#
|
||||
# glx-no-rebind-pixmap = false
|
||||
|
||||
# Disable the use of damage information.
|
||||
# This cause the whole screen to be redrawn everytime, instead of the part of the screen
|
||||
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
|
||||
# The opposing option is use-damage
|
||||
#
|
||||
# no-use-damage = false
|
||||
use-damage = true;
|
||||
|
||||
# Use X Sync fence to sync clients' draw calls, to make sure all draw
|
||||
# calls are finished before picom starts drawing. Needed on nvidia-drivers
|
||||
# with GLX backend for some users.
|
||||
#
|
||||
# xrender-sync-fence = false
|
||||
|
||||
# GLX backend: Use specified GLSL fragment shader for rendering window contents.
|
||||
# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
|
||||
# in the source tree for examples.
|
||||
#
|
||||
# glx-fshader-win = ""
|
||||
|
||||
# Force all windows to be painted with blending. Useful if you
|
||||
# have a glx-fshader-win that could turn opaque pixels transparent.
|
||||
#
|
||||
# force-win-blend = false
|
||||
|
||||
# Do not use EWMH to detect fullscreen windows.
|
||||
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
|
||||
#
|
||||
# no-ewmh-fullscreen = false
|
||||
|
||||
# Dimming bright windows so their brightness doesn't exceed this set value.
|
||||
# Brightness of a window is estimated by averaging all pixels in the window,
|
||||
# so this could comes with a performance hit.
|
||||
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
|
||||
#
|
||||
# max-brightness = 1.0
|
||||
|
||||
# Make transparent windows clip other windows like non-transparent windows do,
|
||||
# instead of blending on top of them.
|
||||
#
|
||||
# transparent-clipping = false
|
||||
|
||||
# Set the log level. Possible values are:
|
||||
# "trace", "debug", "info", "warn", "error"
|
||||
# in increasing level of importance. Case doesn't matter.
|
||||
# If using the "TRACE" log level, it's better to log into a file
|
||||
# using *--log-file*, since it can generate a huge stream of logs.
|
||||
#
|
||||
# log-level = "debug"
|
||||
log-level = "info";
|
||||
|
||||
# Set the log file.
|
||||
# If *--log-file* is never specified, logs will be written to stderr.
|
||||
# Otherwise, logs will to written to the given file, though some of the early
|
||||
# logs might still be written to the stderr.
|
||||
# When setting this option from the config file, it is recommended to use an absolute path.
|
||||
#
|
||||
# log-file = "/path/to/your/log/file"
|
||||
|
||||
# Show all X errors (for debugging)
|
||||
# show-all-xerrors = false
|
||||
|
||||
# Write process ID to a file.
|
||||
# write-pid-path = "/path/to/your/log/file"
|
||||
|
||||
# Window type settings
|
||||
#
|
||||
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
|
||||
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
|
||||
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
|
||||
# "tooltip", "notification", "combo", and "dnd".
|
||||
#
|
||||
# Following per window-type options are available: ::
|
||||
#
|
||||
# fade, shadow:::
|
||||
# Controls window-type-specific shadow and fade settings.
|
||||
#
|
||||
# opacity:::
|
||||
# Controls default opacity of the window type.
|
||||
#
|
||||
# focus:::
|
||||
# Controls whether the window of this type is to be always considered focused.
|
||||
# (By default, all window types except "normal" and "dialog" has this on.)
|
||||
#
|
||||
# full-shadow:::
|
||||
# Controls whether shadow is drawn under the parts of the window that you
|
||||
# normally won't be able to see. Useful when the window has parts of it
|
||||
# transparent, and you want shadows in those areas.
|
||||
#
|
||||
# redir-ignore:::
|
||||
# Controls whether this type of windows should cause screen to become
|
||||
# redirected again after been unredirected. If you have unredir-if-possible
|
||||
# set, and doesn't want certain window to cause unnecessary screen redirection,
|
||||
# you can set this to `true`.
|
||||
#
|
||||
wintypes:
|
||||
{
|
||||
tooltip = { fade=true; shadow=true; opacity=0.95; focus=true; full-shadow=false; };
|
||||
popup_menu = { opacity=1.0; }
|
||||
dropdown_menu = { opacity=1.0; }
|
||||
utility = { shadow=false; opacity=1.0; }
|
||||
};
|
||||
@ -1,12 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# i3 directory
|
||||
DIR="$HOME/.config/i3"
|
||||
|
||||
# rofi sudo askpass helper
|
||||
export SUDO_ASKPASS="$DIR"/scripts/rofi_askpass
|
||||
|
||||
# execute the application
|
||||
sudo -A $1
|
||||
@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Autostart Programs
|
||||
|
||||
# i3 dir
|
||||
idir="$HOME/.config/i3"
|
||||
|
||||
# Kill already running process
|
||||
_ps=(xsettingsd ksuperkey)
|
||||
for _prs in "${_ps[@]}"; do
|
||||
if [[ `pidof ${_prs}` ]]; then
|
||||
killall -9 ${_prs}
|
||||
fi
|
||||
done
|
||||
|
||||
# Lauch xsettingsd daemon
|
||||
xsettingsd --config="$idir"/xsettingsd &
|
||||
|
||||
# polkit agent
|
||||
if [[ ! `pidof xfce-polkit` ]]; then
|
||||
/usr/lib/xfce-polkit/xfce-polkit &
|
||||
fi
|
||||
|
||||
# Enable power management
|
||||
xfce4-power-manager &
|
||||
|
||||
# Enable wireguard tray
|
||||
conda activate base && wg-tray &
|
||||
|
||||
# Enable Super Keys For Menu
|
||||
ksuperkey -e 'Super_L=Alt_L|F1' &
|
||||
ksuperkey -e 'Super_R=Alt_L|F1' &
|
||||
|
||||
# Fix cursor
|
||||
xsetroot -cursor_name left_ptr
|
||||
|
||||
# Restore wallpaper
|
||||
"$idir"/themes/wallpaper.sh
|
||||
|
||||
# Launch notification daemon
|
||||
"$idir"/scripts/i3_dunst
|
||||
|
||||
# Launch polybar
|
||||
"$idir"/scripts/i3_bar
|
||||
|
||||
# Launch compositor
|
||||
"$idir"/scripts/i3_comp
|
||||
|
||||
# Start mpd
|
||||
# exec mpd &
|
||||
@ -1,9 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# i3 directory
|
||||
DIR="$HOME/.config/i3"
|
||||
|
||||
# launch polybar
|
||||
bash "$DIR"/themes/polybar.sh
|
||||
@ -1,73 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Script to manage brightness on Archcraft.
|
||||
|
||||
# Icons
|
||||
iDIR='/usr/share/archcraft/icons/dunst'
|
||||
|
||||
# Graphics card
|
||||
CARD=`ls /sys/class/backlight | head -n 1`
|
||||
|
||||
# Get brightness
|
||||
get_backlight() {
|
||||
if [[ "$CARD" == *"intel_"* ]]; then
|
||||
BNESS=`xbacklight -get`
|
||||
LIGHT=${BNESS%.*}
|
||||
else
|
||||
LIGHT=$(printf "%.0f\n" `light -G`)
|
||||
fi
|
||||
echo "${LIGHT}%"
|
||||
}
|
||||
|
||||
# Get icons
|
||||
get_icon() {
|
||||
backlight="$(get_backlight)"
|
||||
current="${backlight%%%}"
|
||||
if [[ ("$current" -ge "0") && ("$current" -le "20") ]]; then
|
||||
icon="$iDIR"/brightness-20.png
|
||||
elif [[ ("$current" -ge "20") && ("$current" -le "40") ]]; then
|
||||
icon="$iDIR"/brightness-40.png
|
||||
elif [[ ("$current" -ge "40") && ("$current" -le "60") ]]; then
|
||||
icon="$iDIR"/brightness-60.png
|
||||
elif [[ ("$current" -ge "60") && ("$current" -le "80") ]]; then
|
||||
icon="$iDIR"/brightness-80.png
|
||||
elif [[ ("$current" -ge "80") && ("$current" -le "100") ]]; then
|
||||
icon="$iDIR"/brightness-100.png
|
||||
fi
|
||||
}
|
||||
|
||||
# Notify
|
||||
notify_bl() {
|
||||
get_icon && dunstify -u low -h string:x-dunst-stack-tag:obbacklight -i "$icon" "Brightness : $(get_backlight)"
|
||||
}
|
||||
|
||||
# Increase brightness
|
||||
inc_backlight() {
|
||||
if [[ "$CARD" == *"intel_"* ]]; then
|
||||
xbacklight -inc 10 && notify_bl
|
||||
else
|
||||
light -A 5 && notify_bl
|
||||
fi
|
||||
}
|
||||
|
||||
# Decrease brightness
|
||||
dec_backlight() {
|
||||
if [[ "$CARD" == *"intel_"* ]]; then
|
||||
xbacklight -dec 10 && notify_bl
|
||||
else
|
||||
light -U 5 && notify_bl
|
||||
fi
|
||||
}
|
||||
|
||||
# Execute accordingly
|
||||
if [[ "$1" == "--get" ]]; then
|
||||
get_backlight
|
||||
elif [[ "$1" == "--inc" ]]; then
|
||||
inc_backlight
|
||||
elif [[ "$1" == "--dec" ]]; then
|
||||
dec_backlight
|
||||
else
|
||||
get_backlight
|
||||
fi
|
||||
@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Simple script to pick color quickly.
|
||||
|
||||
color=$(xcolor --format hex --preview-size 255 --scale 10)
|
||||
image=/tmp/${color}.png
|
||||
|
||||
main() {
|
||||
if [[ "$color" ]]; then
|
||||
# copy color code to clipboard
|
||||
echo $color | tr -d "\n" | xclip -selection clipboard
|
||||
# generate preview
|
||||
convert -size 48x48 xc:"$color" ${image}
|
||||
# notify about it
|
||||
dunstify -u low -h string:x-dunst-stack-tag:obcolorpicker -i ${image} "$color, copied to clipboard."
|
||||
fi
|
||||
}
|
||||
|
||||
# run the script
|
||||
main
|
||||
@ -1,15 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# i3 directory
|
||||
DIR="$HOME/.config/i3"
|
||||
|
||||
# Terminate if picom is already running
|
||||
killall -q picom
|
||||
|
||||
# Wait until the processes have been shut down
|
||||
while pgrep -u $UID -x picom >/dev/null; do sleep 1; done
|
||||
|
||||
# Launch picom
|
||||
picom --config "$DIR"/picom.conf &
|
||||
@ -1,13 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# i3 directory
|
||||
DIR="$HOME/.config/i3"
|
||||
|
||||
# Launch dunst daemon
|
||||
if [[ `pidof dunst` ]]; then
|
||||
pkill dunst
|
||||
fi
|
||||
|
||||
dunst -config "$DIR"/dunstrc &
|
||||
@ -1,15 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Run ncmpcpp with alternate config
|
||||
|
||||
# i3 directory
|
||||
DIR="$HOME/.config/i3"
|
||||
|
||||
CONFIG="$DIR/alacritty/alacritty.yml"
|
||||
|
||||
alacritty --class 'Music,Music' --config-file "$CONFIG" \
|
||||
-o window.dimensions.columns=109 window.dimensions.lines=22 \
|
||||
-e ~/.ncmpcpp/scripts/ncmpcpp-art
|
||||
|
||||
@ -1,87 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Script to take screenshots on Archcraft.
|
||||
|
||||
# file
|
||||
time=`date +%Y-%m-%d-%H-%M-%S`
|
||||
geometry=`xrandr | grep 'current' | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current'`
|
||||
dir="`xdg-user-dir PICTURES`/Screenshots"
|
||||
file="Screenshot_${time}_${geometry}.png"
|
||||
|
||||
# directory
|
||||
if [[ ! -d "$dir" ]]; then
|
||||
mkdir -p "$dir"
|
||||
fi
|
||||
|
||||
# notify and view screenshot
|
||||
notify_view () {
|
||||
notify_cmd_shot='dunstify -u low -h string:x-dunst-stack-tag:obscreenshot -i /usr/share/archcraft/icons/dunst/picture.png'
|
||||
${notify_cmd_shot} "Copied to clipboard."
|
||||
paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga &>/dev/null &
|
||||
viewnior ${dir}/"$file"
|
||||
if [[ -e "$dir/$file" ]]; then
|
||||
${notify_cmd_shot} "Screenshot Saved."
|
||||
else
|
||||
${notify_cmd_shot} "Screenshot Deleted."
|
||||
fi
|
||||
}
|
||||
|
||||
# copy screenshot to clipboard
|
||||
copy_shot () {
|
||||
tee "$file" | xclip -selection clipboard -t image/png
|
||||
}
|
||||
|
||||
# countdown
|
||||
countdown () {
|
||||
for sec in `seq $1 -1 1`; do
|
||||
dunstify -t 1000 -h string:x-dunst-stack-tag:screenshottimer -i /usr/share/archcraft/icons/dunst/timer.png "Taking shot in : $sec"
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
# take shots
|
||||
shotnow () {
|
||||
cd ${dir} && maim -u -f png | copy_shot
|
||||
notify_view
|
||||
}
|
||||
|
||||
shot5 () {
|
||||
countdown '5'
|
||||
sleep 1 && cd ${dir} && maim -u -f png | copy_shot
|
||||
notify_view
|
||||
}
|
||||
|
||||
shot10 () {
|
||||
countdown '10'
|
||||
sleep 1 && cd ${dir} && maim -u -f png | copy_shot
|
||||
notify_view
|
||||
}
|
||||
|
||||
shotwin () {
|
||||
cd ${dir} && maim -u -f png -i `xdotool getactivewindow` | copy_shot
|
||||
notify_view
|
||||
}
|
||||
|
||||
shotarea () {
|
||||
cd ${dir} && maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l | copy_shot
|
||||
notify_view
|
||||
}
|
||||
|
||||
# execute
|
||||
if [[ "$1" == "--now" ]]; then
|
||||
shotnow
|
||||
elif [[ "$1" == "--in5" ]]; then
|
||||
shot5
|
||||
elif [[ "$1" == "--in10" ]]; then
|
||||
shot10
|
||||
elif [[ "$1" == "--win" ]]; then
|
||||
shotwin
|
||||
elif [[ "$1" == "--area" ]]; then
|
||||
shotarea
|
||||
else
|
||||
echo -e "Available Options : --now --in5 --in10 --win --area"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## launch alacritty with i3 config
|
||||
|
||||
# i3 directory
|
||||
DIR="$HOME/.config/i3"
|
||||
CONFIG="$DIR/alacritty/alacritty.toml"
|
||||
|
||||
if [ "$1" == "--float" ]; then
|
||||
shift
|
||||
alacritty --class 'alacritty-float,alacritty-float' --config-file "$CONFIG" $@
|
||||
elif [ "$1" == "--full" ]; then
|
||||
shift
|
||||
alacritty --class 'Fullscreen,Fullscreen' --config-file "$CONFIG" \
|
||||
-o window.startup_mode=fullscreen \
|
||||
window.padding.x=30 window.padding.y=30 \
|
||||
window.opacity=0.95 font.size=14 $@
|
||||
else
|
||||
alacritty --config-file "$CONFIG" $@
|
||||
fi
|
||||
@ -1,83 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
##
|
||||
## Script to manage speaker volume on Archcraft.
|
||||
|
||||
# Icons
|
||||
iDIR='/usr/share/archcraft/icons/dunst'
|
||||
notify_cmd='dunstify -u low -h string:x-dunst-stack-tag:obvolume'
|
||||
|
||||
# Get Volume
|
||||
get_volume() {
|
||||
echo "`pulsemixer --get-volume | cut -d' ' -f1`"
|
||||
}
|
||||
|
||||
# Get icons
|
||||
get_icon() {
|
||||
current="$(get_volume)"
|
||||
if [[ "$current" -eq "0" ]]; then
|
||||
icon="$iDIR/volume-mute.png"
|
||||
elif [[ ("$current" -ge "0") && ("$current" -le "30") ]]; then
|
||||
icon="$iDIR/volume-low.png"
|
||||
elif [[ ("$current" -ge "30") && ("$current" -le "60") ]]; then
|
||||
icon="$iDIR/volume-mid.png"
|
||||
elif [[ ("$current" -ge "60") && ("$current" -le "100") ]]; then
|
||||
icon="$iDIR/volume-high.png"
|
||||
fi
|
||||
}
|
||||
|
||||
# Notify
|
||||
notify_user() {
|
||||
${notify_cmd} -i "$icon" "Volume : $(get_volume)%"
|
||||
}
|
||||
|
||||
# Increase Volume
|
||||
inc_volume() {
|
||||
[[ `pulsemixer --get-mute` == 1 ]] && pulsemixer --unmute
|
||||
pulsemixer --max-volume 100 --change-volume +5 && get_icon && notify_user
|
||||
}
|
||||
|
||||
# Decrease Volume
|
||||
dec_volume() {
|
||||
[[ `pulsemixer --get-mute` == 1 ]] && pulsemixer --unmute
|
||||
pulsemixer --max-volume 100 --change-volume -5 && get_icon && notify_user
|
||||
}
|
||||
|
||||
# Toggle Mute
|
||||
toggle_mute() {
|
||||
if [[ `pulsemixer --get-mute` == 0 ]]; then
|
||||
pulsemixer --toggle-mute && ${notify_cmd} -i "$iDIR/volume-mute.png" "Mute"
|
||||
else
|
||||
pulsemixer --toggle-mute && get_icon && ${notify_cmd} -i "$icon" "Unmute"
|
||||
fi
|
||||
}
|
||||
|
||||
# Toggle Mic
|
||||
toggle_mic() {
|
||||
ID="`pulsemixer --list-sources | grep 'Default' | cut -d',' -f1 | cut -d' ' -f3`"
|
||||
if [[ `pulsemixer --id $ID --get-mute` == 0 ]]; then
|
||||
pulsemixer --id ${ID} --toggle-mute && ${notify_cmd} -i "$iDIR/microphone-mute.png" "Microphone Switched OFF"
|
||||
else
|
||||
pulsemixer --id ${ID} --toggle-mute && ${notify_cmd} -i "$iDIR/microphone.png" "Microphone Switched ON"
|
||||
fi
|
||||
}
|
||||
|
||||
# Execute accordingly
|
||||
if [[ -x `which pulsemixer` ]]; then
|
||||
if [[ "$1" == "--get" ]]; then
|
||||
get_volume
|
||||
elif [[ "$1" == "--inc" ]]; then
|
||||
inc_volume
|
||||
elif [[ "$1" == "--dec" ]]; then
|
||||
dec_volume
|
||||
elif [[ "$1" == "--toggle" ]]; then
|
||||
toggle_mute
|
||||
elif [[ "$1" == "--toggle-mic" ]]; then
|
||||
toggle_mic
|
||||
else
|
||||
echo $(get_volume)%
|
||||
fi
|
||||
else
|
||||
${notify_cmd} "'pulsemixer' is not installed."
|
||||
fi
|
||||
@ -1,924 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# encoding:utf8
|
||||
"""NetworkManager command line dmenu script.
|
||||
|
||||
To add new connections or enable/disable networking requires policykit
|
||||
permissions setup per:
|
||||
https://wiki.archlinux.org/index.php/NetworkManager#Set_up_PolicyKit_permissions
|
||||
|
||||
OR running the script as root
|
||||
|
||||
Add dmenu options and default terminal if desired to
|
||||
~/.config/i3/themes/networkmenu_config.ini
|
||||
|
||||
"""
|
||||
import pathlib
|
||||
import struct
|
||||
import configparser
|
||||
import locale
|
||||
import os
|
||||
from os.path import expanduser
|
||||
import shlex
|
||||
from shutil import which
|
||||
import sys
|
||||
from time import sleep
|
||||
import uuid
|
||||
import subprocess
|
||||
|
||||
# pylint: disable=import-error
|
||||
import gi
|
||||
gi.require_version('NM', '1.0')
|
||||
from gi.repository import GLib, NM # noqa pylint: disable=wrong-import-position
|
||||
# pylint: enable=import-error
|
||||
|
||||
ENV = os.environ.copy()
|
||||
ENV['LC_ALL'] = 'C'
|
||||
ENC = locale.getpreferredencoding()
|
||||
|
||||
CONF = configparser.ConfigParser()
|
||||
CONF.read(expanduser("~/.config/i3/themes/networkmenu_config.ini"))
|
||||
|
||||
|
||||
def cli_args():
|
||||
""" Don't override dmenu_cmd function arguments with CLI args. Removes -l
|
||||
and -p if those are passed on the command line.
|
||||
|
||||
Exception: if -l is passed and dmenu_command is not defined, assume that the
|
||||
user wants to switch dmenu to the vertical layout and include -l.
|
||||
|
||||
Returns: List of additional CLI arguments
|
||||
|
||||
"""
|
||||
args = sys.argv[1:]
|
||||
cmd = CONF.get('dmenu', 'dmenu_command', fallback=False)
|
||||
if "-l" in args or "-p" in args:
|
||||
for nope in ['-l', '-p'] if cmd is not False else ['-p']:
|
||||
try:
|
||||
nope_idx = args.index(nope)
|
||||
del args[nope_idx]
|
||||
del args[nope_idx]
|
||||
except ValueError:
|
||||
pass
|
||||
return args
|
||||
|
||||
|
||||
def dmenu_pass(command, color):
|
||||
"""Check if dmenu passphrase patch is applied and return the correct command
|
||||
line arg list
|
||||
|
||||
Args: command - string
|
||||
color - obscure color string
|
||||
Returns: list or None
|
||||
|
||||
"""
|
||||
if command != 'dmenu':
|
||||
return None
|
||||
try:
|
||||
# Check for dmenu password patch
|
||||
dm_patch = b'P' in subprocess.run(["dmenu", "-h"],
|
||||
capture_output=True,
|
||||
check=False).stderr
|
||||
except FileNotFoundError:
|
||||
dm_patch = False
|
||||
return ["-P"] if dm_patch else ["-nb", color, "-nf", color]
|
||||
|
||||
|
||||
def dmenu_cmd(num_lines, prompt="Networks", active_lines=None):
|
||||
"""Parse nmd.ini for menu options
|
||||
|
||||
Args: args - num_lines: number of lines to display
|
||||
prompt: prompt to show
|
||||
active_lines: list of line numbers to tag as active
|
||||
Returns: command invocation (as a list of strings) for example
|
||||
["dmenu", "-l", "<num_lines>", "-p", "<prompt>", "-i"]
|
||||
|
||||
"""
|
||||
# Create command string
|
||||
commands = {"dmenu": ["-p", str(prompt)],
|
||||
"rofi": ["-dmenu", "-p", str(prompt), "-l", str(num_lines)],
|
||||
"bemenu": ["-p", str(prompt)],
|
||||
"wofi": ["-p", str(prompt)]}
|
||||
command = shlex.split(CONF.get('dmenu', 'dmenu_command', fallback="dmenu"))
|
||||
command.extend(cli_args())
|
||||
command.extend(commands.get(command[0], []))
|
||||
# Rofi Highlighting
|
||||
rofi_highlight = CONF.getboolean('dmenu', 'rofi_highlight', fallback=False)
|
||||
if rofi_highlight is True and command[0] == "rofi" and active_lines:
|
||||
command.extend(["-a", ",".join([str(num) for num in active_lines])])
|
||||
# Passphrase prompts
|
||||
obscure = CONF.getboolean('dmenu_passphrase', 'obscure', fallback=False)
|
||||
if prompt == "Passphrase" and obscure is True:
|
||||
obscure_color = CONF.get('dmenu_passphrase', 'obscure_color', fallback='#222222')
|
||||
pass_prompts = {"dmenu": dmenu_pass(command[0], obscure_color),
|
||||
"rofi": ['-password'],
|
||||
"bemenu": ['-x'],
|
||||
"wofi": ['-P']}
|
||||
command.extend(pass_prompts.get(command[0], []))
|
||||
return command
|
||||
|
||||
|
||||
def choose_adapter(client):
|
||||
"""If there is more than one wifi adapter installed, ask which one to use
|
||||
|
||||
"""
|
||||
devices = client.get_devices()
|
||||
devices = [i for i in devices if i.get_device_type() == NM.DeviceType.WIFI]
|
||||
if not devices:
|
||||
return None
|
||||
if len(devices) == 1:
|
||||
return devices[0]
|
||||
device_names = "\n".join([d.get_iface() for d in devices])
|
||||
sel = subprocess.run(dmenu_cmd(len(devices), "CHOOSE ADAPTER:"),
|
||||
capture_output=True,
|
||||
check=False,
|
||||
env=ENV,
|
||||
input=device_names,
|
||||
encoding=ENC).stdout
|
||||
if not sel.strip():
|
||||
sys.exit()
|
||||
devices = [i for i in devices if i.get_iface() == sel.strip()]
|
||||
assert len(devices) == 1
|
||||
return devices[0]
|
||||
|
||||
|
||||
def is_installed(cmd):
|
||||
"""Check if a utility is installed"""
|
||||
return which(cmd) is not None
|
||||
|
||||
|
||||
def bluetooth_get_enabled():
|
||||
"""Check if bluetooth is enabled via rfkill.
|
||||
|
||||
Returns None if no bluetooth device was found.
|
||||
"""
|
||||
# See https://www.kernel.org/doc/Documentation/ABI/stable/sysfs-class-rfkill
|
||||
for path in pathlib.Path('/sys/class/rfkill/').glob('rfkill*'):
|
||||
if (path / 'type').read_text().strip() == 'bluetooth':
|
||||
return (path / 'soft').read_text().strip() == '0'
|
||||
return None
|
||||
|
||||
|
||||
def create_other_actions(client):
|
||||
"""Return list of other actions that can be taken
|
||||
|
||||
"""
|
||||
networking_enabled = client.networking_get_enabled()
|
||||
networking_action = "Disable" if networking_enabled else "Enable"
|
||||
|
||||
wifi_enabled = client.wireless_get_enabled()
|
||||
wifi_action = "Disable" if wifi_enabled else "Enable"
|
||||
|
||||
bluetooth_enabled = bluetooth_get_enabled()
|
||||
bluetooth_action = "Disable" if bluetooth_enabled else "Enable"
|
||||
|
||||
actions = [Action(f"{wifi_action} Wifi", toggle_wifi,
|
||||
not wifi_enabled),
|
||||
Action(f"{networking_action} Networking",
|
||||
toggle_networking, not networking_enabled)]
|
||||
if bluetooth_enabled is not None:
|
||||
actions.append(Action(f"{bluetooth_action} Bluetooth",
|
||||
toggle_bluetooth, not bluetooth_enabled))
|
||||
actions += [Action("Launch Connection Manager", launch_connection_editor),
|
||||
Action("Delete a Connection", delete_connection)]
|
||||
if wifi_enabled:
|
||||
actions.append(Action("Rescan Wifi Networks", rescan_wifi))
|
||||
return actions
|
||||
|
||||
|
||||
def rescan_wifi():
|
||||
"""
|
||||
Rescan Wifi Access Points
|
||||
"""
|
||||
delay = CONF.getint('nmdm', 'rescan_delay', fallback=5)
|
||||
for dev in CLIENT.get_devices():
|
||||
if gi.repository.NM.DeviceWifi == type(dev):
|
||||
try:
|
||||
dev.request_scan_async(None, rescan_cb, None)
|
||||
LOOP.run()
|
||||
sleep(delay)
|
||||
notify("Wifi scan complete")
|
||||
main()
|
||||
except gi.repository.GLib.Error as err:
|
||||
# Too frequent rescan error
|
||||
notify("Wifi rescan failed", urgency="critical")
|
||||
if not err.code == 6: # pylint: disable=no-member
|
||||
raise err
|
||||
|
||||
|
||||
def rescan_cb(dev, res, data):
|
||||
"""Callback for rescan_wifi. Just for notifications
|
||||
|
||||
"""
|
||||
if dev.request_scan_finish(res) is True:
|
||||
notify("Wifi scan running...")
|
||||
else:
|
||||
notify("Wifi scan failed", urgency="critical")
|
||||
LOOP.quit()
|
||||
|
||||
|
||||
def ssid_to_utf8(nm_ap):
|
||||
""" Convert binary ssid to utf-8 """
|
||||
ssid = nm_ap.get_ssid()
|
||||
if not ssid:
|
||||
return ""
|
||||
ret = NM.utils_ssid_to_utf8(ssid.get_data())
|
||||
return ret
|
||||
|
||||
|
||||
def prompt_saved(saved_cons):
|
||||
"""Prompt for a saved connection."""
|
||||
actions = create_saved_actions(saved_cons)
|
||||
sel = get_selection(actions)
|
||||
sel()
|
||||
|
||||
|
||||
def ap_security(nm_ap):
|
||||
"""Parse the security flags to return a string with 'WPA2', etc. """
|
||||
flags = nm_ap.get_flags()
|
||||
wpa_flags = nm_ap.get_wpa_flags()
|
||||
rsn_flags = nm_ap.get_rsn_flags()
|
||||
sec_str = ""
|
||||
if ((flags & getattr(NM, '80211ApFlags').PRIVACY) and
|
||||
(wpa_flags == 0) and (rsn_flags == 0)):
|
||||
sec_str = " WEP"
|
||||
if wpa_flags:
|
||||
sec_str = " WPA1"
|
||||
if rsn_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_PSK:
|
||||
sec_str += " WPA2"
|
||||
if rsn_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_SAE:
|
||||
sec_str += " WPA3"
|
||||
if ((wpa_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_802_1X) or
|
||||
(rsn_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_802_1X)):
|
||||
sec_str += " 802.1X"
|
||||
if ((wpa_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_OWE) or
|
||||
(rsn_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_OWE)):
|
||||
sec_str += " OWE"
|
||||
|
||||
# If there is no security use "--"
|
||||
if sec_str == "":
|
||||
sec_str = "--"
|
||||
return sec_str.lstrip()
|
||||
|
||||
|
||||
class Action(): # pylint: disable=too-few-public-methods
|
||||
"""Helper class to execute functions from a string variable"""
|
||||
def __init__(self,
|
||||
name,
|
||||
func,
|
||||
args=None,
|
||||
active=False):
|
||||
self.name = name
|
||||
self.func = func
|
||||
self.is_active = active
|
||||
if args is None:
|
||||
self.args = None
|
||||
elif isinstance(args, list):
|
||||
self.args = args
|
||||
else:
|
||||
self.args = [args]
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def __call__(self):
|
||||
if self.args is None:
|
||||
self.func()
|
||||
else:
|
||||
self.func(*self.args)
|
||||
|
||||
|
||||
def conn_matches_adapter(conn, adapter):
|
||||
"""Return True if the connection is applicable for the given adapter.
|
||||
|
||||
There seem to be two ways for a connection specify what interface it belongs
|
||||
to:
|
||||
|
||||
- By setting 'mac-address' in [wifi] to the adapter's MAC
|
||||
- By setting 'interface-name` in [connection] to the adapter's name.
|
||||
|
||||
Depending on how the connection was added, it seems like either
|
||||
'mac-address', 'interface-name' or neither of both is set.
|
||||
"""
|
||||
# [wifi] mac-address
|
||||
setting_wireless = conn.get_setting_wireless()
|
||||
mac = setting_wireless.get_mac_address()
|
||||
if mac is not None:
|
||||
return mac == adapter.get_permanent_hw_address()
|
||||
|
||||
# [connection] interface-name
|
||||
setting_connection = conn.get_setting_connection()
|
||||
interface = setting_connection.get_interface_name()
|
||||
if interface is not None:
|
||||
return interface == adapter.get_iface()
|
||||
|
||||
# Neither is set, let's assume this connection is for multiple/all adapters.
|
||||
return True
|
||||
|
||||
|
||||
def process_ap(nm_ap, is_active, adapter):
|
||||
"""Activate/Deactivate a connection and get password if required"""
|
||||
if is_active:
|
||||
CLIENT.deactivate_connection_async(nm_ap, None, deactivate_cb, nm_ap)
|
||||
LOOP.run()
|
||||
else:
|
||||
conns_cur = [i for i in CONNS if
|
||||
i.get_setting_wireless() is not None and
|
||||
conn_matches_adapter(i, adapter)]
|
||||
con = nm_ap.filter_connections(conns_cur)
|
||||
if len(con) > 1:
|
||||
raise ValueError("There are multiple connections possible")
|
||||
|
||||
if len(con) == 1:
|
||||
CLIENT.activate_connection_async(con[0], adapter, nm_ap.get_path(),
|
||||
None, activate_cb, nm_ap)
|
||||
LOOP.run()
|
||||
else:
|
||||
if ap_security(nm_ap) != "--":
|
||||
password = get_passphrase()
|
||||
else:
|
||||
password = ""
|
||||
set_new_connection(nm_ap, password, adapter)
|
||||
|
||||
|
||||
def activate_cb(dev, res, data):
|
||||
"""Notification if activate connection completed successfully
|
||||
|
||||
"""
|
||||
try:
|
||||
conn = dev.activate_connection_finish(res)
|
||||
except GLib.Error:
|
||||
conn = None
|
||||
if conn is not None:
|
||||
notify(f"Activated {conn.get_id()}")
|
||||
else:
|
||||
notify(f"Problem activating {data.get_id()}", urgency="critical")
|
||||
LOOP.quit()
|
||||
|
||||
|
||||
def deactivate_cb(dev, res, data):
|
||||
"""Notification if deactivate connection completed successfully
|
||||
|
||||
"""
|
||||
if dev.deactivate_connection_finish(res) is True:
|
||||
notify(f"Deactivated {data.get_id()}")
|
||||
else:
|
||||
notify(f"Problem deactivating {data.get_id()}", urgency="critical")
|
||||
LOOP.quit()
|
||||
|
||||
|
||||
def process_vpngsm(con, activate):
|
||||
"""Activate/deactive VPN or GSM connections"""
|
||||
if activate:
|
||||
CLIENT.activate_connection_async(con, None, None,
|
||||
None, activate_cb, con)
|
||||
else:
|
||||
CLIENT.deactivate_connection_async(con, None, deactivate_cb, con)
|
||||
LOOP.run()
|
||||
|
||||
|
||||
def create_ap_actions(aps, active_ap, active_connection, adapter): # noqa pylint: disable=too-many-locals,line-too-long
|
||||
"""For each AP in a list, create the string and its attached function
|
||||
(activate/deactivate)
|
||||
|
||||
"""
|
||||
active_ap_bssid = active_ap.get_bssid() if active_ap is not None else ""
|
||||
|
||||
names = [ssid_to_utf8(ap) for ap in aps]
|
||||
max_len_name = max([len(name) for name in names]) if names else 0
|
||||
secs = [ap_security(ap) for ap in aps]
|
||||
max_len_sec = max([len(sec) for sec in secs]) if secs else 0
|
||||
|
||||
ap_actions = []
|
||||
|
||||
for nm_ap, name, sec in zip(aps, names, secs):
|
||||
bars = NM.utils_wifi_strength_bars(nm_ap.get_strength())
|
||||
wifi_chars = CONF.get("dmenu", "wifi_chars", fallback=False)
|
||||
if wifi_chars:
|
||||
bars = "".join([wifi_chars[i] for i, j in enumerate(bars) if j == '*'])
|
||||
is_active = nm_ap.get_bssid() == active_ap_bssid
|
||||
compact = CONF.getboolean("dmenu", "compact", fallback=False)
|
||||
if compact:
|
||||
action_name = f"{name} {sec} {bars}"
|
||||
else:
|
||||
action_name = f"{name:<{max_len_name}s} {sec:<{max_len_sec}s} {bars:>4}"
|
||||
if is_active:
|
||||
ap_actions.append(Action(action_name, process_ap,
|
||||
[active_connection, True, adapter],
|
||||
active=True))
|
||||
else:
|
||||
ap_actions.append(Action(action_name, process_ap,
|
||||
[nm_ap, False, adapter]))
|
||||
return ap_actions
|
||||
|
||||
|
||||
def create_vpn_actions(vpns, active):
|
||||
"""Create the list of strings to display with associated function
|
||||
(activate/deactivate) for VPN connections.
|
||||
|
||||
"""
|
||||
active_vpns = [i for i in active if i.get_vpn()]
|
||||
return _create_vpngsm_actions(vpns, active_vpns, "VPN")
|
||||
|
||||
|
||||
def create_wireguard_actions(wgs, active):
|
||||
"""Create the list of strings to display with associated function
|
||||
(activate/deactivate) for Wireguard connections.
|
||||
|
||||
"""
|
||||
active_wgs = [i for i in active if i.get_connection_type() == "wireguard"]
|
||||
return _create_vpngsm_actions(wgs, active_wgs, "Wireguard")
|
||||
|
||||
|
||||
def create_eth_actions(eths, active):
|
||||
"""Create the list of strings to display with associated function
|
||||
(activate/deactivate) for Ethernet connections.
|
||||
|
||||
"""
|
||||
active_eths = [i for i in active if 'ethernet' in i.get_connection_type()]
|
||||
return _create_vpngsm_actions(eths, active_eths, "Eth")
|
||||
|
||||
|
||||
def create_gsm_actions(gsms, active):
|
||||
"""Create the list of strings to display with associated function
|
||||
(activate/deactivate) GSM connections."""
|
||||
active_gsms = [i for i in active if
|
||||
i.get_connection() is not None and
|
||||
i.get_connection().is_type(NM.SETTING_GSM_SETTING_NAME)]
|
||||
return _create_vpngsm_actions(gsms, active_gsms, "GSM")
|
||||
|
||||
|
||||
def create_blue_actions(blues, active):
|
||||
"""Create the list of strings to display with associated function
|
||||
(activate/deactivate) Bluetooth connections."""
|
||||
active_blues = [i for i in active if
|
||||
i.get_connection() is not None and
|
||||
i.get_connection().is_type(NM.SETTING_BLUETOOTH_SETTING_NAME)]
|
||||
return _create_vpngsm_actions(blues, active_blues, "Bluetooth")
|
||||
|
||||
|
||||
def create_saved_actions(saved):
|
||||
"""Create the list of strings to display with associated function
|
||||
(activate/deactivate) for VPN connections.
|
||||
|
||||
"""
|
||||
return _create_vpngsm_actions(saved, [], "SAVED")
|
||||
|
||||
|
||||
def _create_vpngsm_actions(cons, active_cons, label):
|
||||
active_con_ids = [a.get_id() for a in active_cons]
|
||||
actions = []
|
||||
for con in cons:
|
||||
is_active = con.get_id() in active_con_ids
|
||||
action_name = f"{con.get_id()}:{label}"
|
||||
if is_active:
|
||||
active_connection = [a for a in active_cons
|
||||
if a.get_id() == con.get_id()]
|
||||
if len(active_connection) != 1:
|
||||
raise ValueError(f"Multiple active connections match {con.get_id()}")
|
||||
active_connection = active_connection[0]
|
||||
|
||||
actions.append(Action(action_name, process_vpngsm,
|
||||
[active_connection, False], active=True))
|
||||
else:
|
||||
actions.append(Action(action_name, process_vpngsm,
|
||||
[con, True]))
|
||||
return actions
|
||||
|
||||
|
||||
def create_wwan_actions(client):
|
||||
"""Create WWWAN actions
|
||||
|
||||
"""
|
||||
wwan_enabled = client.wwan_get_enabled()
|
||||
wwan_action = "Disable" if wwan_enabled else "Enable"
|
||||
return [Action(f"{wwan_action} WWAN", toggle_wwan, not wwan_enabled)]
|
||||
|
||||
|
||||
def combine_actions(eths, aps, vpns, wgs, gsms, blues, wwan, others, saved):
|
||||
# pylint: disable=too-many-arguments
|
||||
"""Combine all given actions into a list of actions.
|
||||
|
||||
Args: args - eths: list of Actions
|
||||
aps: list of Actions
|
||||
vpns: list of Actions
|
||||
gsms: list of Actions
|
||||
blues: list of Actions
|
||||
wwan: list of Actions
|
||||
others: list of Actions
|
||||
"""
|
||||
compact = CONF.getboolean("dmenu", "compact", fallback=False)
|
||||
empty_action = [Action('', None)] if not compact else []
|
||||
all_actions = []
|
||||
all_actions += eths + empty_action if eths else []
|
||||
all_actions += aps + empty_action if aps else []
|
||||
all_actions += vpns + empty_action if vpns else []
|
||||
all_actions += wgs + empty_action if wgs else []
|
||||
all_actions += gsms + empty_action if (gsms and wwan) else []
|
||||
all_actions += blues + empty_action if blues else []
|
||||
all_actions += wwan + empty_action if wwan else []
|
||||
all_actions += others + empty_action if others else []
|
||||
all_actions += saved + empty_action if saved else []
|
||||
return all_actions
|
||||
|
||||
|
||||
def get_selection(all_actions):
|
||||
"""Spawn dmenu for selection and execute the associated action."""
|
||||
rofi_highlight = CONF.getboolean('dmenu', 'rofi_highlight', fallback=False)
|
||||
inp = []
|
||||
|
||||
if rofi_highlight is True:
|
||||
inp = [str(action) for action in all_actions]
|
||||
else:
|
||||
inp = [('== ' if action.is_active else ' ') + str(action)
|
||||
for action in all_actions]
|
||||
active_lines = [index for index, action in enumerate(all_actions)
|
||||
if action.is_active]
|
||||
|
||||
command = dmenu_cmd(len(inp), active_lines=active_lines)
|
||||
sel = subprocess.run(command,
|
||||
capture_output=True,
|
||||
check=False,
|
||||
input="\n".join(inp),
|
||||
encoding=ENC,
|
||||
env=ENV).stdout
|
||||
|
||||
if not sel.rstrip():
|
||||
sys.exit()
|
||||
|
||||
if rofi_highlight is False:
|
||||
action = [i for i in all_actions
|
||||
if ((str(i).strip() == str(sel.strip())
|
||||
and not i.is_active) or
|
||||
('== ' + str(i) == str(sel.rstrip('\n'))
|
||||
and i.is_active))]
|
||||
else:
|
||||
action = [i for i in all_actions if str(i).strip() == sel.strip()]
|
||||
assert len(action) == 1, f"Selection was ambiguous: '{str(sel.strip())}'"
|
||||
return action[0]
|
||||
|
||||
|
||||
def toggle_networking(enable):
|
||||
"""Enable/disable networking
|
||||
|
||||
Args: enable - boolean
|
||||
|
||||
"""
|
||||
toggle = GLib.Variant.new_tuple(GLib.Variant.new_boolean(enable))
|
||||
try:
|
||||
CLIENT.dbus_call(NM.DBUS_PATH, NM.DBUS_INTERFACE, "Enable", toggle,
|
||||
None, -1, None, None, None)
|
||||
except AttributeError:
|
||||
# Workaround for older versions of python-gobject
|
||||
CLIENT.networking_set_enabled(enable)
|
||||
notify(f"Networking {'enabled' if enable is True else 'disabled'}")
|
||||
|
||||
|
||||
def toggle_wifi(enable):
|
||||
"""Enable/disable Wifi
|
||||
|
||||
Args: enable - boolean
|
||||
|
||||
"""
|
||||
toggle = GLib.Variant.new_boolean(enable)
|
||||
try:
|
||||
CLIENT.dbus_set_property(NM.DBUS_PATH, NM.DBUS_INTERFACE, "WirelessEnabled", toggle,
|
||||
-1, None, None, None)
|
||||
except AttributeError:
|
||||
# Workaround for older versions of python-gobject
|
||||
CLIENT.wireless_set_enabled(enable)
|
||||
notify(f"Wifi {'enabled' if enable is True else 'disabled'}")
|
||||
|
||||
|
||||
def toggle_wwan(enable):
|
||||
"""Enable/disable WWAN
|
||||
|
||||
Args: enable - boolean
|
||||
|
||||
"""
|
||||
toggle = GLib.Variant.new_boolean(enable)
|
||||
try:
|
||||
CLIENT.dbus_set_property(NM.DBUS_PATH, NM.DBUS_INTERFACE, "WwanEnabled", toggle,
|
||||
-1, None, None, None)
|
||||
except AttributeError:
|
||||
# Workaround for older versions of python-gobject
|
||||
CLIENT.wwan_set_enabled(enable)
|
||||
notify(f"Wwan {'enabled' if enable is True else 'disabled'}")
|
||||
|
||||
|
||||
def toggle_bluetooth(enable):
|
||||
"""Enable/disable Bluetooth
|
||||
|
||||
Args: enable - boolean
|
||||
|
||||
References:
|
||||
https://github.com/blueman-project/blueman/blob/master/blueman/plugins/mechanism/RfKill.py
|
||||
https://www.kernel.org/doc/html/latest/driver-api/rfkill.html
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/uapi/linux/rfkill.h?h=v5.8.9
|
||||
|
||||
"""
|
||||
type_bluetooth = 2
|
||||
op_change_all = 3
|
||||
idx = 0
|
||||
soft_state = 0 if enable else 1
|
||||
hard_state = 0
|
||||
|
||||
data = struct.pack("IBBBB", idx, type_bluetooth, op_change_all,
|
||||
soft_state, hard_state)
|
||||
|
||||
try:
|
||||
with open('/dev/rfkill', 'r+b', buffering=0) as rff:
|
||||
rff.write(data)
|
||||
except PermissionError:
|
||||
notify("Lacking permission to write to /dev/rfkill.",
|
||||
"Check README for configuration options.",
|
||||
urgency="critical")
|
||||
else:
|
||||
notify(f"Bluetooth {'enabled' if enable else 'disabled'}")
|
||||
|
||||
|
||||
def launch_connection_editor():
|
||||
"""Launch nmtui or the gui nm-connection-editor
|
||||
|
||||
"""
|
||||
terminal = CONF.get("editor", "terminal", fallback="xterm")
|
||||
gui_if_available = CONF.getboolean("editor", "gui_if_available", fallback=True)
|
||||
guis = ["gnome-control-center", "nm-connection-editor"]
|
||||
if gui_if_available is True:
|
||||
for gui in guis:
|
||||
if is_installed(gui):
|
||||
subprocess.run(gui, check=False)
|
||||
return
|
||||
if is_installed("nmtui"):
|
||||
subprocess.run([terminal, "-e", "nmtui"], check=False)
|
||||
return
|
||||
notify("No network connection editor installed", urgency="critical")
|
||||
|
||||
|
||||
def get_passphrase():
|
||||
"""Get a password
|
||||
|
||||
Returns: string
|
||||
|
||||
"""
|
||||
pinentry = CONF.get("dmenu", "pinentry", fallback=None)
|
||||
if pinentry:
|
||||
pin = ""
|
||||
out = subprocess.run(pinentry,
|
||||
capture_output=True,
|
||||
check=False,
|
||||
encoding=ENC,
|
||||
input='setdesc Get network password\ngetpin\n').stdout
|
||||
if out:
|
||||
res = out.split("\n")[2]
|
||||
if res.startswith("D "):
|
||||
pin = res.split("D ")[1]
|
||||
return pin
|
||||
return subprocess.run(dmenu_cmd(0, "Passphrase"),
|
||||
stdin=subprocess.DEVNULL,
|
||||
capture_output=True,
|
||||
check=False,
|
||||
encoding=ENC).stdout
|
||||
|
||||
|
||||
def delete_connection():
|
||||
"""Display list of NM connections and delete the selected one
|
||||
|
||||
"""
|
||||
conn_acts = [Action(i.get_id(), i.delete_async, args=[None, delete_cb, None]) for i in CONNS]
|
||||
conn_names = "\n".join([str(i) for i in conn_acts])
|
||||
sel = subprocess.run(dmenu_cmd(len(conn_acts), "CHOOSE CONNECTION TO DELETE:"),
|
||||
capture_output=True,
|
||||
check=False,
|
||||
input=conn_names,
|
||||
encoding=ENC,
|
||||
env=ENV).stdout
|
||||
if not sel.strip():
|
||||
sys.exit()
|
||||
action = [i for i in conn_acts if str(i) == sel.rstrip("\n")]
|
||||
assert len(action) == 1, f"Selection was ambiguous: {str(sel)}"
|
||||
action[0]()
|
||||
LOOP.run()
|
||||
|
||||
|
||||
def delete_cb(dev, res, data):
|
||||
"""Notification if delete completed successfully
|
||||
|
||||
"""
|
||||
if dev.delete_finish(res) is True:
|
||||
notify(f"Deleted {dev.get_id()}")
|
||||
else:
|
||||
notify(f"Problem deleting {dev.get_id()}", urgency="critical")
|
||||
LOOP.quit()
|
||||
|
||||
|
||||
def set_new_connection(nm_ap, nm_pw, adapter):
|
||||
"""Setup a new NetworkManager connection
|
||||
|
||||
Args: ap - NM.AccessPoint
|
||||
pw - string
|
||||
|
||||
"""
|
||||
nm_pw = str(nm_pw).strip()
|
||||
profile = create_wifi_profile(nm_ap, nm_pw, adapter)
|
||||
CLIENT.add_and_activate_connection_async(profile, adapter, nm_ap.get_path(),
|
||||
None, verify_conn, profile)
|
||||
LOOP.run()
|
||||
|
||||
|
||||
def create_wifi_profile(nm_ap, password, adapter):
|
||||
# pylint: disable=line-too-long
|
||||
# noqa From https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples/python/gi/add_connection.py
|
||||
# noqa and https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples/python/dbus/add-wifi-psk-connection.py
|
||||
# pylint: enable=line-too-long
|
||||
"""Create the NM profile given the AP and passphrase"""
|
||||
ap_sec = ap_security(nm_ap)
|
||||
profile = NM.SimpleConnection.new()
|
||||
|
||||
s_con = NM.SettingConnection.new()
|
||||
s_con.set_property(NM.SETTING_CONNECTION_ID, ssid_to_utf8(nm_ap))
|
||||
s_con.set_property(NM.SETTING_CONNECTION_UUID, str(uuid.uuid4()))
|
||||
s_con.set_property(NM.SETTING_CONNECTION_TYPE, "802-11-wireless")
|
||||
profile.add_setting(s_con)
|
||||
|
||||
s_wifi = NM.SettingWireless.new()
|
||||
s_wifi.set_property(NM.SETTING_WIRELESS_SSID, nm_ap.get_ssid())
|
||||
s_wifi.set_property(NM.SETTING_WIRELESS_MODE, 'infrastructure')
|
||||
s_wifi.set_property(NM.SETTING_WIRELESS_MAC_ADDRESS, adapter.get_permanent_hw_address())
|
||||
profile.add_setting(s_wifi)
|
||||
|
||||
s_ip4 = NM.SettingIP4Config.new()
|
||||
s_ip4.set_property(NM.SETTING_IP_CONFIG_METHOD, "auto")
|
||||
profile.add_setting(s_ip4)
|
||||
|
||||
s_ip6 = NM.SettingIP6Config.new()
|
||||
s_ip6.set_property(NM.SETTING_IP_CONFIG_METHOD, "auto")
|
||||
profile.add_setting(s_ip6)
|
||||
|
||||
if ap_sec != "--":
|
||||
s_wifi_sec = NM.SettingWirelessSecurity.new()
|
||||
if "WPA" in ap_sec:
|
||||
if "WPA3" in ap_sec:
|
||||
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_KEY_MGMT,
|
||||
"sae")
|
||||
else:
|
||||
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_KEY_MGMT,
|
||||
"wpa-psk")
|
||||
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_AUTH_ALG,
|
||||
"open")
|
||||
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_PSK, password)
|
||||
elif "WEP" in ap_sec:
|
||||
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_KEY_MGMT,
|
||||
"None")
|
||||
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE,
|
||||
NM.WepKeyType.PASSPHRASE)
|
||||
s_wifi_sec.set_wep_key(0, password)
|
||||
profile.add_setting(s_wifi_sec)
|
||||
|
||||
return profile
|
||||
|
||||
|
||||
def verify_conn(client, result, data):
|
||||
"""Callback function for add_and_activate_connection_async
|
||||
|
||||
Check if connection completes successfully. Delete the connection if there
|
||||
is an error.
|
||||
|
||||
"""
|
||||
try:
|
||||
act_conn = client.add_and_activate_connection_finish(result)
|
||||
conn = act_conn.get_connection()
|
||||
if not all([conn.verify(),
|
||||
conn.verify_secrets(),
|
||||
data.verify(),
|
||||
data.verify_secrets()]):
|
||||
raise GLib.Error
|
||||
notify(f"Added {conn.get_id()}")
|
||||
except GLib.Error:
|
||||
try:
|
||||
notify(f"Connection to {conn.get_id()} failed",
|
||||
urgency="critical")
|
||||
conn.delete_async(None, None, None)
|
||||
except UnboundLocalError:
|
||||
pass
|
||||
finally:
|
||||
LOOP.quit()
|
||||
|
||||
|
||||
def create_ap_list(adapter, active_connections):
|
||||
"""Generate list of access points. Remove duplicate APs , keeping strongest
|
||||
ones and the active AP
|
||||
|
||||
Args: adapter
|
||||
active_connections - list of all active connections
|
||||
Returns: aps - list of access points
|
||||
active_ap - active AP
|
||||
active_ap_con - active Connection
|
||||
adapter
|
||||
|
||||
"""
|
||||
aps = []
|
||||
ap_names = []
|
||||
active_ap = adapter.get_active_access_point()
|
||||
aps_all = sorted(adapter.get_access_points(),
|
||||
key=lambda a: a.get_strength(), reverse=True)
|
||||
conns_cur = [i for i in CONNS if
|
||||
i.get_setting_wireless() is not None and
|
||||
conn_matches_adapter(i, adapter)]
|
||||
try:
|
||||
ap_conns = active_ap.filter_connections(conns_cur)
|
||||
active_ap_name = ssid_to_utf8(active_ap)
|
||||
active_ap_con = [active_conn for active_conn in active_connections
|
||||
if active_conn.get_connection() in ap_conns]
|
||||
except AttributeError:
|
||||
active_ap_name = None
|
||||
active_ap_con = []
|
||||
if len(active_ap_con) > 1:
|
||||
raise ValueError("Multiple connection profiles match"
|
||||
" the wireless AP")
|
||||
active_ap_con = active_ap_con[0] if active_ap_con else None
|
||||
for nm_ap in aps_all:
|
||||
ap_name = ssid_to_utf8(nm_ap)
|
||||
if nm_ap != active_ap and ap_name == active_ap_name:
|
||||
# Skip adding AP if it's not active but same name as active AP
|
||||
continue
|
||||
if ap_name not in ap_names:
|
||||
ap_names.append(ap_name)
|
||||
aps.append(nm_ap)
|
||||
return aps, active_ap, active_ap_con, adapter
|
||||
|
||||
|
||||
def notify(message, details=None, urgency="low"):
|
||||
"""Use notify-send if available for notifications
|
||||
|
||||
"""
|
||||
delay = CONF.getint('nmdm', 'rescan_delay', fallback=5)
|
||||
args = ["-u", urgency, "-a", "networkmanager-dmenu",
|
||||
"-t", str(delay * 1000), message]
|
||||
if details is not None:
|
||||
args.append(details)
|
||||
if is_installed("notify-send"):
|
||||
subprocess.run(["notify-send"] + args, check=False)
|
||||
|
||||
|
||||
def run(): # pylint: disable=too-many-locals
|
||||
"""Main script entrypoint"""
|
||||
active = CLIENT.get_active_connections()
|
||||
adapter = choose_adapter(CLIENT)
|
||||
if adapter:
|
||||
ap_actions = create_ap_actions(*create_ap_list(adapter, active))
|
||||
else:
|
||||
ap_actions = []
|
||||
|
||||
vpns = [i for i in CONNS if i.is_type(NM.SETTING_VPN_SETTING_NAME)]
|
||||
try:
|
||||
wgs = [i for i in CONNS if i.is_type(NM.SETTING_WIREGUARD_SETTING_NAME)]
|
||||
except AttributeError:
|
||||
# Workaround for older versions of python-gobject with no wireguard support
|
||||
wgs = []
|
||||
eths = [i for i in CONNS if i.is_type(NM.SETTING_WIRED_SETTING_NAME)]
|
||||
blues = [i for i in CONNS if i.is_type(NM.SETTING_BLUETOOTH_SETTING_NAME)]
|
||||
|
||||
vpn_actions = create_vpn_actions(vpns, active)
|
||||
wg_actions = create_wireguard_actions(wgs, active)
|
||||
eth_actions = create_eth_actions(eths, active)
|
||||
blue_actions = create_blue_actions(blues, active)
|
||||
other_actions = create_other_actions(CLIENT)
|
||||
wwan_installed = is_installed("ModemManager")
|
||||
if wwan_installed:
|
||||
gsms = [i for i in CONNS if i.is_type(NM.SETTING_GSM_SETTING_NAME)]
|
||||
gsm_actions = create_gsm_actions(gsms, active)
|
||||
wwan_actions = create_wwan_actions(CLIENT)
|
||||
else:
|
||||
gsm_actions = []
|
||||
wwan_actions = []
|
||||
|
||||
list_saved = CONF.getboolean('dmenu', 'list_saved', fallback=False)
|
||||
saved_cons = [i for i in CONNS if i not in vpns + wgs + eths + blues]
|
||||
if list_saved:
|
||||
saved_actions = create_saved_actions(saved_cons)
|
||||
else:
|
||||
saved_actions = [Action("Saved connections", prompt_saved, [saved_cons])]
|
||||
|
||||
actions = combine_actions(eth_actions, ap_actions, vpn_actions, wg_actions,
|
||||
gsm_actions, blue_actions, wwan_actions,
|
||||
other_actions, saved_actions)
|
||||
sel = get_selection(actions)
|
||||
sel()
|
||||
|
||||
|
||||
def main():
|
||||
"""Main. Enables script to be re-run after a wifi rescan
|
||||
|
||||
"""
|
||||
global CLIENT, CONNS, LOOP # noqa pylint: disable=global-variable-undefined
|
||||
CLIENT = NM.Client.new(None)
|
||||
LOOP = GLib.MainLoop()
|
||||
CONNS = CLIENT.get_connections()
|
||||
|
||||
run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
# vim: set et ts=4 sw=4 :
|
||||
@ -1,15 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# Import Current Theme
|
||||
DIR="$HOME/.config/i3"
|
||||
STYLE="onedark"
|
||||
RASI="$DIR/themes/$STYLE/rofi/askpass.rasi"
|
||||
|
||||
# Rofi text dialog to get password
|
||||
rofi -dmenu \
|
||||
-password \
|
||||
-i \
|
||||
-p "Root" \
|
||||
-theme ${RASI}
|
||||
@ -1,79 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# Import Current Theme
|
||||
DIR="$HOME/.config/i3"
|
||||
STYLE="onedark"
|
||||
RASI="$DIR/themes/$STYLE/rofi/asroot.rasi"
|
||||
ASROOT="$DIR/scripts/i3_asroot"
|
||||
|
||||
# Theme Elements
|
||||
prompt='Root'
|
||||
mesg="Run Applications As Root"
|
||||
term='alacritty --class alacritty-float,alacritty-float --config-file /root/.config/i3/alacritty/alacritty.yml'
|
||||
|
||||
# Options
|
||||
layout=`cat ${RASI} | grep 'USE_ICON' | cut -d'=' -f2`
|
||||
if [[ "$layout" == 'NO' ]]; then
|
||||
option_1=" Alacritty"
|
||||
option_2=" Thunar"
|
||||
option_3=" Geany"
|
||||
option_4=" Ranger"
|
||||
option_5=" Vim"
|
||||
else
|
||||
option_1=""
|
||||
option_2=""
|
||||
option_3=""
|
||||
option_4=""
|
||||
option_5=""
|
||||
fi
|
||||
|
||||
# Rofi CMD
|
||||
rofi_cmd() {
|
||||
rofi -dmenu \
|
||||
-p "$prompt" \
|
||||
-mesg "$mesg" \
|
||||
-markup-rows \
|
||||
-theme ${RASI}
|
||||
}
|
||||
|
||||
# Pass variables to rofi dmenu
|
||||
run_rofi() {
|
||||
echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5" | rofi_cmd
|
||||
}
|
||||
|
||||
# Execute Command
|
||||
run_cmd() {
|
||||
if [[ "$1" == '--opt1' ]]; then
|
||||
${ASROOT} "$term"
|
||||
elif [[ "$1" == '--opt2' ]]; then
|
||||
${ASROOT} 'dbus-run-session thunar'
|
||||
elif [[ "$1" == '--opt3' ]]; then
|
||||
${ASROOT} geany
|
||||
elif [[ "$1" == '--opt4' ]]; then
|
||||
${ASROOT} "$term -e ranger"
|
||||
elif [[ "$1" == '--opt5' ]]; then
|
||||
${ASROOT} "$term -e vim"
|
||||
fi
|
||||
}
|
||||
|
||||
# Actions
|
||||
chosen="$(run_rofi)"
|
||||
case ${chosen} in
|
||||
$option_1)
|
||||
run_cmd --opt1
|
||||
;;
|
||||
$option_2)
|
||||
run_cmd --opt2
|
||||
;;
|
||||
$option_3)
|
||||
run_cmd --opt3
|
||||
;;
|
||||
$option_4)
|
||||
run_cmd --opt4
|
||||
;;
|
||||
$option_5)
|
||||
run_cmd --opt5
|
||||
;;
|
||||
esac
|
||||
@ -1,14 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# Import Current Theme
|
||||
DIR="$HOME/.config/i3"
|
||||
STYLE="onedark"
|
||||
RASI="$DIR/themes/$STYLE/rofi/launcher.rasi"
|
||||
|
||||
# Run
|
||||
rofi \
|
||||
-show drun \
|
||||
-kb-cancel Alt-F1 \
|
||||
-theme ${RASI}
|
||||
@ -1,119 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# Import Current Theme
|
||||
DIR="$HOME/.config/i3"
|
||||
STYLE="onedark"
|
||||
RASI="$DIR/themes/$STYLE/rofi/music.rasi"
|
||||
|
||||
# Theme Elements
|
||||
status="`mpc status`"
|
||||
if [[ -z "$status" ]]; then
|
||||
prompt='Offline'
|
||||
mesg="MPD is Offline"
|
||||
else
|
||||
prompt="`mpc -f "%artist%" current`"
|
||||
mesg="`mpc -f "%title%" current` :: `mpc status | grep "#" | awk '{print $3}'`"
|
||||
fi
|
||||
|
||||
# Options
|
||||
layout=`cat ${RASI} | grep 'USE_ICON' | cut -d'=' -f2`
|
||||
if [[ "$layout" == 'NO' ]]; then
|
||||
if [[ ${status} == *"[playing]"* ]]; then
|
||||
option_1=" Pause"
|
||||
else
|
||||
option_1=" Play"
|
||||
fi
|
||||
option_2=" Stop"
|
||||
option_3=" Previous"
|
||||
option_4=" Next"
|
||||
option_5=" Repeat"
|
||||
option_6=" Random"
|
||||
else
|
||||
if [[ ${status} == *"[playing]"* ]]; then
|
||||
option_1=""
|
||||
else
|
||||
option_1=""
|
||||
fi
|
||||
option_2=""
|
||||
option_3=""
|
||||
option_4=""
|
||||
option_5=""
|
||||
option_6=""
|
||||
fi
|
||||
|
||||
# Toggle Actions
|
||||
active=''
|
||||
urgent=''
|
||||
# Repeat
|
||||
if [[ ${status} == *"repeat: on"* ]]; then
|
||||
active="-a 4"
|
||||
elif [[ ${status} == *"repeat: off"* ]]; then
|
||||
urgent="-u 4"
|
||||
else
|
||||
option_5=" Parsing Error"
|
||||
fi
|
||||
# Random
|
||||
if [[ ${status} == *"random: on"* ]]; then
|
||||
[ -n "$active" ] && active+=",5" || active="-a 5"
|
||||
elif [[ ${status} == *"random: off"* ]]; then
|
||||
[ -n "$urgent" ] && urgent+=",5" || urgent="-u 5"
|
||||
else
|
||||
option_6=" Parsing Error"
|
||||
fi
|
||||
|
||||
# Rofi CMD
|
||||
rofi_cmd() {
|
||||
rofi -dmenu \
|
||||
-p "$prompt" \
|
||||
-mesg "$mesg" \
|
||||
${active} ${urgent} \
|
||||
-markup-rows \
|
||||
-theme ${RASI}
|
||||
}
|
||||
|
||||
# Pass variables to rofi dmenu
|
||||
run_rofi() {
|
||||
echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd
|
||||
}
|
||||
|
||||
# Execute Command
|
||||
run_cmd() {
|
||||
if [[ "$1" == '--opt1' ]]; then
|
||||
mpc -q toggle && kunst --size 60x60 --silent
|
||||
elif [[ "$1" == '--opt2' ]]; then
|
||||
mpc -q stop
|
||||
elif [[ "$1" == '--opt3' ]]; then
|
||||
mpc -q prev && kunst --size 60x60 --silent
|
||||
elif [[ "$1" == '--opt4' ]]; then
|
||||
mpc -q next && kunst --size 60x60 --silent
|
||||
elif [[ "$1" == '--opt5' ]]; then
|
||||
mpc -q repeat
|
||||
elif [[ "$1" == '--opt6' ]]; then
|
||||
mpc -q random
|
||||
fi
|
||||
}
|
||||
|
||||
# Actions
|
||||
chosen="$(run_rofi)"
|
||||
case ${chosen} in
|
||||
$option_1)
|
||||
run_cmd --opt1
|
||||
;;
|
||||
$option_2)
|
||||
run_cmd --opt2
|
||||
;;
|
||||
$option_3)
|
||||
run_cmd --opt3
|
||||
;;
|
||||
$option_4)
|
||||
run_cmd --opt4
|
||||
;;
|
||||
$option_5)
|
||||
run_cmd --opt5
|
||||
;;
|
||||
$option_6)
|
||||
run_cmd --opt6
|
||||
;;
|
||||
esac
|
||||
@ -1,116 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# Import Current Theme
|
||||
DIR="$HOME/.config/i3"
|
||||
STYLE="onedark"
|
||||
RASI="$DIR/themes/$STYLE/rofi/powermenu.rasi"
|
||||
CNFR="$DIR/themes/$STYLE/rofi/confirm.rasi"
|
||||
|
||||
# Theme Elements
|
||||
prompt="`hostname` (`echo $DESKTOP_SESSION`)"
|
||||
mesg="Uptime : `uptime -p | sed -e 's/up //g'`"
|
||||
|
||||
# Options
|
||||
layout=`cat ${RASI} | grep 'USE_ICON' | cut -d'=' -f2`
|
||||
if [[ "$layout" == 'NO' ]]; then
|
||||
option_1=" Lock"
|
||||
option_2=" Logout"
|
||||
option_3=" Suspend"
|
||||
option_4=" Hibernate"
|
||||
option_5=" Reboot"
|
||||
option_6=" Shutdown"
|
||||
else
|
||||
option_1=""
|
||||
option_2=""
|
||||
option_3=""
|
||||
option_4=""
|
||||
option_5=""
|
||||
option_6=""
|
||||
fi
|
||||
cnflayout=`cat ${CNFR} | grep 'USE_ICON' | cut -d'=' -f2`
|
||||
if [[ "$cnflayout" == 'NO' ]]; then
|
||||
yes=' Yes'
|
||||
no=' No'
|
||||
else
|
||||
yes=''
|
||||
no=''
|
||||
fi
|
||||
|
||||
# Rofi CMD
|
||||
rofi_cmd() {
|
||||
rofi -dmenu \
|
||||
-p "$prompt" \
|
||||
-mesg "$mesg" \
|
||||
-markup-rows \
|
||||
-theme ${RASI}
|
||||
}
|
||||
|
||||
# Pass variables to rofi dmenu
|
||||
run_rofi() {
|
||||
echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd
|
||||
}
|
||||
|
||||
# Confirmation CMD
|
||||
confirm_cmd() {
|
||||
rofi -dmenu \
|
||||
-p 'Confirmation' \
|
||||
-mesg 'Are you Sure?' \
|
||||
-theme ${CNFR}
|
||||
}
|
||||
|
||||
# Ask for confirmation
|
||||
confirm_exit() {
|
||||
echo -e "$yes\n$no" | confirm_cmd
|
||||
}
|
||||
|
||||
# Confirm and execute
|
||||
confirm_run () {
|
||||
selected="$(confirm_exit)"
|
||||
if [[ "$selected" == "$yes" ]]; then
|
||||
${1} && ${2} && ${3}
|
||||
else
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
# Execute Command
|
||||
run_cmd() {
|
||||
if [[ "$1" == '--opt1' ]]; then
|
||||
betterlockscreen --lock
|
||||
elif [[ "$1" == '--opt2' ]]; then
|
||||
confirm_run 'i3-msg exit'
|
||||
elif [[ "$1" == '--opt3' ]]; then
|
||||
confirm_run 'mpc -q pause' 'pulsemixer --mute' 'betterlockscreen --suspend'
|
||||
elif [[ "$1" == '--opt4' ]]; then
|
||||
confirm_run 'systemctl hibernate'
|
||||
elif [[ "$1" == '--opt5' ]]; then
|
||||
confirm_run 'systemctl reboot'
|
||||
elif [[ "$1" == '--opt6' ]]; then
|
||||
confirm_run 'systemctl poweroff'
|
||||
fi
|
||||
}
|
||||
|
||||
# Actions
|
||||
chosen="$(run_rofi)"
|
||||
case ${chosen} in
|
||||
$option_1)
|
||||
run_cmd --opt1
|
||||
;;
|
||||
$option_2)
|
||||
run_cmd --opt2
|
||||
;;
|
||||
$option_3)
|
||||
run_cmd --opt3
|
||||
;;
|
||||
$option_4)
|
||||
run_cmd --opt4
|
||||
;;
|
||||
$option_5)
|
||||
run_cmd --opt5
|
||||
;;
|
||||
$option_6)
|
||||
run_cmd --opt6
|
||||
;;
|
||||
esac
|
||||
@ -1,13 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# Import Current Theme
|
||||
DIR="$HOME/.config/i3"
|
||||
STYLE="onedark"
|
||||
RASI="$DIR/themes/$STYLE/rofi/runner.rasi"
|
||||
|
||||
# Run
|
||||
rofi \
|
||||
-show run \
|
||||
-theme ${RASI}
|
||||
@ -1,142 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# Import Current Theme
|
||||
DIR="$HOME/.config/i3"
|
||||
STYLE="onedark"
|
||||
RASI="$DIR/themes/$STYLE/rofi/screenshot.rasi"
|
||||
|
||||
# Theme Elements
|
||||
prompt='Screenshot'
|
||||
mesg="Directory :: `xdg-user-dir PICTURES`/Screenshots"
|
||||
|
||||
# Options
|
||||
layout=`cat ${RASI} | grep 'USE_ICON' | cut -d'=' -f2`
|
||||
if [[ "$layout" == 'NO' ]]; then
|
||||
option_1=" Capture Desktop"
|
||||
option_2=" Capture Area"
|
||||
option_3=" Capture Window"
|
||||
option_4=" Capture in 5s"
|
||||
option_5=" Capture in 10s"
|
||||
else
|
||||
option_1=""
|
||||
option_2=""
|
||||
option_3=""
|
||||
option_4=""
|
||||
option_5=""
|
||||
fi
|
||||
|
||||
# Rofi CMD
|
||||
rofi_cmd() {
|
||||
rofi -dmenu \
|
||||
-p "$prompt" \
|
||||
-mesg "$mesg" \
|
||||
-markup-rows \
|
||||
-theme ${RASI}
|
||||
}
|
||||
|
||||
# Pass variables to rofi dmenu
|
||||
run_rofi() {
|
||||
echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5" | rofi_cmd
|
||||
}
|
||||
|
||||
# Screenshot
|
||||
time=`date +%Y-%m-%d-%H-%M-%S`
|
||||
geometry=`xrandr | grep 'current' | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current'`
|
||||
dir="`xdg-user-dir PICTURES`/Screenshots"
|
||||
file="Screenshot_${time}_${geometry}.png"
|
||||
|
||||
# Directory
|
||||
if [[ ! -d "$dir" ]]; then
|
||||
mkdir -p "$dir"
|
||||
fi
|
||||
|
||||
# notify and view screenshot
|
||||
notify_view() {
|
||||
notify_cmd_shot='dunstify -u low -h string:x-dunst-stack-tag:obscreenshot -i /usr/share/archcraft/icons/dunst/picture.png'
|
||||
${notify_cmd_shot} "Copied to clipboard."
|
||||
paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga &>/dev/null &
|
||||
viewnior ${dir}/"$file"
|
||||
if [[ -e "$dir/$file" ]]; then
|
||||
${notify_cmd_shot} "Screenshot Saved."
|
||||
else
|
||||
${notify_cmd_shot} "Screenshot Deleted."
|
||||
fi
|
||||
}
|
||||
|
||||
# Copy screenshot to clipboard
|
||||
copy_shot () {
|
||||
tee "$file" | xclip -selection clipboard -t image/png
|
||||
}
|
||||
|
||||
# countdown
|
||||
countdown () {
|
||||
for sec in `seq $1 -1 1`; do
|
||||
dunstify -t 1000 -h string:x-dunst-stack-tag:screenshottimer -i /usr/share/archcraft/icons/dunst/timer.png "Taking shot in : $sec"
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
# take shots
|
||||
shotnow () {
|
||||
cd ${dir} && sleep 0.5 && maim -u -f png | copy_shot
|
||||
notify_view
|
||||
}
|
||||
|
||||
shot5 () {
|
||||
countdown '5'
|
||||
sleep 1 && cd ${dir} && maim -u -f png | copy_shot
|
||||
notify_view
|
||||
}
|
||||
|
||||
shot10 () {
|
||||
countdown '10'
|
||||
sleep 1 && cd ${dir} && maim -u -f png | copy_shot
|
||||
notify_view
|
||||
}
|
||||
|
||||
shotwin () {
|
||||
cd ${dir} && maim -u -f png -i `xdotool getactivewindow` | copy_shot
|
||||
notify_view
|
||||
}
|
||||
|
||||
shotarea () {
|
||||
cd ${dir} && maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l | copy_shot
|
||||
notify_view
|
||||
}
|
||||
|
||||
# Execute Command
|
||||
run_cmd() {
|
||||
if [[ "$1" == '--opt1' ]]; then
|
||||
shotnow
|
||||
elif [[ "$1" == '--opt2' ]]; then
|
||||
shotarea
|
||||
elif [[ "$1" == '--opt3' ]]; then
|
||||
shotwin
|
||||
elif [[ "$1" == '--opt4' ]]; then
|
||||
shot5
|
||||
elif [[ "$1" == '--opt5' ]]; then
|
||||
shot10
|
||||
fi
|
||||
}
|
||||
|
||||
# Actions
|
||||
chosen="$(run_rofi)"
|
||||
case ${chosen} in
|
||||
$option_1)
|
||||
run_cmd --opt1
|
||||
;;
|
||||
$option_2)
|
||||
run_cmd --opt2
|
||||
;;
|
||||
$option_3)
|
||||
run_cmd --opt3
|
||||
;;
|
||||
$option_4)
|
||||
run_cmd --opt4
|
||||
;;
|
||||
$option_5)
|
||||
run_cmd --opt5
|
||||
;;
|
||||
esac
|
||||
@ -1,50 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
|
||||
|
||||
# Import Current Theme
|
||||
DIR="$HOME/.config/i3"
|
||||
STYLE="onedark"
|
||||
RASI="$DIR/themes/$STYLE/rofi/themes.rasi"
|
||||
|
||||
# List Available Themes
|
||||
THEMES=(`cd $DIR/themes && ls -d */ | cut -d '/' -f1`)
|
||||
|
||||
# Theme Elements
|
||||
prompt="Themes"
|
||||
mesg="<b>Available Themes</b> : `cd $DIR/themes && ls -d */ | cut -d '/' -f1 | wc -l`"
|
||||
|
||||
# Rofi CMD
|
||||
rofi_cmd() {
|
||||
rofi -dmenu \
|
||||
-p "$prompt" \
|
||||
-mesg "$mesg" \
|
||||
-sep '|' \
|
||||
-markup-rows \
|
||||
-theme ${RASI}
|
||||
}
|
||||
|
||||
# Pass variables to rofi dmenu
|
||||
run_rofi() {
|
||||
echo ${THEMES[@]} | sed 's/ /|/g' | sed 's/$/|/' | sed 's/^/Random||/' | rofi_cmd
|
||||
}
|
||||
|
||||
# Apply Theme
|
||||
apply_theme() {
|
||||
selected="`run_rofi`"
|
||||
current="`cat $DIR/themes/.current`"
|
||||
|
||||
for theme in "${THEMES[@]}"; do
|
||||
if [[ -z "$selected" ]]; then
|
||||
break
|
||||
elif [[ "$selected" == "$theme" ]]; then
|
||||
"$DIR"/themes/"$theme"/apply.sh
|
||||
break
|
||||
elif [[ "$selected" == 'Random' ]]; then
|
||||
"$DIR"/themes/"$current"/random.sh
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
apply_theme && exit 0
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user