Structure the project with NixOS-styled distros
It's been a while but I've been using NixOS (or anything styled like it like GuixSD, for example) and distro-hopped from Arch Linux. I think it's high noon for making the structure of this setup to be truer to one of the big objectives which is how easy to transfer this between different setups. Which means I removed some things such as the package lists, systemd config files, and package manager-specific configs. While the solution is easy (which is to simply ignore the system-specific files) but I'm not going with the pragmatic solution not because I'm a dumbass but because I'm so smart that I want to create a challenge for myself to solve a puzzle on figuring out a way on how to structure my dotfiles. :) Such a productive use of my time, that's for sure.
0
.editorconfig
Normal file → Executable file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
**/.envrc
|
100
README.adoc
Normal file → Executable file
@ -40,9 +40,9 @@ image::docs/dropdown-term.png[A dropdown terminal]
|
||||
|
||||
== Specifications
|
||||
|
||||
Here are the main specifications of my machine currently running this (as of 2020-05-01):
|
||||
Here are the main specifications of my machine currently running this (as of 2020-09-11):
|
||||
|
||||
* **Operating system**: https://www.archlinux.org/[Arch Linux]
|
||||
* **Operating system**: https://nixos.org/[NixOS]-based distros (e.g., NixOS, GuixSD)
|
||||
* **Display server**: X Window System using https://www.x.org/wiki/[Xorg]
|
||||
* **Window manager**: https://github.com/baskerville/bspwm[bspwm]
|
||||
* **Terminal emulator**: https://github.com/jwilm/alacritty/[Alacritty]
|
||||
@ -61,13 +61,11 @@ Here's what the setup should look like (aside from the Stow packages which will
|
||||
----
|
||||
dotfiles
|
||||
├── docs/
|
||||
├── aur-packages.txt
|
||||
├── LICENSE
|
||||
├── locations.json
|
||||
├── makefile
|
||||
├── manager.py
|
||||
├── packages.txt
|
||||
└── README.adoc
|
||||
├── README.adoc
|
||||
└── vtsm
|
||||
----
|
||||
|
||||
The big picture for my dotfiles setup have big goals and those are (according to priority):
|
||||
@ -77,27 +75,15 @@ The big picture for my dotfiles setup have big goals and those are (according to
|
||||
* Looking cool (but not too cool or else my potato will weep).
|
||||
|
||||
|
||||
=== The package lists
|
||||
|
||||
Starting from the most important of the set, `packages.txt` and `aur-packages.txt` are simply a list of installed packages from the official Arch repo and AUR respectively.
|
||||
I prefer the lists to be separated just for ease of maintenance.
|
||||
They are going to be committed at the start of every month (if it works that is).
|
||||
|
||||
Since the name of the packages varies between distro to distro, this is only valid for Arch Linux.
|
||||
|
||||
|
||||
=== How I maintain my dotfiles
|
||||
|
||||
`manager.py` (named Very Tiny Stow Manager or VTSM for short) is a tiny https://www.gnu.org/software/stow/[GNU Stow]-like manager created for this setup.
|
||||
The dotfiles are mostly intended to be used with GNU Stow.
|
||||
If you're not familiar with it, you can read http://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html[this sweet short article] to get you started.
|
||||
|
||||
However, with Python 3 (specifically 3.8) installed, you have another option.
|
||||
Behold, the link:./vtsm["Very Tiny Stow Manager"] (VTSM for short)!
|
||||
VTSM takes inspiration from GNU Stow (obviously) and https://github.com/holman/dotfiles[how Zach Holman's dotfiles are set].
|
||||
When managing your dotfiles, VTSM is going to be your friend/workmate.
|
||||
(Nonetheless, I tried to make it generic for other cases.)
|
||||
footnote:[You need Python installed for this.
|
||||
For future references, the version by the time first writing the script is at v3.8.1.
|
||||
That said, I may rewrite this in Bash instead or even just a makefile.]
|
||||
footnote:[I may have made my life harder when I can use something like https://yadm.io/[yadm] or https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/[a bare git repo] instead.]
|
||||
|
||||
NOTE: Using this script is optional and feel free to discard this and exclusively use GNU Stow or something else.
|
||||
|
||||
Using VTSM should be simple and it is nothing special, really.
|
||||
All it needs is a directory containing a file named `locations.json` with the name of the packages and their target path.
|
||||
@ -136,13 +122,11 @@ For the command string, it is a https://docs.python.org/3/library/string.html#st
|
||||
|
||||
# Running the program without any arguments for a test run.
|
||||
# There should be a bunch of `echo` commands being ran for all of the listed packages.
|
||||
./manager.py
|
||||
./vtsm
|
||||
|
||||
# Create the directories of the target path and install them with GNU Stow.
|
||||
# Bada-bing, bada-boom, you have installed your setup or something.
|
||||
./manager.py --commands "mkdir -p {location} && stow {package} --target {location}"
|
||||
|
||||
# (You could also use the makefile for this.)
|
||||
./vtsm --commands "mkdir -p {location} && stow {package} --target {location}"
|
||||
----
|
||||
|
||||
|
||||
@ -168,13 +152,8 @@ The script is based from https://github.com/LukeSmithxyz/voidrice/blob/master/.l
|
||||
* link:./bin/toggle-process[Switching on/off programs].
|
||||
Useful for situations where only one instance of the program is desirable.
|
||||
|
||||
* link:./bin/select-theme[A basic theme selection for easy color scheme generation] with https://github.com/muennich/sxiv[sxiv].
|
||||
|
||||
* link:./bin/choose-emoji-menu[A universal emoji list] for easy copy-pasting and clear communication with those who speak Emojian.
|
||||
|
||||
Aside from the scripts, there are also some details and files that are not committed to this setup for privacy and security reasons.
|
||||
A few examples of which is my cron setups where it is tasked with updating and committing the package lists to the Git repo, updating the packages, cleaning the cache, and so much more.
|
||||
|
||||
|
||||
|
||||
|
||||
@ -282,23 +261,6 @@ Seriously though, I find nvim to be way better for configuration.]
|
||||
It is based on https://github.com/gillescastel/latex-snippets/[_Gilles Castel_'s UltiSnips LaTeX snippets].
|
||||
|
||||
|
||||
=== https://www.archlinux.org/pacman/[pacman]
|
||||
|
||||
The default package manager for Arch Linux.
|
||||
|
||||
* Config location is at link:pacman/[`pacman/`]
|
||||
* The usual target path is at `/etc/pacman.d`.
|
||||
* Minimum version (from `pacman --version`):
|
||||
** `Pacman v5.1.3 - libalpm v11.0.3`
|
||||
* Contains the configuration file, a `mirrorlist` file, and some https://www.archlinux.org/mirrorlist/?ip_version=6[pacman hooks].
|
||||
* For the mirrorlist, change it accordingly or https://www.archlinux.org/mirrorlist/?ip_version=6[generate another one].
|
||||
It is also monthly updated from a cron job.
|
||||
* Since this requires root privilege, this is not included in the installation script.
|
||||
Simply copy it (i.e., `sudo cp pacman/ /etc/pacman.d/`) and you're done.
|
||||
* The dotfiles repo also contains two package lists (i.e., `packages.txt` and `aur-packages.txt`) in the root of the project folder.
|
||||
* The setup also uses `yay` as the AUR helper tool.
|
||||
|
||||
|
||||
=== https://github.com/yshui/picom[picom]
|
||||
|
||||
A window compositor forked from https://github.com/chjj/compton[compton] that adds off-screen buffers and additional effects and animations to the window.
|
||||
@ -333,22 +295,6 @@ The theme is dynamically used with the Xresources file (by using `xrdb`).
|
||||
For documentation, check out the https://wiki.archlinux.org/index.php/Polybar[already linked Arch Wiki entry] and the https://github.com/polybar/polybar/wiki[official documentation from GitHub].
|
||||
|
||||
|
||||
=== https://github.com/dylanaraps/pywal[Pywal]
|
||||
|
||||
A theme generator written in Python.
|
||||
It is mostly used for ricing to get them consistent colors throughout your setup.
|
||||
|
||||
* Config located at link:wal[`wal/`].
|
||||
* The usual target path for a user is at `$HOME/.config/wal`.
|
||||
It is ideal that you've already have your own color schemes saved in there as well.
|
||||
* Minimum version (from `wal --version`):
|
||||
** `wal 3.3.0`
|
||||
* Due to the nature of my setup where I want those consistent colors, most of the configurations are tucked away as https://github.com/dylanaraps/pywal/wiki/User-Template-Files[template files] but it should be easy to identify which is which.
|
||||
Certain applications such as for `dunst` and `bspwm` are in here and should be considered as the real version of the config.
|
||||
|
||||
For additional information, check out the https://github.com/dylanaraps/pywal/wiki/[documentation] from the GitHub page.
|
||||
|
||||
|
||||
=== https://github.com/davatorium/rofi[Rofi]
|
||||
|
||||
The application switcher and launcher.
|
||||
@ -397,30 +343,6 @@ I also recommend https://www.youtube.com/watch?v=GYW9i_u5PYs[Luke Smith's video]
|
||||
That's where I also heard of it.
|
||||
|
||||
|
||||
=== https://systemd.io/[systemd]
|
||||
|
||||
A set of building blocks for system management of a Linux-based system.
|
||||
|
||||
* Config located at link:systemd/[`sxiv/`] directory.
|
||||
* The usual target path is at `$HOME/.config/systemd`.
|
||||
* Minimum version (from `systemctl --version`):
|
||||
** `systemd 245 (245.5-2-arch)`
|
||||
* Contains simple services and timers (as replacement for cron) such as backups and package list updates.
|
||||
|
||||
|
||||
=== https://www.x.org/wiki/[Xorg]
|
||||
|
||||
A display server implementing X window system.
|
||||
|
||||
* Config found at link:xorg/[`xorg/`] directory.
|
||||
* The usual target path for a user is at `$HOME/`.
|
||||
* Minimum version (from `Xorg -version`):
|
||||
** `X.Org X Server 1.20.5`
|
||||
** `X Protocol Version 11, Revision 0`
|
||||
* The configuration is found at `.Xresources` containing the colors (0 to 15, foreground, and the background).
|
||||
It may be bound to be an automatically generated file from https://github.com/dylanaraps/pywal[Pywal] soon.
|
||||
|
||||
|
||||
=== https://www.zsh.org/[Zsh]
|
||||
|
||||
A Unix shell and an alternative to the Bash.
|
||||
|
0
alacritty/alacritty.yml
Normal file → Executable file
@ -1,21 +0,0 @@
|
||||
android-studio
|
||||
brave-bin
|
||||
buku
|
||||
doom1-wad
|
||||
ffcast
|
||||
freedoom
|
||||
gzdoom
|
||||
lf-bin
|
||||
nix
|
||||
otf-stix
|
||||
pipes.sh
|
||||
polybar
|
||||
python2-scour
|
||||
tabbed
|
||||
tdrop-git
|
||||
ttf-computer-modern-fonts
|
||||
ttf-iosevka
|
||||
wpgtk-git
|
||||
xorg-server-xdmx
|
||||
xurls
|
||||
yay
|
@ -1,8 +1,10 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# Simply create a universal emoji selection list.
|
||||
# Simply create a universal emoji selection list.
|
||||
# The emoji list should be the following file:
|
||||
# https://unicode.org/Public/emoji/13.0/emoji-test.txt
|
||||
|
||||
# Dependencies:
|
||||
# Dependencies:
|
||||
# * mktemp - GNU coreutils 8.31
|
||||
# * wget - GNU Wget 1.20.3 built on linux-gnu
|
||||
# * sed - GNU sed 4.8
|
||||
@ -10,12 +12,15 @@
|
||||
# * rofi - Version: 1.5.4
|
||||
# * xclip - version 0.13
|
||||
|
||||
emoji_file="$HOME/.local/share/emoji-test.txt"
|
||||
emoji_file="$HOME/.local/share/emoji-list.txt"
|
||||
if [[ ! -f $emoji_file ]]; then
|
||||
wget --output-document "$emoji_file" https://unicode.org/Public/emoji/13.0/emoji-test.txt
|
||||
fi
|
||||
|
||||
selection=$(awk 'match($0, /([0-9A-F ]+)\s+; fully-qualified\s+# (\S+) E[[:digit:]]+.[[:digit:]]+ (.+)$/, a){print a[2], a[3]}' "$emoji_file" \
|
||||
| rofi -dmenu -i -fuzzy -p "Choose an emoji to copy." \
|
||||
| awk '{print $1}')
|
||||
| awk '{print $1}')
|
||||
|
||||
if [ -n "$selection" ]; then
|
||||
printf "%s" "$selection" | xclip -selection clipboard && notify-send "'$(xclip -o -selection clipboard)' has been copied to clipboard."
|
||||
fi
|
||||
|
||||
|
@ -17,6 +17,6 @@
|
||||
|
||||
set -o pipefail
|
||||
|
||||
man -k . | rofi -dmenu -p 'Choose a manual' -theme fds-mini-sidebar -width 60 | awk '{print $1}' | xargs --no-run-if-empty "$TERMINAL" --command man
|
||||
man -k . | rofi -dmenu -p 'Choose a manual' | awk '{print $1}' | xargs --no-run-if-empty "$TERMINAL" --command man
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Selects the region, echoes the hex string (in RGBA format) of the average color of the region.
|
||||
|
||||
|
@ -1,10 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# Simply commits the package lists `packages.txt` and `aur-packages.txt` into the Git repo.
|
||||
# This script is specifically used for a cron job where this is run monthly.
|
||||
|
||||
DOTFILES_DIRECTORY="$HOME/dotfiles"
|
||||
|
||||
cd "$DOTFILES_DIRECTORY"
|
||||
git add "packages.txt" "aur-packages.txt"
|
||||
git commit -m "Update package lists as of $(date +%F)"
|
8
bin/edit-file-metadata
Executable file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
use Modern::Perl;
|
||||
|
||||
sub kebab_case {
|
||||
my ($sentence) = @_;
|
||||
$sentence =
|
||||
}
|
@ -1,243 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# This simple Python 3 script simply generates a color scheme in wpgtk style with the auto-adjusted colors.
|
||||
# I like how wpgtk generates the color palette but I don't like the workflow of it.
|
||||
# I like the simple workflow of pywal but I don't like the colors generated by it and I think it has built-in limitations for generating colors.
|
||||
# So I combined both of the best in this one glued script.
|
||||
|
||||
# The command line program simply needs an image path as the argument — `export-theme ~/Pictures/mountain.jpg`.
|
||||
# It will also export the theme as a JSON file in the current directory — `mountain.json`.
|
||||
|
||||
# Most of the code are "borrowed" from the wpgtk codebase and I've simply studied them and added some documentation.
|
||||
# It simply needs pywal as a dependency.
|
||||
|
||||
import argparse
|
||||
from colorsys import rgb_to_hls, hls_to_rgb
|
||||
import json
|
||||
import math
|
||||
from operator import itemgetter
|
||||
import os.path
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
import pywal
|
||||
|
||||
|
||||
###################
|
||||
# COLOR FUNCTIONS #
|
||||
###################
|
||||
|
||||
def hls_to_hex(hls):
|
||||
"""
|
||||
Returns a HLS coordinate into its hex color code equivalent.
|
||||
|
||||
:param: hls - An HLS tuple according to the colorsys library (https://docs.python.org/3.8/library/colorsys.html).
|
||||
|
||||
:returns: A hex color string equivalent.
|
||||
"""
|
||||
h, l, s = hls
|
||||
r, g, b = hls_to_rgb(h, l, s)
|
||||
rgb_int = [max(min(int(elem), 255), 0) for elem in [r, g, b]]
|
||||
|
||||
return pywal.util.rgb_to_hex(rgb_int)
|
||||
|
||||
|
||||
def hex_to_hls(hex_string):
|
||||
"""
|
||||
Returns an HLS coordinate equivalent of the given hex color code.
|
||||
It uses RGB as the intermediate for converting the hex string.
|
||||
|
||||
:param: hex_string - A (hopefully) valid hex string.
|
||||
|
||||
:returns: An HLS tuple compatible with the colorsys library.
|
||||
"""
|
||||
r, g, b = pywal.util.hex_to_rgb(hex_string)
|
||||
return rgb_to_hls(r, g, b)
|
||||
|
||||
|
||||
def get_distance(hex_src, hex_tgt):
|
||||
"""
|
||||
Returns the distance between two hex values.
|
||||
The formula used in this function is based from the Wikipedia article (https://en.wikipedia.org/wiki/Color_difference).
|
||||
|
||||
:param: hex_src - A hex color string.
|
||||
:param: hex_tgt - The target hex color code.
|
||||
|
||||
:returns: A float that describes the distance.
|
||||
"""
|
||||
r1, g1, b1 = pywal.util.hex_to_rgb(hex_src)
|
||||
r2, g2, b2 = pywal.util.hex_to_rgb(hex_tgt)
|
||||
|
||||
return math.sqrt((r2 - r1)**2 + (g2 - g1)**2 + (b2 - b1)**2)
|
||||
|
||||
|
||||
def alter_brightness(hex_string, light, sat=0):
|
||||
"""
|
||||
Alters amount of light and saturation in a color.
|
||||
|
||||
:param: hex_string - A hex color string (top-notch documentation right here, folks).
|
||||
:param: light - The amount of light to apply; generally, the acceptable range is -255 to 255 and beyond that is dangerous territory.
|
||||
:param: sat - The amount of saturation to apply; the acceptable range is -1 to 1.
|
||||
|
||||
:returns: A hex color code of the adjusted color.
|
||||
"""
|
||||
h, l, s = hex_to_hls(hex_string)
|
||||
l = max(min(l + light, 255), 1)
|
||||
s = min(max(s - sat, -1), 0)
|
||||
|
||||
return hls_to_hex((h, l, s))
|
||||
|
||||
|
||||
def is_dark_theme(color_list):
|
||||
"""
|
||||
Checks by the color list if it's a dark theme.
|
||||
|
||||
:param: color_list - A list of hex color codes usually 16 of them.
|
||||
|
||||
:returns: A boolean indicating if it's a dark theme.
|
||||
"""
|
||||
*_, bg_brightness = hex_to_hls(color_list[0])
|
||||
*_, fg_brightness = hex_to_hls(color_list[7])
|
||||
|
||||
return fg_brightness < bg_brightness
|
||||
|
||||
|
||||
def adjust_colors(colors, light_mode = False):
|
||||
"""
|
||||
Create a clear foreground and background set of colors.
|
||||
|
||||
:param: colors - A Pywal color object. See https://github.com/dylanaraps/pywal/wiki/Using-%60pywal%60-as-a-module#color-dict-format for more info.
|
||||
:param: light_mode - Toggle to create a light mode version of the adjustment.
|
||||
|
||||
:returns: A Pywal color object with the adjusted values.
|
||||
"""
|
||||
colors = smart_sort(colors)
|
||||
|
||||
added_sat = 0.25 if light_mode else 0.1
|
||||
sign = -1 if light_mode else 1
|
||||
|
||||
if light_mode == is_dark_theme(colors):
|
||||
colors[7], colors[0] = colors[0], colors[7]
|
||||
|
||||
comment = [alter_brightness(colors[0], sign * 25)]
|
||||
fg = [alter_brightness(colors[7], sign * 60)]
|
||||
|
||||
colors = colors[:8] + comment \
|
||||
+ [alter_brightness(color, sign * hex_to_hls(color)[1] * 0.3, added_sat) for color in colors[1:7]] + fg
|
||||
|
||||
return colors
|
||||
|
||||
|
||||
def smart_sort(colors):
|
||||
"""
|
||||
Automatically set the most look-alike colors to their
|
||||
corresponding place in the standard xterm colors.
|
||||
|
||||
:param: colors - A list of hex color strings.
|
||||
|
||||
:returns: The color list sorted out.
|
||||
"""
|
||||
colors = colors[:8]
|
||||
sorted_by_color = list()
|
||||
base_colors = ["#000000", "#ff0000", "#00ff00", "#ffff00",
|
||||
"#0000ff", "#ff00ff", "#00ffff", "#ffffff"]
|
||||
|
||||
for y in base_colors:
|
||||
cd_tuple = [(x, get_distance(x, y)) for i, x in enumerate(colors)]
|
||||
cd_tuple.sort(key=itemgetter(1))
|
||||
sorted_by_color.append(cd_tuple)
|
||||
|
||||
i = 0
|
||||
while i < 8:
|
||||
current_cd = sorted_by_color[i][0]
|
||||
closest_cds = [sorted_by_color[x][0] for x in range(8)]
|
||||
reps = [x for x in range(8) if closest_cds[x][0] == current_cd[0]]
|
||||
|
||||
if len(reps) > 1:
|
||||
closest = min([closest_cds[x] for x in reps], key=itemgetter(1))
|
||||
reps = [x for x in reps if x != closest_cds.index(closest)]
|
||||
any(sorted_by_color[x].pop(0) for x in reps)
|
||||
i = 0
|
||||
else:
|
||||
i += 1
|
||||
|
||||
sorted_colors = [sorted_by_color[x][0][0] for x in range(8)]
|
||||
return [*sorted_colors, *sorted_colors]
|
||||
|
||||
|
||||
##################
|
||||
# MAIN FUNCTIONS #
|
||||
##################
|
||||
|
||||
def setup_args():
|
||||
"""
|
||||
Setup the argument parser.
|
||||
"""
|
||||
description = "A simple Pywal theme export script with auto-adjusted colors from wpgtk"
|
||||
argparser = argparse.ArgumentParser(description=description)
|
||||
|
||||
argparser.add_argument("input", help="The input (image) of the color scheme to be generated.", metavar="IMAGE")
|
||||
argparser.add_argument("-o", "--output", help="The location of the colorscheme JSON to be exported.", metavar="FILE")
|
||||
argparser.add_argument("--no-output", help="Specifies no JSON output to be created; also overrides any output-related options.", action='store_true')
|
||||
|
||||
return argparser
|
||||
|
||||
|
||||
def export_wpgtk_colors(image_path):
|
||||
"""
|
||||
Export Pywal templates with the given image and the color scheme data.
|
||||
Take note the exported Pywal object has no 'wallpaper' key for portability.
|
||||
|
||||
:param: image_path - The path of the image. ;)
|
||||
|
||||
:returns: The Pywal dictionary.
|
||||
"""
|
||||
pywal_dict = pywal.colors.get(image_path)
|
||||
colors = []
|
||||
for color_name, color in pywal_dict["colors"].items():
|
||||
colors.append(color)
|
||||
|
||||
colors = adjust_colors(colors)
|
||||
|
||||
for index, color in enumerate(colors):
|
||||
pywal_dict["colors"][f"color{index}"] = color
|
||||
|
||||
# Export every templates in Pywal including the user templates and reload the newly applied theme.
|
||||
pywal.export.every(pywal_dict)
|
||||
|
||||
del pywal_dict["wallpaper"]
|
||||
|
||||
# Feel free to add some reloading code that Pywal provides or something.
|
||||
# I'm not putting mine since it's intended to only export theme.
|
||||
# You can't tell me what to do here. >:-)
|
||||
|
||||
return pywal_dict
|
||||
|
||||
|
||||
def parse_args(parser, argv):
|
||||
"""
|
||||
Parse the args and do the thing.
|
||||
|
||||
:param: parser - An `argparse.ArgumentParser` instance.
|
||||
:param: argv - A list of arguments to be parsed.
|
||||
"""
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
pywal_dict = export_wpgtk_colors(args.input)
|
||||
|
||||
if args.output is not None:
|
||||
output_file = args.output
|
||||
else:
|
||||
output_file = f"{Path(args.input).stem}.json"
|
||||
|
||||
if not args.no_output:
|
||||
# Save the adjusted theme as a JSON file.
|
||||
with open(output_file, "w") as json_file:
|
||||
json.dump(pywal_dict, json_file, indent = 4)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
argparser = setup_args()
|
||||
|
||||
parse_args(argparser, sys.argv[1:])
|
||||
|
@ -1,47 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# This is simply an additional reloading script in addition to Pywal's own.
|
||||
# This code is specific machine-to-machine so you better make sure to update it to suit your need.
|
||||
|
||||
readonly cache=${XDG_CACHE_HOME:-"$HOME/.cache"}
|
||||
readonly config=${XDG_CONFIG_HOME:-"$HOME/.config"}
|
||||
|
||||
readonly pywal_cache=${PYWAL_CACHE_DIR:-"$cache/wal"}
|
||||
|
||||
# Copying the Pywal color scheme JSON into the theme list.
|
||||
# This file suffix removal is based on the linked code:
|
||||
# https://stackoverflow.com/a/32584935
|
||||
readonly pywal_json=$pywal_cache/colors.json
|
||||
readonly theme=$(jq -r ".wallpaper" "$pywal_json" | xargs basename | rev | cut -f 2- -d '.' | rev)
|
||||
readonly theme_dir="$config/wal/colorschemes/dark"
|
||||
mkdir -p "$theme_dir"
|
||||
cp "$pywal_json" "$theme_dir/$theme.json"
|
||||
|
||||
# Copying the dynamically crerated rofi themes.
|
||||
cp "$pywal_cache/fds-mini-sidebar.rasi" "$XDG_CONFIG_HOME/rofi"
|
||||
cp "$pywal_cache/fds-center-menu.rasi" "$XDG_CONFIG_HOME/rofi"
|
||||
cp "$pywal_cache/dmenu.rasi" "$XDG_CONFIG_HOME/rofi"
|
||||
|
||||
# Copying bspwm config and reloading it.
|
||||
cp "$pywal_cache/bspwmrc" "$XDG_CONFIG_HOME/bspwm" && bspc wm --restart
|
||||
|
||||
# Reloading polybar.
|
||||
pkill -USR1 polybar
|
||||
|
||||
# Copying dunst config and reloading it.
|
||||
# The reload mechanism feels very hacky and the maintainers warn about it.
|
||||
# See more at the Arch Wiki entry (https://wiki.archlinux.org/index.php/Dunst) and the linked issue (https://github.com/dunst-project/dunst/issues/63).
|
||||
# cp "$pywal_cache/dunstrc" "$XDG_CONFIG_HOME/dunst" && pkill dunst && nohup dunst &
|
||||
|
||||
# Creating a Doom Emacs theme.
|
||||
# Unlike the previous templates, this is stored on another directory.
|
||||
# Unfortunately, this requires installing some crap I made.
|
||||
# You can find the Doom Emacs generator here: https://gitlab.com/foo-dogsquared/doom-theme-generator/-/blob/master/doom-theme-generator.py .
|
||||
(
|
||||
cd ~/projects/doom-theme-generator
|
||||
./doom-theme-generator.py --name fds
|
||||
mv doom-fds-theme.el "$XDG_CONFIG_HOME/doom/themes/"
|
||||
)
|
||||
|
||||
notify-send "The theme has been installed."
|
||||
|
2
bin/ocr
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# A script that utilizes OCR for a screenshot and copies the text to the clipboard.
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Parse various code from image selection with zbarimg and maim.
|
||||
|
||||
|
@ -38,7 +38,7 @@ ffmpeg() {
|
||||
|
||||
# Set the default command for rofi.
|
||||
rofi() {
|
||||
command rofi -theme fds-center-menu "$@" || kill -USR1 "$_process_id"
|
||||
command rofi -theme themes/fds-center-menu "$@" || kill -USR1 "$_process_id"
|
||||
}
|
||||
|
||||
# Set the default command for slop.
|
||||
|
@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Creates an theme selection with sxiv and generates a colorscheme with pywal.
|
||||
# It also reloads additional some beyond what Pywal can reload (like dunst and rofi themes).
|
||||
|
||||
# Dependencies needed are sxiv (v26), pywal (v3.3.0), xdg-user-dirs, and GNU Bash (>=v5.0, I guess?).
|
||||
# This script is setup-specific so be sure to modify it first.
|
||||
# The `install-wal-theme` is at https://github.com/foo-dogsquared/dotfiles/blob/master/bin/install-wal-theme.
|
||||
|
||||
# Arguments:
|
||||
# $1 - The directory of wallpapers.
|
||||
|
||||
# Feel free to change this variable as you see fit.
|
||||
# This is set specifically for my setup, anyways.
|
||||
wallpapers=${1:-$(xdg-user-dir PICTURES)/wallpapers}
|
||||
|
||||
# Since sxiv is configurable af
|
||||
# and has the ability to select more than one picture,
|
||||
# it will shuffle the choices and choose only one of them (lol).
|
||||
# If you're feeling lucky, go ahead and play a game of random themes from your selections.
|
||||
sxiv -otbf "$wallpapers" | shuf | tail -n 1 | xargs wal --saturate 0.6 -i && install-wal-theme
|
||||
|
@ -3,4 +3,4 @@
|
||||
# Based from Luke Smith's prompt script.
|
||||
# https://github.com/LukeSmithxyz/voidrice/blob/master/.local/bin/prompt
|
||||
|
||||
[ "$(printf "No\\nYes" | rofi -theme dmenu -dmenu -p "$1")" = "Yes" ] && $2
|
||||
[ "$(printf "No\\nYes" | rofi -theme themes/dmenu -dmenu -p "$1")" = "Yes" ] && $2
|
||||
|
0
docs/bspwm-empty.png
Normal file → Executable file
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
0
docs/dropdown-term.png
Normal file → Executable file
Before Width: | Height: | Size: 903 KiB After Width: | Height: | Size: 903 KiB |
0
docs/editors-ahoy.png
Normal file → Executable file
Before Width: | Height: | Size: 252 KiB After Width: | Height: | Size: 252 KiB |
0
docs/rofi-dunst-and-lf.png
Normal file → Executable file
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB |
0
docs/terminals.png
Normal file → Executable file
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 168 KiB |
0
docs/vim-and-zathura.png
Normal file → Executable file
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 214 KiB |
0
docs/vscode-and-rofi.png
Normal file → Executable file
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 136 KiB |
0
dunst/dunstrc
Normal file → Executable file
41
emacs/config.el
Normal file → Executable file
@ -67,12 +67,35 @@
|
||||
(add-to-list 'safe-local-variable-values
|
||||
'(TeX-command-extra-options . "-shell-escape")))
|
||||
|
||||
;;(use-package! ewal
|
||||
;; :init (setq ewal-json-file "~/.cache/wal/colors.json"
|
||||
;; ewal-use-built-in-always-p nil
|
||||
;; ewal-use-built-in-on-failure-p nil
|
||||
;; ewal-built-in-palette "sexy-material")
|
||||
;;
|
||||
;; ;; This loading of theme is required in order for ewal to work.
|
||||
;; ;; See jjzmajic/ewal Issue #11 (https://gitlab.com/jjzmajic/ewal/-/issues/11).
|
||||
;; :init (load-theme 'doom-fds t))
|
||||
|
||||
(after! org
|
||||
(setq
|
||||
; Set the journal.
|
||||
org-journal-dir "~/writings/journal"
|
||||
org-journal-file-format "%F"
|
||||
|
||||
; Set a custom time-stamp pattern.
|
||||
; Even though, it's not recommended, most of the time,
|
||||
time-stamp-start "DATE_MODIFIED:[ ]+\\\\?[\"<]+"
|
||||
|
||||
; Configure org-roam.
|
||||
org-roam-directory "~/writings/wiki"
|
||||
org-roam-capture-templates '(
|
||||
("d" "default" plain (function org-roam--capture-get-point)
|
||||
"#+AUTHOR: \"%(user-full-name)\"
|
||||
#+EMAIL: \"%(user-mail-address)\"
|
||||
#+DATE: \"%<%Y-%m-%d %T%:z>\"
|
||||
#+DATE_MODIFIED: \"%<%Y-%m-%d %T%:z>\"
|
||||
#+LANGUAGE: en
|
||||
#+OPTIONS: toc:t
|
||||
#+PROPERTY: header-args :exports both
|
||||
|
||||
%?"
|
||||
:file-name "%<%Y-%m-%d-%H-%M-%S>"
|
||||
:head "#+TITLE: ${title}\n"
|
||||
:unnarrowed t))))
|
||||
|
||||
; Modify the time-stamp with each save.
|
||||
(setq time-stamp-format "%Y-%02m-%02d %02H:%02M:%02S%:z"
|
||||
+file-templates-dir (expand-file-name "templates/" doom-private-dir))
|
||||
(add-hook 'before-save-hook 'time-stamp)
|
||||
|
61
emacs/init.el
Normal file → Executable file
@ -16,10 +16,10 @@
|
||||
|
||||
(doom! :input
|
||||
;;chinese
|
||||
;;japanese
|
||||
japanese
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
(company +childframe) ; the ultimate code completion backend
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
ivy ; a search engine for love and life
|
||||
@ -38,10 +38,10 @@
|
||||
;;neotree ; a project drawer, like NERDTree for vim
|
||||
ophints ; highlight the region an operation acts on
|
||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||
pretty-code ; ligatures or substitute text with pretty symbols
|
||||
ligatures ; ligatures or substitute text with pretty symbols
|
||||
;;tabs ; an tab bar for Emacs
|
||||
;;treemacs ; a project drawer, like neotree but cooler
|
||||
;;unicode ; extended unicode support for various languages
|
||||
unicode ; extended unicode support for various languages
|
||||
vc-gutter ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
;;window-select ; visually switch windows
|
||||
@ -83,7 +83,7 @@
|
||||
:tools
|
||||
;;ansible
|
||||
(debugger +lsp) ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
direnv
|
||||
docker
|
||||
editorconfig ; let someone else argue about tabs vs spaces
|
||||
ein ; tame Jupyter notebooks with emacs
|
||||
@ -95,58 +95,57 @@
|
||||
magit ; a git porcelain for Emacs
|
||||
;;make ; run make tasks from Emacs
|
||||
;;pass ; password manager for nerds
|
||||
;;pdf ; pdf enhancements
|
||||
pdf ; pdf enhancements
|
||||
;;prodigy ; FIXME managing external services & code builders
|
||||
rgb ; creating color strings
|
||||
;;terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
:lang
|
||||
;;agda ; types of types of types of types...
|
||||
;;assembly ; assembly for fun or debugging
|
||||
assembly ; assembly for fun or debugging
|
||||
(cc +lsp) ; C/C++/Obj-C madness
|
||||
;;clojure ; java with a lisp
|
||||
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||
clojure ; java with a lisp
|
||||
common-lisp ; if you've seen one lisp, you've seen them all
|
||||
;;coq ; proofs-as-programs
|
||||
;;crystal ; ruby at the speed of c
|
||||
;;csharp ; unity, .NET, and mono shenanigans
|
||||
data ; config/data formats
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
(dart +flutter) ; paint ui and not much else
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
emacs-lisp ; drown in parentheses
|
||||
;;erlang ; an elegant language for a more civilized age
|
||||
ess ; emacs speaks statistics
|
||||
;;faust ; dsp, but you get to keep your soul
|
||||
;;fsharp ; ML stands for Microsoft's Language
|
||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||
fsharp ; ML stands for Microsoft's Language
|
||||
fstar ; (dependent) types and (monadic) effects and Z3
|
||||
;;(go +lsp) ; the hipster dialect
|
||||
;;(haskell +dante) ; a language that's lazier than I am
|
||||
(haskell +dante) ; a language that's lazier than I am
|
||||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ;
|
||||
;;(java +meghanada) ; the poster child for carpal tunnel syndrome
|
||||
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||
;;julia ; a better, faster MATLAB
|
||||
;;kotlin ; a better, slicker Java(Script)
|
||||
julia ; a better, faster MATLAB
|
||||
kotlin ; a better, slicker Java(Script)
|
||||
(latex +latexmk) ; writing papers in Emacs has never been so fun
|
||||
;;lean
|
||||
;;factor
|
||||
;;ledger ; an accounting system in Emacs
|
||||
lua ; one-based indices? one-based indices
|
||||
markdown ; writing docs for people to ignore
|
||||
;;nim ; python + lisp at the speed of c
|
||||
;;nix ; I hereby declare "nix geht mehr!"
|
||||
;;ocaml ; an objective camel
|
||||
(org +brain
|
||||
+gnuplot
|
||||
nim ; python + lisp at the speed of c
|
||||
nix ; I hereby declare "nix geht mehr!"
|
||||
ocaml ; an objective camel
|
||||
(org +gnuplot
|
||||
+hugo
|
||||
+jupyter
|
||||
+journal
|
||||
+noter
|
||||
+pandoc
|
||||
+present
|
||||
+roam) ; organize your plain life in plain text
|
||||
;;perl ; write code no one else can comprehend
|
||||
raku ; write code no one else can comprehend
|
||||
;;php ; perl's insecure younger brother
|
||||
plantuml ; diagrams for confusing people more
|
||||
;;purescript ; javascript, but functional
|
||||
@ -155,16 +154,16 @@
|
||||
racket ; a DSL for DSLs
|
||||
;;rest ; Emacs as a REST client
|
||||
;;rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
;;scheme ; a fully conniving family of lisps
|
||||
scheme ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
;;swift ; who asked for emoji variables?
|
||||
;;terra ; Earth and Moon in alignment for performance.
|
||||
;;web ; the tubes
|
||||
web ; the tubes
|
||||
|
||||
:email
|
||||
;;(mu4e +gmail)
|
||||
@ -179,4 +178,10 @@
|
||||
|
||||
:config
|
||||
;;literate
|
||||
(default +bindings +smartparens))
|
||||
(default +bindings +smartparens)
|
||||
|
||||
;; This is where custom modules in the Doom directory should be put for orgaanizational purposes.
|
||||
:tools
|
||||
neuron ; Neurons are a must for the brain.
|
||||
)
|
||||
|
||||
|
81
emacs/modules/tools/neuron/config.el
Executable file
@ -0,0 +1,81 @@
|
||||
;;; tools/neuron/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defface neuron-stub-face
|
||||
'((((class color) (min-colors 88) (background dark)) :foreground "#C16069" :underline "#C16069")
|
||||
(((class color) (min-colors 88) (background light)) :foreground "#C16069" :underline "#C16069")
|
||||
(((class color) :foreground "Red" :underline "Red"))
|
||||
(t :inherit neuron-title-overlay-face))
|
||||
"Face for stub links."
|
||||
:group 'neuron-faces)
|
||||
|
||||
(customize-set-variable 'neuron-default-zettelkasten-directory (expand-file-name "~/zettelkasten"))
|
||||
|
||||
(customize-set-variable 'neuron-default-tags (list "stub"))
|
||||
|
||||
(customize-set-variable 'neuron-tag-specific-title-faces '(("stub" neuron-stub-face)))
|
||||
|
||||
(defun search-zettelkasten ()
|
||||
"Search zettels by content."
|
||||
(interactive)
|
||||
(progn
|
||||
(+ivy-file-search :in (neuron-zettelkasten) :recursive nil :prompt "Search Zettelkasten: ")
|
||||
(neuron-mode)))
|
||||
|
||||
(defun find-file-in-zettelkasten ()
|
||||
"Find a file in the currently active zettelkasten."
|
||||
(interactive)
|
||||
(let ((default-directory (neuron-zettelkasten)))
|
||||
(counsel-find-file)))
|
||||
|
||||
(use-package! neuron-mode
|
||||
; Enable link autocompletion globally
|
||||
:hook (neuron-mode . company-neuron-setup)
|
||||
:config
|
||||
(map! :leader
|
||||
(:prefix ("z" . "zettel")
|
||||
"z" #'neuron-new-zettel
|
||||
"e" #'neuron-edit-zettel
|
||||
"w" #'neuron-rib-watch
|
||||
"g" #'neuron-rib-generate
|
||||
"o" #'neuron-open-zettel
|
||||
"O" #'neuron-open-index
|
||||
"j" #'neuron-open-daily-notes
|
||||
"t" #'neuron-query-tags
|
||||
"r" #'neuron-refresh
|
||||
"c" #'neuron-edit-zettelkasten-configuration
|
||||
|
||||
;;; Alternatively, bind all rib commands in a separate prefix
|
||||
;; (:prefix ("r" . "rib")
|
||||
;; "w" #'neuron-rib-watch
|
||||
;; "g" #'neuron-rib-generate
|
||||
;; "s" #'neuron-rib-serve
|
||||
;; "o" #'neuron-rib-open-zettel
|
||||
;; "z" #'neuron-rib-open-z-index
|
||||
;; "k" #'neuron-rib-kill
|
||||
;; )
|
||||
)
|
||||
)
|
||||
|
||||
(map! :map neuron-mode-map
|
||||
:localleader
|
||||
;; Override markdown-mode's default behavior to handle neuron links
|
||||
:ni "o" #'neuron-follow-thing-at-point
|
||||
|
||||
;; You can also remove the "z" prefix but
|
||||
;; be careful not to override default
|
||||
;; markdown-mode bindings.
|
||||
(:prefix ("z" . "zettel")
|
||||
:ni "u" #'neuron-edit-uplink
|
||||
:ni "t" #'neuron-add-tag
|
||||
:ni "T" #'neuron-add-tags
|
||||
:ni "o" #'neuron-open-current-zettel
|
||||
:ni "l" #'neuron-create-and-insert-zettel-link
|
||||
:v "L" #'neuron-create-zettel-from-selection
|
||||
:ni "s" #'neuron-insert-static-link
|
||||
:ni "c" #'neuron-toggle-connection-type
|
||||
)
|
||||
)
|
||||
|
||||
(map! :leader "sz" #'search-zettelkasten)
|
||||
(map! :leader "fz" #'find-file-in-zettelkasten)
|
||||
|
8
emacs/modules/tools/neuron/packages.el
Executable file
@ -0,0 +1,8 @@
|
||||
;; -*- no-byte-compile: t; -*-
|
||||
;;; tools/neuron/packages.el
|
||||
|
||||
(package! neuron-mode)
|
||||
|
||||
;; For more reproducibility, pin the repo:
|
||||
;; (package! neuron-mode :pin e1b3e12c71)
|
||||
;; or run M-x doom/update-pinned-package-form to have the latest commit
|
8
emacs/packages.el
Normal file → Executable file
@ -51,5 +51,9 @@
|
||||
;;;;;;;;;;;;
|
||||
; PACKAGES ;
|
||||
;;;;;;;;;;;;
|
||||
(package! modus-operandi-theme)
|
||||
(package! modus-vivendi-theme)
|
||||
(package! flycheck-vale)
|
||||
(package! ya-org-capture
|
||||
:recipe (:host github
|
||||
:repo "ag91/ya-org-capture")
|
||||
:pin "0333ee28c92a40a351e64695a0cfcd715c69838b")
|
||||
(package! yankpad)
|
||||
|
0
emacs/snippets/fundamental-mode/box
Normal file → Executable file
0
emacs/snippets/fundamental-mode/eg
Normal file → Executable file
0
emacs/snippets/fundamental-mode/em
Normal file → Executable file
0
emacs/snippets/fundamental-mode/ie
Normal file → Executable file
5
emacs/snippets/fundamental-mode/now
Executable file
@ -0,0 +1,5 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: Print today's date in ISO format.
|
||||
# key: now
|
||||
# --
|
||||
`(format-time-string "%F %T%:z %Z")` $0
|
0
emacs/snippets/fundamental-mode/sign
Normal file → Executable file
0
emacs/snippets/fundamental-mode/today
Normal file → Executable file
0
emacs/snippets/latex-mode/agraph
Normal file → Executable file
0
emacs/snippets/latex-mode/boldface
Normal file → Executable file
0
emacs/snippets/latex-mode/equation
Normal file → Executable file
0
emacs/snippets/latex-mode/italics
Normal file → Executable file
0
emacs/snippets/latex-mode/listitem
Normal file → Executable file
0
emacs/snippets/latex-mode/mathblock
Normal file → Executable file
0
emacs/snippets/latex-mode/mathinline
Normal file → Executable file
0
emacs/snippets/latex-mode/ol
Normal file → Executable file
0
emacs/snippets/latex-mode/section
Normal file → Executable file
0
emacs/snippets/latex-mode/subsection
Normal file → Executable file
0
emacs/snippets/latex-mode/teletype
Normal file → Executable file
0
emacs/snippets/latex-mode/template
Normal file → Executable file
0
emacs/snippets/latex-mode/ul
Normal file → Executable file
0
emacs/snippets/org-mode/.yas-parents
Normal file → Executable file
0
emacs/snippets/org-mode/appendix
Normal file → Executable file
0
emacs/snippets/org-mode/block
Normal file → Executable file
0
emacs/snippets/org-mode/boldface
Normal file → Executable file
0
emacs/snippets/org-mode/comment-block
Normal file → Executable file
0
emacs/snippets/org-mode/deflist
Normal file → Executable file
0
emacs/snippets/org-mode/drawer
Normal file → Executable file
0
emacs/snippets/org-mode/footnote
Normal file → Executable file
0
emacs/snippets/org-mode/header
Normal file → Executable file
5
emacs/snippets/org-mode/header-props
Executable file
@ -0,0 +1,5 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: Org-Mode global property
|
||||
# key: hprop
|
||||
# --
|
||||
#+${1:<KEY>}: ${2:<VALUES>}
|
0
emacs/snippets/org-mode/img
Normal file → Executable file
0
emacs/snippets/org-mode/italics
Normal file → Executable file
0
emacs/snippets/org-mode/link
Normal file → Executable file
@ -1,5 +0,0 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: Org-Mode local property
|
||||
# key: lprop
|
||||
# --
|
||||
:${1:<KEY>}: ${2:<VALUE>}
|
0
emacs/snippets/org-mode/monospace
Normal file → Executable file
6
emacs/snippets/org-mode/property
Normal file → Executable file
@ -1,5 +1,5 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: Org-Mode global property
|
||||
# key: prop
|
||||
# name: Org-Mode local property
|
||||
# key: lprop
|
||||
# --
|
||||
#+${1:<KEY>}: ${2:<VALUES>}
|
||||
:${1:<KEY>}: ${2:<VALUE>}
|
||||
|
2
emacs/snippets/org-mode/local-property-block → emacs/snippets/org-mode/property-block
Normal file → Executable file
@ -1,6 +1,6 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: Org-Mode local property block
|
||||
# key: lpropblock
|
||||
# key: props
|
||||
# --
|
||||
:PROPERTIES:
|
||||
$1
|
2
emacs/snippets/org-mode/source
Normal file → Executable file
@ -1,6 +1,6 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: Org-Mode source block
|
||||
# key: csrc
|
||||
# key: csrc
|
||||
# --
|
||||
#+BEGIN_SRC ${1:<LANG>} :results output :exports both :session *${2:<SESSION NAME>}*
|
||||
$3
|
||||
|
0
emacs/snippets/org-mode/subscript
Normal file → Executable file
0
emacs/snippets/org-mode/superscript
Normal file → Executable file
0
emacs/snippets/org-mode/video
Normal file → Executable file
28
emacs/templates/org-mode/__
Normal file
@ -0,0 +1,28 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: Org template
|
||||
# --
|
||||
#+TITLE: ${1:`
|
||||
(string-join
|
||||
(mapcar #'capitalize
|
||||
;; Replace -,_... with space
|
||||
(split-string
|
||||
(let (case-fold-search)
|
||||
;; Seperating lower from upper: hello|World
|
||||
(replace-regexp-in-string
|
||||
"\\([[:lower:]]\\)\\([[:upper:]]\\)" "\\1 \\2"
|
||||
;; Separating upper from (upper and lower): HTTP|Server
|
||||
(replace-regexp-in-string "\\([[:upper:]]\\)\\([[:upper:]][0-9[:lower:]]\\)"
|
||||
"\\1 \\2" (file-name-base buffer-file-name))))
|
||||
"[^[:word:]0-9]+"
|
||||
)) " " )
|
||||
`}
|
||||
#+AUTHOR: "`user-full-name`"
|
||||
#+EMAIL: "`user-mail-address`"
|
||||
#+DATE: "`(format-time-string "%Y-%m-%d %T %:z")`"
|
||||
#+DATE_MODIFIED: "`(format-time-string "%Y-%m-%d %T %:z")`"
|
||||
#+LANGUAGE: en
|
||||
#+OPTIONS: toc:t
|
||||
#+PROPERTY: header-args :exports both
|
||||
|
||||
|
||||
$0
|
0
locations.json
Normal file → Executable file
6
makefile
Normal file → Executable file
@ -1,12 +1,12 @@
|
||||
.PHONY = install
|
||||
install:
|
||||
./manager.py --commands "mkdir -p {location}" "stow --stow {package} --target {location}"
|
||||
./vtsm --commands "mkdir -p {location}" "stow --stow {package} --target {location}"
|
||||
|
||||
.PHONY = reinstall
|
||||
reinstall:
|
||||
./manager.py --commands "mkdir -p {location}" "stow --restow {package} --target {location}"
|
||||
./vtsm --commands "mkdir -p {location}" "stow --restow {package} --target {location}"
|
||||
|
||||
.PHONY = clean
|
||||
clean:
|
||||
./manager.py --commands "stow --delete {package} --target {location}"
|
||||
./vtsm --commands "stow --delete {package} --target {location}"
|
||||
|
||||
|
3
nvim/init.vim
Normal file → Executable file
@ -88,6 +88,9 @@ Plug 'airblade/vim-gitgutter'
|
||||
|
||||
" Plugin for distraction-free writing.
|
||||
Plug 'junegunn/goyo.vim'
|
||||
|
||||
" A Nix plugin.
|
||||
Plug 'LnL7/vim-nix'
|
||||
call plug#end()
|
||||
|
||||
|
||||
|
0
nvim/own-snippets/all.snippets
Normal file → Executable file
2
nvim/own-snippets/asciidoc.snippets
Normal file → Executable file
@ -51,7 +51,7 @@ ${1:<url>}[${2:<text>}] $0
|
||||
endsnippet
|
||||
|
||||
snippet link "Link for files" iw
|
||||
link:${1:<url>}[`$1`]
|
||||
link:${1:<url>}[\`$1\`]
|
||||
endsnippet
|
||||
|
||||
snippet sp "Superscript" iw
|
||||
|
0
nvim/own-snippets/nroff.snippets
Normal file → Executable file
0
nvim/own-snippets/python.snippets
Normal file → Executable file
0
nvim/own-snippets/sh.snippets
Normal file → Executable file
0
nvim/own-snippets/snippets.snippets
Normal file → Executable file
0
nvim/own-snippets/tex.snippets
Normal file → Executable file
321
packages.txt
@ -1,321 +0,0 @@
|
||||
0ad
|
||||
0ad-data
|
||||
adobe-source-sans-pro-fonts
|
||||
adobe-source-serif-pro-fonts
|
||||
alacritty
|
||||
alex
|
||||
alsa-plugins
|
||||
alsa-utils
|
||||
amd-ucode
|
||||
android-tools
|
||||
anki
|
||||
apache
|
||||
arandr
|
||||
arc-gtk-theme
|
||||
arc-icon-theme
|
||||
arch-audit
|
||||
archiso
|
||||
archlinux-contrib
|
||||
ardour
|
||||
asciidoctor
|
||||
audacious
|
||||
audacity
|
||||
autoconf
|
||||
automake
|
||||
base
|
||||
bash
|
||||
bat
|
||||
binutils
|
||||
bison
|
||||
blender
|
||||
breeze-gtk
|
||||
breeze-icons
|
||||
bspwm
|
||||
bzip2
|
||||
cabal-install
|
||||
cadence
|
||||
carla
|
||||
chromium
|
||||
clang
|
||||
code
|
||||
coreutils
|
||||
cowsay
|
||||
cronie
|
||||
cryptsetup
|
||||
device-mapper
|
||||
dhall
|
||||
dhall-json
|
||||
dhcpcd
|
||||
diffutils
|
||||
dmenu
|
||||
docker
|
||||
docker-compose
|
||||
dunst
|
||||
e2fsprogs
|
||||
editorconfig-core-c
|
||||
efibootmgr
|
||||
emacs
|
||||
entr
|
||||
erlang
|
||||
espeak
|
||||
exa
|
||||
fakeroot
|
||||
fd
|
||||
feh
|
||||
festival
|
||||
file
|
||||
filesystem
|
||||
findutils
|
||||
firefox
|
||||
firefox-developer-edition
|
||||
flex
|
||||
fontforge
|
||||
foremost
|
||||
freeglut
|
||||
fzf
|
||||
gawk
|
||||
gcc
|
||||
gcc-libs
|
||||
gdb
|
||||
gettext
|
||||
ghc
|
||||
gimp
|
||||
gimp-help-en
|
||||
git
|
||||
glava
|
||||
glibc
|
||||
gnu-netcat
|
||||
go
|
||||
gource
|
||||
graphviz
|
||||
grep
|
||||
groff
|
||||
gucharmap
|
||||
gvfs
|
||||
gzip
|
||||
happy
|
||||
hexyl
|
||||
htop
|
||||
hugo
|
||||
inetutils
|
||||
inkscape
|
||||
iproute2
|
||||
iputils
|
||||
iwd
|
||||
jack2
|
||||
jdk-openjdk
|
||||
jfsutils
|
||||
jq
|
||||
jre-openjdk
|
||||
kcharselect
|
||||
keybase
|
||||
kicad
|
||||
kicad-library
|
||||
krita
|
||||
less
|
||||
libtool
|
||||
libvirt
|
||||
licenses
|
||||
linux
|
||||
linux-firmware
|
||||
lldb
|
||||
llvm
|
||||
lmms
|
||||
logrotate
|
||||
lolcat
|
||||
lvm2
|
||||
lxappearance
|
||||
lxsession
|
||||
m4
|
||||
maim
|
||||
make
|
||||
man-db
|
||||
man-pages
|
||||
mdadm
|
||||
mediawiki
|
||||
moreutils
|
||||
mpg123
|
||||
mpv
|
||||
musescore
|
||||
musl
|
||||
nano
|
||||
ncmpcpp
|
||||
neofetch
|
||||
neomutt
|
||||
neovim
|
||||
netctl
|
||||
networkmanager
|
||||
newsboat
|
||||
nnn
|
||||
nodejs
|
||||
nodejs-material-design-icons
|
||||
noto-fonts
|
||||
noto-fonts-cjk
|
||||
noto-fonts-emoji
|
||||
npm
|
||||
ntfs-3g
|
||||
obs-studio
|
||||
octave
|
||||
orca
|
||||
otf-latin-modern
|
||||
otf-latinmodern-math
|
||||
p7zip
|
||||
pacman
|
||||
pacman-contrib
|
||||
pamixer
|
||||
pandoc
|
||||
pass
|
||||
patch
|
||||
pavucontrol
|
||||
pciutils
|
||||
perl
|
||||
php
|
||||
picom
|
||||
pkgconf
|
||||
powertop
|
||||
procps-ng
|
||||
psmisc
|
||||
pstoedit
|
||||
pulseaudio
|
||||
pulseaudio-alsa
|
||||
pulseaudio-jack
|
||||
pulsemixer
|
||||
pv
|
||||
python-pip
|
||||
python-pynvim
|
||||
python-pywal
|
||||
qbittorrent
|
||||
qemu
|
||||
qrencode
|
||||
qt5-script
|
||||
r
|
||||
racket
|
||||
reiserfsprogs
|
||||
repo
|
||||
rofi
|
||||
ruby
|
||||
ruby-rouge
|
||||
s-nail
|
||||
screenkey
|
||||
scrot
|
||||
sed
|
||||
shadow
|
||||
shellcheck
|
||||
shotcut
|
||||
sonic-pi
|
||||
soundfont-fluid
|
||||
sox
|
||||
stack
|
||||
stow
|
||||
strace
|
||||
sudo
|
||||
sxhkd
|
||||
sxiv
|
||||
syncthing
|
||||
sysfsutils
|
||||
systemd
|
||||
systemd-sysvcompat
|
||||
tar
|
||||
telegram-desktop
|
||||
tesseract
|
||||
tesseract-data-eng
|
||||
texinfo
|
||||
texlive-bibtexextra
|
||||
texlive-core
|
||||
texlive-fontsextra
|
||||
texlive-formatsextra
|
||||
texlive-latexextra
|
||||
texlive-pictures
|
||||
texlive-science
|
||||
thunar
|
||||
thunar-volman
|
||||
thunderbird
|
||||
timidity++
|
||||
tmux
|
||||
tor
|
||||
tree
|
||||
ttf-bitstream-vera
|
||||
ttf-dejavu
|
||||
ttf-fira-code
|
||||
ttf-font-awesome
|
||||
ttf-ibm-plex
|
||||
ttf-jetbrains-mono
|
||||
ttf-joypixels
|
||||
ttf-nerd-fonts-symbols
|
||||
udiskie
|
||||
unison
|
||||
upx
|
||||
usbutils
|
||||
util-linux
|
||||
vagrant
|
||||
vi
|
||||
vim
|
||||
vlc
|
||||
weechat
|
||||
wesnoth
|
||||
wget
|
||||
which
|
||||
wkhtmltopdf
|
||||
xarchiver
|
||||
xautomation
|
||||
xclip
|
||||
xdg-user-dirs
|
||||
xdotool
|
||||
xf86-video-nouveau
|
||||
xf86-video-vesa
|
||||
xfsprogs
|
||||
xorg-bdftopcf
|
||||
xorg-docs
|
||||
xorg-font-util
|
||||
xorg-fonts-100dpi
|
||||
xorg-fonts-75dpi
|
||||
xorg-fonts-encodings
|
||||
xorg-iceauth
|
||||
xorg-luit
|
||||
xorg-mkfontscale
|
||||
xorg-server
|
||||
xorg-server-common
|
||||
xorg-server-devel
|
||||
xorg-server-xephyr
|
||||
xorg-server-xnest
|
||||
xorg-server-xvfb
|
||||
xorg-server-xwayland
|
||||
xorg-sessreg
|
||||
xorg-setxkbmap
|
||||
xorg-smproxy
|
||||
xorg-x11perf
|
||||
xorg-xauth
|
||||
xorg-xbacklight
|
||||
xorg-xcmsdb
|
||||
xorg-xcursorgen
|
||||
xorg-xdpyinfo
|
||||
xorg-xdriinfo
|
||||
xorg-xev
|
||||
xorg-xgamma
|
||||
xorg-xhost
|
||||
xorg-xinit
|
||||
xorg-xinput
|
||||
xorg-xkbcomp
|
||||
xorg-xkbevd
|
||||
xorg-xkbutils
|
||||
xorg-xkill
|
||||
xorg-xlsatoms
|
||||
xorg-xlsclients
|
||||
xorg-xmodmap
|
||||
xorg-xpr
|
||||
xorg-xprop
|
||||
xorg-xrandr
|
||||
xorg-xrdb
|
||||
xorg-xrefresh
|
||||
xorg-xset
|
||||
xorg-xsetroot
|
||||
xorg-xvinfo
|
||||
xorg-xwd
|
||||
xorg-xwininfo
|
||||
xorg-xwud
|
||||
youtube-dl
|
||||
zathura
|
||||
zathura-pdf-mupdf
|
||||
zbar
|
||||
zsh
|
||||
zsh-completions
|
0
pacman/hooks/100-systemd-boot.hook
Normal file → Executable file
0
pacman/pacman.conf
Normal file → Executable file
0
picom/picom.conf
Normal file → Executable file
0
polybar/config
Normal file → Executable file
0
rofi/config.rasi
Normal file → Executable file
0
rofi/themes/dmenu.rasi
Normal file → Executable file
0
rofi/themes/fds-center-menu.rasi
Normal file → Executable file
0
rofi/themes/fds-mini-sidebar.rasi
Normal file → Executable file
12
sxhkd/sxhkdrc
Normal file → Executable file
@ -12,7 +12,7 @@ super + t
|
||||
|
||||
# Application launcher.
|
||||
super + d
|
||||
rofi -show drun -sidebar-mode -theme fds-mini-sidebar
|
||||
rofi -show drun -sidebar-mode -theme themes/fds-mini-sidebar
|
||||
|
||||
# User action shortcuts.
|
||||
super + F10
|
||||
@ -22,7 +22,7 @@ super + F11
|
||||
user-prompt "Proceed to reboot?" "sudo -A reboot"
|
||||
|
||||
super + F12
|
||||
user-prompt "Exit from X session?" "killall Xorg"
|
||||
user-prompt "Exit from X session?" "pkill bspwm"
|
||||
|
||||
# Screenshot and screencast launcher.
|
||||
super + {_, shift + } Print
|
||||
@ -42,12 +42,8 @@ super + shift + m
|
||||
super + shift + e
|
||||
choose-emoji-menu
|
||||
|
||||
super + shift + t
|
||||
select-wal-theme
|
||||
|
||||
super + shift + f
|
||||
rofi-recoll --rofi-options " -fullscreen" | xargs xdg-open
|
||||
|
||||
super + shift + c
|
||||
$HOME/.config/emacs/bin/org-capture
|
||||
|
||||
shift + super + r
|
||||
pkill -USR1 sxhkd && notify-send "SXHKD config has successfully reloaded."
|
||||
|
0
sxiv/exec/image-info
Normal file → Executable file
0
sxiv/exec/key-handler
Normal file → Executable file
@ -1,10 +0,0 @@
|
||||
[Unit]
|
||||
Description=Unison backup sync
|
||||
Documentation=https://www.cis.upenn.edu/~bcpierce/unison/docs.html
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/unison main -fat -ignorearchives -batch -root "/run/media/%u/Seagate Backup Plus Drive" -links true
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical.target
|
@ -1,10 +0,0 @@
|
||||
[Unit]
|
||||
Description=Periodic Unison backup sync
|
||||
Documentation=https://www.cis.upenn.edu/~bcpierce/unison/docs.html
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 0/4:00:00
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
@ -1,9 +0,0 @@
|
||||
[Unit]
|
||||
Description=Commit the package list into the dotfiles
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=%h/.local/bin/commit-pkglist
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
@ -1,9 +0,0 @@
|
||||
[Unit]
|
||||
Description=Commit the package list into the dotfiles
|
||||
|
||||
[Timer]
|
||||
OnCalendar=monthly
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|