home: major restructuring

needs more work
This commit is contained in:
2022-03-15 10:42:50 +05:30
parent 81452ba490
commit ed3bf181ef
35 changed files with 326 additions and 435 deletions

30
home/natto/config/bspwm/bspwmrc Executable file
View File

@@ -0,0 +1,30 @@
#! /bin/sh
bspc rule -r "*"
##Autostart
pgrep -x sxhkd > /dev/null || sxhkd &
picom --experimental-backends &
feh --bg-scale ~/Downloads/gruvbox.jpg &
killall "polybar"
polybar main &
killall node
node /mnt/Stuff/code/muhbot
bspc monitor -d          
#bspc monitor -d I II III IV V VI VII VIII IX X
bspc config border_width 2
bspc config window_gap 10
bspc config focus_follows_pointer true
bspc config split_ratio 0.52
bspc config borderless_monocle true
bspc config gapless_monocle true
bspc config single_monocle true
bspc config top_padding 50
bspc config normal_border_color "#ffffff"
bspc config active_border_color "#1bb1b1"
bspc config focused_border_color "#fe8019"
bspc config urgent_border_color "#fe8019"

View File

@@ -0,0 +1,66 @@
[global]
monitor = 0
follow = mouse
geometry = "250x20-50+20"
# Turn on the progess bar
progress_bar = true
progress_bar_height = 3
progress_bar_frame_width = 1
progress_bar_min_width = 125
progress_bar_max_width = 250
indicate_hidden = yes
shrink = no
transparency = 0.8
separator_height = 2
padding = 5
text_icon_padding = 4
frame_width = 3
frame_color = "#ebdbb2"
separator_color = frame
sort = yes
idle_threshold = 120
font = Fira Mono 10
markup = full
format = "<b>%a<b> - %s\n%b"
alignment = left
vertical_alignment = center
show_age_threshold = 60
word_wrap = yes
ellipsize = middle
ignore_newline = no
stack_duplicates = true
hide_duplicate_count = false
show_indicators = yes
icon_position = left
min_icon_size = 0
max_icon_size = 32
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
sticky_history = yes
history_length = 20
dmenu = /usr/bin/dmenu -p dunst:
browser = /usr/bin/firefox -new-tab
always_run_script = true
title = Dunst
class = Dunst
startup_notification = false
verbosity = mesg
corner_radius = 1
ignore_dbusclose = false
[urgency_low]
background = "#222222"
foreground = "#888888"
timeout = 10
[urgency_normal]
background = "#285577"
foreground = "#ffffff"
timeout = 10
[urgency_critical]
background = "#900000"
foreground = "#ffffff"
frame_color = "#ff0000"
timeout = 10

View File

@@ -0,0 +1,2 @@
#!/usr/bin/env bash
~/.dwm/bruhstatus.sh &

View File

@@ -0,0 +1,47 @@
#!/usr/bin/env bash
prevtotload=0
previdleload=0
#tt=$(date +"%s")
#bgfile=$(ls ~/Wallpapers/** | shuf -n 1)
#for N in {99..1}; do
# magick convert $bgfile -fill black -colorize $N% jpg:- | feh --bg-scale -
#done
#feh --bg-scale $bgfile
while true; do
cputemp=$(($(cat /sys/class/thermal/thermal_zone0/temp)/1000))
gputemp=$(nvidia-smi | head -n 10 | tail -n 1 |awk '{print $3}'| cut -c 1-2)
totmem=$(cat /proc/meminfo | awk '/MemTotal:/ {print $2}')
echo $totmem
availmem=$(cat /proc/meminfo | awk '/MemAvailable:/ {print $2}')
echo $availmem
totload=$(cat /proc/stat | awk '/cpu/'|head -n 1|awk '{print $2+$3+$4+$5+$6+$7+$8}')
echo $totload
idleload=$(cat /proc/stat | awk '/cpu/'|head -n 1|awk '{print $5}')
echo $idleload
totloadchange=$(($totload-$prevtotload))
idleloadchange=$(($idleload-$previdleload))
xsetroot -name\
"CPU [$(printf %0.2f $(echo "($totloadchange-$idleloadchange)*100/$totloadchange" | bc -l))%]\
MEM [$(printf %0.2f $(echo \($totmem - $availmem\)/1024/1024|bc -l))/\
$(printf %0.2f $(echo $totmem/1024/1024 | bc -l))]\
TEMP [$cputemp°C|$gputemp°C]\
BAT$($(cat /sys/class/power_supply/BAT1/status | grep -q Discharging) && echo " " || echo "")\
[$(cat /sys/class/power_supply/BAT1/capacity)%]\
VOL [$(pamixer --get-volume)]\
[$(date +"%a, %b %d") | $(date +"%H:%M:%S")]"
prevtotload=$totload
previdleload=$idleload
# if [ $(echo $tt+44 | bc -l) -lt $(date +"%s") ]
# then
#for N in {1..99}; do
# magick convert $bgfile -fill black -colorize $N% jpg:- | feh --bg-scale -
#done
# bgfile=$(ls ~/Wallpapers/** | shuf -n 1)
#for N in {99..1}; do
# magick convert $bgfile -fill black -colorize $N% jpg:- | feh --bg-scale -
#done
# feh --bg-scale $bgfile
# tt=$(date +"%s")
#fi
sleep 15
done

View File

@@ -0,0 +1 @@
../../../modules/emacs/init.el

View File

@@ -0,0 +1,2 @@
Shamelessly taken from https://github.com/mut-ex/minimal-functional-fox
and added gruvbox colors

View File

@@ -0,0 +1,355 @@
:root {
/* Minimal Functional Fox variables*/
--mff-bg: #1d2021;
--mff-icon-color: #bbbbbb;
--mff-nav-toolbar-padding: 8px;
--mff-sidebar-bg: var(--mff-bg);
--mff-sidebar-color: #e0fbfc;
--mff-tab-border-radius: 0px;
--mff-tab-color: #ebdbb2;
--mff-tab-font-family: "Fira Mono for Powerline", sans;
--mff-tab-font-size: 11pt;
--mff-tab-font-weight: 400;
--mff-tab-height: 32px;
--mff-tab-pinned-bg: #70c1b3;
--mff-tab-selected-bg: #ebdbb2;
--mff-tab-selected-color: #1d2021;
--mff-tab-soundplaying-bg: #818181;
--mff-tab-soundplaying-color: #1d2021;
--mff-urlbar-color: #98c1d9;
--mff-urlbar-focused-color: #e0fbfc;
--mff-urlbar-font-family: "Fira Mono for Powerline", serif;
--mff-urlbar-font-size: 12pt;
--mff-urlbar-font-weight: 500;
--mff-urlbar-results-color: #e0fbfc;
--mff-urlbar-results-font-family: "Fira Mono for Powerline", serif;
--mff-urlbar-results-font-size: 12pt;
--mff-urlbar-results-font-weight: 500;
--mff-urlbar-results-url-color: #98c1d9;
/* --mff-tab-selected-bg: linear-gradient(90deg, rgba(232,74,95,1) 0%, rgba(255,132,124,1) 50%, rgba(254,206,168,1) 100%); */
/* --mff-urlbar-font-weight: 600; */
/* Overriden Firefox variables*/
--autocomplete-popup-background: var(--mff-bg) !important;
--default-arrowpanel-background: var(--mff-bg) !important;
--default-arrowpanel-color: #fefefa !important;
--lwt-toolbarbutton-icon-fill: var(--mff-icon-color) !important;
--panel-disabled-color: #f9f9fa80;
--toolbar-bgcolor: var(--mff-bg) !important;
--urlbar-separator-color: transparent !important;
}
/*
_____ _ ___ ___
|_ _/_\ | _ ) __|
| |/ _ \| _ \__ \
|_/_/ \_\___/___/
*/
.tab-background[selected="true"] {
background: var(--mff-tab-selected-bg) !important;
}
.tab-text[selected="true"] {
color: var(--mff-tab-selected-color) !important;
font-weight: bold !important;
}
.tab-background:not[visuallyselected] {
background: var(--mff-tab-selected-bg) !important;
opacity: 0.5 !important;
}
/* This positions the tabs under the navaigator container */
#titlebar {
-moz-box-ordinal-group: 3 !important;
}
.tabbrowser-tab::after,
.tabbrowser-tab::before {
border-left: none !important;
}
.tab-background {
border: none !important;
}
.tabbrowser-arrowscrollbox {
margin-inline-start: 4px !important;
margin-inline-end: 0px !important;
}
.tab-close-button {
display: none !important;
}
.tab-text {
font-family: var(--mff-tab-font-family);
font-weight: var(--mff-tab-font-weight);
font-size: var(--mff-tab-font-size) !important;
color: var(--mff-tab-color);
}
/* Hide the favicon for tabs */
hbox.tab-content .tab-icon-image {
display: none !important;
}
/* Show the favicon for tabs that are pinned */
hbox.tab-content[pinned=true] .tab-icon-image {
display: initial !important;
}
hbox.tab-content[pinned=true] .tab-text {
display: none !important;
}
#tabbrowser-tabs {
--tab-loading-fill: #033433 !important;
}
.tab-label-container:not([textoverflow]) {
display: flex;
overflow: hidden;
justify-content: center;
width: 50% !important;
max-width: 50% !important;
min-width: 50% !important;
}
/* .tab-label-container::after {
content: "?" !important;
} */
.tab-line {
display: none !important;
}
.tabbrowser-tab {
border-radius: var(--mff-tab-border-radius) !important;
border-width: 0;
height: var(--mff-tab-height) !important;
margin-bottom: 4px !important;
margin-inline-end: 4px !important;
margin-top: 4px !important;
max-height: var(--mff-tab-height) !important;
min-height: var(--mff-tab-height) !important;
}
.tabbrowser-tab[soundplaying="true"] {
background-color: var(--mff-tab-soundplaying-bg) !important;
}
#tabs-newtab-button {
list-style-image: url("https://raw.githubusercontent.com/mut-ex/minimal-functional-fox/master/add.svg") !important;
opacity: 0.7;
}
.tab-icon-sound {
display: none !important;
}
/*
_____ ___ ___ _ ___ _ ___
|_ _/ _ \ / _ \| | | _ ) /_\ | _ \
| || (_) | (_) | |__| _ \/ _ \| /
|_| \___/ \___/|____|___/_/ \_\_|_\
*/
.urlbar-icon > image {
fill: var(--mff-icon-color) !important;
color: var(--mff-icon-color) !important;
}
.toolbarbutton-text {
color: var(--mff-icon-color) !important;
}
.urlbar-icon {
color: var(--mff-icon-color) !important;
}
.toolbarbutton-icon {
/* filter: drop-shadow(0 0 0.75rem crimson); */
}
#urlbar-results {
font-family: var(--mff-urlbar-results-font-family);
font-weight: var(--mff-urlbar-results-font-weight);
font-size: var(--mff-urlbar-results-font-size) !important;
color: var(--mff-urlbar-results-color) !important;
}
.urlbarView-row[type="bookmark"] > span{
color: green !important;
}
.urlbarView-row[type="switchtab"] > span{
color: orange !important;
}
.urlbarView-url, .search-panel-one-offs-container {
color: var(--mff-urlbar-results-url-color) !important;
font-family: var(--mff-urlbar-font-family);
font-weight: var(--mff-urlbar-results-font-weight);
font-size: var(--mff-urlbar-font-size) !important;
}
.urlbarView-favicon, .urlbarView-type-icon {
display: none !important;
}
#urlbar-input {
font-size: var(--mff-urlbar-font-size) !important;
color: var(--mff-urlbar-color) !important;
font-family: var(--mff-urlbar-font-family) !important;
font-weight: var(--mff-urlbar-font-weight)!important;
text-align: center !important;
}
#tracking-protection-icon-container, #identity-box {
display: none;
}
#back-button > .toolbarbutton-icon{
--backbutton-background: transparent !important;
border: none !important;
}
#back-button {
list-style-image: url("https://raw.githubusercontent.com/mut-ex/minimal-functional-fox/master/left-arrow.svg") !important;
}
#forward-button {
list-style-image: url("https://raw.githubusercontent.com/mut-ex/minimal-functional-fox/master/right-arrow.svg") !important;
}
toolbar {
background-image: none !important;
}
#urlbar-background {
opacity: .98 !important;
}
#navigator-toolbox, toolbaritem {
border: none !important;
}
#urlbar-background {
background-color: var(--mff-bg) !important;
border: none !important;
}
.toolbar-items {
background-color: var(--mff-bg) !important;
}
#sidebar-search-container {
background-color: var(--mff-sidebar-bg) !important;
}
box.panel-arrowbox {
display: none;
}
box.panel-arrowcontent {
border-radius: 8px !important;
border: none !important;
}
tab.tabbrowser-tab {
overflow: hidden;
}
tab.tabbrowser-tab:hover {
box-shadow: 0 1px 4px rgba(0,0,0,.05);
}
image#star-button {
display: none;
}
toolbar#nav-bar {
padding: var(--mff-nav-toolbar-padding) !important;
}
toolbar#nav-bar {
padding: 4px !important;
}
#urlbar {
max-width: 70% !important;
margin: 0 15% !important;
/* position: unset!important; */;
}
#urlbar-input:focus {
color: var(--mff-urlbar-focused-color) !important;
}
.megabar[breakout-extend="true"]:not([open="true"]) > #urlbar-background {
box-shadow: none !important;
background-color: transparent !important;
}
toolbarbutton {
box-shadow: none !important;
}
/*
___ ___ ___ ___ ___ _ ___
/ __|_ _| \| __| _ ) /_\ | _ \
\__ \| || |) | _|| _ \/ _ \| /
|___/___|___/|___|___/_/ \_\_|_\
*/
.close-icon, .urlbar-icon {
fill: var(--mff-icon-color) !important;
}
.sidebar-placesTree {
color: var(--mff-sidebar-color) !important;
}
#sidebar-switcher-target {
/* color: white !important; */
}
#sidebar-box {
--sidebar-background-color: var(--mff-sidebar-bg) !important;
}
splitter#sidebar-splitter {
opacity: 0 !important;
}
splitter#sidebar-splitter {
border: none !important;
background-color: transparent !important;
}
image#sidebar-icon {
display: none;
}
/*
_ ___ ___ _____ _____ _ _ _ ___ _
/_\ | _ \ _ \/ _ \ \ / / _ \/_\ | \| | __| |
/ _ \| / / (_) \ \/\/ /| _/ _ \| .` | _|| |__
/_/ \_\_|_\_|_\\___/ \_/\_/ |_|/_/ \_\_|\_|___|____|
*/
.panel-arrowcontent {
padding: 0px !important;
margin: 0px !important;
}
toolbarseparator {
display: none;
}

View File

@@ -0,0 +1,23 @@
@import url("userChrome.css");
/* Removes white loading page */
@-moz-document url(about:blank), url(about:newtab), url(about:home) {
html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay {
background: var(--mff-bg) !important;
}
}
/* Hide scrollbar */
:root{
scrollbar-width: none !important;
}
@-moz-document url(about:privatebrowsing) {
:root{
scrollbar-width: none !important;
}
}

View File

@@ -0,0 +1,154 @@
#
# wm independent hotkeys
#
# terminal emulator
super + Return
st
# program launcher
super + d
rofi -show drun
# make sxhkd reload its configuration files:
super + alt + c
pkill -USR1 -x sxhkd
# quit/restart bspwm
super + shift + {e,r}
bspc {quit,wm -r}
# close and kill
super + {_,shift + }q
bspc node -{c,k}
# alternate between the tiled and monocle layout
super + shift + f
bspc desktop -l next
# send the newest marked node to the newest preselected node
#super + y
# bspc node newest.marked.local -n newest.!automatic.local
# swap the current node and the biggest window
#super + g
# bspc node -s biggest.window
#
# state/flags
#
# set the window state
super + {t,shift + t,s,f}
bspc node -t {\~tiled,\~pseudo_tiled,\~floating,\~fullscreen}
# set the node flags
#super + ctrl + {m,x,y,z}
# bspc node -g {marked,locked,sticky,private}
#
# focus/swap
#
# focus the node in the given direction
super + shift + {h,j,k,l}
bspc node -s {west,south,north,east}
super + {h,j,k,l}
bspc node -f {west,south,north,east}
# focus the code for the given path jump
#super + {p,b,comma,period}
# bspc node -f @{parent,brother,first,second}
# focus the next/previous window in the current desktop
super + {_,shift + }c
bspc node -f {next,prev}.local.!hidden.window
# focus the next/previous desktop in the current monitor
super + bracket{left,right}
bspc desktop -f {prev,next}.local
# focus the last node/desktop
#super + {grave,Tab}
# bspc {node,desktop} -f last
# focus the older or newer node in the focus history
super + {o,i}
bspc wm -h off; \
bspc node {older,newer} -f; \
bspc wm -h on
# focus or send to the given desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
#
# preselect
#
# preselect the direction
super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
# preselect the ratio
super + ctrl + {1-9}
bspc node -o 0.{1-9}
# cancel the preselection for the focused node
super + ctrl + space
bspc node -p cancel
# cancel the preselection for the focused desktop
super + ctrl + shift + space
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
#
# move/resize
#
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
# move a floating window
super + {Left,Down,Up,Right}
bspc node -v {-20 0,0 20,0 -20,20 0}
#
# Screenshotting
#
@Print
flameshot & flameshot full -p ~/Pictures
# exec scrot '%d-%m-%Y_%I-%M-%S%p.png' -e 'mv ~/$f ~/Pictures/'
shift + @Print
flameshot & flameshot gui -p ~/Pictures
# exec scrot -s '%d-%m-%Y_%I-%M-%S%p.png' -e 'mv ~/$f ~/Pictures/'
#super + @Print
#flameshot gui full -p ~/Pictures
# exec scrot -u '%d-%m-%Y_%I-%M-%S%p.png' -e 'mv ~/$f ~/Pictures/'
alt + @Print
flameshot & flameshot gui -d 10000 -p ~/Pictures
# exec scrot -d 10 '%d-%m-%Y_%I-%M-%S%p.png' -e 'mv ~/$f ~/Pictures/'
#
#mpd/ncmpcpp
#
super + shift + n
mpc prev
super + shift + m
mpc next
super + shift + space
mpc toggle
super + A
mpc seek +00:00:05
super + D
mpc seek -00:00:05

View File

@@ -0,0 +1,61 @@
/* XPM */
static char *bigger[] = {
/* columns rows colors chars-per-pixel */
"25 22 33 1 ",
" c None",
". c #5277C3",
"X c #5278C3",
"o c #5378C3",
"O c #557BC5",
"+ c #557CC6",
"@ c #567CC6",
"# c #567DC6",
"$ c #577EC6",
"% c #577EC7",
"& c #5880C7",
"* c #5981C8",
"= c #5C87CB",
"- c #5F8BCC",
"; c #608CCE",
": c #618DCE",
"> c #6594D1",
", c #6A9BD5",
"< c #6C9DD6",
"1 c #6C9ED6",
"2 c #6C9FD6",
"3 c #6DA0D7",
"4 c #71A6DA",
"5 c #76ADDE",
"6 c #76AEDE",
"7 c #79B2E0",
"8 c #79B3E0",
"9 c #7AB4E1",
"0 c #7BB4E1",
"q c #7CB7E2",
"w c #7CB7E3",
"e c #7DB8E3",
"r c #7EBAE4",
/* pixels */
" .. rr r ",
" .. rr rr ",
" ... rrrrr ",
" ... rrrrr ",
" ........O2err ",
" ..........=6rr . ",
" rrr .. ",
" rr rrr ... ",
" rrr rq>X. ",
" rrr r4$X... ",
"rrrrrrrr :X..... ",
"rrrrrr7< ....... ",
" rre3$ ... ",
" rr9-o. .X ",
" rr $.. *$O ",
" rr ...2rrrr667rrrr ",
" r ..:7rrrrrrrrr ",
" ...$,rrrrrrrrr ",
" ..... rrr ",
" ... .. rr ",
" .. ... rr ",
" "
};

View File

@@ -0,0 +1,58 @@
#!/usr/bin/env bash
# Taken from https://github.com/jaor/xmobar/blob/master/examples/padding-icon.sh
# Detects the width of running window with name given as first
# argument (xprop name '$1') 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 and trayer:
# `Run Com "/where/ever/padding-icon.sh" ["panel"] "trayerpad" 10`
# and use `%trayerpad%` in your template.
# or, if you're using for instance stalonetray:
# `Run Com "/where/ever/padding-icon.sh" ["stalonetray"] "tray" 10`
# Very heavily based on Jonas Camillus Jeppensen code
# https://github.com/jaor/xmobar/issues/239#issuecomment-233206552
# 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-pad-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
}
# panel window name
pname=${1:-panel}
# Width of the trayer window
width=$(xprop -name $pname | grep 'program specified minimum size' | cut -d ' ' -f 5)
# Icon file name
iconfile="/tmp/$pname-padding-${width:-0}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}/>"

View File

@@ -0,0 +1,49 @@
import Xmobar
bg, fg, grey, red, green, yellow, blue, magenta, cyan, white, sep :: String
sep = "<fc=" ++ cyan ++ ">║</fc>"
bg = "#1d1f21"
fg = "#c5c8c6"
grey = "#969896"
red = "#cc6666"
green = "#b5bd68"
yellow = "#f0c674"
blue = "#81a2be"
magenta = "#b294bb"
cyan = "#8abeb7"
white = "#ecebec"
config :: Config
config =
defaultConfig
{ font = "xft:Fira Mono:style=Regular:antialias=true:pixelsize,Font Awesome 5 Brands:pixelsize=16,Font Awesome 5 Free:pixelsize=16:style=Solid,Lohit Devanagari:style=Regular:pixelsize=16,Lohit Gurmukhi:style=Regular:pixelsize=16,Noto Sans CJK JP:style=Regular:pixelsize=16,Noto Sans CJK KR:style=Regular:pixelsize=16,Noto Sans CJK SC:style=Regular:pixelsize=16",
additionalFonts =
[ "xft:Font Awesome 5 Free:pixelsize=15:style=Solid",
"xft:Font Awesome 5 Brands:pixelsize=15"
],
position = Static { xpos = 0, ypos = 0, height = 23, width = 1920 },
bgColor = bg,
fgColor = fg,
lowerOnStart = False,
overrideRedirect = False,
allDesktops = True,
persistent = True,
commands =
[ Run $ MultiCpu ["-t", "<fn=1>\xf2db</fn> <total>%", "-L", "20", "-H", "80", "-h", magenta, "-l", green, "-n", yellow] 10,
Run $ Memory ["-t", "<fn=1>\xf538</fn> <usedratio>%", "-H", "10240", "-L", "6144", "-h", magenta, "-l", green, "-n", yellow] 20,
Run $ BatteryP ["BAT1", "BAT0", "BAT2"] ["-t", "<acstatus>", "-L", "10", "-H", "80", "-l", magenta, "-h", green, "-n", yellow, "--", "-O", "Charging", "-o", "<left>%", "-a", "notify-send -u critical 'Battery running out!'", "-A", "5", "--lows", "<fn=1>\xf243</fn> ", "--mediums", "<fn=1>\xf242</fn> ", "--highs", "<fn=1>\xf240</fn> "] 300,
Run $ Network "wlp0s20f3" ["-t", "<fn=1>\xf1eb</fn> <fc=" ++ magenta ++ "><rx>/<tx></fc>"] 10,
Run $ Date "<fn=1>\xf073</fn> %-d/%-m/%-y/%w" "date" 10000,
Run $ Date "%H:%M:%S" "time" 10,
Run $ MPD ["-t", "<statei><title><fn=" ++ magenta ++ "> \xf001</fn>", "--", "-P", ">> ", "-Z", "|| ", "-S", "Stopped", "-h", "127.0.0.1", "-p", "6600"] 10,
Run $ Com "/home/natto/.xmonad/lib/padding-icon.sh" ["stalonetray"] "tray" 10,
Run $ Com "pamixer" ["--get-volume"] "" 100,
Run UnsafeStdinReader
],
sepChar = "*",
alignSep = "--",
template = "<action=`dmenu_run` button=1><icon=/home/natto/.xmonad/lib/nixos.xpm/></action> *UnsafeStdinReader* " ++ sep ++ " <fn=1></fn>*mpd* -- *multicpu* " ++ sep ++ " *memory* " ++ sep ++ " *wlp0s20f3* " ++ sep ++ " *battery* " ++ sep ++ " <fn=1>\xf028</fn> <fc=" ++ green ++ ">*pamixer*%</fc> " ++ sep ++ " *date* - *time* " ++ sep ++ "*tray*"
}
main :: IO ()
main = xmobar config

View File

@@ -0,0 +1,257 @@
import System.IO
import System.Exit
import XMonad
import XMonad.Hooks.SetWMName
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.DynamicLog
import XMonad.Layout.NoBorders
import XMonad.Layout.Spacing (smartSpacing)
import XMonad.Layout.Spiral
import XMonad.Layout.Tabbed
import XMonad.Layout.ThreeColumns
import XMonad.Layout.ResizableTile
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run (spawnPipe)
import XMonad.Actions.FloatKeys (keysMoveWindow,
keysResizeWindow)
import Graphics.X11.ExtraTypes.XF86
import XMonad.Actions.CycleWindows
import qualified XMonad.StackSet as W
import qualified Data.Map as M
--colors
bgColor = "#1d1f21"
fgColor = "#c5c8c6"
activeWinColor = "#f0c674"
inactiveWinColor = "#b294bb"
urgentWinColor = "#cc6666"
miscColor = "#8abeb7"
myBorderWidth = 2
myTerminal = "/usr/bin/env st"
myFocusFollowsMouse = True
myNormalBorderColor = bgColor
myModMask = mod4Mask
myFocusedBorderColor = fgColor
myManageHook = composeAll
[ className =? "Discord" --> doFloat
, className =? "Anki" --> doFloat
]
tabConfig = defaultTheme {
activeTextColor = bgColor,
activeColor = fgColor,
inactiveTextColor = fgColor,
inactiveColor = bgColor
}
myXmobarrc = "~/.xmonad/lib/xmobar.hs"
myWorkspaces = clickable $ ["\xf269", "\xf120", "\xf121", "\xf392", "\xf008", "\xf07b", "\xf11b", "\xf086", "\xf074" ]
where clickable l = ["<action=`xdotool key super+" ++ show (n) ++ "`>" ++ ws ++ "</action>" | (i,ws) <- zip [1..9] l, let n = i ]
myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
[ ((modMask, xK_Return),
spawn $ XMonad.terminal conf)
, ((modMask, xK_d),
spawn "/usr/bin/env dmenu_run -l 20")
, ((shiftMask, xK_Print),
spawn "flameshot gui")
, ((0, xK_Print),
spawn "flameshot full -p /home/natto/Pictures")
, ((mod1Mask, xK_Print),
spawn "flameshot gui -d 10000")
, ((modMask, xK_p),
spawn "mpc toggle")
, ((modMask, xK_h),
spawn "mpc next")
, ((modMask, xK_k),
spawn "mpc prev")
, ((modMask .|. shiftMask, xK_a),
spawn "mpc seek -00:00:05")
, ((modMask .|. shiftMask, xK_s),
spawn "mpc seek +00:00:05")
, ((modMask .|. shiftMask, xK_period),
spawn "pamixer --allow-boost -i 5")
, ((modMask .|. shiftMask, xK_comma),
spawn "pamixer --allow-boost -d 5")
, ((modMask .|. shiftMask, xK_q), kill)
, ((mod1Mask, xK_Tab),
cycleRecentWindows [xK_Alt_L] xK_Tab xK_q)
, ((modMask .|. mod1Mask, xK_0), spawn "light -A 5")
, ((modMask .|. mod1Mask, xK_9), spawn "light -U 5")
, ((modMask .|. shiftMask, xK_F1),
spawn "setxkbmap us-colemak")
, ((modMask .|. shiftMask, xK_F2),
spawn "setxkbmap us basic")
, ((modMask .|. shiftMask, xK_F3),
spawn "setxkbmap in deva")
, ((modMask .|. shiftMask, xK_F4),
spawn "setxkbmap in guru")
, ((modMask, xK_space),
sendMessage NextLayout)
, ((modMask, xK_f),
toggleFullscreen)
, ((modMask .|. shiftMask, xK_space),
setLayout $ XMonad.layoutHook conf)
, ((modMask, xK_r),
refresh)
, ((modMask, xK_n),
windows W.focusDown)
, ((modMask, xK_e), windows W.focusUp )
, ((modMask .|. shiftMask, xK_h),
windows W.focusMaster )
, ((modMask .|. shiftMask, xK_Return),
windows W.swapMaster)
, ((modMask .|. shiftMask, xK_n),
windows W.swapDown )
, ((modMask .|. shiftMask, xK_e),
windows W.swapUp )
, ((mod1Mask, xK_m),
sendMessage Expand)
, ((mod1Mask, xK_i),
sendMessage Shrink)
, ((mod1Mask, xK_n),
sendMessage MirrorExpand)
, ((mod1Mask, xK_e),
sendMessage MirrorShrink)
, ((modMask .|. mod1Mask .|. shiftMask, xK_m),
withFocused (keysMoveWindow (-30, 0)))
, ((modMask .|. mod1Mask .|. shiftMask, xK_i),
withFocused (keysMoveWindow (30, 0)))
, ((modMask .|. mod1Mask .|. shiftMask, xK_n),
withFocused (keysMoveWindow (0, 30)))
, ((modMask .|. mod1Mask .|. shiftMask, xK_e),
withFocused (keysMoveWindow (0, -30)))
, ((modMask, xK_t),
withFocused $ windows . W.sink)
, ((modMask, xK_comma),
sendMessage (IncMasterN 1))
, ((modMask, xK_period),
sendMessage (IncMasterN (-1)))
, ((modMask .|. mod1Mask, xK_f),
io (exitWith ExitSuccess))
, ((modMask .|. mod1Mask, xK_r),
restart "xmonad" True)
]
++
[((m .|. modMask, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
myLayoutHook = smartSpacing 8 $ smartBorders $ avoidStruts (
ResizableTall 1 (3/100) (3/5) [] |||
spiral (6/7) |||
tabbed shrinkText tabConfig |||
ThreeCol 1 (3/100) (1/2) |||
Tall 1 (3/100) (1/2) |||
Mirror (Tall 1 (3/100) (1/2)) |||
Full)
-- {{{source: https://github.com/liskin/dotfiles/commit/659af2ec68c26044f9e6ddf11655856613285685#diff-f3bd9f70ef878f30362ff11bbea7fd1d0d6abde1b4befa44b18cce5a27456204R190
toggleFullscreen =
withWindowSet $ \ws ->
withFocused $ \w -> do
let fullRect = W.RationalRect 0 0 1 1
let isFullFloat = w `M.lookup` W.floating ws == Just fullRect
windows $ if isFullFloat then W.sink w else W.float w fullRect
--}}}
--{{{
--couldnt get fullScreenEventHook to work normally so using this for now
--source code: https://github.com/xmonad/xmonad-contrib/blob/v0.16/XMonad/Hooks/EwmhDesktops.hs
fullscreenFix :: XConfig a -> XConfig a
fullscreenFix c = c {
startupHook = startupHook c +++ setSupportedWithFullscreen
}
where x +++ y = mappend x y
setSupportedWithFullscreen :: X ()
setSupportedWithFullscreen = withDisplay $ \dpy -> do
r <- asks theRoot
a <- getAtom "_NET_SUPPORTED"
c <- getAtom "ATOM"
supp <- mapM getAtom ["_NET_WM_STATE_HIDDEN"
,"_NET_WM_STATE_FULLSCREEN"
,"_NET_NUMBER_OF_DESKTOPS"
,"_NET_CLIENT_LIST"
,"_NET_CLIENT_LIST_STACKING"
,"_NET_CURRENT_DESKTOP"
,"_NET_DESKTOP_NAMES"
,"_NET_ACTIVE_WINDOW"
,"_NET_WM_DESKTOP"
,"_NET_WM_STRUT"
]
io $ changeProperty32 dpy r a c propModeReplace (fmap fromIntegral supp)
setWMName "xmonad"
--}}}
main = do xmproc <- spawnPipe ("xmobar " ++ myXmobarrc)
xmonad $ docks $ fullscreenFix $ ewmh def
{ borderWidth = myBorderWidth
, manageHook = manageDocks <+> myManageHook
, handleEventHook = handleEventHook def <+> fullscreenEventHook
, terminal = myTerminal
, focusFollowsMouse = myFocusFollowsMouse
, normalBorderColor = myNormalBorderColor
, layoutHook = myLayoutHook
, modMask = myModMask
, keys = myKeys
, focusedBorderColor = myFocusedBorderColor
, workspaces = myWorkspaces
, logHook = dynamicLogWithPP xmobarPP
{ ppOutput = hPutStrLn xmproc
, ppCurrent = xmobarColor activeWinColor "" . wrap "(" ")"
, ppVisible = xmobarColor activeWinColor ""
, ppHidden = xmobarColor inactiveWinColor ""
, ppTitle = xmobarColor fgColor "" . shorten 40
, ppLayout = const ""
, ppUrgent = xmobarColor urgentWinColor "" . wrap "!" ""
, ppSep = "<fc=" ++ miscColor ++ "> ║ </fc>"
}
}

View File

@@ -0,0 +1,14 @@
set statusbar-h-padding 0
set statusbar-v-padding 0
set page-padding 1
map w scroll half-up
map r scroll half-down
map s reload
map S rotate
map f zoom in
map q zoom out
map p follow link
#map m scroll left
#map i scroll right
#map n scroll down
#map e scroll up