• Stars
    star
    233
  • Rank 172,230 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created about 4 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

CLI program that allows you to change your Alacritty config with one command without editing the config file.

Pycritty

Change your alacritty config on the fly!

Preview Image

Installation:

pip install pycritty

By default, only the program itself will be installed, but you can install default themes from config/themes:

pip install --install-option="--themes=onedark,dracula,nord" pycritty

Or if you want them all:

pip install --install-option="--themes=all" pycritty

Make sure to have ~/.local/bin directory in your $PATH, otherwise your shell won't find the pycritty command. Add this line to your ~/.xprofile if you haven't already:

export PATH=$HOME/.local/bin:$PATH

Also if you are an Arch user you can install from the AUR (only the program will be installed)

git clone https://aur.archlinux.org/pycritty.git
cd pycritty
makepkg -si

Or with an AUR helper like yay

yay -S pycritty

Usage:

Change your current config:

pycritty --font UbuntuMono --font-size 14 --opacity 0.95 --padding 3 3

Save multiple configs and reuse them later:

pycritty save ThisConfig
pycritty load AnotherConfig

Install themes and configs from URLs:

pycritty install --theme https://raw.githubusercontent.com/antoniosarosi/pycritty/master/config/themes/breeze.yaml
pycritty --theme breeze # Apply downloaded theme
pycritty install --config --name SomeCoolConfig https://raw.githubusercontent.com/antoniosarosi/dotfiles/master/.config/alacritty/config.yaml
pycritty load SomeCoolConfig # Apply downloaded config

Check help for all available options:

pycritty -h
# pycritty subcomand -h
pycritty save -h

Fonts Config

Fonts are configured at ~/.config/alacritty/fonts.yaml with this format:

fonts:
    Alias: Font Name

When applied using pycritty -f Alias, the previous format will be converted into the alacritty equivalent:

font:
    normal:
        family: Font Name
    italic:
        family: Font Name
    bold:
        family: Font Name

You can also specify a different font for each font type:

fonts:
    Alias:
        normal: Normal Font Name
        bold: Bold Font Name
        italic: Italic Font Name

Note that the fonts must be installed on your system.

Theme Config

You can make your own custom themes by creating new theme files with the correct format, ~/.config/alacritty/themes/custom.yaml should look like this:

colors:
    # Default colors
    primary:
        background: '0x292d3e'
        foreground: '0xbbc5ff'
    # Normal colors
    normal:
        black:   '0x101010'
        red:     '0xf07178'
        green:   '0xc3e88d'
        yellow:  '0xffcb6b'
        blue:    '0x82aaff'
        magenta: '0xc792ea'
        cyan:    '0x89ddff'
        white:   '0xd0d0d0'
    # Bright colors
    bright:
        black:   '0x434758'
        red:     '0xff8b92'
        green:   '0xddffa7'
        yellow:  '0xffe585'
        blue:    '0x9cc4ff'
        magenta: '0xe1acff'
        cyan:    '0xa3f7ff'
        white:   '0xffffff'

Then you can apply it using the name of the file:

pycritty -t custom

Custom scripts

If you want to apply different configs programmatically, you can either use the CLI in a shell script or use pycritty as a python module:

#!/bin/python3

# Dummy script that changes the theme every 5 minutes

import time
import pycritty


def main():
    config = pycritty.Config()
    while True:
        for theme in pycritty.list_themes():
            config.change_theme(theme)  # or config.set(theme=theme)
            config.apply()
            time.sleep(300)


if __name__ == '__main__':
    main()

Shell equivalent:

#!/bin/bash

while :; do
    # Same as pycritty ls --themes --iterable
    for theme in $(pycritty ls -ti); do
        pycritty -t $theme
        sleep 300
    done
done

Development

Clone the repository and run it as a module.

git clone [email protected]:antoniosarosi/pycritty
cd pycritty
python -m pycritty.main

Publishing

PyPi

# First make sure you have these packages installed
pip install --user --upgrade setuptools wheel twine
# Generate distribution files
python setup.py sdist bdist_wheel
# Test upload
python -m twine upload --repository testpypi dist/*
# Test download
pip install -i https://test.pypi.org/simple/ --no-deps pycritty
# Upload to PyPi
python -m twine upload --repository pypi dist/*

AUR

# In the AUR repository
sed -i "s/^pkgver=[[:digit:]].[[:digit:]].[[:digit:]]/pkgver=$(python -m pycritty.main -v)/" PKGBUILD
updpkgsums
makepkg --printsrcinfo > .SRCINFO

# Theoretically this package should be fine with only update its version and checksums
# but you have to check if this package compiles or not
git add PKGBUILD .SRCINFO
# Commits will be authored with global git name and email address
# If you want to use different credentials change them with git config
git commit -m "bump to $(python -m pycritty.main -v)"
git push

More Repositories

1

dotfiles

My dotfiles repo, here you can find all my window manager configs as well as documentation and a guide on how to make your own desktop environment.
Vim Script
858
star
2

mkdb

Toy Database
Rust
591
star
3

Wallpapers

484
star
4

home-cloud

The "cloud" at home
JavaScript
390
star
5

rxh

HTTP reverse proxy
Rust
135
star
6

rulloc

General purpose memory allocator written in Rust.
Rust
91
star
7

sockets-examples

Inter-process communication with sockets
JavaScript
60
star
8

Contacts-App-Nodejs

JavaScript
46
star
9

Linked-List-Visualization

Linked list data structure animated with javascript
JavaScript
43
star
10

dwm

My custom build of Dwm
C
34
star
11

Merge-Sort-Visualization

JavaScript
27
star
12

sqlite2-btree-visualizer

SQLite 2.8.1 for learning / debugging
C
25
star
13

noob

Python
23
star
14

jsonresume-manager

Fullstack Laravel & Vue app
PHP
19
star
15

lune-framework

Simple PHP framework inspired by Laravel.
PHP
17
star
16

website

Simple personal website with your Github projects.
PHP
16
star
17

mem_alloc_c

Memory allocator in C
C
12
star
18

devcontainers

Python
11
star
19

lune

Simple PHP framework inspired by Laravel.
PHP
10
star
20

inmem

Dead simple in-memory database.
Rust
7
star
21

JavascriptMVC

Javascript MVC
JavaScript
7
star
22

collections_rust

Data structures implemented in Rust for absolutely no reason. Pointers are fun though.
Rust
6
star
23

csrf

JavaScript
6
star
24

MERN-Exercise-Tracker

Simple MERN Web App example
JavaScript
5
star
25

epoll-example

Python
4
star
26

advent-of-code

Zig
4
star
27

JavaMVC

Ejemplo MVC con Swing
Java
3
star
28

microservices

Vue
3
star
29

mastermind-certificate-python

Python
Python
1
star