X-Git-Url: https://git.shemshak.org/gitweb.cgi/~bandali/configs/blobdiff_plain/58cbbce26dd7afdf798c4a2970ffd7d54f1b3c24..931a4b061e05a4d225a2304a2188adc84f1e3aed:/rc.org diff --git a/rc.org b/rc.org index cef6881..6f76b90 100644 --- a/rc.org +++ b/rc.org @@ -11,6 +11,662 @@ Note: This file is best viewed inside Emacs with org mode. * Configs +This section contains the configuration files (dotfiles) of various +programs I use. + +** [[https://github.com/afewmail/afew][afew]] +:PROPERTIES: +:header-args+: :tangle ~/.config/afew/config +:END: + +#+begin_quote +an initial tagging script for notmuch mail +#+end_quote + +#+begin_src conf +# This is the default filter chain +[SpamFilter] +#[ClassifyingFilter] +[KillThreadsFilter] +#[ListMailsFilter] +[ArchiveSentMailsFilter] +sent_tag = sent +[InboxFilter] + +#[Filter.1] +#query = 'folder:amin/lists/.haskell-cafe' +#tags = +lists;+lists/haskell-cafe +#message = lists/haskell-cafe + +#[Filter.2] +#query = 'folder:amin/lists/.haskell-weekly' +#tags = +lists;+lists/haskell-weekly +#message = lists/haskell-weekly + +#[Filter.3] +#query = 'folder:amin/lists/.hackernewsletter' +#tags = +lists;+lists/hackernewsletter +#message = lists/hackernewsletter + + +#[FolderNameFilter] +#folder_blacklist = Inbox +#maildir_separator = /. +#folder_transforms = Drafts:draft Junk:spam Trash:deleted Sent:sent Archive:archive lists/haskell-cafe:lists/haskell-cafe +#+end_src + +** bspwm + +*** bspwmrc +:PROPERTIES: +:header-args+: :tangle ~/.config/bspwm/bspwmrc :shebang "#!/bin/sh" +:END: + +#+begin_src sh +sxhkd & +sh ~/.fehbg & +xfce4-panel -d & +#compton & +sleep 0.5 && pasystray --notify=all & + +bspc monitor -d I II III IV V VI VII VIII IX X +#bspc monitor eDP-1 -d I II III IV V +#bspc monitor HDMI-1 -d VI VII VIII IX X + +#bspc config border_width 2 +#bspc config window_gap 8 +bspc config window_gap 0 + +bspc config bottom_padding 26 + +bspc config split_ratio 0.52 +bspc config borderless_monocle true +bspc config gapless_monocle true +bspc config click_to_focus button1 +bspc config directional_focus_tightness low + +bspc rule -a Firefox desktop='^1' follow=on +bspc rule -a Nightly desktop='^1' follow=on +bspc rule -a Emacs desktop='^2' state=tiled follow=on +#bspc rule -a Chromium desktop='^4' follow=on +bspc rule -a URxvt state=floating +bspc rule -a URxvt:tiled state=tiled +bspc rule -a Connman-gtk state=floating +bspc rule -a Xfce4-panel state=floating +bspc rule -a TelegramDesktop state=floating +bspc rule -a Ec state=floating +bspc rule -a Pavucontrol state=floating +bspc rule -a Eog state=floating +bspc rule -a Seahorse state=floating +bspc rule -a mpv state=floating +bspc rule -a Evince state=floating +bspc rule -a Meld state=floating +bspc rule -a Autokey-gtk state=floating +bspc rule -a Mousepad state=floating +bspc rule -a Wrapper-1.0 state=floating +bspc rule -a File-roller state=floating +bspc rule -a Gnome-disks state=floating +bspc rule -a Termite state=floating +bspc rule -a Termite:tiled state=tiled +bspc rule -a Thunderbird:Calendar state=floating +bspc rule -a Audacity state=floating +bspc rule -a Proof state=floating # pvs x-show-proof +bspc rule -a Nm-connection-editor state=floating +bspc rule -a Wire state=floating +bspc rule -a discord state=floating +bspc rule -a X2goclient state=floating +bspc rule -a SimpleScreenRecorder state=floating +bspc rule -a Gimp state=floating +bspc rule -a Wrapper-2.0 state=floating +bspc rule -a Zathura state=tiled +#+end_src + +*** sxhkdrc +:PROPERTIES: +:header-args+: :tangle ~/.config/sxhkd/sxhkdrc +:END: + +#+begin_src conf +# +# wm independent hotkeys +# + +# terminal emulator +super + {_,shift} + Return + urxvt{_, -name tiled} + +#super + {_,shift} + Return +# termite{_, --name=tiled} + +# program launcher +super + space + rofi -show run -display-run '> ' -display-window ' 🗔 ' + +super + alt + space + xfce4-popup-whiskermenu + +# window finder +super + backslash + rofi -show window -display-run '> ' -display-window ' 🗔 ' + +# password manager +alt + space + rofi-pass + +# firefox +#super + r +# firefox + +# chromium +#super + c +# chromium -incognito + +# emacs +super + e + emacs + +# make sxhkd reload its configuration files: +super + Escape + pkill -USR1 -x sxhkd + +# volume {up,down} +XF86Audio{Raise,Lower}Volume + pamixer --allow-boost --{in,de}crease 5 + +# mute +XF86AudioMute + pamixer --toggle-mute + +# playback control +XF86Audio{Play,Prev,Next} + mpc {toggle,prev,next} + +# lock the screen +super + shift + q + light-locker-command -l + +# Toggle keyboard layout +super + F7 + toggle-layout + +# Toggle Xfce presentation mode +XF86LaunchB + toggle-presentation-mode + +# monitor brightness +XF86MonBrightness{Up,Down} + light -{A,U} 5 + +super + apostrophe + rofi-light + +# keyboard brightness +#XF86KbdBrightness{Up,Down} +# kbdlight {up,down} + +# +# bspwm hotkeys +# + +# quit bspwm normally +super + alt + Escape + bspc quit + +# close and kill +super + {w,q} + bspc node -{c,k} + +# alternate between the tiled and monocle layout +super + m + bspc desktop -l next + +# send the newest marked node to the newest preselected node +super + y + bspc node newest.marked.local -n newest.!automatic.local + +# swap the current node and the biggest node +super + g + bspc node -s biggest + +# +# state/flags +# + +# set the window state +super + {t,shift + t,s,f} + bspc node -t {tiled,pseudo_tiled,floating,fullscreen} + +# set the node flags +super + ctrl + {m,x,y,z} + bspc node -g {marked,locked,sticky,private} + +# +# focus/swap +# + +# focus the node in the given direction +super + {_,shift + }{h,j,k,l} + bspc node -{f,s} {west,south,north,east} + +# focus the node for the given path jump +super + {p,b,comma,period} + bspc node -f @{parent,brother,first,second} + +# focus the next/previous node in the current desktop +super + {_,shift + }c + bspc node -f {next,prev}.local + +# focus the next/previous desktop in the current monitor +super + bracket{left,right} + bspc desktop -f {prev,next}.local + +# send to next/prev desktop +super + shift + bracket{left,right} + bspc node -d {prev,next} --follow + +# focus the last node/desktop +super + {grave,Tab} + bspc {node,desktop} -f last + +# focus the older or newer node in the focus history +super + {o,i} + bspc wm -h off; \ + bspc node {older,newer} -f; \ + bspc wm -h on + +# focus or send to the given desktop +super + {_,shift + }{1-9,0} + bspc {desktop -f,node -d} '^{1-9,10}' + +# +# preselect +# + +# preselect the direction +super + ctrl + {h,j,k,l} + bspc node -p {west,south,north,east} + +# preselect the ratio +super + ctrl + {1-9} + bspc node -o 0.{1-9} + +# cancel the preselection for the focused node +super + ctrl + space + bspc node -p cancel + +# cancel the preselection for the focused desktop +super + ctrl + shift + space + bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel + +# +# move/resize +# + +# expand a window by moving one of its side outward +super + alt + {h,j,k,l} + bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} + +# contract a window by moving one of its side inward +super + alt + shift + {h,j,k,l} + bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0} + +# move a floating window +super + {Left,Down,Up,Right} + bspc node -v {-20 0,0 20,0 -20,20 0} + +#alt + bracket{left,right} +# xdotool key --clearmodifiers ctrl+Page_{Up,Down} +#+end_src + +** compton +:PROPERTIES: +:header-args+: :tangle ~/.config/compton.conf +:END: + +#+begin_src conf +# Shadow +shadow = false; # Enabled client-side shadows on windows. +no-dock-shadow = true; # Avoid drawing shadows on dock/panel windows. +no-dnd-shadow = true; # Don't draw shadows on DND windows. +clear-shadow = true; # Zero the part of the shadow's mask behind the + # window. Fix some weirdness with ARGB windows. +shadow-radius = 5; # The blur radius for shadows. (default 12) +shadow-offset-x = -5; # The left offset for shadows. (default -15) +shadow-offset-y = -5; # The top offset for shadows. (default -15) +# shadow-opacity = 0.7; # 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 = [ "n:e:Notification", "class_g = 'Chromium'", "class_g = 'Dmenu'", "class_g = 'Firefox' && argb" ]; # Exclude conditions for shadows. +# shadow-exclude = "n:e:Notification"; +#shadow-exclude = [ "_GTK_FRAME_EXTENTS@:c" ] # Fix dual shadow on some gtk3 powered applications +shadow-ignore-shaped = true; # Avoid drawing shadow on all shaped windows + # (see also: --detect-rounded-corners) + +# Opacity +menu-opacity = 1.0; # The opacity for menus. (default 1.0) +#inactive-opacity = 0.9; # Default opacity of inactive windows. (0.0 - 1.0) +# active-opacity = 0.8; # Default opacity for active windows. (0.0 - 1.0) +frame-opacity = 1.0; # Opacity of window titlebars and borders. (0.1 - 1.0) +# inactive-opacity-override = true; # Let inactive opacity set by 'inactive-opacity' overrides + # value of _NET_WM_OPACITY. Bad choice. +alpha-step = 0.06; # XRender backend: Step size for alpha pictures. Increasing + # it may result in less X resource usage, + # Yet fading may look bad. +#inactive-dim = 0.5; # Dim inactive windows. (0.0 - 1.0) +#inactive-dim-fixed = true; # Do not let dimness adjust based on window opacity. +# blur-background = true; # Blur background of transparent windows. + # Bad performance with X Render backend. + # GLX backend is preferred. +# blur-background-frame = true; # Blur background of opaque windows with transparent + # frames as well. +blur-background-fixed = true; # Do not let blur radius adjust based on window opacity. +blur-background-exclude = [ "window_type = 'dock'", "window_type = 'desktop'" ]; + # Exclude conditions for background blur. + +# Fading +fading = false; # Fade windows during opacity changes. +fade-delta = 3; # The time between steps in a fade in milliseconds. (default 10). +fade-in-step = 0.03; # Opacity change between steps while fading in. (default 0.028). +fade-out-step = 0.03; # Opacity change between steps while fading out. (default 0.03). +# no-fading-openclose = true; # Avoid fade windows in/out when opening/closing. +fade-exclude = [ ]; # Exclude conditions for fading. + +# Other +backend = "glx" # Backend to use: "xrender" or "glx". GLX backend is typically + # much faster but depends on a sane driver. +mark-wmwin-focused = true; # Try to detect WM windows and mark them as active. +mark-ovredir-focused = true; # Mark all non-WM but override-redirect windows active (e.g. menus). +use-ewmh-active-win = true; # Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused + # instead of using FocusIn/Out events. Usually more reliable but + # depends on a EWMH-compliant WM. +detect-rounded-corners = false; # Detect rounded corners and treat them as rectangular when --shadow-ignore- shaped is on. +detect-client-opacity = true; # Detect _NET_WM_OPACITY on client windows, useful for window + # managers not passing _NET_WM_OPACITY of client windows to frame + # windows. +refresh-rate = 0; # For --sw-opti: Specify refresh rate of the screen. 0 for auto. +vsync = "drm"; # "none", "drm", "opengl", "opengl-oml", "opengl-swc", "opengl-mswc" + # See man page for more details. +dbe = false; # Enable DBE painting mode. Rarely needed. +paint-on-overlay = true; # Painting on X Composite overlay window. Recommended. +sw-opti = false; # Limit compton to repaint at most once every 1 / refresh_rate. + # Incompatible with certain VSync methods. +unredir-if-possible = false; # Unredirect all windows if a full-screen opaque window is + # detected, to maximize performance for full-screen windows. +focus-exclude = [ ]; # A list of conditions of windows that should always be considered + # focused. +detect-transient = true; # Use WM_TRANSIENT_FOR to group windows, and consider windows in + # the same group focused at the same time. +detect-client-leader = true; # Use WM_CLIENT_LEADER to group windows. +invert-color-include = [ ]; # Conditions for windows to be painted with inverted color. + +# GLX backend # GLX backend fine-tune options. See man page for more info. +glx-no-stencil = true; # Recommended. +glx-copy-from-front = false; # Useful with --glx-swap-method, +# glx-use-copysubbuffermesa = true; # Recommended if it works. Breaks VSync. +# glx-no-rebind-pixmap = true; # Recommended if it works. +glx-no-rebind-pixmap = true; # Recommended if it works. +#glx-swap-method = "4"; # See man page. +glx-swap-method = "4"; # See man page. + +# Window type settings +wintypes: +{ + tooltip = { fade = true; shadow = false; opacity = 1; focus = true; }; + menu = { shadow = false; }; + dropdown_menu = { shadow = false; }; + popup_menu = { shadow = false; }; + utility = { shadow = false; }; + # fade: Fade the particular type of windows. + # shadow: Give those windows shadow + # opacity: Default opacity for the type of windows. + # focus: Whether to always consider windows of this type focused. +}; +#+end_src + +** Dunst +:PROPERTIES: +:header-args+: :tangle ~/.config/dunst/dunstrc +:END: + +#+begin_src conf +[global] +#font = Ubuntu Mono 10.5 +font = Inconsolata 11 + +# Path to default icons. +icon_folders = /usr/share/icons/Moka/16x16/status/:/usr/share/icons/Moka/16x16/devices/:/usr/share/icons/Faba-Mono/16x16/status/:/usr/share/icons/Faba-Mono/16x16/devices/:/usr/share/icons/Moka/16x16/actions/:/usr/share/icons/Moka/16x16/categories/:/usr/share/icons/Moka/16x16/mimetypes/:/usr/share/icons/Moka/16x16/apps/:/usr/share/icons/Moka/16x16/places/:/usr/share/icons/Paper/16x16/status/ + +icon_position = left +# bold +# italic +# strikethrough +# underline +markup = full +# The format of the message. Possible variables are: +# %a appname +# %s summary +# %b body +# %i iconname (including its path) +# %I iconname (without its path) +# %p progress value if set ([ 0%] to [100%]) or nothing +# Markup is allowed +format = "%s\n%b" +# Sort messages by urgency +sort = yes +# Show how many messages are currently hidden (because of geometry) +indicate_hiddenl= no +# Alignment of message text. +# Possible values are "left", "center" and "right" +alignment = center +# The frequency with wich text that is longer than the notification +# window allows bounces back and forth. +# This option conflicts with 'word_wrap'. +# Set to 0 to disable +bounce_freq = 3 +# show age of message if message is older than show_age_threshold seconds. +# set to -1 to disable +show_age_threshold = -1 +# split notifications into multiple lines if they don't fit into geometry +word_wrap = yes +# ignore newlines '\n' in notifications +ignore_newline = no +# The geometry of the message window. +# geometry [{width}]x{height}][+/-{x}+/-{y}] +# The height is measured in number of notifications everything else in pixels. If the width +# is omitted but the height is given ("-geometry x2"), the message window +# expands over the whole screen (dmenu-like). If width is 0, +# the window expands to the longest message displayed. +# A positive x is measured from the left, a negative from the +# right side of the screen. Y is measured from the top and down respectevly. +# The width can be negative. In this case the actual width is the +# screen width minus the width defined in within the geometry option. +#geometry = "410x12-12+12" +#geometry = "0x0-30-30" +geometry = "260x12-30-30" +# The transparency of the window. range: [0; 100] +# This option will only work if a compositing windowmanager is present (e.g. xcompmgr, compiz, etc..) +transparency = 0 +# Don't remove messages, if the user is idle (no mouse or keyboard input) +# for longer than idle_threshold seconds. +# Set to 0 to disable. +idle_threshold = 120 +# Which monitor should the notifications be displayed on. +monitor = 0 +# Display notification on focused monitor. Possible modes are: +# mouse: follow mouse pointer +# keyboard: follow window with keyboard focus +# none: don't follow anything +# +# "keyboard" needs a windowmanager that exports the _NET_ACTIVE_WINDOW property. +# This should be the case for almost all modern windowmanagers. +# +# If this option is set to mouse or keyboard, the monitor option will be +# ignored. +follow = keyboard +# should a notification popped up from history be sticky or +# timeout as if it would normally do. +sticky_history = yes +# The height of a single line. If the height is smaller than the font height, +# it will get raised to the font height. +# This adds empty space above and under the text. +line_height = 0 + +show_indicators = yes + +# Draw a line of 'separatpr_height' pixel height between two notifications. +# Set to 0 to disable +separator_height = 3 +# padding between text and separator +padding = 8 +# horizontal padding +horizontal_padding = 8 +# Define a color for the separator. +# possible values are: +# * auto: dunst tries to find a color fitting to the background +# * foreground: use the same color as the foreground +# * frame: use the same color as the frame. +# * anything else will be interpreted as a X color +separator_color = foreground +# print a notification on startup +# This is mainly for error detection, since dbus (re-)starts dunst +# automatically after a crash. +startup_notification = false +# dmenu path +#dmenu = /usr/bin/dmenu -p dunst: +dmenu = /usr/bin/rofi -dmenu -p dunst: +# browser for opening urls in context menu +browser = /usr/bin/firefox -new-tab +[frame] +width = 0 +color = "#377222" +[shortcuts] +# shortcuts are specified as [modifier+][modifier+]...key +# available modifiers are 'ctrl', 'mod1' (the alt-key), 'mod2', 'mod3' +# and 'mod4' (windows-key) +# xev might be helpful to find names for keys +# close notification +close = ctrl+space +# close all notifications +close_all = ctrl+shift+space +# redisplay last message(s) +# On the US keyboard layout 'grave' is normally above TAB and left of '1'. +history = ctrl+shift+h +# context menu +context = ctrl+shift+period +[urgency_low] +# IMPORTANT: colors have to be defined in quotation marks. +# Otherwise the '#' and following would be interpreted as a comment. +background = "#1d2a30" +foreground = "#71c2af" +timeout = 3 +[urgency_normal] +background = "#1d2a30" +foreground = "#71c2af" +timeout = 0 +[urgency_critical] +background = "#1d2a30" +foreground = "#ff9982" +timeout = 0 + +# Every section that isn't one of the above is interpreted as a rules +# to override settings for certain messages. +# Messages can be matched by 'appname', 'summary', 'body' or 'icon' +# and you can override the 'timeout', 'urgency', 'foreground', 'background' +# and 'format'. +# Shell-like globbing will get expanded. +# +# SCRIPTING +# you can specify a script that gets run when the rule matches by setting +# the 'script' option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: if you don't want a notification to be displayed, set the format to "" +# NOTE: It might be helpful to run dunst -print in a terminal in order to find +# fitting options for rules. +#[espeak] +# summary = "*" +# script = dunst_espeak.sh +#[script-test] +# summary = "*script*" +# script = dunst_test.sh +#[ignore] +## This notification will not be displayed +# summary = "foobar" +# format = "" +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +[xfpm-backlight] + summary = *Brightness* + urgency = low +#+end_src + +** Fontconfig +:PROPERTIES: +:header-args+: :tangle ~/.config/fontconfig/fonts.conf +:END: + +#+begin_src xml + + + + + + rgb + + + + + true + + + + + hintslight + + + + + true + + + + + lcddefault + + + ~/.fonts + + + + Helvetica + + Liberation Sans + + + +#+end_src + ** Git *** gitconfig @@ -130,3 +786,229 @@ $clean_ext = "aux out"; # editor. # $pdf_previewer = 'exec zathura --synctex-forward -x \'emacsclient --no-wait +%{line} %{input}\' %O %S'; #+end_src + +** getmail + +*** getmailrc +:PROPERTIES: +:header-args+: :tangle ~/.getmail/getmailrc +:END: + +#+begin_src conf +[retriever] +type = SimplePOP3SSLRetriever +server = fencepost.gnu.org +username = aminb +password_command = ("gpg2", "--no-tty", "-q", "-d", "~/.passwd/gnu.gpg") +port = 995 +use_apop = True + +[destination] +type = Maildir +path = ~/mail/gnu/Inbox/ + +[options] +delete = True +#+end_src + +*** getmail.service +:PROPERTIES: +:header-args+: :tangle ~/.config/systemd/user/getmail.service +:END: + +#+begin_src conf :tangle no +[Unit] +Description=getmail service + +[Service] +Type=oneshot +ExecStart=/usr/bin/getmail +StandardOutput=syslog +StandardError=syslog +#+end_src + +*** getmail.timer +:PROPERTIES: +:header-args+: :tangle ~/.config/systemd/user/getmail.timer +:END: + +#+begin_src conf :tangle no +[Unit] +Description=getmail timer + +[Timer] +OnCalendar=*:0/30 +Persistent=true +Unit=getmail.service + +[Install] +WantedBy=timers.target +#+end_src + +** GnuPG +:PROPERTIES: +:header-args+: :tangle ~/.gnupg/gpg-agent.conf +:END: + +#+begin_src conf +default-cache-ttl 43200 +max-cache-ttl 43200 + +default-cache-ttl-ssh 10800 +max-cache-ttl-ssh 10800 + +# pinentry-program /usr/bin/pinentry-qt +#+end_src + +* Scripts + +This section contains various useful scripts and the ones used by the +programs above. For instance, =toggle-tablet= for switching to and +from tablet mode on my X220T, =toggle-presentation-mode= for toggling +Xfce's presentation mode which keeps the screen awake, and +=rofi-light= a small utility that uses [[https://github.com/DaveDavenport/rofi][Rofi]] to ask and [[https://github.com/haikarainen/light][light]] to set an +exact brightness value. + +** rofi-light +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/rofi-light :shebang "#!/bin/bash" +:END: + +#+begin_src bash +cur=$(light -G) +val=$(rofi -dmenu -mesg "light $cur" -p "light -S " -l 0 -width 8) +light -S $val +#+end_src + +** toggle-layout +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/toggle-layout :shebang "#!/bin/bash" +:END: + +#+begin_src bash +lang="$(setxkbmap -print | grep xkb_symbols | cut -d'+' -f 2)" + +if [ "$lang" = "us" ]; then + setxkbmap ir +else + setxkbmap us + # xmodmap $HOME/.Xmodmap +fi +#+end_src + +** toggle-presentation-mode +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/toggle-presentation-mode :shebang "#!/bin/bash" +:END: + +#+begin_src bash +xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/presentation-mode -T +#+end_src + +** Fun :) + +*** eat-em +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/eat-em :shebang "#!/bin/sh" +:END: + +#+begin_src sh +# Original Posted at http://crunchbang.org/forums/viewtopic.php?pid=126921%23p126921#p126921 +# [ESC] character in original post removed here. + +# ANSI Color -- use these variables to easily have different color +# and format output. Make sure to output the reset sequence after +# colors (f = foreground, b = background), and use the 'off' +# feature for anything you turn on. + +initializeANSI() +{ + esc="$(echo -en '\e')" + + blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m" + yellowf="${esc}[33m" bluef="${esc}[34m"; purplef="${esc}[35m" + cyanf="${esc}[36m"; whitef="${esc}[37m" + + blackb="${esc}[40m"; redb="${esc}[41m"; greenb="${esc}[42m" + yellowb="${esc}[43m" blueb="${esc}[44m"; purpleb="${esc}[45m" + cyanb="${esc}[46m"; whiteb="${esc}[47m" + + boldon="${esc}[1m"; boldoff="${esc}[22m" + italicson="${esc}[3m"; italicsoff="${esc}[23m" + ulon="${esc}[4m"; uloff="${esc}[24m" + invon="${esc}[7m"; invoff="${esc}[27m" + + reset="${esc}[0m" +} + +# note in this first use that switching colors doesn't require a reset +# first - the new color overrides the old one. + +#clear + +initializeANSI + +cat << EOF + + ${yellowf} ▄███████▄${reset} ${redf} ▄██████▄${reset} ${greenf} ▄██████▄${reset} ${bluef} ▄██████▄${reset} ${purplef} ▄██████▄${reset} ${cyanf} ▄██████▄${reset} + ${yellowf}▄█████████▀▀${reset} ${redf}▄${whitef}█▀█${redf}██${whitef}█▀█${redf}██▄${reset} ${greenf}▄${whitef}█▀█${greenf}██${whitef}█▀█${greenf}██▄${reset} ${bluef}▄${whitef}█▀█${bluef}██${whitef}█▀█${bluef}██▄${reset} ${purplef}▄${whitef}█▀█${purplef}██${whitef}█▀█${purplef}██▄${reset} ${cyanf}▄${whitef}█▀█${cyanf}██${whitef}█▀█${cyanf}██▄${reset} + ${yellowf}███████▀${reset} ${redf}█${whitef}▄▄█${redf}██${whitef}▄▄█${redf}███${reset} ${greenf}█${whitef}▄▄█${greenf}██${whitef}▄▄█${greenf}███${reset} ${bluef}█${whitef}▄▄█${bluef}██${whitef}▄▄█${bluef}███${reset} ${purplef}█${whitef}▄▄█${purplef}██${whitef}▄▄█${purplef}███${reset} ${cyanf}█${whitef}▄▄█${cyanf}██${whitef}▄▄█${cyanf}███${reset} + ${yellowf}███████▄${reset} ${redf}████████████${reset} ${greenf}████████████${reset} ${bluef}████████████${reset} ${purplef}████████████${reset} ${cyanf}████████████${reset} + ${yellowf}▀█████████▄▄${reset} ${redf}██▀██▀▀██▀██${reset} ${greenf}██▀██▀▀██▀██${reset} ${bluef}██▀██▀▀██▀██${reset} ${purplef}██▀██▀▀██▀██${reset} ${cyanf}██▀██▀▀██▀██${reset} + ${yellowf} ▀███████▀${reset} ${redf}▀ ▀ ▀ ▀${reset} ${greenf}▀ ▀ ▀ ▀${reset} ${bluef}▀ ▀ ▀ ▀${reset} ${purplef}▀ ▀ ▀ ▀${reset} ${cyanf}▀ ▀ ▀ ▀${reset} + + ${boldon}${yellowf} ▄███████▄ ${redf} ▄██████▄ ${greenf} ▄██████▄ ${bluef} ▄██████▄ ${purplef} ▄██████▄ ${cyanf} ▄██████▄${reset} + ${boldon}${yellowf}▄█████████▀▀ ${redf}▄${whitef}█▀█${redf}██${whitef}█▀█${redf}██▄ ${greenf}▄${whitef}█▀█${greenf}██${whitef}█▀█${greenf}██▄ ${bluef}▄${whitef}█▀█${bluef}██${whitef}█▀█${bluef}██▄ ${purplef}▄${whitef}█▀█${purplef}██${whitef}█▀█${purplef}██▄ ${cyanf}▄${whitef}█▀█${cyanf}██${whitef}█▀█${cyanf}██▄${reset} + ${boldon}${yellowf}███████▀ ${redf}█${whitef}▄▄█${redf}██${whitef}▄▄█${redf}███ ${greenf}█${whitef}▄▄█${greenf}██${whitef}▄▄█${greenf}███ ${bluef}█${whitef}▄▄█${bluef}██${whitef}▄▄█${bluef}███ ${purplef}█${whitef}▄▄█${purplef}██${whitef}▄▄█${purplef}███ ${cyanf}█${whitef}▄▄█${cyanf}██${whitef}▄▄█${cyanf}███${reset} + ${boldon}${yellowf}███████▄ ${redf}████████████ ${greenf}████████████ ${bluef}████████████ ${purplef}████████████ ${cyanf}████████████${reset} + ${boldon}${yellowf}▀█████████▄▄ ${redf}██▀██▀▀██▀██ ${greenf}██▀██▀▀██▀██ ${bluef}██▀██▀▀██▀██ ${purplef}██▀██▀▀██▀██ ${cyanf}██▀██▀▀██▀██${reset} + ${boldon}${yellowf} ▀███████▀ ${redf}▀ ▀ ▀ ▀ ${greenf}▀ ▀ ▀ ▀ ${bluef}▀ ▀ ▀ ▀ ${purplef}▀ ▀ ▀ ▀ ${cyanf}▀ ▀ ▀ ▀${reset} + +EOF +#+end_src + +*** invade-em +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/invade-em :shebang "#!/bin/bash" +:END: + +#+begin_src bash +# +# ANSI color scheme script featuring Space Invaders +# +# Original: http://crunchbang.org/forums/viewtopic.php?pid=126921%23p126921#p126921 +# Modified by lolilolicon +# + +f=3 b=4 +for j in f b; do + for i in {0..7}; do + printf -v $j$i %b "\e[${!j}${i}m" + done +done +bld=$'\e[1m' +rst=$'\e[0m' + +cat << EOF + + $f1 ▀▄ ▄▀ $f2 ▄▄▄████▄▄▄ $f3 ▄██▄ $f4 ▀▄ ▄▀ $f5 ▄▄▄████▄▄▄ $f6 ▄██▄ $rst + $f1 ▄█▀███▀█▄ $f2███▀▀██▀▀███ $f3▄█▀██▀█▄ $f4 ▄█▀███▀█▄ $f5███▀▀██▀▀███ $f6▄█▀██▀█▄$rst + $f1█▀███████▀█ $f2▀▀███▀▀███▀▀ $f3▀█▀██▀█▀ $f4█▀███████▀█ $f5▀▀███▀▀███▀▀ $f6▀█▀██▀█▀$rst + $f1▀ ▀▄▄ ▄▄▀ ▀ $f2 ▀█▄ ▀▀ ▄█▀ $f3▀▄ ▄▀ $f4▀ ▀▄▄ ▄▄▀ ▀ $f5 ▀█▄ ▀▀ ▄█▀ $f6▀▄ ▄▀$rst + + $bld$f1▄ ▀▄ ▄▀ ▄ $f2 ▄▄▄████▄▄▄ $f3 ▄██▄ $f4▄ ▀▄ ▄▀ ▄ $f5 ▄▄▄████▄▄▄ $f6 ▄██▄ $rst + $bld$f1█▄█▀███▀█▄█ $f2███▀▀██▀▀███ $f3▄█▀██▀█▄ $f4█▄█▀███▀█▄█ $f5███▀▀██▀▀███ $f6▄█▀██▀█▄$rst + $bld$f1▀█████████▀ $f2▀▀▀██▀▀██▀▀▀ $f3▀▀█▀▀█▀▀ $f4▀█████████▀ $f5▀▀▀██▀▀██▀▀▀ $f6▀▀█▀▀█▀▀$rst + $bld$f1 ▄▀ ▀▄ $f2▄▄▀▀ ▀▀ ▀▀▄▄ $f3▄▀▄▀▀▄▀▄ $f4 ▄▀ ▀▄ $f5▄▄▀▀ ▀▀ ▀▀▄▄ $f6▄▀▄▀▀▄▀▄$rst + + + $f7▌$rst + + $f7▌$rst + + $f7 ▄█▄ $rst + $f7▄█████████▄$rst + $f7▀▀▀▀▀▀▀▀▀▀▀$rst + +EOF +#+end_src