Attempting to migrate off digga...
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
#: Ayu theme for kitty
|
||||
#: Stolen from https://codeberg.org/Raimu/kitty-ayu-color-scheme/src/branch/main/ayu-Mirage.conf
|
||||
|
||||
background #1F2430
|
||||
foreground #CBCCC6
|
||||
cursor #FFCC66
|
||||
selection_background #33415E
|
||||
color0 #000000
|
||||
color8 #4D5566
|
||||
color1 #FF3333
|
||||
color9 #F27983
|
||||
color2 #BAE67E
|
||||
color10 #A6CC70
|
||||
color3 #FFA759
|
||||
color11 #F29E74
|
||||
color4 #73D0FF
|
||||
color12 #77A8D9
|
||||
color5 #D4BFFF
|
||||
color13 #A37ACC
|
||||
color6 #95E6CB
|
||||
color14 #4CBF99
|
||||
color7 #ffffff
|
||||
color15 #F0F0F0
|
||||
selection_foreground #CBCCC6
|
||||
@@ -0,0 +1,98 @@
|
||||
{ pkgs, config, age, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
khal
|
||||
khard
|
||||
vdirsyncer
|
||||
];
|
||||
|
||||
xdg.configFile = {
|
||||
"vdirsyncer/config".text = ''
|
||||
[general]
|
||||
status_path = "/home/anish/.config/vdirsyncer/status/"
|
||||
|
||||
[pair contacts]
|
||||
a = "contacts_local"
|
||||
b = "contacts_remote"
|
||||
collections = ["from b"]
|
||||
metadata = ["displayname"]
|
||||
|
||||
[storage contacts_local]
|
||||
type = "filesystem"
|
||||
path = "~/.contacts/"
|
||||
fileext = ".vcf"
|
||||
|
||||
[storage contacts_remote]
|
||||
type = "carddav"
|
||||
url = "http://mossnet.lan:5252/anish"
|
||||
username = "anish"
|
||||
password.fetch = ["command", "echo", "acceptsanypassword"]
|
||||
|
||||
[pair calendar]
|
||||
a = "calendar_local"
|
||||
b = "calendar_remote"
|
||||
collections = ["from b"]
|
||||
metadata = ["displayname"]
|
||||
|
||||
[storage calendar_local]
|
||||
type = "filesystem"
|
||||
path = "~/.calendar/"
|
||||
fileext = ".ics"
|
||||
|
||||
[storage calendar_remote]
|
||||
type = "caldav"
|
||||
url = "http://mossnet.lan:5252/anish"
|
||||
username = "anish"
|
||||
password.fetch = ["command", "echo", "allpasswordsaccepted"]
|
||||
'';
|
||||
|
||||
"khal/config".text = ''
|
||||
[calendars]
|
||||
|
||||
[[calendar_local]]
|
||||
path = ~/.calendar/*
|
||||
type = discover
|
||||
|
||||
[[contacts_local]]
|
||||
path = ~/.contacts/*
|
||||
type = birthdays
|
||||
|
||||
[locale]
|
||||
timeformat = %H:%M
|
||||
dateformat = %Y-%m-%d
|
||||
longdateformat = %Y-%m-%d
|
||||
datetimeformat = %Y-%m-%d %H:%M
|
||||
longdatetimeformat = %Y-%m-%d %H:%M
|
||||
'';
|
||||
|
||||
"khard/khard.conf".text = ''
|
||||
[addressbooks]
|
||||
[[personal]]
|
||||
path = ~/.contacts/*
|
||||
|
||||
[general]
|
||||
debug = no
|
||||
default_action = list
|
||||
editor = nvim, -i, NONE
|
||||
merge_editor = nvim, -d
|
||||
|
||||
[contact table]
|
||||
display = first_name
|
||||
group_by_addressbook = no
|
||||
reverse = no
|
||||
show_nicknames = yes
|
||||
show_uids = no
|
||||
sort = last_name
|
||||
localize_dates = yes
|
||||
preferred_phone_number_type = pref, cell, home
|
||||
preferred_email_address_type = pref, home, work
|
||||
|
||||
[vcard]
|
||||
private_objects = Jabber,
|
||||
preferred_version = 3.0
|
||||
search_in_source_files = no
|
||||
skip_unparsable = no
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,272 @@
|
||||
{ self, lib, pkgs, config, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
binutils
|
||||
coreutils
|
||||
dnsutils
|
||||
dosfstools
|
||||
#git
|
||||
bottom
|
||||
gptfdisk
|
||||
starship
|
||||
iputils
|
||||
jq
|
||||
manix
|
||||
moreutils
|
||||
nix-index
|
||||
cached-nix-shell
|
||||
nmap
|
||||
ripgrep
|
||||
skim
|
||||
tealdeer
|
||||
usbutils
|
||||
utillinux
|
||||
whois
|
||||
iftop
|
||||
wget
|
||||
curl
|
||||
exa
|
||||
bat
|
||||
fd
|
||||
ncdu
|
||||
duf
|
||||
trash-cli
|
||||
nix-index
|
||||
silver-searcher
|
||||
tcpdump
|
||||
mtr
|
||||
file
|
||||
lsof
|
||||
atool
|
||||
strace
|
||||
zip
|
||||
unzip
|
||||
rsync
|
||||
tmux
|
||||
pwgen
|
||||
glow
|
||||
pass
|
||||
less
|
||||
gdb
|
||||
xxd
|
||||
taskwarrior
|
||||
yt-dlp
|
||||
gnupg
|
||||
syncthing
|
||||
dijo
|
||||
#ssb-patchwork
|
||||
fontconfig
|
||||
pandoc
|
||||
(pkgs.writeScriptBin "jq-repl" ''
|
||||
#!/usr/bin/env bash
|
||||
if [[ -z $1 ]] || [[ $1 == "-" ]] then
|
||||
input=$(mktemp)
|
||||
trap "rm -f $input" EXIT
|
||||
cat /dev/stdin > $input
|
||||
else
|
||||
input=$1
|
||||
fi
|
||||
|
||||
echo "" \ | fzf --phony --preview-window="up:90%" --print-query --preview "jq --color-output -r {q} $input"
|
||||
'')
|
||||
];
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
enableAutosuggestions = true;
|
||||
|
||||
initExtra = ''
|
||||
bindkey -v
|
||||
flakify() {
|
||||
if [ ! -e flake.nix ]; then
|
||||
nix flake new -t github:nix-community/nix-direnv .
|
||||
elif [ ! -e .envrc ]; then
|
||||
echo "use flake" > .envrc
|
||||
direnv allow
|
||||
fi
|
||||
vim flake.nix
|
||||
}
|
||||
autopair-init
|
||||
'';
|
||||
sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
TERMINFO_DIRS = "${pkgs.kitty.terminfo.outPath}/share/terminfo"; # Needed to run home-manager switch on non-nixOS
|
||||
};
|
||||
plugins = [
|
||||
# {
|
||||
# name = "zsh-autocomplete";
|
||||
# src = pkgs.fetchFromGitHub {
|
||||
# owner = "marlonrichert";
|
||||
# repo = "zsh-autocomplete";
|
||||
# rev = "22.01.21";
|
||||
# sha256 = "+UziTYsjgpiumSulrLojuqHtDrgvuG91+XNiaMD7wIs=";
|
||||
# };
|
||||
# }
|
||||
{
|
||||
name = "zsh-autopair";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "hlissner";
|
||||
repo = "zsh-autopair";
|
||||
rev = "34a8bca0c18fcf3ab1561caef9790abffc1d3d49";
|
||||
sha256 = "1h0vm2dgrmb8i2pvsgis3lshc5b0ad846836m62y8h3rdb3zmpy1";
|
||||
};
|
||||
file = "autopair.zsh";
|
||||
}
|
||||
{
|
||||
name = "zsh-syntax-highlighting";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "zsh-users";
|
||||
repo = "zsh-syntax-highlighting";
|
||||
rev = "0.6.0";
|
||||
sha256 = "0zmq66dzasmr5pwribyh4kbkk23jxbpdw4rjxx0i7dx8jjp2lzl4";
|
||||
};
|
||||
file = "zsh-syntax-highlighting.zsh";
|
||||
}
|
||||
{
|
||||
name = "zsh-autoquoter";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "ianthehenry";
|
||||
repo = "zsh-autoquoter";
|
||||
rev = "819a615fbfd2ad25c5d311080e3a325696b45de7";
|
||||
sha256 = "r0jdo+YFTOejvNMTqzXi5ftcLzDpuKejX0wMFwqKdJY=";
|
||||
};
|
||||
file = "zsh-autoquoter.zsh";
|
||||
}
|
||||
{
|
||||
name = "zsh-nix-shell";
|
||||
file = "nix-shell.plugin.zsh";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "chisui";
|
||||
repo = "zsh-nix-shell";
|
||||
rev = "v0.5.0";
|
||||
sha256 = "0za4aiwwrlawnia4f29msk822rj9bgcygw6a8a6iikiwzjjz0g91";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
nix-direnv.enable = true;
|
||||
# nix-direnv.enableFlakes = true; always enabled
|
||||
};
|
||||
|
||||
programs.zoxide = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
services.kdeconnect.enable = true;
|
||||
|
||||
home.shellAliases = {
|
||||
# quick cd
|
||||
".." = "cd ..";
|
||||
"..." = "cd ../..";
|
||||
"...." = "cd ../../..";
|
||||
"....." = "cd ../../../..";
|
||||
|
||||
# kitaab recents
|
||||
kr = "cd /home/anish/kitaab/vimwiki; ls --sort=modified --reverse | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 {}'";
|
||||
|
||||
# modern cli tools
|
||||
ls = "exa --icons";
|
||||
l = "exa -l --icons";
|
||||
la = "exa -la --icons";
|
||||
tree = "ls --tree --icons";
|
||||
cat = "bat";
|
||||
unzip = "aunpack";
|
||||
copy = "xclip -selection clipboard";
|
||||
paste = "xclip -selection clipboard -o";
|
||||
rm = "echo USE TRASH, FOOL: trash ";
|
||||
trash = "trash-put";
|
||||
make-secret = "< /dev/urandom \\tr -dc _A-Za-z0-9 | head -c \${1:-32};echo;";
|
||||
|
||||
# task warrior
|
||||
# TODO: make blocked a context?
|
||||
t = "task -BLOCKED";
|
||||
tin = "task in";
|
||||
tun = "task -BLOCKED -wait";
|
||||
tb = "task list +backlog";
|
||||
tr = "task newest limit:page";
|
||||
tu = "task unblocked -wait";
|
||||
tl = "task list";
|
||||
ta = "task add";
|
||||
tai = "task add +in";
|
||||
tn = "task-note";
|
||||
tp = "task limit:page";
|
||||
ts = "task sync";
|
||||
|
||||
# keeping for posterity but now sxhkbd handles screenshot with <Super+O>
|
||||
# scrot = "flameshot screen -c -p ~/screenshots/";
|
||||
# scrotgui = "flameshot gui -p ~/screenshots/";
|
||||
|
||||
# git
|
||||
g = "git";
|
||||
|
||||
# grep
|
||||
grep = "rg";
|
||||
gi = "grep -i";
|
||||
|
||||
# internet ip
|
||||
myip = "dig +short myip.opendns.com @208.67.222.222 2>&1";
|
||||
|
||||
# nix
|
||||
n = "nix";
|
||||
np = "n profile";
|
||||
ni = "np install";
|
||||
nr = "np remove";
|
||||
ns = "n search --no-update-lock-file";
|
||||
nf = "n flake";
|
||||
nfl = "nf lock";
|
||||
nepl = "n repl '<nixpkgs>'";
|
||||
srch = "ns nixos";
|
||||
orch = "ns override";
|
||||
nrb = "cd /tmp; sudo nixos-rebuild switch --flake '/etc/nixos/#curve'; cd $OLDPWD";
|
||||
nrt = "cd /tmp; sudo nixos-rebuild test --flake '/etc/nixos/#curve'; cd $OLDPWD";
|
||||
ned = "cd /etc/nixos; vim; cd $OLDPWD";
|
||||
ncd = "cd /etc/nixos";
|
||||
mn = ''
|
||||
manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix
|
||||
'';
|
||||
# fix nixos-option
|
||||
nixos-option = "nixos-option -I nixpkgs=${self}/lib/compat";
|
||||
|
||||
# sudo
|
||||
s = "sudo -E ";
|
||||
pls = "s";
|
||||
si = "sudo -i";
|
||||
se = "sudoedit";
|
||||
|
||||
# top
|
||||
top = "btm";
|
||||
|
||||
# systemd
|
||||
ctl = "systemctl";
|
||||
stl = "s systemctl";
|
||||
utl = "systemctl --user";
|
||||
ut = "systemctl --user start";
|
||||
un = "systemctl --user stop";
|
||||
up = "s systemctl start";
|
||||
dn = "s systemctl stop";
|
||||
jtl = "journalctl";
|
||||
|
||||
# quick ssh
|
||||
kssh = "kitten +kitty ssh";
|
||||
smm = "ssh 10.0.69.4"; # box over wireguard
|
||||
sm = "ssh mossnet.lan"; # box regular
|
||||
ss = "ssh sealight.xyz"; # helix
|
||||
# sl = "ssh 69.61.38.225"; # lituus has become helix
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
[aws]
|
||||
symbol = " "
|
||||
|
||||
[character]
|
||||
success_symbol = "[❯](bold purple)"
|
||||
vicmd_symbol = "[❮](bold purple)"
|
||||
|
||||
[battery]
|
||||
full_symbol = " "
|
||||
charging_symbol = " "
|
||||
discharging_symbol = " "
|
||||
|
||||
[conda]
|
||||
symbol = " "
|
||||
|
||||
[directory]
|
||||
style = "cyan"
|
||||
read_only = " 🔒"
|
||||
|
||||
[docker_context]
|
||||
symbol = " "
|
||||
|
||||
[elixir]
|
||||
symbol = " "
|
||||
|
||||
[elm]
|
||||
symbol = " "
|
||||
|
||||
[git_branch]
|
||||
format = "[$symbol$branch]($style) "
|
||||
symbol = " "
|
||||
style = "bold dimmed white"
|
||||
|
||||
[git_status]
|
||||
format = '([「$all_status$ahead_behind」]($style) )'
|
||||
conflicted = "⚠️"
|
||||
ahead = "⟫${count} "
|
||||
behind = "⟪${count}"
|
||||
diverged = "🔀 "
|
||||
untracked = "📁 "
|
||||
stashed = "↪ "
|
||||
modified = "𝚫 "
|
||||
staged = "✔ "
|
||||
renamed = "⇆ "
|
||||
deleted = "✘ "
|
||||
style = "bold bright-white"
|
||||
|
||||
[golang]
|
||||
symbol = " "
|
||||
|
||||
[hg_branch]
|
||||
symbol = " "
|
||||
|
||||
[java]
|
||||
symbol = " "
|
||||
|
||||
[julia]
|
||||
symbol = " "
|
||||
|
||||
[memory_usage]
|
||||
symbol = " "
|
||||
disabled = false
|
||||
|
||||
[nim]
|
||||
symbol = " "
|
||||
|
||||
[nix_shell]
|
||||
format = '[$symbol$state]($style) '
|
||||
symbol = " "
|
||||
pure_msg = "λ"
|
||||
impure_msg = "⎔"
|
||||
|
||||
[nodejs]
|
||||
symbol = " "
|
||||
|
||||
[package]
|
||||
symbol = " "
|
||||
|
||||
[php]
|
||||
symbol = " "
|
||||
|
||||
[python]
|
||||
symbol = " "
|
||||
|
||||
[ruby]
|
||||
symbol = " "
|
||||
|
||||
[rust]
|
||||
symbol = " "
|
||||
|
||||
[status]
|
||||
disabled = false
|
||||
@@ -0,0 +1,80 @@
|
||||
!! Colors
|
||||
#define blk #1F2430
|
||||
#define bblk #F28779
|
||||
#define red #A6CC70
|
||||
#define bred #FFCC66
|
||||
#define grn #5CCFE6
|
||||
#define bgrn #F29E74
|
||||
#define ylw #77A8D9
|
||||
#define bylw #5C6773
|
||||
#define blu #707A8C
|
||||
#define bblu #F27983
|
||||
#define mag #BAE67E
|
||||
#define bmag #FFD580
|
||||
#define cyn #73D0FF
|
||||
#define bcyn #FFA759
|
||||
#define wht #95E6CB
|
||||
#define bwht #CBCCC6
|
||||
#define bg blk
|
||||
#define fg wht
|
||||
|
||||
*.foreground: fg
|
||||
*.background: bg
|
||||
*.cursorColor: mag
|
||||
|
||||
*.color0: blk
|
||||
*.color8: bblk
|
||||
*.color1: red
|
||||
*.color9: bred
|
||||
*.color2: grn
|
||||
*.color10: bgrn
|
||||
*.color3: ylw
|
||||
*.color11: bylw
|
||||
*.color4: blu
|
||||
*.color12: bblu
|
||||
*.color5: mag
|
||||
*.color13: bmag
|
||||
*.color6: cyn
|
||||
*.color14: bcyn
|
||||
*.color7: wht
|
||||
*.color15: bwht
|
||||
|
||||
! greys
|
||||
*.color234: #1E2029
|
||||
*.color235: #282a36
|
||||
*.color236: #373844
|
||||
*.color237: #44475a
|
||||
*.color239: #565761
|
||||
*.color240: #6272a4
|
||||
*.color241: #b6b6b2
|
||||
|
||||
|
||||
!! general
|
||||
st.scratch.font: JetBrainsMono:pixelsize=16
|
||||
|
||||
|
||||
!! xst
|
||||
st.font: JetBrainsMono:pixelsize=12
|
||||
st.borderpx: 10
|
||||
|
||||
|
||||
!! urxvt
|
||||
URxvt*depth: 32
|
||||
URxvt*.background: blk
|
||||
URxvt*.borderless: 1
|
||||
URxvt*.buffered: true
|
||||
URxvt*.cursorBlink: true
|
||||
URxvt*.font: xft:Fira Code:pixelsize=12
|
||||
URxvt*.internalBorder: 10
|
||||
URxvt*.letterSpace: 0
|
||||
URxvt*.lineSpace: 0
|
||||
URxvt*.loginShell: false
|
||||
URxvt*.matcher.button: 1
|
||||
URxvt*.matcher.rend.0: Uline Bold fg5
|
||||
URxvt*.saveLines: 5000
|
||||
URxvt*.scrollBar: false
|
||||
URxvt*.underlineColor: grey
|
||||
URxvt.clipboard.autocopy: true
|
||||
URxvt.iso14755: false
|
||||
URxvt.iso14755_52: false
|
||||
URxvt.perl-ext-common: default,matcher
|
||||
@@ -0,0 +1,44 @@
|
||||
!
|
||||
! Generated with :
|
||||
! XRDB2Xreources.py
|
||||
!
|
||||
*.foreground: #1F2430
|
||||
*.background: #0f1419
|
||||
*.cursorColor: #f29718
|
||||
!
|
||||
! Black
|
||||
*.color0: #000000
|
||||
*.color8: #323232
|
||||
!
|
||||
! Red
|
||||
*.color1: #ff3333
|
||||
*.color9: #ff6565
|
||||
!
|
||||
! Green
|
||||
*.color2: #b8cc52
|
||||
*.color10: #eafe84
|
||||
!
|
||||
! Yellow
|
||||
*.color3: #e7c547
|
||||
*.color11: #fff779
|
||||
!
|
||||
! Blue
|
||||
*.color4: #36a3d9
|
||||
*.color12: #68d5ff
|
||||
!
|
||||
! Magenta
|
||||
*.color5: #f07178
|
||||
*.color13: #ffa3aa
|
||||
!
|
||||
! Cyan
|
||||
*.color6: #95e6cb
|
||||
*.color14: #c7fffd
|
||||
!
|
||||
! White
|
||||
*.color7: #ffffff
|
||||
*.color15: #ffffff
|
||||
!
|
||||
! Bold, Italic, Underline
|
||||
*.colorBD: #e6e1cf
|
||||
!*.colorIT:
|
||||
!*.colorUL:
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
background #0A0E14
|
||||
foreground #B3B1AD
|
||||
cursor #E6B450
|
||||
selection_background #273747
|
||||
color0 #000000
|
||||
color8 #4D5566
|
||||
color1 #FF3333
|
||||
color9 #D96C75
|
||||
color2 #C2D94C
|
||||
color10 #91B362
|
||||
color3 #FF8F40
|
||||
color11 #F29668
|
||||
color4 #59C2FF
|
||||
color12 #6994BF
|
||||
color5 #D4BFFF
|
||||
color13 #A37ACC
|
||||
color6 #95E6CB
|
||||
color14 #4CBF99
|
||||
color7 #ffffff
|
||||
color15 #F0F0F0
|
||||
selection_foreground #B3B1AD
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#: This is a port of ayu Mirage color scheme
|
||||
#: based on :
|
||||
#: https://github.com/ayu-theme/ayu-colors
|
||||
|
||||
background #1F2430
|
||||
foreground #CBCCC6
|
||||
cursor #FFCC66
|
||||
selection_background #33415E
|
||||
color0 #000000
|
||||
color8 #4D5566
|
||||
color1 #FF3333
|
||||
color9 #F27983
|
||||
color2 #BAE67E
|
||||
color10 #A6CC70
|
||||
color3 #FFA759
|
||||
color11 #F29E74
|
||||
color4 #73D0FF
|
||||
color12 #77A8D9
|
||||
color5 #D4BFFF
|
||||
color13 #A37ACC
|
||||
color6 #95E6CB
|
||||
color14 #4CBF99
|
||||
color7 #ffffff
|
||||
color15 #F0F0F0
|
||||
selection_foreground #CBCCC6
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.8 MiB |
Executable
+11
@@ -0,0 +1,11 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
connect() {
|
||||
xrandr --output HDMI-2 --same-as eDP-1
|
||||
}
|
||||
|
||||
disconnect() {
|
||||
xrandr --output HDMI-2 --off
|
||||
}
|
||||
|
||||
xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
|
||||
Executable
+3
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
URL="$(xclip -selection clipboard -o)"
|
||||
mpv $URL
|
||||
Executable
+68
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Prompts for a pass entry, then for a specific field. Similar to passmenu, but
|
||||
# uses rofi, and can resume from a previous session.
|
||||
#
|
||||
# Example: passmenu [RESUME]
|
||||
|
||||
ROFI_CMD='rofi -dmenu -theme theme/passmenu.rasi'
|
||||
MSG_CMD='notify-send'
|
||||
set -e
|
||||
shopt -s nullglob globstar
|
||||
|
||||
for prog in xclip pass; do
|
||||
if ! command -v "$prog" >/dev/null; then
|
||||
>&2 echo "$prog not installed, aborting"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $1 == -r ]]; then
|
||||
resume=1; shift
|
||||
fi
|
||||
|
||||
url=
|
||||
# Get qutebrowser's current url
|
||||
win=$(xdotool getactivewindow)
|
||||
if [[ -n $win ]]; then
|
||||
winname=$(xdotool getwindowname $win)
|
||||
if [[ $winname =~ " - Mozilla Firefox$" ]]; then
|
||||
url=${winname% - Mozilla*}
|
||||
url=${url##* - }
|
||||
while (( ${#url//[^.]/} > 1 )); do
|
||||
url=${url#*.}
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
LAST_ENTRY_FILE=/tmp/_upm
|
||||
if [[ -n $resume && -f $LAST_ENTRY_FILE ]]; then
|
||||
entry="$(<$LAST_ENTRY_FILE)"
|
||||
else
|
||||
prefix=${PASSWORD_STORE_DIR-~/.password-store}
|
||||
password_files=( "$prefix"/**/*.gpg )
|
||||
password_files=( "${password_files[@]#"$prefix"/}" )
|
||||
password_files=( "${password_files[@]%.gpg}" )
|
||||
entry=$(printf "%s\n" "${password_files[@]}" | $ROFI_CMD -p "..." -filter "$url")
|
||||
fi
|
||||
|
||||
if [[ -z $entry ]]; then
|
||||
$MSG_CMD "Error!" "Failed to select $entry"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$entry" >/tmp/_upm
|
||||
secrets="$(pass show "$entry")"
|
||||
if [[ -n $secrets ]]; then
|
||||
fields=$(awk -F': ' 'NR>1 && !/^otpauth:/ {print $1}' <<<"$secrets")
|
||||
field=$(printf "password\n%s\notp\n" "${fields[@]}" | $ROFI_CMD -p "$entry")
|
||||
case $field in
|
||||
password) pass -c "$entry" ;;
|
||||
otp) printf "%s" "$(pass otp -c "$entry")" ;;
|
||||
*) printf "%s" "$(awk -v "key=$field:" '$1 == key {print $2}' <<<"$secrets")" | xclip -selection clipboard -in ;;
|
||||
esac
|
||||
$MSG_CMD "Success!" "Copied <b>$entry/$field</b> to clipboard for 45s"
|
||||
else
|
||||
$MSG_CMD "Error!" "Failed to retrieve $entry"
|
||||
exit 2
|
||||
fi
|
||||
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
rofi_command="rofi -theme theme/powermenu.rasi"
|
||||
|
||||
### Options ###
|
||||
power_off="\tShutdown"
|
||||
reboot="\tReboot"
|
||||
lock="\tLock"
|
||||
suspend="鈴\tSleep"
|
||||
log_out="\tLogout"
|
||||
# Variable passed to rofi
|
||||
options="$power_off\n$reboot\n$lock\n$suspend\n$log_out"
|
||||
|
||||
case "$(echo -e "$options" | $rofi_command -dmenu)" in
|
||||
" Shutdown")
|
||||
systemctl poweroff
|
||||
;;
|
||||
" Reboot")
|
||||
systemctl reboot
|
||||
;;
|
||||
" Lock")
|
||||
dm-tool lock
|
||||
;;
|
||||
"鈴 Sleep")
|
||||
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause
|
||||
systemctl suspend
|
||||
;;
|
||||
" Logout")
|
||||
bspc quit
|
||||
;;
|
||||
esac
|
||||
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
timer=5
|
||||
|
||||
# Options
|
||||
select="麗"
|
||||
window="类"
|
||||
screen=""
|
||||
delay=""
|
||||
cancel=""
|
||||
|
||||
# Variable passed to rofi
|
||||
options="$select\n$window\n$screen\n$delay\n$cancel"
|
||||
|
||||
rofi_command="rofi -theme theme/screenshotmenu.rasi"
|
||||
|
||||
setFilename() {
|
||||
directory="/tmp/"
|
||||
filename="IMG_$(date +%Y%m%d_%H%M%S).jpg"
|
||||
filepath=$directory$filename
|
||||
}
|
||||
|
||||
notify() {
|
||||
dunstify "Screenshot saved and copied to clipboard" -i accessories-screenshot
|
||||
}
|
||||
|
||||
chosen="$(echo -e "$options" | $rofi_command -dmenu)"
|
||||
case $chosen in
|
||||
$select)
|
||||
setFilename
|
||||
maim -Buosd 0.25 \
|
||||
| tee $filepath | xclip -selection c -t image/png
|
||||
notify
|
||||
;;
|
||||
$window)
|
||||
setFilename
|
||||
maim -Buod 0.25 -i $(xdotool getactivewindow) \
|
||||
| tee $filepath | xclip -selection c -t image/png
|
||||
notify
|
||||
;;
|
||||
$screen)
|
||||
setFilename
|
||||
maim -Buod 0.25 \
|
||||
| tee $filepath | xclip -selection c -t image/png
|
||||
notify
|
||||
;;
|
||||
$delay)
|
||||
setFilename
|
||||
maim -Buod $timer \
|
||||
| tee $filepath | xclip -selection c -t image/png
|
||||
notify
|
||||
;;
|
||||
esac
|
||||
Executable
+43
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# case $HOSTNAME in
|
||||
# kuro) export LAN=eno1 ;;
|
||||
# shiro) export LAN=wlp3s0 ;;
|
||||
# esac
|
||||
|
||||
export MONITOR=$(xrandr -q | grep primary | cut -d' ' -f1)
|
||||
export MONITORS=( $(xrandr -q | grep ' connected' | cut -d' ' -f1) )
|
||||
MONITOR=${MONITOR:-${MONITORS[0]}}
|
||||
|
||||
# Only have workspaces for primary monitor
|
||||
bspc monitor $MONITOR -d {1,2,3,4,5}
|
||||
|
||||
bspc config remove_disabled_monitors true
|
||||
bspc config remove_unplugged_monitors true
|
||||
|
||||
bspc config borderless_monocle true
|
||||
bspc config gapless_monocle true
|
||||
|
||||
bspc config border_width 1
|
||||
bspc config window_gap 4
|
||||
|
||||
bspc config normal_border_color "#181a23"
|
||||
bspc config active_border_color "#181a23"
|
||||
bspc config focused_border_color "#bd93f9"
|
||||
bspc config presel_feedback_color "#bd93f9"
|
||||
|
||||
# Extra padding for polybar
|
||||
bspc config -m primary top_padding 34
|
||||
bspc config -m primary bottom_padding 0
|
||||
|
||||
# Rules
|
||||
bspc rule -r '*'
|
||||
|
||||
bspc rule -a Pinentry state=floating center=on
|
||||
bspc rule -a Firefox state=fullscreen
|
||||
bspc rule -a feh state=fullscreen
|
||||
|
||||
# polybar
|
||||
for file in $XDG_CONFIG_HOME/bspwm/rc.d/*; do
|
||||
source "$file"
|
||||
done
|
||||
@@ -0,0 +1,152 @@
|
||||
{ pkgs, config, lib, ... }:
|
||||
let
|
||||
dracula-gtk = pkgs.fetchFromGitHub {
|
||||
owner = "dracula";
|
||||
repo = "gtk";
|
||||
rev = "502f212d83bc67e8f0499574546b99ec6c8e16f9";
|
||||
sha256 = "1wx9nzq7cqyvpaq4j60bs8g7gh4jk8qg4016yi4c331l4iw1ymsa";
|
||||
};
|
||||
in
|
||||
{
|
||||
home.pointerCursor = {
|
||||
x11.enable = true;
|
||||
x11.defaultCursor = "left_ptr";
|
||||
package = pkgs.capitaine-cursors;
|
||||
name = "capitaine-cursors";
|
||||
};
|
||||
# Install themes
|
||||
home.packages = with pkgs; [
|
||||
ayu-theme-gtk
|
||||
dracula-theme
|
||||
capitaine-cursors
|
||||
paper-icon-theme
|
||||
papirus-icon-theme
|
||||
libsForQt5.qtstyleplugin-kvantum
|
||||
qt5ct
|
||||
gtk-engine-murrine
|
||||
gtk_engines
|
||||
maim
|
||||
kitty
|
||||
libreoffice
|
||||
inotify-tools
|
||||
];
|
||||
|
||||
xresources.properties = {
|
||||
"*.foreground" = "#95E6CB";
|
||||
"*.background" = "#1F2430";
|
||||
"*.cursorColor" = "#BAE67E";
|
||||
# Black
|
||||
"*.color0" = "#1F2430";
|
||||
"*.color8" = "#F28779";
|
||||
# Red
|
||||
"*.color1" = "#A6CC70";
|
||||
"*.color9" = "#FFCC66";
|
||||
# Green
|
||||
"*.color2" = "#5CCFE6";
|
||||
"*.color10" = "#F29E74";
|
||||
# Yellow
|
||||
"*.color3" = "#77A8D9";
|
||||
"*.color11" = "#5C6773";
|
||||
# Blue
|
||||
"*.color4" = "#707A8C";
|
||||
"*.color12" = "#F27983";
|
||||
# Magenta
|
||||
"*.color5" = "#BAE67E";
|
||||
"*.color13" = "#FFD580";
|
||||
# Cyan
|
||||
"*.color6" = "#73D0FF";
|
||||
"*.color14" = "#FFA759";
|
||||
# White
|
||||
"*.color7" = "#95E6CB";
|
||||
"*.color15" = "#CBCCC6";
|
||||
# Bold, Italic, Underline
|
||||
"*.colorBD" = "#e6e1cf";
|
||||
};
|
||||
|
||||
# Move required config files around
|
||||
xdg.enable = true; # This doesn't seem to do anything so we have below
|
||||
xdg.configHome = "/home/anish/.config"; # TODO bad hardcode
|
||||
xdg.configFile = {
|
||||
"Kvantum/Dracula/Dracula.kvconfig".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig";
|
||||
"Kvantum/Dracula/Dracula.svg".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.svg";
|
||||
"Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula";
|
||||
};
|
||||
home.file = {
|
||||
".config/bspwm/rc.d/polybar".source = ./run.sh;
|
||||
".config/bspwm/bspwmrc".source = ./bspwmrc;
|
||||
".config/sxhkdrc".source = ./sxhkdrc;
|
||||
".config/rofi/theme" = {
|
||||
source = ./rofi;
|
||||
recursive = true;
|
||||
};
|
||||
".config/polybar" = {
|
||||
source = ./polybar;
|
||||
recursive = true;
|
||||
};
|
||||
".config/dunst/dunstrc".source = ./dunstrc;
|
||||
".config/kitty/kitty.conf".source = ./kitty.conf;
|
||||
".config/kitty/ayu.conf".source = ./ayu-kitty.conf;
|
||||
".config/zathura/zathurarc".source = ./zathurarc;
|
||||
".background-image".source = ./background.jpg;
|
||||
# gtk3 theme
|
||||
".config/gtk-3.0/settings.ini".text = ''
|
||||
[Settings]
|
||||
gtk-theme-name=Dracula
|
||||
gtk-icon-theme-name=Paper
|
||||
gtk-cursor-theme-name=Capitaine Cursors - White
|
||||
gtk-fallback-icon-theme=gnome
|
||||
gtk-application-prefer-dark-theme=true
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintfull
|
||||
gtk-xft-rgba=none
|
||||
'';
|
||||
# GTK2 global theme (widget and icon theme)
|
||||
".config/gtk-2.0/gtkrc".text = ''
|
||||
gtk-theme-name=Ayu-Mirage
|
||||
gtk-icon-theme-name=Capitaine Cursors - White
|
||||
gtk-font-name="Sans 10"
|
||||
'';
|
||||
# TODO hardcoded
|
||||
".local/bin/passmenu".source = ./bin/passmenu;
|
||||
".local/bin/powermenu".source = ./bin/powermenu;
|
||||
".local/bin/screenshot".source = ./bin/screenshot;
|
||||
".local/bin/mpv-ify".source = ./bin/mpv-ify;
|
||||
".config/eww/eww.yuck".source = ./eww/eww.yuck;
|
||||
".config/eww/eww.scss".source = ./eww/eww.scss;
|
||||
".config/eww/widgets.yuck".source = ./eww/widgets.yuck;
|
||||
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
|
||||
};
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme = "gtk";
|
||||
style = { name = "qt5ct-style"; };
|
||||
};
|
||||
|
||||
# Compositor
|
||||
# services.picom = {
|
||||
# enable = true;
|
||||
# fade = true;
|
||||
# fadeDelta = 1;
|
||||
# fadeSteps = [ "0.01" "0.022" ];
|
||||
# shadow = true;
|
||||
# shadowOffsets = [ (-10) (-10) ];
|
||||
# shadowOpacity = "0.22";
|
||||
# # activeOpacity = "1.00";
|
||||
# # inactiveOpacity = "0.92";
|
||||
# extraOptions = ''
|
||||
# shadow-radius = 12;
|
||||
# # blur-background = true;
|
||||
# # blur-background-frame = true;
|
||||
# # blur-background-fixed = true;
|
||||
# blur-kern = "7x7box";
|
||||
# blur-strength = 320;
|
||||
# corner-radius = 3
|
||||
# '';
|
||||
# };
|
||||
|
||||
programs.autorandr.enable = true;
|
||||
services.udiskie.automount = true;
|
||||
|
||||
services.mpris-proxy.enable = true; # bluetooth media control
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
[global]
|
||||
alignment = left
|
||||
bounce_freq = 0
|
||||
browser = firefox -new-tab
|
||||
corner_radius = 2
|
||||
dmenu = rofi -dmenu -p dunst:
|
||||
follow = none
|
||||
font = Fira Sans 11
|
||||
format = "<b>%s</b>\n%b"
|
||||
frame_color = "#1a1c25"
|
||||
frame_width = 1
|
||||
# geometry [{width}]x{height}][+/-{x}+/-{y}]
|
||||
geometry = "440x15-26+26"
|
||||
history_length = 20
|
||||
horizontal_padding = 16
|
||||
icon_position = right
|
||||
idle_threshold = 120
|
||||
ignore_newline = no
|
||||
indicate_hidden = yes
|
||||
line_height = 0
|
||||
markup = full
|
||||
max_icon_size = 64
|
||||
monitor = 0
|
||||
padding = 20
|
||||
separator_color = auto
|
||||
separator_height = 4
|
||||
show_age_threshold = 60
|
||||
show_indicators = yes
|
||||
shrink = no
|
||||
sort = yes
|
||||
startup_notification = false
|
||||
sticky_history = yes
|
||||
transparency = 5
|
||||
word_wrap = yes
|
||||
|
||||
[urgency_low]
|
||||
background = "#1E2029"
|
||||
foreground = "#bbc2cf"
|
||||
timeout = 8
|
||||
|
||||
[urgency_normal]
|
||||
background = "#2a2d39"
|
||||
foreground = "#bbc2cf"
|
||||
timeout = 14
|
||||
|
||||
[urgency_critical]
|
||||
background = "#cc6666"
|
||||
foreground = "#1E2029"
|
||||
timeout = 0
|
||||
@@ -0,0 +1,50 @@
|
||||
* {
|
||||
all: unset;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
/* Calendar */
|
||||
|
||||
.cal-box {
|
||||
background-color: #181825;
|
||||
border-radius: 8px;
|
||||
font-family: JetBrainsMono Nerd Font;
|
||||
font-size: 1.2em;
|
||||
|
||||
.cal-inner-box {
|
||||
padding: 1rem 1rem .3rem 1rem;
|
||||
|
||||
.cal {
|
||||
&.highlight {
|
||||
padding: 10rem;
|
||||
}
|
||||
|
||||
padding: .8rem .25rem 0rem;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
calendar:selected {
|
||||
color: #9ece6a;
|
||||
}
|
||||
|
||||
calendar.header {
|
||||
color: #ad8ee6;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
calendar.button {
|
||||
color: #449dab;
|
||||
}
|
||||
|
||||
calendar.highlight {
|
||||
color: #7aa2f7;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
calendar:indeterminate {
|
||||
color: #8C8C8C;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
; includes:
|
||||
;widgets
|
||||
(include "widgets.yuck")
|
||||
|
||||
;; Calendar Windows ;;
|
||||
|
||||
(defwindow calendar
|
||||
:geometry (geometry :x "-19px"
|
||||
:y "50px"
|
||||
:width "270px"
|
||||
:height "60px"
|
||||
:anchor "top right")
|
||||
(cal))
|
||||
@@ -0,0 +1,20 @@
|
||||
; widgets
|
||||
|
||||
(defpoll time0 :interval "10s" "date '+%H':%M")
|
||||
(defpoll date :interval "10s" "date '+%b %d'")
|
||||
|
||||
;; Calendar Widgets ;;
|
||||
(defwidget cal []
|
||||
(box :class "cal-box"
|
||||
:orientation "v"
|
||||
(box :class "cal-inner-box"
|
||||
(calendar :class "cal"
|
||||
:day calendar_day
|
||||
:month calendar_month
|
||||
:year calendar_year))))
|
||||
(defpoll calendar_day :interval "10h"
|
||||
"date '+%d'")
|
||||
(defpoll calendar_month :interval "10h"
|
||||
"calendar")
|
||||
(defpoll calendar_year :interval "10h"
|
||||
"date '+%Y'")
|
||||
@@ -0,0 +1,8 @@
|
||||
include ayu.conf
|
||||
font_family Hermit
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
open_url_with default
|
||||
mouse_map left click ungrabbed mouse_click_url_or_select
|
||||
confirm_os_window_close 0
|
||||
@@ -0,0 +1,385 @@
|
||||
[colors]
|
||||
black = ${xrdb:color0}
|
||||
bblack = ${xrdb:color8}
|
||||
red = ${xrdb:color1}
|
||||
bred = ${xrdb:color9}
|
||||
green = ${xrdb:color2}
|
||||
bgreen = ${xrdb:color10}
|
||||
yellow = ${xrdb:color3}
|
||||
byellow = ${xrdb:color11}
|
||||
blue = ${xrdb:color4}
|
||||
bblue = ${xrdb:color12}
|
||||
magenta = ${xrdb:color5}
|
||||
bmagenta = ${xrdb:color13}
|
||||
cyan = ${xrdb:color6}
|
||||
bcyan = ${xrdb:color14}
|
||||
white = ${xrdb:color7}
|
||||
bwhite = ${xrdb:color15}
|
||||
|
||||
bg = ${xrdb:background}
|
||||
fg = ${colors.magenta}
|
||||
bg-alt = #1E2029
|
||||
fg-alt = #373844
|
||||
bg-dark = #181a23
|
||||
|
||||
alert = ${colors.yellow}
|
||||
accent = #604c7e
|
||||
|
||||
|
||||
[global/wm]
|
||||
margin-top = 0
|
||||
margin-bottom = 34
|
||||
|
||||
[bar/main]
|
||||
monitor = ${env:MONITOR}
|
||||
monitor-strict = true
|
||||
enable-ipc = true
|
||||
wm-restack = bspwm
|
||||
# REQUIRED to move the window with hideit.sh
|
||||
override-redirect = true
|
||||
fixed-center = true
|
||||
|
||||
background = ${colors.bg}
|
||||
foreground = ${colors.fg}
|
||||
|
||||
width = 100%
|
||||
height = 34
|
||||
offset-x = 0
|
||||
offset-y = 0
|
||||
# bottom = true
|
||||
|
||||
overline-size = 0
|
||||
overline-color = #f00
|
||||
underline-size = 0
|
||||
underline-color = #00f
|
||||
|
||||
border-bottom-size = 0
|
||||
border-top-size = 1
|
||||
border-color = ${colors.bg-dark}
|
||||
|
||||
padding-left = 2
|
||||
padding-right = 2
|
||||
module-margin-left = 0
|
||||
module-margin-right = 0
|
||||
|
||||
font-0 = "Fira Code:pixelsize=9;2"
|
||||
font-1 = "Wuncon Siji:pixelsize=12;2"
|
||||
font-2 = "Siji:pixelsize=10;2"
|
||||
|
||||
; modules-left = volume pad cpu memory pad pkg mail
|
||||
modules-left = pulseaudio pad cpu memory pad fs
|
||||
modules-center = bspwm
|
||||
modules-right = syncthing redshift wlan pad network-up pad network-down pad battery pad date
|
||||
|
||||
;tray-position = center
|
||||
;tray-padding = 2
|
||||
;tray-transparent = true
|
||||
;tray-background = #0063ff
|
||||
|
||||
[module/bspwm]
|
||||
type = internal/bspwm
|
||||
pin-workspaces = true
|
||||
enable-click = true
|
||||
|
||||
# ws-icon-0 = 1;
|
||||
# ws-icon-1 = 2;
|
||||
# ws-icon-2 = 3;
|
||||
# ws-icon-3 = 4;
|
||||
# ws-icon-4 = 5;
|
||||
# ws-icon-5 = 6;
|
||||
ws-icon-default =
|
||||
|
||||
format = <label-state> <label-mode>
|
||||
label-padding = 1
|
||||
|
||||
label-focused = %icon%
|
||||
label-focused-background = ${colors.bg-dark}
|
||||
label-focused-foreground = ${colors.fg}
|
||||
# label-focused-underline = ${colors.magenta}
|
||||
; label-focused-foreground = ${xrdb:color2}
|
||||
label-focused-padding = 1
|
||||
|
||||
label-occupied = %icon%
|
||||
label-occupied-foreground = ${colors.accent}
|
||||
label-occupied-padding = 1
|
||||
|
||||
; label-urgent = %icon%
|
||||
label-urgent-foreground = ${colors.alert}
|
||||
; label-urgent-background = ${colors.alert}
|
||||
label-urgent-padding = 1
|
||||
|
||||
label-empty = %icon%
|
||||
label-empty-foreground = ${colors.fg-alt}
|
||||
label-empty-padding = 1
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 5
|
||||
|
||||
label = %date% %time%
|
||||
date = %A, %h %d
|
||||
date-alt = %Y-%m-%d
|
||||
time = %I:%M %p
|
||||
time-alt = %H:%M:%S
|
||||
format-prefix = ""
|
||||
format-prefix-padding = 1
|
||||
; format-prefix-background = ${colors.bg-alt}
|
||||
format-prefix-foreground = ${colors.accent}
|
||||
; format-underline = ${xrdb:color4}
|
||||
|
||||
[module/fs]
|
||||
type = internal/fs
|
||||
mount-0 = /
|
||||
mount-1 = /mnt/projects ; for desktops
|
||||
mount-2 = /home ; for laptop
|
||||
interval = 30
|
||||
|
||||
; Available tags:
|
||||
; <label-mounted> (default)
|
||||
; <bar-free>
|
||||
; <bar-used>
|
||||
; <ramp-capacity>
|
||||
format-mounted = "<bar-used>"
|
||||
format-mounted-foreground = ${colors.accent}
|
||||
; Available tokens:
|
||||
; %mountpoint%
|
||||
; %type%
|
||||
; %fsname%
|
||||
; %percentage_free%
|
||||
; %percentage_used%
|
||||
; %total%
|
||||
; %free%
|
||||
; %used%
|
||||
; Default: %mountpoint% %percentage_free%%
|
||||
|
||||
; Available tags:
|
||||
; <label-unmounted> (default)
|
||||
format-unmounted =
|
||||
label-unmounted =
|
||||
label-unmounted-foreground = ${colors.fg-alt}
|
||||
|
||||
bar-used-indicator =
|
||||
bar-used-width = 8
|
||||
bar-used-foreground-0 = ${colors.fg}
|
||||
bar-used-foreground-1 = ${colors.fg}
|
||||
bar-used-foreground-2 = ${colors.yellow}
|
||||
bar-used-foreground-3 = ${colors.alert}
|
||||
bar-used-foreground-4 = ${colors.alert}
|
||||
bar-used-fill = |
|
||||
bar-used-empty = ¦
|
||||
bar-used-empty-foreground = ${colors.fg-alt}
|
||||
|
||||
[module/xwindow]
|
||||
type = internal/xwindow
|
||||
label = %title:0:80:...%
|
||||
label-padding-left = 2
|
||||
|
||||
; [module/mpd]
|
||||
; type = internal/mpd
|
||||
; host = /home/hlissner/.config/mpd/mpd.sock
|
||||
;
|
||||
; format-online = <label-song> <toggle>
|
||||
; format-padding = 5
|
||||
;
|
||||
; label-song-maxlen = 45
|
||||
; label-song-ellipsis = true
|
||||
;
|
||||
; icon-prev =
|
||||
; icon-seekb =
|
||||
; icon-stop =
|
||||
; icon-play =
|
||||
; icon-pause =
|
||||
; icon-next =
|
||||
; icon-seekf =
|
||||
;
|
||||
; icon-random =
|
||||
; icon-repeat =
|
||||
;
|
||||
; toggle-on-foreground = ${colors.fg}
|
||||
; toggle-off-foreground = #66
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
interval = 2
|
||||
format = <bar-load>
|
||||
format-prefix = ""
|
||||
format-foreground = ${colors.accent}
|
||||
; format-underline = #f90000
|
||||
; label = %percentage%%
|
||||
format-padding = 1
|
||||
|
||||
bar-load-indicator =
|
||||
bar-load-width = 8
|
||||
bar-load-foreground-0 = ${colors.fg}
|
||||
bar-load-foreground-1 = ${colors.fg}
|
||||
bar-load-foreground-2 = ${colors.yellow}
|
||||
bar-load-foreground-3 = ${colors.alert}
|
||||
bar-load-foreground-4 = ${colors.alert}
|
||||
bar-load-fill = |
|
||||
bar-load-empty = ¦
|
||||
bar-load-empty-foreground = ${colors.fg-alt}
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
interval = 3
|
||||
format = <bar-used>
|
||||
format-prefix = ""
|
||||
format-prefix-foreground = ${colors.accent}
|
||||
; format-underline = #4bffdc
|
||||
; label = %percentage_used%%
|
||||
format-padding-left = 1
|
||||
|
||||
; Only applies if <bar-used> is used
|
||||
bar-used-indicator =
|
||||
bar-used-width = 8
|
||||
bar-used-foreground-0 = ${colors.fg}
|
||||
bar-used-foreground-1 = ${colors.fg}
|
||||
bar-used-foreground-2 = ${colors.yellow}
|
||||
bar-used-foreground-3 = ${colors.alert}
|
||||
bar-used-foreground-4 = ${colors.alert}
|
||||
bar-used-fill = |
|
||||
bar-used-empty = ¦
|
||||
bar-used-empty-foreground = ${colors.fg-alt}
|
||||
|
||||
[module/wlan]
|
||||
type = internal/network
|
||||
interface = ${env:WLP:wlp3s0}
|
||||
interval = 3.0
|
||||
|
||||
format-connected = <ramp-signal>
|
||||
format-disconnected =
|
||||
format-disconnected-foreground =
|
||||
|
||||
; label-connected =
|
||||
; label-disconnected = !
|
||||
; label-disconnected-foreground = ${colors.red}
|
||||
|
||||
ramp-signal-0 =
|
||||
ramp-signal-0-foreground = ${colors.yellow}
|
||||
ramp-signal-1 =
|
||||
ramp-signal-1-foreground = ${colors.yellow}
|
||||
ramp-signal-2 =
|
||||
ramp-signal-2-foreground = ${colors.yellow}
|
||||
ramp-signal-3 =
|
||||
ramp-signal-3-foreground = ${colors.accent}
|
||||
ramp-signal-4 =
|
||||
ramp-signal-4-foreground = ${colors.fg}
|
||||
|
||||
[module/network-up]
|
||||
type = internal/network
|
||||
interface = ${env:LAN:eno1}
|
||||
interval = 4.0
|
||||
label-connected = "%upspeed%"
|
||||
format-connected-prefix = " "
|
||||
format-connected-prefix-foreground = ${colors.accent}
|
||||
format-connected-foreground = ${colors.fg}
|
||||
format-connected-background =
|
||||
format-connected-underline =
|
||||
format-disconnected-prefix = " "
|
||||
format-disconnected-prefix-foreground = ${colors.alert}
|
||||
format-disconnected-foreground = ${colors.alert}
|
||||
|
||||
[module/network-down]
|
||||
type = internal/network
|
||||
interface = ${env:LAN:eno1}
|
||||
interval = 4.0
|
||||
label-connected = "%downspeed%"
|
||||
format-connected-prefix = " "
|
||||
format-connected-prefix-foreground = ${colors.accent}
|
||||
format-connected-foreground = ${colors.fg}
|
||||
format-connected-background =
|
||||
format-connected-underline =
|
||||
format-disconnected-prefix = " "
|
||||
format-disconnected-prefix-foreground = ${colors.alert}
|
||||
format-disconnected-foreground = ${colors.alert}
|
||||
|
||||
[module/pulseaudio]
|
||||
type = internal/pulseaudio
|
||||
|
||||
; format-volume = <label-volume> <bar-volume>
|
||||
format-volume = <ramp-volume> <bar-volume>
|
||||
; label-volume = " "
|
||||
label-volume-foreground = ${colors.accent}
|
||||
|
||||
; format-muted-prefix = " "
|
||||
format-muted-foreground = ${colors.alert}
|
||||
label-muted =
|
||||
|
||||
bar-volume-width = 8
|
||||
# bar-volume-foreground-0 = ${colors.magenta}
|
||||
# bar-volume-foreground-1 = ${colors.magenta}
|
||||
# bar-volume-foreground-2 = ${colors.magenta}
|
||||
# bar-volume-foreground-3 = ${colors.magenta}
|
||||
# bar-volume-foreground-4 = ${colors.magenta}
|
||||
# bar-volume-foreground-5 = ${colors.magenta}
|
||||
# bar-volume-foreground-6 = ${colors.magenta}
|
||||
bar-volume-gradient = false
|
||||
bar-volume-indicator = |
|
||||
bar-volume-indicator-font = 1
|
||||
bar-volume-indicator-foreground = #ff
|
||||
bar-volume-fill = ─
|
||||
bar-volume-fill-font = 1
|
||||
bar-volume-empty = ─
|
||||
bar-volume-empty-font = 1
|
||||
bar-volume-empty-foreground = ${colors.fg-alt}
|
||||
|
||||
; Only applies if <ramp-volume> is used
|
||||
ramp-volume-0 =
|
||||
ramp-volume-1 =
|
||||
ramp-volume-2 =
|
||||
|
||||
[module/battery]
|
||||
type = internal/battery
|
||||
battery = BAT2
|
||||
adapter = ADP1
|
||||
full-at = 98
|
||||
|
||||
format-charging = <animation-charging> <label-charging>
|
||||
format-charging-underline = #ffb52a
|
||||
|
||||
format-discharging = <ramp-capacity> <label-discharging>
|
||||
format-discharging-underline = ${self.format-charging-underline}
|
||||
|
||||
format-full-prefix = " "
|
||||
format-full-prefix-foreground = ${colors.fg-alt}
|
||||
format-full-underline = ${self.format-charging-underline}
|
||||
|
||||
ramp-capacity-0 =
|
||||
ramp-capacity-1 =
|
||||
ramp-capacity-2 =
|
||||
ramp-capacity-0-foreground = ${colors.red}
|
||||
ramp-capacity-1-foreground = #575864
|
||||
ramp-capacity-2-foreground = ${colors.fg-alt}
|
||||
|
||||
animation-charging-0 =
|
||||
animation-charging-1 =
|
||||
animation-charging-2 =
|
||||
animation-charging-framerate = 1000
|
||||
animation-charging-foreground = ${colors.fg}
|
||||
|
||||
|
||||
;=====================================================
|
||||
; Custom scripts
|
||||
;=====================================================
|
||||
|
||||
[module/pad]
|
||||
type = custom/text
|
||||
content = " "
|
||||
content-foreground = ${colors.fg-alt}
|
||||
|
||||
[module/redshift]
|
||||
type = custom/script
|
||||
exec = ~/.config/polybar/modules/redshift
|
||||
exec-if = pgrep -x redshift
|
||||
interval = 60
|
||||
format-padding = 1
|
||||
|
||||
[module/syncthing]
|
||||
type = custom/script
|
||||
exec = echo 1
|
||||
exec-if = systemctl is-active syncthing
|
||||
format = ""
|
||||
format-foreground = ${colors.fg}
|
||||
interval = 30
|
||||
|
||||
; vim:ft=dosini
|
||||
@@ -0,0 +1,411 @@
|
||||
[colors]
|
||||
|
||||
yellow = #ffd580
|
||||
orange = #fe8019
|
||||
blue = #73d0ff
|
||||
green = #bae67e
|
||||
red = #ff3333
|
||||
bg = #1f2430
|
||||
fg = #bfbab0
|
||||
icons = #bae67e
|
||||
cyan = #95e6cb
|
||||
text = ${xrdb:color2}
|
||||
unfocus = ${xrdb:color1}
|
||||
accent = #604c7e
|
||||
sky = #73d0ff
|
||||
mauve = #bae67e
|
||||
alert = ${colors.yellow}
|
||||
|
||||
bg-alt = #1E2029
|
||||
fg-alt = #373844
|
||||
bg-dark = #181a23
|
||||
|
||||
[bar/mybar]
|
||||
; monitor = VGA-1
|
||||
|
||||
override-redirect = false
|
||||
|
||||
; Put the bar at the bottom of the screen
|
||||
bottom = false
|
||||
|
||||
; Prefer fixed center position for the `modules-center` block
|
||||
fixed-center = true
|
||||
|
||||
width = 100%
|
||||
height = 34
|
||||
|
||||
offset-x =
|
||||
offset-y =
|
||||
|
||||
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
||||
background = ${colors.bg}
|
||||
|
||||
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
||||
foreground = ${colors.fg}
|
||||
|
||||
line-size = 0
|
||||
line-color = #fff
|
||||
|
||||
; Number of spaces to add at the beginning/end of the bar
|
||||
; Individual side values can be defined using:
|
||||
; padding-{left,right}
|
||||
padding-right = 1
|
||||
padding-left = 0
|
||||
|
||||
; Number of spaces to add before/after each module
|
||||
; Individual side values can be defined using:
|
||||
; module-margin-{left,right}
|
||||
module-margin = 0
|
||||
margin-bottom = 34
|
||||
|
||||
font-0 = "Iosevka Term:pixelsize=13;4"
|
||||
font-1 = "Iosevka Term:pixelsize=6;1"
|
||||
font-2 = "Fira Code:pixelsize=13;2"
|
||||
font-3 = "Siji:pixelsize=8;2"
|
||||
|
||||
; Add module mpd for artist - title info
|
||||
modules-left = bspwm sps volume
|
||||
modules-center = title
|
||||
modules-right = wireless-network sps battery sps memory sps cpu sps date
|
||||
|
||||
; The separator will be inserted between the output of each module
|
||||
separator =
|
||||
|
||||
; This value is used to add extra spacing between elements
|
||||
; @deprecated: This parameter will be removed in an upcoming version
|
||||
spacing = 0
|
||||
|
||||
; Opacity value between 0.0 and 1.0 used on fade in/out
|
||||
dim-value = 1.0
|
||||
|
||||
wm-name = bspwm
|
||||
|
||||
tray-position = right
|
||||
|
||||
; If true, the bar will not shift its
|
||||
; contents when the tray changes
|
||||
tray-detached = false
|
||||
|
||||
; Tray icon max size
|
||||
tray-maxsize = 16
|
||||
|
||||
tray-background = ${colors.bg}
|
||||
;offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
|
||||
|
||||
tray-offset-x = 0
|
||||
tray-offset-y = 0
|
||||
|
||||
; Pad the sides of each tray icon
|
||||
tray-padding = 0
|
||||
|
||||
; Scale factor for tray clients
|
||||
tray-scale = 1.0
|
||||
|
||||
wm-restack = bspwm
|
||||
|
||||
dpi-x = 133
|
||||
dpi-y = 133
|
||||
|
||||
enable-ipc = false
|
||||
|
||||
; Fallback click handlers that will be called if
|
||||
; there's no matching module handler found.
|
||||
|
||||
[module/bspwm]
|
||||
type = internal/bspwm
|
||||
pin-workspaces = true
|
||||
enable-click = true
|
||||
|
||||
ws-icon-0 = 1;%{T1}%{T-}
|
||||
ws-icon-1 = 2;%{T1}%{T-}
|
||||
ws-icon-2 = 3;%{T1}%{T-}
|
||||
ws-icon-3 = 4;%{T1}%{T-}
|
||||
ws-icon-4 = 5;%{T1}%{T-}
|
||||
ws-icon-default =
|
||||
; fuzzy-match = true
|
||||
|
||||
format = <label-state> <label-mode>
|
||||
label-padding = 1
|
||||
label-foreground = ${colors.green}
|
||||
|
||||
label-focused = %icon%
|
||||
label-focused-background = ${colors.yellow}
|
||||
label-focused-foreground = ${colors.bg}
|
||||
# label-focused-underline = ${colors.magenta}
|
||||
; label-focused-foreground = ${xrdb:color2}
|
||||
label-focused-padding = 1
|
||||
|
||||
label-occupied = %icon%
|
||||
label-occupied-foreground = ${colors.accent}
|
||||
label-occupied-padding = 1
|
||||
|
||||
label-urgent = %icon%
|
||||
label-urgent-foreground = ${colors.alert}
|
||||
; label-urgent-background = ${colors.alert}
|
||||
label-urgent-padding = 1
|
||||
; label-urgent-font = 3
|
||||
|
||||
label-empty = %icon%
|
||||
label-empty-foreground = ${colors.fg-alt}
|
||||
label-empty-padding = 1
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
|
||||
; Seconds to sleep between updates
|
||||
interval = 1.0
|
||||
|
||||
; See "http://en.cppreference.com/w/cpp/io/manip/put_time" for details on how to format the date string
|
||||
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
||||
date = %{T1}%{T-}%{T2} %d/%a%{T-}
|
||||
|
||||
; Optional time format
|
||||
time = %{T2} %H:%M%{T-}
|
||||
|
||||
; if `date-alt` or `time-alt` is defined, clicking
|
||||
; the module will toggle between formats
|
||||
date-alt = %{T1}%{T-}%{T2} %a, %d %b %y%{T-}
|
||||
time-alt = %{T2} %H:%M:%S%{T-}
|
||||
|
||||
label = %date%%time%
|
||||
label-font = 0
|
||||
label-foreground = ${colors.green}
|
||||
|
||||
[module/wireless-network]
|
||||
type = internal/network
|
||||
interface = wlp3s0
|
||||
|
||||
label-connected = %essid%
|
||||
label-connected-font = 2
|
||||
format-connected = <ramp-signal><label-connected>
|
||||
label-connected-foreground = #82b414
|
||||
|
||||
format-disconnected = <label-disconnected>
|
||||
label-disconnected = "睊"
|
||||
label-disconnected-foreground = #f92672
|
||||
|
||||
ramp-signal-foreground = #82b414
|
||||
ramp-signal-0 = " "
|
||||
ramp-signal-1 = " "
|
||||
ramp-signal-2 = " "
|
||||
ramp-signal-3 = " "
|
||||
ramp-signal-4 = " "
|
||||
ramp-signal-5 = " "
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
|
||||
; Seconds to sleep between updates
|
||||
; Default: 1
|
||||
interval = 0.5
|
||||
|
||||
label = %{T1}%{T-}%{T2} %percentage:2%%%{T-}
|
||||
|
||||
label-foreground = ${colors.cyan}
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
|
||||
; Seconds to sleep between updates
|
||||
; Default: 1
|
||||
interval = 0.5
|
||||
format = <label>
|
||||
|
||||
; Available tokens:
|
||||
; %percentage_used% (default)
|
||||
; %percentage_free%
|
||||
; %gb_used%
|
||||
; %gb_free%
|
||||
; %gb_total%
|
||||
; %mb_used%
|
||||
; %mb_free%
|
||||
; %mb_total%
|
||||
; %percentage_swap_used%
|
||||
; %percentage_swap_free%
|
||||
; %mb_swap_total%
|
||||
; %mb_swap_free%
|
||||
; %mb_swap_used%
|
||||
; %gb_swap_total%
|
||||
; %gb_swap_free%
|
||||
; %gb_swap_used%
|
||||
|
||||
label = %{T1}%{T-}%{T2} %gb_used%%{T-}
|
||||
|
||||
label-foreground = ${colors.cyan}
|
||||
|
||||
[module/mpd]
|
||||
type = internal/mpd
|
||||
|
||||
host = 0.0.0.0
|
||||
port = 6600
|
||||
|
||||
interval = 2
|
||||
|
||||
format-online = <label-song>
|
||||
format-online-background = ${colors.bg}
|
||||
format-online-foreground = ${colors.yellow}
|
||||
#format-online-padding = 20
|
||||
|
||||
label-song = %{T2}%artist% - %title%%{T-}
|
||||
label-song-maxlen = 55
|
||||
label-song-ellipsis = true
|
||||
|
||||
label-offline = "MPD is offline"
|
||||
|
||||
[module/mpd_i]
|
||||
type = internal/mpd
|
||||
|
||||
interval = 2
|
||||
|
||||
format-online = <icon-prev> <toggle> <icon-next>
|
||||
format-online-background = ${colors.bg}
|
||||
format-online-foreground = ${colors.yellow}
|
||||
#format-online-padding = 2
|
||||
|
||||
label-offline = "MPD is offline"
|
||||
|
||||
; Only applies if <icon-X> is used
|
||||
icon-play = %{T1}奈%{T-}
|
||||
icon-pause = %{T1}%{T-}
|
||||
icon-stop = %{T1}%{T-}
|
||||
icon-prev = %{T1}ﭣ%{T-}
|
||||
icon-next = %{T1}ﭡ%{T-}
|
||||
|
||||
;An empty module used to add 1 unit spacings whenever needed
|
||||
[module/sps]
|
||||
type = custom/text
|
||||
content = " "
|
||||
content-padding = 0
|
||||
|
||||
[module/network]
|
||||
type = internal/network
|
||||
interface = wlp3s0
|
||||
;enp0s29u1u2
|
||||
interval = 1.0
|
||||
label-connected = "%{T1}龍%{T-}%{T2} %downspeed% | %upspeed%%{T-}"
|
||||
label-disconnected = "%{T2}0/0%{T-}"
|
||||
label-connected-background = ${colors.bg}
|
||||
label-connected-foreground = ${colors.blue}
|
||||
label-disconnected-foreground = ${colors.red}
|
||||
|
||||
[module/title]
|
||||
type = internal/xwindow
|
||||
; Available tags:
|
||||
; <label> (default)
|
||||
format = <label>
|
||||
format-background = ${colors.bg}
|
||||
format-foreground = ${colors.green}
|
||||
format-padding = 4
|
||||
|
||||
; Available tokens:
|
||||
; %title%
|
||||
; Default: %title%
|
||||
label = "%{T1}类%{T-}%{T2} %title%%{T-}"
|
||||
label-maxlen = 65
|
||||
|
||||
; Used instead of label when there is no window title
|
||||
; Available tokens:
|
||||
; None
|
||||
label-empty =%{T2}Empty%{T-}
|
||||
label-empty-foreground = #707880
|
||||
|
||||
[module/volume]
|
||||
type = internal/pulseaudio
|
||||
|
||||
use-ui-max = false
|
||||
|
||||
interval = 5
|
||||
|
||||
format-volume = <ramp-volume><bar-volume>
|
||||
|
||||
format-muted = <label-muted>
|
||||
format-muted-prefix = " "
|
||||
format-muted-prefix-font = 2
|
||||
format-muted-prefix-foreground = ${colors.mauve}
|
||||
|
||||
label-volume = "%percentage%% "
|
||||
label-muted = "Mute"
|
||||
|
||||
label-volume-foreground = ${colors.mauve}
|
||||
label-muted-foreground = ${colors.mauve}
|
||||
|
||||
bar-volume-width = 8
|
||||
bar-volume-gradient = false
|
||||
bar-volume-indicator = |
|
||||
bar-volume-indicator-font = 2
|
||||
bar-volume-indicator-foreground = ${colors.mauve}
|
||||
bar-volume-fill = ─
|
||||
bar-volume-fill-font = 2
|
||||
bar-volume-fill-foreground = ${colors.mauve}
|
||||
bar-volume-empty = ─
|
||||
bar-volume-empty-font = 2
|
||||
bar-volume-empty-foreground = ${colors.fg-alt}
|
||||
|
||||
ramp-volume-0 = " "
|
||||
ramp-volume-1 = " "
|
||||
ramp-volume-2 = " "
|
||||
ramp-volume-3 = " "
|
||||
ramp-volume-4 = " "
|
||||
ramp-volume-5 = " "
|
||||
ramp-volume-6 = " "
|
||||
ramp-volume-7 = " "
|
||||
ramp-volume-8 = " "
|
||||
ramp-volume-9 = " "
|
||||
ramp-volume-font = 1
|
||||
ramp-volume-foreground = ${colors.mauve}
|
||||
|
||||
ramp-headphones-0 =
|
||||
ramp-headphones-1 =
|
||||
|
||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
||||
|
||||
[module/battery]
|
||||
type = internal/battery
|
||||
|
||||
full-at = 99
|
||||
|
||||
adapter = ACAD
|
||||
battery = BAT0
|
||||
|
||||
poll-interval = 2
|
||||
time-format = %H:%M
|
||||
|
||||
format-charging = <animation-charging><label-charging>
|
||||
format-charging-prefix =
|
||||
|
||||
format-discharging = <ramp-capacity><label-discharging>
|
||||
|
||||
format-full = <label-full>
|
||||
format-full-prefix = " "
|
||||
format-full-prefix-font = 1
|
||||
format-full-prefix-foreground = ${colors.sky}
|
||||
|
||||
label-charging = "%percentage%% "
|
||||
label-discharging = "%percentage%% "
|
||||
label-full = "%percentage%% "
|
||||
|
||||
label-charging-foreground = ${colors.sky}
|
||||
label-discharging-foreground = ${colors.sky}
|
||||
label-charging-font = 2
|
||||
label-discharging-font = 2
|
||||
label-full-foreground = ${colors.sky}
|
||||
label-full-font = 2
|
||||
|
||||
ramp-capacity-0 = " "
|
||||
ramp-capacity-1 = " "
|
||||
ramp-capacity-2 = " "
|
||||
ramp-capacity-3 = " "
|
||||
ramp-capacity-4 = " "
|
||||
ramp-capacity-font = 1
|
||||
ramp-capacity-foreground = ${colors.sky}
|
||||
|
||||
animation-charging-0 = " "
|
||||
animation-charging-1 = " "
|
||||
animation-charging-2 = " "
|
||||
animation-charging-3 = " "
|
||||
animation-charging-4 = " "
|
||||
animation-charging-font = 1
|
||||
animation-charging-foreground = ${colors.sky}
|
||||
animation-charging-framerate = 750
|
||||
|
||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
||||
@@ -0,0 +1,387 @@
|
||||
[colors]
|
||||
black = ${xrdb:color0}
|
||||
bblack = ${xrdb:color8}
|
||||
red = ${xrdb:color1}
|
||||
bred = ${xrdb:color9}
|
||||
green = ${xrdb:color2}
|
||||
bgreen = ${xrdb:color10}
|
||||
yellow = ${xrdb:color3}
|
||||
byellow = ${xrdb:color11}
|
||||
blue = ${xrdb:color4}
|
||||
bblue = ${xrdb:color12}
|
||||
magenta = ${xrdb:color5}
|
||||
bmagenta = ${xrdb:color13}
|
||||
cyan = ${xrdb:color6}
|
||||
bcyan = ${xrdb:color14}
|
||||
white = ${xrdb:color7}
|
||||
bwhite = ${xrdb:color15}
|
||||
|
||||
bg = ${xrdb:background}
|
||||
fg = ${colors.magenta}
|
||||
bg-alt = #1E2029
|
||||
fg-alt = #373844
|
||||
bg-dark = #181a23
|
||||
|
||||
alert = ${colors.yellow}
|
||||
accent = #604c7e
|
||||
|
||||
|
||||
[global/wm]
|
||||
margin-top = 0
|
||||
margin-bottom = 34
|
||||
|
||||
[bar/main]
|
||||
monitor = ${env:MONITOR}
|
||||
monitor-strict = true
|
||||
enable-ipc = true
|
||||
wm-restack = bspwm
|
||||
# REQUIRED to move the window with hideit.sh
|
||||
override-redirect = true
|
||||
fixed-center = true
|
||||
|
||||
background = ${colors.bg}
|
||||
foreground = ${colors.fg}
|
||||
|
||||
width = 100%
|
||||
height = 34
|
||||
offset-x = 0
|
||||
offset-y = 0
|
||||
# bottom = true
|
||||
|
||||
overline-size = 0
|
||||
overline-color = #f00
|
||||
underline-size = 0
|
||||
underline-color = #00f
|
||||
|
||||
border-bottom-size = 0
|
||||
border-top-size = 1
|
||||
border-color = ${colors.bg-dark}
|
||||
|
||||
padding-left = 2
|
||||
padding-right = 2
|
||||
module-margin-left = 0
|
||||
module-margin-right = 0
|
||||
|
||||
font-0 = "Fira Code:pixelsize=13;2"
|
||||
font-1 = "Wuncon Siji:pixelsize=16;2"
|
||||
font-2 = "Siji:pixelsize=10;2"
|
||||
|
||||
; modules-left = volume pad cpu memory pad pkg mail
|
||||
modules-left = pulseaudio pad cpu memory pad fs
|
||||
modules-center = bspwm
|
||||
modules-right = syncthing redshift wlan pad network-up pad network-down pad battery pad date
|
||||
|
||||
;tray-position = center
|
||||
;tray-padding = 2
|
||||
;tray-transparent = true
|
||||
;tray-background = #0063ff
|
||||
|
||||
[module/bspwm]
|
||||
type = internal/bspwm
|
||||
pin-workspaces = true
|
||||
enable-click = true
|
||||
|
||||
# ws-icon-0 = 1;
|
||||
# ws-icon-1 = 2;
|
||||
# ws-icon-2 = 3;
|
||||
# ws-icon-3 = 4;
|
||||
# ws-icon-4 = 5;
|
||||
# ws-icon-5 = 6;
|
||||
ws-icon-default =
|
||||
fuzzy-match = true
|
||||
|
||||
format = <label-state> <label-mode>
|
||||
label-padding = 1
|
||||
|
||||
label-focused = %icon%
|
||||
label-focused-background = ${colors.bg-dark}
|
||||
label-focused-foreground = ${colors.fg}
|
||||
# label-focused-underline = ${colors.magenta}
|
||||
; label-focused-foreground = ${xrdb:color2}
|
||||
label-focused-padding = 1
|
||||
|
||||
label-occupied = %icon%
|
||||
label-occupied-foreground = ${colors.accent}
|
||||
label-occupied-padding = 1
|
||||
|
||||
; label-urgent = %icon%
|
||||
label-urgent-foreground = ${colors.alert}
|
||||
; label-urgent-background = ${colors.alert}
|
||||
label-urgent-padding = 1
|
||||
|
||||
label-empty = %icon%
|
||||
label-empty-foreground = ${colors.fg-alt}
|
||||
label-empty-padding = 1
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 5
|
||||
|
||||
label = %date% %time%
|
||||
date = %A, %h %d
|
||||
date-alt = %Y-%m-%d
|
||||
time = %I:%M %p
|
||||
time-alt = %H:%M:%S
|
||||
format-prefix = ""
|
||||
format-prefix-padding = 1
|
||||
; format-prefix-background = ${colors.bg-alt}
|
||||
format-prefix-foreground = ${colors.accent}
|
||||
; format-underline = ${xrdb:color4}
|
||||
|
||||
[module/fs]
|
||||
type = internal/fs
|
||||
mount-0 = /
|
||||
# mount-1 = /mnt/projects ; for desktops
|
||||
mount-2 = /home/anish
|
||||
interval = 30
|
||||
|
||||
; Available tags:
|
||||
; <label-mounted> (default)
|
||||
; <bar-free>
|
||||
; <bar-used>
|
||||
; <ramp-capacity>
|
||||
format-mounted = "<bar-used>"
|
||||
format-mounted-foreground = ${colors.accent}
|
||||
; Available tokens:
|
||||
; %mountpoint%
|
||||
; %type%
|
||||
; %fsname%
|
||||
; %percentage_free%
|
||||
; %percentage_used%
|
||||
; %total%
|
||||
; %free%
|
||||
; %used%
|
||||
; Default: %mountpoint% %percentage_free%%
|
||||
|
||||
; Available tags:
|
||||
; <label-unmounted> (default)
|
||||
format-unmounted =
|
||||
label-unmounted =
|
||||
label-unmounted-foreground = ${colors.fg-alt}
|
||||
|
||||
bar-used-indicator =
|
||||
bar-used-width = 8
|
||||
bar-used-foreground-0 = ${colors.fg}
|
||||
bar-used-foreground-1 = ${colors.fg}
|
||||
bar-used-foreground-2 = ${colors.yellow}
|
||||
bar-used-foreground-3 = ${colors.alert}
|
||||
bar-used-foreground-4 = ${colors.alert}
|
||||
bar-used-fill = |
|
||||
bar-used-empty = ¦
|
||||
bar-used-empty-foreground = ${colors.fg-alt}
|
||||
|
||||
[module/xwindow]
|
||||
type = internal/xwindow
|
||||
label = %title:0:80:...%
|
||||
label-padding-left = 2
|
||||
|
||||
; [module/mpd]
|
||||
; type = internal/mpd
|
||||
; host = /home/hlissner/.config/mpd/mpd.sock
|
||||
;
|
||||
; format-online = <label-song> <toggle>
|
||||
; format-padding = 5
|
||||
;
|
||||
; label-song-maxlen = 45
|
||||
; label-song-ellipsis = true
|
||||
;
|
||||
; icon-prev =
|
||||
; icon-seekb =
|
||||
; icon-stop =
|
||||
; icon-play =
|
||||
; icon-pause =
|
||||
; icon-next =
|
||||
; icon-seekf =
|
||||
;
|
||||
; icon-random =
|
||||
; icon-repeat =
|
||||
;
|
||||
; toggle-on-foreground = ${colors.fg}
|
||||
; toggle-off-foreground = #66
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
interval = 2
|
||||
format = <bar-load>
|
||||
format-prefix = ""
|
||||
format-foreground = ${colors.accent}
|
||||
; format-underline = #f90000
|
||||
; label = %percentage%%
|
||||
format-padding = 1
|
||||
|
||||
bar-load-indicator =
|
||||
bar-load-width = 8
|
||||
bar-load-foreground-0 = ${colors.fg}
|
||||
bar-load-foreground-1 = ${colors.fg}
|
||||
bar-load-foreground-2 = ${colors.yellow}
|
||||
bar-load-foreground-3 = ${colors.alert}
|
||||
bar-load-foreground-4 = ${colors.alert}
|
||||
bar-load-fill = |
|
||||
bar-load-empty = ¦
|
||||
bar-load-empty-foreground = ${colors.fg-alt}
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
interval = 3
|
||||
format = <bar-used>
|
||||
format-prefix = ""
|
||||
format-prefix-foreground = ${colors.accent}
|
||||
; format-underline = #4bffdc
|
||||
; label = %percentage_used%%
|
||||
format-padding-left = 1
|
||||
|
||||
; Only applies if <bar-used> is used
|
||||
bar-used-indicator =
|
||||
bar-used-width = 8
|
||||
bar-used-foreground-0 = ${colors.fg}
|
||||
bar-used-foreground-1 = ${colors.fg}
|
||||
bar-used-foreground-2 = ${colors.yellow}
|
||||
bar-used-foreground-3 = ${colors.alert}
|
||||
bar-used-foreground-4 = ${colors.alert}
|
||||
bar-used-fill = |
|
||||
bar-used-empty = ¦
|
||||
bar-used-empty-foreground = ${colors.fg-alt}
|
||||
|
||||
[module/wlan]
|
||||
type = internal/network
|
||||
interface = ${env:WLP:wlp3s0}
|
||||
interval = 3.0
|
||||
|
||||
format-connected = <ramp-signal>
|
||||
format-disconnected =
|
||||
format-disconnected-foreground =
|
||||
|
||||
; label-connected =
|
||||
; label-disconnected = !
|
||||
; label-disconnected-foreground = ${colors.red}
|
||||
|
||||
ramp-signal-0 =
|
||||
ramp-signal-0-foreground = ${colors.yellow}
|
||||
ramp-signal-1 =
|
||||
ramp-signal-1-foreground = ${colors.yellow}
|
||||
ramp-signal-2 =
|
||||
ramp-signal-2-foreground = ${colors.yellow}
|
||||
ramp-signal-3 =
|
||||
ramp-signal-3-foreground = ${colors.accent}
|
||||
ramp-signal-4 =
|
||||
ramp-signal-4-foreground = ${colors.fg}
|
||||
|
||||
|
||||
[module/network-up]
|
||||
type = internal/network
|
||||
interface = ${env:LAN:eno1}
|
||||
interval = 4.0
|
||||
label-connected = "%upspeed%"
|
||||
format-connected-prefix = " "
|
||||
format-connected-prefix-foreground = ${colors.accent}
|
||||
format-connected-foreground = ${colors.fg}
|
||||
format-connected-background =
|
||||
format-connected-underline =
|
||||
format-disconnected-prefix = " "
|
||||
format-disconnected-prefix-foreground = ${colors.alert}
|
||||
format-disconnected-foreground = ${colors.alert}
|
||||
|
||||
[module/network-down]
|
||||
type = internal/network
|
||||
interface = ${env:LAN:eno1}
|
||||
interval = 4.0
|
||||
label-connected = "%downspeed%"
|
||||
format-connected-prefix = " "
|
||||
format-connected-prefix-foreground = ${colors.accent}
|
||||
format-connected-foreground = ${colors.fg}
|
||||
format-connected-background =
|
||||
format-connected-underline =
|
||||
format-disconnected-prefix = " "
|
||||
format-disconnected-prefix-foreground = ${colors.alert}
|
||||
format-disconnected-foreground = ${colors.alert}
|
||||
|
||||
[module/pulseaudio]
|
||||
type = internal/pulseaudio
|
||||
|
||||
; format-volume = <label-volume> <bar-volume>
|
||||
format-volume = <ramp-volume> <bar-volume>
|
||||
; label-volume = " "
|
||||
label-volume-foreground = ${colors.accent}
|
||||
|
||||
; format-muted-prefix = " "
|
||||
format-muted-foreground = ${colors.alert}
|
||||
label-muted =
|
||||
|
||||
bar-volume-width = 8
|
||||
# bar-volume-foreground-0 = ${colors.magenta}
|
||||
# bar-volume-foreground-1 = ${colors.magenta}
|
||||
# bar-volume-foreground-2 = ${colors.magenta}
|
||||
# bar-volume-foreground-3 = ${colors.magenta}
|
||||
# bar-volume-foreground-4 = ${colors.magenta}
|
||||
# bar-volume-foreground-5 = ${colors.magenta}
|
||||
# bar-volume-foreground-6 = ${colors.magenta}
|
||||
bar-volume-gradient = false
|
||||
bar-volume-indicator = |
|
||||
bar-volume-indicator-font = 1
|
||||
bar-volume-indicator-foreground = #ff
|
||||
bar-volume-fill = ─
|
||||
bar-volume-fill-font = 1
|
||||
bar-volume-empty = ─
|
||||
bar-volume-empty-font = 1
|
||||
bar-volume-empty-foreground = ${colors.fg-alt}
|
||||
|
||||
; Only applies if <ramp-volume> is used
|
||||
ramp-volume-0 =
|
||||
ramp-volume-1 =
|
||||
ramp-volume-2 =
|
||||
|
||||
[module/battery]
|
||||
type = internal/battery
|
||||
battery = BAT0
|
||||
adapter = ADP1
|
||||
full-at = 98
|
||||
|
||||
format-charging = <animation-charging> <label-charging>
|
||||
format-charging-underline = #ffb52a
|
||||
|
||||
format-discharging = <ramp-capacity> <label-discharging>
|
||||
format-discharging-underline = ${self.format-charging-underline}
|
||||
|
||||
format-full-prefix = " "
|
||||
format-full-prefix-foreground = ${colors.fg-alt}
|
||||
format-full-underline = ${self.format-charging-underline}
|
||||
|
||||
ramp-capacity-0 =
|
||||
ramp-capacity-1 =
|
||||
ramp-capacity-2 =
|
||||
ramp-capacity-0-foreground = ${colors.red}
|
||||
ramp-capacity-1-foreground = #575864
|
||||
ramp-capacity-2-foreground = ${colors.fg-alt}
|
||||
|
||||
animation-charging-0 =
|
||||
animation-charging-1 =
|
||||
animation-charging-2 =
|
||||
animation-charging-framerate = 1000
|
||||
animation-charging-foreground = ${colors.fg}
|
||||
|
||||
|
||||
;=====================================================
|
||||
; Custom scripts
|
||||
;=====================================================
|
||||
|
||||
[module/pad]
|
||||
type = custom/text
|
||||
content = " "
|
||||
content-foreground = ${colors.fg-alt}
|
||||
|
||||
[module/redshift]
|
||||
type = custom/script
|
||||
exec = ~/.config/polybar/modules/redshift
|
||||
exec-if = pgrep -x redshift
|
||||
interval = 60
|
||||
format-padding = 1
|
||||
|
||||
[module/syncthing]
|
||||
type = custom/script
|
||||
exec = echo 1
|
||||
exec-if = systemctl is-active syncthing
|
||||
format = ""
|
||||
format-foreground = ${colors.fg}
|
||||
interval = 30
|
||||
|
||||
; vim:ft=dosini
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Specifying the icon(s) in the script
|
||||
# This allows us to change its appearance conditionally
|
||||
pgrep -x redshift &> /dev/null
|
||||
if [[ $? -eq 0 ]]; then
|
||||
temp=$(redshift -p 2>/dev/null | grep temp | cut -d' ' -f3)
|
||||
temp=${temp//K/}
|
||||
fi
|
||||
|
||||
icon=""
|
||||
# OPTIONAL: Append ' ${temp}K' after $icon
|
||||
if [[ -z $temp ]]; then
|
||||
echo "%{F#65737E}$icon" # Greyed out (not running)
|
||||
elif [[ $temp -ge 5000 ]]; then
|
||||
echo "%{F#8FA1B3}$icon" # Blue
|
||||
elif [[ $temp -ge 4000 ]]; then
|
||||
echo "%{F#EBCB8B}$icon" # Yellow
|
||||
else
|
||||
echo "%{F#D08770}$icon" # Orange
|
||||
fi
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
pkill -u $UID -x polybar
|
||||
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
|
||||
|
||||
polybar main >$XDG_DATA_HOME/polybar.log 2>&1 &
|
||||
echo 'Polybar launched...'
|
||||
@@ -0,0 +1,10 @@
|
||||
/* -*- mode: css; -*- */
|
||||
@import "config.rasi"
|
||||
|
||||
textbox-icon {
|
||||
str: " ";
|
||||
}
|
||||
|
||||
prompt {
|
||||
enabled: false;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/* -*- mode: css; -*- */
|
||||
@import "config.rasi"
|
||||
|
||||
window {
|
||||
y-offset: 0;
|
||||
children: [ listview ];
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
listview {
|
||||
scrollbar: false;
|
||||
}
|
||||
|
||||
element {
|
||||
padding: 30px;
|
||||
background-color: @bg-light;
|
||||
}
|
||||
element.selected {
|
||||
background-color: @accent;
|
||||
text-color: @bg;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
/* -*- mode: css; -*- */
|
||||
@import "config.rasi"
|
||||
|
||||
listview {
|
||||
columns: 1;
|
||||
}
|
||||
|
||||
textbox-icon {
|
||||
str: " ";
|
||||
}
|
||||
|
||||
prompt {
|
||||
enabled: false;
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
/* -*- mode: css; -*- */
|
||||
configuration {
|
||||
icon-theme: "Paper";
|
||||
cycle: true;
|
||||
disable-history: false;
|
||||
monitor: "-4";
|
||||
|
||||
/* Vim-esque C-j/C-k as up/down in rofi */
|
||||
kb-accept-entry: "Return,Control+m,KP_Enter";
|
||||
kb-row-down: "Down,Control+n,Control+j";
|
||||
kb-remove-to-eol: "";
|
||||
kb-row-up: "Up,Control+p,Control+k";
|
||||
}
|
||||
|
||||
* {
|
||||
bg-light: #1c1c1c;
|
||||
bg-focus: #282a36;
|
||||
bg-dark: #181a23;
|
||||
fg-list: #bbc2cf;
|
||||
on: #8BD49C;
|
||||
off: #cc6666;
|
||||
|
||||
accent: #ffcc66;
|
||||
bg: #1f2430f3;
|
||||
separatorcolor: transparent;
|
||||
fg: #bfbab0;
|
||||
selectioncolor: #fafafa;
|
||||
|
||||
text-color: @foregroundcolor;
|
||||
|
||||
magenta: #bd93f9;
|
||||
blue: #61bfff;
|
||||
|
||||
text-font: "Fira Sans 15";
|
||||
text-mono-font: "Fira Code 13";
|
||||
/* icon-font: "Hurmit Nerd Font Mono 26"; */
|
||||
icon-font: "FontAwesome 20";
|
||||
|
||||
background-color: transparent;
|
||||
text-color: @fg-list;
|
||||
font: @text-font;
|
||||
border-color: @bg-dark;
|
||||
}
|
||||
|
||||
|
||||
/**** Layout ****/
|
||||
window {
|
||||
width: 1000px;
|
||||
y-offset: -150px;
|
||||
anchor: north;
|
||||
location: center;
|
||||
border: 1px;
|
||||
border-radius: 6px 6px 0 0;
|
||||
children: [ inputbar, listview ];
|
||||
|
||||
}
|
||||
|
||||
listview {
|
||||
lines: 12;
|
||||
fixed-height: false;
|
||||
/* reverse: true; */
|
||||
columns: 2;
|
||||
scrollbar: true;
|
||||
spacing: 1px;
|
||||
/* Remove strange gap between listview and inputbar */
|
||||
margin: -2px 0 0;
|
||||
}
|
||||
|
||||
/*
|
||||
TODO Not supported in stable branch of rofi
|
||||
@media only (max-height: 1080px) {
|
||||
window {
|
||||
y-offset: -30%;
|
||||
}
|
||||
listview {
|
||||
lines: 14;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
scrollbar {
|
||||
handle-width: 1px;
|
||||
}
|
||||
inputbar {
|
||||
children: [ textbox-icon, prompt, entry ];
|
||||
border: 0 0 0;
|
||||
}
|
||||
textbox-icon, prompt {
|
||||
padding: 11px;
|
||||
expand: false;
|
||||
border: 0 1px 0 0;
|
||||
margin: 0 -2px 0 0;
|
||||
}
|
||||
textbox-icon {
|
||||
padding: 7px 4px 0;
|
||||
}
|
||||
entry, element {
|
||||
padding: 10px 13px;
|
||||
}
|
||||
textbox {
|
||||
padding: 24px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
|
||||
/**** Looks ****/
|
||||
scrollbar {
|
||||
background-color: @bg-dark;
|
||||
handle-color: @accent;
|
||||
border-color: @bg-dark;
|
||||
}
|
||||
listview, inputbar {
|
||||
background-color: @bg;
|
||||
}
|
||||
textbox-icon, prompt, entry {
|
||||
text-color: @accent;
|
||||
}
|
||||
prompt, entry {
|
||||
background-color: @bg;
|
||||
}
|
||||
textbox-icon, prompt {
|
||||
background-color: #2f313d;
|
||||
}
|
||||
prompt {
|
||||
background-color: @bg-focus;
|
||||
}
|
||||
textbox-icon {
|
||||
font: @icon-font;
|
||||
}
|
||||
entry {
|
||||
font: @text-font-mono;
|
||||
text-color: @fg;
|
||||
}
|
||||
|
||||
element {
|
||||
background-color: @bg;
|
||||
text-color: @fg;
|
||||
}
|
||||
element selected {
|
||||
background-color: @bg-dark;
|
||||
text-color: @accent;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
/* -*- mode: css; -*- */
|
||||
|
||||
@import "config.rasi"
|
||||
|
||||
listview {
|
||||
columns: 4;
|
||||
}
|
||||
|
||||
textbox-icon {
|
||||
str: "🎑";
|
||||
}
|
||||
|
||||
prompt {
|
||||
enabled: false;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
/* -*- mode: css; -*- */
|
||||
|
||||
@import "config.rasi"
|
||||
|
||||
textbox-icon {
|
||||
str: " ";
|
||||
}
|
||||
|
||||
prompt {
|
||||
enabled: true;
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
@import "config.rasi"
|
||||
|
||||
* {
|
||||
icon-font : "Iosevka Nerd Font Mono 24";
|
||||
text-color : @fg;
|
||||
background-color : @bg;
|
||||
|
||||
margin : 0px;
|
||||
padding : 0px;
|
||||
spacing : 0px;
|
||||
}
|
||||
|
||||
window {
|
||||
location : north;
|
||||
children : [mainbox];
|
||||
}
|
||||
|
||||
mainbox {
|
||||
children : [listview];
|
||||
}
|
||||
|
||||
listview {
|
||||
columns : 8;
|
||||
lines : 1;
|
||||
}
|
||||
|
||||
element {
|
||||
children : [element-text];
|
||||
}
|
||||
|
||||
element-text {
|
||||
font : @icon-font;
|
||||
cursor : pointer;
|
||||
padding : 4px;
|
||||
|
||||
vertical-align : 0.5;
|
||||
horizontal-align : 0.5;
|
||||
}
|
||||
|
||||
element-text selected {
|
||||
text-color : @bg;
|
||||
background-color : @accent;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
/* -*- mode: css; -*- */
|
||||
@import "config.rasi"
|
||||
|
||||
listview {
|
||||
columns: 1;
|
||||
}
|
||||
|
||||
textbox-icon {
|
||||
str: " ";
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/** -*- mode: css; -*-
|
||||
* This theme is intended for a 5 items wide menu on a 1920x1080 pixels resolution.
|
||||
* You may have to tweak values such as the window padding if you have a different resolution.
|
||||
*/
|
||||
@import "appmenu.rasi"
|
||||
|
||||
window {
|
||||
children: [ listview ];
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
listview {
|
||||
scrollbar: false;
|
||||
}
|
||||
|
||||
element {
|
||||
padding: 30px;
|
||||
background-color: @bg;
|
||||
}
|
||||
element.selected {
|
||||
background-color: @off;
|
||||
text-color: @bg;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
@import "appmenu.rasi"
|
||||
|
||||
window {
|
||||
children: [ listview ];
|
||||
width: 264px;
|
||||
y-offset: -540px;
|
||||
border-radius: 5px 5px 5px 5px;
|
||||
}
|
||||
|
||||
listview {
|
||||
scrollbar: false;
|
||||
lines: 1;
|
||||
columns: 6;
|
||||
}
|
||||
|
||||
element {
|
||||
background-color: @bg;
|
||||
}
|
||||
element.selected {
|
||||
background-color: @off;
|
||||
text-color: @bg;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/* -*- mode: css; -*- */
|
||||
|
||||
@import "config.rasi"
|
||||
|
||||
listview {
|
||||
columns: 1;
|
||||
}
|
||||
|
||||
inputbar {
|
||||
width: 1100px;
|
||||
}
|
||||
|
||||
textbox-icon {
|
||||
str: " ";
|
||||
}
|
||||
|
||||
prompt {
|
||||
enabled: false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Elements are tab-delimited, which look weird in the default variable-pitch
|
||||
* font, so use a monospace one.
|
||||
*/
|
||||
element {
|
||||
font: "Fira Code 12";
|
||||
}
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Cheap hack to get pointerCursor working because for some reason it doesn't...
|
||||
xsetroot -xcf /etc/profiles/per-user/anish/share/icons/capitaine-cursors/cursors/left_ptr 32
|
||||
|
||||
pkill -u $UID -x polybar
|
||||
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
|
||||
|
||||
polybar mybar >$XDG_DATA_HOME/polybar.log 2>&1 &
|
||||
@@ -0,0 +1,122 @@
|
||||
super + alt + Escape
|
||||
bspc quit
|
||||
|
||||
super + {_,shift + }q
|
||||
bspc node -{c,k}
|
||||
|
||||
super + t
|
||||
bspc desktop -l next
|
||||
|
||||
super + apostrophe
|
||||
bspc window -s last
|
||||
|
||||
# Attach to a detached session. If none is available create a new one, rather
|
||||
# than attach to one that is already attached to elsewhere.
|
||||
super + Return
|
||||
kitty
|
||||
|
||||
ctrl + super + Return
|
||||
xst -e bash -c "(tmux ls | grep -qEv 'attached|scratch' && tmux at) || tmux"
|
||||
|
||||
super + space
|
||||
rofi -show drun -modi drun,run -show-icons -theme theme/appmenu.rasi
|
||||
|
||||
super + Tab
|
||||
rofi -show window -show-icons -theme theme/windowmenu.rasi
|
||||
|
||||
super + e
|
||||
rofimoji --selector-args "-theme theme/emojimenu.rasi" --skin-tone moderate --action copy
|
||||
|
||||
super + p
|
||||
passmenu
|
||||
|
||||
super + s
|
||||
powermenu
|
||||
|
||||
super + o
|
||||
screenshot
|
||||
|
||||
# super + Escape
|
||||
# pkill -USR1 -x sxhkd
|
||||
|
||||
super + n
|
||||
xkblayout-state set +1
|
||||
|
||||
#
|
||||
##
|
||||
|
||||
## Toggle floating/fullscreen
|
||||
super + {_,ctrl + }f
|
||||
bspc node -t ~{floating,fullscreen}
|
||||
|
||||
super + {_,shift + }{h,j,k,l}
|
||||
bspc node -{f,s} {west,south,north,east}
|
||||
|
||||
super + ctrl + {h,j,k,l}
|
||||
bspc node -p {west,south,north,east}
|
||||
|
||||
## Resize by preselection
|
||||
super + alt + {1-9}
|
||||
$DOTFLES/bin/bspwm/presel 0.{1-9}
|
||||
|
||||
super + alt + {h,j,k,l}
|
||||
bspc node -p {west,south,north,east}
|
||||
|
||||
super + alt + Return
|
||||
$DOTFILES/bin/bspwm/subtract-presel
|
||||
|
||||
super + alt + Delete
|
||||
bspc node -p cancel
|
||||
|
||||
super + {_,shift +}{1-9,0}
|
||||
bspc {desktop -f,node -d} {1-9,10};
|
||||
|
||||
# expand a window by moving one of its side outward
|
||||
super + {Left,Down,Up,Right}
|
||||
bspc node -z {left -40 0,bottom 0 40,top 0 -40,right 40 0}
|
||||
|
||||
# contract a window by moving one of its side inward
|
||||
super + ctrl + {Left,Down,Up,Right}
|
||||
bspc node -z {right -40 0,top 0 40,bottom 0 -40,left 40 0}
|
||||
|
||||
# move a floating window
|
||||
super + shift + {Left,Down,Up,Right}
|
||||
bspc node -v {-40 0,0 40,0 -40,40 0}
|
||||
|
||||
|
||||
#
|
||||
## Media keys
|
||||
super + u
|
||||
mpv-ify
|
||||
|
||||
# screenshot region
|
||||
Print
|
||||
scrcap
|
||||
# screencast region to mp4
|
||||
super + Print
|
||||
scrrec -s ~/recordings/$(date +%F-%T).mp4
|
||||
# screencast region to gif
|
||||
super + ctrl + Print
|
||||
scrrec -s ~/recordings/$(date +%F-%T).gif
|
||||
|
||||
XF86MonBrightnessUp
|
||||
light -A 5
|
||||
XF86MonBrightnessDown
|
||||
light -U 5
|
||||
|
||||
XF86AudioMute
|
||||
amixer -q set Master toggle
|
||||
XF86AudioLowerVolume
|
||||
amixer -q set Master 10%- unmute
|
||||
XF86AudioRaiseVolume
|
||||
amixer -q set Master 10%+ unmute
|
||||
|
||||
XF86Audio{Play,Pause}
|
||||
spt-send toggle
|
||||
XF86AudioNext
|
||||
spt-send next
|
||||
XF86AudioPrev
|
||||
spt-send prev
|
||||
|
||||
# X86Search
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
# xdg.nix
|
||||
#
|
||||
# Set up and enforce XDG compliance. Other modules will take care of their own,
|
||||
# but this takes care of the general cases.
|
||||
|
||||
{ config, home-manager, ... }:
|
||||
{
|
||||
### A tidy $HOME is a tidy mind
|
||||
home-manager.users.anish.xdg.enable = true;
|
||||
|
||||
environment = {
|
||||
sessionVariables = {
|
||||
# These are the defaults, and xdg.enable does set them, but due to load
|
||||
# order, they're not set before environment.variables are set, which could
|
||||
# cause race conditions.
|
||||
XDG_CACHE_HOME = "$HOME/.cache";
|
||||
XDG_CONFIG_HOME = "$HOME/.config";
|
||||
XDG_DATA_HOME = "$HOME/.local/share";
|
||||
XDG_BIN_HOME = "$HOME/.local/bin";
|
||||
};
|
||||
variables = {
|
||||
# Conform more programs to XDG conventions. The rest are handled by their
|
||||
# respective modules.
|
||||
__GL_SHADER_DISK_CACHE_PATH = "$XDG_CACHE_HOME/nv";
|
||||
ASPELL_CONF = ''
|
||||
per-conf $XDG_CONFIG_HOME/aspell/aspell.conf;
|
||||
personal $XDG_CONFIG_HOME/aspell/en_US.pws;
|
||||
repl $XDG_CONFIG_HOME/aspell/en.prepl;
|
||||
'';
|
||||
#CUDA_CACHE_PATH = "$XDG_CACHE_HOME/nv";
|
||||
HISTFILE = "$XDG_DATA_HOME/bash/history";
|
||||
INPUTRC = "$XDG_CONFIG_HOME/readline/inputrc";
|
||||
LESSHISTFILE = "$XDG_CACHE_HOME/lesshst";
|
||||
WGETRC = "$XDG_CONFIG_HOME/wgetrc";
|
||||
|
||||
# Tools I don't use
|
||||
# SUBVERSION_HOME = "$XDG_CONFIG_HOME/subversion";
|
||||
# BZRPATH = "$XDG_CONFIG_HOME/bazaar";
|
||||
# BZR_PLUGIN_PATH = "$XDG_DATA_HOME/bazaar";
|
||||
# BZR_HOME = "$XDG_CACHE_HOME/bazaar";
|
||||
# ICEAUTHORITY = "$XDG_CACHE_HOME/ICEauthority";
|
||||
};
|
||||
|
||||
# Move ~/.Xauthority out of $HOME (setting XAUTHORITY early isn't enough)
|
||||
#extraInit = ''
|
||||
# export XAUTHORITY=/tmp/Xauthority
|
||||
# [ -e ~/.Xauthority ] && mv -f ~/.Xauthority "$XAUTHORITY"
|
||||
#'';
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
set notification-error-bg "#1f2430"
|
||||
set notification-error-fg "#fb4934"
|
||||
set notification-warning-bg "#1f2430"
|
||||
set notification-warning-fg "#fabd2f"
|
||||
set notification-bg "#1f2430"
|
||||
set notification-fg "#b8bb26"
|
||||
|
||||
set completion-bg "#1f2430"
|
||||
set completion-fg "#bfbab0"
|
||||
set completion-group-bg "#3c3836"
|
||||
set completion-group-fg "#928374"
|
||||
set completion-highlight-bg "#83a598"
|
||||
set completion-highlight-fg "#504945"
|
||||
|
||||
# Define the color in index mode
|
||||
set index-bg "#1f2430"
|
||||
set index-fg "#bfbab0"
|
||||
set index-active-bg "#83a598"
|
||||
set index-active-fg "#504945"
|
||||
|
||||
set inputbar-bg "#1f2430"
|
||||
set inputbar-fg "#bfbab0"
|
||||
|
||||
set statusbar-bg "#1f2430"
|
||||
set statusbar-fg "#bfbab0"
|
||||
|
||||
set highlight-color "#fabd2f"
|
||||
set highlight-active-color "#fe8019"
|
||||
|
||||
set default-bg "#1f2430"
|
||||
set default-fg "#bfbab0"
|
||||
set render-loading true
|
||||
set render-loading-bg "#1f2430"
|
||||
set render-loading-fg "#bfbab0"
|
||||
|
||||
# Recolor book content's color
|
||||
set recolor-lightcolor "#1f2430"
|
||||
set recolor-darkcolor "#bfbab0"
|
||||
set recolor "true"
|
||||
# set recolor-keephue true # keep original color
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
nix-direnv = {
|
||||
enable = true;
|
||||
# enableFlakes = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,303 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
#age.secrets.fastmail.file = "/etc/nixos/secrets/fastmail.age";
|
||||
#age.secrets.fastmail.owner = "anish";
|
||||
home.packages = with pkgs; [
|
||||
neomutt
|
||||
himalaya
|
||||
imapfilter
|
||||
];
|
||||
services.mbsync = {
|
||||
enable = true;
|
||||
frequency = "*:0/30";
|
||||
#postExec = "${pkgs.notmuch}/bin/notmuch new";
|
||||
};
|
||||
services.imapnotify.enable = true;
|
||||
programs.mbsync.enable = true;
|
||||
programs.msmtp.enable = true;
|
||||
programs.notmuch.enable = true;
|
||||
home.file.".mailcap".text = ''
|
||||
text/html; firefox %s
|
||||
application/pdf; zathura %s
|
||||
image/png; feh %s
|
||||
image/jpeg; feh %s
|
||||
'';
|
||||
programs.neomutt = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
# Shamelessly Stolen from https://gideonwolfe.com/posts/workflow/neomutt/intro/
|
||||
# set editor to neovim
|
||||
set editor = "nvim +':set textwidth=0'"
|
||||
|
||||
#set virtual_spoolfile=yes
|
||||
set folder="~/Mail/anish"
|
||||
set mbox_type = Maildir
|
||||
mailboxes `find ~/Mail/anish/* -maxdepth 0 -type d | grep -v "Trash\|Spam\|tmp\|new\|cur" | sed 's|/home/anish/Mail/anish|=\"|g' | sed 's|$|\"|g' | tr '\n' ' '`
|
||||
|
||||
## Folder with emails
|
||||
#set folder = "~/Mail/anish"
|
||||
# Type of mailbox
|
||||
# Directory to poll for new mail
|
||||
#set spoolfile = +Inbox
|
||||
# Directory to save sent messages into
|
||||
#set record = +Sent
|
||||
# Sets the drafts folder
|
||||
set postponed = ~/Mail/anish/Drafts
|
||||
# File that headers will be cached
|
||||
# set header_cache = ~/.cache/mutt
|
||||
|
||||
set my_name = "Anish"
|
||||
set imap_check_subscribed
|
||||
|
||||
# Set preffered view modes
|
||||
auto_view text/html text/calendar application/ics # view html automatically
|
||||
alternative_order text/plain text/enriched text/html text/*
|
||||
|
||||
# main options
|
||||
set use_from
|
||||
set from="anish@lakhwara.com"
|
||||
set sendmail="msmtpq" # send from default account using msmtp
|
||||
set sendmail_wait=-1
|
||||
set edit_headers # show headers when composing
|
||||
set fast_reply # skip to compose when replying
|
||||
#set askcc # ask for CC:
|
||||
set fcc_attach # save attachments with the body
|
||||
set forward_format = "Fwd: %s" # format of subject when forwarding
|
||||
set forward_decode # decode when forwarding
|
||||
set attribution = "On %d, %n wrote:" # format of quoting header
|
||||
set reply_to # reply to Reply to: field
|
||||
set reverse_name # reply as whomever it was to
|
||||
set include # include message in replies
|
||||
set forward_quote # include message in forwards
|
||||
set text_flowed
|
||||
set ssl_force_tls
|
||||
set fast_reply
|
||||
#unset sig_dashes # no dashes before sig
|
||||
#unset mime_forward # forward attachments as part of body
|
||||
#unset help # No help bar at the top of index
|
||||
set status_on_top # Status bar on top of index
|
||||
#set tmpdir = ~/Programs/neomutt/temp # where to keep temp files
|
||||
|
||||
unset confirmappend # don't ask, just do!
|
||||
set quit # don't ask, just do!!
|
||||
unset mark_old # read/new is good enough for me
|
||||
set pipe_decode # strip headers and eval mimes when piping
|
||||
set thorough_search # strip headers and eval mimes before searching
|
||||
set timeout = 0
|
||||
|
||||
# status bar, date format, finding stuff etc.
|
||||
set status_chars = " *%A"
|
||||
set status_format = "[ Folder: %f ] [%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]%>─%?p?( %p postponed )?"
|
||||
set date_format = "%d.%m.%Y %H:%M"
|
||||
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
|
||||
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
||||
set send_charset = "utf-8:iso-8859-1:us-ascii"
|
||||
set charset = "utf-8"
|
||||
set arrow_cursor = "no" # Change `color indicator` depending
|
||||
|
||||
# notmuch shortcuts
|
||||
# Points to the notmuch directory
|
||||
set nm_default_url = "notmuch://$HOME/Mail/anish"
|
||||
# Makes notmuch return threads rather than messages
|
||||
set nm_query_type = "threads"
|
||||
# Binding for notmuch search
|
||||
macro index,pager S "<vfolder-from-query>" "Search mailbox"
|
||||
|
||||
# Pager View Options
|
||||
set pager_index_lines = 10 # Shows 10 lines of index when pager is active
|
||||
set pager_context = 3
|
||||
set pager_stop
|
||||
set menu_scroll
|
||||
set tilde
|
||||
set mail_check_stats
|
||||
unset markers
|
||||
|
||||
#set header_cache = "~/.cache/mutt"
|
||||
#set message_cachedir = "~/.cache/mutt"
|
||||
|
||||
set query_command = "khard email --parsable --search-in-source-files '%s'"
|
||||
|
||||
### Mappings Settings
|
||||
|
||||
# General rebindings
|
||||
bind attach <return> view-mailcap
|
||||
bind attach l view-mailcap
|
||||
bind editor <space> noop
|
||||
bind pager c imap-fetch-mail
|
||||
bind index G last-entry
|
||||
bind index g noop
|
||||
bind index gg first-entry
|
||||
bind pager,attach h exit
|
||||
bind pager j next-line
|
||||
bind pager k previous-line
|
||||
bind pager l view-attachments
|
||||
bind index D delete-message
|
||||
bind index U undelete-message
|
||||
bind index L limit
|
||||
bind index h noop
|
||||
bind index l display-message
|
||||
bind browser h goto-parent
|
||||
bind browser l select-entry
|
||||
bind pager,browser gg top-page
|
||||
bind pager,browser G bottom-page
|
||||
bind index,pager,browser d half-down
|
||||
bind index,pager,browser u half-up
|
||||
# bind index,pager R group-reply
|
||||
bind index \031 previous-undeleted # Mouse wheel
|
||||
bind index \005 next-undeleted # Mouse wheel
|
||||
bind pager \031 previous-line # Mouse wheel
|
||||
bind pager \005 next-line # Mouse wheel
|
||||
bind editor <Tab> complete-query
|
||||
|
||||
|
||||
# sidebar mappings
|
||||
set sidebar_short_path=yes
|
||||
set sidebar_delim_chars='/'
|
||||
bind index,pager \Ck sidebar-prev
|
||||
bind index,pager \Cj sidebar-next
|
||||
bind index,pager \Co sidebar-open
|
||||
bind index,pager \Cp sidebar-prev-new
|
||||
bind index,pager \Cn sidebar-next-new
|
||||
bind index,pager B sidebar-toggle-visible
|
||||
|
||||
# global index and pager shortcuts
|
||||
bind index,pager @ compose-to-sender
|
||||
bind index,pager D purge-message
|
||||
bind index <tab> sync-mailbox
|
||||
bind index <space> collapse-thread
|
||||
|
||||
# Email completion bindings
|
||||
bind editor <Tab> complete-query
|
||||
bind editor ^T complete
|
||||
|
||||
# Press A to archive
|
||||
macro index,pager A "<clear-flag>N<save-message>=/Archive" "mark message as Archived"
|
||||
# Press C to add contact to Khard address book
|
||||
macro index,pager C \
|
||||
"<pipe-message>khard add-email<return>" \
|
||||
"add the sender email address to khard"
|
||||
|
||||
### Color Settings
|
||||
# Header colors:
|
||||
color header blue default ".*"
|
||||
color header brightmagenta default "^(From)"
|
||||
color header brightcyan default "^(Subject)"
|
||||
color header brightwhite default "^(CC|BCC)"
|
||||
|
||||
mono bold bold
|
||||
mono underline underline
|
||||
mono indicator reverse
|
||||
mono error bold
|
||||
color normal default default
|
||||
color indicator brightyellow default # currently selected message. default makes bar clear, disabled arrow to save space.
|
||||
color sidebar_highlight red default
|
||||
color sidebar_divider brightblack black
|
||||
color sidebar_flagged red black
|
||||
color sidebar_new green black
|
||||
color normal brightyellow default
|
||||
color error red default
|
||||
color tilde black default
|
||||
color message cyan default
|
||||
color markers red white
|
||||
color attachment white default
|
||||
color search brightmagenta default
|
||||
color status brightyellow black
|
||||
color hdrdefault brightgreen default
|
||||
color quoted green default
|
||||
color quoted1 blue default
|
||||
color quoted2 cyan default
|
||||
color quoted3 yellow default
|
||||
color quoted4 red default
|
||||
color quoted5 brightred default
|
||||
color signature brightgreen default
|
||||
color bold black default
|
||||
color underline black default
|
||||
color normal default default
|
||||
|
||||
color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
||||
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
||||
color body green default "\`[^\`]*\`" # Green text between ` and `
|
||||
color body brightblue default "^# \.*" # Headings as bold blue
|
||||
color body brightcyan default "^## \.*" # Subheadings as bold cyan
|
||||
color body brightgreen default "^### \.*" # Subsubheadings as bold green
|
||||
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
|
||||
color body brightcyan default "[;:][-o][)/(|]" # emoticons
|
||||
color body brightcyan default "[;:][)(|]" # emoticons
|
||||
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
|
||||
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
|
||||
color body red default "(BAD signature)"
|
||||
color body cyan default "(Good signature)"
|
||||
color body brightblack default "^gpg: Good signature .*"
|
||||
color body brightyellow default "^gpg: "
|
||||
color body brightyellow red "^gpg: BAD signature from.*"
|
||||
mono body bold "^gpg: Good signature"
|
||||
mono body bold "^gpg: BAD signature from.*"
|
||||
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
|
||||
|
||||
# Default index colors:
|
||||
color index yellow default '.*'
|
||||
color index_author red default '.*'
|
||||
color index_number blue default
|
||||
color index_subject cyan default '.*'
|
||||
|
||||
# For new mail:
|
||||
color index brightyellow black "~N"
|
||||
color index_author brightred black "~N"
|
||||
color index_subject brightcyan black "~N"
|
||||
|
||||
color progress black cyan
|
||||
|
||||
'';
|
||||
};
|
||||
|
||||
accounts.email = {
|
||||
accounts.anish = {
|
||||
primary = true;
|
||||
address = "anish@lakhwara.com";
|
||||
#alias = [ "*@lakhwara.com" ];
|
||||
#gpg = {
|
||||
# key = "";
|
||||
# signByDefault = true;
|
||||
#};
|
||||
imap.host = "imap.fastmail.com";
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "both";
|
||||
expunge = "both";
|
||||
remove = "both";
|
||||
extraConfig.local.subFolders = "Verbatim";
|
||||
};
|
||||
imapnotify = {
|
||||
enable = true;
|
||||
boxes = [ "Inbox" ];
|
||||
onNotify = "${pkgs.isync}/bin/mbsync anish && ${pkgs.notmuch}/bin/notmuch index";
|
||||
onNotifyPost = {
|
||||
mail = "${pkgs.libnotify}/bin/notify-send -a mail 'email: new in %s'";
|
||||
#update = "${pkgs.libnotify}/bin/notify-send -a mail 'email: update %s'";
|
||||
#expunge = "${pkgs.libnotify}/bin/notify-send -a mail 'email: expunge %s'";
|
||||
};
|
||||
};
|
||||
msmtp.enable = true;
|
||||
msmtp.extraConfig = {
|
||||
"port" = "465";
|
||||
};
|
||||
notmuch.enable = true;
|
||||
realName = "Anish Lakhwara";
|
||||
signature = {
|
||||
text = ''
|
||||
Thanks,
|
||||
Anish
|
||||
'';
|
||||
showSignature = "append";
|
||||
};
|
||||
passwordCommand = "${pkgs.coreutils}/bin/cat /run/agenix/fastmail";
|
||||
smtp = {
|
||||
host = "smtp.fastmail.com";
|
||||
};
|
||||
userName = "anish@lakhwara.com";
|
||||
neomutt.enable = true;
|
||||
himalaya.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,153 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
# Imperative steps:
|
||||
# - Enable & configure plugins
|
||||
# - Run :colourscheme --url https://raw.githubusercontent.com/lonepie/dracula-tridactyl/main/dracula.css dracula for tridactyl theme
|
||||
# - Import css for sidebery from sidebery.css
|
||||
# - Configure wallabagger, shaarli, grasp
|
||||
|
||||
programs.browserpass.enable = true;
|
||||
programs.browserpass.browsers = [ "firefox" ];
|
||||
#env.XDG_DEXSTOP_DIR = "$HOME/";
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
# Find extensions: https://github.com/nix-community/nur-combined/blob/master/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix
|
||||
ublock-origin
|
||||
wallabagger
|
||||
# tree-style-tab
|
||||
tridactyl
|
||||
promnesia
|
||||
sidebery
|
||||
(buildFirefoxXpiAddon {
|
||||
pname = "shaarli";
|
||||
version = "2.0.0";
|
||||
addonId = "shaarli@imirhil.fr";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/815126/shaarli-2.0.0.xpi";
|
||||
sha256 = "W/OpvOfMclibP6LeG573/DlMs0p8fF0efyd+i8Sudgg=";
|
||||
meta = { };
|
||||
})
|
||||
(buildFirefoxXpiAddon {
|
||||
pname = "grasp";
|
||||
version = "0.6.6";
|
||||
addonId = "{37e42980-a7c9-473c-96d5-13f18e0efc74}";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/3502186/grasp-0.6.6.xpi";
|
||||
sha256 = "L4JhT29MeA34nHIlB8FtCU7hrpbWljZZBusx12uxblE=";
|
||||
meta = { };
|
||||
})
|
||||
];
|
||||
profiles.anish = {
|
||||
id = 0;
|
||||
isDefault = true;
|
||||
name = "anish";
|
||||
userChrome = (builtins.readFile ./userChrome.css);
|
||||
settings = {
|
||||
"devtools.theme" = "dark";
|
||||
# Enable userContent.css and userChrome.css for our theme modules
|
||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||
# Stop creating ~/Downloads!
|
||||
"browser.download.dir" = "/home/anish/downloads"; # TODO Don't hardcode this!
|
||||
# Don't use the built-in password manager; a nixos user is more likely
|
||||
# using an external one (you are using one, right?).
|
||||
#"signon.rememberSignons" = false;
|
||||
# Do not check if Firefox is the default browser
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
# Disable the "new tab page" feature and show a blank tab instead
|
||||
# https://wiki.mozilla.org/Privacy/Reviews/New_Tab
|
||||
# https://support.mozilla.org/en-US/kb/new-tab-page-show-hide-and-customize-top-sites#w_how-do-i-turn-the-new-tab-page-off
|
||||
"browser.newtabpage.enabled" = false;
|
||||
"browser.newtab.url" = "about:blank";
|
||||
# Disable Activity Stream
|
||||
# https://wiki.mozilla.org/Firefox/Activity_Stream
|
||||
"browser.newtabpage.activity-stream.enabled" = false;
|
||||
# Disable new tab tile ads & preload
|
||||
# http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox
|
||||
# http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331
|
||||
# https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping
|
||||
# https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-source
|
||||
# https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-ping
|
||||
"browser.newtabpage.enhanced" = false;
|
||||
"browser.newtab.preload" = false;
|
||||
"browser.newtabpage.directory.ping" = "";
|
||||
"browser.newtabpage.directory.source" = "data:text/plain,{}";
|
||||
# Disable some not so useful functionality.
|
||||
"media.videocontrols.picture-in-picture.video-toggle.enabled" = false;
|
||||
"extensions.htmlaboutaddons.recommendations.enabled" = false;
|
||||
"extensions.htmlaboutaddons.discover.enabled" = false;
|
||||
"extensions.pocket.enabled" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||
"extensions.pocket.api" = "";
|
||||
"extensions.pocket.oAuthConsumerKey" = "";
|
||||
"extensions.pocket.showHome" = false;
|
||||
"extensions.pocket.site" = "";
|
||||
"app.normandy.enabled" = false;
|
||||
"app.normandy.api_url" = "";
|
||||
"extensions.shield-recipe-client.enabled" = false;
|
||||
"app.shield.optoutstudies.enabled" = false;
|
||||
# Disable battery API
|
||||
# https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager
|
||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1313580
|
||||
"dom.battery.enabled" = false;
|
||||
# Disable "beacon" asynchronous HTTP transfers (used for analytics)
|
||||
# https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon
|
||||
"beacon.enabled" = false;
|
||||
# Disable pinging URIs specified in HTML <a> ping= attributes
|
||||
# http://kb.mozillazine.org/Browser.send_pings
|
||||
"browser.send_pings" = false;
|
||||
# Disable gamepad API to prevent USB device enumeration
|
||||
# https://www.w3.org/TR/gamepad/
|
||||
# https://trac.torproject.org/projects/tor/ticket/13023
|
||||
"dom.gamepad.enabled" = false;
|
||||
# Don't try to guess domain names when entering an invalid domain name in URL bar
|
||||
# http://www-archive.mozilla.org/docs/end-user/domain-guessing.html
|
||||
"browser.fixup.alternate.enabled" = false;
|
||||
# Disable telemetry
|
||||
# https://wiki.mozilla.org/Platform/Features/Telemetry
|
||||
# https://wiki.mozilla.org/Privacy/Reviews/Telemetry
|
||||
# https://wiki.mozilla.org/Telemetry
|
||||
# https://www.mozilla.org/en-US/legal/privacy/firefox.html#telemetry
|
||||
# https://support.mozilla.org/t5/Firefox-crashes/Mozilla-Crash-Reporter/ta-p/1715
|
||||
# https://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry
|
||||
# https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html
|
||||
# https://wiki.mozilla.org/Telemetry/Experiments
|
||||
# https://support.mozilla.org/en-US/questions/1197144
|
||||
# https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#id1
|
||||
"toolkit.telemetry.enabled" = false;
|
||||
"toolkit.telemetry.unified" = false;
|
||||
"toolkit.telemetry.archive.enabled" = false;
|
||||
"experiments.supported" = false;
|
||||
"experiments.enabled" = false;
|
||||
"experiments.manifest.uri" = "";
|
||||
"privacy.donottrackheader.enabled" = true;
|
||||
"privacy.trackingprotection.enabled" = true;
|
||||
"privacy.trackingprotection.socialtracking.enabled" = true;
|
||||
"privacy.partition.network_state.ocsp_cache" = true;
|
||||
# Disable health reports (basically more telemetry)
|
||||
# https://support.mozilla.org/en-US/kb/firefox-health-report-understand-your-browser-perf
|
||||
# https://gecko.readthedocs.org/en/latest/toolkit/components/telemetry/telemetry/preferences.html
|
||||
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
|
||||
"browser.newtabpage.activity-stream.telemetry" = false;
|
||||
"browser.ping-centre.telemetry" = false;
|
||||
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||
"toolkit.telemetry.hybridContent.enabled" = false;
|
||||
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||
"toolkit.telemetry.reportingpolicy.firstRun" = false;
|
||||
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||
"toolkit.telemetry.updatePing.enabled" = false;
|
||||
|
||||
# As well as Firefox 'experiments'
|
||||
"experiments.activeExperiment" = false;
|
||||
"network.allow-experiments" = false;
|
||||
"datareporting.healthreport.uploadEnabled" = false;
|
||||
"datareporting.healthreport.service.enabled" = false;
|
||||
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||
# Pipewire optimizations
|
||||
# https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Performance-tuning#firefox
|
||||
"reader.parse-on-load.enabled" = false;
|
||||
"media.webspeech.synth.enabled" = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
/* ROOT */
|
||||
|
||||
#root {
|
||||
/* Tab and PinnedTab height adjustment */
|
||||
--tabs-height: 33px;
|
||||
--tabs-pinned-height: var(--tabs-height);
|
||||
/* Dark Theme base settings */
|
||||
--bg: #1f2430 !important;
|
||||
--tabs-fg: #d4d4d4 !important;
|
||||
--tabs-bg-hover: #3b3948 !important;
|
||||
--tabs-activated-bg: #5b5b66 !important;
|
||||
--nav-btn-activated-bg: #1f222f !important;
|
||||
}
|
||||
|
||||
#root .Tab {
|
||||
--tabs-indent: 7px;
|
||||
}
|
||||
|
||||
/* TABS */
|
||||
|
||||
.Tab .lvl-wrapper:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.Tab {
|
||||
margin: auto;
|
||||
width: 94%;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.Tab .close > svg:hover {
|
||||
/* Styling the tab close button */
|
||||
border-radius: 3px;
|
||||
background: #492121 !important;
|
||||
opacity: 100%;
|
||||
}
|
||||
|
||||
.Tab .title {
|
||||
overflow: hidden !important;
|
||||
}
|
||||
|
||||
|
||||
/* PINNED TABS */
|
||||
|
||||
.PinnedDock {
|
||||
background-color: var(--bg) !important;
|
||||
}
|
||||
|
||||
.PinnedTab {
|
||||
margin: 5px 0px 4px 6px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
|
||||
/* NAV BAR */
|
||||
|
||||
.NavigationBar {
|
||||
height: 41px !important;
|
||||
padding: 4.5px 0px 0px 4.5px !important;
|
||||
background-color: #2B2A33 !important;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.NavigationBar .panel-btn:hover {
|
||||
border-radius: 3px !important;
|
||||
background-color: var(--tabs-bg-hover) !important;
|
||||
}
|
||||
|
||||
.NavigationBar .panel-btn[data-active="true"] {
|
||||
border-radius: 3px !important;
|
||||
background-color: var(--bg) !important;
|
||||
}
|
||||
|
||||
.NavigationBar .panel-btn[data-active="true"]:hover {
|
||||
border-radius: 3px !important;
|
||||
background-color: var(--tabs-bg-hover) !important;
|
||||
}
|
||||
|
||||
.NavigationBar .panel-btn > svg,
|
||||
.NavigationBar .panel-btn > img {
|
||||
fill: #f2f2f2 !important;
|
||||
}
|
||||
|
||||
|
||||
/* SIDEBAR HACK PATCHES */
|
||||
|
||||
@media (max-width: 50px) {
|
||||
/* Fix to tab tree identation when minimised */
|
||||
#root:not(:hover) .Tab {
|
||||
--tabs-indent: 0px;
|
||||
}
|
||||
|
||||
.Tab[data-lvl] > div.lvl-wrapper {
|
||||
right: -2px;
|
||||
}
|
||||
|
||||
.Tab {
|
||||
max-width: 34px;
|
||||
}
|
||||
|
||||
.Tab .fav {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.Tab .audio {
|
||||
z-index: 1;
|
||||
margin-left: -12px;
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
.Tab .title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.PinnedTab {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.NavigationBar .settings-btn {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* OPTIONS */
|
||||
|
||||
/* Disable these two snippets below to make pinned tabs wrap when minimised */
|
||||
.PinnedDock {
|
||||
flex-wrap: nowrap! important;
|
||||
}
|
||||
|
||||
.PinnedTab {
|
||||
overflow: hidden !important;
|
||||
min-width: var(--tabs-pinned-width) !important;
|
||||
}
|
||||
@@ -0,0 +1,278 @@
|
||||
:root{
|
||||
--dark-0: #1A1E28;
|
||||
--dark-base: #1F2430;
|
||||
--dark-1: #2A3141;
|
||||
--dark-2: #323A4E;
|
||||
--dark-3: #424D67;
|
||||
--dark-4: #4A5673;
|
||||
--light-0: #E8E7E3;
|
||||
--light-base: #CCCAC2;
|
||||
--light-1: #C3C0B7;
|
||||
--light-2: #B9B7AC;
|
||||
--light-3: #B0ADA0;
|
||||
--light-4: #A7A395;
|
||||
--accent: #FFCC66;
|
||||
--yellow: #695380;
|
||||
--green: #D5FF80;
|
||||
--red: #f28779;
|
||||
--extension-icon-mask: grayscale(85%) invert(30%) sepia(13%) saturate(1019%) hue-rotate(184deg) brightness(95%) contrast(96%);
|
||||
}
|
||||
|
||||
:root.incognito{
|
||||
--dark-0: #1C0E34;
|
||||
--dark-base: #20103c;
|
||||
--dark-1: #2F1D4E;
|
||||
--dark-2: #38225D;
|
||||
--dark-3: #4A2D7B;
|
||||
--dark-4: #53338A;
|
||||
--light-0: #CC6B9C;
|
||||
--light-base: #B9407C;
|
||||
--light-1: #AB3B73;
|
||||
--light-2: #9C3569;
|
||||
--light-3: #8D305E;
|
||||
--light-4: #7D2B54;
|
||||
--accent: #e9207e;
|
||||
--yellow: #C9B336;
|
||||
--green: #36C987;
|
||||
--red: #C9365D;
|
||||
--extension-icon-mask: grayscale(85%) invert(17%) sepia(33%) saturate(3632%) hue-rotate(245deg) brightness(92%) contrast(90%);
|
||||
}
|
||||
|
||||
|
||||
:root{
|
||||
--tab-border-radius: 7px; /* border radius of tabs */
|
||||
--animation-duration: 200ms; /* duration of different animations [0s: turn all animations off] */
|
||||
--spacing: 14px; /* spacing between tabs. [<15px: compact tabs] */
|
||||
--distance-from-edge: 10px; /* distance between tabs, and left-right edges of sidebar*/
|
||||
--hover-text-spacing: 0.1; /* should be left alone. with hover sidebar, if text is visible in collapsed status, increase this */
|
||||
|
||||
--ease-in: cubic-bezier(0.32, 0, 0.67, 0);
|
||||
--ease-out: cubic-bezier(0.22, 1, 0.36, 1);
|
||||
--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
|
||||
|
||||
--collapsed-width: 60px;
|
||||
}
|
||||
|
||||
/************UNCUSTOMIZED CSS************/
|
||||
#tabbar-container #tabbar{
|
||||
margin-bottom: 15px !important;
|
||||
}
|
||||
|
||||
:root, #background{
|
||||
background: var(--dark-base) !important;
|
||||
}
|
||||
|
||||
#all-tabs{
|
||||
margin: 10px var(--distance-from-edge);
|
||||
}
|
||||
|
||||
tab-item:not(.collapsed) {
|
||||
margin-top: var(--spacing);
|
||||
border-radius: var(--tab-border-radius);
|
||||
border: none !important;
|
||||
padding-top: 9px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
tab-item.collapsed{
|
||||
height: 0;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
tab-item:not([data-level="0"]):not(.pinned){
|
||||
border-left: dashed 2px var(--light-4) !important;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
margin-top: calc(var(--spacing)/2);
|
||||
}
|
||||
|
||||
tab-item tab-favicon{
|
||||
left: 0;
|
||||
filter: var(--extension-icon-mask);
|
||||
transition: left calc(var(--animation-duration)*2) var(--ease-out);
|
||||
}
|
||||
|
||||
.highlighter {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
tab-item .label {
|
||||
color: var(--light-2) !important;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
|
||||
tab-item .twisty:before{
|
||||
background: var(--light-3) !important;
|
||||
}
|
||||
|
||||
tab-item.active .label {
|
||||
color: var(--light-0) !important;
|
||||
}
|
||||
|
||||
tab-item.active {
|
||||
background: var(--dark-3) !important;
|
||||
}
|
||||
|
||||
|
||||
tab-item:not(.active).highlighted{
|
||||
background: var(--dark-1) !important;
|
||||
}
|
||||
|
||||
tab-item:not(active):hover {
|
||||
background: var(--dark-1);
|
||||
}
|
||||
|
||||
tab-item:hover tab-closebox {
|
||||
right: 10px;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
tab-item:not(pinned) tab-closebox {
|
||||
position: absolute;
|
||||
margin-top: 2px;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
right: -30px;
|
||||
border-radius: 50%;
|
||||
padding-top: 2px;
|
||||
padding-left: 2px;
|
||||
background: var(--light-4);
|
||||
transition : all var(--animation-duration) var(--ease-out);
|
||||
}
|
||||
|
||||
.sound-button:after {
|
||||
background: var(--light-3) !important;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.counter{
|
||||
color: var(--light-4) !important;
|
||||
background: var(--dark-2) !important;
|
||||
border-radius: 7px;
|
||||
margin: 2px 2px 0px 0px;
|
||||
padding: 0 4px;
|
||||
padding-bottom: 2px;
|
||||
order: -2 !important;
|
||||
}
|
||||
|
||||
.counter:before, .counter:after{ content: ""}
|
||||
|
||||
/********LEFT CONTENT TAB(static)*************/
|
||||
|
||||
:root.left tab-item{
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
:root.left tab-item tab-favicon {
|
||||
transform: scale(120%);
|
||||
margin-right: 5px;
|
||||
left: 80%;
|
||||
}
|
||||
|
||||
:root.left tab-item .label {
|
||||
transform: translateX(10px);
|
||||
right: 28%;
|
||||
}
|
||||
|
||||
|
||||
:root.left tab-item[data-child-ids] .twisty{
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
/********RIGHT CONTENT TAB(hover)*************/
|
||||
|
||||
:root.right tab-item .label {
|
||||
margin-left: 10px;
|
||||
margin-right: calc(var(--collapsed-width)*0.3) !important;
|
||||
}
|
||||
|
||||
:root.right tab-item:not(pinned):hover tab-closebox{
|
||||
right: calc(var(--collapsed-width)*0.3);
|
||||
}
|
||||
|
||||
:root.right tab-item:not([data-level="0"]):not(.pinned){
|
||||
border: none !important;
|
||||
border-right: dashed 2px var(--light-4) !important;
|
||||
border-radius: var(--tab-border-radius);
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
:root.right tab-item.active:not([data-level="0"]):not(.pinned){
|
||||
margin-right: 5px !important;
|
||||
}
|
||||
|
||||
:root.right .sound-button{
|
||||
order: -1 !important;
|
||||
}
|
||||
|
||||
:root.right tab-item.active.pinned {
|
||||
position: relative;
|
||||
left: 190px !important;
|
||||
}
|
||||
|
||||
:root.right tab-item.active.pinned tab-favicon {
|
||||
transform: scale(130%) !important;
|
||||
margin-left: 7px;
|
||||
}
|
||||
|
||||
/***********************************/
|
||||
|
||||
.tab
|
||||
.favicon
|
||||
.favicon-default::before {
|
||||
filter: var(--extension-icon-mask); // change for light theme
|
||||
}
|
||||
|
||||
.tab[data-current-favicon-uri="undefined"]
|
||||
.favicon
|
||||
.favicon-default::before{
|
||||
background: url("chrome://branding/content/identity-icons-brand.svg") no-repeat center !important;
|
||||
mask: none !important;
|
||||
}
|
||||
|
||||
/***********NEW TAB BUTTON**********/
|
||||
|
||||
.newtab-button-box {
|
||||
border: none !important;
|
||||
margin: 0 50px;
|
||||
}
|
||||
|
||||
.newtab-button {
|
||||
border: none !important;
|
||||
border-radius: 8px;
|
||||
padding: 8px 0 !important;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.newtab-button::before{
|
||||
background: var(--light-3) !important;
|
||||
}
|
||||
|
||||
.newtab-action-selector-anchor {
|
||||
border: none !important;
|
||||
margin-right: 10px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.newtab-button:hover {
|
||||
background: var(--dark-1);
|
||||
}
|
||||
|
||||
/**********PINNED TAB***************/
|
||||
|
||||
tab-item.pinned {
|
||||
margin: 5px !important;
|
||||
padding: 5px !important;
|
||||
transition : all 0.1s var(--ease-out);
|
||||
}
|
||||
|
||||
/***********************************/
|
||||
|
||||
#all-tabs {
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
|
||||
|
||||
/* Hide main tabs toolbar */
|
||||
#TabsToolbar {
|
||||
visibility: collapse !important;
|
||||
}
|
||||
|
||||
/*** NAV BAR ***/
|
||||
/* Hide urlbar */
|
||||
#nav-bar {
|
||||
position: relative !important;
|
||||
z-index: 2 !important;
|
||||
height: 2px !important;
|
||||
min-height: 2px !important;
|
||||
margin-bottom: -2px !important;
|
||||
opacity: 0 !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
/* But unfocus it when we invoke it with ctrl+L */
|
||||
#nav-bar:focus-within {
|
||||
height: auto !important;
|
||||
margin-bottom: 0px !important;
|
||||
opacity: 1 !important;
|
||||
overflow: show !important;
|
||||
}
|
||||
|
||||
#urlbar-container {
|
||||
min-height: 0 !important;
|
||||
}
|
||||
|
||||
#urlbar {
|
||||
top: 0 !important;
|
||||
}
|
||||
|
||||
#urlbar-input-container {
|
||||
height: 28px !important;
|
||||
}
|
||||
|
||||
/* hides the sidebar header */
|
||||
#sidebar-header {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.tab[selected="true"] {
|
||||
visibility: collapse;
|
||||
}
|
||||
|
||||
.tabbrowser-tab {
|
||||
visibility: collapse;
|
||||
}
|
||||
|
||||
.tabbrowser-tab[visuallyselected="true"] {
|
||||
visibility: collapse;
|
||||
}
|
||||
|
||||
/* Credits to https://github.com/MrOtherGuy for hthe following snippet*/
|
||||
|
||||
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
|
||||
See the above repository for updates as well as full license text. */
|
||||
|
||||
/* Show sidebar only when the cursor is over it */
|
||||
/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */
|
||||
|
||||
#sidebar-box{
|
||||
--uc-sidebar-width: 44px; /* Only thing I (gale) changed */
|
||||
--uc-sidebar-hover-width: 210px;
|
||||
--uc-autohide-sidebar-delay: 600ms; /* Wait 0.6s before hiding sidebar */
|
||||
position: relative;
|
||||
min-width: var(--uc-sidebar-width) !important;
|
||||
width: var(--uc-sidebar-width) !important;
|
||||
max-width: var(--uc-sidebar-width) !important;
|
||||
z-index:1;
|
||||
}
|
||||
|
||||
#sidebar-box[positionend]{ direction: rtl }
|
||||
#sidebar-box[positionend] > *{ direction: ltr }
|
||||
|
||||
#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr }
|
||||
#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
|
||||
|
||||
#main-window[sizemode="fullscreen"] #sidebar-box{ --uc-sidebar-width: 1px; }
|
||||
|
||||
#sidebar-splitter{ display: none }
|
||||
|
||||
#sidebar-header{ overflow: hidden; /*color: var(--chrome-color, inherit) !important*/}
|
||||
|
||||
#sidebar{
|
||||
transition: min-width 115ms linear var(--uc-autohide-sidebar-delay) !important;
|
||||
min-width: var(--uc-sidebar-width) !important;
|
||||
will-change: min-width;
|
||||
}
|
||||
|
||||
#sidebar-box:hover > #sidebar{ min-width: var(--uc-sidebar-hover-width) !important; transition-delay: 0ms !important }
|
||||
|
||||
.sidebar-panel{
|
||||
/*background-color: transparent !important;
|
||||
color: var(--newtab-text-primary-color) !important;*/
|
||||
}
|
||||
|
||||
.sidebar-panel #search-box{
|
||||
-moz-appearance: none !important;
|
||||
/*background-color: rgba(249,249,250,0.1) !important;
|
||||
color: inherit !important;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Add sidebar divider and give it background */
|
||||
|
||||
#sidebar,
|
||||
#sidebar-header{
|
||||
/*background-color: inherit !important;*/
|
||||
border-inline: 1px solid rgb(80,80,80);
|
||||
border-inline-width: 0px 1px;
|
||||
}
|
||||
|
||||
#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
|
||||
#sidebar-box[positionend] > *{
|
||||
border-inline-width: 1px 0px;
|
||||
}
|
||||
|
||||
/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
|
||||
|
||||
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{ inset-inline: auto 0px !important; }
|
||||
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{ margin-inline: 0px !important; border-left-style: solid !important; }
|
||||
@@ -0,0 +1,275 @@
|
||||
/* @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); */
|
||||
|
||||
@-moz-document url(chrome://browser/content/browser.xul),
|
||||
url(chrome://browser/content/browser.xhtml)
|
||||
{
|
||||
/*** TREE STYLE TABS ***/
|
||||
/* Hide main tabs toolbar */
|
||||
#TabsToolbar {
|
||||
visibility: collapse !important;
|
||||
}
|
||||
/* Sidebar min and max width removal */
|
||||
:root {
|
||||
/* expanded width of the sidebar.
|
||||
used for userChrome-static, and hover */
|
||||
--sidebar-width: 250px;
|
||||
/* initial width of the sidebar.
|
||||
advised not to change since tst css relies on this value*/
|
||||
--sidebar-collapsed-width: 60px;
|
||||
}
|
||||
|
||||
#sidebar-box {
|
||||
z-index: 1000 !important;
|
||||
position: relative !important;
|
||||
min-width: var(--sidebar-collapsed-width) !important;
|
||||
max-width: var(--sidebar-collapsed-width) !important;
|
||||
}
|
||||
|
||||
#sidebar-header,
|
||||
#sidebar-splitter {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* inner width = expanded width & move inner to only show initial-width long section */
|
||||
#sidebar-box #sidebar {
|
||||
position: absolute !important;
|
||||
min-width: var(--sidebar-width) !important;
|
||||
max-width: var(--sidebar-width) !important;
|
||||
width: var(--sidebar-width) !important;
|
||||
transform: translateX(calc(var(--sidebar-collapsed-width) - var(--sidebar-width)));
|
||||
transition: all var(--transition-time) var(--ease-out);
|
||||
}
|
||||
|
||||
/* move inner to show entire sidebar */
|
||||
#sidebar-box #sidebar:hover {
|
||||
transform: translateX(0) !important;
|
||||
box-shadow: 2px 0 33px -3px var(--sidebar-shadow-color);
|
||||
}
|
||||
|
||||
#sidebar-box[sidebarcommand="viewBookmarksSidebar"] #sidebar {
|
||||
transform: translateX(0) !important;
|
||||
box-shadow: 2px 0 33px -3px var(--sidebar-shadow-color);
|
||||
}
|
||||
/* hide sidebar header for tree style tabs sidebar */
|
||||
#sidebar-box #sidebar-header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
border-right: solid var(--dividers) var(--sidebar-shadow-color) !important;
|
||||
}
|
||||
|
||||
toolbar {
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
#tabbrowser-arrowscrollbox {
|
||||
margin: 7px 14px 7px 14px;
|
||||
}
|
||||
|
||||
.tabbrowser-tab::after {
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
.tab-background .tab-line,
|
||||
.tab-background .tab-bottom-line {
|
||||
display: none;
|
||||
}
|
||||
|
||||
tab[selected="true"] > .tab-stack > .tab-background {
|
||||
background: var(--tl-tab-background-gradient, var(--arrowpanel-dimmed-further)) !important;
|
||||
}
|
||||
|
||||
tab:not([selected="true"]) > .tab-stack:hover > .tab-background {
|
||||
background: var(--arrowpanel-background) !important;
|
||||
}
|
||||
|
||||
.tab-stack {
|
||||
border-radius: 7px;
|
||||
margin-right: 5px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tab-stack .tab-icon-image,
|
||||
.tab-stack .tab-label-container {
|
||||
transform: translateX(0px);
|
||||
transition: all var(--tl-animation-duration) var(--ease-out) !important;
|
||||
}
|
||||
|
||||
.tab-stack .tab-icon-image {
|
||||
transition-duration: calc(var(--tl-animation-duration) * 2) !important;
|
||||
}
|
||||
|
||||
tab:not([pinned="true"]) .tab-stack:hover .tab-icon-image {
|
||||
transform: translateX(-25px) !important;
|
||||
}
|
||||
|
||||
.tab-stack:hover .tab-label-container {
|
||||
transform: translateX(-23px) !important;
|
||||
}
|
||||
|
||||
/* containers */
|
||||
tab:not([selected="true"]).identity-color-blue > .tab-stack,
|
||||
tab:not([selected="true"]).identity-color-orange > .tab-stack,
|
||||
tab:not([selected="true"]).identity-color-green > .tab-stack,
|
||||
tab:not([selected="true"]).identity-color-pink > .tab-stack{
|
||||
border-radius: 0 0 7px 7px !important;
|
||||
}
|
||||
|
||||
tab[selected="true"].identity-color-blue > .tab-stack .tab-label-container,
|
||||
tab[selected="true"].identity-color-orange > .tab-stack .tab-label-container,
|
||||
tab[selected="true"].identity-color-green > .tab-stack .tab-label-container,
|
||||
tab[selected="true"].identity-color-pink > .tab-stack .tab-label-container{
|
||||
color: #000 !important;
|
||||
}
|
||||
|
||||
/* blue */
|
||||
tab[selected="true"].identity-color-blue > .tab-stack > .tab-background{
|
||||
background: linear-gradient(to right, #3182CE , #0BC5EA) !important;
|
||||
}
|
||||
|
||||
tab:not([selected="true"]).identity-color-blue > .tab-stack > .tab-background{
|
||||
border-top: solid 4px #63B3ED !important;
|
||||
}
|
||||
|
||||
/* orange */
|
||||
tab[selected="true"].identity-color-orange > .tab-stack > .tab-background{
|
||||
background: linear-gradient(to right, #DD6B20 , #F56565) !important;
|
||||
}
|
||||
|
||||
tab:not([selected="true"]).identity-color-orange > .tab-stack > .tab-background{
|
||||
border-top: solid 4px #F6AD55 !important;
|
||||
}
|
||||
|
||||
/* green */
|
||||
tab[selected="true"].identity-color-green > .tab-stack > .tab-background{
|
||||
background: linear-gradient(to right, #38A169 , #38B2AC) !important;
|
||||
}
|
||||
|
||||
tab:not([selected="true"]).identity-color-green > .tab-stack > .tab-background{
|
||||
border-top: solid 4px #68D391 !important;
|
||||
}
|
||||
|
||||
/* pink */
|
||||
tab[selected="true"].identity-color-pink > .tab-stack > .tab-background{
|
||||
background: linear-gradient(to right, #D53F8C , #9F7AEA) !important;
|
||||
}
|
||||
|
||||
tab:not([selected="true"]).identity-color-pink > .tab-stack > .tab-background{
|
||||
border-top: solid 4px #F687B3 !important;
|
||||
}
|
||||
|
||||
|
||||
.tab-stack .tab-close-button {
|
||||
border-radius: 50%;
|
||||
margin-left: -20px !important;
|
||||
background: var(--lwt-text-color);
|
||||
fill: var(--lwt-accent-color) !important;
|
||||
transform: translateX(30px) !important;
|
||||
transition: all var(--tl-animation-duration) var(--ease-out) !important;
|
||||
}
|
||||
|
||||
.tab-stack:hover .tab-close-button {
|
||||
transform: translateX(0px) !important;
|
||||
}
|
||||
|
||||
#tabbrowser-tabs[closebuttons="activetab"] > #tabbrowser-arrowscrollbox >
|
||||
.tabbrowser-tab > .tab-stack > .tab-content > .tab-close-button:not([selected="true"]){
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
/* hide tabs */
|
||||
.tabbrowser-tab {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#tabs-newtab-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.titlebar-spacer {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
|
||||
/*** TAB BAR ***/
|
||||
/* Ensure tab doesn't show through auto-completion popup */
|
||||
.tabbrowser-tab { z-index: 0 !important; }
|
||||
/* Ensure tab "spacers" don't show through the completion window */
|
||||
#tabbrowser-arrowscrollbox > spacer { z-index: -1 !important; }
|
||||
#mainPopupSet { z-index: 9999 !important; }
|
||||
|
||||
/* Hide tabbar if only one tab */
|
||||
@import url(./css/tabs-hide-if-only-one.css);
|
||||
|
||||
|
||||
/* Remove the colored overline on the focused tab */
|
||||
.tabbrowser-tab .tab-line { background: none !important; }
|
||||
|
||||
/* Replace favicon on tabs with close button on mouse hover */
|
||||
.tabbrowser-tab:not(:hover) .tab-close-button,
|
||||
.tabbrowser-tab:not([pinned]):hover .tab-icon-image { display: none !important; }
|
||||
.tabbrowser-tab:not([pinned]):hover .tab-close-button { display:block !important; }
|
||||
|
||||
.tabbrowser-tab:hover .tab-throbber,
|
||||
.tabbrowser-tab:hover .tab-icon-image,
|
||||
.tabbrowser-tab:hover .tab-sharing-icon-overlay,
|
||||
.tabbrowser-tab:hover .tab-icon-overlay,
|
||||
.tabbrowser-tab:hover .tab-label-container,
|
||||
.tabbrowser-tab:hover .tab-icon-sound {
|
||||
-moz-box-ordinal-group: 2 !important;
|
||||
}
|
||||
|
||||
.tabbrowser-tab .tab-close-button {
|
||||
margin-left: -2px !important;
|
||||
margin-right: 4px !important;
|
||||
}
|
||||
|
||||
.tab-close-button:hover {
|
||||
fill-opacity: 0 !important;
|
||||
}
|
||||
|
||||
.tabbrowser-tab::after,
|
||||
.tabbrowser-tab::before {
|
||||
border-left: none !important;
|
||||
border-right: none !important;
|
||||
}
|
||||
|
||||
.scrollbutton-up[orient="horizontal"]~spacer { border-width: 0px; opacity: 0 }
|
||||
|
||||
|
||||
/*** NAV BAR ***/
|
||||
/* Hide urlbar */
|
||||
#nav-bar {
|
||||
position: relative !important;
|
||||
z-index: 2 !important;
|
||||
height: 2px !important;
|
||||
min-height: 2px !important;
|
||||
margin-bottom: -2px !important;
|
||||
opacity: 0 !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
/* But unfocus it when we invoke it with ctrl+L */
|
||||
#nav-bar:focus-within {
|
||||
height: auto !important;
|
||||
margin-bottom: 0px !important;
|
||||
opacity: 1 !important;
|
||||
overflow: show !important;
|
||||
}
|
||||
|
||||
#urlbar-container {
|
||||
min-height: 0 !important;
|
||||
}
|
||||
|
||||
#urlbar {
|
||||
top: 0 !important;
|
||||
}
|
||||
|
||||
#urlbar-input-container {
|
||||
height: 28px !important;
|
||||
}
|
||||
|
||||
/*** Load local overrides ***/
|
||||
@import url(./userChrome.local.css);
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
|
||||
*.lisp diff=lisp
|
||||
*.el diff=lisp
|
||||
*.org diff=org
|
||||
@@ -0,0 +1,48 @@
|
||||
[user]
|
||||
name = Anish Lakhwara
|
||||
email = anish+git@lakhwara.com
|
||||
[core]
|
||||
whitespace = trailing-space
|
||||
[init]
|
||||
defaultBranch = main
|
||||
[github]
|
||||
user = chickensoupwithrice
|
||||
[gitlab]
|
||||
user =
|
||||
[rebase]
|
||||
autosquash = true
|
||||
[push]
|
||||
default = current
|
||||
[pull]
|
||||
rebase = true
|
||||
[alias]
|
||||
unadd = reset HEAD
|
||||
# data analysis
|
||||
ranked-authors = !git authors | sort | uniq -c | sort -n
|
||||
emails = !git log --format="%aE" | sort -u
|
||||
email-domains = !git log --format="%aE" | awk -F'@' '{print $2}' | sort -u
|
||||
# pretty log
|
||||
ls = !git log --graph --abbrev-commit --decorate --color=always --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) - %C(dim red)%an%C(reset)%C(bold yellow)%d%C(reset)' --all
|
||||
[filter "lfs"]
|
||||
required = true
|
||||
smudge = git-lfs smudge -- %f
|
||||
process = git-lfs filter-process
|
||||
clean = git-lfs clean -- %f
|
||||
[url "https://github.com/"]
|
||||
insteadOf = gh:
|
||||
[url "git@github.com:"]
|
||||
insteadOf = ssh+gh:
|
||||
[url "git@github.com:chickensoupwithrice/"]
|
||||
insteadOf = gh:/
|
||||
[url "https://gitlab.com/"]
|
||||
insteadOf = gl:
|
||||
[url "https://gist.github.com/"]
|
||||
insteadOf = gist:
|
||||
[url "https://bitbucket.org/"]
|
||||
insteadOf = bb:
|
||||
[url "https://git.v0.com"]
|
||||
insteadOf = v0:
|
||||
[diff "lisp"]
|
||||
xfuncname = "^(((;;;+ )|\\(|([ \t]+\\(((cl-|el-patch-)?def(un|var|macro|method|custom)|gb/))).*)$"
|
||||
[diff "org"]
|
||||
xfuncname = "^(\\*+ +.*)$"
|
||||
@@ -0,0 +1,98 @@
|
||||
{
|
||||
#xdg.configFile = {
|
||||
# "git/config".source = ./config;
|
||||
# "git/ignore".source = ./ignore;
|
||||
# "git/attributes".source = ./attributes;
|
||||
#};
|
||||
|
||||
programs.lazygit.enable = true;
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "Anish Lakhwara";
|
||||
userEmail = "anish+git@lakhwara.com";
|
||||
delta.enable = true;
|
||||
# TODO enable signing
|
||||
|
||||
ignores = [
|
||||
"*~"
|
||||
"*.*~"
|
||||
"\\#*"
|
||||
".\\#*"
|
||||
"*.swp"
|
||||
".*.sw[a-z]"
|
||||
"*.un~"
|
||||
".netrwhist"
|
||||
".vim/*"
|
||||
".DS_Store?"
|
||||
".DS_Store"
|
||||
".CFUserTextEncoding"
|
||||
".Trash"
|
||||
".Xauthority"
|
||||
"thumbs.db"
|
||||
"Thumbs.db"
|
||||
"Icon?"
|
||||
".ccls-cache/"
|
||||
".sass-cache/"
|
||||
"__pycache__/"
|
||||
"*.class"
|
||||
"*.exe"
|
||||
"*.o"
|
||||
"*.pyc"
|
||||
"*.elc"
|
||||
".nrepl-port"
|
||||
".envrc"
|
||||
".lsp/*"
|
||||
".direnv/*"
|
||||
".clj-kondo/*"
|
||||
".cpcache/*"
|
||||
".tmp"
|
||||
".direnv"
|
||||
"result"
|
||||
];
|
||||
|
||||
extraConfig = {
|
||||
pull.rebase = false;
|
||||
init.defaultBranch = "main";
|
||||
};
|
||||
|
||||
aliases = {
|
||||
a = "add -p";
|
||||
co = "checkout";
|
||||
cob = "checkout -b";
|
||||
f = "fetch -p";
|
||||
c = "commit -v";
|
||||
p = "push";
|
||||
# po = "push -u origin "; TODO push current branch to main
|
||||
ba = "branch -a";
|
||||
bd = "branch -d";
|
||||
bD = "branch -D";
|
||||
d = "diff";
|
||||
dc = "diff --cached";
|
||||
ds = "diff --staged";
|
||||
r = "restore";
|
||||
rs = "restore --staged";
|
||||
st = "status -sb";
|
||||
|
||||
# reset
|
||||
soft = "reset --soft";
|
||||
hard = "reset --hard";
|
||||
s1ft = "soft HEAD~1";
|
||||
h1rd = "hard HEAD~1";
|
||||
|
||||
# logging
|
||||
lg =
|
||||
"log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
|
||||
plog =
|
||||
"log --graph --pretty='format:%C(red)%d%C(reset) %C(yellow)%h%C(reset) %ar %C(green)%aN%C(reset) %s'";
|
||||
tlog =
|
||||
"log --stat --since='1 Day Ago' --graph --pretty=oneline --abbrev-commit --date=relative";
|
||||
rank = "shortlog -sn --no-merges";
|
||||
authors = "authors | sort | uniq -c | sort -n";
|
||||
ls = "log --graph --abbrev-commit --decorate --color=always --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) - %C(dim red)%an%C(reset)%C(bold yellow)%d%C(reset)' --all";
|
||||
|
||||
# delete merged branches
|
||||
bdm = "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
# For emacs:
|
||||
*~
|
||||
*.*~
|
||||
\#*
|
||||
.\#*
|
||||
|
||||
# For vim:
|
||||
*.swp
|
||||
.*.sw[a-z]
|
||||
*.un~
|
||||
.netrwhist
|
||||
.vim/*
|
||||
|
||||
# OS generated files #
|
||||
######################
|
||||
.DS_Store?
|
||||
.DS_Store
|
||||
.CFUserTextEncoding
|
||||
.Trash
|
||||
.Xauthority
|
||||
thumbs.db
|
||||
Thumbs.db
|
||||
Icon?
|
||||
|
||||
# Code stuffs #
|
||||
###############
|
||||
.ccls-cache/
|
||||
.sass-cache/
|
||||
__pycache__/
|
||||
|
||||
# Compiled thangs #
|
||||
###################
|
||||
*.class
|
||||
*.exe
|
||||
*.o
|
||||
*.pyc
|
||||
*.elc
|
||||
@@ -0,0 +1,852 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
customPlugins = {
|
||||
vim-zettel = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "vim-zettel";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "michal-h21";
|
||||
repo = "vim-zettel";
|
||||
rev = "929d90eec62e6f693c2702d2b6f76a93f2f1689d";
|
||||
sha256 = "1fzKmknfVlEYwqeXgbKITbb2/PJ023iJyMz6vak3qh4=";
|
||||
};
|
||||
};
|
||||
lsp-format = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "lsp-format";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "lukas-reineke";
|
||||
repo = "lsp-format.nvim";
|
||||
rev = "84e117b99bb2bc0d0c8122e2b256046f046f8aff";
|
||||
sha256 = "rs3NTZwWdsmBGXnrgUeVxUiNjbN/ULxJHifPYJD9mT4=";
|
||||
};
|
||||
};
|
||||
nvim-luapad = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
name = "nvim-luapad";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "rafcamlet";
|
||||
repo = "nvim-luapad";
|
||||
rev = "9815e2659ce8e2ef4b55e401531cf09b6423e0ea";
|
||||
sha256 = "gMaS5YFi3+gmUIfkCMEt9vhm8XSgv54Cquv5+WCWeTo=";
|
||||
};
|
||||
};
|
||||
leap = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
name = "leap";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "ggandor";
|
||||
repo = "leap.nvim";
|
||||
rev = "1bb1fec369b1e9ae96e6ff1b829ea9272c51f844";
|
||||
sha256 = "dH0v1D5q5OlMLA/omTDMb/taKyIgQ5VfVMYXJ609k/k=";
|
||||
};
|
||||
};
|
||||
nvim-navic = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "nvim-navic";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "SmiteshP";
|
||||
repo = "nvim-navic";
|
||||
rev = "096b23e73c84a653fd317c0c10261875fa573a6d";
|
||||
sha256 = "vX7ZVJxgatIicmijehtaRvyHxk1i4gFfXrbPM/+VoFc=";
|
||||
};
|
||||
};
|
||||
my-lualine-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "lualine.nvim";
|
||||
version = "2022-05-13";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvim-lualine";
|
||||
repo = "lualine.nvim";
|
||||
rev = "a4e4517ac32441dd92ba869944741f0b5f468531";
|
||||
sha256 = "18q935aicddai7j99ln61wz1di6lhwzs11x8fxgq704kfap1l2fj";
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-lualine/lualine.nvim/";
|
||||
};
|
||||
my-which-key-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "which-key.nvim";
|
||||
version = "2022-05-04";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "folke";
|
||||
repo = "which-key.nvim";
|
||||
rev = "bd4411a2ed4dd8bb69c125e339d837028a6eea71";
|
||||
sha256 = "0vf685xgdb967wmvffk1pfrvbhg1jkvzp1kb7r0vs90mg8gpv1aj";
|
||||
};
|
||||
meta.homepage = "https://github.com/folke/which-key.nvim/";
|
||||
};
|
||||
my-conjure = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "conjure";
|
||||
version = "2022-05-04";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "olical";
|
||||
repo = "conjure";
|
||||
rev = "2e7f449d06753f2996e186954e96afc60edd5862";
|
||||
sha256 = "ZV0vPYiZI5/3Isw2l7rrLuiO+kA9G0vrA6OxHFkLTFw=";
|
||||
};
|
||||
};
|
||||
scnvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "scnvim";
|
||||
version = "2022-06-04";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "davidgranstrom";
|
||||
repo = "scnvim";
|
||||
rev = "746cc0db820d02a9c36b8f9ba2eac9725fa73107";
|
||||
sha256 = "kvSwS6FNUY2Ue84NhWLLcm0ldLMSp4WqQ7s6TUoX6Cc=";
|
||||
};
|
||||
};
|
||||
yuck-vim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "yuck.vim";
|
||||
version = "2021-08-09";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "elkowar";
|
||||
repo = "yuck.vim";
|
||||
rev = "6dc3da77c53820c32648cf67cbdbdfb6994f4e08";
|
||||
sha256 = "lp7qJWkvelVfoLCyI0aAiajTC+0W1BzDhmtta7tnICE=";
|
||||
};
|
||||
};
|
||||
nvim-parinfer = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-parinfer";
|
||||
version = "v1.2.0";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "gpanders";
|
||||
repo = "nvim-parinfer";
|
||||
rev = "82bce5798993f4fe5ced20e74003b492490b4fe8";
|
||||
sha256 = "Dlzfp3CZTzq8zQeHByWf3ER6/Em+KNGYNI4Z17ui8Lc=";
|
||||
};
|
||||
};
|
||||
my-marks = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "marks";
|
||||
version = "2022-08-31";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "chentoast";
|
||||
repo = "marks.nvim";
|
||||
rev = "b27cbb78e9082229590b396d3ae4fe07f1aeafe0";
|
||||
sha256 = "XdbgIWuAHNdTfyKDrKmQVq5oSbBoi56DpwtgOqhScAk=";
|
||||
};
|
||||
};
|
||||
my-gitsigns = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "gitsigns";
|
||||
version = "v0.5";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "lewis6991";
|
||||
repo = "gitsigns.nvim";
|
||||
rev = "f98c85e7c3d65a51f45863a34feb4849c82f240f";
|
||||
sha256 = "FgNSwvW7Bk+eKutMj0zqEorJ3+ijCALtOXs2OYiSX1I=";
|
||||
};
|
||||
};
|
||||
my-fterm = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "fterm";
|
||||
version = "2022-07-22";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "numToStr";
|
||||
repo = "FTerm.nvim";
|
||||
rev = "efd10656724a269e21ba68d65e2b058a4e606424";
|
||||
sha256 = "rR6KDwj58aYfyaSsoUy75536SdBhk394yspCUl/hzfE=";
|
||||
};
|
||||
};
|
||||
my-nvim-peekup = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-peekup";
|
||||
version = "0.1.0";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "gennaro-tedesco";
|
||||
repo = "nvim-peekup";
|
||||
rev = "73a67c1ee3b5a7ea7b42d85399bf093f428c8ee3";
|
||||
sha256 = "czKjJgCpvRSdtR7rNGlJrluDgPIdx94KUyx33op5gdY=";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
my-python-packages = python-packages: with python-packages; [
|
||||
tasklib
|
||||
pynvim
|
||||
six
|
||||
python-lsp-server
|
||||
python-lsp-black
|
||||
pylsp-mypy
|
||||
black
|
||||
# other python packages you want
|
||||
];
|
||||
python-with-my-packages = pkgs.python3.withPackages my-python-packages;
|
||||
in
|
||||
{
|
||||
home.sessionVariables.EDITOR = "nvim";
|
||||
home.shellAliases = {
|
||||
k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD";
|
||||
kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD";
|
||||
};
|
||||
# Add %update to the highlight clause for vimwiki files
|
||||
home.file.".config/nvim/after/syntax/vimwiki.vim".text = ''
|
||||
" match with %update
|
||||
syntax match VimwikiPlaceholder /^\s*%update\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
|
||||
'';
|
||||
|
||||
#environment.systemPackages = with customPlugins; [ tidal ];
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
|
||||
extraConfig = ''
|
||||
" so our custom files still get included
|
||||
set runtimepath+=/home/anish/.config/nvim/
|
||||
set tabstop=2
|
||||
set showmatch
|
||||
set shiftwidth=2
|
||||
set noexpandtab
|
||||
set autoindent
|
||||
set undofile
|
||||
set signcolumn=auto:4
|
||||
set title
|
||||
|
||||
" set foldmethod=indent " fold based on indent
|
||||
set number
|
||||
set nocompatible
|
||||
set relativenumber
|
||||
set showtabline=2
|
||||
set noexpandtab
|
||||
set autowriteall
|
||||
set list lcs=tab:\|\
|
||||
filetype plugin on
|
||||
|
||||
" include - in word to move across easier in lisp / clojure
|
||||
set iskeyword+=-
|
||||
|
||||
set termguicolors
|
||||
colorscheme ayu-mirage
|
||||
|
||||
" set spell
|
||||
set spelllang=en_gb
|
||||
set ignorecase
|
||||
set smartcase
|
||||
set incsearch
|
||||
" if hidden is not set, TextEdit might fail.
|
||||
set hidden
|
||||
" Some servers have issues with backup files, see #649
|
||||
set nobackup
|
||||
set nowritebackup
|
||||
" Better display for messages
|
||||
set cmdheight=2
|
||||
" You will have bad experience for diagnostic messages when it's default 4000.
|
||||
set updatetime=300
|
||||
" don't give |ins-completion-menu| messages.
|
||||
set shortmess+=c
|
||||
" always show signcolumns
|
||||
set signcolumn=yes
|
||||
" highlight row
|
||||
set cursorline
|
||||
|
||||
let mapleader = "\<Space>"
|
||||
let maplocalleader = ","
|
||||
|
||||
" window
|
||||
nmap <leader>wh :topleft vnew<CR>
|
||||
nmap <leader>wl :botright vnew<CR>
|
||||
nmap <leader>wk :topleft new<CR>
|
||||
nmap <leader>wj :botright new<CR>
|
||||
|
||||
" tabs
|
||||
nmap <leader>rt :retab!<CR>
|
||||
vmap <leader>rt :retab!<CR>
|
||||
|
||||
" moving splits with vim movements.
|
||||
:tnoremap <A-h> <C-\><C-N><C-w>h
|
||||
:tnoremap <A-j> <C-\><C-N><C-w>j
|
||||
:tnoremap <A-k> <C-\><C-N><C-w>k
|
||||
:tnoremap <A-l> <C-\><C-N><C-w>l
|
||||
:inoremap <A-h> <C-\><C-N><C-w>h
|
||||
:inoremap <A-j> <C-\><C-N><C-w>j
|
||||
:inoremap <A-k> <C-\><C-N><C-w>k
|
||||
:inoremap <A-l> <C-\><C-N><C-w>l
|
||||
:nnoremap <A-h> <leader>h
|
||||
:nnoremap <A-j> <leader>j
|
||||
:nnoremap <A-k> <leader>k
|
||||
:nnoremap <A-l> <leader>l
|
||||
:nnoremap <F5> "=strftime("%Y-%m-%d %H:%M")<CR>
|
||||
:inoremap <F5> <C-R>=strftime("%Y-%m-%d %H:%M")<CR>
|
||||
:inoremap <F4> <C-R>=strftime("%H:%M")<CR>
|
||||
|
||||
" tidal nvim terminal
|
||||
let g:tidal_target = "terminal"
|
||||
|
||||
" latex
|
||||
" let g:tex_flavor='latex'
|
||||
" let g:vimtex_view_method='zathura'
|
||||
" let g:vimtex_quickfix_mode=0
|
||||
" set conceallevel=1
|
||||
" let g:tex_conceal='abdmg'
|
||||
|
||||
" telescope
|
||||
" Find files using Telescope command-line sugar.
|
||||
nnoremap <leader>ff <cmd>Telescope find_files<cr>
|
||||
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
|
||||
nnoremap <leader>fb <cmd>Telescope buffers<cr>
|
||||
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
|
||||
nnoremap <leader>ft <cmd>Telescope tags<cr>
|
||||
|
||||
" exit normal mode in terminal
|
||||
:tnoremap <C-n> <C-\><C-n>
|
||||
|
||||
" Sexp in Conjure (since it's fennel)
|
||||
let g:sexp_filetypes = "clojure,scheme,lisp,janet,fennel,yuck"
|
||||
let g:conjure#filetype#fennel = "conjure.client.fennel.stdio"
|
||||
|
||||
let g:rainbow_active = 0
|
||||
autocmd BufReadPost,BufNewFile c,clj,cljs RainbowParenthesesToggleAll
|
||||
|
||||
" general commands
|
||||
map <leader>t :NERDTreeToggle<CR>
|
||||
map <leader>s :w<CR>
|
||||
map <leader>q :q<CR>
|
||||
map <leader>r :RainbowParenthesesToggleAll<CR>
|
||||
nnoremap <BS> :noh<CR>
|
||||
map Q <Nop>
|
||||
nnoremap Y y$
|
||||
nnoremap <leader>n :vnew<CR>
|
||||
" center moving
|
||||
nnoremap n nzzzv
|
||||
nnoremap N Nzzzv
|
||||
nnoremap J mzJ'z
|
||||
" undo points
|
||||
inoremap , ,<c-g>u
|
||||
inoremap . .<c-g>u
|
||||
inoremap ? ?<c-g>u
|
||||
inoremap ! !<c-g>u
|
||||
inoremap ) )<c-g>u
|
||||
inoremap [ [<c-g>u
|
||||
inoremap ] ]<c-g>u
|
||||
inoremap { {<c-g>u
|
||||
inoremap ( (<c-g>u
|
||||
inoremap } }<c-g>u
|
||||
" moving text
|
||||
vnoremap J :m '>+1<CR>gv=gv
|
||||
vnoremap K :m '>-2<CR>gv=gv
|
||||
inoremap <c-j> <esc>:m .+1<CR>==
|
||||
inoremap <c-k> <esc>:m .-2<CR>==
|
||||
nnoremap <leader>j <esc>:m .+1<CR>==
|
||||
nnoremap <leader>k <esc>:m .-2<CR>==
|
||||
" Pasting
|
||||
:map <leader>sy :!xclip -i<CR><CR>
|
||||
:vmap <leader>sy "*y
|
||||
:map <leader>sp :r!xclip -o<CR>
|
||||
|
||||
" barbar
|
||||
nnoremap <silent> gT :BufferPrevious<CR>
|
||||
nnoremap <silent> gt :BufferNext<CR>
|
||||
nnoremap <silent> gj :BufferPick<CR>
|
||||
nnoremap <silent> gq :BufferClose<CR>
|
||||
|
||||
" git
|
||||
nnoremap <leader>ga :G fetch --all
|
||||
nmap <leader>gs :G<CR>
|
||||
nmap <leader>gl :diffget //3<CR>
|
||||
nmap <leader>gh :diffget //2<CR>
|
||||
nmap <leader>gb :GBranches<CR>
|
||||
nnoremap <leader>gp :Git! push<CR>
|
||||
nnoremap <leader>gd :Gdiff<CR>
|
||||
nnoremap <leader>gc :G commit -v -q %:p<CR>
|
||||
|
||||
" kitaab
|
||||
map <leader>cz :VimwikiIndex<CR>:ZettelNew
|
||||
map <leader>zs :ZettelSearch<CR>
|
||||
map <leader>zn :ZettelNew<CR>
|
||||
map <leader>zo :ZettelOpen<CR>
|
||||
map <leader>zf :Telescope oldfiles only_cwd=true<CR>
|
||||
map <leader>wt :VimwikiMakeTomorrowDiaryNote
|
||||
map <leader>wd :VimwikiMakeYesterdayDiaryNote
|
||||
map <leader>zd :Goyo<CR>:lua require('cmp').setup.buffer { enabled = false }<CR>
|
||||
let g:vimwiki_list = [{ 'path': '~/kitaab/vimwiki', 'auto_tags': 1, 'auto_diary_index': 1, 'auto_generate_links': 1 }]
|
||||
let g:sync_taskwarrior = 0
|
||||
let g:zettel_format = "%y%m%d-%H%M"
|
||||
let g:vimwiki_list = [{'path': '~/kitaab/vimwiki', 'nested_syntaxes': {'python': 'python', 'c++': 'cpp', 'nix': 'nix', 'bash': 'sh'}}]
|
||||
|
||||
let g:mapleader="\<Space>"
|
||||
|
||||
" fzf
|
||||
" not sure we even use this
|
||||
let g:fzf_layout = { 'window': { 'width': 0.8, 'height': 0.8 } }
|
||||
|
||||
" lsp commands
|
||||
nnoremap <leader>vd :lua vim.lsp.buf.definition()<CR>
|
||||
nnoremap <leader>vi :lua require('telescope.builtin').lsp_implementation()<CR>
|
||||
nnoremap <leader>vsh :lua vim.lsp.buf.signature_help()<CR>
|
||||
nnoremap <leader>vrr :lua require('telescope.builtin').lsp_references()<CR>
|
||||
nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR>
|
||||
nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR>
|
||||
nnoremap <leader>vca :lua vim.lsp.buf.code_action()<CR>
|
||||
nnoremap <leader>vsd :lua rim.lsp.diagnostic.show_line_diagnostics(); vim.lsp.util.show_line_diagnostics()<CR>
|
||||
nnoremap <leader>vn :lua vim.lsp.diagnostic.goto_next()<CR>
|
||||
nnoremap <leader>vll :call LspLocationList()<CR>
|
||||
nnoremap <leader>va :lua require('telescope.builtin').lsp_code_actions(require('telescope.themes').get_cursor())<cr>
|
||||
|
||||
" dashboard
|
||||
let g:dashboard_custom_header = [
|
||||
\' ',
|
||||
\' ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⣿⠁⠀⠀⠀⠀⠀⠀⠀⢠⣿⣶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣧⠀⠀⠀⠀⠀⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⢴⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⡆⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠈⢿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⢀⣀⡤⠤⠤⠖⣒⠒⡖⠲⡦⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣤⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⣠⢶⠉⠩⢀⣠⡤⠤⠯⠬⠥⣼⣅⡃⠸⠉⠛⡷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⢶⢻⢻⢹⣃⣨⣧⣤⣴⣹⣉⠛⢶⣄⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⣰⠞⠁⢈⡤⠚⠉⠀⠀⠘⣆⡀⠀⡀⠀⠉⠙⠲⢼⣰⢡⣟⢶⣄⠀⠀⠀⠀⠀⠀⠀⢀⣠⠶⡟⣇⣺⠾⠋⠉⠁⠀⠀⠀⠀⠀⠉⠙⠳⢿⣷⣄⠀⠀⠀⠀ ',
|
||||
\'⠀⢀⡼⡁⢸⣰⠏⠀⠀⠀⠀⠀⠀⠘⡞⠀⠀⠀⠀⠀⠀⠀⠉⠻⣿⡞⡼⣷⣄⠀⠀⠀⣠⣾⠛⠄⣷⠟⠋⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⢠⠀⠈⠻⣧⠀⠀⠀ ',
|
||||
\'⠀⡼⠁⢀⡼⠁⠀⠀⠀⣀⠤⠖⠛⠛⠛⠛⠓⠲⠤⣄⡀⠀⠀⠀⠀⠻⢷⣿⣿⣷⣤⣾⠹⢌⡷⠛⠁⠀⠀⠀⠀⣀⡤⠔⠛⠉⠉⠈⠉⠛⠲⣄⣇⠀⠀⠙⣷⠀⠀ ',
|
||||
\'⢰⠷⣀⡜⠁⠀⠀⢀⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠲⣤⡀⢀⡤⠚⢻⣿⣿⢣⢈⡴⠋⠀⠀⠀⠀⣠⠔⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⡇⠀⠀⠘⣇⠀ ',
|
||||
\'⣾⣇⣹⢃⡀⠀⢀⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣷⣾⣞⡇⢹⡼⠋⠀⠀⠀⢠⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⠀⠀⠀⢹⠀ ',
|
||||
\'⢹⢀⣿⠘⡇⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⢟⢱⢹⡾⠋⠀⠀⠀⣠⣾⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⢸⡀ ',
|
||||
\'⢸⣅⣯⠀⣆⠀⢸⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⢻⣹⢸⡼⠋⠀⠀⠀⢀⡼⢻⣻⣿⡽⡹⠳⢤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠀⠀⠀⢸⠀ ',
|
||||
\'⠈⣿⣿⡀⠘⠀⠈⣿⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⢾⢻⢿⣿⠟⠋⠀⠀⠀⠀⣠⣟⠘⣿⡏⠋⠻⢥⣃⡎⣽⠻⢦⣄⣀⠀⠀⠀⠀⠀⣀⡴⣾⠃⠀⠀⠀⡼⠀ ',
|
||||
\'⠀⠙⣎⣧⠀⠀⠀⠈⢻⣍⠓⠲⣶⣶⣶⣶⡖⢋⣿⣏⡧⠞⠋⠁⠀⠀⠀⢀⣤⠞⠁⠈⠻⣷⣧⠀⡀⠀⠉⠓⢧⣇⢰⢈⠙⢻⠒⡖⢲⠚⣍⡴⠃⠀⠀⠀⣴⠃⠀ ',
|
||||
\'⠀⠀⠙⢾⣷⡀⠀⠀⠀⠈⠙⠓⠾⠿⠾⠿⠿⠚⠉⠁⠀⠀⠀⠀⠀⣠⡴⠛⠁⠀⠀⠀⠀⠀⠙⠷⣝⠣⠀⠀⠀⠈⠉⠒⠶⠾⠤⠧⠼⠚⠉⠀⠀⠀⢀⡴⠃⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠙⠿⣦⣀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⢀⣠⡴⠞⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠶⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⢀⡴⠟⠁⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠈⠛⠒⠤⠤⣄⣀⣀⣀⣠⠤⠤⠶⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠒⠦⠤⢤⣀⣀⣠⡤⠤⠟⠋⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⢀⣴⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⣀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠘⠻⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠏⠀⠀⠀⠀⠀⠀⠀⠀⠰⡆⠀⠀⠀⠀⠀⠀⠀⠀⠹⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠽⠟⠁⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠿⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\'⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ',
|
||||
\]
|
||||
let g:dashboard_default_executive = 'telescope'
|
||||
nmap <Leader>ss :<C-u>SessionSave<CR>
|
||||
nmap <Leader>sl :<C-u>SessionLoad<CR>
|
||||
" nnoremap <silent> <Leader>fh :DashboardFindHistory<CR>
|
||||
" nnoremap <silent> <Leader>fm :DashboardJumpMark<CR>
|
||||
" nnoremap <silent> <Leader>cn :DashboardNewFile<CR>
|
||||
autocmd FileType dashboard set showtabline=0 | autocmd WinLeave <buffer> set showtabline=2
|
||||
let g:dashboard_custom_footer = ["Run wild"]
|
||||
let g:dashboard_custom_section={
|
||||
\ 'create_zettel': {
|
||||
\ 'description': [' Create Zettel SPC c z'],
|
||||
\ 'command': ':VimwikiIndex' },
|
||||
\ 'load_session': {
|
||||
\ 'description': [' Load Session SPC s l'],
|
||||
\ 'command': 'SessionLoad' }
|
||||
\ }
|
||||
|
||||
let g:scnvim_snippet_format = "luasnip"
|
||||
|
||||
|
||||
" lua config
|
||||
lua <<EOF
|
||||
local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " }
|
||||
for type, icon in pairs(signs) do
|
||||
local hl = "DiagnosticSign" .. type
|
||||
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
|
||||
end
|
||||
vim.g.diagnostics_active = true
|
||||
function _G.toggle_diagnostics()
|
||||
if vim.g.diagnostics_active then
|
||||
vim.g.diagnostics_active = false
|
||||
vim.lsp.diagnostic.clear(0)
|
||||
vim.lsp.handlers["textDocument/publishDiagnostics"] = function() end
|
||||
else
|
||||
vim.g.diagnostics_active = true
|
||||
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
|
||||
vim.lsp.diagnostic.on_publish_diagnostics, {
|
||||
virtual_text = true,
|
||||
signs = true,
|
||||
underline = true,
|
||||
update_in_insert = false,
|
||||
}
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_set_keymap('n', '<leader>vt', ':call v:lua.toggle_diagnostics()<CR>', {noremap = true, silent = true})
|
||||
|
||||
-- autopairs
|
||||
require('nvim-autopairs').setup{}
|
||||
|
||||
-- marks
|
||||
require('marks').setup{}
|
||||
|
||||
-- Setup nvim-cmp.
|
||||
local has_words_before = function()
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
local luasnip = require("luasnip")
|
||||
local lspkind = require("lspkind")
|
||||
local cmp = require('cmp')
|
||||
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
|
||||
local t = function(str)
|
||||
return vim.api.nvim_replace_termcodes(str, true, true, true)
|
||||
end
|
||||
local check_back_space = function()
|
||||
local col = vim.fn.col(".") - 1
|
||||
return col == 0 or vim.fn.getline("."):sub(col, col):match("%s") ~= nil
|
||||
end
|
||||
cmp.setup {
|
||||
formatting = {
|
||||
format = lspkind.cmp_format({
|
||||
mode = 'symbol_text',
|
||||
maxwidth = 50,
|
||||
-- old format
|
||||
-- format = function(entry, vim_item)
|
||||
-- -- fancy icons and a name of kind
|
||||
-- vim_item.kind = require("lspkind").presets.default[vim_item.kind] ..
|
||||
-- " " .. vim_item.kind
|
||||
-- -- set a name for each source
|
||||
-- vim_item.menu = ({
|
||||
-- buffer = "[Buffer]",
|
||||
-- nvim_lsp = "[LSP]",
|
||||
-- look = "[Look]",
|
||||
-- path = "[Path]",
|
||||
-- spell = "[Spell]",
|
||||
-- calc = "[Calc]",
|
||||
-- })[entry.source.name]
|
||||
-- return vim_item
|
||||
-- end
|
||||
})
|
||||
},
|
||||
mapping = {
|
||||
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.close(),
|
||||
['<CR>'] = cmp.mapping.confirm({
|
||||
behavior = cmp.ConfirmBehavior.Insert,
|
||||
select = true
|
||||
}),
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, {"i", "s"}),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
},
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require'luasnip'.lsp_expand(args.body)
|
||||
end
|
||||
},
|
||||
sources = {
|
||||
{name = 'buffer'}, {name = 'nvim_lsp'},
|
||||
{name = "look"}, {name = "path"},
|
||||
{name = "calc"}, {name = "spell"},
|
||||
{name = 'cmp-conjure'}, {name = "luasnip"},
|
||||
{name = 'tags'}
|
||||
},
|
||||
completion = {completeopt = 'menu,menuone,noinsert'}
|
||||
}
|
||||
cmp.event:on( 'confirm_done', cmp_autopairs.on_confirm_done({ map_char = { tex = ' ' } }))
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
-- null-ls
|
||||
local null_ls = require "null-ls"
|
||||
local pyright = {
|
||||
cmd = { "pyright" },
|
||||
filetypes = { "python", },
|
||||
debounce = 250,
|
||||
debug = false,
|
||||
default_timeout = 5000,
|
||||
args = { "-p", "$FILENAME", "--skipunannotated" }
|
||||
}
|
||||
local sources = {
|
||||
pyright,
|
||||
null_ls.builtins.code_actions.statix,
|
||||
null_ls.builtins.diagnostics.shellcheck,
|
||||
-- null_ls.builtins.diagnostics.clj_kondo,
|
||||
-- null_ls.builtins.formatting.black,
|
||||
null_ls.builtins.code_actions.proselint,
|
||||
-- null_ls.builtins.diagnostics.mypy,
|
||||
}
|
||||
|
||||
-- Setup lspconfig
|
||||
require("lsp-format").setup {}
|
||||
require("nvim-navic").setup {}
|
||||
local format = require("lsp-format")
|
||||
local navic = require("nvim-navic")
|
||||
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)
|
||||
|
||||
local lspconfig = require('lspconfig')
|
||||
local servers = { 'clojure_lsp', 'terraform_lsp', 'zls' }
|
||||
for _, lsp in ipairs(servers) do
|
||||
lspconfig[lsp].setup {
|
||||
on_attach = function(client, bufnr)
|
||||
format.on_attach(client)
|
||||
navic.attach(client, bufnr)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
}
|
||||
end
|
||||
-- rnix doesn't support gps
|
||||
require('lspconfig').rnix.setup {
|
||||
on_attach = function(client, bufnr)
|
||||
format.on_attach(client)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
}
|
||||
require('lspconfig').pylsp.setup {
|
||||
on_attach = function(client, bufnr)
|
||||
format.on_attach(client)
|
||||
navic.attach(client, bufnr)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
pylsp = {
|
||||
configurationSources = { "flake8", "mypy", "black" },
|
||||
plugins = {
|
||||
black = {enabled = true},
|
||||
jedi_signature_help = {enabled = true},
|
||||
jedi_completion = { include_params = true },
|
||||
pylsp_mypy={ enabled = true },
|
||||
pycodestyle={
|
||||
enabled=true,
|
||||
ignore={'E501', 'E231'},
|
||||
maxLineLength=120,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
require('gitsigns').setup { sign_priority=80 }
|
||||
|
||||
-- treesitter
|
||||
require('nvim-treesitter.configs').setup {
|
||||
ensure_installed={'nix', 'clojure', 'python', 'fennel', 'lua', 'html', 'css', 'regex', 'supercollider', 'beancount'},
|
||||
highlight = { enabled = true, additional_vim_regex_highting = true, },
|
||||
textobjects = { enabled = true },
|
||||
}
|
||||
-- 'glsl' needs c++ compiler lol
|
||||
|
||||
-- lualine
|
||||
local navic = require("nvim-navic")
|
||||
require('lualine').setup {
|
||||
options = { theme = 'ayu' },
|
||||
sections = {
|
||||
lualine_c = {
|
||||
'filename', { navic.get_location, condition=navic.is_available },
|
||||
},
|
||||
lualine_y = {
|
||||
function()
|
||||
local msg = 'No Active Lsp'
|
||||
local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype')
|
||||
local clients = vim.lsp.get_active_clients()
|
||||
if next(clients) == nil then
|
||||
return msg
|
||||
end
|
||||
for _, client in ipairs(clients) do
|
||||
local filetypes = client.config.filetypes
|
||||
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
|
||||
return client.name
|
||||
end
|
||||
end
|
||||
return msg
|
||||
end
|
||||
},
|
||||
lualine_x = {'filetype'}
|
||||
}
|
||||
}
|
||||
|
||||
-- nvim-lint
|
||||
-- require('lint').linters_by_ft = {
|
||||
-- markdown = {'vale'},
|
||||
-- }
|
||||
|
||||
-- f_term
|
||||
local map = vim.api.nvim_set_keymap
|
||||
local opts = { noremap = true, silent = true }
|
||||
map('n', '<TAB>', '<CMD>lua require("FTerm").toggle()<CR>', opts)
|
||||
map('t', '<A-i>', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>', opts)
|
||||
|
||||
-- Custom functions
|
||||
function update_date()
|
||||
local time = os.date("%Y-%m-%d %H:%M")
|
||||
local message = "%update " .. time
|
||||
local lines = vim.api.nvim_buf_get_lines(0, 0,4,false)
|
||||
for i=1,4,1 do
|
||||
if (lines[i]:len() == 0) then
|
||||
vim.api.nvim_buf_set_lines(0, i-1, i, false, {message, ""})
|
||||
return
|
||||
end
|
||||
end
|
||||
if (lines[4]:len() ~= 0) then
|
||||
vim.api.nvim_buf_set_lines(0, 3, 4, false, {message})
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd(
|
||||
"BufWritePre",
|
||||
{ pattern = { "*.wiki" }, callback = update_date}
|
||||
)
|
||||
|
||||
-- set spelling for text files
|
||||
vim.api.nvim_create_autocmd(
|
||||
{ "BufRead", "BufNewFile" },
|
||||
{ pattern = { "*.wiki", "*.txt", "*.md", "*.tex" },
|
||||
command = "setlocal spell" }
|
||||
)
|
||||
vim.api.nvim_create_autocmd(
|
||||
"FileType",
|
||||
{ pattern = { "mail" },
|
||||
command = "setlocal spell" }
|
||||
)
|
||||
|
||||
-- auto session
|
||||
require('auto-session').setup {
|
||||
log_level = 'info',
|
||||
auto_session_suppress_dirs = {'~/'}
|
||||
}
|
||||
vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal"
|
||||
|
||||
require("which-key").setup{}
|
||||
require('leap').set_default_keymaps()
|
||||
|
||||
-- supercollider
|
||||
local scnvim = require 'scnvim'
|
||||
local map = scnvim.map
|
||||
local map_expr = scnvim.map_expr
|
||||
scnvim.setup {
|
||||
keymaps = {
|
||||
['<localleader>e'] = map('editor.send_line', {'i', 'n'}),
|
||||
['<localleader>s'] = map_expr('CmdPeriod.run', {'i', 'n'}),
|
||||
['<localleader>t'] = {
|
||||
map('editor.send_block', {'i', 'n'}),
|
||||
map('editor.send_selection', 'x'),
|
||||
},
|
||||
['<CR>'] = map('postwin.toggle'),
|
||||
['<M-CR>'] = map('postwin.toggle', 'i'),
|
||||
['<M-L>'] = map('postwin.clear', {'n', 'i'}),
|
||||
['<C-k>'] = map('signature.show', {'n', 'i'}),
|
||||
['<F12>'] = map('sclang.hard_stop', {'n', 'x', 'i'}),
|
||||
['<leader>st'] = map('sclang.start'),
|
||||
['<leader>sk'] = map('sclang.recompile'),
|
||||
['<F1>'] = map_expr('s.boot'),
|
||||
['<F2>'] = map_expr('s.meter'),
|
||||
}
|
||||
}
|
||||
-- require("luasnip").add_snippets("supercollider", require("scnvim/utils").get_snippets())
|
||||
EOF
|
||||
|
||||
'';
|
||||
extraPackages = with pkgs // customPlugins; [
|
||||
# used to compile tree-sitter grammar
|
||||
tree-sitter
|
||||
python-with-my-packages
|
||||
nodejs
|
||||
clojure-lsp
|
||||
rnix-lsp
|
||||
terraform-lsp
|
||||
clj-kondo
|
||||
zls
|
||||
gcc
|
||||
nodePackages.pyright
|
||||
shellcheck
|
||||
proselint
|
||||
statix
|
||||
# installs different langauge servers for neovim-lsp
|
||||
# have a look on the link below to figure out the ones for your languages
|
||||
# https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md
|
||||
nodePackages.typescript
|
||||
nodePackages.typescript-language-server
|
||||
];
|
||||
|
||||
plugins = with pkgs.vimPlugins // customPlugins; [
|
||||
# ui
|
||||
fzf-vim
|
||||
nerdtree
|
||||
neovim-ayu
|
||||
goyo-vim
|
||||
rainbow_parentheses-vim
|
||||
vim-surround
|
||||
vim-devicons
|
||||
nvim-web-devicons
|
||||
undotree
|
||||
telescope-nvim
|
||||
plenary-nvim
|
||||
nvim-gps
|
||||
nvim-treesitter
|
||||
nvim-treesitter-context
|
||||
my-fterm
|
||||
barbar-nvim
|
||||
auto-session
|
||||
my-marks
|
||||
|
||||
# language
|
||||
vim-nix
|
||||
vim-elixir
|
||||
emmet-vim
|
||||
csv-vim
|
||||
direnv-vim
|
||||
zig-vim
|
||||
|
||||
# kitaab stuff
|
||||
vimwiki
|
||||
taskwiki
|
||||
vim-zettel
|
||||
|
||||
# lsp stuff
|
||||
# nvim-lint
|
||||
null-ls-nvim
|
||||
nvim-lspconfig
|
||||
nvim-cmp
|
||||
cmp-nvim-lsp
|
||||
cmp-treesitter
|
||||
nvim-lsp-ts-utils
|
||||
cmp-conjure
|
||||
cmp-buffer
|
||||
cmp-path
|
||||
cmp-spell
|
||||
nvim-autopairs
|
||||
cmp_luasnip
|
||||
luasnip
|
||||
lsp-format
|
||||
friendly-snippets
|
||||
lspkind-nvim
|
||||
|
||||
# git stuff
|
||||
vim-fugitive
|
||||
my-gitsigns
|
||||
fzf-checkout-vim
|
||||
|
||||
# Clojure stuff
|
||||
# conjure
|
||||
vim-sexp
|
||||
vim-sexp-mappings-for-regular-people
|
||||
fennel-vim
|
||||
|
||||
vim-tidal
|
||||
# experimental
|
||||
nvim-luapad
|
||||
nvim-navic
|
||||
scnvim
|
||||
leap
|
||||
vim-beancount
|
||||
# vimtex
|
||||
# TODO break with nvim 0.8.0
|
||||
# these are here until i upgrade my nixos channnel in the flake
|
||||
my-which-key-nvim
|
||||
my-lualine-nvim
|
||||
my-conjure
|
||||
my-nvim-peekup
|
||||
yuck-vim
|
||||
nvim-parinfer
|
||||
# vim-processing
|
||||
];
|
||||
withPython3 = true;
|
||||
extraPython3Packages = pkgs: with pkgs; [ tasklib six ];
|
||||
vimAlias = true;
|
||||
};
|
||||
}
|
||||
|
||||
Executable
+61
@@ -0,0 +1,61 @@
|
||||
#! /usr/bin/env cached-nix-shell
|
||||
#! nix-shell -i python3 -p python3
|
||||
|
||||
"""Manage Taskwarrior notes"""
|
||||
|
||||
import argparse
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
import datetime
|
||||
|
||||
NOTES_DIR = "~/kitaab/vimwiki/task-notes"
|
||||
EDITOR = os.environ["EDITOR"]
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
|
||||
def write_note(task_id: int):
|
||||
"""Open `$EDITOR` to take notes about task with ID `task_id`."""
|
||||
task_uuid = os.popen(f"task _get {task_id}.uuid").read().rstrip()
|
||||
|
||||
if not task_uuid:
|
||||
logging.error(f"{task_id} has no UUID!")
|
||||
sys.exit(1)
|
||||
|
||||
logging.debug(f"Task {task_id} has UUID {task_uuid}")
|
||||
|
||||
notes_dir = os.path.expanduser(NOTES_DIR)
|
||||
os.makedirs(notes_dir, exist_ok=True)
|
||||
notes_basename = f"{task_uuid}.wiki"
|
||||
notes_file = os.path.join(notes_dir, notes_basename)
|
||||
logging.debug(f"Notes file is {notes_file}")
|
||||
|
||||
if not os.path.exists(notes_file):
|
||||
logging.info("Adding description to empty notes file")
|
||||
task_description = os.popen(f"task _get {task_id}.description").read()
|
||||
task_project = os.popen(f"task _get {task_id}.project").read().strip("\n")
|
||||
task_tags = os.popen(f"task _get {task_id}.tags").read().split(",")
|
||||
if len(task_tags):
|
||||
task_tags = ":".join(task_tags).strip("\n") + ":"
|
||||
time = datetime.datetime.now().strftime("%y-%m-%d %H:%M")
|
||||
|
||||
with open(notes_file, "w") as f:
|
||||
f.write(f"%title: {task_description}")
|
||||
f.write(f":task:{task_project}:{task_tags if len(task_tags) else ''}\n")
|
||||
f.write(f"%date: {time}\n\n")
|
||||
f.flush()
|
||||
|
||||
os.execlp(EDITOR, EDITOR, notes_file)
|
||||
|
||||
|
||||
def update_task(task_id: int):
|
||||
os.popen(f"task {task_id} modify +note")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Write Taskwarrior notes")
|
||||
parser.add_argument('task_id', metavar='ID', type=int, help="ID of the task to note")
|
||||
args = parser.parse_args()
|
||||
|
||||
write_note(args.task_id)
|
||||
@@ -0,0 +1,9 @@
|
||||
{ pkgs, config, lib, ... }:
|
||||
|
||||
{
|
||||
# If you're setting up taskwarrior again, there's a task-setup.sh script in seafile
|
||||
home.file = {
|
||||
".taskrc".source = ./taskrc;
|
||||
".local/bin/task-note".source = ./bin/task-note.py;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
# [Created by task 2.5.3 9/25/2021 00:53:42]
|
||||
# Taskwarrior program configuration file.
|
||||
# For more documentation, see http://taskwarrior.org or try 'man task', 'man task-color',
|
||||
# 'man task-sync' or 'man taskrc'
|
||||
|
||||
# Here is an example of entries that use the default, override and blank values
|
||||
# variable=foo -- By specifying a value, this overrides the default
|
||||
# variable= -- By specifying no value, this means no default
|
||||
# #variable=foo -- By commenting out the line, or deleting it, this uses the default
|
||||
|
||||
# Use the command 'task show' to see all defaults and overrides
|
||||
|
||||
# Files
|
||||
data.location=~/.task
|
||||
taskd.server=task.mossnet.lan:53589
|
||||
#taskd.server=10.0.69.4:53589
|
||||
taskd.ca=~/.task/keys/ca.cert
|
||||
taskd.key=~/.task/keys/private.key
|
||||
taskd.certificate=~/.task/keys/public.cert
|
||||
taskd.trust=ignore hostname
|
||||
taskd.credentials=mossnet\/anish\/1647259c-e340-405c-a38b-11ac18e34688
|
||||
|
||||
# Color theme (uncomment one to use)
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/light-16.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/light-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-16.theme
|
||||
#include /nix/store/nv663d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-red-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-green-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-blue-256.theme
|
||||
# TODO this needs to be not a hardlink but a nix link
|
||||
include /nix/store/64nvv0ac2dr8rdz2414f53x97j3msiz0-taskwarrior-2.6.2/share/doc/task/rc/dark-violets-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-yellow-green.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-gray-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-gray-blue-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/solarized-dark-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/solarized-light-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/no-color.theme
|
||||
|
||||
uda.priority.values=H,M,,L
|
||||
news.version=2.6.0
|
||||
|
||||
## Reports
|
||||
|
||||
# List
|
||||
report.list.columns=id,priority,project,tags,recur.indicator,scheduled.countdown,due,until.remaining,description.count
|
||||
report.list.labels=ID,P,Project,Tags,R,Sch,Due,Until,Description
|
||||
|
||||
# In
|
||||
report.in.columns=id,project,tags,description
|
||||
report.in.labels=ID,Proj,Tags,Description
|
||||
report.in.description=Inbox
|
||||
report.in.filter=status:pending limit:page (+in)
|
||||
|
||||
# Unblocked
|
||||
report.unblocked.labels=ID,Deps,Proj,Tags,Due,Active,Description
|
||||
report.unblocked.columns=id,depends,project,tags,due,start.active,description
|
||||
|
||||
# Next
|
||||
report.next.filter=(status:pending -Waiting -in -backlog pro.not:ideas limit:0)
|
||||
report.next.labels=ID,Active,Deps,P,Project,Tag,Recur,S,Due,Until,Description
|
||||
report.next.columns=id,start.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description
|
||||
|
||||
# Urgency
|
||||
urgency.user.project.wait.coefficient=-10.0
|
||||
urgency.user.project.craft.coefficient=1.9
|
||||
urgency.user.project.chores.coefficient=0.8
|
||||
urgency.user.tag.think.coefficient=-7.0
|
||||
urgency.user.tag.purchase.coefficient=-1.2
|
||||
urgency.user.project.curve.glam.coefficient=-1.3
|
||||
|
||||
# Colors
|
||||
color.project.chores=blue
|
||||
color.tag.dev=cyan
|
||||
color.project.craft=green
|
||||
color.tag.purchase=rgb411
|
||||
color.tag.next=black on yellow
|
||||
color.sync.rejected=red
|
||||
color.blocked=color0
|
||||
color.tag.ops=rgb032
|
||||
color.blocking=white on black
|
||||
color.project.curve.glam=rgb525
|
||||
color.tag.glam=rgb525
|
||||
color.project.none=rgb553
|
||||
color.footnote=yellow
|
||||
Reference in New Issue
Block a user