Status
My System Configuration
Gallery
System
Communication
Development
Utility
Entertainment
Table of Content
- Overview
- Applications
- Apt
- Aur
- Backup
- Cron Jobs
- Dotfiles
- Node
- Nvim
- Pacman
- Python
- Systemd
- Tampermonkey
- Spring Cleaning, Keeping your Home Directory Clean
- How my Theming Works
- Dependencies
- License
- Credit
Overview
This repo contains all my system-wide configuration. Let me clear something up. This ISN'T my dotfiles. My dotfiles are a subset of this repo. I have other things like my neovim config, python libraries, etc.
Here's the basic structure of this repo:
Repo Layout
.
├── aspects
│ ├── dotfiles
│ └── ...
├── CHANGELOG.md
├── CONTRIBUTING.md
├── install
├── LICENSE.md
├── man
│ ├── colors.py
│ ├── helpers.py
│ ├── __init__.py
│ ├── log_level.txt
│ ├── log.py
│ ├── main.py
│ ├── operations
│ ├── templates
│ │ ├── personal
│ │ │ └── .config
│ │ │ ├── gh
│ │ │ │ └── hosts.yml
│ │ │ │ ├── oauth_token.template
│ │ │ │ └── user.template
│ │ │ └── ...
│ │ └── public
│ │ └── .config
│ │ ├── gh
│ │ │ └── hosts.yml
│ │ │ ├── oauth_token.template
│ │ │ └── user.template
│ │ └── ...
│ └── variables.py
├── README.md
└── third-party-tools
├── chameleon
├── gnuplot-pywal
├── instant-reference
└── start-tree
Applications
System
- bspwm: Tiling window manager.
- polybar: Customizable taskbar.
- xmenu: Modular start menu.
- rofi: Application launcher.
- kdeconnect: Control system from phone.
- flameshot: Robust screenshotting tool.
- giph: Record gifs from your terminal.
- slop: Screen region selector.
- xclip: Scriptable clipboard utility.
- xfce4-terminal as my main terminal.
Tools
Communication
- neomutt: TUI email client.
- nctelegram: TUI Telegram client.
- Telegram desktop: GUI Telegram client.
- weechat: Terminal IRC client.
- tuir: Reddit in the terminal.
- kdeconnect-sms: Send SMS from your system.
- cordless: TUI Discord client.
Development
- Neovim: Amazing text editor.
- Death.NeoVim: My custom neovim configuration.
- Qalculate!: Intuitive and powerful calculator.
- gnuplot: Graph and plot in the terminal.
- ghcal: See the GitHub contributions calendar of a user in the command line.
- hexyl: Terminal hex viewer.
- bitwise: Terminal based bit manipulator in ncurses.
- gdb-dashboard: Modular visual interface for GDB in Python.
- github-stats: Visualize stats about GitHub users and projects in your terminal.
- QDbusViewer Dbus investigator GUI.
- how2: Search stack overflow from the terminal.
Education
- Anki: Powerful, intelligent flash cards.
Productivity
Science
- Ugene: Bioinformatics suite.
- pymol: Molecular science suite.
- GROMACS: Molecular dynamics simulation suite.
- ASCIIGenome Text genome viewer.
- Alan Text genome alignment viewer.
- alv Text genome alignment viewer.
- Desmos-Destkop: Electron desktop desmos app..
- chemtool: A small program for drawing chemical structures.
- celestia: Real-time space simulation.
- geogebra: Dynamic mathematics software with interactive graphics, algebra and spreadsheet.
Personal
- Khard: Console contact manager.
- Khal: Console calendar.
- Nextcloud client: Sync files with Nextcloud server.
- vdirsyncer: Synchronize calendar and contacts with NextCloud.
Entertainment
Media
- castero: TUI for podcasts.
- newsboat: TUI RSS reader.
- cava: Console music visualizer.
- glava: OpenGL audio spectrum visualizer.
- cmus: Lightweight console music player.
- cmus-notify: Notifications for
cmus
. - youtube-dl: Easily download music and videos.
- jftui: Jellyfin TUI interface.
- swaglyrics: Spotify lyrics in browser or terminal.
Games
- tetris-terminal: Tetris in the terminal.
- tty-solitaire: Solitaire in the terminal.
- bs: Battleship in the terminal.
- bsdgames : Collection of terminal games.
- dopewars: drug dealing game set in 1980s NYC.
- Cures of War: Fast-paced action strategy game for Linux.
Misc
- pipes.sh: Animated pipes terminal screensaver.
- rain.sh: Animated rain terminal screensaver.
- unimatrix: Matrix in your terminal.
- asciiquarium: Aquarium in your terminal.
- bonsai.sh: Grow a bonsai tree in your terminal.
- termtracker: Track satellites in your terminal.
- Lyrebird: GTK Voice changer.
- genact: Fake activity generator.
Utility
System
- ckb-next: Corsair peripheral software.
- baobab: GUI disk usage. analyzer
- diskonaut: TUI disk usage. analyzer.
- dust: TUI disk usage analyzer.
- zathura: Lightweight PDF reader.
- ranger: Vim inspired console file manager.
- haguichi: GUI Hamachi client (requires.
- dmenu-hotkeys: Searchable i3
keybinds for
rofi
ordmenu
. - gucharmap: GNOME interface for system fonts.
- greenclip: Clipboard manager
- gnome-font-viewer.
- glow: CLI/TUI markdown reader.
- rofi-emoji: An emoji selector plugin for Rofi.
- rofi-power-menu:
Power menu for
rofi
. - gpick: Advanced color picker.
- termdown: Countdown timer and stopwatch in your terminal.
- peaclock: Terminal timer and clock.
- yad: Create GTK interfaces from the command line.
Monitors
System
- s-tui: Terminal-based CPU stress and monitoring utility.
- CoreFreq: Console CPU monitor.
- gotop: Terminal based graphical activity monitor.
- bashtop: Terminal based graphical activity monitor written in bash.
- glances: Your system at a glance.
- iotop: IO statistics.
- nmon: Configurable ncurses system monitor.
- atop: System and process montior.
- powertop: Monitor system power.
- nvtop: NVIDIA GPU TUI monitor.
- kmon: TUI Kernel monitor.
- lnav: Better log viewer.
Network
- dnstop: Terminal DNS monitor.
- ethstatus: Ethernet status monitor.
- jnettop: view hosts/ports taking up the most network traffic.
- nload: Monitors network traffic and bandwidth usage.
- bmon: Bandwidth monitor.
- termshark: Wireshark implemented in a TUI.
- gping: TUI ping with graph.
- speedtest-cli: CLI speedtest program.
Finance
Misc
- synonym: Thesaurus in the terminal.
- mapscii: Map in your terminal.
- translate-shell: Google translate in the terminal.
- wtfuitil: Modular terminal dashboard.
- iponmap: commandline IP location finder.
Security
Theming
- pywal: Generate colorschemes from photos haishoku, colorthief, and colorz python modules for pywal backends.
- Chameleon: Automatically apply the schemes below.
- Zathura-Pywal: pywal colorscheme for zathura.
- Gnuplot-Pywal: pywal colorscheme for gnuplot.
- qutewal: pywal theme for qutebrowser.
- oomox: Generate icon themes, spotify themes, and GTK themes from pywal.
- lxappearance: GUI for selecting/viewing GTK themes.
- Archdroid Icons: For custom GTK themes.
- qt5ct: Qt5 configuration tool.
- qtcurve-qt5: Qt5/Qt4 config tool.
- qt5-styleplugins: Enable Qt features such as GTK theme.
- Pywalfox: Theme firefox and DDG with pywal.
Apt
If you're on a debian based distro, then this aspect will be run to install all
the required packages. Of course, you can always opt out of this feature by
using the --no-packages
option when running the installation script.
Packages
- Coming Soon ...
Aur
If you're on an arch based distro, then this aspect will be run to install all
the required packages. Of course, you can always opt out of this feature by
using the --no-packages
option when running the installation script.
Packages
- Coming Soon ...
Backup
Before installing anything, this aspect will backup all of your configurations
that'll be overwritten by mine to ~/.backup/
. For example, if you're
installing my dotfiles, then all your zsh configuration, nvim configuration,
neomutt configuration, will be moved to ~/.backup/.config/
just in case
you'd like to revert back. Of course, you can always opt out of this feature
by using the --no-backup
option when running the installation script.
Cron Jobs
This aspect will install all my cron jobs. It'll only be installed if you
use the --singularis
option, which I discuss more in depth
here.
Dotfiles
Features
A set of dotfiles that I’ve been tweaking and twiddling since mid 2018 (under version control since 2022). Characteristics include:
- Sane Vim pasting via bracketed paste mode.
- Navigate between Vim and Tmux with ease.
- Full mouse support (pane/split resizing, scrolling, text selection) in Vim and tmux.
- Focus/lost events for Vim inside tmux.
- Cursor shape toggles on entering Vim.
- Italics, Bolds, and Underlines in the terminal.
- Bundles a (not-excessive) number of useful Vim plug-ins.
- Conservative Vim configuration (overrides of core functionality;
most changes are unobtrusive enhancements; some functionality exposed via
<Leader>
and<LocalLeader
> mappings. - Restrained Zsh config, Bash-like but with some Zsh perks, such as right-side prompt, auto-cd hooks, command elapsed time printing, own custom-made plugin manager, and such.
Zsh
Functions
git
: A git wrapper function. If you just rungit
,git status
will be run. If you rungit root
, you'll go to the root directory in the current git folder. If you rungit root ls
, thels
command will be run in the root directory in the git folder.scratch
: Create a temporary directory, cd into it and create a sub shell inside it.tmux
: Wrapper that reattaches to pre-existing sessions, or creates new ones based on the current directory name; it also looks for a.tmux
file to set up windows and panes.gpg
: A re-write function that if you don't give it any parameters, it will rungpg --list-keys
.zsh_add_file
: This function sources any file you have in the zsh config directory in ~/Singularis/config/dotfiles/files/.zshzsh_add_plugin
: This function sources any plugin you have in the zsh config directory in ~/Singularis/config/dotfiles/files/.zsh/pluginszsh_add_completion
: This function sources any completion you have in the zsh config directory in ~/Singularis/config/dotfiles/files/.zsh/completion
Bindings
Up Arrow
: Previous command.Down Arrow
: Next command.Ctrl+p
: Previous command.Ctrl+n
: Next command.k
: Previous command.j
: Next command.Ctrl+o
: Open lf and cd into that directory.Ctrl+x
: Edit the current command in a NeoVim temp file.Ctrl+r
: Reloud .zshrc.
Prompt
Zsh is configured with the following prompt:
Visible here are:
- Concise left-hand prompt consisting of:
- Last component of current directory (abbreviates $HOME to ~ if possible).
- Prompt marker, ❯, the
"HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT"
(that's
\u276f
, ore2 9d af
in UTF-8).
- Extended right-hand size prompt which auto-hides when necessary to make room
for long commands and contains:
- Duration of previous command in adaptive units (seconds, minutes, hours, days, depending on duration).
- Current version control branch name.
- Current version control worktree status using colors that match those used
in
git status
:- Green dot indicates staged changes.
- Red dot indicates unstaged changes.
- Blue dot indicates untracked files.
- Full version of current working directory (again, abbreviating
$HOME
to~
).
Nested shells are indicated with additional prompt characters. For example, one nested shell:
Two nested shells:
Root shells are indicated with a different color prompt character and the word "root":
Nesting within a root shell is indicated like this:
Two nested shells:
Tmux shells are indicated with a different color prompt character and the word "tmux":
Nesting within a tmux shell is indicated like this:
Two nested shells:
If the last command exited with a non-zero status (usually indicative of an error), a yellow exclamation is shown:
If there are background processes, a yellow asterisk is shown:
Plugins
- zsh autosuggestions: Get autosuggestions from previous commands.
- zsh-syntax-highlighting: Highlight commands.
Tmux
Bindings
I changed the default prefix from <C-b>
to <C-Space>
Basics
<C+Space>|
: Create a vertical split.<C+Space>\
: Create a vertical split.<C+Space>-
: Create a horizontal split.<C+Space>r
: Resource tmux.conf file.<C+Space><C+b>
: Break current pane into it's own window.<C+Space><C+Space>
: Jump back to previous window.<C+Space>b
: Create a new session.<C+Space>B
: Create a new named session.<C+Space>K
: Kill current session.<C+Space>j
: Join 2 windows together.<C+Space>S
: Jump back to previous session.
Navigation
<C-Space>h
: Jump to the left pane.<C-Space>l
: Jump to the right pane.<C-Space>k
: Jump to the above pane.<C-Space>j
: Jump to the below pane.
Plugins
I use the following tmux plugins:
- copycat: To highlight files.
- yank: Better copy.
- open: Open cwd in a file browser.
- prefix-highlight: Highlight the tmux statusbar when I hit the previx key.
- sessionist: Manage my sessions.
- fpp: Better file picker.
- urlview: View urls.
To install them, after you enter tmux, run <C-Space>I
.
Prompt
Sxhkd
I use Sxhkd to manage all my keybindings, which helps when I switch to another wm, I have the same as I did previously.
School
Action | Keybinding |
---|---|
Open current master assignment pdf | Alt+b |
Open notes for your current course | Alt+o |
Compile your current notes | Alt+O |
List all your inkscape figures | Alt+i |
Get an instant reference from a pdf | Alt+f |
Open chrome with your current course | Alt+w |
Open your info.yaml file in nvim | Alt+y |
Open the source directory of my notes | Alt+m |
Open xournal | Alt+x |
Open your journal notes in lf | Alt+r |
Open the current note of the day | Alt+n |
Open the master.tex file for your journal | Alt+N |
Open your journal pdf | Alt+j |
Compile your journal pdf | Alt+J |
List all my current lectures | Alt+l |
List all my assignments | Alt+a |
List all my courses | Alt+c |
Source a range of lectures | Alt+s |
Create a lecture | Alt+L |
Create an assignment | Alt+A |
Create a course | Alt+C |
Go through all your research papers | Alt+p |
Applications
Action | Keybinding |
---|---|
Open terminal (xfce4-terminal) | Super+Enter |
Open the browser of your choice | Super+w |
Open neomutt (in xfce4-terminal) | Super+m |
Open ncmpcpp (in xfce4-terminal) | Super+e |
Open castero (in xfce4-terminal) | Super+C |
Open pulsemixer (in xfce4-terminal) | Super+Shift+p |
Open xmenu | Super+Shift+d |
Open sioyek | Super+Shift+z |
Open a scratchpad | Super+Shift+s |
Rofi
Action | Keybinding |
---|---|
Open Rofi | Super+r |
List all applications via Rofi | Super+Alt+Shift+r |
List all emojis via Rofi | Super+Alt+Shift+e |
Polybar
Action | Keybinding |
---|---|
Enable/Disable polybar | Super+b |
Dunst
Action | Keybinding |
---|---|
Close one notification | Ctrl+Space |
Close all notifiactions | Ctrl+Shift+Space |
Bring back the last notification | Ctrl+` |
Music
Action | Keybinding |
---|---|
Toggle MPD | Super+Alt+t |
Restart song | Super+Alt+r |
Seek forward 60 seconds | Super+Alt+Shift+[ |
Seek backward 60 seconds | Super+Alt+Shift+] |
Seek forward 10 seconds | Super+Alt+[ |
Seek backward 10 seconds | Super+Alt+] |
Previous song | Super+, |
Next song | Super+. |
Turn up the volume | Super+Alt+u |
Turn down the volume | Super+Alt+d |
Other
Action | Keybinding |
---|---|
Take a screenshot |
Bspwm
Desktop and Workspaces
Action | Keybinding |
---|---|
Send item to workspace | Super+Shift+{1-9} |
Go to workspace | Super+{1-9} |
Go back to the most recent workspace | Super+Tab |
Windows
Action | Keybinding |
---|---|
Destroy current application | Super+q |
Split h(o)rizontal, (v)ertical, or (c)ancel | Super+{0,v,c} |
Full screen/Monocle | Super+f |
Toggle between floating and tiled | Super+Space |
(p)suedo tiled and (t)iled mode | Super+Ctrl+{p,t} |
Set the node flags (marked,locked,sticky,private) | Super+Ctrl+{m,l,s,z} |
Move and Resize
Action | Keybinding |
---|---|
Expand a window by moving one of its side outward | Super+Alt+{h,j,k,l} |
Contract a window by moving one of its side inward | Super+Alt+Shift+{h,j,k,l} |
Move a floating window | Super+{Left,Down,Up,Right} |
Focus and Swap
Action | Keybinding |
---|---|
Move around | Super+{h,j,k,l} |
Move application | Super+Shift+{h,j,k,l} |
Selecting areas
Action | Keybinding |
---|---|
Preselect the direction | Super+Ctrl+Alt+{h,j,k,l} |
Preselect the ratio | Super+Ctrl+{1-9} |
Cancel the preselection for the focused node | Super+Ctrl+Space |
Cancel the preselection for the focused desktop | Super+Ctrl+Shift+Space |
Move current window to a preselected space | Super+Shift+m |
Gaps
Action | Keybinding |
---|---|
Enable and Disable gaps | Super+a |
Reset gaps to normal size | Super+Shift+a |
Increase gap size by 10 | Super+z |
Decrease gap size by 10 | Super+x |
Other
Action | Keybinding |
---|---|
Restart sxhkd | Super+Escape |
Restart bspwm | Super+Shift+Ctrl+r |
Quit bspwm | Super+Shift+Ctrl+1 |
Audio
I use multiple applications to manage my audio.
MPD
MPD is my music player daemon.
Ncmpcpp
A gui way of selecting the next audio.
MPV
A nice way of jumping between audio, getting current info, etc.
Castero
A gui way of listening to my favorite podcasts.
Newsboat
A gui way of watching my favorite youtubers.
Window Managers
Over the years, I've collected all my window manager configurations.
Bspwm
BSPWM is my current window manager. It's amazing, quick and easy to use and accustomed to. I use polybar as my statusbar with BSPWM.
DWM
I was using this wm before I switched over to BSPWM. Honestly, it's a solid choice for those who don't need to much customization. The only downside is you need to modify the source code directly. There's no actual config file for it. That's the suckless way I guess (retarded imo). I had to use DWM's own statusbar, which was a real bummer because I tried for weeks to get polybar working with it, but it doesn't work. That's the main reason I switched over to BSPWM.
Awesome
A weak choice imo. I'm pretty sure there are dozens of bugs with my awesome configuration, but I don't really care. If you wish, you can use my configuration and patch it to your need. Opening a pr would be greatly appreciated. For it's statusbar, I use Awesome's own statusbar, which is 10x better than DWM's imo.
NeoMutt
Currently, I'm in a bit of a dilemma. I really want to use NeoMutt as a tui email client, but it's freaking slow as HELL. So, keep that in mind when using my configuration.
Accounts
Here's the boiler template for creating an account:
# vim: filetype=muttrc
unmailboxes *
set from = "[email protected]"
set realname = "Foo B. Bazz"
# Imap settings
set imap_user = "[email protected]"
set imap_pass = `pass example` # Either pass a command like pass
set imap_pass = "password" # Or enter your password manually
# Smtp settings
set smtp_url = "smtps://[email protected]"
set smtp_pass = `pass example` # Either pass a command like pass
set smtp_pass = "password" # Or enter your password manually
# Remote gmail folders
set folder = "imaps://imap.gmail.com/"
set spoolfile = "+INBOX"
set postponed = "[Gmail]/Drafts"
set record = "[Gmail]/Sent Mail"
set trash = "[Gmail]/Trash"
set envelope_from
set use_from = "yes"
set mail_check = 6
mailboxes "=INBOX"
mailboxes "=[Gmail]/Drafts"
mailboxes "=[Gmail]/Sent Mail"
mailboxes "=[Gmail]/Starred"
mailboxes "=[Gmail]/Spam"
mailboxes "=[Gmail]/Trash"
named-mailboxes " Inbox" "=INBOX"
named-mailboxes " Drafts" "=[Gmail]/Drafts"
named-mailboxes " Sent Mail" "=[Gmail]/Sent Mail"
named-mailboxes " Starred" "=[Gmail]/Starred"
named-mailboxes " Spam" "=[Gmail]/Spam"
named-mailboxes " Trash" "=[Gmail]/Trash"
# Allow Mutt to open a new IMAP connection automatically.
unset imap_passive
# Keep the IMAP connection alive by polling intermittently (time in seconds).
set imap_keepalive = 60
Key bindings
NOTE: I removed all default keybindings. So, these are the only keybindings available.
Index and Pager
Action | Keybinding |
---|---|
Delete message | d |
Edit label | L |
Compose message | c |
Recall message | Ctrl+r |
Reply to message | r |
Reply to all | R |
Forward message | F |
Sync mailbox | $ |
Search next | n |
Search opposite | N |
Refresh | F5 |
Go half-up | Ctrl+u |
Go half-down | Ctrl+d |
Toggle sidebar | Ctrl+b |
Go to next sidebar item | Ctrl+j |
Go to previous sidebar item | Ctrl+k |
Open sidebar | Ctrl+o |
Go to next unread message | Ctrl+n |
Go to previous unread message | Ctrl+p |
View raw message | H |
View attachments | v |
Pipe message | | |
Index
Action | Keybinding |
---|---|
Tag entry | t |
Tag thread | T |
Flag message | Space |
Undelete message | u |
Undelete thread | U |
Collapse thread | Tab |
Link threads | + |
Go to current middle | zz |
Go to current top | zt |
Go to current bottom | zb |
Limit by flagged | \ |
Pager
Action | Keybinding |
---|---|
Go to the next line | j |
Go to the previous line | k |
Go to the next line | Down |
Go to the previous line | Up |
Go to the bottom | G |
Go to the top | gg |
Attach
Action | Keybinding |
---|---|
View mailcap | Enter |
Pipe entry | | |
Compose
Action | Keybinding |
---|---|
Send message | y |
Attach file | a |
Postpone message | p |
Edit message | e |
Edit to | t |
Edit from | f |
Edit subject | s |
Edit cc | c |
Edit bcc | b |
Rename file | r |
Filter entry | F |
Edit type | Ctrl+t |
Move up | Ctrl+k |
Move down | Ctrl+j |
Browser
Action | Keybinding |
---|---|
Go to the top page | gg |
Go to the bottom page | G |
Select entry | Enter |
Index and Attach and Browser and Query
Action | Keybinding |
---|---|
Go to the last entry | G |
Go to the first entry | gg |
Go to the next entry | j |
Go to the previous entry | k |
Go to the next entry | Down |
Go to the previous entry | Up |
Khard (Deprecated)
I used khard before I found out about goobook
. Khard is a simple contact
manager, which I used with NeoMutt. Now, I use goobook
, which gets all your
contacts directly from google contact.
File Navigation
I don't use file navigators anymore, but here are some that I used and still have the configuration for.
- Lf
- Ranger
Utilities
Dunst
Dunst is my notification manager.
Khal
I use khal for viewing calendar in the terminal.
Lynx
This is a tui web browser. It's not really cool. I don't use this often. I only got it configured because I was bored.
Neofetch (Deprecated)
I used to have neofetch load when I first open my zsh shell, but it slowed it down a ton. Other than that, I don't really have any use cases for it.
Picom
I don't use picom too often, but every now and then I enjoy some transparency.
Polybar
Polybar is my main statusbar. The main reason I love it is because I can keep track of my school courses, such as when is the next one coming, what is my current course, etc. It's also really configurable. I store all my polybar scripts here.
Rofi
I use rofi to select programs. It's a lot better than stupid dmenu.
Sioyek
I use zathura and sioyek interchangeably. There're both pdf viewers. When I want to view my school notes, or anything that needs note taking I use sioyek, since I sioyek since I can highlight stuff and return later. Anything else, I use zathura.
Node
Nvim
My NeoVim configuration is blazingly fast. It loads up in about 120 milliseconds. Also note, I have about 80 plugins and dozens of configuration files.
Output of `StartupTime --tries 100`.
startup: 124.6
event time percent plot
init.lua 65.07 52.21 ██████████████████████████
black.vim 29.81 23.92 ███████████▉
python3.vim 28.71 23.03 ███████████▌
impatient 8.88 7.13 ███▌
SingularisArt.config 4.83 3.87 █▉
SingularisArt.config 4.57 3.67 █▉
loading rtp plugins 4.51 3.62 █▊
telescope.actions 4.26 3.41 █▊
telescope.config 3.37 2.71 █▍
SingularisArt.lsp.co 3.06 2.45 █▎
SingularisArt.lsp.ha 2.68 2.15 █▏
vim.lsp 2.41 1.93 █
cmp 2.27 1.82 ▉
cmp.core 1.99 1.60 ▊
null-ls 1.97 1.58 ▊
VimEnter autocommand 1.85 1.48 ▊
emmet.vim 1.84 1.47 ▊
opening buffers 1.71 1.37 ▋
vim.lsp.handlers 1.66 1.33 ▋
reading ShaDa 1.61 1.29 ▋
base16-bright.lua 1.50 1.21 ▋
telescope._extension 1.42 1.14 ▋
nvim-treesitter.lua 1.41 1.13 ▋
nvim-treesitter.conf 1.13 0.91 ▌
loading after plugin 1.10 0.88 ▌
before starting main 1.09 0.88 ▍
UltiSnips.vim 1.09 0.87 ▍
nvim-treesitter.quer 1.04 0.84 ▍
vim.diagnostic 1.04 0.83 ▍
sourcing vimrc file( 1.01 0.81 ▍
matchit.vim 0.98 0.79 ▍
null-ls.helpers 0.93 0.75 ▍
SingularisArt 0.87 0.70 ▍
SingularisArt.config 0.84 0.67 ▍
done waiting for UI 0.84 0.67 ▍
null-ls.config 0.84 0.67 ▍
nvim-treesitter.tsra 0.78 0.63 ▍
cmp_nvim_ultisnips.l 0.74 0.59 ▎
nvim-treesitter.ts_u 0.73 0.58 ▎
telescope.finders 0.70 0.56 ▎
filetype.lua 0.67 0.54 ▎
plenary.strings 0.65 0.52 ▎
nvim-treesitter.pars 0.61 0.49 ▎
plenary.path 0.61 0.49 ▎
vim.lsp.protocol 0.60 0.48 ▎
first screen update 0.59 0.47 ▎
init lua interpreter 0.58 0.46 ▎
mason-tool-installer 0.53 0.43 ▎
fzf.vim 0.51 0.41 ▎
mason-tool-installer 0.49 0.39 ▎
vim.lsp.util 0.49 0.39 ▎
cmp.lua 0.48 0.38 ▎
syntax.vim 0.47 0.38 ▏
telescope.sorters 0.46 0.37 ▏
null-ls.utils 0.45 0.36 ▏
telescope.pickers 0.44 0.35 ▏
mason-registry 0.43 0.34 ▏
mason 0.42 0.34 ▏
inits 1 0.42 0.33 ▏
telescope.lua 0.40 0.32 ▏
illuminate.vim 0.40 0.32 ▏
cmp.view 0.40 0.32 ▏
vim._init_packages 0.38 0.31 ▏
SingularisArt.autocm 0.37 0.30 ▏
telescope.finders.as 0.36 0.29 ▏
netrwPlugin.vim 0.36 0.29 ▏
null-ls.helpers.gene 0.35 0.28 ▏
init highlight 0.34 0.27 ▏
plenary.async 0.33 0.27 ▏
cmp.context 0.33 0.26 ▏
nvim-treesitter.high 0.33 0.26 ▏
SingularisArt.config 0.32 0.26 ▏
mason-core.platform 0.32 0.26 ▏
cmp.utils.feedkeys 0.31 0.25 ▏
cmp.source 0.31 0.25 ▏
vim.lsp.log 0.29 0.24 ▏
null-ls.methods 0.28 0.22 ▏
indent_blankline.vim 0.27 0.22 ▏
cmp.utils.keymap 0.25 0.20 ▏
vim.lsp._snippet 0.25 0.20 ▏
init default mapping 0.25 0.20 ▏
telescope.log 0.23 0.19 ▏
vim._editor 0.22 0.17 ▏
telescope.builtin 0.21 0.17 ▏
cmp.types 0.21 0.17 ▏
lspconfig 0.21 0.17 ▏
clipboard.vim 0.21 0.17 ▏
host.vim 0.21 0.17 ▏
loading packages 0.21 0.17 ▏
devhelp.vim 0.21 0.17 ▏
nvim-treesitter.inst 0.21 0.17 ▏
event init 0.20 0.16 ▏
SingularisArt.settin 0.19 0.16 ▏
cmp_buffer.lua 0.19 0.16 ▏
lsp-inlayhints 0.19 0.15 ▏
plenary.log 0.19 0.15 ▏
lspconfig.configs 0.18 0.15 ▏
matchit.vim 0.18 0.15 ▏
plenary.popup 0.18 0.14 ▏
project_nvim 0.17 0.13 ▏
cmp.utils.str 0.17 0.13 ▏
telescope.utils 0.17 0.13 ▏
cmp.config 0.16 0.13 ▏
rplugin.vim 0.16 0.13 ▏
plenary.async.async 0.16 0.13 ▏
null-ls.logger 0.16 0.13 ▏
gzip.vim 0.16 0.13 ▏
cmp_buffer 0.16 0.13 ▏
vim.treesitter.query 0.16 0.13
lsp_signature 0.16 0.13
zipPlugin.vim 0.15 0.12
cmp_nvim_lua.lua 0.15 0.12
SingularisArt.lsp.ma 0.14 0.12
SingularisArt.packad 0.14 0.11
null-ls.helpers.diag 0.14 0.11
matchparen.vim 0.14 0.11
plenary.async.tests 0.14 0.11
vim.treesitter 0.14 0.11
lspconfig.util 0.14 0.11
SingularisArt.status 0.14 0.11
cmp_nvim_ultisnips 0.14 0.11
lsp-inlayhints.core 0.13 0.11
lspconfig.lua 0.13 0.11
telescope.make_entry 0.13 0.11
null-ls.builtins.for 0.13 0.10
early init 0.13 0.10
SingularisArt.plugin 0.13 0.10
cmp_buffer.source 0.13 0.10
SingularisArt.vim.se 0.13 0.10
null-ls.builtins.for 0.13 0.10
vim.shared 0.12 0.10
vim.lsp.buf 0.12 0.10
null-ls.builtins.dia 0.12 0.10
mason-core.fs 0.12 0.10
cmp_calc.lua 0.12 0.10
SingularisArt.config 0.12 0.10
vim.lsp.rpc 0.12 0.10
illuminate.engine 0.12 0.10
telescope.finders.as 0.12 0.10
indent_blankline 0.12 0.09
mason.api.command 0.11 0.09
vim._meta 0.11 0.09
cmp_path.lua 0.11 0.09
plenary.async.util 0.11 0.09
tarPlugin.vim 0.10 0.08
SingularisArt.autocm 0.10 0.08
mason-registry.index 0.10 0.08
UltiSnips_after.vim 0.10 0.08
plenary.functional 0.10 0.08
telescope.actions.se 0.10 0.08
nvim-treesitter 0.10 0.08
cmp.entry 0.10 0.08
cmp.view.custom_entr 0.10 0.08
null-ls.helpers.form 0.10 0.08
null-ls.helpers.cach 0.10 0.08
synload.vim 0.10 0.08
cmp_nvim_lsp 0.09 0.08
null-ls.sources 0.09 0.07
tohtml.vim 0.09 0.07
cmp_nvim_lsp.lua 0.09 0.07
telescope.mappings 0.09 0.07
project_nvim.utils.h 0.09 0.07
plenary.vararg 0.09 0.07
BufEnter autocommand 0.09 0.07
locale set 0.09 0.07
telescope._ 0.09 0.07
null-ls.helpers.make 0.09 0.07
cmp.utils.char 0.08 0.07
cmp_calc 0.08 0.07
cmp_nvim_ultisnips.v 0.08 0.06
illuminate.highlight 0.08 0.06
cmp.utils.misc 0.08 0.06
telescope 0.08 0.06
cmp.view.docs_view 0.08 0.06
SingularisArt.icons 0.08 0.06
init first window 0.07 0.06
cmp_buffer.buffer 0.07 0.06
cmp.utils.pattern 0.07 0.06
mason-core.functiona 0.07 0.06
vim.treesitter.langu 0.07 0.06
telescope.pickers.en 0.07 0.06
SingularisArt.mappin 0.07 0.06
cmp.config.default 0.07 0.06
plenary.async.contro 0.07 0.06
mason.settings 0.07 0.06
lsp_signature.helper 0.07 0.06
mason-core.log 0.07 0.06
telescope.builtin.__ 0.07 0.06
null-ls.builtins.for 0.07 0.06
plenary.job 0.07 0.06
telescope.entry_mana 0.07 0.06
vim.treesitter.highl 0.07 0.06
cmp_nvim_ultisnips.s 0.07 0.06
nvim-treesitter.inde 0.07 0.06
cmp.utils.buffer 0.07 0.06
wincent.pinnacle 0.07 0.05
null-ls.state 0.07 0.05
lspconfig.server_con 0.07 0.05
ftplugin.vim 0.07 0.05
SingularisArt.lsp 0.07 0.05
redact_pass.vim 0.07 0.05
map_keys.vim 0.07 0.05
pythonx.vim 0.07 0.05
man.lua 0.07 0.05
cmp_path 0.07 0.05
cmp.utils.debug 0.06 0.05
nvim-treesitter.util 0.06 0.05
vim.lsp.codelens 0.06 0.05
lspconfig.server_con 0.06 0.05
shada.vim 0.06 0.05
SingularisArt.config 0.06 0.05
vim.lsp.diagnostic 0.06 0.05
illuminate.providers 0.06 0.05
plenary.vararg.rotat 0.06 0.05
inits 2 0.06 0.05
plenary.bit 0.06 0.05
lspconfig.server_con 0.06 0.05
sysinit.vim 0.06 0.04
vim.lsp.sync 0.06 0.04
SingularisArt.lsp.se 0.06 0.04
nvim-treesitter.loca 0.06 0.04
nvim-treesitter.shel 0.05 0.04
project_nvim.project 0.05 0.04
cmp.view.wildmenu_en 0.05 0.04
vim.treesitter.langu 0.05 0.04
null-ls.client 0.05 0.04
lsp-inlayhints.adapt 0.05 0.04
SingularisArt.vim.au 0.05 0.04
vim.highlight 0.05 0.04
lspconfig.server_con 0.05 0.04
SingularisArt.autolo 0.05 0.04
SingularisArt.colors 0.05 0.04
null-ls.helpers.comm 0.05 0.04
lspconfig.server_con 0.05 0.04
cmp.types.lsp 0.05 0.04
null-ls.diagnostics 0.05 0.04
mason-core.functiona 0.05 0.04
lspconfig.server_con 0.05 0.04
indent.vim 0.05 0.04
SingularisArt.util.j 0.05 0.04
nvim-treesitter.info 0.04 0.04
null-ls.builtins.dia 0.04 0.04
illuminate 0.04 0.04
mason-core.async 0.04 0.04
SingularisArt.plugin 0.04 0.04
cmp.utils.async 0.04 0.04
plenary.window.borde 0.04 0.04
null-ls.builtins.for 0.04 0.04
cmp.utils.event 0.04 0.03
telescope.actions.mt 0.04 0.03
telescope.pickers.hi 0.04 0.03
indent_blankline/uti 0.04 0.03
cmp_nvim_lsp.source 0.04 0.03
null-ls.builtins.for 0.04 0.03
null-ls.builtins.dia 0.04 0.03
lspconfig.server_con 0.04 0.03
cmp.utils.window 0.04 0.03
project_nvim.config 0.04 0.03
telescope.deprecated 0.04 0.03
vim.inspect 0.04 0.03
null-ls.builtins.for 0.04 0.03
cmp_nvim_lua 0.04 0.03
lspconfig.server_con 0.04 0.03
lspconfig.server_con 0.04 0.03
illuminate.providers 0.04 0.03
expanding arguments 0.04 0.03
cmp.utils.api 0.04 0.03
null-ls.builtins.for 0.04 0.03
lspconfig.server_con 0.04 0.03
lspconfig.server_con 0.04 0.03
indent_blankline.com 0.04 0.03
SingularisArt.util 0.04 0.03
cmp.view.native_entr 0.04 0.03
project_nvim.utils.g 0.04 0.03
telescope.config.res 0.04 0.03
lspconfig.server_con 0.04 0.03
vimtex.vim 0.04 0.03
SingularisArt.vim 0.04 0.03
cmp.config.compare 0.04 0.03
cmp.config.sources 0.04 0.03
telescope.debounce 0.04 0.03
SingularisArt.augrou 0.04 0.03
lspconfig.server_con 0.04 0.03
nvim_treesitter.vim 0.04 0.03
cmp.config.mapping 0.04 0.03
SingularisArt.util.g 0.04 0.03
telescope.actions.ut 0.04 0.03
mason-core.functiona 0.04 0.03
nvim-treesitter.fold 0.04 0.03
cmp.utils.highlight 0.04 0.03
SingularisArt.util.r 0.04 0.03
plenary.class 0.04 0.03
SingularisArt.vim.au 0.04 0.03
null-ls.builtins.for 0.04 0.03
lspconfig.server_con 0.04 0.03
lspconfig.server_con 0.04 0.03
illuminate.providers 0.04 0.03
cmp.utils.autocmd 0.04 0.03
null-ls.builtins.for 0.04 0.03
lspconfig.server_con 0.04 0.03
cmp_nvim_ultisnips.t 0.04 0.03
SingularisArt.plugin 0.03 0.03
cmp.view.ghost_text_ 0.03 0.03
project_nvim.utils.p 0.03 0.03
telescope._extension 0.03 0.03
lspconfig.server_con 0.03 0.03
lspconfig.server_con 0.03 0.03
illuminate.config 0.03 0.03
SingularisArt.lsp.in 0.03 0.03
nvim-treesitter.quer 0.03 0.03
cmp.matcher 0.03 0.03
nvim-treesitter.cach 0.03 0.03
telescope.pickers.sc 0.03 0.03
lspconfig.server_con 0.03 0.03
lspconfig.server_con 0.03 0.03
cmp_nvim_ultisnips.s 0.03 0.03
espeakfiletype.vim 0.03 0.02
telescope.state 0.03 0.02
plenary.window 0.03 0.02
telescope.actions.st 0.03 0.02
plenary.errors 0.03 0.02
telescope.algos.link 0.03 0.02
null-ls.builtins 0.03 0.02
SingularisArt.lsp.nu 0.03 0.02
SingularisArt.lsp.il 0.03 0.02
plenary.vim 0.03 0.02
mason-core.EventEmit 0.03 0.02
plenary.async.struct 0.03 0.02
telescope.finders.as 0.03 0.02
telescope.pickers.wi 0.03 0.02
mason-core.optional 0.03 0.02
cmp_nvim_ultisnips.c 0.03 0.02
cmp_buffer.timer 0.03 0.02
nginx.vim 0.03 0.02
cmp.types.cmp 0.03 0.02
null-ls.helpers.rang 0.03 0.02
mason-core.path 0.03 0.02
SingularisArt.lsp.si 0.03 0.02
mason-core.async.uv 0.03 0.02
telescope.pickers.mu 0.03 0.02
mason-core.functiona 0.03 0.02
lsp-inlayhints.confi 0.03 0.02
nvim-treesitter.stat 0.03 0.02
cmp.utils.cache 0.03 0.02
cmp.config.window 0.03 0.02
telescope.from_entry 0.03 0.02
plenary.tbl 0.03 0.02
mason-core.functiona 0.03 0.02
mason-core.functiona 0.03 0.02
plenary.popup.utils 0.03 0.02
cls.vim 0.03 0.02
SingularisArt.g 0.03 0.02
lsp-inlayhints.utils 0.03 0.02
cmp.types.vim 0.02 0.02
illuminate.util 0.02 0.02
illuminate.reference 0.02 0.02
meson.vim 0.02 0.02
lsp-inlayhints.store 0.02 0.02
spellfile.vim 0.02 0.02
tex.vim 0.02 0.02
window checked 0.02 0.02
init screen for UI 0.02 0.01
PKGBUILD.vim 0.02 0.01
health.vim 0.02 0.01
inits 3 0.02 0.01
init default autocom 0.02 0.01
tikz.vim 0.02 0.01
symbols-outline.vim 0.02 0.01
tutor.vim 0.02 0.01
executing command ar 0.02 0.01
--- NVIM STARTING -- 0.02 0.01
vimtex.vim 0.02 0.01
UltiSnips.vim 0.01 0.01
archlinux.vim 0.01 0.01
filetype.vim 0.01 0.01
ffi 0.01 0.01
augeas.vim 0.01 0.01
rplugin.vim 0.01 0.01
ftplugin.vim 0.01 0.01
indent.vim 0.01 0.01
parsing arguments 0.01 0.00
vim.F 0.01 0.00
vim.keymap 0.01 0.00
UIEnter autocommands 0.01 0.00
editing files in win 0.00 0.00
--- NVIM STARTED --- 0.00 0.00
waiting for UI 0.00 0.00
The reason I have such speed is because I created my own plugin manager.
My Plugin Manager
All my plugins
Pacman
Python
Systemd
Tampermonkey
Spring Cleaning, Keeping your Home Directory Clean
For those, who, like me, hate it when your home directory is cluttered. Well, you're in luck because my dotfiles don't clutter your home directory. Here's proof.
As you can see, I, at most, have only 10 directories in my home directory. That's not because I don't use many programs. I use a TON.
I just thought I should share this.
How my Theming Works
My themeing is actually quit simple. I use pywal to generate a colorscheme from an image or a base16 theme. I then use the generated themes across all my applications.
If I just use pywal by itself, it won't work 100%. That's why I use my fork of Chameleon.py, which uses pywal to generate a theme for loads of things that pywal wouldn't do by itself.
Dependencies
git
: In order to clone the repo.python >= 3.10
: To run the installation script.
Platform status
Platform | Status |
---|---|
Arch Linux | |
MacOS | |
Windows | |
Other |
Installation
git clone --recursive https://github.com/SingularisArt/Singularis.git
I typically clone it to ~/.local/share/Singularis
⚠️ WARNING: There are lots of different things that can be installed or configured (see the aspects directory). Unless you want your machine to be exactly like mine -- which is unlikely -- you probably don't want to install everything. Maybe you don't even want everything in the "dotfiles" and "nvim" aspects. Please inspect the contents of each aspect before proceeding to install it; you may even be better off just looking at the configuration files and stealing the bits that you find interesting or useful (everything is in the public domain, unless otherwise indicated).
Examples
./install --all # Install everything.
./install --aspect "dotfiles" # Just install "dotfiles".
./install --aspect "dotfiles xmenu" # Just install "dotfiles" and "xmenu".
./install --aspect "^dotfiles" # Install everything except the "dotfiles" aspect.
./install --aspect "dotfiles(neomutt)" # Just install "neomutt" from my "dotfiles" aspect.
./install --aspect "dotfiles(neomutt,zsh)" # Just install "neomutt" and "zsh" from my "dotfiles" aspect.
./install --aspect "dotfiles(^neomutt)" # Install everything except "neomutt" from my "dotfiles" aspect.
./install --step --aspect "dotfiles" # Prompt for confirmation at each step.
./install --check --aspect "dotfiles" # Do a dry-run, showing what would be changed.
./install --list-aspects # List all available aspects to install.
./install --list-aspects "dotfiles" # List all available aspects to install within my "dotfiles" aspect.
./install --help # Lists all possible commands/options.
./install # Lists all possible commands/options.
Install
Here's how I install my dotfiles, in case you're wondering how to install them
yourself (which isn't a clever idea because dotfiles are ment to be stolen
taken from and used as an inspiration). Anyway, here's how I install them.
./install --backup # I create a backup of everything just in case something goes the wrong way.
./install --log "0" --all --singularis # I set the log level to 0 so I can see everything that's happening.
⚠️ Don't use the--singularis
option. This install all my personal config, like my newsboat history, which are encrypted and only I have the key to decrypt them. If you use the--singularis
option, you're bound to run into issues, mainly because I useautojump
, which stores sensative files. So, I encrypt them, and when cloning them down, I decrypt them. But if you use the--singularis
option without decrypting them, you'll get the following error everytime you change your directory.
License
Unless otherwise noted, the contents of this repo are in the public domain. See the LICENSE for details.