2 Commits

Author SHA1 Message Date
oracle 39cfac6073 WIP first draft of terraforming script 2026-07-06 21:06:55 -04:00
oracle 1b3849ccd3 add batman beyond config 2026-05-16 13:01:39 -04:00
42 changed files with 3687 additions and 34 deletions
+164
View File
@@ -0,0 +1,164 @@
[env]
TERM = "xterm-256color"
WINIT_X11_SCALE_FACTOR = "1"
[window]
dynamic_padding = true
decorations = "full"
title = "Alacritty@CachyOS"
opacity = 0.5
decorations_theme_variant = "Dark"
[window.dimensions]
columns = 100
lines = 30
[window.class]
instance = "Alacritty"
general = "Alacritty"
[scrolling]
history = 10000
multiplier = 3
[colors]
draw_bold_text_with_bright_colors = true
[colors.primary]
background = "0x202020"
foreground = "0xD8DEE9"
[colors.normal]
black = "0x3B4252"
red = "0xBF616A"
green = "0xA3BE8C"
yellow = "0xEBCB8B"
blue = "0x81A1C1"
magenta = "0xB48EAD"
cyan = "0x88C0D0"
white = "0xE5E9F0"
[colors.bright]
black = "0x4C566A"
red = "0xBF616A"
green = "0xA3BE8C"
yellow = "0xEBCB8B"
blue = "0x81A1C1"
magenta = "0xB48EAD"
cyan = "0x8FBCBB"
white = "0xECEFF4"
[font]
size = 12
[font.normal]
family = "monospace"
style = "Regular"
[font.bold]
family = "monospace"
style = "Bold"
[font.italic]
family = "monospace"
style = "Italic"
[font.bold_italic]
family = "monospace"
style = "Bold Italic"
[selection]
semantic_escape_chars = ",│`|:\"' ()[]{}<>\t"
save_to_clipboard = true
[cursor]
style = "Block"
vi_mode_style = "None"
unfocused_hollow = true
thickness = 0.15
[mouse]
hide_when_typing = true
[[mouse.bindings]]
mouse = "Middle"
action = "PasteSelection"
[keyboard]
[[keyboard.bindings]]
key = "Paste"
action = "Paste"
[[keyboard.bindings]]
key = "Copy"
action = "Copy"
[[keyboard.bindings]]
key = "L"
mods = "Control"
action = "ClearLogNotice"
[[keyboard.bindings]]
key = "L"
mods = "Control"
mode = "~Vi"
chars = "\f"
[[keyboard.bindings]]
key = "PageUp"
mods = "Shift"
mode = "~Alt"
action = "ScrollPageUp"
[[keyboard.bindings]]
key = "PageDown"
mods = "Shift"
mode = "~Alt"
action = "ScrollPageDown"
[[keyboard.bindings]]
key = "Home"
mods = "Shift"
mode = "~Alt"
action = "ScrollToTop"
[[keyboard.bindings]]
key = "End"
mods = "Shift"
mode = "~Alt"
action = "ScrollToBottom"
[[keyboard.bindings]]
key = "V"
mods = "Control|Shift"
action = "Paste"
[[keyboard.bindings]]
key = "C"
mods = "Control|Shift"
action = "Copy"
[[keyboard.bindings]]
key = "F"
mods = "Control|Shift"
action = "SearchForward"
[[keyboard.bindings]]
key = "B"
mods = "Control|Shift"
action = "SearchBackward"
[[keyboard.bindings]]
key = "C"
mods = "Control|Shift"
mode = "Vi"
action = "ClearSelection"
[[keyboard.bindings]]
key = "Key0"
mods = "Control"
action = "ResetFontSize"
[general]
live_config_reload = true
working_directory = "None"
+68
View File
@@ -0,0 +1,68 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/master/doc/json_schema.json",
"logo": {
//"source": "~/.config/fastfetch/logos/batman-beyond.txt",
//"source": "~/.config/fastfetch/logos/bb.txt",
"source": "~/.config/fastfetch/logos/bb-mid.txt",
"color": {
"1": "#FF0000"
}
},
"display": {
"separator": ": ", // Separator between keys and values
"color": {
"keys": "black", // Key color
"title": "#FF0000" // Title color
},
"key": {
"width": 20, // Aligns keys to this width
"type": "string" // string, icon, both, or none
},
"bar": {
"width": 10, // Width of percentage bars
"char": {
"elapsed": "■", // Character for elapsed portion
"total": "-" // Character for total portion
}
},
"percent": {
"type": 3, // 1=number, 2=bar, 3=both, 9=colored number
"color": {
"green": "green",
"yellow": "light_yellow",
"red": "light_red"
}
}
},
"modules": [
"title",
"separator",
"os",
"host",
"kernel",
"uptime",
"packages",
"shell",
"display",
"de",
"wm",
"wmtheme",
"theme",
"icons",
"font",
"cursor",
"terminal",
"terminalfont",
"cpu",
"gpu",
"memory",
"swap",
"disk",
"localip",
"battery",
"poweradapter",
"locale",
"break",
"colors"
]
}
+109
View File
@@ -0,0 +1,109 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/master/doc/json_schema.json",
"display": {
"key": {
"width": 10
},
"separator": ""
},
"logo": {
"type": "auto",
"source": "~/.config/fastfetch/logos/bb-smaller.txt",
"color": {
"1": "#FF0000"
},
"padding": {
"top": 1,
"left": 1
}
},
"modules": [
"break",
{
"type": "os",
"key": "󰣇 OS",
"keyColor": "#FF0000",
"format": "{name} {version-id}"
},
{
"type": "command",
"key": "󰌽 KER",
"keyColor": "#FF0000",
"text": "echo $(uname -r | cut -d- -f1) $(uname -m)"
},
{
"type": "packages",
"key": "󰏗 PKG",
"keyColor": "#FF0000",
"format": "{all}"
},
{
"type": "localip",
"key": "{icon} IP",
"keyColor": "#FF0000",
"showIPv4": true,
"showPrefixLen": true
},
{
"type": "display",
"key": "{icon} DISP",
"keyColor": "#FF0000",
"compactType": "original-with-refresh-rate"
},
{
"type": "memory",
"key": "󰍛 RAM",
"keyColor": "#FF0000",
"format": "{used} / {total} ({percentage})"
},
{
"type": "disk",
"key": "󰋊 SSD",
"keyColor": "#FF0000",
"folders": "/",
"format": "{size-used} / {size-total} ({size-percentage})"
},
{
"type": "battery",
"key": "{icon} BATT",
"keyColor": "#FF0000",
"percentage": {
"green": "70",
"yellow": "25"
},
"format": "{capacity} [{status}] {time-formatted} rem."
},
{
"type": "wm",
"key": "{icon} WM",
"keyColor": "#FF0000",
"format": "{pretty-name}"
},
{
"type": "terminal",
"key": "󰆍 TERM",
"keyColor": "#FF0000",
"format": "{pretty-name}"
},
{
"type": "shell",
"key": "󰞷 SH",
"keyColor": "#FF0000",
"format": "{pretty-name}"
},
{
"type": "uptime",
"keyColor": "#FF0000",
"key": "󰥔 UP"
},
{
"type": "custom",
"format": "{#1;38;2;255;0;0}COLORS {#1;38;2;0;0;0} {#1;38;2;255;0;0} {#1;38;2;0;128;0} {#1;38;2;128;128;0} {#1;38;2;0;0;255} {#1;38;2;128;0;128} {#1;38;2;0;128;128} {#1;38;2;255;255;255}"
},
{
"type": "custom",
"format": " {#1;38;2;128;128;128} {#1;38;2;255;0;128} {#1;38;2;0;255;0} {#1;38;2;255;255;0} {#1;38;2;0;150;255} {#1;38;2;255;0;255} {#1;38;2;0;255;255} {#1;38;2;128;128;128}"
},
"break"
]
}
+274
View File
@@ -0,0 +1,274 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "auto",
"source": "~/.config/fastfetch/logos/batman-beyond.txt",
"padding": {
"top": 2, // Top padding
"left": 2, // Left padding
"right": 2 // Right padding
},
"color": {
"1": "#FF0000"
}
},
"display": {
"color": {
"keys": "#FF0000"
},
"separator": "",
"constants": [
"─────────────────────────────────────────────────────────", // {$1} - horizontal line for borders
"\u001b[58D", // {$2} - move cursor left 55 columns
"\u001b[58C", // {$3} - move cursor right 55 columns
"\u001b[57C", // {$4} - move cursor right 54 columns
"│" // {$5} - vertical borders
],
"brightColor": false
},
"modules": [
"break",
{
"type": "version",
"key": "╭─────────────┬─{$1}╮\u001b[42D",
"format": "\u001b[1m{#keys} {1} - {2} "
},
{
"type": "os",
"key": "{$5}{#white} 󰣇 \u001b[s{#37}{sysname}\u001b[u\u001b[10C{#30}{#keys}{$5}{$3}{#keys}{$5}{$2}"
},
{
"type": "kernel",
"key": "{$5}{#37} {icon} \u001b[s{#37}Kernel\u001b[u\u001b[10C{#keys}{$5}{$3}{#keys}{$5}{$2}"
},
{
"type": "packages",
"key": "{$5}{#37} {icon}{#white} \u001b[s{#37}Packages{#37} {#red} {#keys}{$5} {$4}{#keys}{$5}{$2}"
},
{
"type": "localip",
"key": "{$5}{#37} {icon}{#white} {#37}Local IP{#37} {#keys}{$5}{$3}{$5}{$2}",
"showIpv4": true,
"showIpv6": false,
"showMac": false,
"showLoop": false,
"showPrefixLen": true,
"showMtu": false,
"showSpeed": true,
"showFlags": false,
"compact": true,
"defaultRouteOnly": false,
"showAllIps": true,
"namePrefix": ""
},
{
"type": "locale",
"key": "{$5}{#37} {icon} {#37}Locale{#37} {#keys}{$5}{$3}{#keys}{$5}{$2}"
},
{
"type": "custom",
"key": "├─────────────┴─{$1}┤", // Bottom border of the entire layout
"format": ""
},
// Hardware section with cyan color theme
{
"type": "custom",
"key": "{$5}{#white}╭────────────┬{$1}╮{#keys}{$5}\u001b[36D",
"format": "{#bright_white} Hardware "
},
{
"type": "board",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Board{#37} {$5}{$4}{$5}{#keys}{$5}{$2}"
},
{
"type": "cpu",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}CPU{#37} {$5}{$4}{$5}{#keys}{$5}{$2}",
"format": "{name} @{freq-max}",
"showPeCoreCount": false
},
{
"type": "gpu",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}GPU{#37} {$5}{$4}{$5}{#keys}{$5}{$2}",
"temp": true,
"showPeCoreCount": false
},
{
"type": "display",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Display{#37} {$5}{$4}{$5}{#keys}{$5}{$2}",
"compactType": "original-with-refresh-rate"
},
{
"type": "custom",
"key": "{$5}{#white}╰────────────┴{$1}╯{#keys}{$5}",
"format": ""
},
{
"type": "custom",
"key": "{$5}{#white}╭────────────┬{$1}╮{#keys}{$5}\u001b[36D",
"format": "{#bright_white} Memory & Storage "
},
{
"type": "memory",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}RAM{#37} {$5}{$4}{$5}{#keys}{$5}{$2}",
// "keyColor": "34",
"percent": {
"type": 3, // 3 = show number + bar + percentage
"green": 30, // <30% is green
"yellow": 70 // 30-70% is yellow, >70% is red
}
},
{
"type": "swap",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}SWAP{#37} {$5}{$4}{$5}{#keys}{$5}{$2}",
// "keyColor": "34",
"percent": {
"type": 3, // 3 = show number + bar + percentage
"green": 30, // <30% is green
"yellow": 70 // 30-70% is yellow, >70% is red
}
},
{
"type": "disk",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Disk{#37} {$5}{$4}{$5}{#keys}{$5}{$2}",
// "keyColor": "34",
"percent": {
"type": 3, // 3 = show number + bar + percentage
"green": 30, // <30% is green
"yellow": 70 // 30-70% is yellow, >70% is red
}
},
{
"type": "battery",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Battery{#37} {$5}{$4}{$5}{#keys}{$5}{$2}"
},
{
"type": "custom",
"key": "{$5}{#white}╰────────────┴{$1}╯{#keys}{$5}",
"format": ""
},
// Desktop section
{
"type": "custom",
"key": "{$5}{#white}╭────────────┬{$1}╮{#keys}{$5}\u001b[36D",
"format": "{#bright_white} Desktop "
},
{
"type": "de",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Desktop{#37} {$5}{$4}{$5}{#keys}{$5}{$2}",
"slowVersionDetection": false
},
{
"type": "wm",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Session{#37} {$5}{$4}{$5}{#keys}{$5}{$2}",
"detectPlugin": false
},
{
"type": "font",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Font{#37} {$5}{$4}{$5}{#keys}{$5}{$2}"
},
{
"type": "lm",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Greeter{#37} {$5}{$4}{$5}{#keys}{$5}{$2}"
},
{
"type": "custom",
"key": "{$5}{#white}╰────────────┴{$1}╯{#keys}{$5}",
"format": ""
},
// Terminal section
{
"type": "custom",
"key": "{$5}{#white}╭────────────┬{$1}╮{#keys}{$5}\u001b[37D",
"format": "{#bright_white} Terminal "
},
{
"type": "terminal",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Term{#37} {$5}{$4}{$5}{#keys}{$5}{$2}"
},
{
"type": "shell",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Shell{#37} {$5}{$4}{$5}{#keys}{$5}{$2}"
},
{
"type": "terminalfont",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Font{#37} {$5}{$4}{$5}{#keys}{$5}{$2}"
},
// {
// "type": "terminaltheme",
// "key": "{$5}{#white}{$5}{#37}{icon} {#37}Colors{#37} {$5}{$4}{$5}{#keys}{$5}{$2}"
// },
{
"type": "custom",
"key": "{$5}{#white}╰────────────┴{$1}╯{#keys}{$5}",
"format": ""
},
{
"type": "custom",
"key": "{$5}{#white}╭────────────┬{$1}╮{#keys}{$5}\u001b[36D",
"format": "{#bright_white} Uptime "
},
{
"type": "uptime",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Uptime{#37} {$5}{$4}{$5}{#keys}{$5}{$2}"
},
{
"type": "datetime",
"key": "{$5}{#white}{$5} {#37}{icon} {#37}Fetched{#37} {$5}{$4}{$5}{#keys}{$5}{$2}",
"format": "{day-pretty}-{month-pretty}-{year} {hour-pretty}:{minute-pretty}:{second-pretty} {timezone-name}"
},
//{
// "condition": { // Conditional module: only show on non-macOS
// "!system": "macOS"
// },
// "type": "disk",
// "key": "{$5}{#white}{$5} OS Age {$5}{$4}{$5}{#keys}{$5}{$2}",
// "folders": "/", // Check root filesystem
// "format": "{create-time:10} [{days} days]" // Show creation time and age in days
//},
//{
// "condition": { // Conditional module: only show on macOS
// "system": "macOS"
// },
// "type": "disk",
// "key": "{$5}{#white}{$5} OS Age {$5}{$4}{$5}{#keys}{$5}{$2}",
// "folders": "/System/Volumes/VM", // Work around for APFS on macOS
// "format": "{create-time:10} [{days} days]"
//},
//{
// "type": "users",
// "myselfOnly": true, // Only show current user
// "key": "{$5}{#white}{$5} Login {$5}{$4}{$5}{#keys}{$5}{$2}"
//
//},
{
"type": "custom",
"key": "{$5}{#white}╰────────────┴{$1}╯{#keys}{$5}",
"format": ""
},
{
"type": "custom",
"key": "{$5} {$3} {$5}{$2}",
"format":" {#1;48;2;0;0;0} {#1;48;2;255;0;0} {#1;48;2;0;128;0} {#1;48;2;128;128;0} {#1;48;2;0;0;255} {#1;48;2;128;0;128} {#1;48;2;0;128;128} {#1;48;2;255;255;255} "
//"format":" {#1;48;2;0;0;0}{#1;38;2;255;0;0}{#1;38;2;0;128;0}{#1;38;2;128;128;0}{#1;38;2;0;0;255}{#1;38;2;128;0;128}{#1;38;2;0;128;128}{#1;38;2;255;255;255}"
//"format":" {#black} {#white}  {#red}  {#yellow}  {#green}  {#blue}  {#cyan}  {#magenta} "
//"format":" {#black} {#white}  {#red}  {#yellow}  {#green}  {#blue}  {#cyan}  {#magenta} "
//"format":" {#black} {#white}  {#red}  {#yellow}  {#green}  {#blue}  {#cyan}  {#magenta} "
//"format":" {#black}󰭟 {#white} 󰭟 {#red} 󰭟 {#yellow} 󰭟 {#green} 󰭟 {#blue} 󰭟 {#cyan} 󰭟 {#magenta} 󰭟"
},
{
"type": "custom",
"key": "{$5} {$3} {$5}{$2}",
"format":" {#1;48;2;128;128;128} {#1;48;2;255;0;128} {#1;48;2;0;255;0} {#1;48;2;255;255;0} {#1;48;2;0;150;255} {#1;48;2;255;0;255} {#1;48;2;0;255;255} {#1;48;2;128;128;128} "
},
{
"type": "custom",
"key": "╰───────────────{$1}╯", // Bottom border of the entire layout
"format": ""
}
]
}
+28
View File
@@ -0,0 +1,28 @@
$1 +## -##
$1 ###### +#####
$1 ######### #########:
$1 =############: #############
$1 ################= ################
$1 #################* ##################
$1 :################ #################
$1 ################ ################-
$1 ################ # # +###############
$1 ###############* ## ## =###############
$1 ################ ### ###+ ################-
$1 *################ ############ #################
$1 ################# ############ ##################
$1 :################## =############ +##################
$1 #################### ############## *####################
$1 #########################################################*
$1 ##############################################-
$1 ######################################:
$1 ################################
$1 ##########################+
$1 ######################:
$1 ##################-
$1 -###############
$1 ############
$1 =#########
$1 ######=
$1 ####
$1 ##
+20
View File
@@ -0,0 +1,20 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%@@@@@@@@@@@@@@@@@@@@@@@@@@@ * + @@@@@@@@@@@@@@@@@@@@@@@@@@@%
-@@@@@@@@@@@@@@@@@@@@@@@@@ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@-
@@@@@@@@@@@@@@@@@@@@@@@@+ :@@@@@@ =@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:
=@@@@@@@@@@@@@@@@@@=
@@@@@@@@@@@@
@@@@@@@@
@@@@
@@
:
+24
View File
@@ -0,0 +1,24 @@
$1 ### ###
$1 ###### ######
$1 ######## ########
$1 ########## ##########
$1 ############ ############
$1 ############ ############
$1 ########### # # ###########
$1 ########### ## ## ###########
$1 ########### ###### ###########
$1 ########### ######## ###########
$1 ########### ########## ############
$1 ############################################
$1 ##########################################
$1 ##################################
$1 ##########################
$1 ####################
$1 ################
$1 ############
$1 #########
$1 ######
$1 ####
$1 ##
$1
$1
+14
View File
@@ -0,0 +1,14 @@
$1 # #
$1 ### ###
$1 ##### #####
$1 ###### ######
$1 ##### # # #####
$1 ###### ### ######
$1 ####### ####### #######
$1 #####################
$1 #############
$1 #########
$1 #####
$1 ###
$1 #
$1
+19
View File
@@ -0,0 +1,19 @@
$1 # #
$1 ### ###
$1 ###### ######
$1 ######## ########
$1 ######### #########
$1 ######## # # #########
$1 ######### ##### #########
$1 ######## ##### ########
$1 ######### ####### #########
$1 ###################################
$1 #############################
$1 #####################
$1 ###############
$1 ###########
$1 #######
$1 #####
$1 ###
$1 #
$1
+31
View File
@@ -0,0 +1,31 @@
#-
#-
##########-
####++++++#------####
-##+++++++++++#----------###
##++++++++++++++#-------------##+
##++++++++++++++++#---------------##-
##+++++++++++++++++#-----------------## -
-#+++++++++++++++++++#------------------###+
+#++++++++++++++++++++#-------------------##+
#+++++++++++++++++++++#------------------####-
##+++++++++++++++++++++#--------------#########
#++++++++++++++++++++++#----------##########--#+
##++++++++++++++++++++++#--------#### ###--#+
##++++++++++++++++++++++------#### ###---##
##########################++---#### ############-
##++++++++++++++++++++++-----### -###----##
##++++++++++++++++++++++#------### #####-----#+
#++++++++++++++++++++++#-------########------##-
##+++++++++++++++++++++#---------------------##
##++++++++++++++++++++#--------------------##-
##+++++++++++++++++++#-------------------##-
##++++++++++++++++++#------------------##-
##++++++++++++++++#----------------##+
###++++++++++++++#--------------###-
-##++++++++++++#------------###-
####++++++++#--------####+
-+################+-
-+#+--
#-
+-
+17
View File
@@ -0,0 +1,17 @@
󰫍
󰭟
+40
View File
@@ -0,0 +1,40 @@
@@@@ @@@@
@@@@@@@@@@ @@@@@@@@@@
@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@
@ @@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @
@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@@@@
@@ @@@@@@@@@@@@@@@@@@@@@@ @@
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@
@@@@@@@@@@@@
@@@@@@@@
@@@@@
@@
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
# ====================================================================
# auth: alex
# file: .alias
# revn: 04-19-2026 2.0
# func: define useful fish aliases
#
# TODO: make boom more robust (scp, etc)
# ====================================================================
# r au mm-dd-yyyy: CHANGE LOG
# --------------------------------------------------------------------
# ac 04-??-2026: init
# ac 04-16-2026: added gg alias
# * ac 04-19-2026: added boom alias
# added knight alias
# * ac 04-22-2026: fixed insane ranger/knight bug
#
# ====================================================================
# Useful aliases
# vim assumes tabs instead of buffers
alias vim="vim -p"
# make ranger sound more batman-like
alias knight="ranger"
# boomtube reference
alias boom="ssh"
# shorthand for fastfetch
alias ff="fastfetch"
# forfeit
alias FF="shutdown now"
# good game
alias gg="sudo reboot now"
+136
View File
@@ -0,0 +1,136 @@
## Source from conf.d before our fish config
source /usr/share/cachyos-fish-config/conf.d/done.fish
## Set values
## Run fastfetch as welcome message
function fish_greeting
fastfetch
end
# Format man pages
set -x MANROFFOPT "-c"
set -x MANPAGER "sh -c 'col -bx | bat -l man -p'"
# Set settings for https://github.com/franciscolourenco/done
set -U __done_min_cmd_duration 10000
set -U __done_notification_urgency_level low
## Environment setup
# Apply .profile: use this to put fish compatible .profile stuff in
if test -f ~/.fish_profile
source ~/.fish_profile
end
# Add ~/.local/bin to PATH
if test -d ~/.local/bin
if not contains -- ~/.local/bin $PATH
set -p PATH ~/.local/bin
end
end
# Add depot_tools to PATH
if test -d ~/Applications/depot_tools
if not contains -- ~/Applications/depot_tools $PATH
set -p PATH ~/Applications/depot_tools
end
end
## Functions
# Functions needed for !! and !$ https://github.com/oh-my-fish/plugin-bang-bang
function __history_previous_command
switch (commandline -t)
case "!"
commandline -t $history[1]; commandline -f repaint
case "*"
commandline -i !
end
end
function __history_previous_command_arguments
switch (commandline -t)
case "!"
commandline -t ""
commandline -f history-token-search-backward
case "*"
commandline -i '$'
end
end
if [ "$fish_key_bindings" = fish_vi_key_bindings ];
bind -Minsert ! __history_previous_command
bind -Minsert '$' __history_previous_command_arguments
else
bind ! __history_previous_command
bind '$' __history_previous_command_arguments
end
# Fish command history
function history
builtin history --show-time='%F %T '
end
function backup --argument filename
cp $filename $filename.bak
end
# Copy DIR1 DIR2
function copy
set count (count $argv | tr -d \n)
if test "$count" = 2; and test -d "$argv[1]"
set from (echo $argv[1] | trim-right /)
set to (echo $argv[2])
command cp -r $from $to
else
command cp $argv
end
end
# Replace ls with eza
alias ls='eza -al --color=always --group-directories-first --icons' # preferred listing
alias la='eza -a --color=always --group-directories-first --icons' # all files and dirs
alias ll='eza -abl --color=always --icons --git' # long format
alias lt='eza -aT --color=always --group-directories-first --icons' # tree listing
alias l.="eza -a | grep -e '^\.'" # show only dotfiles
# Common use
alias grubup="sudo grub-mkconfig -o /boot/grub/grub.cfg"
alias fixpacman="sudo rm /var/lib/pacman/db.lck"
alias tarnow='tar -acf '
alias untar='tar -zxvf '
alias wget='wget -c '
alias psmem='ps auxf | sort -nr -k 4'
alias psmem10='ps auxf | sort -nr -k 4 | head -10'
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias ......='cd ../../../../..'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias hw='hwinfo --short' # Hardware Info
alias big="expac -H M '%m\t%n' | sort -h | nl" # Sort installed packages according to size in MB
alias gitpkg='pacman -Q | grep -i "\-git" | wc -l' # List amount of -git packages
alias update='sudo pacman -Syu'
# Get fastest mirrors
alias mirror="sudo cachyos-rate-mirrors"
# Help people new to Arch
alias apt='man pacman'
alias apt-get='man pacman'
alias please='sudo'
alias tb='nc termbin.com 9999'
# Cleanup orphaned packages
alias cleanup='sudo pacman -Rns (pacman -Qtdq)'
# Get the error messages from journalctl
alias jctl="journalctl -p 3 -xb"
# Recent installed packages
alias rip="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -200 | nl"
+25
View File
@@ -0,0 +1,25 @@
# source default* settings
source /usr/share/cachyos-fish-config/cachyos-config.fish
# scripst for polybar
source ~/.config/fish/functions/inc_brightness.fish
source ~/.config/fish/functions/dec_brightness.fish
source ~/.config/fish/functions/get_volume.fish
# bluetooth connect function
source ~/.config/fish/functions/bt.fish
# do not load default ranger config
set RANGER_LOAD_DEFAULT_RC FALSE
# source aliases
if test -f ~/.config/fish/.alias
source ~/.config/fish/.alias
end
# overwrite greeting
# potentially disabling fastfetch
function fish_greeting
# smth smth
fastfetch --config bb-large.jsonc
end
+77
View File
@@ -0,0 +1,77 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __done_min_cmd_duration:10000
SETUVAR __done_notification_urgency_level:low
SETUVAR __fish_initialized:4300
SETUVAR pure_begin_prompt_with_current_directory:true
SETUVAR pure_check_for_new_release:false
SETUVAR pure_color_at_sign:pure_color_mute
SETUVAR pure_color_aws_profile:pure_color_warning
SETUVAR pure_color_command_duration:pure_color_warning
SETUVAR pure_color_current_directory:pure_color_primary
SETUVAR pure_color_danger:red
SETUVAR pure_color_dark:black
SETUVAR pure_color_exit_status:pure_color_danger
SETUVAR pure_color_git_branch:pure_color_mute
SETUVAR pure_color_git_dirty:pure_color_mute
SETUVAR pure_color_git_stash:pure_color_info
SETUVAR pure_color_git_unpulled_commits:pure_color_info
SETUVAR pure_color_git_unpushed_commits:pure_color_info
SETUVAR pure_color_hostname:pure_color_mute
SETUVAR pure_color_info:cyan
SETUVAR pure_color_jobs:pure_color_normal
SETUVAR pure_color_k8s_context:pure_color_success
SETUVAR pure_color_k8s_namespace:pure_color_primary
SETUVAR pure_color_k8s_prefix:pure_color_info
SETUVAR pure_color_light:white
SETUVAR pure_color_mute:brblack
SETUVAR pure_color_nixdevshell_prefix:pure_color_info
SETUVAR pure_color_nixdevshell_symbol:pure_color_mute
SETUVAR pure_color_normal:normal
SETUVAR pure_color_prefix_root_prompt:pure_color_danger
SETUVAR pure_color_primary:blue
SETUVAR pure_color_prompt_on_error:pure_color_danger
SETUVAR pure_color_prompt_on_success:pure_color_success
SETUVAR pure_color_success:magenta
SETUVAR pure_color_system_time:pure_color_mute
SETUVAR pure_color_username_normal:pure_color_mute
SETUVAR pure_color_username_root:pure_color_light
SETUVAR pure_color_virtualenv:pure_color_mute
SETUVAR pure_color_warning:yellow
SETUVAR pure_convert_exit_status_to_signal:false
SETUVAR pure_enable_aws_profile:true
SETUVAR pure_enable_container_detection:true
SETUVAR pure_enable_git:true
SETUVAR pure_enable_k8s:false
SETUVAR pure_enable_nixdevshell:false
SETUVAR pure_enable_single_line_prompt:false
SETUVAR pure_enable_virtualenv:true
SETUVAR pure_reverse_prompt_symbol_in_vimode:true
SETUVAR pure_separate_prompt_on_error:false
SETUVAR pure_shorten_prompt_current_directory_length:0
SETUVAR pure_shorten_window_title_current_directory_length:0
SETUVAR pure_show_exit_status:false
SETUVAR pure_show_jobs:false
SETUVAR pure_show_numbered_git_indicator:false
SETUVAR pure_show_prefix_root_prompt:false
SETUVAR pure_show_subsecond_command_duration:false
SETUVAR pure_show_system_time:false
SETUVAR pure_symbol_aws_profile_prefix:
SETUVAR pure_symbol_container_prefix:
SETUVAR pure_symbol_exit_status_prefix:\x7c
SETUVAR pure_symbol_exit_status_separator:\x7c
SETUVAR pure_symbol_git_dirty:\x2a
SETUVAR pure_symbol_git_stash:\u2261
SETUVAR pure_symbol_git_unpulled_commits:\u21e3
SETUVAR pure_symbol_git_unpushed_commits:\u21e1
SETUVAR pure_symbol_k8s_prefix:\u2638
SETUVAR pure_symbol_nixdevshell_prefix:\u2744\ufe0f
SETUVAR pure_symbol_prefix_root_prompt:\x23
SETUVAR pure_symbol_prompt:\u276f
SETUVAR pure_symbol_reverse_prompt:\u276e
SETUVAR pure_symbol_ssh_prefix:
SETUVAR pure_symbol_title_bar_separator:\x2d
SETUVAR pure_symbol_virtualenv_prefix:
SETUVAR pure_threshold_command_duration:5
SETUVAR pure_truncate_prompt_current_directory_keeps:\x2d1
SETUVAR pure_truncate_window_title_current_directory_keeps:\x2d1
+19
View File
@@ -0,0 +1,19 @@
#!/bin/fish
function m50x
set -l mac "00:0A:45:44:82:12"
set -l conn $( bluetoothctl devices Connected )
if test -z $conn
if bluetoothctl connect $mac > /dev/null
echo "Connection successful"
end
else
if bluetoothctl disconnect > /dev/null
echo "Disconnection successful"
end
end
end
@@ -0,0 +1,15 @@
#!/bin/fish
function dec_brightness
brightnessctl -q set 5%-
set -f cur ( brightnessctl get )
set -f max ( brightnessctl max )
set -f ret ( math -s0 "100 * $cur / $max" )
#echo $ret > /tmp/xobpipe
echo $ret
end
+15
View File
@@ -0,0 +1,15 @@
#!/bin/fish
function get_volume
if string match --regex '\[off\]' $(amixer sset Master toggle) 1>/dev/null
set -f ret $( pamixer --get-volume | sed 's/$/!/' )
else
set -f ret $( pamixer --get-volume )
end
#echo $ret > /tmp/xobpipe
echo $ret
end
@@ -0,0 +1,15 @@
#!/bin/fish
function inc_brightness
brightnessctl -q set +5%
set -f cur ( brightnessctl get )
set -f max ( brightnessctl max )
set -f ret ( math -s0 "100 * $cur / $max" )
#echo $ret > /tmp/xobpipe
echo $ret
end
+9
View File
@@ -0,0 +1,9 @@
#!/bin/fish
function qd
set -l x ( pgrep -i "discord" | head -n1 )
if test $status -eq 0
kill $x
end
end
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
i3lock -i ~/Downloads/bb.jpeg --verif-text="" --ring-color=ff000030 --ringver-color=00000000 --insidever-color=00000000 --keyhl-color=00000090 --bshl-color=666666ff --time-pos="ix:iy+150" --noinput-text=""
+236
View File
@@ -0,0 +1,236 @@
set $mod Mod4
#font-5 = "batman logo evolution tfb:style=Regular:pixelsize=25;3"
font pango:batman logo evolution tfb 9
#font pango:Hack 9
floating_modifier $mod
# start a terminal
set $term alacritty
bindsym $mod+Return exec $term
# kill focused window
bindsym $mod+q kill
# start dmenu (a program launcher)
#bindsym ctrl+space exec rofi -show run
bindsym ctrl+shift+space exec "rofi -show combi -display-combi batcave -modi window,run,combi -combi-modi window,run"
#bindsym ctrl+space exec dmenu_run
# 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
# 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
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
bindsym $mod+t split toggle
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
bindsym $mod+Shift+w sticky toggle
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# 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
# 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
# same bindings, but for the arrow keys
bindsym Left resize shrink width 5 px or 5 ppt
bindsym Down resize grow height 5 px or 5 ppt
bindsym Up resize shrink height 5 px or 5 ppt
bindsym Right resize grow width 5 px or 5 ppt
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
#
# Status Bar:
#
exec_always --no-startup-id ~/.config/polybar/launch.sh
# class border backgr. text indicator child_border
client.focused #000000 #000000 #ffffff #000000 #000000
client.focused_inactive #000000 #000000 #ffffff #000000 #000000
client.unfocused #000000 #000000 #888888 #000000 #000000
client.urgent #000000 #000000 #ffffff #000000 #000000
client.placeholder #000000 #000000 #ffffff #000000 #000000
client.background #ffffff
########################################################################
########################################################################
####
#### Workplaces layout
####
########################################################################
########################################################################
exec --no-startup-id "i3-msg 'workspace 1; exec alacritty'"
########################################################################
########################################################################
####
#### Floated windows
####
########################################################################
########################################################################
for_window [title="Calculator"] floating enable
for_window [title="Timer"] floating enable
for_window [class="^.*"] border pixel 1
for_window [class="librewolf"] border none
for_window [class="firefox"] border none
for_window [class="mpv"] floating enable
for_window [class="imv"] floating enable
for_window [class="zenity"] floating enable
for_window [class="cachyos-welcome"] floating enable
########################################################################
########################################################################
####
#### HOTKEYS
####
########################################################################
########################################################################
bindsym XF86AudioRaiseVolume exec "pamixer -ui 3 && pamixer --get-volume > /tmp/xobpipe"
bindsym XF86AudioLowerVolume exec "pamixer -ud 3 && pamixer --get-volume > /tmp/xobpipe"
# mute sound
#bindsym XF86AudioMute exec "amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > /tmp/xobpipe"
bindsym XF86AudioMute exec "amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*\[([0-9]+)%\].*/\1!/ p' | head -1 > /tmp/xobpipe"
# change screen brightness
#bindsym XF86MonBrightnessUp exec --no-startup-id "inc_brightness > /tmp/xobpipe"
bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5%
#bindsym XF86MonBrightnessDown exec --no-startup-id "dec_brightness > /tmp/xobpipe"
bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%-
bindsym $mod+Shift+p exec gnome-calculator
#bindsym $mod+p exec ~/.scripts/dmshot
## This will switch the current layout to the 'us'.
#bindsym $mod+l exec "setxkbmap -layout us && sleep 0.1 && setxkbmap -option grp:caps_toggle 'us,ru' -option grp_led:caps && sleep 0.1 && i3lock --blur 5"
## This keybind will lock the screen. The lockscreen.
bindsym $mod+Escape exec "sleep 0.1 && ~/.config/i3/i3lock_updated.sh"
bindsym $mod+Shift+Escape exec "sleep 0.1 && ~/.config/i3/batlock.sh"
#exec --no-startup-id xautolock -time 20 -locker "systemctl suspend"
########################################################################
########################################################################
####
#### AUTOLOAD
####
########################################################################
########################################################################
## Here is a language switcher by pressing capslock button,
## and the capslock functionality available by using shift+capslock.
## Uncomment to enable 'us' to/from 'ru' switch. change to language(s) you prefer more.
#exec_always setxkbmap -option grp:caps_toggle "us,ru" -option "grp:caps_toggle,grp_led:caps"
exec xrandr --output HDMI-1 --mode 1920x1080 --rate 60 --scale 1x1
#exec xrandr --auto --output HDMI-1 --mode 1920x1080 --above HDMI-2
#exec_always --no-startup-id killall back4.sh
#exec_always --no-startup-id $HOME/back4.sh ~/Downloads/bb-wp.gif
#exec feh --bg-fill ~/.config/i3/wallpaper.png
exec feh --bg-fill ~/Downloads/bb.jpeg
exec --no-startup-id dunst
exec --no-startup-id picom
exec --no-startup-id redshift
exec --no-startup-id dex -a -s /etc/xdg/autostart/:~/.config/autostart/
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec_always mkfifo /tmp/xobpipe && tail -f /tmp/xobpipe | xob -t 2170 & disown
#exec ~/.i3/launch.sh
# EXEC
exec firefox
assign [class="firefox"] $ws2
exec snapchat
assign [class="Snapchat"] $ws3
exec discord
assign [class="discord"] $ws10
+1
View File
@@ -0,0 +1 @@
i3lock -kB5 --verif-text="" --ring-color=ff000030 --ringver-color=00000000 --insidever-color=00000000 --keyhl-color=00000090 --bshl-color=666666ff --time-pos="ix:iy+150" --indicator --noinput-text=""
Binary file not shown.

After

Width:  |  Height:  |  Size: 541 KiB

+339
View File
@@ -0,0 +1,339 @@
;==========================================================
;
;
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
;
;
; To learn more about how to configure Polybar
; go to https://github.com/polybar/polybar
;
; The README contains a lot of information
;
;==========================================================
[colors]
background = #FF0000
background-alt = #000000
foreground = #000000
foreground-alt = #FF0000
primary = #00FF00
secondary = #0000FF
alert = #FF0000
white = #FFFFFF
[bar/example]
monitor = ${env:MONITOR:}
width = 100%
height = 22
radius = 9.0
fixed-center = true
top = yes
bottom = no
override-redirect = false
foreground = ${colors.foreground-alt}
background = ${colors.background-alt}
; Under-/overline pixel size and argb color
; Individual values can be defined using:
; {overline,underline}-size
; {overline,underline}-color
line-size = 1
line-color = #dfdfdf
border-top-size = 0
border-bottom-size = 0
border-left-size = 0
border-right-size = 0
padding-left = 0
padding-right = 0
module-margin-left = 0
module-margin-right = 0
font-0 = Hack:pixelsize=9;3
font-2 = "Wuncon Siji:pixelsize=10;3"
font-1 = Weather Icons:style=Regular:size=10;2
font-3 = FontAwesome5Free:style=Solid:pixelsize=10;3
font-4 = FontAwesome5Brands:style=Solid:pixelsize=10;3
font-5 = "batman logo evolution tfb:style=Regular:pixelsize=25;3"
font-6 = "Material Design Icons:style=Regular:pixelsize=15;3"
modules-left = i3 sp0
modules-right = network sp1 battery sp2 temp sp1 linux-ver sp2 date sp2
;modules-right = volume sp1 network sp1 battery sp2 temp sp1 linux-ver sp2 date sp2
modules-center = bb
tray-position = right
tray-padding = 0
tray-detached = false
tray-maxsize = 14
tray-scale = 1.0
tray-background = ${colors.background-alt}
tray-foreground = ${colors.foreground-alt}
tray-offset-x = 0
tray-offset-y = 0
wm-restack = i3
scroll-up = #i3.next
scroll-down = #i3.prev
cursor-click = pointer
[module/sp0]
type = custom/text
content = "| "
content-foreground = #93A1A1
content-background = ${colors.background-alt}
[module/sp1]
type = custom/text
content = " | "
content-foreground = #93A1A1
content-background = ${colors.background-alt}
[module/sp2]
type = custom/text
content = " |"
content-foreground = #93A1A1
content-background = ${colors.background-alt}
[module/bb]
type = custom/text
label = %{T6}O%{T-}
click-left = sleep 0.1 && i3lock -i ~/Downloads/bb.jpeg -F --verif-text="" --ring-color=ff000030 --ringver-color=00000000 --insidever-color=00000000 --keyhl-color=00000090 --bshl-color=666666ff --time-pos="ix:iy+150" --noinput-text=""
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
index-sort = true
wrapping-scroll = false
strip-wsnumbers = false
enable-click = false
enable-scroll = false
label-mode = %mode%
label-mode-padding = 1
label-mode-foreground = ${colors.foreground-alt}
label-mode-background = ${colors.background-alt}
; focused = Active workspace on focused monitor
label-focused = %index%
label-focused-foreground = ${colors.foreground}
label-focused-background = ${colors.background}
label-focused-underline = ${colors.foreground-alt}
label-focused-padding = 1
; unfocused = Inactive workspace on any monitor
label-unfocused = %index%
label-unfocused-padding = ${self.label-focused-padding}
label-unfocused-foreground = ${colors.foreground-alt}
label-unfocused-background = ${colors.background-alt}
; visible = Active workspace on unfocused monitor
label-visible = %index%
label-visible-foreground = ${self.label-focused-background}
label-visible-background = ${self.label-focused-foreground}
label-visible-underline = ${self.label-focused-underline}
label-visible-padding = ${self.label-focused-padding}
; urgent = Workspace with urgency hint set
label-urgent = %index%
label-urgent-foreground = ${colors.foreground}
label-urgent-background = ${colors.alert}
label-urgent-padding = 1
; Separator in between workspaces
label-separator =
label-separator-padding = 0
label-separator-foreground = #fff
[module/linux-ver]
type = custom/script
exec = uname -r
interval = 600
[module/battery]
type = internal/battery
full-at = 85
low-at = 10
battery = BAT0
adapter = AC
poll-interval = 5
format-discharging = <label-discharging> <ramp-capacity>
label-discharging = %percentage%%
ramp-capacity-0 = 󰁺
ramp-capacity-0-foreground = #FFFFFF
ramp-capacity-1 = 󰁻
ramp-capacity-1-foreground = #FFFFFF
ramp-capacity-2 = 󰁼
ramp-capacity-2-foreground = #FFFFFF
ramp-capacity-3 = 󰁽
ramp-capacity-3-foreground = #FFFFFF
ramp-capacity-4 = 󰁾
ramp-capacity-4-foreground = #FFFFFF
ramp-capacity-5 = 󰁿
ramp-capacity-5-foreground = #FFFFFF
ramp-capacity-6 = 󰂀
ramp-capacity-6-foreground = #FFFFFF
ramp-capacity-7 = 󰂁
ramp-capacity-7-foreground = #FFFFFF
ramp-capacity-8 = 󰂂
ramp-capacity-8-foreground = #FFFFFF
ramp-capacity-9 = 󰁹
ramp-capacity-9-foreground = #FFFFFF
format-charging = <label-charging> <animation-charging>
label-charging = %percentage%%
animation-charging-0 = 󰢜
animation-charging-0-foreground = #FFFFFF
animation-charging-1 = 󰂆
animation-charging-1-foreground = #FFFFFF
animation-charging-2 = 󰂇
animation-charging-2-foreground = #FFFFFF
animation-charging-3 = 󰂈
animation-charging-3-foreground = #FFFFFF
animation-charging-4 = 󰢝
animation-charging-4-foreground = #FFFFFF
animation-charging-5 = 󰂉
animation-charging-5-foreground = #FFFFFF
animation-charging-6 = 󰢞
animation-charging-6-foreground = #FFFFFF
animation-charging-7 = 󰂊
animation-charging-7-foreground = #FFFFFF
animation-charging-8 = 󰂋
animation-charging-8-foreground = #FFFFFF
animation-charging-9 = 󰂅
animation-charging-9-foreground = #FFFFFF
animation-charging-framerate = 2000
format-low = <label-low> <animation-low>
label-low = %percentage%%
animation-low-0 = 󱃍
animation-low-1 = "%{F#00000000}󱃍%{F-}"
animation-low-framerate = 500
format-full = <label-full>
label-full = %percentage%% %{F#ffffff}󱈏%{F-}
[module/network]
type = internal/network
interface = wlan0
format-connected = <label-connected> <ramp-signal>
label-connected = %essid% %{F#FFFFFF}󰓢%{F-}%netspeed%
ramp-signal-0 = 󰤯
ramp-signal-0-foreground = #FFFFFF
ramp-signal-1 = 󰤟
ramp-signal-1-foreground = #FFFFFF
ramp-signal-2 = 󰤢
ramp-signal-2-foreground = #FFFFFF
ramp-signal-3 = 󰤥
ramp-signal-3-foreground = #FFFFFF
ramp-signal-4 = 󰤨
ramp-signal-4-foreground = #FFFFFF
format-disconnected = <label-disconnected>
label-disconnected = 󰤮
[module/tempy]
type = internal/temperature
interval = 0.5
thermal-zone = 0
zone-type = x86_pkg_temp
hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
base-tempertaure = 25
warn-temperature = 70
units = true
format = <label> <ramp>
format-warn = <label> <ramp>
label = %temperature-f%
label-foreground = #FF0000
label-warn = %temperature-f%
label-warn-foreground = #FF0000
ramp-0 = 󱃃
ramp-1 = 󰔏
ramp-2 = 󱃂
ramp-3 = 󰸁
ramp-foreground = #FFFFFF
[module/temp]
type = custom/script
format-prefix = ""
exec = ~/.config/polybar/scripts/cpu_temp.sh
label = %output% %{F#FFFFFF}󰔏%{F-}
interval = 0.5
[module/date]
type = internal/date
interval = 1
time = "%a %d %I:%M %P"
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-prefix-background = ${colors.background-alt}
label = %time%
label-foreground = ${colors.foreground-alt}
label-background = ${colors.background-alt}
[module/volume]
type = internal/alsa
; Soundcard to be used
; Usually in the format hw:# where # is the card number
; You can find the different card numbers in `/proc/asound/cards`
master-soundcard = default
speaker-soundcard = default
headphone-soundcard = default
; Name of the master, speaker and headphone mixers
; Use the following command to list available mixer controls:
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
; If master, speaker or headphone-soundcard isn't the default,
; use `amixer -c # scontrols` instead where # is the number
; of the master, speaker or headphone soundcard respectively
;
; Default: Master
master-mixer = Master
format-volume = <label-volume> <ramp-volume>
label-volume = %percentage%%
format-muted = %{F#808080}<label-muted> 󰖁%{F-}
label-muted = %percentage%%
ramp-volume-0 = 󰕿
ramp-volume-0-foreground = #FFFFFF
ramp-volume-1 = 󰖀
ramp-volume-1-foreground = #FFFFFF
ramp-volume-2 = 󰕾
ramp-volume-2-foreground = #FFFFFF
[settings]
throttle-output = 5
throttle-output-for = 10
;throttle-input-for = 30
screenchange-reload = true
compositing-background = over
compositing-foreground = over
compositing-overline = over
compositing-border = over
[global/wm]
margin-top = 5
margin-bottom = 5
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env sh
# Wait for audio
until pactl info >/dev/null 2>&1; do
sleep 0.5
done
# Terminate already running bar instances
killall -q polybar
# Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
# for multimonitor
if type "xrandr"; then
for m in $(xrandr --query | grep " connected" | cut -d" " -f1); do
MONITOR=$m polybar --reload example & disown
done
else
polybar --reload example & disown
fi
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env bash
set -euo pipefail
if ! updates_arch=$(checkupdates 2> /dev/null | wc -l ); then
updates_arch=0
fi
if ! updates_aur=$(paru -Qum | wc -l); then
# if ! updates_aur=$(cower -u 2> /dev/null | wc -l); then
# if ! updates_aur=$(trizen -Su --aur --quiet | wc -l); then
updates_aur=0
fi
updates=$(("$updates_arch" + "$updates_aur"))
#if [ "$updates" -gt 0 ]; then
# echo "# $updates"
#else
# echo ""
#fi
re='^[0-9]+$'
if ! [[ $updates_arch =~ $re ]] ; then
updates_aur=999; exit 1
fi
if ! [[ $updates_arch =~ $re ]] ; then
updates_aur=999; exit 1
fi
echo "P:$updates_arch Y:$updates_aur"
+2
View File
@@ -0,0 +1,2 @@
#awk '{printf " %.1f°F\n", ($1/1000)*9/5+32}' /sys/class/hwmon/hwmon*/temp1_input 2>/dev/null | head -n1
awk '{printf " %.1f°F\n", ($1/1000)*9/5+32; exit}' /sys/class/hwmon/hwmon*/temp1_input 2>/dev/null
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
# not useful unless exec commands can be placed in internal polybar modules
# or I can do the low discharging animation from here
BATRAW=$( cat /sys/class/power_supply/BAT0/capacity )
#STATUS=$( cat /sys/class/power_supply/BAT0/status )
STATUS="Charging"
BATADJ=$(( 9 + 100 * $BATRAW / 80 ))
STEP=$(( $BATADJ / 10 ))
CHARGING=( "󰢜" "󰂆" "󰂇" "󰂈" "󰢝" "󰂉" "󰢞" "󰂊" "󰂋" "󰂄" )
DISCHARGING=( "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" )
if test $STATUS = "Discharging"; then
echo ${DISCHARGING[$STEP]}
elif test $STATUS = "Charging"; then
echo ${CHARGING[$STEP]}
fi
+62
View File
@@ -0,0 +1,62 @@
#!/bin/sh
# shellcheck disable=SC2016,SC2059
KEYBOARD_ID="Keyboard K380 Keyboard"
# cpm: characters per minute
# wpm: words per minute (1 word = 5 characters)
METRIC=cpm
FORMAT="# %d $METRIC"
INTERVAL=20
# If you have a keyboard layout that is not listed here yet, create a condition
# yourself. $3 is the key index. Use `xinput test "AT Translated Set 2 keyboard"`
# to see key codes in real time. Be sure to open a pull request for your
# layout's condition!
LAYOUT=qwerty
case "$LAYOUT" in
qwerty) CONDITION='($3 >= 10 && $3 <= 19) || ($3 >= 24 && $3 <= 33) || ($3 >= 37 && $3 <= 53) || ($3 >= 52 && $3 <= 58)'; ;;
azerty) CONDITION='($3 >= 10 && $3 <= 19) || ($3 >= 24 && $3 <= 33) || ($3 >= 37 && $3 <= 54) || ($3 >= 52 && $3 <= 57)'; ;;
dontcare) CONDITION='1'; ;; # Just register all key presses, not only letters and numbers
*) echo "# Unsupported layout \"$LAYOUT\""; exit 1; ;;
esac
# We have to account for the fact we're not listening a whole minute
multiply_by=60
divide_by=$INTERVAL
case "$METRIC" in
wpm) divide_by=$((divide_by * 5)); ;;
cpm) ;;
*) echo "Unsupported metric \"$METRIC\""; exit 1; ;;
esac
hackspeed_cache="$(mktemp -p '' hackspeed_cache.XXXXX)"
trap 'rm "$hackspeed_cache"' EXIT
# Write a dot to our cache for each key press
printf '' > "$hackspeed_cache"
xinput test "$KEYBOARD_ID" | \
stdbuf -o0 awk '$1 == "key" && $2 == "press" && ('"$CONDITION"') {printf "."}' >> "$hackspeed_cache" &
while true; do
# Ask the kernel how big the file is with the command `stat`. The number we
# get is the file size in bytes, which equals the amount of dots the file
# contains, and hence how much keys were pressed since the file was last
# cleared.
lines=$(stat --format %s "$hackspeed_cache")
# Truncate the cache file so that in the next iteration, we count only new
# keypresses
printf '' > "$hackspeed_cache"
# The shell only does integer operations, so make sure to first multiply and
# then divide
value=$((lines * multiply_by / divide_by))
printf "$FORMAT\\n" "$value"
sleep $INTERVAL
done
+13
View File
@@ -0,0 +1,13 @@
#test-fonts.pl
use strict;
use warnings;
use Font::FreeType;
my ($char) = @ARGV;
foreach my $font_def (`fc-list`) {
my ($file, $name) = split(/: /, $font_def);
my $face = Font::FreeType->new->face($file);
my $glyph = $face->glyph_from_char($char);
if ($glyph) {
print $font_def;
}
}
+88
View File
@@ -0,0 +1,88 @@
#!/usr/bin/env bash
set -euo pipefail
get_icon() {
case $1 in
01d) icon="🟠";;
01n) icon="⚫";;
02d) icon="⛅";;
02n) icon="⛅";;
04d) icon="🌥️";;
04n) icon="🌥️";;
09d) icon="🌧️";;
09n) icon="🌧️";;
10d) icon="🌦️";;
10n) icon="🌦️";;
11d) icon="🌩️";;
11n) icon="🌩️";;
13d) icon="❄️";;
13n) icon="❄️";;
50d) icon="🌫️";;
50n) icon="🌫️";;
*) icon="☁️";
esac
echo $icon
}
get_duration() {
osname=$(uname -s)
case $osname in
*BSD) date -r "$1" -u +%H:%M;;
*) date --date="@$1" -u +%H:%M;;
esac
}
KEY=""
CITY=""
UNITS="metric"
SYMBOL="°"
API="https://api.openweathermap.org/data/2.5"
if [ ! -z $CITY ]; then
if [ "$CITY" -eq "$CITY" ] 2>/dev/null; then
CITY_PARAM="id=$CITY"
else
CITY_PARAM="q=$CITY"
fi
current=$(curl -sf "$API/weather?appid=$KEY&$CITY_PARAM&units=$UNITS")
#curl -s "https://api.openweathermap.org/data/2.5/onecall?lat=0&lon=0&appid=TOKEN&units=metric" | jq -r '.daily[1].temp.day'
forecast=$(curl -sf "$API/forecast?appid=$KEY&$CITY_PARAM&units=$UNITS&cnt=1")
else
location=$(curl -sf https://location.services.mozilla.com/v1/geolocate?key=geoclue)
if [ ! -z "$location" ]; then
location_lat="$(echo "$location" | jq '.location.lat')"
location_lon="$(echo "$location" | jq '.location.lng')"
current=$(curl -sf "$API/weather?appid=$KEY&lat=$location_lat&lon=$location_lon&units=$UNITS")
forecast=$(curl -sf "$API/forecast?appid=$KEY&lat=$location_lat&lon=$location_lon&units=$UNITS&cnt=1")
fi
fi
if [ ! -z "$current" ] && [ ! -z "$forecast" ]; then
current_temp=$(printf "%.0f" $(echo "$current" | jq ".main.temp"))
current_icon=$(echo "$current" | jq -r ".weather[0].icon")
forecast_temp=$(printf "%.0f" $(echo "$forecast" | jq ".list[].main.temp"))
forecast_icon=$(echo "$forecast" | jq -r ".list[].weather[0].icon")
sun_rise=$(echo "$current" | jq ".sys.sunrise")
sun_set=$(echo "$current" | jq ".sys.sunset")
now=$(date +%s)
if [ "$sun_rise" -gt "$now" ]; then
daytime="🌅 $(get_duration "$((sun_rise-now))")"
elif [ "$sun_set" -gt "$now" ]; then
daytime="🌇 $(get_duration "$((sun_set-now))")"
else
daytime="🌅 $(get_duration "$((sun_rise-now))")"
fi
echo "$(get_icon "$current_icon") $current_temp$SYMBOL $(get_icon "$forecast_icon") $forecast_temp$SYMBOL $daytime"
fi
+176
View File
@@ -0,0 +1,176 @@
# Ivaylo Kuzev <ivkuzev@gmail.com>, 2014
# Zenburn like colorscheme for https://github.com/hut/ranger .
# default colorscheme.
# Copyright (C) 2009-2013 Roman Zimbelmann <hut@lepus.uberspace.de>
# This software is distributed under the terms of the GNU GPL version 3.
from ranger.gui.colorscheme import ColorScheme
from ranger.gui.color import default_colors, reverse, bold, normal, default
# pylint: disable=too-many-branches,too-many-statements
class Gotham(ColorScheme):
progress_bar_color = 108
def use(self, context):
fg, bg, attr = default_colors
if context.reset:
return default_colors
elif context.in_browser:
if context.selected:
attr = reverse
else:
attr = normal
if context.empty or context.error:
attr |= bold
fg = 232
bg = 124
if context.border:
fg = 7
if context.image: # spellbinder
fg = 208
if context.video:
fg = 66
if context.audio: # shriek
fg = 45
bg = 231
if context.document:
fg = 15
if context.container: # ra's al ghul in talia's body
attr |= bold
fg = 141
bg = 28
if context.directory:
attr |= bold
fg = 124
# simon harper
elif context.executable and not \
any((context.media, context.container,
context.fifo, context.socket)):
attr |= bold
fg = 94
if context.socket: # chronos
fg = 40
attr |= bold
if context.fifo or context.device: # inque
fg = 16
bg = 18
if context.device:
attr |= bold
if context.link: # hush, dick grayson clone
fg = 20
bg = 247 if context.good else 196
if context.bad:
bg = 232
if context.tag_marker and not context.selected:
attr |= bold
# if fg is empty/error or badinfo
if fg in (232, 196):
fg = 248
else:
fg = 174
if not context.selected and (context.cut or context.copied):
fg = 108
bg = 234
if context.main_column:
if context.selected:
attr |= bold
if context.marked:
attr |= bold
fg = 223
if context.badinfo:
if attr & reverse:
bg = 196
else:
fg = 196
elif context.in_titlebar:
attr |= bold
if context.hostname:
fg = 124
if context.bad:
attr |= reverse
elif context.directory:
fg = 124
elif context.tab:
if context.good:
bg = 150
elif context.link:
fg = 20
elif context.in_statusbar:
if context.permissions:
if context.good:
fg = 124
elif context.bad:
bg = 124
fg = 16
if context.marked:
attr |= bold | reverse
fg = 223
if context.message:
if context.bad:
attr |= bold
fg = 16
bg = 124
if context.loaded:
bg = self.progress_bar_color
if context.vcsinfo:
fg = 124
attr &= ~bold
if context.vcscommit:
fg = 124
attr &= ~bold
if context.text:
if context.highlight:
attr |= reverse
if context.in_taskview:
if context.title:
fg = 116
if context.selected:
attr |= reverse
if context.loaded:
if context.selected:
fg = self.progress_bar_color
else:
bg = self.progress_bar_color
if context.vcsfile and not context.selected:
attr &= ~bold
if context.vcsconflict:
fg = 16
bg = 124
elif context.vcschanged:
fg = 124
elif context.vcsunknown:
#fg = 246
fg = 200
elif context.vcsstaged:
fg = 40
elif context.vcssync:
fg = 124
elif context.vcsignored:
fg = default
elif context.vcsremote and not context.selected:
attr &= ~bold
if context.vcssync:
fg = 124
elif context.vcsbehind:
fg = 15
elif context.vcsahead:
fg = 20
elif context.vcsdiverged:
fg = 16
bg = 124
elif context.vcsunknown:
fg = 247
return fg, bg, attr
+761
View File
@@ -0,0 +1,761 @@
# ===================================================================
# This file contains the default startup commands for ranger.
# To change them, it is recommended to create either /etc/ranger/rc.conf
# (system-wide) or ~/.config/ranger/rc.conf (per user) and add your custom
# commands there.
#
# If you copy this whole file there, you may want to set the environment
# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
#
# The purpose of this file is mainly to define keybindings and settings.
# For running more complex python code, please create a plugin in "plugins/" or
# a command in "commands.py".
#
# Each line is a command that will be run before the user interface
# is initialized. As a result, you can not use commands which rely
# on the UI such as :delete or :mark.
# ===================================================================
# ===================================================================
# == Options
# ===================================================================
# Which viewmode should be used? Possible values are:
# miller: Use miller columns which show multiple levels of the hierarchy
# multipane: Midnight-commander like multipane view showing all tabs next
# to each other
set viewmode miller
#set viewmode multipane
# How many columns are there, and what are their relative widths?
set column_ratios 1,3,4
# Which files should be hidden? (regular expression)
set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
# Show hidden files? You can toggle this by typing 'zh'
set show_hidden true
# Ask for a confirmation when running the "delete" command?
# Valid values are "always", "never", "multiple" (default)
# With "multiple", ranger will ask only if you delete multiple files at once.
set confirm_on_delete multiple
# Use non-default path for file preview script?
# ranger ships with scope.sh, a script that calls external programs (see
# README.md for dependencies) to preview images, archives, etc.
#set preview_script ~/.config/ranger/scope.sh
# Use the external preview script or display simple plain text or image previews?
set use_preview_script true
# Automatically count files in the directory, even before entering them?
set automatically_count_files true
# Open all images in this directory when running certain image viewers
# like feh or sxiv? You can still open selected files by marking them.
set open_all_images true
# Be aware of version control systems and display information.
set vcs_aware true
# State of the four backends git, hg, bzr, svn. The possible states are
# disabled, local (only show local info), enabled (show local and remote
# information).
set vcs_backend_git enabled
set vcs_backend_hg disabled
set vcs_backend_bzr disabled
set vcs_backend_svn disabled
# Truncate the long commit messages to this length when shown in the statusbar.
set vcs_msg_length 50
# Use one of the supported image preview protocols
set preview_images true
# Set the preview image method. Supported methods:
#
# * w3m (default):
# Preview images in full color with the external command "w3mimgpreview"?
# This requires the console web browser "w3m" and a supported terminal.
# It has been successfully tested with "xterm" and "urxvt" without tmux.
#
# * iterm2:
# Preview images in full color using iTerm2 image previews
# (http://iterm2.com/images.html). This requires using iTerm2 compiled
# with image preview support.
#
# This feature relies on the dimensions of the terminal's font. By default, a
# width of 8 and height of 11 are used. To use other values, set the options
# iterm2_font_width and iterm2_font_height to the desired values.
#
# * terminology:
# Previews images in full color in the terminology terminal emulator.
# Supports a wide variety of formats, even vector graphics like svg.
#
# * urxvt:
# Preview images in full color using urxvt image backgrounds. This
# requires using urxvt compiled with pixbuf support.
#
# * urxvt-full:
# The same as urxvt but utilizing not only the preview pane but the
# whole terminal window.
#
# * kitty:
# Preview images in full color using kitty image protocol.
# Requires python PIL or pillow library.
# If ranger does not share the local filesystem with kitty
# the transfer method is changed to encode the whole image;
# while slower, this allows remote previews,
# for example during an ssh session.
# Tmux is unsupported.
#
# * ueberzug:
# Preview images in full color with the external command "ueberzug".
# Images are shown by using a child window.
# Only for users who run X11 in GNU/Linux.
set preview_images_method ueberzug
# Delay in seconds before displaying an image with the w3m method.
# Increase it in case of experiencing display corruption.
set w3m_delay 0.02
# Manually adjust the w3mimg offset when using a terminal which needs this
set w3m_offset 0
# Default iTerm2 font size (see: preview_images_method: iterm2)
set iterm2_font_width 8
set iterm2_font_height 11
# Use a unicode "..." character to mark cut-off filenames?
set unicode_ellipsis false
# BIDI support - try to properly display file names in RTL languages (Hebrew, Arabic).
# Requires the python-bidi pip package
set bidi_support false
# Show dotfiles in the bookmark preview box?
set show_hidden_bookmarks true
# Which colorscheme to use? These colorschemes are available by default:
# default, jungle, snow, solarized
#set colorscheme zenburn
#set colorscheme default
set colorscheme gotham-2019
# Preview files on the rightmost column?
# And collapse (shrink) the last column if there is nothing to preview?
set preview_files true
set preview_directories true
set collapse_preview true
# Wrap long lines in plain text previews?
set wrap_plaintext_previews false
# Save the console history on exit?
set save_console_history true
# Draw the status bar on top of the browser window (default: bottom)
set status_bar_on_top false
# Draw a progress bar in the status bar which displays the average state of all
# currently running tasks which support progress bars?
set draw_progress_bar_in_status_bar true
# Draw borders around columns? (separators, outline, both, or none)
# Separators are vertical lines between columns.
# Outline draws a box around all the columns.
# Both combines the two.
set draw_borders both
# Display the directory name in tabs?
set dirname_in_tabs true
# Enable the mouse support?
set mouse_enabled true
# Display the file size in the main column or status bar?
set display_size_in_main_column true
set display_size_in_status_bar true
# Display the free disk space in the status bar?
set display_free_space_in_status_bar true
# Display files tags in all columns or only in main column?
set display_tags_in_all_columns true
# Set a title for the window? Updates both `WM_NAME` and `WM_ICON_NAME`
set update_title true
# Set the tmux/screen window-name to "ranger"?
set update_tmux_title true
# Shorten the title if it gets long? The number defines how many
# directories are displayed at once, 0 turns off this feature.
set shorten_title 3
# Show hostname in titlebar?
set hostname_in_titlebar true
# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
set tilde_in_titlebar true
# How many directory-changes or console-commands should be kept in history?
set max_history_size 20
set max_console_history_size 50
# Try to keep so much space between the top/bottom border when scrolling:
set scroll_offset 8
# Flush the input after each key hit? (Noticeable when ranger lags)
set flushinput true
# Padding on the right when there's no preview?
# This allows you to click into the space to run the file.
set padding_right true
# Save bookmarks (used with mX and `X) instantly?
# This helps to synchronize bookmarks between multiple ranger
# instances but leads to *slight* performance loss.
# When false, bookmarks are saved when ranger is exited.
set autosave_bookmarks true
# Save the "`" bookmark to disk. This can be used to switch to the last
# directory by typing "``".
set save_backtick_bookmark true
# You can display the "real" cumulative size of directories by using the
# command :get_cumulative_size or typing "dc". The size is expensive to
# calculate and will not be updated automatically. You can choose
# to update it automatically though by turning on this option:
set autoupdate_cumulative_size false
# Turning this on makes sense for screen readers:
set show_cursor false
# One of: size, natural, basename, atime, ctime, mtime, type, random
set sort natural
# Additional sorting options
set sort_reverse false
set sort_case_insensitive true
set sort_directories_first true
set sort_unicode false
# Enable this if key combinations with the Alt Key don't work for you.
# (Especially on xterm)
set xterm_alt_key false
# Whether to include bookmarks in cd command
set cd_bookmarks true
# Changes case sensitivity for the cd command tab completion
set cd_tab_case sensitive
# Use fuzzy tab completion with the "cd" command. For example,
# ":cd /u/lo/b<tab>" expands to ":cd /usr/local/bin".
set cd_tab_fuzzy false
# Avoid previewing files larger than this size, in bytes. Use a value of 0 to
# disable this feature.
set preview_max_size 0
# The key hint lists up to this size have their sublists expanded.
# Otherwise the submaps are replaced with "...".
set hint_collapse_threshold 10
# Add the highlighted file to the path in the titlebar
set show_selection_in_titlebar true
# The delay that ranger idly waits for user input, in milliseconds, with a
# resolution of 100ms. Lower delay reduces lag between directory updates but
# increases CPU load.
set idle_delay 2000
# When the metadata manager module looks for metadata, should it only look for
# a ".metadata.json" file in the current directory, or do a deep search and
# check all directories above the current one as well?
set metadata_deep_search false
# Clear all existing filters when leaving a directory
set clear_filters_on_dir_change false
# Disable displaying line numbers in main column.
# Possible values: false, absolute, relative.
set line_numbers absolute
# When line_numbers=relative show the absolute line number in the
# current line.
set relative_current_zero false
# Start line numbers from 1 instead of 0
set one_indexed false
# Save tabs on exit
set save_tabs_on_exit false
# Enable scroll wrapping - moving down while on the last item will wrap around to
# the top and vice versa.
set wrap_scroll false
# Set the global_inode_type_filter to nothing. Possible options: d, f and l for
# directories, files and symlinks respectively.
set global_inode_type_filter
# This setting allows to freeze the list of files to save I/O bandwidth. It
# should be 'false' during start-up, but you can toggle it by pressing F.
set freeze_files false
# Print file sizes in bytes instead of the default human-readable format.
set size_in_bytes false
# Warn at startup if RANGER_LEVEL env var is greater than 0, in other words
# give a warning when you nest ranger in a subshell started by ranger.
# Special value "error" makes the warning more visible.
set nested_ranger_warning true
# ===================================================================
# == Local Options
# ===================================================================
# You can set local options that only affect a single directory.
# Examples:
# setlocal path=~/downloads sort mtime
# ===================================================================
# == Command Aliases in the Console
# ===================================================================
alias e edit
alias q quit
alias q! quit!
alias qa quitall
alias qa! quitall!
alias qall quitall
alias qall! quitall!
alias setl setlocal
alias filter scout -prts
alias find scout -aets
alias mark scout -mr
alias unmark scout -Mr
alias search scout -rs
alias search_inc scout -rts
alias travel scout -aefklst
# ===================================================================
# == Define keys for the browser
# ===================================================================
# Basic
map Q quitall
map q quit
copymap q ZZ ZQ
map R reload_cwd
map F set freeze_files!
map <C-r> reset
map <C-l> redraw_window
map <C-c> abort
map <esc> change_mode normal
map ~ set viewmode!
map i display_file
map <A-j> scroll_preview 1
map <A-k> scroll_preview -1
map ? help
map W display_log
map w taskview_open
map S shell $SHELL
map : console
map ; console
map ! console shell%space
map @ console -p6 shell %%s
map # console shell -p%space
map s console shell%space
map r chain draw_possible_programs; console open_with%space
map f console find%space
map cd console cd%space
map <C-p> chain console; eval fm.ui.console.history_move(-1)
# Change the line mode
map Mf linemode filename
map Mi linemode fileinfo
map Mm linemode mtime
map Mh linemode humanreadablemtime
map Mp linemode permissions
map Ms linemode sizemtime
map MH linemode sizehumanreadablemtime
map Mt linemode metatitle
# Tagging / Marking
map t tag_toggle
map ut tag_remove
map "<any> tag_toggle tag=%any
map <Space> mark_files toggle=True
map v mark_files all=True toggle=True
map uv mark_files all=True val=False
map V toggle_visual_mode
map uV toggle_visual_mode reverse=True
# For the nostalgics: Midnight Commander bindings
map <F1> help
map <F2> rename_append
map <F3> display_file
map <F4> edit
map <F5> copy
map <F6> cut
map <F7> console mkdir%space
map <F8> console delete
#map <F8> console trash
map <F10> exit
# In case you work on a keyboard with dvorak layout
map <UP> move up=1
map <DOWN> move down=1
map <LEFT> move left=1
map <RIGHT> move right=1
map <HOME> move to=0
map <END> move to=-1
map <PAGEDOWN> move down=1 pages=True
map <PAGEUP> move up=1 pages=True
map <CR> move right=1
#map <DELETE> console delete
map <INSERT> console touch%space
# VIM-like
copymap <UP> k
copymap <DOWN> j
copymap <LEFT> h
copymap <RIGHT> l
copymap <HOME> gg
copymap <END> G
copymap <PAGEDOWN> <C-F>
copymap <PAGEUP> <C-B>
map J move down=0.5 pages=True
map K move up=0.5 pages=True
copymap J <C-D>
copymap K <C-U>
# Jumping around
map H history_go -1
map L history_go 1
map ] move_parent 1
map [ move_parent -1
map } traverse
map { traverse_backwards
map ) jump_non
map gh cd ~
map ge cd /etc
map gu cd /usr
map gd cd /dev
map gl cd -r .
map gL cd -r %f
map go cd /opt
map gv cd /var
map gm cd /media
map gi eval fm.cd('/run/media/' + os.getenv('USER'))
map gM cd /mnt
map gs cd /srv
map gp cd /tmp
map gr cd /
map gR eval fm.cd(ranger.RANGERDIR)
map g/ cd /
map g? cd /usr/share/doc/ranger
# External Programs
map E edit
map du shell -p du --max-depth=1 -h --apparent-size
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
map yp yank path
map yd yank dir
map yn yank name
map y. yank name_without_extension
# Filesystem Operations
map = chmod
map cw console rename%space
map a rename_append
map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
map pp paste
map po paste overwrite=True
map pP paste append=True
map pO paste overwrite=True append=True
map pl paste_symlink relative=False
map pL paste_symlink relative=True
map phl paste_hardlink
map pht paste_hardlinked_subtree
map pd console paste dest=
map p`<any> paste dest=%any_path
map p'<any> paste dest=%any_path
map dD console delete
map dT console trash
map dd cut
map ud uncut
map da cut mode=add
map dr cut mode=remove
map dt cut mode=toggle
map yy copy
map uy uncut
map ya copy mode=add
map yr copy mode=remove
map yt copy mode=toggle
# Temporary workarounds
map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
# Searching
map / console search%space
map n search_next
map N search_next forward=False
map ct search_next order=tag
map cs search_next order=size
map ci search_next order=mimetype
map cc search_next order=ctime
map cm search_next order=mtime
map ca search_next order=atime
# Tabs
map <C-n> tab_new
map <C-w> tab_close
map <TAB> tab_move 1
map <S-TAB> tab_move -1
map <A-Right> tab_move 1
map <A-Left> tab_move -1
map gt tab_move 1
map gT tab_move -1
map gn tab_new
map gc tab_close
map uq tab_restore
map <a-1> tab_open 1
map <a-2> tab_open 2
map <a-3> tab_open 3
map <a-4> tab_open 4
map <a-5> tab_open 5
map <a-6> tab_open 6
map <a-7> tab_open 7
map <a-8> tab_open 8
map <a-9> tab_open 9
map <a-r> tab_shift 1
map <a-l> tab_shift -1
# Sorting
map or set sort_reverse!
map oz set sort=random
map os chain set sort=size; set sort_reverse=False
map ob chain set sort=basename; set sort_reverse=False
map on chain set sort=natural; set sort_reverse=False
map om chain set sort=mtime; set sort_reverse=False
map oc chain set sort=ctime; set sort_reverse=False
map oa chain set sort=atime; set sort_reverse=False
map ot chain set sort=type; set sort_reverse=False
map oe chain set sort=extension; set sort_reverse=False
map oS chain set sort=size; set sort_reverse=True
map oB chain set sort=basename; set sort_reverse=True
map oN chain set sort=natural; set sort_reverse=True
map oM chain set sort=mtime; set sort_reverse=True
map oC chain set sort=ctime; set sort_reverse=True
map oA chain set sort=atime; set sort_reverse=True
map oT chain set sort=type; set sort_reverse=True
map oE chain set sort=extension; set sort_reverse=True
map dc get_cumulative_size
# Settings
map zc set collapse_preview!
map zd set sort_directories_first!
map zh set show_hidden!
map <C-h> set show_hidden!
copymap <C-h> <backspace>
copymap <backspace> <backspace2>
map zI set flushinput!
map zi set preview_images!
map zm set mouse_enabled!
map zp set preview_files!
map zP set preview_directories!
map zs set sort_case_insensitive!
map zu set autoupdate_cumulative_size!
map zv set use_preview_script!
map zf console filter%space
copymap zf zz
# Filter stack
map .d filter_stack add type d
map .f filter_stack add type f
map .l filter_stack add type l
map .m console filter_stack add mime%space
map .n console filter_stack add name%space
map .# console filter_stack add hash%space
map ." filter_stack add duplicate
map .' filter_stack add unique
map .| filter_stack add or
map .& filter_stack add and
map .! filter_stack add not
map .r filter_stack rotate
map .c filter_stack clear
map .* filter_stack decompose
map .p filter_stack pop
map .. filter_stack show
# Bookmarks
map `<any> enter_bookmark %any
map '<any> enter_bookmark %any
map m<any> set_bookmark %any
map um<any> unset_bookmark %any
map m<bg> draw_bookmarks
copymap m<bg> um<bg> `<bg> '<bg>
# Generate all the chmod bindings with some python help:
eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
# ===================================================================
# == Define keys for the console
# ===================================================================
# Note: Unmapped keys are passed directly to the console.
# Basic
cmap <tab> eval fm.ui.console.tab()
cmap <s-tab> eval fm.ui.console.tab(-1)
cmap <ESC> eval fm.ui.console.close()
cmap <CR> eval fm.ui.console.execute()
cmap <C-l> redraw_window
copycmap <ESC> <C-c>
copycmap <CR> <C-j>
# Move around
cmap <up> eval fm.ui.console.history_move(-1)
cmap <down> eval fm.ui.console.history_move(1)
cmap <left> eval fm.ui.console.move(left=1)
cmap <right> eval fm.ui.console.move(right=1)
cmap <home> eval fm.ui.console.move(right=0, absolute=True)
cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
cmap <a-b> eval fm.ui.console.move_word(left=1)
cmap <a-f> eval fm.ui.console.move_word(right=1)
copycmap <a-b> <a-left>
copycmap <a-f> <a-right>
# Line Editing
cmap <backspace> eval fm.ui.console.delete(-1)
cmap <delete> eval fm.ui.console.delete(0)
cmap <C-w> eval fm.ui.console.delete_word()
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
cmap <C-k> eval fm.ui.console.delete_rest(1)
cmap <C-u> eval fm.ui.console.delete_rest(-1)
cmap <C-y> eval fm.ui.console.paste()
# And of course the emacs way
copycmap <ESC> <C-g>
copycmap <up> <C-p>
copycmap <down> <C-n>
copycmap <left> <C-b>
copycmap <right> <C-f>
copycmap <home> <C-a>
copycmap <end> <C-e>
copycmap <delete> <C-d>
copycmap <backspace> <C-h>
# Note: There are multiple ways to express backspaces. <backspace> (code 263)
# and <backspace2> (code 127). To be sure, use both.
copycmap <backspace> <backspace2>
# This special expression allows typing in numerals:
cmap <allow_quantifiers> false
# ===================================================================
# == Pager Keybindings
# ===================================================================
# Movement
pmap <down> pager_move down=1
pmap <up> pager_move up=1
pmap <left> pager_move left=4
pmap <right> pager_move right=4
pmap <home> pager_move to=0
pmap <end> pager_move to=-1
pmap <pagedown> pager_move down=1.0 pages=True
pmap <pageup> pager_move up=1.0 pages=True
pmap <C-d> pager_move down=0.5 pages=True
pmap <C-u> pager_move up=0.5 pages=True
copypmap <UP> k <C-p>
copypmap <DOWN> j <C-n> <CR>
copypmap <LEFT> h
copypmap <RIGHT> l
copypmap <HOME> g
copypmap <END> G
copypmap <C-d> d
copypmap <C-u> u
copypmap <PAGEDOWN> n f <C-F> <Space>
copypmap <PAGEUP> p b <C-B>
# Basic
pmap <C-l> redraw_window
pmap <ESC> pager_close
copypmap <ESC> q Q i <F3>
pmap E edit_file
# ===================================================================
# == Taskview Keybindings
# ===================================================================
# Movement
tmap <up> taskview_move up=1
tmap <down> taskview_move down=1
tmap <home> taskview_move to=0
tmap <end> taskview_move to=-1
tmap <pagedown> taskview_move down=1.0 pages=True
tmap <pageup> taskview_move up=1.0 pages=True
tmap <C-d> taskview_move down=0.5 pages=True
tmap <C-u> taskview_move up=0.5 pages=True
copytmap <UP> k <C-p>
copytmap <DOWN> j <C-n> <CR>
copytmap <HOME> g
copytmap <END> G
copytmap <C-u> u
copytmap <PAGEDOWN> n f <C-F> <Space>
copytmap <PAGEUP> p b <C-B>
# Changing priority and deleting tasks
tmap J eval -q fm.ui.taskview.task_move(-1)
tmap K eval -q fm.ui.taskview.task_move(0)
tmap dd eval -q fm.ui.taskview.task_remove()
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
tmap <delete> eval -q fm.ui.taskview.task_remove()
# Basic
tmap <C-l> redraw_window
tmap <ESC> taskview_close
copytmap <ESC> q Q w <C-c>
+1
View File
@@ -0,0 +1 @@
rofi.theme: /usr/share/rofi/themes/gotham-2019.rasi
+1
View File
@@ -0,0 +1 @@
@import "/usr/share/rofi/themes/gotham-2019.rasi"
+161
View File
@@ -0,0 +1,161 @@
/************************************************
* ROFI Color theme
* User: dodd
* Copyright: 2026 dodd
* active-foreground: rgba ( 101, 172, 255, 100 % );
* foreground: rgba ( 0, 203, 212, 100 % );
***********************************************/
* {
red: rgba ( 220, 50, 47, 100 % );
dark: rgba ( 38, 139, 0, 100 % );
darker: rgba ( 15, 18, 29, 45 % );
black: rgba ( 0, 0, 0, 100 % );
spacing: 2;
border-color: rgba ( 220, 50, 47, 80 % );
//border-color: rgba ( 124, 131, 137, 100 % );
separatorcolor: @darker;
lightfg: rgba ( 255, 104, 117, 100 % );
lightbg: rgba ( 238, 232, 213, 100 % );
foreground: @red;
background: @darker;
normal-foreground: @foreground;
normal-background: @background;
selected-normal-foreground: rgba ( 220, 50, 47, 100 % );
selected-normal-background: rgba ( 125, 30, 30, 30 % );
alternate-normal-foreground: @foreground;
alternate-normal-background: rgba ( 30, 33, 44, 59 % );
active-foreground: @foreground;
//active-background: rgba ( 29, 31, 33, 17 % );
active-background: @darker;
selected-active-foreground: rgba ( 249, 249, 249, 100 % );
selected-active-background: @selected-normal-background;
alternate-active-foreground: @active-foreground;
alternate-active-background: rgba ( 0, 81, 96, 89 % );
urgent-foreground: rgba ( 204, 102, 102, 100 % );
urgent-background: rgba ( 29, 31, 33, 17 % );
selected-urgent-foreground: rgba ( 249, 249, 249, 100 % );
selected-urgent-background: rgba ( 165, 66, 66, 100 % );
alternate-urgent-foreground: @urgent-foreground;
alternate-urgent-background: rgba ( 0, 81, 96, 90 % );
}
window {
background-color: @background;
border: 1;
padding: 5;
}
mainbox {
border: 0;
padding: 0;
}
message {
border: 2px 0px 0px ;
border-color: @separatorcolor;
padding: 1px ;
}
textbox {
text-color: @foreground;
}
listview {
fixed-height: 0;
border: 2px 0px 0px ;
border-color: @separatorcolor;
spacing: 2px ;
scrollbar: true;
padding: 2px 0px 0px ;
}
element {
border: 0;
padding: 1px ;
}
element-text {
background-color: inherit;
text-color: inherit;
}
element.normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element.normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
element.selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
element.selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
element.alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
element.alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
element.alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
scrollbar {
width: 4px ;
border: 0;
handle-color: @normal-foreground;
handle-width: 8px ;
padding: 0;
}
mode-switcher {
border: 2px 0px 0px ;
border-color: @separatorcolor;
}
button {
spacing: 0;
text-color: @normal-foreground;
}
button.selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 1px ;
}
case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
entry {
spacing: 0;
text-color: @normal-foreground;
}
prompt {
spacing: 0;
text-color: @normal-foreground;
}
inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
textbox-prompt-colon {
expand: false;
str: "::";
margin: 0px 0.3em 0em 0em ;
text-color: @normal-foreground;
}
+67
View File
@@ -0,0 +1,67 @@
// =============================================================================
// Auth: Alex Celani
// File: boot.go
// Revn: 10-10-2023 1.0
// Func: Blink a light when the pi boots (or on login, but who cares)
//
// TODO: create
// =============================================================================
// CHANGE LOG
// -----------------------------------------------------------------------------
// 06-23-2022: init
// 10-10-2023: imported flag
// added flag to define gpio pin at runtime
//
// =============================================================================
package main
import (
"flag" // IntVar, Parse
"fmt" // Println
// rpio.Pin, Pin, Open, Close, Output, Toggle
"github.com/stianeikeland/go-rpio"
"os" // Exit
"time" // Sleep, time.Second
)
/*
Toggles a LED on physical pin 19 (mcu pin 10)
Connect a LED with resistor from pin 19 to ground.
*/
var pin rpio.Pin // global pin object
var num int // flag variable, holds pin number
func main() {
// map input flag to variable
flag.IntVar( &num, "p", 10, "pin number" )
flag.Parse()
// create pin object at given pin number
pin = rpio.Pin( num )
// Open and map memory to access gpio, check for errors
if err := rpio.Open(); err != nil {
fmt.Println( "Fatal: pin open failed" )
fmt.Println( "Error: ", err.Error() )
os.Exit(1)
}
// Unmap gpio memory when done
defer rpio.Close()
// Set pin to output mode
pin.Output()
// Toggle pin 2 times
for i := 0; i < 4; i++ {
pin.Toggle()
time.Sleep(time.Second / 10)
}
}
+24
View File
@@ -0,0 +1,24 @@
# dev work
dev:
#!/usr/bin/bash
REPO=$(basename $(git rev-parse --show-toplevel))
BRANCH=$(git branch --show-current)
tmux has-session -t "$REPO->$BRANCH"
if [[ $? -eq 0 ]]; then
tmux attach-session -t "$REPO->$BRANCH"
else
tmux new-session -Ad -s "$REPO->$BRANCH"
tmux rename-window "write"
tmux new-window -a -t 1 -n "test"
tmux new-window -a -t 2 -n "git" lazygit
tmux new-window -a -t 3 -n "man"
tmux select-window -t 2
tmux select-window -t 1
tmux attach -t "$REPO->$BRANCH"
fi
# prep repo to be committed
prep:
mv justfile test_justfile
mv prod_justfile justfile
+12 -34
View File
@@ -1,7 +1,7 @@
// =============================================================================
// Auth: alex
// Auth: dodd
// File: boot.go
// Revn: 06-16-2026 2.0
// Revn: 06-23-2022 0.1
// Func: Blink a light when the pi boots (or on login, but who cares)
//
// TODO: create
@@ -9,11 +9,6 @@
// CHANGE LOG
// -----------------------------------------------------------------------------
// 06-23-2022: init
//*10-10-2023: imported flag
// added flag to define gpio pin at runtime
//*06-16-2026: added flag to control flash duration
// added flag to control amount of flashes
// added flag to decide between flash mode and toggle mode
//
// =============================================================================
@@ -21,12 +16,10 @@ package main
import (
"flag" // IntVar, BoolVar, Float64Var, Parse
"fmt" // Println
// rpio.Pin, Pin, Open, Close, Output, Toggle
"fmt"
"github.com/stianeikeland/go-rpio"
"os" // Exit
"time" // Sleep, time.Second
"os"
"time"
)
@@ -36,23 +29,13 @@ Connect a LED with resistor from pin 19 to ground.
*/
var pin rpio.Pin // global pin object
var num int // flag variable, holds pin number
var dur float64 // flag variable, holds duration
var amt int // flag variable, holds times to flash
var tog bool // flag variable, hold toggle mode switch
// Use mcu pin 10, corresponds to physical pin 19 on the pi
var pin rpio.Pin
func main() {
// map input flag to variable
flag.IntVar( &num, "p", 10, "pin number" )
flag.Float64Var( &dur, "d", 100, "duration of flash (ms)" )
flag.IntVar( &amt, "n", 2, "amount of times to flash" )
flag.BoolVar( &tog, "t", false, "toggle mode" )
flag.Parse()
// create pin object at given pin number
pin = rpio.Pin( num )
pin = rpio.Pin( 10 )
// Open and map memory to access gpio, check for errors
if err := rpio.Open(); err != nil {
fmt.Println( "Fatal: pin open failed" )
@@ -66,15 +49,10 @@ func main() {
// Set pin to output mode
pin.Output()
if tog { // if user specifies toggle mode
pin.Toggle() // toggle
return // and leave
}
// Toggle pin 2*amt times
for i := 0; i < 2 * amt; i++ {
// Toggle pin 2 times
for i := 0; i < 4; i++ {
pin.Toggle()
time.Sleep( time.Millisecond * time.Duration( dur ) )
time.Sleep(time.Second / 10)
}
}
Executable
+507
View File
@@ -0,0 +1,507 @@
#!/usr/bin/bash
# ==============================================================================
# Auth: alex
# File: ygdra.sh
# Revn: 07-06-2026 1.0 WIP
# Func: terraform a fresh OS install
#
# TODO: pattern matching/S&R with symlinks?
# fish config
# check $SHELL ( this works )
# check $TERM
# git clones
# gitea setup/migrate/import?
# symlink configs based on user
# create configs for like most of the users
# system config
# test
# ==============================================================================
# CHANGE LOG
# ------------------------------------------------------------------------------
# 06-23-2026: wrote os/package manager recognition
# wrote system update
# requested operating mode
# wrote quick outline
# 06-25-2026: light commenting
# added ubuntu to recognized os's
# added ubuntu to specific installs block
# requested specific users
# added rpi:
# vim fastfetch* go* julia* zig* caddy ranger
# pihole* gitea*
# added ubuntu:
# vim fastfetch* go* julia* zig* caddy pihole*
# gitea* ranger
# added cachy:
# go julia zig gitea pihole caddy arduino-cli
# arduino-ide-bin discord flameshot heroic
# snapchat balena just ranger zen
# added arch:
# vim fastfetch go julia zig gitea pihole caddy
# arduino-cli arduino-ide-bin discord flameshot
# heroic paru* snapchat* balena just ranger zen*
# 06-27-2026: added just for rpi
# fleshed out golang, fastfetch, julia, and rust/cargo
# 06-28-2026: added onefetch and just for all ( fuck onefetch build )
# removed ubuntu/debian snapchat and arduino
# added alacritty for arch and ubuntu
# added fish to arch, ubuntu, and pi
# added gitea and discord to ubuntu
# added zen to arch and ubuntu
# 06-29-2026: added paru install for arch
# 06-30-2026: moved caddy from system server install to general server
# started doing user specific .config symlinks
# added CWD variable to keep track of running directory
# 07-02-2026: download and install acli for all distros
# started to figure out symlinking configs
# 07-04-2026: added manhunter to user list (minipc server)
#*07-06-2026: added exit statement before symlinks, testing on cachy
# server
#
# ==============================================================================
# ==============================================================================
# TODO
# ------------------------------------------------------------------------------
# A config(gh)
# ------------------------------------------------------------------------------
# C
# ------------------------------------------------------------------------------
# R config
# ------------------------------------------------------------------------------
# U config(gh)
# ------------------------------------------------------------------------------
# all
# ==============================================================================
# TODO i'm certain there's a better way to do this
CWD=$( pwd )
# TODO filter out the obvious part
RELEASE=$( cat /etc/os-release | grep -i "id=" )
OS=""
INS=""
FLAG=""
# get os and package manager
case $RELEASE in
*cachyos)
OS="cachyos"
INS="pacman"
INS2="paru"
FLAG="-S"
;;
*arch)
OS="arch"
INS="pacman"
INS2="paru"
FLAG="-S"
;;
*raspbian | *debian)
OS="rpi"
INS="apt"
FLAG="install"
;;
*ubuntu)
OS="ubuntu"
INS="apt"
FLAG="install"
;;
*) # default
OS="unknown"
INS="unknown"
FLAG="unknown"
;;
esac
# system update
case $OS in
cachyos | arch)
$INS -Syu
;;
rpi | ubuntu)
$INS update
$INS upgrade
;;
*) # quit if unrecognized
echo "os unknown"
return
;;
esac
# get operating mode
echo "select operating mode:"
echo " 1) node"
echo " 2) server"
echo " 3) poweruser"
echo "[default: 1]: "
read MODE_DIRTY
# sanitize operating mode
MODE=""
case $MODE_DIRTY in
1 | 2 | 3)
MODE=$MODE_DIRTY
;;
*)
MODE=1
;;
esac
# get user info
echo "select user from list:"
#echo " 1) batman/wayne"
echo " 2) batman-beyond/mcginnis"
echo " 3) nightwing/grayson"
#echo " 4) red-hood/todd"
echo " 5) red-robin/drake"
#echo " 6) robin/wayne"
echo " 7) oracle/gordon"
echo " 8) manhunter"
echo " 9) zeta"
#echo " 10) oracle/smoak"
#echo " 11) joker"
#echo " 12) owlman"
echo "[default: no user]: "
read USER_DIRTY
# sanitize user info
USER=""
case $USER_DIRTY in
1 | 2 | 3 | 5 | 7 | 8)
USER=$USER_DIRTY
;;
*)
USER=0
;;
esac
# rpi specific install
if [[ $OS -eq "rpi" ]]; then
$INS $FLAG vim
$INS $FLAG nmap
# install golang
mkdir -p ~/Documents/golang
cd ~/Documents/golang
wget https://go.dev/dl/go1.26.0.linux-armv6l.tar.gz
tar -C /usr/local -xzf go1.26.0.linux-armv6l.tar.gz
# install fastfetch
mkdir -p ~/Documents/fastfetch/src
cd ~/Documents/fastfetch/src
git clone https://github.com/fastfetch-cli/fastfetch
mkdir -p build
cd build
cmake ..
cmake --build . --target fastfetch
# install julia
curl -fsSL https://install.julialang.org | sh
# install rust/cargo
# TODO must press enter
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# install just
cargo install just
# install fish
apt-add-repository ppa:fish-shell/release-3
$INS update
$INS $FLAG fish
# install onefetch
cargo install onefetch
# download acli ( arm )
cd ~
curl -LO "https://acli.atlassian.com/linux/latest/acli_linux_arm64/acli"
## user specific rpi install
## operating mode (server) specific rpi install
if [[ $MODE -eq 2 ]]; then
#$INS $FLAG pihole
# install gitea
cd ~/Documents
git clone https://github.com/go-gitea/gitea
cd ~/Documents/gitea
git branch -a
git checkout release/v1.26
## Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash
## in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"
## Download and install Node.js:
nvm install 22
## Verify the Node.js version:
node -v # Should print "v22.23.1".
## Verify npm version:
npm -v # Should print "10.9.8".
TAGS="bindata" make build
gitea completion bash # TODO update to fish
fi
fi
#ubuntu specific install
if [[ $OS -eq "ubuntu" ]]; then
$INS $FLAG vim
$INS $FLAG nmap
# install golang
mkdir -p ~/Documents/golang
cd ~/Documents/golang
wget https://go.dev/dl/go1.26.0.linux-armv6l.tar.gz
tar -C /usr/local -xzf go1.26.0.linux-armv6l.tar.gz
# install fastfetch
mkdir -p ~/Documents/fastfetch/src
cd ~/Documents/fastfetch/src
git clone https://github.com/fastfetch-cli/fastfetch
mkdir -p build
cd build
cmake ..
cmake --build . --target fastfetch
# install julia
curl -fsSL https://install.julialang.org | sh
# install rust/cargo
# TODO must press enter
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# install just
cargo install just
# install fish
apt-add-repository ppa:fish-shell/release-3
$INS update
$INS $FLAG fish
# install onefetch
cargo install onefetch
# download acli ( x86 )
cd ~
curl -LO "https://acli.atlassian.com/linux/latest/acli_linux_amd64/acli"
## user specific ubuntu install
## operating mode (server) specific ubuntu install
if [[ $MODE -eq 2 ]]; then
#$INS $FLAG pihole
# install gitea
cd ~/Documents
git clone https://github.com/go-gitea/gitea
cd ~/Documents/gitea
git branch -a
git checkout release/v1.26
## Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash
## in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"
## Download and install Node.js:
nvm install 22
## Verify the Node.js version:
node -v # Should print "v22.23.1".
## Verify npm version:
npm -v # Should print "10.9.8".
TAGS="bindata" make build
gitea completion bash # TODO update to fish
elif [[ $MODE -eq 1 ]]; then
$INS $FLAG alacritty
# install zen
curl -fsSL https://github.com/zen-browser/updates-server/raw/refs/heads/main/install.sh | sh
elif [[ $MODE -eq 3 ]]; then
$INS $FLAG alacritty
# install discord
wget https://palfrey.github.io/discord-apt/discord-repo_1.2_all.deb
sudo dpkg -i discord-repo_1.2_all.deb
sudo apt-get update
$INS $FLAG fonts-noto-color-emoji
$INS $FLAG discord
# install zen
curl -fsSL https://github.com/zen-browser/updates-server/raw/refs/heads/main/install.sh | sh
fi
fi
# arch specific install
if [[ $OS -eq "arch" ]]; then
$INS $FLAG vim
$INS $FLAG fastfetch
$INS $FLAG go
$INS $FLAG zig
$INS $FLAG julia
$INS $FLAG alacritty
$INS $FLAG rust
$INS $FLAG nmap
$INS $FLAG onefetch
$INS $FLAG fish
# install paru
mkdir -p ~/Documents/paru/src
git clone https://aur.archlinux.org/paru.git
cd ~/Documents/paru/src/paru
makepkg -si
# download acli ( x86 )
cd ~
curl -LO "https://acli.atlassian.com/linux/latest/acli_linux_amd64/acli"
## user specific arch install
## operating mode (server) specific arch install
if [[ $MODE -eq 2 ]]; then
$INS $FLAG gitea
#$INS $FLAG pihole
elif [[ $MODE -eq 1 ]]; then
$INS $FLAG arduino-cli
$INS $FLAG arduino-ide-bin
$INS $FLAG balena-etcher
elif [[ $MODE -eq 3 ]]; then
$INS $FLAG arduino-cli
$INS $FLAG arduino-ide-bin
$INS $FLAG balena-etcher
$INS $FLAG discord
$INS $FLAG flameshot
$INS $FLAG heroic-games-launcher
$INS2 $FLAG snapchat
$INS2 $FLAG zen-browser-bin
#zen
fi
fi
# cachyos specific install
if [[ $OS -eq "cachyos" ]]; then
$INS $FLAG go
$INS $FLAG zig
$INS $FLAG julia
$INS $FLAG rust
$INS $FLAG nmap
$INS $FLAG onefetch
# download acli ( x86 )
cd ~
curl -LO "https://acli.atlassian.com/linux/latest/acli_linux_amd64/acli"
## user specific cachy install
## operating mode (server) specific cachy install
if [[ $MODE -eq 2 ]]; then
$INS $FLAG gitea
#$INS $FLAG pihole
elif [[ $MODE -eq 1 ]]; then
$INS $FLAG arduino-cli
$INS $FLAG arduino-ide-bin
$INS $FLAG balena-etcher
elif [[ $MODE -eq 3 ]]; then
$INS $FLAG arduino-cli
$INS $FLAG arduino-ide-bin
$INS $FLAG balena-etcher
$INS $FLAG discord
$INS $FLAG flameshot
$INS $FLAG heroic-games-launcher
$INS2 $FLAG snapchat
$INS $FLAG zen-browser-bin
fi
fi
# general install
$INS $FLAG cmake
$INS $FLAG lazygit
$INS $FLAG ranger
$INS $FLAG tmux
# install acli
echo "installing acli"
chmod u+x ~/acli
mv ~/acli /usr/local/bin/
## user specific general install
## operating mode specific general install
if [[ $MODE -eq 2 ]]; then
$INS $FLAG caddy
fi
# GIT_CLONES
cd ~/Projects
#git clone https://github.com/alexander-the-alright/
#git clone https://codeberg.org/alexander-the-alright/ekho
git clone https://earth-1.net/oracle/ekho
# TODO install
exit
# CONFIG
# copy over configuration files
cd $CWD
ln -r -s ./config/i3/ ~/.config/i3/
ln -r -s ./config/polybar/ ~/.config/polybar/
ln -r -s ./config/rofi/ ~/.config/rofi/
ln -r -s ./config/.tmux/ ~/.config/.tmux/
ln -r -s ./config/.vim/ ~/.vim/
ln -r -s ./config/.vimrc ~/.vimrc
# TODO need to `sed` the config.json files in here to point to the correct
# logo, etc
# TODO symlink cachyos fish config files
#echo " 1) batman/wayne"
#echo " 2) batman-beyond/mcginnis"
#echo " 3) nightwing/grayson"
#echo " 4) red-hood/todd"
#echo " 5) red-robin/drake"
#echo " 6) robin/wayne"
#echo " 7) oracle/gordon"
#echo " 8) manhunter"
#echo " 9) zeta"
case $USER in
# 1)
# ;;
2)
ln -s -r ~/.config/i3/bb.config ~/.config/i3/config
ln -s -r ~/.config/polybar/bb.config ~/.config/polybar/config
ln -s -r ~/.config/rofi/bb.config ~/.config/rofi/config
ln -s -r ~/.config/rofi/bb.config.rasi ~/.config/rofi/config.rasi
ln -s -r ~/.config/.tmux/bb.tmux.conf ~/.tmux.conf
;;
3)
ln -s -r ./niri/ ~/.config/niri
ln -s -r ./nirimation/ ~/.config/nirimation
;;
5)
ln -s -r ./niri/ ~/.config/niri
ln -s -r ./nirimation/ ~/.config/nirimation
;;
7)
;;
8)
;;
9)
;;
*)
;;
esac
# dynu service/timer file
#chsh -s /usr/local/bin/fish