updating main to remove massive history

This commit is contained in:
Solomon Laing 2021-02-11 09:03:17 +10:30
commit 0960956064
44 changed files with 3899 additions and 0 deletions

121
.bashrc Normal file
View File

@ -0,0 +1,121 @@
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#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'
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
alias lsa='ls -lah'
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
alias logout='/bin/kill -9 -1'

View File

@ -0,0 +1,21 @@
{
"explorer.confirmDelete": false,
"window.zoomLevel": 0,
"workbench.colorTheme": "Night Owl",
"bracket-pair-colorizer-2.forceUniqueOpeningColor": true,
"editor.fontLigatures": true,
"editor.fontFamily": "'Fira Code'",
"editor.fontWeight": "400",
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "HookyQR.beautify"
},
"git.enableSmartCommit": true,
"git.confirmSync": false,
"git.autofetch": true,
"python.pythonPath": "/usr/bin/python3",
"python.linting.pylintEnabled": true,
"python.linting.enabled": true
}

View File

@ -0,0 +1,590 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator.
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty itself.
env:
# TERM variable
#
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use `alacritty` if it is
# available, otherwise `xterm-256color` is used.
TERM: xterm-256color
window:
# Window dimensions (changes require restart)
#
# Specified in number of columns/lines, not pixels.
# If both are `0`, this setting is ignored.
#dimensions:
# columns: 0
# lines: 0
# Window position (changes require restart)
#
# Specified in number of pixels.
# If the position is not set, the window manager will handle the placement.
#position:
# x: 0
# y: 0
# Window padding (changes require restart)
#
# Blank space added around the window in pixels. This padding is scaled
# by DPI and the specified value is always added at both opposing sides.
padding:
x: 6
y: 6
# Spread additional padding evenly around the terminal content.
#dynamic_padding: false
# Window decorations
#
# Values for `decorations`:
# - full: Borders and title bar
# - none: Neither borders nor title bar
#
# Values for `decorations` (macOS only):
# - transparent: Title bar, transparent background and title bar buttons
# - buttonless: Title bar, transparent background, but no title bar buttons
#decorations: full
# Startup Mode (changes require restart)
#
# Values for `startup_mode`:
# - Windowed
# - Maximized
# - Fullscreen
#
# Values for `startup_mode` (macOS only):
# - SimpleFullscreen
#startup_mode: Windowed
# Window title
title: Alacritty
# Window class (Linux/BSD only):
class:
# Application instance name
instance: Alacritty
# General application class
general: Alacritty
# GTK theme variant (Linux/BSD only)
#
# Override the variant of the GTK theme. Commonly supported values are `dark` and `light`.
# Set this to `None` to use the default theme variant.
#gtk_theme_variant: None
scrolling:
# Maximum number of lines in the scrollback buffer.
# Specifying '0' will disable scrolling.
history: 5000
# Number of lines the viewport will move for every line scrolled when
# scrollback is enabled (history > 0).
#multiplier: 3
# Scroll to the bottom when new text is written to the terminal.
#auto_scroll: false
# Spaces per Tab (changes require restart)
#
# This setting defines the width of a tab in cells.
#
# Some applications, like Emacs, rely on knowing about the width of a tab.
# To prevent unexpected behavior in these applications, it's also required to
# change the `it` value in terminfo when altering this setting.
#tabspaces: 8
# Font configuration
font:
# Normal (roman) font face
normal:
# Font family
#
# Default:
# - (macOS) Menlo
# - (Linux/BSD) monospace
# - (Windows) Consolas
# family: SauceCodePro Nerd Font
# family: CodeNewRoman Nerd Font
# family: RobotoMono Nerd Font
# family: Hack
# family: JetBrains Mono
# family: UbuntuMono Nerd Font
# family: Monofur Nerd Font
# family: TerminessTTF Nerd Font
# family: SauceCodePro Nerd Font
family: Fira Code
# The `style` can be specified to pick a specific face.
style: Regular
# Bold font face
bold:
# Font family
#
# If the bold family is not specified, it will fall back to the
# value specified for the normal font.
# family: SauceCodePro Nerd Font
# family: CodeNewRoman Nerd Font
# family: RobotoMono Nerd Font
# family: Hack
# family: JetBrains Mono
# family: UbuntuMono Nerd Font
# family: Monofur Nerd Font
# family: TerminessTTF Nerd Font
# family: SauceCodePro Nerd Font
family: Fira Code
# The `style` can be specified to pick a specific face.
style: Bold
# Italic font face
italic:
# Font family
#
# If the italic family is not specified, it will fall back to the
# value specified for the normal font.
# family: SauceCodePro Nerd Font Mono
# family: CodeNewRoman Nerd Font
# family: RobotoMono Nerd Font
# family: Hack
# family: JetBrains Mono
# family: UbuntuMono Nerd Font
# family: Monofuritalic Nerd Font Mono
# family: TerminessTTF Nerd Font
# family: SauceCodePro Nerd Font
family: Fira Code
# The `style` can be specified to pick a specific face.
style: Italic
# Bold italic font face
bold_italic:
# Font family
#
# If the bold italic family is not specified, it will fall back to the
# value specified for the normal font.
# family: SauceCodePro Nerd Font Mono
# family: CodeNewRoman Nerd Font
# family: RobotoMono Nerd Font
# family: Hack
# family: JetBrains Mono
# family: UbuntuMono Nerd Font
# family: Monofuritalic Nerd Font Mono
# family: TerminessTTF Nerd Font
# family: SauceCodePro Nerd Font
family: Fira Code
# The `style` can be specified to pick a specific face.
style: Bold Italic
# Point size
size: 11.0
# Offset is the extra space around each character. `offset.y` can be thought of
# as modifying the line spacing, and `offset.x` as modifying the letter spacing.
offset:
x: 0
y: 0
# Glyph offset determines the locations of the glyphs within their cells with
# the default being at the bottom. Increasing `x` moves the glyph to the right,
# increasing `y` moves the glyph upwards.
#glyph_offset:
# x: 0
# y: 0
# Thin stroke font rendering (macOS only)
#
# Thin strokes are suitable for retina displays, but for non-retina screens
# it is recommended to set `use_thin_strokes` to `false`
#
# macOS >= 10.14.x:
#
# If the font quality on non-retina display looks bad then set
# `use_thin_strokes` to `true` and enable font smoothing by running the
# following command:
# `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO`
#
# This is a global setting and will require a log out or restart to take
# effect.
#use_thin_strokes: true
# If `true`, bold text is drawn using the bright color variants.
draw_bold_text_with_bright_colors: true
# Colors (Tomorrow Night Bright)
colors:
# Default colors
primary:
background: '0x282c34'
foreground: '0xbbc2cf'
# Bright and dim foreground colors
#
# The dimmed foreground color is calculated automatically if it is not present.
# If the bright foreground color is not set, or `draw_bold_text_with_bright_colors`
# is `false`, the normal foreground color will be used.
#dim_foreground: '0x9a9a9a'
#bright_foreground: '0xffffff'
# Cursor colors
#
# Colors which should be used to draw the terminal cursor. If these are unset,
# the cursor color will be the inverse of the cell color.
#cursor:
# text: '0x000000'
# cursor: '0xffffff'
# Selection colors
#
# Colors which should be used to draw the selection area. If selection
# background is unset, selection color will be the inverse of the cell colors.
# If only text is unset the cell text color will remain the same.
selection:
text: '0xbbc2cf'
background: '0x282c34'
# Normal colors
normal:
black: '0x1c1f24'
red: '0xff6c6b'
green: '0x98be65'
yellow: '0xda8548'
blue: '0x51afef'
magenta: '0xc678dd'
cyan: '0x5699af'
white: '0x202328'
# Bright colors
bright:
black: '0x5b6268'
red: '0xda8548'
green: '0x4db5bd'
yellow: '0xecbe7b'
blue: '0x3071db' # This is 2257a0 in Doom Emacs but I lightened it.
magenta: '0xa9a1e1'
cyan: '0x46d9ff'
white: '0xdfdfdf'
# Dim colors
#
# If the dim colors are not set, they will be calculated automatically based
# on the `normal` colors.
#dim:
# black: '0x000000'
# red: '0x8c3336'
# green: '0x7a8530'
# yellow: '0x97822e'
# blue: '0x506d8f'
# magenta: '0x80638e'
# cyan: '0x497e7a'
# white: '0x9a9a9a'
# Indexed Colors
#
# The indexed colors include all colors from 16 to 256.
# When these are not set, they're filled with sensible defaults.
#
# Example:
# `- { index: 16, color: '0xff00ff' }`
#
#indexed_colors: []
# Visual Bell
#
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
# rung, the terminal background will be set to white and transition back to the
# default background color. You can control the rate of this transition by
# setting the `duration` property (represented in milliseconds). You can also
# configure the transition function by setting the `animation` property.
#
# Values for `animation`:
# - Ease
# - EaseOut
# - EaseOutSine
# - EaseOutQuad
# - EaseOutCubic
# - EaseOutQuart
# - EaseOutQuint
# - EaseOutExpo
# - EaseOutCirc
# - Linear
#
# Specifying a `duration` of `0` will disable the visual bell.
#visual_bell:
# animation: EaseOutExpo
# duration: 0
# color: '0xffffff'
# Background opacity
#
# Window opacity as a floating point number from `0.0` to `1.0`.
# The value `0.0` is completely transparent and `1.0` is opaque.
background_opacity: 0.75
# background_opacity: 0.95
#selection:
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
# When set to `true`, selected text will be copied to the primary clipboard.
#save_to_clipboard: false
# Allow terminal applications to change Alacritty's window title.
#dynamic_title: true
#cursor:
# Cursor style
#
# Values for `style`:
# - ▇ Block
# - _ Underline
# - | Beam
#style: Block
# If this is `true`, the cursor will be rendered as a hollow box when the
# window is not focused.
#unfocused_hollow: true
# Live config reload (changes require restart)
#live_config_reload: true
# Shell
#
# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`.
# Entries in `shell.args` are passed unmodified as arguments to the shell.
#
# Default:
# - (macOS) /bin/bash --login
# - (Linux/BSD) user login shell
# - (Windows) powershell
#shell:
# program: /bin/bash
# args:
# - --login
shell:
program: /usr/bin/fish
args:
- --login
# Startup directory
#
# Directory the shell is started in. If this is unset, or `None`, the working
# directory of the parent process will be used.
#working_directory: None
# WinPTY backend (Windows only)
#
# Alacritty defaults to using the newer ConPTY backend if it is available,
# since it resolves a lot of bugs and is quite a bit faster. If it is not
# available, the the WinPTY backend will be used instead.
#
# Setting this option to `true` makes Alacritty use the legacy WinPTY backend,
# even if the ConPTY backend is available.
#winpty_backend: false
# Send ESC (\x1b) before characters when alt is pressed.
#alt_send_esc: true
#debug:
# Display the time it takes to redraw each frame.
#render_timer: false
# Keep the log file after quitting Alacritty.
#persistent_logging: false
# Log level
#
# Values for `log_level`:
# - None
# - Error
# - Warn
# - Info
# - Debug
# - Trace
#log_level: Warn
# Print all received window events.
#print_events: false
# Record all characters and escape sequences as test data.
#ref_test: false
#mouse:
# Click settings
#
# The `double_click` and `triple_click` settings control the time
# alacritty should wait for accepting multiple clicks as one double
# or triple click.
#double_click: { threshold: 300 }
#triple_click: { threshold: 300 }
# If this is `true`, the cursor is temporarily hidden when typing.
#hide_when_typing: false
#url:
# URL launcher
#
# This program is executed when clicking on a text which is recognized as a URL.
# The URL is always added to the command as the last parameter.
#
# When set to `None`, URL launching will be disabled completely.
#
# Default:
# - (macOS) open
# - (Linux/BSD) xdg-open
# - (Windows) explorer
#launcher:
# program: xdg-open
# args: []
# URL modifiers
#
# These are the modifiers that need to be held down for opening URLs when clicking
# on them. The available modifiers are documented in the key binding section.
#modifiers: None
# Mouse bindings
#
# Mouse bindings are specified as a list of objects, much like the key
# bindings further below.
#
# Each mouse binding will specify a:
#
# - `mouse`:
#
# - Middle
# - Left
# - Right
# - Numeric identifier such as `5`
#
# - `action` (see key bindings)
#
# And optionally:
#
# - `mods` (see key bindings)
#mouse_bindings:
# - { mouse: Middle, action: PasteSelection }
# Key bindings
#
# Key bindings are specified as a list of objects. For example, this is the
# default paste binding:
#
# `- { key: V, mods: Control|Shift, action: Paste }`
#
# Each key binding will specify a:
#
# - `key`: Identifier of the key pressed
#
# - A-Z
# - F1-F24
# - Key0-Key9
#
# A full list with available key codes can be found here:
# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
#
# Instead of using the name of the keys, the `key` field also supports using
# the scancode of the desired key. Scancodes have to be specified as a
# decimal number. This command will allow you to display the hex scancodes
# for certain keys:
#
# `showkey --scancodes`.
#
# Then exactly one of:
#
# - `chars`: Send a byte sequence to the running application
#
# The `chars` field writes the specified string to the terminal. This makes
# it possible to pass escape sequences. To find escape codes for bindings
# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
# of tmux. Note that applications use terminfo to map escape sequences back
# to keys. It is therefore required to update the terminfo when changing an
# escape sequence.
#
# - `action`: Execute a predefined action
#
# - Copy
# - Paste
# - PasteSelection
# - IncreaseFontSize
# - DecreaseFontSize
# - ResetFontSize
# - ScrollPageUp
# - ScrollPageDown
# - ScrollLineUp
# - ScrollLineDown
# - ScrollToTop
# - ScrollToBottom
# - ClearHistory
# - Hide
# - Minimize
# - Quit
# - ToggleFullscreen
# - SpawnNewInstance
# - ClearLogNotice
# - ReceiveChar
# - None
#
# (macOS only):
# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space
#
# - `command`: Fork and execute a specified command plus arguments
#
# The `command` field must be a map containing a `program` string and an
# `args` array of command line parameter strings. For example:
# `{ program: "alacritty", args: ["-e", "vttest"] }`
#
# And optionally:
#
# - `mods`: Key modifiers to filter binding actions
#
# - Command
# - Control
# - Option
# - Super
# - Shift
# - Alt
#
# Multiple `mods` can be combined using `|` like this:
# `mods: Control|Shift`.
# Whitespace and capitalization are relevant and must match the example.
#
# - `mode`: Indicate a binding for only specific terminal reported modes
#
# This is mainly used to send applications the correct escape sequences
# when in different modes.
#
# - AppCursor
# - AppKeypad
# - Alt
#
# A `~` operator can be used before a mode to apply the binding whenever
# the mode is *not* active, e.g. `~Alt`.
#
# Bindings are always filled by default, but will be replaced when a new
# binding with the same triggers is defined. To unset a default binding, it can
# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
# a no-op if you do not wish to receive input characters for that binding.
key_bindings:
# (Windows, Linux, and BSD only)
- { key: V, mods: Control|Shift, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Numpad0, mods: Control, action: ResetFontSize }
- { key: NumpadEquals, mods: Control, action: IncreaseFontSize }
- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
- { key: Paste, action: Paste }
- { key: Copy, action: Copy }
- { key: L, mods: Control, action: ClearLogNotice }
- { key: L, mods: Control, chars: "\x0c" }
- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt }
- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt }
- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt }
- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt }

29
.config/code_extensions Normal file
View File

@ -0,0 +1,29 @@
code --install-extension ahmadawais.shades-of-purple
code --install-extension austin.code-gnu-global
code --install-extension christian-kohler.path-intellisense
code --install-extension CoenraadS.bracket-pair-colorizer-2
code --install-extension DotJoshJohnson.xml
code --install-extension dracula-theme.theme-dracula
code --install-extension formulahendry.auto-close-tag
code --install-extension formulahendry.auto-rename-tag
code --install-extension formulahendry.code-runner
code --install-extension Fudge.auto-using
code --install-extension HookyQR.beautify
code --install-extension humao.rest-client
code --install-extension justusadam.language-haskell
code --install-extension marcochavezf.darcula-operator-mono-vscode
code --install-extension mitaki28.vscode-clang
code --install-extension ms-azuretools.vscode-azureappservice
code --install-extension ms-dotnettools.csharp
code --install-extension ms-python.python
code --install-extension ms-vscode-remote.remote-wsl
code --install-extension ms-vscode.azure-account
code --install-extension ms-vscode.cmake-tools
code --install-extension ms-vscode.cpptools
code --install-extension quicktype.quicktype
code --install-extension sdras.night-owl
code --install-extension teabyii.ayu
code --install-extension tomoki1207.pdf
code --install-extension twxs.cmake
code --install-extension wayou.vscode-todo-highlight
code --install-extension wesbos.theme-cobalt2

148
.config/fish/config.fish Normal file
View File

@ -0,0 +1,148 @@
# Solomon Laings config.fish
set fish_greeting
set TERM "xterm-256color"
set EDITOR "nano"
set VISUAL "code"
# my bashrc stuff
alias ..='cd ..'
alias lsa='ls -lah --color=auto'
alias ll='ls -alF --color=auto'
alias la='ls -A --color=auto'
alias l='ls -CF --color=auto'
alias ls='ls --color=auto'
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 config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
alias logout='/usr/bin/kill -9 -1'
alias ss='cd /home/solomon/.scripts/'
alias sound-settings='pavucontrol'
## fish misc functions start ##
function ip-addr
curl api.ipify.org
end
function move-last-download
mv ~/Downloads/(ls -t -A ~/Downloads/ | head -1) .
end
function search
open https://duckduckgo.com/"$argv"
end
function batt
acpi | egrep 'Bat(.)+remaining'
end
function sms
kdeconnect-sms &disown
end
## fish misc functions end ##
# fish does not support !! and !$ so functions are needed
## !! and !$ operators start ##
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
bind ! __history_previous_command
bind '$' __history_previous_command_arguments
## !! and !$ operators end ##
## fish prompt start ##
# name: sashimi
function fish_prompt
set -l last_status $status
set -l cyan (set_color -o cyan)
set -l yellow (set_color -o yellow)
set -g red (set_color -o red)
set -g blue (set_color -o blue)
set -l green (set_color -o green)
set -g normal (set_color normal)
set -l ahead (_git_ahead)
set -g whitespace ' '
if test $last_status = 0
set initial_indicator "$green"
set status_indicator "$normal$cyan$green"
else
set initial_indicator "$red$last_status"
set status_indicator "$red$red$red"
end
set -l cwd $cyan(pwd)
if [ (_git_branch_name) ]
if test (_git_branch_name) = 'master'
set -l git_branch (_git_branch_name)
set git_info "$normal git:($red$git_branch$normal)"
else
set -l git_branch (_git_branch_name)
set git_info "$normal git:($blue$git_branch$normal)"
end
if [ (_is_git_dirty) ]
set -l dirty "$yellow"
set git_info "$git_info$dirty"
end
end
# Notify if a command took more than 5 minutes
if [ "$CMD_DURATION" -gt 300000 ]
echo The last command took (math "$CMD_DURATION/1000") seconds.
end
echo -n -s $initial_indicator $whitespace $cwd $git_info $whitespace $ahead $status_indicator $whitespace
end
function _git_ahead
set -l commits (command git rev-list --left-right '@{upstream}...HEAD' ^/dev/null)
if [ $status != 0 ]
return
end
set -l behind (count (for arg in $commits; echo $arg; end | grep '^<'))
set -l ahead (count (for arg in $commits; echo $arg; end | grep -v '^<'))
switch "$ahead $behind"
case '' # no upstream
case '0 0' # equal to upstream
return
case '* 0' # ahead of upstream
echo "$blue$normal_c$ahead$whitespace"
case '0 *' # behind upstream
echo "$red$normal_c$behind$whitespace"
case '*' # diverged from upstream
echo "$blue$normal$ahead $red$normal_c$behind$whitespace"
end
end
function _git_branch_name
echo (command git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||')
end
function _is_git_dirty
echo (command git status -s --ignore-submodules=dirty ^/dev/null)
end
## fish prompt end ##

View File

@ -0,0 +1,33 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3100
SETUVAR fish_color_autosuggestion:555\x1ebrblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:005fd7
SETUVAR fish_color_comment:990000
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:009900
SETUVAR fish_color_error:ff0000
SETUVAR fish_color_escape:00a6b2
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:00a6b2
SETUVAR fish_color_param:00afff
SETUVAR fish_color_quote:999900
SETUVAR fish_color_redirection:00afff
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_greeting:\x1d
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:\x1d
SETUVAR fish_pager_color_description:B3A06D\x1eyellow
SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_user_paths:/home/solomon/\x2escripts/

122
.config/rofi/config.rasi Normal file
View File

@ -0,0 +1,122 @@
/*Dracula theme based on the Purple official rofi theme*/
* {
font: "Jetbrains Mono 12";
foreground: #f8f8f2;
background-color: #282a36;
active-background: #6272a4;
urgent-background: #ff5555;
selected-background: @active-background;
selected-urgent-background: @urgent-background;
selected-active-background: @active-background;
separatorcolor: @active-background;
bordercolor: @active-background;
}
#window {
background-color: @background;
border: 1;
border-radius: 6;
border-color: @bordercolor;
padding: 5;
}
#mainbox {
border: 0;
padding: 0;
}
#message {
border: 1px dash 0px 0px ;
border-color: @separatorcolor;
padding: 1px ;
}
#textbox {
text-color: @foreground;
}
#listview {
fixed-height: 0;
border: 2px dash 0px 0px ;
border-color: @bordercolor;
spacing: 2px ;
scrollbar: false;
padding: 2px 0px 0px ;
}
#element {
border: 0;
padding: 1px ;
}
#element.normal.normal {
background-color: @background;
text-color: @foreground;
}
#element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
#element.normal.active {
background-color: @active-background;
text-color: @foreground;
}
#element.selected.normal {
background-color: @selected-background;
text-color: @foreground;
}
#element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @foreground;
}
#element.selected.active {
background-color: @selected-active-background;
text-color: @foreground;
}
#element.alternate.normal {
background-color: @background;
text-color: @foreground;
}
#element.alternate.urgent {
background-color: @urgent-background;
text-color: @foreground;
}
#element.alternate.active {
background-color: @active-background;
text-color: @foreground;
}
#scrollbar {
width: 2px ;
border: 0;
handle-width: 8px ;
padding: 0;
}
#sidebar {
border: 2px dash 0px 0px ;
border-color: @separatorcolor;
}
#button.selected {
background-color: @selected-background;
text-color: @foreground;
}
#inputbar {
spacing: 0;
text-color: @foreground;
padding: 1px ;
}
#case-indicator {
spacing: 0;
text-color: @foreground;
}
#entry {
spacing: 0;
text-color: @foreground;
}
#prompt {
spacing: 0;
text-color: @foreground;
}
#inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
#textbox-prompt-colon {
expand: false;
str: ":";
margin: 0px 0.3em 0em 0em ;
text-color: @foreground;
}

View File

@ -0,0 +1,48 @@
#!/bin/sh
# Copied from https://github.com/jaor/xmobar/issues/239#issuecomment-233206552
# Detects the width of running trayer-srg window (xprop name 'panel')
# and creates an XPM icon of that width, 1px height, and transparent.
# Outputs an <icon>-tag for use in xmobar to display the generated
# XPM icon.
#
# Run script from xmobar:
# `Run Com "/where/ever/trayer-padding-icon.sh" [] "trayerpad" 10`
# and use `%trayerpad%` in your template.
# Function to create a transparent Wx1 px XPM icon
create_xpm_icon () {
timestamp=$(date)
pixels=$(for i in `seq $1`; do echo -n "."; done)
cat << EOF > "$2"
/* XPM *
static char * trayer_pad_xpm[] = {
/* This XPM icon is used for padding in xmobar to */
/* leave room for trayer-srg. It is dynamically */
/* updated by by trayer-padding-icon.sh which is run */
/* by xmobar. */
/* Created: ${timestamp} */
/* <w/cols> <h/rows> <colors> <chars per pixel> */
"$1 1 1 1",
/* Colors (none: transparent) */
". c none",
/* Pixels */
"$pixels"
};
EOF
}
# Width of the trayer window
width=$(xprop -name panel | grep 'program specified minimum size' | cut -d ' ' -f 5)
# Icon file name
iconfile="/tmp/trayer-padding-${width}px.xpm"
# If the desired icon does not exist create it
if [ ! -f $iconfile ]; then
create_xpm_icon $width $iconfile
fi
# Output the icon tag for xmobar
echo "<icon=${iconfile}/>"

126
.config/xmobar/xmobarrc.hs Normal file
View File

@ -0,0 +1,126 @@
Config {
-- appearance
font = "xft:Fira Code:size=11:bold:antialias=true:hinting=true"
, bgColor = "#14071F"
, fgColor = "#646464"
, position = Top
, border = BottomB
, borderColor = "#14071F"
, iconRoot = "/home/solomon/.xmonad/xpm/" -- default: "."
-- layout
, sepChar = "%" -- delineator between plugin names and straight text
, alignSep = "}{" -- separator between left-right alignment
, template = " <action=`xdotool key super+o`><icon=haskell_20.xpm/></action> %UnsafeStdinReader% <fc=#805a9b>|</fc> <fc=#f3617a>%cpu%</fc> <fc=#805a9b>|</fc> <fc=#b262cd>%memory%</fc> <fc=#805a9b>|</fc> <fc=#706bc2>%dynnetwork%</fc> } \
\{ <fc=#ee9a00>%date%</fc> <fc=#805a9b>|</fc> <fc=#b55322>%YPAD%</fc> <fc=#805a9b>|</fc> <fc=#6e1a11>%battery%</fc> %trayerpad%"
}
-- general behavior
, lowerOnStart = True -- send to bottom of window stack on start
, hideOnStart = False -- start with window unmapped (hidden)
, allDesktops = True -- show on all desktops
, overrideRedirect = True -- set the Override Redirect flag (Xlib)
, pickBroadest = False -- choose widest display (multi-monitor)
, persistent = True -- enable/disable hiding (True = disabled)
-- plugins
-- Numbers can be automaticallJy colored according to their value. xmobar
-- decides color based on a three-tier/two-cutoff system, controlled by
-- command options:
-- --Low sets the low cutoff
-- --High sets the high cutoff
--
-- --low sets the color below --Low cutoff
-- --normal sets the color between --Low and --High cutoffs
-- --High sets the color above --High cutoff
--
-- The --template option controls how the plugin is displayed. Text
-- color can be set by enclosing in <fc></fc> tags. For more details
-- see http://projects.haskell.org/xmobar/#system-monitor-plugins.
, commands =
-- weather monitor
[ Run Weather "YPAD" ["--template" , "<station>: <tempC>°C"
, "--Low" , "10"
, "--High" , "25"
, "--normal" , "#95C05D"
, "--high" , "red"
, "--low" , "lightblue"
] 36000
-- network activity monitor
-- , Run Network "enp33s0" [ "--template" , "eth: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- , Run Network "wlp36s0" [ "--template" , "wlan: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- network activity monitor (dynamic interface resolution)
, Run DynNetwork [ "--template" , "<dev>: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
, "--Low" , "100000" -- units: B/s
, "--High" , "500000" -- units: B/s
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- cpu activity monitor
, Run Cpu [ "--template" , "cpu: <total>%"
, "--Low" , "30" -- units: %
, "--High" , "60" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- memory usage monitor
-- , Run Memory [ "--template" ,"mem: <usedratio>% (<used>Mb)"
, Run Memory [ "--template" ,"mem: <usedratio>%"
, "--Low" , "20" -- units: %
, "--High" , "90" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- time and date indicator
-- (%F = y-m-d date, %a = day of week, %T = h:m:s time)
, Run Date "%a %d %b %H:%M" "date" 10
-- keyboard layout indicator
-- , Run Kbd [ ("us(dvorak)" , "DV")
-- , ("us" , "US")
-- ]
-- Battery information. This is likely to require some customization
-- based upon your specific hardware. Or, for a desktop you may want
-- to just remove this section entirely.
, Run BatteryP ["BAT0"]
[ "--template", "<acstatus>: <left>%, <timeleft>"
, "-L", "10", "-H", "80"
, "-l", "red", "-h", "green"
, "--", "-O", "Charging", "-o", "Battery"
] 10
-- Runs a standard shell command 'uname -r' to get kernel version
-- , Run Com "uname" ["-r"] "" 3600
-- Script that dynamically adjusts xmobar padding depending on number of trayer icons.
, Run Com "/home/solomon/.config/xmobar/trayer-padding-icon.sh" [] "trayerpad" 20
-- Prints out the left side items such as workspaces, layout, etc.
, Run UnsafeStdinReader
]
}

View File

@ -0,0 +1,110 @@
loConfig {
-- appearance
font = "xft:Fira Code:size=14:bold:antialias=true:hinting=true"
, bgColor = "#14071F"
, fgColor = "#646464"
, position = Top
, border = BottomB
, borderColor = "#646464"
, iconRoot = "/home/solomon/.xmonad/xpm/" -- default: "."
-- layout
, sepChar = "%" -- delineator between plugin names and straight text
, alignSep = "}{" -- separator between left-right alignment
, template = " <action=`xdotool key super+p`><icon=haskell_20.xpm/></action> <fc=#f3617a>%cpu%</fc> <fc=#805a9b>|</fc> <fc=#b262cd>%memory%</fc> <fc=#805a9b>|</fc> <fc=#706bc2>%dynnetwork%</fc> }\
\{ <fc=#ee9a00>%date%</fc> <fc=#805a9b>|</fc> <fc=#b55322>%YPAD%</fc> <fc=#805a9b>|</fc> <fc=#882410>%kbd%</fc> <fc=#805a9b>|</fc> <fc=#6e1a11>%uname%</fc> %trayerpad%"
}
-- general behavior
, lowerOnStart = True -- send to bottom of window stack on start
, hideOnStart = False -- start with window unmapped (hidden)
, allDesktops = True -- show on all desktops
, overrideRedirect = True -- set the Override Redirect flag (Xlib)
, pickBroadest = False -- choose widest display (multi-monitor)
, persistent = True -- enable/disable hiding (True = disabled)
-- plugins
-- Numbers can be automatically colored according to their value. xmobar
-- decides color based on a three-tier/two-cutoff system, controlled by
-- command options:
-- --Low sets the low cutoff
-- --High sets the high cutoff
--
-- --low sets the color below --Low cutoff
-- --normal sets the color between --Low and --High cutoffs
-- --High sets the color above --High cutoff
--
-- The --template option controls how the plugin is displayed. Text
-- color can be set by enclosing in <fc></fc> tags. For more details
-- see http://projects.haskell.org/xmobar/#system-monitor-plugins.
, commands =
-- weather monitor
[ Run Weather "YPAD" ["--template" , "<station>: <tempC>°C"
, "--Low" , "10"
, "--High" , "25"
, "--normal" , "#95C05D"
, "--high" , "red"
, "--low" , "lightblue"
] 36000
-- -- network activity monitor
-- , Run Network "enp33s0" [ "--template" , "eth: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- , Run Network "wlp36s0" [ "--template" , "wlan: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- network activity monitor (dynamic interface resolution)
, Run DynNetwork [ "--template" , "<dev>: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
, "--Low" , "100000" -- units: B/s
, "--High" , "500000" -- units: B/s
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- cpu activity monitor
, Run Cpu [ "--template" , "cpu: <total>%"
, "--Low" , "30" -- units: %
, "--High" , "60" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- memory usage monitor
, Run Memory [ "--template" ,"mem: <usedratio>% (<used>Mb)"
, "--Low" , "20" -- units: %
, "--High" , "90" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- time and date indicator
-- (%F = y-m-d date, %a = day of week, %T = h:m:s time)
, Run Date "%a %d %b %Y %H:%M:%S" "date" 10
-- keyboard layout indicator
, Run Kbd [ ("us(dvorak)" , "DV")
, ("us" , "US")
]
-- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600
-- Script that dynamically adjusts xmobar padding depending on number of trayer icons.
, Run Com "/home/solomon/.config/xmobar/trayer-padding-icon.sh" [] "trayerpad" 20
]
}

View File

@ -0,0 +1,124 @@
Config {
-- appearance
font = "xft:Fira Code:size=14:bold:antialias=true:hinting=true"
, bgColor = "#14071F"
, fgColor = "#646464"
, position = Top
, border = BottomB
, borderColor = "#646464"
, iconRoot = "/home/solomon/.xmonad/xpm/" -- default: "."
-- layout
, sepChar = "%" -- delineator between plugin names and straight text
, alignSep = "}{" -- separator between left-right alignment
, template = " <action=`xdotool key super+p`><icon=haskell_20.xpm/></action> <fc=#f3617a>%cpu%</fc> <fc=#805a9b>|</fc> <fc=#b262cd>%memory%</fc> <fc=#805a9b>|</fc> <fc=#706bc2>%dynnetwork%</fc> <fc=#805a9b>|</fc> %UnsafeStdinReader% }\
\{ <fc=#ee9a00>%date%</fc> <fc=#805a9b>|</fc> <fc=#b55322>%YPAD%</fc> <fc=#805a9b>|</fc> <fc=#882410>%kbd%</fc> <fc=#805a9b>|</fc> <fc=#6e1a11>%uname%</fc> %trayerpad%"
}
-- general behavior
, lowerOnStart = True -- send to bottom of window stack on start
, hideOnStart = False -- start with window unmapped (hidden)
, allDesktops = True -- show on all desktops
, overrideRedirect = True -- set the Override Redirect flag (Xlib)
, pickBroadest = False -- choose widest display (multi-monitor)
, persistent = True -- enable/disable hiding (True = disabled)
-- plugins
-- Numbers can be automatically colored according to their value. xmobar
-- decides color based on a three-tier/two-cutoff system, controlled by
-- command options:
-- --Low sets the low cutoff
-- --High sets the high cutoff
--
-- --low sets the color below --Low cutoff
-- --normal sets the color between --Low and --High cutoffs
-- --High sets the color above --High cutoff
--
-- The --template option controls how the plugin is displayed. Text
-- color can be set by enclosing in <fc></fc> tags. For more details
-- see http://projects.haskell.org/xmobar/#system-monitor-plugins.
, commands =
-- weather monitor
[ Run Weather "YPAD" ["--template" , "<station>: <tempC>°C"
, "--Low" , "10"
, "--High" , "25"
, "--normal" , "#95C05D"
, "--high" , "red"
, "--low" , "lightblue"
] 36000
-- -- network activity monitor
-- , Run Network "enp33s0" [ "--template" , "eth: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- , Run Network "wlp36s0" [ "--template" , "wlan: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
Run BatteryP ["BAT0"]
["-t", "<acstatus><watts> (<left>%)",
"-L", "10", "-H", "80", "-p", "3",
"--", "-O", "<fc=green>On</fc> - ", "-i", "",
"-L", "-15", "-H", "-5",
"-l", "red", "-m", "blue", "-h", "green"
"-a", "notify-send -u critical 'Battery running out!!'",
"-A", "3"]
600
-- network activity monitor (dynamic interface resolution)
, Run DynNetwork [ "--template" , "<dev>: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
, "--Low" , "100000" -- units: B/s
, "--High" , "500000" -- units: B/s
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- cpu activity monitor
, Run Cpu [ "--template" , "cpu: <total>%"
, "--Low" , "30" -- units: %
, "--High" , "60" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- memory usage monitor
, Run Memory [ "--template" ,"mem: <usedratio>% (<used>Mb)"
, "--Low" , "20" -- units: %
, "--High" , "90" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- time and date indicator
-- (%F = y-m-d date, %a = day of week, %T = h:m:s time)
, Run Date "%a %d %b %Y %H:%M:%S" "date" 10
-- keyboard layout indicator
, Run Kbd [ ("us(dvorak)" , "DV")
, ("us" , "US")
]
-- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600
-- Script that dynamically adjusts xmobar padding depending on number of trayer icons.
, Run Com "/home/solomon/.config/xmobar/trayer-padding-icon.sh" [] "trayerpad" 20
-- Prints out the left side items such as workspaces, layout, etc.
-- The workspaces are 'clickable' in my configs.
--, Run UnsafeStdinReader
]
}

View File

@ -0,0 +1,38 @@
Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
, additionalFonts = []
, borderColor = "black"
, border = TopB
, bgColor = "black"
, fgColor = "grey"
, alpha = 255
, position = Top
, textOffset = -1
, iconOffset = -1
, lowerOnStart = True
, pickBroadest = False
, persistent = False
, hideOnStart = False
, iconRoot = "."
, allDesktops = True
, overrideRedirect = True
, commands = [ Run Weather "EGPF" ["-t","<station>: <tempC>C",
"-L","18","-H","25",
"--normal","green",
"--high","red",
"--low","lightblue"] 36000
, Run Network "eth0" ["-L","0","-H","32",
"--normal","green","--high","red"] 10
, Run Network "eth1" ["-L","0","-H","32",
"--normal","green","--high","red"] 10
, Run Cpu ["-L","3","-H","50",
"--normal","green","--high","red"] 10
, Run Memory ["-t","Mem: <usedratio>%"] 10
, Run Swap [] 10
, Run Com "uname" ["-s","-r"] "" 36000
, Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
]
, sepChar = "%"
, alignSep = "}{"
, template = "%cpu% | %memory% * %swap% | %eth0% - %eth1% }\
\{ <fc=#ee9a00>%date%</fc>| %EGPF% | %uname%"
}

119
.config/xmobar/xmobarrc0 Executable file
View File

@ -0,0 +1,119 @@
Config {
-- appearance
font = "xft:Fira Code:size=14:bold:antialias=true:hinting=true"
, bgColor = "#14071F"
, fgColor = "#646464"
, position = Top
, border = BottomB
, borderColor = "#646464"
, iconRoot = "/home/solomon/.xmonad/xpm/" -- default: "."
-- layout
, sepChar = "%" -- delineator between plugin names and straight text
, alignSep = "}{" -- separator between left-right alignment
, template = " <action=`xdotool key super+p`><icon=haskell_20.xpm/></action> <fc=#f3617a>%cpu%</fc> <fc=#805a9b>|</fc> <fc=#b262cd>%memory%</fc> <fc=#805a9b>|</fc> <fc=#706bc2>%dynnetwork%</fc> }\
\{ <fc=#ee9a00>%date%</fc> <fc=#805a9b>|</fc> <fc=#b55322>%YPAD%</fc> <fc=#805a9b>|</fc> <fc=#882410>%kbd%</fc> <fc=#805a9b>|</fc> <fc=#6e1a11>%uname%</fc> %trayerpad%"
}
-- , template = " <action=`xdotool key super+p`><icon=haskell_20.xpm/></action> <fc=#f3617a>%cpu%</fc> <fc=#805a9b>|</fc> <fc=#b262cd>%memory%</fc> <fc=#805a9b>|</fc> <fc=#706bc2>%dynnetwork%</fc> <fc=#805a9b>|</fc> %UnsafeStdinReader% }\
-- \{ <fc=#ee9a00>%date%</fc> <fc=#805a9b>|</fc> <fc=#b55322>%YPAD%</fc> <fc=#805a9b>|</fc> <fc=#882410>%kbd%</fc> <fc=#805a9b>|</fc> <fc=#6e1a11>%uname%</fc> %trayerpad%"
-- }
-- general behavior
, lowerOnStart = True -- send to bottom of window stack on start
, hideOnStart = False -- start with window unmapped (hidden)
, allDesktops = True -- show on all desktops
, overrideRedirect = True -- set the Override Redirect flag (Xlib)
, pickBroadest = False -- choose widest display (multi-monitor)
, persistent = True -- enable/disable hiding (True = disabled)
-- plugins
-- Numbers can be automatically colored according to their value. xmobar
-- decides color based on a three-tier/two-cutoff system, controlled by
-- command options:
-- --Low sets the low cutoff
-- --High sets the high cutoff
--
-- --low sets the color below --Low cutoff
-- --normal sets the color between --Low and --High cutoffs
-- --High sets the color above --High cutoff
--
-- The --template option controls how the plugin is displayed. Text
-- color can be set by enclosing in <fc></fc> tags. For more details
-- see http://projects.haskell.org/xmobar/#system-monitor-plugins.
, commands =
-- weather monitor
[ Run Weather "YPAD" ["--template" , "<station>: <tempC>°C"
, "--Low" , "10"
, "--High" , "25"
, "--normal" , "#95C05D"
, "--high" , "red"
, "--low" , "lightblue"
] 36000
-- -- network activity monitor
-- , Run Network "enp33s0" [ "--template" , "eth: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- , Run Network "wlp36s0" [ "--template" , "wlan: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- network activity monitor (dynamic interface resolution)
, Run DynNetwork [ "--template" , "<dev>: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
, "--Low" , "100000" -- units: B/s
, "--High" , "500000" -- units: B/s
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- cpu activity monitor
, Run Cpu [ "--template" , "cpu: <total>%"
, "--Low" , "30" -- units: %
, "--High" , "60" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- memory usage monitor
, Run Memory [ "--template" ,"mem: <usedratio>% (<used>Mb)"
, "--Low" , "20" -- units: %
, "--High" , "90" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- time and date indicator
-- (%F = y-m-d date, %a = day of week, %T = h:m:s time)
, Run Date "%a %d %b %Y %H:%M:%S" "date" 10
-- keyboard layout indicator
, Run Kbd [ ("us(dvorak)" , "DV")
, ("us" , "US")
]
-- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600
-- Script that dynamically adjusts xmobar padding depending on number of trayer icons.
, Run Com "/home/solomon/.config/xmobar/trayer-padding-icon.sh" [] "trayerpad" 20
-- Prints out the left side items such as workspaces, layout, etc.
-- The workspaces are 'clickable' in my configs.
--, Run UnsafeStdinReader
]
}

119
.config/xmobar/xmobarrc1 Executable file
View File

@ -0,0 +1,119 @@
Config {
-- appearance
font = "xft:Fira Code:size=14:bold:antialias=true:hinting=true"
, bgColor = "#14071F"
, fgColor = "#646464"
, position = Top
, border = BottomB
, borderColor = "#646464"
, iconRoot = "/home/solomon/.xmonad/xpm/" -- default: "."
-- layout
, sepChar = "%" -- delineator between plugin names and straight text
, alignSep = "}{" -- separator between left-right alignment
, template = " <action=`xdotool key super+p`><icon=haskell_20.xpm/></action> <fc=#f3617a>%cpu%</fc> <fc=#805a9b>|</fc> <fc=#b262cd>%memory%</fc> <fc=#805a9b>|</fc> <fc=#706bc2>%dynnetwork%</fc> }\
\{ <fc=#ee9a00>%date%</fc> <fc=#805a9b>|</fc> <fc=#b55322>%YPAD%</fc> <fc=#805a9b>|</fc> <fc=#882410>%kbd%</fc> <fc=#805a9b>|</fc> <fc=#6e1a11>%uname%</fc> %trayerpad%"
}
-- , template = " <action=`xdotool key super+p`><icon=haskell_20.xpm/></action> <fc=#f3617a>%cpu%</fc> <fc=#805a9b>|</fc> <fc=#b262cd>%memory%</fc> <fc=#805a9b>|</fc> <fc=#706bc2>%dynnetwork%</fc> <fc=#805a9b>|</fc> %UnsafeStdinReader% }\
-- \{ <fc=#ee9a00>%date%</fc> <fc=#805a9b>|</fc> <fc=#b55322>%YPAD%</fc> <fc=#805a9b>|</fc> <fc=#882410>%kbd%</fc> <fc=#805a9b>|</fc> <fc=#6e1a11>%uname%</fc> %trayerpad%"
-- }
-- general behavior
, lowerOnStart = True -- send to bottom of window stack on start
, hideOnStart = False -- start with window unmapped (hidden)
, allDesktops = True -- show on all desktops
, overrideRedirect = True -- set the Override Redirect flag (Xlib)
, pickBroadest = False -- choose widest display (multi-monitor)
, persistent = True -- enable/disable hiding (True = disabled)
-- plugins
-- Numbers can be automatically colored according to their value. xmobar
-- decides color based on a three-tier/two-cutoff system, controlled by
-- command options:
-- --Low sets the low cutoff
-- --High sets the high cutoff
--
-- --low sets the color below --Low cutoff
-- --normal sets the color between --Low and --High cutoffs
-- --High sets the color above --High cutoff
--
-- The --template option controls how the plugin is displayed. Text
-- color can be set by enclosing in <fc></fc> tags. For more details
-- see http://projects.haskell.org/xmobar/#system-monitor-plugins.
, commands =
-- weather monitor
[ Run Weather "YPAD" ["--template" , "<station>: <tempC>°C"
, "--Low" , "10"
, "--High" , "25"
, "--normal" , "#95C05D"
, "--high" , "red"
, "--low" , "lightblue"
] 36000
-- -- network activity monitor
-- , Run Network "enp33s0" [ "--template" , "eth: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- , Run Network "wlp36s0" [ "--template" , "wlan: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- network activity monitor (dynamic interface resolution)
, Run DynNetwork [ "--template" , "<dev>: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
, "--Low" , "100000" -- units: B/s
, "--High" , "500000" -- units: B/s
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- cpu activity monitor
, Run Cpu [ "--template" , "cpu: <total>%"
, "--Low" , "30" -- units: %
, "--High" , "60" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- memory usage monitor
, Run Memory [ "--template" ,"mem: <usedratio>% (<used>Mb)"
, "--Low" , "20" -- units: %
, "--High" , "90" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- time and date indicator
-- (%F = y-m-d date, %a = day of week, %T = h:m:s time)
, Run Date "%a %d %b %Y %H:%M:%S" "date" 10
-- keyboard layout indicator
, Run Kbd [ ("us(dvorak)" , "DV")
, ("us" , "US")
]
-- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600
-- Script that dynamically adjusts xmobar padding depending on number of trayer icons.
, Run Com "/home/solomon/.config/xmobar/trayer-padding-icon.sh" [] "trayerpad" 20
-- Prints out the left side items such as workspaces, layout, etc.
-- The workspaces are 'clickable' in my configs.
--, Run UnsafeStdinReader
]
}

119
.config/xmobar/xmobarrc2 Executable file
View File

@ -0,0 +1,119 @@
Config {
-- appearance
font = "xft:Fira Code:size=14:bold:antialias=true:hinting=true"
, bgColor = "#14071F"
, fgColor = "#646464"
, position = Top
, border = BottomB
, borderColor = "#646464"
, iconRoot = "/home/solomon/.xmonad/xpm/" -- default: "."
-- layout
, sepChar = "%" -- delineator between plugin names and straight text
, alignSep = "}{" -- separator between left-right alignment
, template = " <action=`xdotool key super+p`><icon=haskell_20.xpm/></action> <fc=#f3617a>%cpu%</fc> <fc=#805a9b>|</fc> <fc=#b262cd>%memory%</fc> <fc=#805a9b>|</fc> <fc=#706bc2>%dynnetwork%</fc> }\
\{ <fc=#ee9a00>%date%</fc> <fc=#805a9b>|</fc> <fc=#b55322>%YPAD%</fc> <fc=#805a9b>|</fc> <fc=#882410>%kbd%</fc> <fc=#805a9b>|</fc> <fc=#6e1a11>%uname%</fc> %trayerpad%"
}
-- , template = " <action=`xdotool key super+p`><icon=haskell_20.xpm/></action> <fc=#f3617a>%cpu%</fc> <fc=#805a9b>|</fc> <fc=#b262cd>%memory%</fc> <fc=#805a9b>|</fc> <fc=#706bc2>%dynnetwork%</fc> <fc=#805a9b>|</fc> %UnsafeStdinReader% }\
-- \{ <fc=#ee9a00>%date%</fc> <fc=#805a9b>|</fc> <fc=#b55322>%YPAD%</fc> <fc=#805a9b>|</fc> <fc=#882410>%kbd%</fc> <fc=#805a9b>|</fc> <fc=#6e1a11>%uname%</fc> %trayerpad%"
-- }
-- general behavior
, lowerOnStart = True -- send to bottom of window stack on start
, hideOnStart = False -- start with window unmapped (hidden)
, allDesktops = True -- show on all desktops
, overrideRedirect = True -- set the Override Redirect flag (Xlib)
, pickBroadest = False -- choose widest display (multi-monitor)
, persistent = True -- enable/disable hiding (True = disabled)
-- plugins
-- Numbers can be automatically colored according to their value. xmobar
-- decides color based on a three-tier/two-cutoff system, controlled by
-- command options:
-- --Low sets the low cutoff
-- --High sets the high cutoff
--
-- --low sets the color below --Low cutoff
-- --normal sets the color between --Low and --High cutoffs
-- --High sets the color above --High cutoff
--
-- The --template option controls how the plugin is displayed. Text
-- color can be set by enclosing in <fc></fc> tags. For more details
-- see http://projects.haskell.org/xmobar/#system-monitor-plugins.
, commands =
-- weather monitor
[ Run Weather "YPAD" ["--template" , "<station>: <tempC>°C"
, "--Low" , "10"
, "--High" , "25"
, "--normal" , "#95C05D"
, "--high" , "red"
, "--low" , "lightblue"
] 36000
-- -- network activity monitor
-- , Run Network "enp33s0" [ "--template" , "eth: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- , Run Network "wlp36s0" [ "--template" , "wlan: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
-- , "--Low" , "100000" -- units: B/s
-- , "--High" , "500000" -- units: B/s
-- , "--low" , "#95C05D"
-- , "--normal" , "#ee9a00"
-- , "--high" , "#882410"
-- ] 10
-- network activity monitor (dynamic interface resolution)
, Run DynNetwork [ "--template" , "<dev>: <icon=net_up_20.xpm/><tx>kB/s <icon=net_down_20.xpm/><rx>kB/s"
, "--Low" , "100000" -- units: B/s
, "--High" , "500000" -- units: B/s
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- cpu activity monitor
, Run Cpu [ "--template" , "cpu: <total>%"
, "--Low" , "30" -- units: %
, "--High" , "60" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- memory usage monitor
, Run Memory [ "--template" ,"mem: <usedratio>% (<used>Mb)"
, "--Low" , "20" -- units: %
, "--High" , "90" -- units: %
, "--low" , "#95C05D"
, "--normal" , "#ee9a00"
, "--high" , "#882410"
] 10
-- time and date indicator
-- (%F = y-m-d date, %a = day of week, %T = h:m:s time)
, Run Date "%a %d %b %Y %H:%M:%S" "date" 10
-- keyboard layout indicator
, Run Kbd [ ("us(dvorak)" , "DV")
, ("us" , "US")
]
-- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600
-- Script that dynamically adjusts xmobar padding depending on number of trayer icons.
, Run Com "/home/solomon/.config/xmobar/trayer-padding-icon.sh" [] "trayerpad" 20
-- Prints out the left side items such as workspaces, layout, etc.
-- The workspaces are 'clickable' in my configs.
--, Run UnsafeStdinReader
]
}

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.cfg

368
.newsboat/urls Normal file
View File

@ -0,0 +1,368 @@
https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg
https://www.youtube.com/feeds/videos.xml?channel_id=UCYVU6rModlGxvJbszCclGGw
https://www.youtube.com/feeds/videos.xml?channel_id=UClFSU9_bUb4Rc6OYfTt5SPw
https://www.youtube.com/feeds/videos.xml?channel_id=UCL_f53ZEJxp8TtlOkHwMV9Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCioZY1p0bZ4Xt-yodw8_cBQ
https://www.youtube.com/feeds/videos.xml?channel_id=UC2-i3KuYoODXsM99Z3-Gm0A
https://www.youtube.com/feeds/videos.xml?channel_id=UCs7nPQIEba0T3tGOWWsZpJQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCcXhhVwCT6_WqjkEniejRJQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCXuqSBlHAE6Xw-yeJA0Tunw
https://www.youtube.com/feeds/videos.xml?channel_id=UCjr2bPAyPV7t35MvcgT3W8Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCUNoAjAgVHEHc6jrUr4XuWQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCNvsIonJdJ5E4EXMa65VYpA
https://www.youtube.com/feeds/videos.xml?channel_id=UCCvcd0FYi58LwyTQP9LITpA
https://www.youtube.com/feeds/videos.xml?channel_id=UC2W-gFz7UfNVdx0N1bgTB4A
https://www.youtube.com/feeds/videos.xml?channel_id=UC-lHJZR3Gqxm24_Vd_AJ5Yw
https://www.youtube.com/feeds/videos.xml?channel_id=UCymoZh5mmZIKSqTtadRf3ow
https://www.youtube.com/feeds/videos.xml?channel_id=UCNUu9E0ZZbf53NVkPjTk7sw
https://www.youtube.com/feeds/videos.xml?channel_id=UCkFMkIX1Tb2s8CIgfzmUfLA
https://www.youtube.com/feeds/videos.xml?channel_id=UCgclKg8oaVlkuCurCxo2hOw
https://www.youtube.com/feeds/videos.xml?channel_id=UCjDQKxiTVpXutZc2Ra9wCAg
https://www.youtube.com/feeds/videos.xml?channel_id=UCD6VugMZKRhSyzWEWA9W2fg
https://www.youtube.com/feeds/videos.xml?channel_id=UCSCoziKHqjqbox3Fv3Pb4BA
https://www.youtube.com/feeds/videos.xml?channel_id=UCMTk_R_Y49jvq-HQXDmKI0Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCBFIHC0C2roQllCR9bnFX4g
https://www.youtube.com/feeds/videos.xml?channel_id=UCtZO3K2p8mqFwiKWb9k7fXA
https://www.youtube.com/feeds/videos.xml?channel_id=UCfMJ2MchTSW2kWaT0kK94Yw
https://www.youtube.com/feeds/videos.xml?channel_id=UCg4XK-l40KZD7fLi12pJ1YA
https://www.youtube.com/feeds/videos.xml?channel_id=UCdcemy56JtVTrsFIOoqvV8g
https://www.youtube.com/feeds/videos.xml?channel_id=UCJy232tY_LUd1NuBgsSNUEA
https://www.youtube.com/feeds/videos.xml?channel_id=UCpIafFPGutTAKOBHMtGen7g
https://www.youtube.com/feeds/videos.xml?channel_id=UCdBK94H6oZT2Q7l0-b0xmMg
https://www.youtube.com/feeds/videos.xml?channel_id=UC0e3QhIYukixgh5VVpKHH9Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCsP7Bpw36J666Fct5M8u-ZA
https://www.youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA
https://www.youtube.com/feeds/videos.xml?channel_id=UCu6mSoMNzHQiBIOCkHUa2Aw
https://www.youtube.com/feeds/videos.xml?channel_id=UC6107grRI4m0o2-emgoDnAA
https://www.youtube.com/feeds/videos.xml?channel_id=UC4USoIAL9qcsx5nCZV_QRnA
https://www.youtube.com/feeds/videos.xml?channel_id=UC9_p50tH3WmMslWRWKnM7dQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCPZUQqtVDmcjm4NY5FkzqLA
https://www.youtube.com/feeds/videos.xml?channel_id=UCafxR2HWJRmMfSdyZXvZMTw
https://www.youtube.com/feeds/videos.xml?channel_id=UCi7l9chXMljpUft67vw78qw
https://www.youtube.com/feeds/videos.xml?channel_id=UCgmI-uiLLAg--vDe7FFdekA
https://www.youtube.com/feeds/videos.xml?channel_id=UC7SeFWZYFmsm1tqWxfuOTPQ
https://www.youtube.com/feeds/videos.xml?channel_id=UC3KEoMzNz8eYnwBC34RaKCQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCYwVxWpjeKFWwu8TML-Te9A
https://www.youtube.com/feeds/videos.xml?channel_id=UCimiUgDLbi6P17BdaCZpVbg
https://www.youtube.com/feeds/videos.xml?channel_id=UCyQ-DUV6lZgoL8wiPusYiUg
https://www.youtube.com/feeds/videos.xml?channel_id=UCEtB-nx5ngoNJWEzYa-yXBg
https://www.youtube.com/feeds/videos.xml?channel_id=UCcMDMoNu66_1Hwi5-MeiQgw
https://www.youtube.com/feeds/videos.xml?channel_id=UCNtQ6jbQgkV4kII043lU06w
https://www.youtube.com/feeds/videos.xml?channel_id=UCyWDmyZRjrGHeKF-ofFsT5Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCPcFg7aBbaVzXoIKSNqwaww
https://www.youtube.com/feeds/videos.xml?channel_id=UCKOvOaJv4GK-oDqx-sj7VVg
https://www.youtube.com/feeds/videos.xml?channel_id=UCEIwxahdLz7bap-VDs9h35A
https://www.youtube.com/feeds/videos.xml?channel_id=UC2C_jShtL725hvbm1arSV9w
https://www.youtube.com/feeds/videos.xml?channel_id=UC4PIiYewI1YGyiZvgNlJNrA
https://www.youtube.com/feeds/videos.xml?channel_id=UCpFuaxD-0PKLolFR3gWhrMw
https://www.youtube.com/feeds/videos.xml?channel_id=UCUmLRMERmJrmUtgnbFfknAg
https://www.youtube.com/feeds/videos.xml?channel_id=UCm9K6rby98W8JigLoZOh6FQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCMu5gPmKp5av0QCAajKTMhw
https://www.youtube.com/feeds/videos.xml?channel_id=UCl2mFZoRqjw_ELax4Yisf6w
https://www.youtube.com/feeds/videos.xml?channel_id=UCSl5Uxu2LyaoAoMMGp6oTJA
https://www.youtube.com/feeds/videos.xml?channel_id=UCtqxG9IrHFU_ID1khGvx9sA
https://www.youtube.com/feeds/videos.xml?channel_id=UCmEu9Y8nodUV0jvsR9NYLJA
https://www.youtube.com/feeds/videos.xml?channel_id=UCOw4v1j3QnzH7X4krQAS7fg
https://www.youtube.com/feeds/videos.xml?channel_id=UCekQr9znsk2vWxBo3YiLq2w
https://www.youtube.com/feeds/videos.xml?channel_id=UCZ-oWkpMnHjTJpeOOlD80OA
https://www.youtube.com/feeds/videos.xml?channel_id=UCwkm_Wcyh0pc7UUmZZfL-6w
https://www.youtube.com/feeds/videos.xml?channel_id=UCSE6yilNScIz1SLTNQvrXMw
https://www.youtube.com/feeds/videos.xml?channel_id=UCGed7ONu3481RxIT7jQ6ngA
https://www.youtube.com/feeds/videos.xml?channel_id=UCkitABalXafr-NqceQdDXtg
https://www.youtube.com/feeds/videos.xml?channel_id=UCtfg1tENiu3SgGMZVduFmTg
https://www.youtube.com/feeds/videos.xml?channel_id=UC91V6D3nkhP89wUb9f_h17g
https://www.youtube.com/feeds/videos.xml?channel_id=UCJdKr0Bgd_5saZYqLCa9mng
https://www.youtube.com/feeds/videos.xml?channel_id=UC9-y-6csu5WGm29I7JiwpnA
https://www.youtube.com/feeds/videos.xml?channel_id=UCBNG0osIBAprVcZZ3ic84vw
https://www.youtube.com/feeds/videos.xml?channel_id=UC9PIn6-XuRKZ5HmYeu46AIw
https://www.youtube.com/feeds/videos.xml?channel_id=UCm9MKnZdmwCAPXvmysjT33g
https://www.youtube.com/feeds/videos.xml?channel_id=UC-j3S3cIXZSzzCkJhJW9_eg
https://www.youtube.com/feeds/videos.xml?channel_id=UCy0tKL1T7wFoYcxCe0xjN6Q
https://www.youtube.com/feeds/videos.xml?channel_id=UC4_bwov47DseacR1-ttTdOg
https://www.youtube.com/feeds/videos.xml?channel_id=UCOxaitvZzdNuGK7jlMsWzlw
https://www.youtube.com/feeds/videos.xml?channel_id=UC0Ize0RLIbGdH5x4wI45G-A
https://www.youtube.com/feeds/videos.xml?channel_id=UCtzpB_RJqbpgJcWXhEo-1iQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCQD3awTLw9i8Xzh85FKsuJA
https://www.youtube.com/feeds/videos.xml?channel_id=UCiRiQGCHGjDLT9FQXFW0I3A
https://www.youtube.com/feeds/videos.xml?channel_id=UCFhXFikryT4aFcLkLw2LBLA
https://www.youtube.com/feeds/videos.xml?channel_id=UCEgoThiTZG6wbTVA6B1Ksaw
https://www.youtube.com/feeds/videos.xml?channel_id=UCoziFm3M4sHDq1kkx0UwtRw
https://www.youtube.com/feeds/videos.xml?channel_id=UCXgxNzAgZ1GExhTW4X1mUrg
https://www.youtube.com/feeds/videos.xml?channel_id=UCecrxw9xtxME6o5_mz4TtOA
https://www.youtube.com/feeds/videos.xml?channel_id=UCmQXOAse-VnzuXHebX5I77g
https://www.youtube.com/feeds/videos.xml?channel_id=UCm6r_b2K5jn1JGkwDcwJXrQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCyyBmfMEmwzv291E-QHdEyg
https://www.youtube.com/feeds/videos.xml?channel_id=UCV3iHQsE2h3CH-LehgPRkMg
https://www.youtube.com/feeds/videos.xml?channel_id=UCVGVbOl6F5rGF4wSYS6Y5yQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCsDmESjqNPukDmVnuneLrqw
https://www.youtube.com/feeds/videos.xml?channel_id=UC9bTzW3hPRF1cV0tBlskT6w
https://www.youtube.com/feeds/videos.xml?channel_id=UCny_vGt2N7_QJ5qBOAHxlcw
https://www.youtube.com/feeds/videos.xml?channel_id=UC0fDG3byEcMtbOqPMymDNbw
https://www.youtube.com/feeds/videos.xml?channel_id=UCm6r_b2K5jn1JGkwDcwJXrQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCNnKprAG-MWLsk-GsbsC2BA
https://www.youtube.com/feeds/videos.xml?channel_id=UCV9_KinVpV-snHe3C3n1hvA
https://www.youtube.com/feeds/videos.xml?channel_id=UCoHhuummRZaIVX7bD4t2czg
https://www.youtube.com/feeds/videos.xml?channel_id=UCJRSYkPQeuf6_6oLsBTf0Tw
https://www.youtube.com/feeds/videos.xml?channel_id=UCDAjO0-hd_RS8ZYJ4W-Iq5Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCGSGPehp0RWfca-kENgBJ9Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCaGev0JRG7Dp5c_R4ROADLw
https://www.youtube.com/feeds/videos.xml?channel_id=UCny_vGt2N7_QJ5qBOAHxlcw
https://www.youtube.com/feeds/videos.xml?channel_id=UC9bTzW3hPRF1cV0tBlskT6w
https://www.youtube.com/feeds/videos.xml?channel_id=UCt7fwAhXDy3oNFTAzF2o8Pw
https://www.youtube.com/feeds/videos.xml?channel_id=UC2V1ul4ul85kac0Y81wXTqQ
https://www.youtube.com/feeds/videos.xml?channel_id=UC_sp6oZDuNfTWzZDfwZyJOg
https://www.youtube.com/feeds/videos.xml?channel_id=UCOxaitvZzdNuGK7jlMsWzlw
https://www.youtube.com/feeds/videos.xml?channel_id=UC5rT7F0PGNuD54rJ9kzgWzw
https://www.youtube.com/feeds/videos.xml?channel_id=UC9RM-iSvTu1uPJb8X5yp3EQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCIMn9OGAE5eeQJhCeO-JvJQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCI1ggmx7c1PUlTkfsv0fU-w
https://www.youtube.com/feeds/videos.xml?channel_id=UCJbPGzawDH1njbqV-D5HqKw
https://www.youtube.com/feeds/videos.xml?channel_id=UCfnJvKB2Nr55ZvHj20O5JZA
https://www.youtube.com/feeds/videos.xml?channel_id=UCtuFxawHK5fDrA8yFy8Vo1Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCJ0-OtVpF0wOKEqT2Z1HEtA
https://www.youtube.com/feeds/videos.xml?channel_id=UCJHvN0zYgO2ZLjePERRLjKQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCveB47lgzZJ1WOf4XYVJNBw
https://www.youtube.com/feeds/videos.xml?channel_id=UCm6QkJHb53JbFeqG8X7S-sg
https://www.youtube.com/feeds/videos.xml?channel_id=UCxZSqd46lCmULpciul-LT6w
https://www.youtube.com/feeds/videos.xml?channel_id=UCLUrVTVTA3PnUFpYvpfMcpg
https://www.youtube.com/feeds/videos.xml?channel_id=UCRbOPaGDB_xOQkVM8Rnn62Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCiDJtJKMICpb9B1qf7qjEOA
https://www.youtube.com/feeds/videos.xml?channel_id=UCp68_FLety0O-n9QU6phsgw
https://www.youtube.com/feeds/videos.xml?channel_id=UCDv0JHqrlqgl0S2TNpNrmdw
https://www.youtube.com/feeds/videos.xml?channel_id=UC4zJAMaYN592qQhMR2OfX_Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCsDmESjqNPukDmVnuneLrqw
https://www.youtube.com/feeds/videos.xml?channel_id=UC6uASnNXIjWzt6zxrWZdLNg
https://www.youtube.com/feeds/videos.xml?channel_id=UCIUATMnLtNo51kKuv95R1UQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCNIuvl7V8zACPpTmmNIqP2A
https://www.youtube.com/feeds/videos.xml?channel_id=UC1_uAIS3r8Vu6JjXWvastJg
https://www.youtube.com/feeds/videos.xml?channel_id=UCYandFV7VSfXwZU15XUHHKQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCivA7_KLKWo43tFcCkFvydw
https://www.youtube.com/feeds/videos.xml?channel_id=UCUgRtDziJirGWqdIveI30SA
https://www.youtube.com/feeds/videos.xml?channel_id=UCR4s1DE9J4DHzZYXMltSMAg
https://www.youtube.com/feeds/videos.xml?channel_id=UCDWIvJwLJsE4LG1Atne2blQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCNjHgaLpdy1IMNK57pYiKiQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCEOXxzW2vU0P-0THehuIIeg
https://www.youtube.com/feeds/videos.xml?channel_id=UCqSHAXN5sqtyE93A-w-8Ddw
https://www.youtube.com/feeds/videos.xml?channel_id=UCaXEr4t_QBZBk3qlIlc2HRg
https://www.youtube.com/feeds/videos.xml?channel_id=UC_w9QzR9_fFJcCSYwtDeKLA
https://www.youtube.com/feeds/videos.xml?channel_id=UCb3orki_DopRkkP3xwMgW2Q
https://www.youtube.com/feeds/videos.xml?channel_id=UC5nc_ZtjKW1htCVZVRxlQAQ
https://www.youtube.com/feeds/videos.xml?channel_id=UC67gfx2Fg7K2NSHqoENVgwA
https://www.youtube.com/feeds/videos.xml?channel_id=UCSKFuxhXiJjF49nwQGZuROQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCA-p1wZ5Tuz9J1_AI_A2NqA
https://www.youtube.com/feeds/videos.xml?channel_id=UCtHaxi4GTYDpJgMSGy7AeSw
https://www.youtube.com/feeds/videos.xml?channel_id=UCoziFm3M4sHDq1kkx0UwtRw
https://www.youtube.com/feeds/videos.xml?channel_id=UCtzpB_RJqbpgJcWXhEo-1iQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCsc44rMgJqxU_7bhM9GGFhg
https://www.youtube.com/feeds/videos.xml?channel_id=UC0Ize0RLIbGdH5x4wI45G-A
https://www.youtube.com/feeds/videos.xml?channel_id=UC4_bwov47DseacR1-ttTdOg
https://www.youtube.com/feeds/videos.xml?channel_id=UCOsATJw-IZgqGT8MFrHjKGg
https://www.youtube.com/feeds/videos.xml?channel_id=UCT31um1Ic8KweVWEMBC1K7A
https://www.youtube.com/feeds/videos.xml?channel_id=UCuolJRKmlevmTqz-tUV0LCQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCaoxFlhy4oGz3EvkTGhWvkA
https://www.youtube.com/feeds/videos.xml?channel_id=UC9RM-iSvTu1uPJb8X5yp3EQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCsXVk37bltHxD1rDPwtNM8Q
https://www.youtube.com/feeds/videos.xml?channel_id=UC0aanx5rpr7D1M7KCFYzrLQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCR4s1DE9J4DHzZYXMltSMAg
https://www.youtube.com/feeds/videos.xml?channel_id=UCgITW_70LNZFkNna7VsXbuQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCmQXOAse-VnzuXHebX5I77g
https://www.youtube.com/feeds/videos.xml?channel_id=UCGwu0nbY2wSkW8N-cghnLpA
https://www.youtube.com/feeds/videos.xml?channel_id=UCV9_KinVpV-snHe3C3n1hvA
https://www.youtube.com/feeds/videos.xml?channel_id=UCUgRtDziJirGWqdIveI30SA
https://www.youtube.com/feeds/videos.xml?channel_id=UCtGoikgbxP4F3rgI9PldI9g
https://www.youtube.com/feeds/videos.xml?channel_id=UCAPrhJwVweWZA8GEPoClSdw
https://www.youtube.com/feeds/videos.xml?channel_id=UC2V1ul4ul85kac0Y81wXTqQ
https://www.youtube.com/feeds/videos.xml?channel_id=UC-i3WnEFcTntkZc-Pv9gArw
https://www.youtube.com/feeds/videos.xml?channel_id=UCOxaitvZzdNuGK7jlMsWzlw
https://www.youtube.com/feeds/videos.xml?channel_id=UCF1fG3gT44nGTPU2sVLoFWg
https://www.youtube.com/feeds/videos.xml?channel_id=UC5rT7F0PGNuD54rJ9kzgWzw
https://www.youtube.com/feeds/videos.xml?channel_id=UC7sD7-uGMPmRDrT8mUHlWBA
https://www.youtube.com/feeds/videos.xml?channel_id=UCUueEx_ceEQrjlR9ctPNKyg
https://www.youtube.com/feeds/videos.xml?channel_id=UCJRSYkPQeuf6_6oLsBTf0Tw
https://www.youtube.com/feeds/videos.xml?channel_id=UCYGDiVemmhY_Q1M-hKp4fvw
https://www.youtube.com/feeds/videos.xml?channel_id=UCYeF244yNGuFefuFKqxIAXw
https://www.youtube.com/feeds/videos.xml?channel_id=UCQD3awTLw9i8Xzh85FKsuJA
https://www.youtube.com/feeds/videos.xml?channel_id=UCMOgdURr7d8pOVlc-alkfRg
https://www.youtube.com/feeds/videos.xml?channel_id=UCErSSa3CaP_GJxmFpdjG9Jw
https://www.youtube.com/feeds/videos.xml?channel_id=UCZzU0PyZlnfcmJglvmnH12w
https://www.youtube.com/feeds/videos.xml?channel_id=UCLv6LhnosAyBGwEZeytrKyg
https://www.youtube.com/feeds/videos.xml?channel_id=UCLJcVCVvcD802r80B9oaM3A
https://www.youtube.com/feeds/videos.xml?channel_id=UCFV5pMEsfMP8duOumA8klmA
https://www.youtube.com/feeds/videos.xml?channel_id=UC7ucvC0OrD2BQUmEec5NJeg
https://www.youtube.com/feeds/videos.xml?channel_id=UCr-cm90DwFJC0W3f9jBs5jA
https://www.youtube.com/feeds/videos.xml?channel_id=UChrYe70o7NmDioL02PRVWVg
https://www.youtube.com/feeds/videos.xml?channel_id=UCm6QkJHb53JbFeqG8X7S-sg
https://www.youtube.com/feeds/videos.xml?channel_id=UCa6TeYZ2DlueFRne5DyAnyg
https://www.youtube.com/feeds/videos.xml?channel_id=UCgNg3vwj3xt7QOrcIDaHdFg
https://www.youtube.com/feeds/videos.xml?channel_id=UCtwKon9qMt5YLVgQt1tvJKg
https://www.youtube.com/feeds/videos.xml?channel_id=UC8XjmAEDVZSCQjI150cb4QA
https://www.youtube.com/feeds/videos.xml?channel_id=UCNjHgaLpdy1IMNK57pYiKiQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCTg4jls4URruaHauposrhMg
https://www.youtube.com/feeds/videos.xml?channel_id=UCSdma21fnJzgmPodhC9SJ3g
https://www.youtube.com/feeds/videos.xml?channel_id=UCV5vCi3jPJdURZwAOO_FNfQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCmtQGojT9O2LVzVIVKDGEjw
https://www.youtube.com/feeds/videos.xml?channel_id=UCLs1ozoolo_-mKZqq6GuEIQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCS1qGIA0306vV8aisea4BLQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCuo9VyowIT-ljA5G2ZuC6Yw
https://www.youtube.com/feeds/videos.xml?channel_id=UC0-QuVLhCc4hmJaiLSCMwcw
https://www.youtube.com/feeds/videos.xml?channel_id=UCO7fujFV_MuxTM0TuZrnE6Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCo_IB5145EVNcf8hw1Kku7w
https://www.youtube.com/feeds/videos.xml?channel_id=UCeovElJP0n0i8ADaPsRSd8g
https://www.youtube.com/feeds/videos.xml?channel_id=UC7ucvC0OrD2BQUmEec5NJeg
https://www.youtube.com/feeds/videos.xml?channel_id=UCrmTTabqjlMBq-vL8j7EQkA
https://www.youtube.com/feeds/videos.xml?channel_id=UCOojfmX4Wq3Ww-XP_IkvviQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCivA7_KLKWo43tFcCkFvydw
https://www.youtube.com/feeds/videos.xml?channel_id=UCKd49wwdEdIoM-7Fumhwmog
https://www.youtube.com/feeds/videos.xml?channel_id=UCpLB7kBu9O5dbBKhaIOmqcQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCtuFxawHK5fDrA8yFy8Vo1Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCIMn9OGAE5eeQJhCeO-JvJQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCbK8u9UIIuLPku9abSlIbgw
https://www.youtube.com/feeds/videos.xml?channel_id=UC3v6sjWuPxtW36jQ-if4OuA
https://www.youtube.com/feeds/videos.xml?channel_id=UCDv0JHqrlqgl0S2TNpNrmdw
https://www.youtube.com/feeds/videos.xml?channel_id=UCXKH52cGX4rtK_X-q1GH02Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCRbOPaGDB_xOQkVM8Rnn62Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCXgxNzAgZ1GExhTW4X1mUrg
https://www.youtube.com/feeds/videos.xml?channel_id=UCsXVk37bltHxD1rDPwtNM8Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCJvhxlROfb5lqj-G5UF3l_w
https://www.youtube.com/feeds/videos.xml?channel_id=UCjFqcJQXGZ6T6sxyFB-5i6A
https://www.youtube.com/feeds/videos.xml?channel_id=UCKzJFdi57J53Vr_BkTfN3uQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCyp1gCHZJU_fGWFf2rtMkCg
https://www.youtube.com/feeds/videos.xml?channel_id=UC5rT7F0PGNuD54rJ9kzgWzw
https://www.youtube.com/feeds/videos.xml?channel_id=UC1_uAIS3r8Vu6JjXWvastJg
https://www.youtube.com/feeds/videos.xml?channel_id=UCr-cm90DwFJC0W3f9jBs5jA
https://www.youtube.com/feeds/videos.xml?channel_id=UC5nc_ZtjKW1htCVZVRxlQAQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCIUATMnLtNo51kKuv95R1UQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCF1fG3gT44nGTPU2sVLoFWg
https://www.youtube.com/feeds/videos.xml?channel_id=UCfnJvKB2Nr55ZvHj20O5JZA
https://www.youtube.com/feeds/videos.xml?channel_id=UCTjPBE9BNsmv44wgxWEy2zw
https://www.youtube.com/feeds/videos.xml?channel_id=UCBvo9EONLsFRjLRd9WDtCiw
https://www.youtube.com/feeds/videos.xml?channel_id=UCGtqkLvM_jCEWKwT9ksGDVg
https://www.youtube.com/feeds/videos.xml?channel_id=UCS0N5baNlQWJCUrhCEo8WlA
https://www.youtube.com/feeds/videos.xml?channel_id=UCG36u-k09zdIPQh5EEdVgTA
https://www.youtube.com/feeds/videos.xml?channel_id=UCT31um1Ic8KweVWEMBC1K7A
https://www.youtube.com/feeds/videos.xml?channel_id=UCsvn_Po0SmunchJYOWpOxMg
https://www.youtube.com/feeds/videos.xml?channel_id=UC0aanx5rpr7D1M7KCFYzrLQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCm6QkJHb53JbFeqG8X7S-sg
https://www.youtube.com/feeds/videos.xml?channel_id=UC-XXmB9IHCUdteHjgmmsaeg
https://www.youtube.com/feeds/videos.xml?channel_id=UCA-p1wZ5Tuz9J1_AI_A2NqA
https://www.youtube.com/feeds/videos.xml?channel_id=UCp68_FLety0O-n9QU6phsgw
https://www.youtube.com/feeds/videos.xml?channel_id=UCFV5pMEsfMP8duOumA8klmA
https://www.youtube.com/feeds/videos.xml?channel_id=UChrYe70o7NmDioL02PRVWVg
https://www.youtube.com/feeds/videos.xml?channel_id=UCtccbWvR1RQb976Jo6Mt7Yw
https://www.youtube.com/feeds/videos.xml?channel_id=UCsc44rMgJqxU_7bhM9GGFhg
https://www.youtube.com/feeds/videos.xml?channel_id=UC6FwRO2_a4nrqWJNN32M-Dg
https://www.youtube.com/feeds/videos.xml?channel_id=UCh-PyMficPzVAihCJkFJVAA
https://www.youtube.com/feeds/videos.xml?channel_id=UCrrSA2uXHnFom2HQgNmUivw
https://www.youtube.com/feeds/videos.xml?channel_id=UCsvn_Po0SmunchJYOWpOxMg
https://www.youtube.com/feeds/videos.xml?channel_id=UCeP4Yv3s4RvS0-6d9OInRMw
https://www.youtube.com/feeds/videos.xml?channel_id=UCr6LvLhGBnB7z0Tj4-nY34A
https://www.youtube.com/feeds/videos.xml?channel_id=UCY1kMZp36IQSyNx_9h4mpCg
https://www.youtube.com/feeds/videos.xml?channel_id=UClvX7kIblTWcwfRGMZSgRIw
https://www.youtube.com/feeds/videos.xml?channel_id=UCLuHOqDilyLQT4NPXQuVN4Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCQeYs5oIyB0wIxyjOXg1XFg
https://www.youtube.com/feeds/videos.xml?channel_id=UCYGDiVemmhY_Q1M-hKp4fvw
https://www.youtube.com/feeds/videos.xml?channel_id=UCo0Ek8Te0osbhI0WnhF3QzA
https://www.youtube.com/feeds/videos.xml?channel_id=UC4zJAMaYN592qQhMR2OfX_Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCoxcjq-8xIDTYp3uz647V5A
https://www.youtube.com/feeds/videos.xml?channel_id=UCt7fwAhXDy3oNFTAzF2o8Pw
https://www.youtube.com/feeds/videos.xml?channel_id=UC9RM-iSvTu1uPJb8X5yp3EQ
https://www.youtube.com/feeds/videos.xml?channel_id=UC3tNpTOHsTnkmbwztCs30sA
https://www.youtube.com/feeds/videos.xml?channel_id=UCg45A-ph7Eu8jQgfrwDkHLg
https://www.youtube.com/feeds/videos.xml?channel_id=UC67gfx2Fg7K2NSHqoENVgwA
https://www.youtube.com/feeds/videos.xml?channel_id=UCR0tBVaZPaSqmdqkw7oYmcw
https://www.youtube.com/feeds/videos.xml?channel_id=UCYzwyzV2WNMgrL6RKSF8nrg
https://www.youtube.com/feeds/videos.xml?channel_id=UCm6GSA5OROHcIBNkXkH53zQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCRYv1Y9SQaI3dp57syZUdIw
https://www.youtube.com/feeds/videos.xml?channel_id=UC9pO2YNforRbdwKOh09djKA
https://www.youtube.com/feeds/videos.xml?channel_id=UC9NeBnf-9pzDC3C86MeOJvA
https://www.youtube.com/feeds/videos.xml?channel_id=UC_ufxdQbKBrrMOiZ4LzrUyA
https://www.youtube.com/feeds/videos.xml?channel_id=UC1_uAIS3r8Vu6JjXWvastJg
https://www.youtube.com/feeds/videos.xml?channel_id=UCIUATMnLtNo51kKuv95R1UQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCLUrVTVTA3PnUFpYvpfMcpg
https://www.youtube.com/feeds/videos.xml?channel_id=UCNIuvl7V8zACPpTmmNIqP2A
https://www.youtube.com/feeds/videos.xml?channel_id=UCn1XB-jvmd9fXMzhiA6IR0w
https://www.youtube.com/feeds/videos.xml?channel_id=UCNBOw3pfI3E26f1vsozUA-A
https://www.youtube.com/feeds/videos.xml?channel_id=UCI1ggmx7c1PUlTkfsv0fU-w
https://www.youtube.com/feeds/videos.xml?channel_id=UC_E4px0RST-qFwXLJWBav8Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCOojfmX4Wq3Ww-XP_IkvviQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCFKDEp9si4RmHFWJW1vYsMA
https://www.youtube.com/feeds/videos.xml?channel_id=UCJbPGzawDH1njbqV-D5HqKw
https://www.youtube.com/feeds/videos.xml?channel_id=UCDWIvJwLJsE4LG1Atne2blQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCRbOPaGDB_xOQkVM8Rnn62Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCny_vGt2N7_QJ5qBOAHxlcw
https://www.youtube.com/feeds/videos.xml?channel_id=UCFhXFikryT4aFcLkLw2LBLA
https://www.youtube.com/feeds/videos.xml?channel_id=UCNnKprAG-MWLsk-GsbsC2BA
https://www.youtube.com/feeds/videos.xml?channel_id=UC9bTzW3hPRF1cV0tBlskT6w
https://www.youtube.com/feeds/videos.xml?channel_id=UCYandFV7VSfXwZU15XUHHKQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCoHhuummRZaIVX7bD4t2czg
https://www.youtube.com/feeds/videos.xml?channel_id=UCtM5z2gkrGRuWd0JQMx76qA
https://www.youtube.com/feeds/videos.xml?channel_id=UCahfy_XV7nFYceg6GIthwMQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCivA7_KLKWo43tFcCkFvydw
https://www.youtube.com/feeds/videos.xml?channel_id=UCfnJvKB2Nr55ZvHj20O5JZA
https://www.youtube.com/feeds/videos.xml?channel_id=UCecrxw9xtxME6o5_mz4TtOA
https://www.youtube.com/feeds/videos.xml?channel_id=UCm6r_b2K5jn1JGkwDcwJXrQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCIMn9OGAE5eeQJhCeO-JvJQ
https://www.youtube.com/feeds/videos.xml?channel_id=UC0fDG3byEcMtbOqPMymDNbw
https://www.youtube.com/feeds/videos.xml?channel_id=UCV1G6JkQtB2nobFm3MGNsBQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCXgxNzAgZ1GExhTW4X1mUrg
https://www.youtube.com/feeds/videos.xml?channel_id=UCbK8u9UIIuLPku9abSlIbgw
https://www.youtube.com/feeds/videos.xml?channel_id=UCmtQGojT9O2LVzVIVKDGEjw
https://www.youtube.com/feeds/videos.xml?channel_id=UC1_uAIS3r8Vu6JjXWvastJg
https://www.youtube.com/feeds/videos.xml?channel_id=UCIUATMnLtNo51kKuv95R1UQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCJspWFXSL1guQPdFqh4lFjQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCg45A-ph7Eu8jQgfrwDkHLg
https://www.youtube.com/feeds/videos.xml?channel_id=UCgkzrMGEbZemPI4hkz0Z9Bw
https://www.youtube.com/feeds/videos.xml?channel_id=UCMLgHbpJ8qYqj3CkdbvC0Ww
https://www.youtube.com/feeds/videos.xml?channel_id=UCO8DQrSp5yEP937qNqTooOw
https://www.youtube.com/feeds/videos.xml?channel_id=UCdz4CF1VWEMCm8r4DFLSWig
https://www.youtube.com/feeds/videos.xml?channel_id=UCLUrVTVTA3PnUFpYvpfMcpg
https://www.youtube.com/feeds/videos.xml?channel_id=UCiDJtJKMICpb9B1qf7qjEOA
https://www.youtube.com/feeds/videos.xml?channel_id=UC0-QuVLhCc4hmJaiLSCMwcw
https://www.youtube.com/feeds/videos.xml?channel_id=UC2V1ul4ul85kac0Y81wXTqQ
https://www.youtube.com/feeds/videos.xml?channel_id=UC5rT7F0PGNuD54rJ9kzgWzw
https://www.youtube.com/feeds/videos.xml?channel_id=UC7kQhIHX4SSSIT9gSVq6QzQ
https://www.youtube.com/feeds/videos.xml?channel_id=UC6uASnNXIjWzt6zxrWZdLNg
https://www.youtube.com/feeds/videos.xml?channel_id=UC_sp6oZDuNfTWzZDfwZyJOg
https://www.youtube.com/feeds/videos.xml?channel_id=UCIfAlCwj-ZPZq5fqjpYDX3w
https://www.youtube.com/feeds/videos.xml?channel_id=UCBvo9EONLsFRjLRd9WDtCiw
https://www.youtube.com/feeds/videos.xml?channel_id=UCG36u-k09zdIPQh5EEdVgTA
https://www.youtube.com/feeds/videos.xml?channel_id=UCz0l5LJhNQkktxKWcGUtWxg
https://www.youtube.com/feeds/videos.xml?channel_id=UCSKFuxhXiJjF49nwQGZuROQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCaGev0JRG7Dp5c_R4ROADLw
https://www.youtube.com/feeds/videos.xml?channel_id=UCAgoEUwn-LQy0fTyUxMngag
https://www.youtube.com/feeds/videos.xml?channel_id=UCBk4FLs_it6Sck7L0XptYjQ
https://www.youtube.com/feeds/videos.xml?channel_id=UC0aanx5rpr7D1M7KCFYzrLQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCuo9VyowIT-ljA5G2ZuC6Yw
https://www.youtube.com/feeds/videos.xml?channel_id=UCYZtp0YIxYOipX15v_h_jnA
https://www.youtube.com/feeds/videos.xml?channel_id=UCxseO_JzIiiJENauW2RmcJQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCS1qGIA0306vV8aisea4BLQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCmQXOAse-VnzuXHebX5I77g
https://www.youtube.com/feeds/videos.xml?channel_id=UC2DjFE7Xf11URZqWBigcVOQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCDAjO0-hd_RS8ZYJ4W-Iq5Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCMLgHbpJ8qYqj3CkdbvC0Ww
https://www.youtube.com/feeds/videos.xml?channel_id=UCG1h-Wqjtwz7uUANw6gazRw
https://www.youtube.com/feeds/videos.xml?channel_id=UCRbOPaGDB_xOQkVM8Rnn62Q
https://www.youtube.com/feeds/videos.xml?channel_id=UC8AvcEE8l8mHs-rZTXoynVQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCLUrVTVTA3PnUFpYvpfMcpg
https://www.youtube.com/feeds/videos.xml?channel_id=UCD84uEcRgneWDYpmBd8BbsQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCI1ggmx7c1PUlTkfsv0fU-w
https://www.youtube.com/feeds/videos.xml?channel_id=UCJHvN0zYgO2ZLjePERRLjKQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCY1kMZp36IQSyNx_9h4mpCg
https://www.youtube.com/feeds/videos.xml?channel_id=UC_E4px0RST-qFwXLJWBav8Q
https://www.youtube.com/feeds/videos.xml?channel_id=UCQeYs5oIyB0wIxyjOXg1XFg
https://www.youtube.com/feeds/videos.xml?channel_id=UCO79NsDE5FpMowUH1YcBFcA
https://www.youtube.com/feeds/videos.xml?channel_id=UCYandFV7VSfXwZU15XUHHKQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCoUqzYqTYp9SE9RTkUYusZA
https://www.youtube.com/feeds/videos.xml?channel_id=UCn1XB-jvmd9fXMzhiA6IR0w
https://www.youtube.com/feeds/videos.xml?channel_id=UCoHhuummRZaIVX7bD4t2czg
https://www.youtube.com/feeds/videos.xml?channel_id=UC7sD7-uGMPmRDrT8mUHlWBA
https://www.youtube.com/feeds/videos.xml?channel_id=UCPsDdWokYPtOQ7OXXcdUTRw
https://www.youtube.com/feeds/videos.xml?channel_id=UCKg2LxItoBGzOGbTpYuD6mw
https://www.youtube.com/feeds/videos.xml?channel_id=UCivA7_KLKWo43tFcCkFvydw
https://www.youtube.com/feeds/videos.xml?channel_id=UCYzwyzV2WNMgrL6RKSF8nrg
https://www.youtube.com/feeds/videos.xml?channel_id=UC67gfx2Fg7K2NSHqoENVgwA
https://www.youtube.com/feeds/videos.xml?channel_id=UCFKDEp9si4RmHFWJW1vYsMA
https://www.youtube.com/feeds/videos.xml?channel_id=UCIUATMnLtNo51kKuv95R1UQ
https://www.youtube.com/feeds/videos.xml?channel_id=UCMuPLU5S9vVC5tZAiPVt4HA
https://www.youtube.com/feeds/videos.xml?channel_id=UCrmTTabqjlMBq-vL8j7EQkA
https://www.youtube.com/feeds/videos.xml?channel_id=UCtccbWvR1RQb976Jo6Mt7Yw

2
.screenlayout/normal.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
xrandr --output DVI-D-0 --mode 1680x1050 --pos 4240x195 --rotate normal --output HDMI-0 --mode 1680x1050 --pos 0x195 --rotate normal --output DP-0 --off --output DP-1 --off --output DP-2 --off --output DP-3 --mode 1280x1024 --pos 4240x1245 --rotate normal --output DP-4 --primary --mode 2560x1440 --pos 1680x0 --rotate normal --output DP-5 --off --output DVI-I-1-0 --off --output DVI-I-1-1 --off --output HDMI-1-0 --off

15
.scripts/prompt Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
# A dmenu binary prompt script.
# Gives a dmenu prompt labelled with $1 to perform command $2.
# For example:
# `./prompt "Do you want to shutdown?" "shutdown now"`
# Taken shamelessly from Luke Smith
choice=$(echo -e "No\nYes" | dmenu -i -p "$1")
if [ $choice = "Yes" ]
then
$2
fi

478
.xmonad/xmonad.hs Normal file
View File

@ -0,0 +1,478 @@
--
-- Xmonad config for Solomon Laing
--
-- Base
import XMonad
import System.IO (hPutStrLn)
import System.Exit (ExitCode(ExitSuccess), exitWith )
import qualified XMonad.StackSet as W
-- Actions
import XMonad.Actions.CycleWS (moveTo, shiftTo, WSType(..), nextScreen, prevScreen)
import XMonad.Actions.GridSelect
import XMonad.Actions.MouseResize
import XMonad.Actions.Promote
import XMonad.Actions.RotSlaves (rotSlavesDown, rotAllDown)
import qualified XMonad.Actions.TreeSelect as TS
import XMonad.Actions.WindowGo (runOrRaise)
import XMonad.Actions.WithAll (sinkAll, killAll)
import qualified XMonad.Actions.Search as S
-- Data
import Data.Monoid
import Data.Tree
import qualified Data.Map as M
-- Hooks
import XMonad.Hooks.DynamicLog (dynamicLogWithPP, wrap, xmobarPP, xmobarColor, statusBar, shorten, PP(..))
import XMonad.Hooks.FadeInactive
import XMonad.Hooks.ManageDocks (docks, avoidStruts, docksEventHook, manageDocks, ToggleStruts(..))
import XMonad.Hooks.ManageHelpers (isFullscreen, doFullFloat)
import XMonad.Hooks.ServerMode
import XMonad.Hooks.WorkspaceHistory
-- Layouts
import XMonad.Layout.GridVariants (Grid(Grid))
import XMonad.Layout.SimplestFloat
import XMonad.Layout.Spiral
import XMonad.Layout.ResizableTile
import XMonad.Layout.Tabbed
import XMonad.Layout.ThreeColumns
-- Layouts modifiers
import XMonad.Layout.Fullscreen
import XMonad.Layout.LayoutModifier
import XMonad.Layout.LimitWindows (limitWindows)
import XMonad.Layout.Magnifier
import XMonad.Layout.MultiToggle (mkToggle, single, EOT(EOT), (??))
import XMonad.Layout.MultiToggle.Instances (StdTransformers(NBFULL, MIRROR, NOBORDERS))
import XMonad.Layout.NoBorders
import XMonad.Layout.Renamed (renamed, Rename(Replace))
import XMonad.Layout.ShowWName
import XMonad.Layout.Spacing
import XMonad.Layout.WindowArranger (windowArrange, WindowArrangerMsg(..))
import qualified XMonad.Layout.ToggleLayouts as T (toggleLayouts, ToggleLayout(Toggle))
import qualified XMonad.Layout.MultiToggle as MT (Toggle(..))
-- Utilities
import XMonad.Util.Run (runProcessWithInput, safeSpawn, spawnPipe)
import XMonad.Util.SpawnOnce
-- The preferred terminal program, which is used in a binding below and by
-- certain contrib modules.
myTerminal :: String
myTerminal = "alacritty"
myFileManager :: String
myFileManager = "dolphin"
-- The font to be used
myFont :: String
myFont = "xft:Fira Code:bold:size=9:antialias=true:hinting=true"
-- Whether focus follows the mouse pointer.
myFocusFollowsMouse :: Bool
myFocusFollowsMouse = True
-- Whether clicking on a window to focus also passes the click to the window
myClickJustFocuses :: Bool
myClickJustFocuses = False
-- Width of the window border in pixels.
myBorderWidth :: Dimension
myBorderWidth = 1
-- Border colors for unfocused and focused windows, respectively.
myNormalBorderColor :: String
myNormalBorderColor = "#dddddd"
myFocusedBorderColor :: String
myFocusedBorderColor = "#551155"
-- modMask lets you specify which modkey you want to use. The default
-- is mod1Mask ("left alt"). You may also consider using mod3Mask
-- ("right alt"), which does not conflict with emacs keybindings. The
-- "windows key" is usually mod4Mask.
myModMask :: KeyMask
myModMask = mod4Mask
-- The default number of workspaces (virtual screens) and their names.
-- By default we use numeric strings, but any string may be used as a
-- workspace name. The number of workspaces is determined by the length
-- of this list.
--
-- A tagging example:
--
-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]
xmobarEscape :: String -> String
xmobarEscape = concatMap doubleLts
where
doubleLts '<' = "<<"
doubleLts x = [x]
myWorkspaces :: [String]
-- myWorkspaces = ["dev", "`www`", "sys", "doc", "vbox", "chat", "mus", "vid", "gfx"]
myWorkspaces = clickable . (map xmobarEscape)
-- $ ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
$ ["web", "game", "dev", "doc", "mus", "vid", "sys", "chat", "virt"]
where
clickable l = [ "<action=xdotool key super+" ++ show (n) ++ ">"++ws++"</action>" |
(i,ws) <- zip [1..9] l,
let n = i ]
windowCount :: X (Maybe String)
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
------------------------------------------------------------------------
-- Key bindings. Add, modify or remove key bindings here.
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
-- launch a terminal
[ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
-- launch rofi
, ((modm, xK_a ), spawn "rofi -show run")
-- launch dmenu
, ((modm, xK_o ), spawn "dmenu_run")
-- prompt computer shutdown
, ((modm .|. shiftMask, xK_s ), spawn "/home/solomon/.scripts/prompt \"Are you sure you want to Shutdown?\" \"shutdown -h now\"")
-- prompt computer reboot
, ((modm .|. shiftMask, xK_r ), spawn "/home/solomon/.scripts/prompt \"Are you sure you want to Restart?\" \"reboot\"")
-- launch rofi ssh
, ((modm .|. shiftMask, xK_a ), spawn "rofi -show ssh")
-- launch my file manager
, ((modm, xK_l ), spawn myFileManager)
-- close focused window
, ((modm .|. shiftMask, xK_j ), kill)
-- Rotate through the available layout algorithms
, ((modm, xK_space ), sendMessage NextLayout)
-- Reset the layouts on the current workspace to default
, ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
-- Resize viewed windows to the correct size
, ((modm, xK_b ), refresh)
-- Move focus to the next window
, ((modm, xK_Tab ), windows W.focusDown)
-- Move focus to the next window
, ((modm, xK_h ), windows W.focusDown)
-- Move focus to the previous window
, ((modm, xK_t ), windows W.focusUp )
-- Move focus to the master window
, ((modm, xK_m ), windows W.focusMaster )
-- Swap the focused window and the master window
, ((modm, xK_Return), windows W.swapMaster)
-- Swap the focused window with the next window
, ((modm .|. shiftMask, xK_d ), windows W.swapDown )
-- Swap the focused window with the previous window
, ((modm .|. shiftMask, xK_t ), windows W.swapUp )
-- Shrink the master area
, ((modm, xK_d ), sendMessage Shrink)
-- Expand the master area
, ((modm, xK_n ), sendMessage Expand)
-- Push window back into tiling
, ((modm, xK_y ), withFocused $ windows . W.sink)
-- Increment the number of windows in the master area
, ((modm , xK_w ), sendMessage (IncMasterN 1))
-- Deincrement the number of windows in the master area
, ((modm , xK_v), sendMessage (IncMasterN (-1)))
-- Toggle the status bar gap
-- Use this binding with avoidStruts from Hooks.ManageDocks.
-- See also the statusBar function from Hooks.DynamicLog.
--
, ((modm , xK_b ), sendMessage ToggleStruts)
-- Quit xmonad
, ((modm .|. shiftMask, xK_apostrophe ), io (exitWith ExitSuccess))
-- Restart xmonad
, ((modm , xK_apostrophe ), spawn "xmonad --recompile; xmonad --restart")
-- Run xmessage with a summary of the default keybindings (useful for beginners)
, ((modm .|. shiftMask, xK_z ), spawn ("echo \"" ++ help ++ "\" | xmessage -file -"))
]
++
--
-- mod-[1..9], Switch to workspace N
-- mod-shift-[1..9], Move client to workspace N
--
[((m .|. modm, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
++
--
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
--
[((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
| (key, sc) <- zip [xK_comma, xK_period, xK_p] [0..]
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
-- Mouse bindings: default actions bound to mouse events
myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
-- mod-button1, Set the window to floating mode and move by dragging
[ ((modm, button1), (\w -> focus w >> mouseMoveWindow w
>> windows W.shiftMaster))
-- mod-button2, Raise the window to the top of the stack
, ((modm, button2), (\w -> focus w >> windows W.shiftMaster))
-- mod-button3, Set the window to floating mode and resize by dragging
, ((modm, button3), (\w -> focus w >> mouseResizeWindow w
>> windows W.shiftMaster))
-- you may also bind events to the mouse scroll wheel (button4 and button5)
]
------------------------------------------------------------------------
-- Layouts:
mySpacing :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a
mySpacing i = spacingRaw False (Border i i i i) True (Border i i i i) True
-- Defining a bunch of layouts, many that I don't use.
tall = renamed [Replace "tall"]
$ limitWindows 12
$ mySpacing 8
$ ResizableTall 1 (3/100) (1/2) []
magnify = renamed [Replace "magnify"]
$ magnifier
$ limitWindows 12
$ mySpacing 8
$ ResizableTall 1 (3/100) (1/2) []
monocle = renamed [Replace "monocle"]
$ limitWindows 20 Full
floats = renamed [Replace "floats"]
$ limitWindows 20 simplestFloat
grid = renamed [Replace "grid"]
$ limitWindows 12
$ mySpacing 8
$ mkToggle (single MIRROR)
$ Grid (16/10)
spirals = renamed [Replace "spirals"]
$ mySpacing 8
$ spiral (6/7)
tabs = renamed [Replace "tabs"]
-- I cannot add spacing to this layout because it will
-- add spacing between window and tabs which looks bad.
$ tabbed shrinkText myTabConfig
where
myTabConfig = def { fontName = "xft:Fira Code:regular:pixelsize=11"
, activeColor = "#282c34"
, inactiveColor = "#3e445e"
, activeBorderColor = "#282c34"
, inactiveBorderColor = "#282c34"
, activeTextColor = "#ffffff"
, inactiveTextColor = "#d0d0d0"
}
-- The layout hook
myLayout = avoidStruts $ mouseResize $ windowArrange $ T.toggleLayouts floats $
mkToggle (NBFULL ?? NOBORDERS ?? EOT) myDefaultLayout
where
-- I've commented out the layouts I don't use.
myDefaultLayout =
grid
||| noBorders monocle
||| spirals
||| tall
||| noBorders tabs
||| floats
||| magnify
------------------------------------------------------------------------
-- Window rules:
-- Execute arbitrary actions and WindowSet manipulations when managing
-- a new window. You can use this to, for example, always float a
-- particular program, or have a client always appear on a particular
-- workspace.
--
-- To find the property name associated with a program, use
-- > xprop | grep WM_CLASS
-- and click on the client you're interested in.
--
-- To match on the WM_NAME, you can use 'title' in the same way that
-- 'className' and 'resource' are used below.
myManageHook = composeAll
[ className =? "Gimp" --> doFloat
, className =? "guake" --> doIgnore
, className =? "barrier" --> doFloat
, className =? "net-runelite-client-RuneLite" --> doFloat
, className =? "net-runelite-launcher-Launcher" --> doIgnore
, resource =? "desktop_window" --> doIgnore
, resource =? "kdesktop" --> doIgnore ]
------------------------------------------------------------------------
-- Event handling
-- * EwmhDesktops users should change this to ewmhDesktopsEventHook
--
-- Defines a custom handler function for X Events. The function should
-- return (All True) if the default handler is to be run afterwards. To
-- combine event hooks use mappend or mconcat from Data.Monoid.
myEventHook = mempty
------------------------------------------------------------------------
-- Status bars and logging
-- Perform an arbitrary action on each internal state change or X event.
-- See the 'XMonad.Hooks.DynamicLog' extension for examples.
myLogHook :: X ()
myLogHook = fadeInactiveLogHook fadeAmount
where fadeAmount = 1.0
------------------------------------------------------------------------
-- Startup hook
-- Perform an arbitrary action each time xmonad starts or is restarted
-- with mod-q. Used by, e.g., XMonad.Layout.PerWorkspace to initialize
-- per-workspace layout choices.
--
-- By default, do nothing.
myStartupHook = do
spawnOnce "/usr/lib/x86_64-linux-gnu/libexec/org_kde_powerdevil &"
spawnOnce "/home/solomon/.screenlayout/normal.sh"
spawnOnce "compton &"
spawnOnce "nitrogen --restore &"
spawnOnce "dunst &"
spawnOnce "xsetroot -cursor_name left_ptr"
spawnOnce "numlockx"
spawnOnce "trayer --edge top --align right --widthtype request --padding 6 --SetDockType true --SetPartialStrut true --expand true --monitor 1 --transparent true --alpha 0 --tint 0x14071F --height 20 &"
spawnOnce "volumeicon &"
spawnOnce "nm-applet &"
spawnOnce "blueman-applet &"
spawnOnce "kdeconnect-indicator &"
spawnOnce "ibus-daemon &"
spawnOnce "guake &"
spawnOnce "barrier &"
spawnOnce "nextcloud &"
spawnOnce "slack &"
------------------------------------------------------------------------
-- Now run xmonad with all the defaults we set up.
-- Run xmonad with the settings you specify. No need to modify this.
main :: IO ()
main = do
xmproc <- spawnPipe "xmobar -x 0 /home/solomon/.config/xmobar/xmobarrc.hs"
-- xmproc <- spawnPipe "xmobar -x 0 /home/solomon/.config/xmobar/xmobarrc0"
-- xmproc <- spawnPipe "xmobar -x 1 /home/solomon/.config/xmobar/xmobarrc1"
-- xmproc <- spawnPipe "xmobar -x 2 /home/solomon/.config/xmobar/xmobarrc2"
-- xmonad =<< statusBar myBar myPP toggleStrutsKey defaults
xmonad $ docks def
-- defaults = def
{
-- simple stuff
terminal = myTerminal,
focusFollowsMouse = myFocusFollowsMouse,
clickJustFocuses = myClickJustFocuses,
borderWidth = myBorderWidth,
modMask = myModMask,
workspaces = myWorkspaces,
normalBorderColor = myNormalBorderColor,
focusedBorderColor = myFocusedBorderColor,
-- key bindings
keys = myKeys,
mouseBindings = myMouseBindings,
-- hooks, layouts
layoutHook = myLayout,
manageHook = ( isFullscreen --> doFullFloat ) <+> myManageHook <+> manageDocks,
handleEventHook = myEventHook <+> fullscreenEventHook,
-- logHook = myLogHook,
logHook = myLogHook <+> dynamicLogWithPP xmobarPP
{ ppOutput = \x -> hPutStrLn xmproc x
, ppCurrent = xmobarColor "#a8de45" "" . wrap "[" "]" -- Current workspace in xmobar
, ppVisible = xmobarColor "#98be65" "" -- Visible but not current workspace
, ppHidden = xmobarColor "#82AAFF" "" . wrap "*" "" -- Hidden workspaces in xmobar
, ppHiddenNoWindows = xmobarColor "#c792ea" "" -- Hidden workspaces (no windows)
-- , ppTitle = xmobarColor "#b3afc2" "" . shorten 20 -- Title of active window in xmobar
, ppSep = "<fc=#805a9b> | </fc>" -- Separators in xmobar
, ppUrgent = xmobarColor "#C45500" "" . wrap "!" "!" -- Urgent workspace
-- , ppExtras = [windowCount] -- # of windows current workspace
-- , ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t]
, ppOrder = \(ws:l:t:ex) -> [ws,l]
},
startupHook = myStartupHook
}
-- | Finally, a copy of the default bindings in simple textual tabular format.
help :: String
help = unlines ["The default modifier key is 'alt'. Default keybindings:",
"",
"-- launching and killing programs",
"mod-Shift-Enter Launch terminal",
"mod-a Launch run menu",
"mod-Shift-a Launch ssh menu",
"mod-o Launch dmenu",
"mod-l Launch file manager",
"mod-Shift-j Close/kill the focused window",
"mod-Space Rotate through the available layout algorithms",
"mod-Shift-Space Reset the layouts on the current workSpace to default",
"mod-n Resize/refresh viewed windows to the correct size",
"",
"-- move focus up or down the window stack",
"mod-Tab Move focus to the next window",
"mod-Shift-Tab Move focus to the previous window",
"mod-h Move focus to the next window",
"mod-t Move focus to the previous window",
"mod-m Move focus to the master window",
"",
"-- modifying the window order",
"mod-Return Swap the focused window and the master window",
"mod-Shift-h Swap the focused window with the next window",
"mod-Shift-t Swap the focused window with the previous window",
"",
"-- resizing the master/slave ratio",
"mod-d Shri sk the master area",
"mod-n Expand the master area",
"",
"-- floating layer support",
"mod-y Push window back into tiling; unfloat and re-tile it",
"",
"-- increase or decrease number of windows in the master area",
"mod-w (mod-,) Increment the number of windows in the master area",
"mod-vL (mod-.) Deincrement the number of windows in the master area",
"",
"-- quit, or restart",
"mod-Shift-' Quit xmonad",
"mod-' Restart xmonad",
"mod-[1..9] Switch to workSpace N",
"",
"-- Workspaces & screens",
"mod-Shift-[1..9] Move client to workspace N",
"mod-{',','.','p'} Switch to physical/Xinerama screens 1, 2, or 3",
"mod-Shift-{',','.','p'} Move client to screen 1, 2, or 3",
"",
"-- Mouse bindings: default actions bound to mouse events",
"mod-button1 Set the window to floating mode and move by dragging",
"mod-button2 Raise the window to the top of the stack",
"mod-button3 Set the window to floating mode and resize by dragging"]

View File

@ -0,0 +1,25 @@
/* XPM */
static char * calendar_clock_icon_20_xpm[] = {
"20 20 2 1",
" c None",
". c #EFF0F1",
" ",
" ",
" ",
" ........ ",
" .. .. ",
" .. . .. ",
" .. . .. ",
" . . . ",
" . . . ",
" . . . ",
" . ...... . ",
" . . ",
" . . ",
" .. .. ",
" .. .. ",
" .. .. ",
" ........ ",
" ",
" ",
" "};

25
.xmonad/xpm/cpu_20.xpm Normal file
View File

@ -0,0 +1,25 @@
/* XPM */
static char * cpu_20_xpm[] = {
"20 20 2 1",
" c None",
". c #EFF0F1",
" ",
" ",
" ",
" ",
" ................ ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" ................ ",
" .............. ",
" .. ",
" ........ ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,25 @@
/* XPM */
static char * harddisk_icon_20_xpm[] = {
"20 20 2 1",
" c None",
". c #EFF0F1",
" ",
" ",
" ",
" ............ ",
" .. .. ",
" . . ",
" . . ",
" . . ",
" .. .. ",
" .. .. ",
" . . ",
" . . ",
" . . ",
" .. .. ",
" ............ ",
" . ... . ",
" ............ ",
" ............ ",
" ",
" "};

View File

@ -0,0 +1,25 @@
/* XPM */
static char * haskell_20_xpm[] = {
"20 20 2 1",
" c None",
". c #FFFFFF",
" ",
" ",
" ",
".... .... ",
" .... ... ",
" ... .... ",
" .... .... ",
" .... ... ........",
" ... .... .......",
" .... .... ",
" .... .... ",
" ... ...... .....",
" .... ....... ....",
" .... .... ... ",
" ... .... .... ",
" .... ... .... ",
".... .... ... ",
" ",
" ",
" "};

View File

@ -0,0 +1,25 @@
/* XPM */
static char * memory_icon_20_xpm[] = {
"20 20 2 1",
" c None",
". c #EFF0F1",
" ",
" ",
" ",
" ........... ",
" . . ",
" . . . ",
" . . . . . ",
" . .. . .. . ",
" . .. . .. . ",
" . .. . .. . ",
" . . ",
" . . ",
" .. . ",
" . . ",
" . . ",
" . . ",
" ............ ",
" ............ ",
" ",
" "};

View File

@ -0,0 +1,25 @@
/* XPM */
static char * net_down_20_xpm[] = {
"20 20 2 1",
" c None",
". c #EFF0F1",
" ",
" ",
" . ",
" . ",
" . ",
" . ",
" . ",
" . ",
" . ",
" .. . . ",
" . . .. ",
" .. . . ",
" . ... ",
" .... ",
" ... ",
" .. ",
" . ",
" ",
" ",
" "};

25
.xmonad/xpm/net_up_20.xpm Normal file
View File

@ -0,0 +1,25 @@
/* XPM */
static char * net_up_20_xpm[] = {
"20 20 2 1",
" c None",
". c #EFF0F1",
" ",
" ",
" ",
" . ",
" .. ",
" ... ",
" .... ",
" . ... ",
" .. . . ",
" . . .. ",
" .. . . ",
" . ",
" . ",
" . ",
" . ",
" . ",
" . ",
" . ",
" ",
" "};

3
README.md Normal file
View File

@ -0,0 +1,3 @@
My Dotfiles, managed using the following tutorial:
https://www.atlassian.com/git/tutorials/dotfiles

14
ansible/hosts Normal file
View File

@ -0,0 +1,14 @@
#File name: hosts
#Description: Inventory file for your application. Defines machine type abcnode to deploy specific artifacts
# Defines machine type def node to upload metadata.
[abc-node]
#server1 ansible_host = <target machine for DU deployment>
ansible_user = <Ansibleuser> ansible_connection = ssh
server1 ansible_host = <your host name> ansible_user = <your unix user>
ansible_connection = ssh
[def-node]
#server2 ansible_host = <target machine for artifact upload>
ansible_user = <Ansible user> ansible_connection = ssh
server2 ansible_host = <host> ansible_user = <user> ansible_connection = ssh

View File

@ -0,0 +1,16 @@
- hosts: all
become : yes
tasks:
- name: create the 'ubuntu' user
user: name=ubuntu append=yes state=present createhome=yes shell=/bin/bash
- name: allow 'ubuntu' to have passwordless sudo
lineinfile:
dest: /etc/sudoers
line: 'ubuntu ALL=(ALL) NOPASSWD: ALL'
validate: 'visudo -cf %s'
- name: set up authorised keys for the 'ubuntu' user
authorized_key: user=ubuntu key="{{item}}"
with_file:
- ~/.ssh/id_rsa.pub

View File

@ -0,0 +1,38 @@
- hosts: all
become: yes
tasks:
- name: install APT Transport HTTPS
apt:
name: apt-transport-https
state: present
- name: add Kubernetes apt-key
apt_key:
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
state: present
- name: add Kubernetes' APT repository
apt_repository:
repo: deb http://apt.kubernetes.io/ kubernetes-xenial main
state: present
filename: 'kubernetes'
- name: install kubelet
apt:
name: kubelet=1.18.0-00
state: present
update_cache: true
- name: install kubeadm
apt:
name: kubeadm=1.18.0-00
state: present
- hosts: master
become: yes
tasks:
- name: install kubectl
apt:
name: kubectl=1.18.0-00
state: present
force: yes

View File

@ -0,0 +1,44 @@
- hosts: all
become: yes
tasks:
- name: install Docker
apt:
name: docker.io
state: present
update_cache: true
- name: install APT Transport HTTPS
apt:
name: apt-transport-https
state: present
- name: add Kubernetes apt-key
apt_key:
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
state: present
- name: add Kubernetes' APT repository
apt_repository:
repo: deb http://apt.kubernetes.io/ kubernetes-xenial main
state: present
filename: 'kubernetes'
- name: install kubelet
apt:
name: kubelet=1.18.0-00
state: present
update_cache: true
- name: install kubeadm
apt:
name: kubeadm=1.18.0-00
state: present
- hosts: master
become: yes
tasks:
- name: install kubectl
apt:
name: kubectl=1.18.0-00
state: present
force: yes

View File

@ -0,0 +1,42 @@
- hosts: master
become: yes
tasks:
- name: initialise the cluster
shell: kubeadm init --pod-network-cidr=10.244.0.0/16 >> cluster_initialized.txt
args:
chdir: $HOME
creates: cluster_initialized.txt
become: yes
become_user: root
- name: create .kube directory
become: yes
become_user: ubuntu
file:
path: $HOME/.kube
state: directory
mode: 0755
- name: copy admin.conf to user's kube config
copy:
src: /etc/kubernetes/admin.conf
dest: /home/ubuntu/.kube/config
remote_src: yes
owner: ubuntu
- name: copy Pod network config
copy:
src: ./kube-flannel.yml
dest: /home/ubuntu/
owner: ubuntu
group: ubuntu
mode: '0644'
- name: install Pod network
become: yes
become_user: ubuntu
shell: kubectl apply -f kube-flannel.yml >> pod_network_setup.txt
args:
chdir: $HOME
creates: pot_network_setup.txt

View File

@ -0,0 +1,21 @@
- hosts: master
become: yes
gather_facts: false
tasks:
- name: get join command
shell: kubeadm token create --print-join-command
register: join_command_raw
- name: set join command
set_fact:
join_command: "{{ join_command_raw.stdout_lines[0] }}"
- hosts: workers
become: yes
tasks:
- name: join cluster
shell: "{{ hostvars['master'].join_command }} >> node_joined.txt"
args:
chdir: $HOME
creates: node_joined.txt

View File

@ -0,0 +1 @@
WirrealpaSSH0429 -i hosts /root/kube-cluster/initial.yml

View File

@ -0,0 +1,10 @@
- hosts: all
become: yes
tasks:
- name: Update and upgrade apt package
become: true
apt:
upgrade: yes
update_cache: yes
cache_valid_time: 86400 #One day

View File

@ -0,0 +1,603 @@
---
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: psp.flannel.unprivileged
annotations:
seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default
seccomp.security.alpha.kubernetes.io/defaultProfileName: docker/default
apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default
apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default
spec:
privileged: false
volumes:
- configMap
- secret
- emptyDir
- hostPath
allowedHostPaths:
- pathPrefix: "/etc/cni/net.d"
- pathPrefix: "/etc/kube-flannel"
- pathPrefix: "/run/flannel"
readOnlyRootFilesystem: false
# Users and groups
runAsUser:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
fsGroup:
rule: RunAsAny
# Privilege Escalation
allowPrivilegeEscalation: false
defaultAllowPrivilegeEscalation: false
# Capabilities
allowedCapabilities: ['NET_ADMIN']
defaultAddCapabilities: []
requiredDropCapabilities: []
# Host namespaces
hostPID: false
hostIPC: false
hostNetwork: true
hostPorts:
- min: 0
max: 65535
# SELinux
seLinux:
# SELinux is unused in CaaSP
rule: 'RunAsAny'
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: flannel
rules:
- apiGroups: ['extensions']
resources: ['podsecuritypolicies']
verbs: ['use']
resourceNames: ['psp.flannel.unprivileged']
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- apiGroups:
- ""
resources:
- nodes
verbs:
- list
- watch
- apiGroups:
- ""
resources:
- nodes/status
verbs:
- patch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: flannel
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: flannel
subjects:
- kind: ServiceAccount
name: flannel
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: flannel
namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
labels:
tier: node
app: flannel
data:
cni-conf.json: |
{
"name": "cbr0",
"cniVersion": "0.3.1",
"plugins": [
{
"type": "flannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
},
{
"type": "portmap",
"capabilities": {
"portMappings": true
}
}
]
}
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-flannel-ds-amd64
namespace: kube-system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
- key: kubernetes.io/arch
operator: In
values:
- amd64
hostNetwork: true
tolerations:
- operator: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
- name: install-cni
image: quay.io/coreos/flannel:v0.12.0-amd64
command:
- cp
args:
- -f
- /etc/kube-flannel/cni-conf.json
- /etc/cni/net.d/10-flannel.conflist
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.12.0-amd64
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
resources:
requests:
cpu: "100m"
memory: "50Mi"
limits:
cpu: "100m"
memory: "50Mi"
securityContext:
privileged: false
capabilities:
add: ["NET_ADMIN"]
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: run
mountPath: /run/flannel
- name: flannel-cfg
mountPath: /etc/kube-flannel/
volumes:
- name: run
hostPath:
path: /run/flannel
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-flannel-ds-arm64
namespace: kube-system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
- key: kubernetes.io/arch
operator: In
values:
- arm64
hostNetwork: true
tolerations:
- operator: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
- name: install-cni
image: quay.io/coreos/flannel:v0.12.0-arm64
command:
- cp
args:
- -f
- /etc/kube-flannel/cni-conf.json
- /etc/cni/net.d/10-flannel.conflist
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.12.0-arm64
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
resources:
requests:
cpu: "100m"
memory: "50Mi"
limits:
cpu: "100m"
memory: "50Mi"
securityContext:
privileged: false
capabilities:
add: ["NET_ADMIN"]
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: run
mountPath: /run/flannel
- name: flannel-cfg
mountPath: /etc/kube-flannel/
volumes:
- name: run
hostPath:
path: /run/flannel
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-flannel-ds-arm
namespace: kube-system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
- key: kubernetes.io/arch
operator: In
values:
- arm
hostNetwork: true
tolerations:
- operator: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
- name: install-cni
image: quay.io/coreos/flannel:v0.12.0-arm
command:
- cp
args:
- -f
- /etc/kube-flannel/cni-conf.json
- /etc/cni/net.d/10-flannel.conflist
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.12.0-arm
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
resources:
requests:
cpu: "100m"
memory: "50Mi"
limits:
cpu: "100m"
memory: "50Mi"
securityContext:
privileged: false
capabilities:
add: ["NET_ADMIN"]
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: run
mountPath: /run/flannel
- name: flannel-cfg
mountPath: /etc/kube-flannel/
volumes:
- name: run
hostPath:
path: /run/flannel
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-flannel-ds-ppc64le
namespace: kube-system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
- key: kubernetes.io/arch
operator: In
values:
- ppc64le
hostNetwork: true
tolerations:
- operator: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
- name: install-cni
image: quay.io/coreos/flannel:v0.12.0-ppc64le
command:
- cp
args:
- -f
- /etc/kube-flannel/cni-conf.json
- /etc/cni/net.d/10-flannel.conflist
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.12.0-ppc64le
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
resources:
requests:
cpu: "100m"
memory: "50Mi"
limits:
cpu: "100m"
memory: "50Mi"
securityContext:
privileged: false
capabilities:
add: ["NET_ADMIN"]
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: run
mountPath: /run/flannel
- name: flannel-cfg
mountPath: /etc/kube-flannel/
volumes:
- name: run
hostPath:
path: /run/flannel
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-flannel-ds-s390x
namespace: kube-system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
- key: kubernetes.io/arch
operator: In
values:
- s390x
hostNetwork: true
tolerations:
- operator: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
- name: install-cni
image: quay.io/coreos/flannel:v0.12.0-s390x
command:
- cp
args:
- -f
- /etc/kube-flannel/cni-conf.json
- /etc/cni/net.d/10-flannel.conflist
volumeMounts:
- name: cni
mountPath: /etc/cni/net.d
- name: flannel-cfg
mountPath: /etc/kube-flannel/
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.12.0-s390x
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
resources:
requests:
cpu: "100m"
memory: "50Mi"
limits:
cpu: "100m"
memory: "50Mi"
securityContext:
privileged: false
capabilities:
add: ["NET_ADMIN"]
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: run
mountPath: /run/flannel
- name: flannel-cfg
mountPath: /etc/kube-flannel/
volumes:
- name: run
hostPath:
path: /run/flannel
- name: cni
hostPath:
path: /etc/cni/net.d
- name: flannel-cfg
configMap:
name: kube-flannel-cfg

View File

@ -0,0 +1,7 @@
got up to workers
seems that docker is not starting and the worker nodes cannot join the cluster because they have no properly functioning container runtime
can't see any other problems.
following this : https://www.digitalocean.com/community/tutorials/how-to-create-a-kubernetes-cluster-using-kubeadm-on-ubuntu-18-04
interesting notes : https://elatov.github.io/2020/04/adding-a-node-to-a-kubernetes-cluster-with-kubeadm/

View File

@ -0,0 +1,12 @@
[masters]
master ansible_host=192.168.2.180 ansible_user=root ansible_ssh_pass=odroid
[workers]
worker1 ansible_host=192.168.2.181 ansible_user=root ansible_ssh_pass=odroid
worker2 ansible_host=192.168.2.182 ansible_user=root ansible_ssh_pass=odroid
worker3 ansible_host=192.168.2.183 ansible_user=root ansible_ssh_pass=odroid
worker4 ansible_host=192.168.2.184 ansible_user=root ansible_ssh_pass=odroid
worker5 ansible_host=192.168.2.185 ansible_user=root ansible_ssh_pass=odroid
[all:vars]
ansible_python_interpreter=/usr/bin/python3

View File

@ -0,0 +1,8 @@
[masters]
master ansible_host=192.168.2.180 ansible_user=root ansible_ssh_pass=odroid
[workers]
worker6 ansible_host=192.168.2.186 ansible_user=solomon ansible_ssh_pass=Solomon123 ansible_sudo_pass=Solomon123
[all:vars]
ansible_python_interpreter=/usr/bin/python3

29
code_extensions Normal file
View File

@ -0,0 +1,29 @@
code --install-extension ahmadawais.shades-of-purple
code --install-extension austin.code-gnu-global
code --install-extension christian-kohler.path-intellisense
code --install-extension CoenraadS.bracket-pair-colorizer-2
code --install-extension DotJoshJohnson.xml
code --install-extension dracula-theme.theme-dracula
code --install-extension formulahendry.auto-close-tag
code --install-extension formulahendry.auto-rename-tag
code --install-extension formulahendry.code-runner
code --install-extension Fudge.auto-using
code --install-extension HookyQR.beautify
code --install-extension humao.rest-client
code --install-extension justusadam.language-haskell
code --install-extension marcochavezf.darcula-operator-mono-vscode
code --install-extension mitaki28.vscode-clang
code --install-extension ms-azuretools.vscode-azureappservice
code --install-extension ms-dotnettools.csharp
code --install-extension ms-python.python
code --install-extension ms-vscode-remote.remote-wsl
code --install-extension ms-vscode.azure-account
code --install-extension ms-vscode.cmake-tools
code --install-extension ms-vscode.cpptools
code --install-extension quicktype.quicktype
code --install-extension sdras.night-owl
code --install-extension teabyii.ayu
code --install-extension tomoki1207.pdf
code --install-extension twxs.cmake
code --install-extension wayou.vscode-todo-highlight
code --install-extension wesbos.theme-cobalt2

8
iommu.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
shopt -s nullglob
for g in /sys/kernel/iommu_groups/*; do
echo "IOMMU Group ${g##*/}:"
for d in $g/devices/*; do
echo -e "\t$(lspci -nns ${d##*/})"
done;
done;

View File

@ -0,0 +1,22 @@
import json
import os
import hashlib
subscriptions = {}
channels = []
# read subscirptions from google takeout file
with open('./subscriptions.json') as f:
doc = json.load(f)
subscriptions[u'all'] = doc
# create a list of channels using id
for subscription in subscriptions.values():
for snippet in subscription:
channels.append('https://www.youtube.com/feeds/videos.xml?channel_id=' + snippet['snippet']['resourceId']['channelId'] + '\n')
# write subscription urls to file
with open('urls', 'a') as f:
for channel in channels:
f.writelines(channel)

115
qemu.sh Normal file
View File

@ -0,0 +1,115 @@
#!/bin/bash
## Check if the script was executed as root
[[ "$EUID" -ne 0 ]] && echo "Please run as root" && exit 1
## Load the config file
source "/etc/libvirt/hooks/kvm.conf"
## Check libvirtd is running
[[ $(systemctl status libvirtd | grep running) ]] || systemctl start libvirtd && sleep 1 && LIBVIRTD=STOPPED
function bind_vfio {
## Unload nvidia
modprobe -r nvidia_drm
modprobe -r nvidia_uvm
modprobe -r nvidia_modeset
## Load vfio
modprobe vfio
modprobe vfio_iommu_type1
modprobe vfio_pci
## Unbind gpu from nvidia and bind to vfio
virsh nodedev-detach $VIRSH_GPU_VIDEO
virsh nodedev-detach $VIRSH_GPU_AUDIO
## Unbind ssd from nvme and bind to vfio
virsh nodedev-detach $VIRSH_SSD
}
function unbind_vfio {
## Unbind gpu from vfio and bind to nvidia
virsh nodedev-reattach $VIRSH_GPU_VIDEO
virsh nodedev-reattach $VIRSH_GPU_AUDIO
## Unbind ssd from vfio and bind to nvme
virsh nodedev-reattach $VIRSH_SSD
## Unload vfio
modprobe -r vfio_pci
modprobe -r vfio_iommu_type1
modprobe -r vfio
## Load nvidia
modprobe nvidia_modeset
modprobe nvidia_uvm
modprobe nvidia_drm
}
function allocate_hugepages {
HUGEPAGES="$(($MEMORY/$(($(grep Hugepagesize /proc/meminfo | awk '{print $2}')/1024))))"
echo "Allocating hugepages..."
echo $HUGEPAGES > /proc/sys/vm/nr_hugepages
ALLOC_PAGES=$(cat /proc/sys/vm/nr_hugepages)
TRIES=0
while (( $ALLOC_PAGES != $HUGEPAGES && $TRIES < 1000 ))
do
echo 1 > /proc/sys/vm/compact_memory ## defrag ram
echo $HUGEPAGES > /proc/sys/vm/nr_hugepages
ALLOC_PAGES=$(cat /proc/sys/vm/nr_hugepages)
echo "Succesfully allocated $ALLOC_PAGES / $HUGEPAGES"
let TRIES+=1
done
if [ "$ALLOC_PAGES" -ne "HUGEPAGES" ]
then
echo "Not able to allocate all hugepages. Reverting..."
echo 0 > /proc/sys/vm/nr_hugepages
exit 1
fi
}
function deallocate_hugepages {
echo 0 > /proc/sys/vm/nr_hugepages
}
function cpu_mode_performance {
## Enable CPU governor performance mode
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "performance" > $file; done
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
}
function cpu_mode_ondemand {
## Enable CPU governor on-demand mode
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "ondemand" > $file; done
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
}
## Kill the display manager
#systemctl stop display-manager.service
## Kill the console
#echo 0 > /sys/class/vtconsole/vtcon0/bind
#echo 0 > /sys/class/vtconsole/vtcon1/bind
#echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
bind_vfio
#allocate_hugepages
#cpu_mode_performance
## QEMU KVM
#TODO context https://github.com/bryansteiner/gpu-passthrough-tutorial#return9
#cpu_mode_ondemand
#deallocate_hugepages
unbind_vfio
## Start the display manager
#systemctl start display-manager.service
## Start the console
#echo 1 > /sys/class/vtconsole/vtcon0/bind
#echo 1 > /sys/class/vtconsole/vtcon1/bind
#echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/bind