From 3545113009b38ad283efbfde254ffc920007a551 Mon Sep 17 00:00:00 2001 From: Carolyn Saunders Date: Wed, 19 Jul 2017 00:37:48 -0700 Subject: [PATCH] Added spectrwm config and moved .scripts to new repo --- .config/compton.conf | 3 +- .scripts/bar.sh | 39 -- .scripts/battery.sh | 31 -- .scripts/bitcoin.sh | 5 - .scripts/checkmail.sh | 12 - .scripts/cpu.sh | 6 - .scripts/fehbg.sh | 2 - .scripts/imap.sh | 3 - .scripts/mail.sh | 4 - .scripts/mail/archive.sh | 10 - .scripts/maildir-notmuch-sync | 725 --------------------------------- .scripts/memory.sh | 4 - .scripts/monitor.sh | 5 - .scripts/networkname.sh | 10 - .scripts/offlineimap-notify.sh | 36 -- .scripts/tasks.sh | 4 - .scripts/volume.sh | 2 - .scripts/workspaces.sh | 48 --- .spectrwm.conf | 50 +++ .xinitrc | 58 +++ .zshrc | 17 +- LICENSE | 674 ------------------------------ compton.conf | 40 -- 23 files changed, 123 insertions(+), 1665 deletions(-) delete mode 100755 .scripts/bar.sh delete mode 100755 .scripts/battery.sh delete mode 100755 .scripts/bitcoin.sh delete mode 100755 .scripts/checkmail.sh delete mode 100755 .scripts/cpu.sh delete mode 100755 .scripts/fehbg.sh delete mode 100755 .scripts/imap.sh delete mode 100755 .scripts/mail.sh delete mode 100755 .scripts/mail/archive.sh delete mode 100755 .scripts/maildir-notmuch-sync delete mode 100755 .scripts/memory.sh delete mode 100755 .scripts/monitor.sh delete mode 100755 .scripts/networkname.sh delete mode 100755 .scripts/offlineimap-notify.sh delete mode 100755 .scripts/tasks.sh delete mode 100755 .scripts/volume.sh delete mode 100755 .scripts/workspaces.sh create mode 100644 .spectrwm.conf create mode 100644 .xinitrc delete mode 100644 LICENSE delete mode 100644 compton.conf diff --git a/.config/compton.conf b/.config/compton.conf index be48a72..9d75c2d 100644 --- a/.config/compton.conf +++ b/.config/compton.conf @@ -21,7 +21,8 @@ menu-opacity = 1.0; # The opacity for menus. (default 1.0) inactive-opacity = 1.0; # Opacity of inactive windows. (0.1 - 1.0) frame-opacity = 1.0; # Opacity of window titlebars and borders. (0.1 - 1.0) inactive-opacity-override = true; # Inactive opacity set by 'inactive-opacity' overrides value of _NET_WM_OPACITY. - +opacity-rule = [ "96:class_g = 'Emacs'", # 10% of transparency + "96:!focused && class_g = 'Conkeror'"] # as a bonus # Fading fading = true; # Fade windows during opacity changes. fade-delta = 4; # The time between steps in a fade in milliseconds. (default 10). diff --git a/.scripts/bar.sh b/.scripts/bar.sh deleted file mode 100755 index 46c2687..0000000 --- a/.scripts/bar.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -pkill admiral - -font="GohuFont:style=Regular:size=10" -fallback_font="FontAwesome:size=8" -background="#cc111314" -foreground="#bcbdc3" -a=30 - -monitors=$(xrandr | grep -o "^.* connected" | sed "s/ connected//") - -if [[ $1 == "-f" ]]; then - # full width, no padding - x=1920 - y=40 - x_offset=0 - y_offset=0 -elif [[ $1 == "-h" ]]; then - # half width - x=900 - y=40 - x_offset=500 - y_offset=15 -else - x=1880 - y=40 - x_offset=20 - y_offset=15 -fi - -#for m in $monitors; do - #admiral | lemonbar -a $a -g "${x}x${y}+${x_offset}+${y_offset}" -f $font -f $fallback_font -B $background -F $foreground | sh & - admiral | lemonbar -a $a -f $font -f $fallback_font -B $background -F $foreground | sh & - # the following line gets the width of the current monitor - #monitor_width=$(xrandr | grep '*' | ruby -e "puts gets.strip.split[0].split('x')" | head -n 1) - #let x_offset+=$monitor_width - #echo "Started bar on $m" -#done diff --git a/.scripts/battery.sh b/.scripts/battery.sh deleted file mode 100755 index 2a15a21..0000000 --- a/.scripts/battery.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash - -status=$(acpi | awk '{orint $3;}' | sed 's/,//g') -capacity=$(acpi | awk '{print $4;}' | sed 's/%//g' | sed 's/,//g') -color=true -sparks=$(spark 0 $capacity 100) - -echo -n "%{F#e5c078}" -if [[ $status == "Charging" ]]; then - echo -en "\uf0e7" -elif [[ $capacity -ge "85" ]]; then - echo -en "\uf240" -elif [[ $capacity -ge "65" ]]; then - echo -en "\uf241" -elif [[ $capacity -ge "45" ]]; then - echo -en "\uf242" -elif [[ $capacity -ge "15" ]]; then - echo -en "\uf243" -elif [[ $capacity -ge "0" ]]; then - color=true - echo -en "%{F#cc6666}\uf244" -fi -echo -n "%{F-}" - -echo -n "Bat: $capacity% [${sparks:1:1}]" - -if [[ color ]]; then - echo "%{F-}" -else - echo -fi diff --git a/.scripts/bitcoin.sh b/.scripts/bitcoin.sh deleted file mode 100755 index e144e5c..0000000 --- a/.scripts/bitcoin.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -price=$(curl -sSL https://coinbase.com/api/v1/prices/historical | head -n 1 | sed 's|^.*,|$|' | sed 's|\(\.[0-9]$\)|\10|') - -echo "BTC: $price" diff --git a/.scripts/checkmail.sh b/.scripts/checkmail.sh deleted file mode 100755 index 39048e9..0000000 --- a/.scripts/checkmail.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -STATE=`nmcli networking connectivity` - -if [ $STATE = 'full' ] -then - #/usr/local/bin/msmtp-runqueue.sh - $HOME/.scripts/imap.sh - exit 0 -fi -echo "No internet connection." -exit 0 diff --git a/.scripts/cpu.sh b/.scripts/cpu.sh deleted file mode 100755 index 024922c..0000000 --- a/.scripts/cpu.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -percent=$(top -bn1 | grep "Cpu(s)" | \ - sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \ - awk '{print 100 - $1}') -sparks=$(spark 0 $percent 100) -echo "CPU: $(echo "$percent% [${sparks:1:1}]")" diff --git a/.scripts/fehbg.sh b/.scripts/fehbg.sh deleted file mode 100755 index a001acb..0000000 --- a/.scripts/fehbg.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -feh --randomize --bg-fill ~/Wallpapers/* diff --git a/.scripts/imap.sh b/.scripts/imap.sh deleted file mode 100755 index fcc6561..0000000 --- a/.scripts/imap.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -$HOME/.scripts/mail/archive.sh ; mbsync -a -V ; notmuch new diff --git a/.scripts/mail.sh b/.scripts/mail.sh deleted file mode 100755 index f52e8f4..0000000 --- a/.scripts/mail.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash - -NEWEMAILS=$(notmuch search tag:unread and not tag:archive | wc -l) -echo "Mail: $NEWEMAILS" diff --git a/.scripts/mail/archive.sh b/.scripts/mail/archive.sh deleted file mode 100755 index 0ddc66e..0000000 --- a/.scripts/mail/archive.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -function moveIt { s=${1##*/}; s=${s%%,*}; mv -f $1 $2/$s -s=$(notmuch search --output=files tag:processed and folder:sent | grep -v archived) -for i in $s; do moveIt $i /home/gigavinyl/.mail/archive/new; done -} - -s=$(notmuch search --output=files tag:archive and not folder:totrash | grep -v archived) -for i in $s; do moveIt $i /home/gigavinyl/.mail/gigavinyl/archive/new; done - diff --git a/.scripts/maildir-notmuch-sync b/.scripts/maildir-notmuch-sync deleted file mode 100755 index 3447e6f..0000000 --- a/.scripts/maildir-notmuch-sync +++ /dev/null @@ -1,725 +0,0 @@ -#!/usr/bin/env bash - -# ---------------------------------------------------------------------- -# maildir-notmuch-sync -# -# a script to sync up maildir folders (and thus gmail labels) -# and notmuch tags -# -# Ethan Schoonover / es@ethanschoonover / @ethanschoonover -# ---------------------------------------------------------------------- - -# ---------------------------------------------------------------------- -# Usage: -# ---------------------------------------------------------------------- -# -# maildir-notmuch-sync [--dry-run] /path/to/maildir/account/root -# -# Designed to be called from offlineimap's post/pre sync hooks in the -# account configuration section of .offlineimaprc -# -# The argument passed to maildir-notmuch-sync should be the same as the -# localfolders value for the local respository setup. -# -# For example, if your local repository localfolders looks like this -# in your .offlineimaprc: -# -# [Repository personal-local] -# -# localfolders = ~/var/mail/accounts/personal -# -# -# then the presynchook and postsynchook would look like this (assuming -# that maildir-notmuch-sync is in your path; if not, use the full path -# to the script): -# -# [Account personal] -# -# localrepository = personal-local -# remoterepository = personal-remote -# presynchook = maildir-notmuch-sync "~/var/mail/accounts/personal" -# postsynchook = maildir-notmuch-sync "~/var/mail/accounts/personal" -# -# This allows the script to use short tags for multiple accounts without -# getting confused about what tag goes where. - -# ---------------------------------------------------------------------- -# Dry-run -# ---------------------------------------------------------------------- -# -# Call the script directly from the command line with the initial -# argument "--dry-run" to test the result: -# -# maildir-notmuch-sync "--dry-run" "~/var/mail/accounts/personal" -# -# Dry-run mode will echo a summary of changes and any deletions, copies -# but will NOT make any changes - - -# ---------------------------------------------------------------------- -# Values - CHANGE THESE -# ---------------------------------------------------------------------- - -# Maildir Information -# ---------------------------------- - -INBOX="inbox" # (mutt's spool dir) - both the tag and folder -SENT="sent" # (mutt's record dir) - both the tag and folder -TRASH="trash" # trash maildir, gmail requires for real deletion - -# Note that the tag/folder values (INBOX/SENT/etc) must match -# your local maildir names, after any nametrans by offlineimap. For -# example, my own "INBOX" is translated by offlineimap to "inbox" -# (lowercase) and thus my INBOX value is "inbox". -# -# Again, please note that these ARE case sensitive values and must -# match your local maildir as offlineimap creates it. - - -# Notmuch Tag Information -# ---------------------------------- - -# if multiple new.tags in notmuch, identify transient tag here -# this tag is only used as a temporary tag during script run -NEW_TAG="new" - -# the tag notmuch uses to keep track of unread status -# also used by mutt-kz (be careful! assigning this in mutt-kz -# and then removing an unread tag really does mark mail as read, -# possibly in bulk!) -UNREAD_TAG="unread" - -# if true, convert "new" tag to "unread" at end of script run -# otherwise new tag is simple removed -MAKE_NEW_UNREAD=false - -# convert infix slashes to dashes in tags, -# e.g. "clients/bob" becomes "clients-bob" -SLASHES_TO_DASHES=false - -# shorter, trimmed tags; see description below -TRIM_ACCOUNT_PREFIX_IN_TAGS=true - -# TRIM_ACCOUNT_PREFIX_IN_TAGS (above) -# -# Example: I have two gmail accounts I'm syncing with offlineimap: -# work & personal. The local account respository paths are: -# -# /home/me/mail/personal -# /home/me/mail/work -# -# I index them both in a single notmuch db that is rooted on the -# following path: -# -# /home/me/mail -# -# This allows notmuch to index all my mail in one pass. -# Notmuch indexes mail so that I can search for folder:/personal/INBOX -# (the search without leading slash is almost identical folder:personal/INBOX) -# -# You can then choose here to tag your mails in one of two formats: -# -# UNTRIMMED tag: personal/INBOX -# TRIMMED tag: INBOX -# -# set TRIM_ACCOUNT_PREFIX_IN_TAG=true for the trimmed style -# -# Note that this will not result in a namespace collision since the -# script is being called from offlineimap and passed the path to the -# account root. -# -# The difference between the account root and the notmuch root (as -# set in your notmuch config) determines the account prefix value. - - -# ---------------------------------------------------------------------- -# Script settings -# ---------------------------------------------------------------------- - -set -o errexit -set -o nounset - -# FIXME add in real opt handling. See TAG_SCRIPT FIXME and CLEANUP_SCRIPT FIXME -# below for details - -# check for special run mode -# --dry-run (-d) -# --help (-h) - -case ${1:-} in - *-h*) echo "usage: $0 [--dry-run] subcmd maildir_account_root_path"; - echo "Valid sub commands are \"pre\" and \"post\""; - exit; - ;; - *-d*) RUNCMD=echo; DRYRUN=true; DRYRUN_MSG="- DRYRUN (no changes will be made)"; shift; ;; - *) RUNCMD=eval; DRYRUN=false ;; -esac - - -# subcommands "pre" and "post" are listed after the options above and before -# the $MAILDIR_ACCOUNT_ROOT path - -case ${1:-} in - pre) SUBCMD="pre"; shift; ;; - post) SUBCMD="post"; shift; ;; - *) echo "usage: $0 [--dry-run] subcmd maildir_account_root_path"; - echo "Valid sub commands are \"pre\" and \"post\""; - exit; - ;; -esac - - -# ---------------------------------------------------------------------- -# Custom tagging script -# ---------------------------------------------------------------------- - -# eval a custom tag script used in the post-hook, before we remove all -# of the new tags -# ---------------------------------------------------------------------- - -TAG_SCRIPT=$HOME/.local/bin/tag_mailing_lists -CLEANUP_SCRIPT=$HOME/.local/bin/tag_clean_up - -# ---------------------------------------------------------------------- -# Notmuch config checks -# ---------------------------------------------------------------------- - -# check if there is an existing notmuch configuration and assign -# the value of new.tags to a variable -# ---------------------------------- -if ! notmuch config list &>/dev/null; then -cat < unread status, and -# deletions, which we prefer to happen on a directory-by- -# directory basis for now (e.g. deleting from one maildir -# - the equivalent to removing a gmail label - doesn't -# delete from *all* maildirs). -# -# Also, .notmuch-config's [new] tags settings should be "new" -# (or similar, and make sure it matches $NEW_TAG in this script) -# -# You can do these via the command line: -# -# notmuch config set maildir.synchronize_flags false -# notmuch config set new.tags new -# -# or in ~/.notmuch-config manually - -# TODO: fix maildir flag sync so that it works here as well and can -# be used, specifically for unread status, which is useful - -# ---------------------------------------------------------------------- -# offlineimap setup: -# ---------------------------------------------------------------------- -# -# You'll most likely want to run this via offlineimap's postsynchook. -# Another option would be inotify/systemd monitoring of your maildir -# root directory for changes. -# -# This script is designed to sync pretty much your entire IMAP folder -# structure from gmail, including "All Mail". - -# ---------------------------------------------------------------------- -# Use with Mutt-kz -# ---------------------------------------------------------------------- -# -# Using mutt-kz virtual folders, you'll want to use a keybinding such -# as this to quickly archive any mail the way Gmail archives (which is -# to say, it removes the Inbox label): -# -# macro e index,pager "" -# -# Normally I work with the virtual folders, almost exclusively, in -# mutt-kz. However, if you wish to also manually delete and move mails -# from the non-virtual (normal mutt) folders, you'll have to create -# macros that add a tag prior to these functions so that this script -# doesn't revert those changes automatically. -# -# macro d index,pager "" -# macro s index,pager "" - -# TODO: check to see what mutt menus currently have delete/save support -# and thus existing key bindings - -# TODO: mutt-kz trash macro that adds trash (probably removes INBOX) and quasi-deletes - - -# ---------------------------------------------------------------------- -# Notmuch database path -# ---------------------------------------------------------------------- -# the directories contained by this path are scanned for mail, so -# we use this to locate and identify maildir folders - -# Source from existing notmuch config -NOTMUCH_ROOT="$(notmuch config list | grep 'database.path' | cut -f2 -d'=')" - -# Normalize path by trimming trailing slash, if any -NOTMUCH_ROOT="${NOTMUCH_ROOT%/}" - - -# ---------------------------------------------------------------------- -# Account maildir root path -# ---------------------------------------------------------------------- -# passed as a command line argument - -# Normalize path by trimming trailing slash, if any -# (use eval in case user quoted a path with ~ in it, though they shouldn't have) -eval "MAILDIR_ACCOUNT_ROOT=${1%/}" - - -# ---------------------------------------------------------------------- -# MAILBOXES: -# ---------------------------------------------------------------------- -# get list of mailboxes using the mboxes file output by offlineimap -# other strategies to create this list include a directory listing, -# possibly recursive, of the root maildir - -#MAILBOXES="$(sed 's/[^"]*"+\([^"]*\)"/\1\n/g' ~/var/mail/mailboxes)" - -# example of a recursive find (incomplete): -# TODO: maybe make this the primary method and create pairings? -# find $MAILDIR -name "cur" -type d -exec dirname '{}' \; | sed "s/^$MAILDIR\///" | sort - -MAILBOXES_FULL_PATHS="$(echo "$(find $MAILDIR_ACCOUNT_ROOT -name "cur" -type d -exec dirname '{}' \;)" | sort;)" - # | sed "s/^$MAILDIR\///" | sort - - -# ---------------------------------------------------------------------- -# Helper Functions -# ---------------------------------------------------------------------- - -Notmuch_Tag_From_Full_Path () -{ -# TODO: update examples here to be full paths -# This take a path such as: /work/INBOX -# and converts it to a tag: work-INBOX or INBOX -# -# A nested maildir such as: /work/clients/bob -# is converted to a tag: work/clients/bob -# -# If the TRIM_ACCOUNT_PREFIX_IN_TAGS variable is set to true, then -# a nested maildir such as: /work/clients/bob -# is converted to a tag: clients/bob -# -# If SLASHES_TO_DASHES is true, infix slashes will be converted to -# dashes, e.g. "client/bob" becomes "client-bob" - -case $TRIM_ACCOUNT_PREFIX_IN_TAGS in - true|TRUE|yes|YES|y|Y) local TRIMMER="$MAILDIR_ACCOUNT_ROOT" ;; - *) local TRIMMER="$NOTMUCH_ROOT" ;; -esac - -case $SLASHES_TO_DASHES in - true|TRUE|yes|YES|y|Y) echo "${1#$TRIMMER/}" ;; - *) echo "${1#$TRIMMER/}" | sed "s+/+-+g" ;; -esac - -} - -Notmuch_Folder_From_Full_Path () -{ -# Takes argument: -# -# /home/username/mail/work/INBOX -# -# and uses notmuch root path to trim and return, for example: -# -# /work/INBOX -# -# which is the full form searchable from notmuch using a query such as: -# -# notmuch search folder:/work/INBOX - - # XXX MASSIVE PAIN IN THE ASS. - # Took me forever to figure out that I needed to remove the trailing - # slash from the command below. Likely ES is running 0.17 version of - # notmuch, or even older *shudder* - echo "${1#$NOTMUCH_ROOT/}" - -} - -Maildir_Account_Folder_From_Full_Path () -{ -# Takes argument: -# -# /home/username/mail/work/INBOX -# -# and uses maildir account root path to trim and return, for example: -# -# /INBOX -# -# which is the full form searchable from notmuch using a query such as: -# -# notmuch search folder:/work/INBOX - - echo "${1#$MAILDIR_ACCOUNT_ROOT}" - -} - -# ---------------------------------------------------------------------- -# PRE Notmuch DB Sync Functions -# ---------------------------------------------------------------------- -# executed prior to 'notmuch new' - -Notmuch_State_To_Maildir__Move_To_Maildir () -{ -# Scenario: -# -# NOTMUCH STATE (per message): -# Number of Notmuch Tags > Number of Notmuch Folders -# -# MAILDIR STATE: -# No change from previous state. -# -# Tags have been added to a message in a virtual folder (in the notmuch db). -# The number of folders associated with a message has not been changed in -# the notmuch db. This indicates that we need to copy the message to a -# new maildir. After the next 'notmuch new' db update, the tags/folders -# should thus be at parity again. - - local THIS_MAILDIR_FULL_PATH="$1" - local THIS_NOTMUCH_FOLDER="$(Notmuch_Folder_From_Full_Path $THIS_MAILDIR_FULL_PATH)" - local THIS_NOTMUCH_TAG="$(Notmuch_Tag_From_Full_Path $THIS_MAILDIR_FULL_PATH)" - local THESE_MESSAGE_IDS_TO_COPY="$(\ - notmuch search --output=messages\ - tag:"$THIS_NOTMUCH_TAG" \ - NOT folder:"$THIS_NOTMUCH_FOLDER" \ - NOT folder:"$TRASH" \ - NOT tag:"$NEW_TAG")" - - # We are running this function prior to the remove function below - # but there is still the edge case wherein the user has manually - # deleted a mail message in mutt (better to do all this with tags - # and virtual folders, but let's accommodate). - - for THIS_MESSAGE_ID in $THESE_MESSAGE_IDS_TO_COPY; do - - local THIS_MESSAGE_ALL_SOURCE_PATHS="$(notmuch search --output=files "$THIS_MESSAGE_ID")" - - local FOUND=false - - while read line; do - - local THIS_MESSAGE_SOURCE_PATH="$line" - - if [[ -e "$THIS_MESSAGE_SOURCE_PATH" ]]; then - FOUND=true - break - fi - - done <<< "$THIS_MESSAGE_ALL_SOURCE_PATHS" - - if $FOUND; then - - if $RUNCMD "cp \"$THIS_MESSAGE_SOURCE_PATH\" \"$THIS_MAILDIR_FULL_PATH/cur\""; then - echo -n "Copied message with new tag to" - echo " $(Maildir_Account_Folder_From_Full_Path "$THIS_MAILDIR_FULL_PATH")" - else - echo -e "\nWARNING: Failed to copy mail file (unknown error):" - echo -e "SOURCE: \"$THIS_MESSAGE_SOURCE_PATH\"\nDESTINATION\"$THIS_MAILDIR_FULL_PATH/cur\"\n" - fi - - else - - echo -e "\nWARNING: Failed to copy mail file (no valid source paths!):" - echo "ID: $THIS_MESSAGE_ID" - echo "NOTMUCH FOLDER: $THIS_NOTMUCH_FOLDER" - echo -e "DESTINATION MAILDIR: $THIS_MAILDIR_FULL_PATH\n" - fi - - done - -} - -Notmuch_State_To_Maildir__Remove_From_Maildir () -{ -# Scenario: -# -# NOTMUCH STATE (per message): -# Number of Notmuch Tags < Number of Notmuch Folders -# -# MAILDIR STATE: -# No change from previous state. -# -# Tags have been removed from a message in a virtual folder (and thus -# in the notmuch db). The number of folders associated with a message -# has of course not yet changed. We need to remove the messages from -# maildir folders from which it has been untagged. - - local THIS_MAILDIR_FULL_PATH="$1" - local THIS_NOTMUCH_FOLDER="$(Notmuch_Folder_From_Full_Path $THIS_MAILDIR_FULL_PATH)" - local THIS_NOTMUCH_TAG="$(Notmuch_Tag_From_Full_Path $THIS_MAILDIR_FULL_PATH)" - local THESE_MESSAGE_IDS_TO_REMOVE="$(\ - notmuch search --output=messages\ - folder:"$THIS_NOTMUCH_FOLDER" \ - NOT tag:"$THIS_NOTMUCH_TAG" \ - NOT tag:"$NEW_TAG")" - - for THIS_MESSAGE_ID in $THESE_MESSAGE_IDS_TO_REMOVE; do - - local THIS_MESSAGE_PATH="$(notmuch search --output=files "$THIS_MESSAGE_ID" | \ - grep -e "^$THIS_MAILDIR_FULL_PATH")" - - if [[ -e "$THIS_MESSAGE_PATH" ]]; then - - if $RUNCMD "rm \"$THIS_MESSAGE_PATH\""; then - echo -n "Removed untagged message from" - echo " $(Maildir_Account_Folder_From_Full_Path "$THIS_MAILDIR_FULL_PATH")" - else - echo -e "\nWARNING: Failed to remove mail file (unknown error):" - echo "ID:$THIS_MESSAGE_ID" - echo "FOLDER:$THIS_NOTMUCH_FOLDER" - echo -e "MESSAGE PATH:$THIS_MESSAGE_PATH\n" - fi - - else - - echo -e "\nWARNING: Unable to remove missing mail file:" - echo "ID:$THIS_MESSAGE_ID" - echo "FOLDER:$THIS_NOTMUCH_FOLDER" - echo -e "MESSAGE PATH:$THIS_MESSAGE_PATH\n" - fi - - done - -} - -# ---------------------------------------------------------------------- -# SYNC Notmuch DB Sync Functions -# ---------------------------------------------------------------------- - -Notmuch_Update () -{ - $RUNCMD "notmuch new"; - # FIXME pass TAG_SCRIPT as an argument - if [[ -e "$TAG_SCRIPT" ]]; then - $RUNCMD $TAG_SCRIPT - fi -} - -# ---------------------------------------------------------------------- -# POST Notmuch DB Sync Functions -# ---------------------------------------------------------------------- -# executed after 'notmuch new' (otherwise the notmuch state looks the -# same as the states above) - -Maildir_State_To_Notmuch__Add_Tags_To_Notmuch () -{ -# Scenario: -# -# NOTMUCH STATE (per message): -# Number of Notmuch Tags < Number of Notmuch Folders -# -# MAILDIR STATE: -# Message in a new folder (either via CLI/mutt copy, move or incoming sync) -# -# A message is in a "physical" maildir directory but does not have a -# corresponding notmuch tag. For example: -# -# ~/mail/INBOX/message123 should have a tag "INBOX" -# -# We process all mails in each maildir directory (mailbox) and add tags -# as required. - - local THIS_MAILDIR_FULL_PATH="$1" - local THIS_NOTMUCH_FOLDER="$(Notmuch_Folder_From_Full_Path $THIS_MAILDIR_FULL_PATH)" - local THIS_NOTMUCH_TAG="$(Notmuch_Tag_From_Full_Path $THIS_MAILDIR_FULL_PATH)" - local THIS_NOTMUCH_QUERY="folder:\"$THIS_NOTMUCH_FOLDER\" NOT tag:\"$THIS_NOTMUCH_TAG\"" - local THIS_COUNT="$(notmuch count $THIS_NOTMUCH_QUERY)" - - $DRYRUN || notmuch tag +"$THIS_NOTMUCH_TAG" -- $THIS_NOTMUCH_QUERY - [[ $THIS_COUNT > 0 ]] && echo "Tagged $THIS_COUNT messages with \"$THIS_NOTMUCH_TAG\"" || true - -} - -Maildir_State_To_Notmuch__Remove_Tags_From_Notmuch () -{ -# Scenario: -# -# NOTMUCH STATE (per message): -# Number of Notmuch Tags > Number of Notmuch Folders -# -# MAILDIR STATE: -# Message removed from folder, either via rm, mutt delete, or offlineimap sync -# -# A message has been removed from a maildir directory. Notmuch is aware of -# this (this should only be checked/run after a 'notmuch new' update). -# However, we still have the "old" tag on the message. -# -# We skip the trash since we might want to restore those in future? - - local THIS_MAILDIR_FULL_PATH="$1" - local THIS_NOTMUCH_FOLDER="$(Notmuch_Folder_From_Full_Path $THIS_MAILDIR_FULL_PATH)" - local THIS_NOTMUCH_TAG="$(Notmuch_Tag_From_Full_Path $THIS_MAILDIR_FULL_PATH)" - local THIS_NOTMUCH_QUERY="tag:\"$THIS_NOTMUCH_TAG\" \ - NOT folder:\"$THIS_NOTMUCH_FOLDER\" \ - NOT folder:\"$TRASH\"" - local THIS_COUNT="$(notmuch count $THIS_NOTMUCH_QUERY)" - - $DRYRUN || notmuch tag -"$THIS_NOTMUCH_TAG" -- $THIS_NOTMUCH_QUERY - [[ $THIS_COUNT > 0 ]] && echo "Untagged $THIS_COUNT messages, removed \"$THIS_NOTMUCH_TAG\"" || true - -} - -# ---------------------------------------------------------------------- -# CLEANUP Functions -# ---------------------------------------------------------------------- - -Notmuch_Cleanup () -{ - - # anything in sent mail should have the unread flag removed - $RUNCMD "notmuch tag -\"$UNREAD_TAG\" -- folder:\"$SENT\"" - - # FIXME pass CLEANUP_SCRIPT as an argument - if [[ -e "$CLEANUP_SCRIPT" ]]; then - $RUNCMD $CLEANUP_SCRIPT - fi - - # remove "$NEW_TAG" tags, optionally converting to "$UNREAD_TAG" - case $MAKE_NEW_UNREAD in - true|TRUE|yes|YES|y|Y) - $RUNCMD "notmuch tag -\"$NEW_TAG\" +\"$UNREAD_TAG\" -- tag:\"$NEW_TAG\"" ;; - *) $RUNCMD "notmuch tag -\"$NEW_TAG\" -- tag:\"$NEW_TAG\"" ;; - esac - -} - - -# ---------------------------------------------------------------------- -# ---------------------------------------------------------------------- -# MAIN -# ---------------------------------------------------------------------- -# ---------------------------------------------------------------------- - -echo -e "\n----------------------------------------------------------------------" -echo "$(basename $0) ${SUBCMD}-sync hook ${DRYRUN_MSG:-}" -echo "----------------------------------------------------------------------" -echo "NOTMUCH ROOT: $NOTMUCH_ROOT" -echo "ACCOUNT ROOT: $MAILDIR_ACCOUNT_ROOT" - -# Review the notmuch database state and sync up any changes first -# (e.g. any retagged messages that need refiling) -if [ "$SUBCMD" == "pre" ]; then - for MAILBOX_FULL_PATH in $MAILBOXES_FULL_PATHS; do - Notmuch_State_To_Maildir__Move_To_Maildir $MAILBOX_FULL_PATH - Notmuch_State_To_Maildir__Remove_From_Maildir $MAILBOX_FULL_PATH - done -fi - -# Update the notmuch database to reflect the changes we just made, -# if any (so it can find the new messages) -if [ "$SUBCMD" == "post" ]; then - Notmuch_Update - - for MAILBOX_FULL_PATH in $MAILBOXES_FULL_PATHS; do - Maildir_State_To_Notmuch__Add_Tags_To_Notmuch $MAILBOX_FULL_PATH - Maildir_State_To_Notmuch__Remove_Tags_From_Notmuch $MAILBOX_FULL_PATH - done - - Notmuch_Cleanup -fi - -echo -e "maildir-notmuch-sync complete ----------------------------------------\n" diff --git a/.scripts/memory.sh b/.scripts/memory.sh deleted file mode 100755 index c994a64..0000000 --- a/.scripts/memory.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -used=$(free | grep Mem | awk '{print $3/$2 * 100.0}') -sparks=$(spark 0 $used 100) -echo "Mem: $(echo "($used+0.5)/1" | bc)% [${sparks:1:1}]" diff --git a/.scripts/monitor.sh b/.scripts/monitor.sh deleted file mode 100755 index 8ceabb8..0000000 --- a/.scripts/monitor.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/env/bin bash - -xrandr --output HDMI1 --auto --right-of eDP1 -xset mouse 2 0 -$HOME/.scripts/fehbg.sh diff --git a/.scripts/networkname.sh b/.scripts/networkname.sh deleted file mode 100755 index 28a6457..0000000 --- a/.scripts/networkname.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash -nname=$(nmcli connection show --active | grep wireless | awk '{print $1;}') -echo -en "%{A:connman-gtk:}%{F#7d8fa3}\uf1eb%{F-} " -if [[ $nname != "" ]]; then - echo -n "$nname" -else - echo -n "Not connected" -fi -echo "%{A}" - diff --git a/.scripts/offlineimap-notify.sh b/.scripts/offlineimap-notify.sh deleted file mode 100755 index ef92982..0000000 --- a/.scripts/offlineimap-notify.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash - -#run OfflineIMAP once, with quiet interface -imapactive=`ps -ef | grep offlineimap | grep -v grep | wc -l` -mailsync="/usr/bin/offlineimap -u quiet -q" -username=`whoami` -mailhost=`cat /home/$username/.offlineimaprc | grep remotehost | awk '{print $3}'` -online=`host $mailhost | grep "has address" | wc -l` - -# kill offlineimap if active, in some rare cases it may hang -case $imapactive in -'1') - killall offlineimap && sleep 5 -;; -esac - -# if you can do a DNS lookup, sync your mail -case $online in -'1') - $mailsync -;; -esac - -##count new mail for every maildir -#maildirnew="$HOME/mail/*/*/new/" -#new="$(find $maildirnew -type f | wc -l)" - -##count old mail for every maildir -#maildirold="$HOME/mail/*/*/cur/" -#old="$(find $maildirold -type f | wc -l)" - -#if [ $new -gt 0 ] -#then - #export DISPLAY=:0; export XAUTHORITY=~/.Xauthority; - #notify-send -a "OfflineIMAP" "New mail! New: $new Old: $old" -#fi diff --git a/.scripts/tasks.sh b/.scripts/tasks.sh deleted file mode 100755 index 607ef8c..0000000 --- a/.scripts/tasks.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -today="$(task list due:today | grep tasks | awk '{print $1;}')" -total="$(task list | grep tasks | awk '{print $1;}')" -echo "Tasks: $today/$total" diff --git a/.scripts/volume.sh b/.scripts/volume.sh deleted file mode 100755 index d4628c0..0000000 --- a/.scripts/volume.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -echo -e "Vol: %{A:pavucontrol:}%{F#95b47b}\uf027%{F-} $(awk -F[][] '{ print $2 }' <(amixer sget Master) | tail -n 1)%{A}" diff --git a/.scripts/workspaces.sh b/.scripts/workspaces.sh deleted file mode 100755 index 261f107..0000000 --- a/.scripts/workspaces.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash - -chds() { - echo -en "%{A:bspc desktop -f $1:}$2%{A} " -} - -while read -r line; do - echo -n "%{A4:bspc desktop -f prev:}%{A5:bspc desktop -f next:}" - case $line in - W*) - IFS=':' - set -- ${line#?} - while [ $# -gt 0 ]; do - item="$1" - name="${item#?}" - case $item in - f*) - # free desktop - chds $name $name - ;; - F*) - # focused free desktop - chds $name "%{F#f5f0f6}$name%{F-}" - ;; - o*) - # occupied desktop - chds $name "[$name]" - ;; - O*) - # focused occupied desktop - chds $name "%{F#f5f0f6}[$name]%{F-}" - ;; - u*) - # urgent desktop - chds $name $name - ;; - U*) - # focused urgent desktop - chds $name "%{F#f5f0f6}$name%{F-}" - ;; - esac - shift - done - ;; - esac - echo -n "%{A}%{A}" - echo -done < <(bspc subscribe report) diff --git a/.spectrwm.conf b/.spectrwm.conf new file mode 100644 index 0000000..e7b343b --- /dev/null +++ b/.spectrwm.conf @@ -0,0 +1,50 @@ +# Bar +bar_font = GohuFont:size=12 +bar_border_width = 0 +bar_color = rgb:21/21/21 +#clock_enabled = 0 +#bar_action = admiral +bar_enabled = 0 +region = screen[1]:1440x870+0+30 + +modkey = Mod4 + +# Programs +program[lock] = slock +program[term] = st +program[menu] = ~/.scripts/rofi.sh +program[window_menu] = ~/.scripts/rofi.sh window +program[rvol] = amixer -q sset Master 5%+ unmute +program[lvol] = amixer -q sset Master 5%- unmute +program[mute] = amixer -q sset Master toggle +program[disbrightinc] = xbacklight -time 1 -steps 1 -inc 10 +program[disbrightdec] = xbacklight -time 1 -steps 1 -dec 10 +program[keyblightinc] = kbdlight up 20 +program[keyblightdec] = kbdlight down 20 +program[scrot] = scrot + +# Bindings +bind[] = MOD+Shift+Return +bind[window_menu] = MOD+W +bind[term] = MOD+Return +bind[rvol] = XF86AudioRaiseVolume +bind[lvol] = XF86AudioLowerVolume +bind[mute] = XF86AudioMute +bind[disbrightinc] = XF86MonBrightnessUp +bind[disbrightdec] = XF86MonBrightnessDown +bind[keyblightinc] = XF86KbdBrightnessUp +bind[keyblightdec] = XF86KbdBrightnessDown +bind[lock] = MOD+Shift+L +bind[scrot] = MOD+Shift+S + +# Borders +border_width = 2 +color_focus = rgb:7E/57/C2 +color_focus_maximized = rgb:7E/57/C2 +color_unfocus = rgb:12/13/15 +color_unfocus_maximized = rgb:12/13/15 +tile_gap = 20 +region_padding = 20 + +# Quirk +quirk[Bar] = FLOAT + ANYWHERE + NOFOCUSCYCLE + MINIMALBORDER + IGNORESPAWNWS + NOFOCUSONMAP diff --git a/.xinitrc b/.xinitrc new file mode 100644 index 0000000..31ef60a --- /dev/null +++ b/.xinitrc @@ -0,0 +1,58 @@ +#!/bin/sh + +export LANG=en_US.UTF-8 +userresources=$HOME/.Xresources +usermodmap=$HOME/.Xmodmap +sysresources=/etc/X11/xinit/.Xresources +sysmodmap=/etc/X11/xinit/.Xmodmap + +# merge in defaults and keymaps + +if [ -f $sysresources ]; then + + + + + + + + xrdb -merge $sysresources + +fi + +if [ -f $sysmodmap ]; then + xmodmap $sysmodmap +fi + +if [ -f "$userresources" ]; then + + + + + + + + xrdb -merge "$userresources" + +fi + +if [ -f "$usermodmap" ]; then + xmodmap "$usermodmap" +fi + +# start some nice programs + +if [ -d /etc/X11/xinit/xinitrc.d ] ; then + for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do + [ -x "$f" ] && . "$f" + done + unset f +fi + +[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources +compton & +feh --bg-scale -z ~/Wallpapers +# MPD daemon start (if no other user instance exists) +[ ! -s ~/.config/mpd/pid ] && mpd +#~/.scripts/bar.sh +exec spectrwm diff --git a/.zshrc b/.zshrc index ee128a6..a8812c3 100644 --- a/.zshrc +++ b/.zshrc @@ -49,19 +49,21 @@ export EDITOR="nvim" eval "$(hub alias -s)" alias vi="nvim" alias vim="nvim" -alias cl="clear && neofetch --ascii_distro Gentoo" +alias cl="clear && ufetch" alias prm=". $HOME/.prm/prm.sh" alias bar=". $HOME/.scripts/bar.sh" alias pipes="clear; pipes.sh -r 4000; clear" alias tor="cd $HOME/.apps/tor-browser_en-US; ./start-tor-browser.desktop; cd" -. $HOME/.asdf/asdf.sh -. $HOME/.asdf/completions/asdf.bash +alias reboot="sudo /sbin/reboot" +#. $HOME/.asdf/asdf.sh +#. $HOME/.asdf/completions/asdf.bash export PATH="$HOME/.apps/Elm-Platform/0.18/.cabal-sandbox/bin":$PATH export PATH="$HOME/.apps/icecat":$PATH export PATH="$HOME/.apps":$PATH export PATH="$HOME/.local/bin":$PATH export PATH="$HOME/.cargo/bin":$PATH +export PATH="/usr/local/bin":$PATH export JOBS="5" @@ -75,5 +77,12 @@ function countdown(){ notify-send "Timer's done!" } -fortune -o | cowsay +# Colored output +alias grep='grep --color=auto' +alias diff='diff --color=auto' +alias ls='ls --color=auto' +alias make='colormake' +ufetch +echo "-------------------------\n" +fortune -o diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 9cecc1d..0000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/compton.conf b/compton.conf deleted file mode 100644 index 9d75c2d..0000000 --- a/compton.conf +++ /dev/null @@ -1,40 +0,0 @@ -# Inspired by (copied from) github.com/kbrgl/dotfiles - -# Shadow -shadow = true; # Enabled client-side shadows on windows. -no-dock-shadow = false; # Avoid drawing shadows on dock/panel windows. -no-dnd-shadow = false; # Don't draw shadows on DND windows. -clear-shadow = true; # Zero the part of the shadow's mask behind the window (experimental). -shadow-radius = 7; # The blur radius for shadows. (default 12) -shadow-offset-x = -12; # The left offset for shadows. (default -15) -shadow-offset-y = -7; # The top offset for shadows. (default -15) -shadow-opacity = 0.9; # The translucency for shadows. (default .75) -# shadow-red = 0.0; # Red color value of shadow. (0.0 - 1.0, defaults to 0) -# shadow-green = 0.0; # Green color value of shadow. (0.0 - 1.0, defaults to 0) -# shadow-blue = 0.0; # Blue color value of shadow. (0.0 - 1.0, defaults to 0) -# shadow-exclude = '!focused' ; # Exclude conditions for shadows. -shadow-exclude = "g:ei:Notify-osd"; -shadow-ignore-shaped = true; - -# Opacity -menu-opacity = 1.0; # The opacity for menus. (default 1.0) -inactive-opacity = 1.0; # Opacity of inactive windows. (0.1 - 1.0) -frame-opacity = 1.0; # Opacity of window titlebars and borders. (0.1 - 1.0) -inactive-opacity-override = true; # Inactive opacity set by 'inactive-opacity' overrides value of _NET_WM_OPACITY. -opacity-rule = [ "96:class_g = 'Emacs'", # 10% of transparency - "96:!focused && class_g = 'Conkeror'"] # as a bonus -# Fading -fading = true; # Fade windows during opacity changes. -fade-delta = 4; # The time between steps in a fade in milliseconds. (default 10). - -# Other -inactive-dim = 0; # Dim inactive windows. (0.0 - 1.0, defaults to 0). -mark-wmwin-focused = false; # Try to detect WM windows and mark them as active. -mark-ovredir-focused = false; -detect-rounded-corners = false; - -# Window type settings -wintypes: -{ - tooltip = { fade = true; shadow = false; opacity = 0.75; }; -};