Big commit. I think I'm done for most parts :)

This commit is contained in:
Hoang Nguyen 2021-12-21 01:33:08 +07:00
parent ae0f7df7d9
commit 1c96422a91
No known key found for this signature in database
GPG key ID: 813CF484F4993419
155 changed files with 7285 additions and 144 deletions

1
.gitignore vendored
View file

@ -1 +0,0 @@
palette.yml

29
Dockerfile Normal file
View file

@ -0,0 +1,29 @@
FROM alpine:latest
# Change repositories
RUN printf 'https://download.nus.edu.sg/mirror/alpine/edge/main\n\
https://download.nus.edu.sg/mirror/alpine/edge/community\n\
https://download.nus.edu.sg/mirror/alpine/edge/testing\n' > /etc/apk/repositories
# Install dependencies
RUN apk --no-cache add \
doas ansible git neovim fish build-base \
rsync cargo py3-virtualenv py3-setuptools
# Assure correct permission on /tmp
RUN chmod 1777 /tmp
# Create a test user
RUN echo 'permit :wheel nopass' > /etc/doas.d/doas.conf \
&& chmod 400 /etc/doas.d/doas.conf \
&& printf 'cuteuser\ncuteuser\n' | adduser -h /home/kawaii -s /bin/ash -G wheel kawaii
# Enter testing environment
USER kawaii
WORKDIR /home/kawaii
COPY . .
# Slim down the image size
RUN rm -rf .git
CMD ["/bin/ash"]

View file

@ -1,15 +1,34 @@
# dotfiles v2
This is the continuation of [my old dotfiles](https://git.disroot.org/FollieHiyuki/dotfiles), now contains only stuff I really need.
Managed with `ansible`.
This is the continuation of [my old dotfiles](https://git.disroot.org/FollieHiyuki/dotfiles), now contains only what I really need and is managed with `ansible`.
## 🧰 Setup
```shell
$ ansible-playbook -i hosts dotfiles.yml
```bash
# Install `community.general` for APK module
$ ansible-galaxy collection install community.general
# Run the playbook
$ ansible-playbook dotfiles.yml
```
`additional` directory contains other playbooks for installing packages.
## ✔️ Testing inside a container
```bash
# Build the image
$ buildah build --rm -t alpine/dotfiles -f Dockerfile .
# Run the playbook
$ podman run --rm -i localhost/alpine/dotfiles ansible-playbook -v -i hosts dotfiles.yml
# Exec into the container and look around
$ podman run --rm -it localhost/alpine/dotfiles /bin/ash
```
## 🖊️ TODO
- [ ] [wayout](https://git.sr.ht/~proycon/wayout)
- [ ] Additional playbooks for bootstraping
## 📓 Notes
I use Alpine-edge aka. the best binary distro on Earth 😃. Therefore some tasks won't work on other distros (eg. `apk` tasks)

40
additional/Anime4KCPP.yml Normal file
View file

@ -0,0 +1,40 @@
---
- name: Download, build and install Anime4KCPP
hosts: all
vars:
- anime4kcpp_dir: ~/Code/Anime4KCPP
tasks:
- name: Install dependencies
apk:
name: cmake,opencv-dev,opencl-icd-loader-dev
state: present
update_cache: yes
- name: Clone Anime4KCPP repository
git:
depth: 1
update: yes
repo: https://github.com/TianZerL/Anime4KCPP.git
dest: '{{ anime4kcpp_dir }}'
- name: Make build directory
file:
path: '{{ anime4kcpp_dir }}/build'
state: directory
- name: Generate cmake build files
command:
chdir: '{{ anime4kcpp_dir }}/build'
cmd: cmake ..
- name: Build Anime4KCPP CLI
command: make
args:
creates: '{{ anime4kcpp_dir }}/build/bin/Anime4KCPP_CLI'
chdir: '{{ anime4kcpp_dir }}/build'
- name: Symlink Anime4KCPP_CLI executable
file:
src: '{{ anime4kcpp_dir }}/build/bin/Anime4KCPP_CLI'
dest: ~/.local/bin/Anime4KCPP_CLI
state: link

0
additional/deps.yml Normal file
View file

View file

24
additional/tt.yml Normal file
View file

@ -0,0 +1,24 @@
---
- name: Download and install tt
hosts: all
vars:
- tt_dir: ~/Code/tt
tasks:
- name: Clone tt repository
git:
depth: 1
update: yes
repo: https://github.com/runrin/tt.git
dest: '{{ tt_dir }}'
- name: Build tt
command: make
args:
chdir: '{{ tt_dir }}'
creates: '{{ tt_dir }}/tt'
- name: Symlink tt executable
file:
src: '{{ tt_dir }}/tt'
dest: ~/.local/bin/tt
state: link

38
additional/wallpapers.yml Normal file
View file

@ -0,0 +1,38 @@
---
- name: Download some wallpapers
hosts: all
vars:
- wallpaper_dir: ~/Pictures/Wallpapers
tasks:
- name: An artwork by @ogipote
get_url:
url: https://ogipote.com/wp-content/uploads/2021/03/%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC5.jpg
dest: '{{ wallpaper_dir }}/レイヤー5.jpg'
mode: 0644
- name: Key artwork of Sayoasa anime
get_url:
url: http://sayoasa.jp/en/img/top/key.jpg
dest: '{{ wallpaper_dir }}/key.jpg'
mode: 0644
# tumblr has good enough image quality
- name: Maquia artwork by @necomi
get_url:
url: https://64.media.tumblr.com/269736b9e0af3be25460f469fa2c06f4/tumblr_p6b2chhj2g1v84cqao1_1280.png
dest: '{{ wallpaper_dir }}/maquia.png'
mode: 0644
# Rimuu has her site rewritten. The artworks are now in crappy webp format
# generated by wix.com so let's upload 1 we luckily downloaded back then
# to Github and call it a day
- name: Barbara artwork by @rimuu
get_url:
url: https://github.com/FollieHiyuki/FollieHiyuki/raw/main/wallpapers/90575757_p0.png
dest: '{{ wallpaper_dir }}/90575757_p0.png'
mode: 0644
# - name: Short Fubuki animation by @kaynimatic
# command:
# cmd: ~/.local/bin/gallery-dl https://twitter.com/i/status/1324684931885273088
# creates: ~/Pictures/gallery-dl/twitter/kaynimatic/1324684931885273088_1.mp4

View file

@ -2,5 +2,5 @@
inventory = ./hosts
gathering = explicit
display_skipped_hosts = False
host_key_checking = False
host_key_checking = True
interpreter_python = auto_silent

View file

@ -1,23 +1,70 @@
---
- hosts: all
- name: Gather information
hosts: all
gather_facts: yes
- hosts: all
- name: Check the values of variables
hosts: all
tasks:
- name: Check theme name
fail:
msg: Variable 'theme' needs to be 'nord' or 'onedark'
when: theme != 'nord' and theme != 'onedark'
- name: Check clipboard manager name
fail:
msg: Variable 'clipboard' needs to be 'clipman' or 'cliphist'
when: clipboard != 'clipman' and clipboard != 'cliphist'
- name: Check notification daemon name
fail:
msg: Variable 'notification' needs to be 'dunst' or 'mako'
when: notification != 'dunst' and notification != 'mako'
- name: Generate theme colors
hosts: all
roles:
- palette
- hosts: all
- name: Deploy dotfiles
hosts: all
vars_files:
- '{{ ansible_env.PWD }}/palette.yml'
- /tmp/palette.yml
roles:
- scripts
- alacritty
- amfora
- bash
- anime-downloader
- bat
# - cava
- dunst_mako
- fish
# - element-desktop
- emacs
- fontconfig
- foot
- gallery-dl
- git
- glow
- gnupg
- mpd
- mpv
- newsboat
- npm
- nvim
# - qtcreator
- qutebrowser
- ripgrep
- river
- shells
- sway
- swaylock
- tmux
- translate-shell
- vifm
- waybar
- weechat
- wofi
- xdg-desktop-portal-wlr
- yt-dlp
- zathura
# - zellij

View file

@ -2,10 +2,15 @@
user_name: FollieHiyuki
user_email: folliekazetani@protonmail.com
gpg_signature: 813CF484F4993419
default_browser: qutebrowser
notification: dunst
term_font: Iosevka Nerd Font
cjk_font: Sarasa Mono J
font_size: 14
theme: nord
user_agent: Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0
default_browser: qutebrowser
clipboard: clipman
cjk_font: Sarasa Mono J
term_font: Iosevka Nerd Font
font_size: 14
notification: dunst
theme: nord
gtk_theme: Nordic
icon_theme: Papirus-Dark
cursor_theme: Bibata-Modern-Ice
cursor_size: 24

View file

@ -35,7 +35,6 @@ auto_redirect = false
http = '{{ default_browser }}'
# Any URL that will accept a query string can be put here
# search = "gemini://gus.guru/search"
search = "gemini://geminispace.info/search"
# Whether colors will be used in the terminal

View file

@ -0,0 +1,310 @@
{
"dl": {
"aria2c_for_torrents": true,
"aria2c_log_level": "error",
"chunk_size": "10",
"download_dir": "Videos/Anime",
"external_downloader": "",
"fallback_qualities": [
"720p",
"480p",
"360p"
],
"file_format": "{anime_title}/{anime_title}_{ep_no}",
"force_download": true,
"player": "mpv",
"provider": "anitube",
"quality": "1080p",
"selescrape_browser": null,
"selescrape_browser_executable_path": null,
"selescrape_driver_binary_path": null,
"skip_download": false,
"speed_limit": 0,
"url": false
},
"ezdl": {
"download_metadata": false,
"fallback_providers": [
"vidstream",
"anime8"
],
"file_format": "{anime_title}/{anime_title}_{ep_no}",
"provider": "animebinge",
"quality": "1080p",
"ratio": 50
},
"gui": {
"player": "mpv"
},
"siteconfig": {
"9anime": {
"domain_extension": "to",
"server": "mp4upload",
"version": "subbed"
},
"anime8": {
"include_special_eps": false,
"servers": [
"fserver",
"fdserver",
"oserver"
],
"version": "subbed"
},
"animebinge": {
"servers": [
"mp4upload",
"xstreamcdn",
"trollvid"
],
"version": "subbed"
},
"animedaisuki": {
"servers": [
"official"
]
},
"animeflix": {
"fallback_servers": [
"FastStream"
],
"server": "AUEngine",
"version": "sub"
},
"animeflv": {
"server": "natsuki",
"servers": [
"stape",
"natsuki",
"gocdn",
"yu",
"fembed"
],
"version": "subbed"
},
"animekisa": {
"fallback_servers": [
"mp4upload",
"vidstream"
],
"server": "gcloud"
},
"animeonline360": {
"version": "subbed"
},
"animerush": {
"fallback_servers": [
"MP4Upload",
"Mp4upload Video",
"Youruploads Video"
],
"server": "Mp4uploadHD Video",
"servers": [
"Mp4uploadHD Video",
"MP4Upload",
"Mp4upload Video",
"Youruploads Video"
]
},
"animesimple": {
"server": "trollvid",
"servers": [
"vidstreaming",
"trollvid",
"mp4upload",
"xstreamcdn"
],
"version": "subbed"
},
"animesuge": {
"servers": [
"mp4upload",
"streamtape"
],
"version": "subbed"
},
"animetake": {
"servers": [
"gstore",
"hydrax",
"fembed",
"vidstreaming",
"mixdrop"
],
"version": "subbed"
},
"animevibe": {
"servers": [
"vidstream",
"3rdparty",
"mp4upload",
"hydrax",
"gcloud",
"fembed"
]
},
"animixplay": {
"server": "vidstream",
"v5-servers": [
"mp4up",
"stape"
],
"version": "subbed"
},
"anistream.xyz": {
"version": "subbed"
},
"darkanime": {
"servers": [
"mp4upload",
"trollvid"
],
"version": "subbed"
},
"dbanimes": {
"servers": [
"mixdrop",
"gounlimited",
"vudeo",
"fembed",
"sendvid"
]
},
"dreamanime": {
"server": "trollvid",
"version": "subbed"
},
"dubbedanime": {
"servers": [
"vidstream",
"mp4upload",
"trollvid"
],
"version": "dubbed"
},
"egyanime": {
"servers": [
"clipwatching",
"streamtape"
],
"version": "subbed"
},
"gogoanime": {
"server": "cdn",
"version": "subbed"
},
"justdubs": {
"servers": [
"mp4upload",
"gcloud"
]
},
"kickass": {
"ext_fallback_servers": [
"Mp4Upload",
"Vidcdn",
"Vidstreaming"
],
"fallback_servers": [
"ORIGINAL-QUALITY-V2",
"HTML5-HQ",
"HTML5",
"A-KICKASSANIME",
"BETAPLAYER",
"KICKASSANIME",
"DEVSTREAM"
],
"server": "A-KICKASSANIME"
},
"kissanime": {
"version": "subbed"
},
"kissanimex": {
"version": "subbed"
},
"kisscartoon": {
"servers": [
"mpserver",
"yuserver",
"oserver",
"xserver",
"ptserver"
]
},
"nineanime": {
"server": "mp4upload"
},
"nyaa": {
"category": "English-translated",
"filter": "Trusted only"
},
"putlockers": {
"servers": [
"eplay",
"mixdrop"
],
"version": "dubbed"
},
"ryuanime": {
"server": "trollvid",
"servers": [
"vidstream",
"mp4upload",
"xstreamcdn",
"trollvid"
],
"version": "subbed"
},
"vidstream": {
"servers": [
"vidstream",
"gcloud",
"mp4upload",
"cloud9",
"hydrax"
],
"version": "subbed"
},
"voiranime": {
"servers": [
"gounlimited"
]
},
"vostfree": {
"server": "sibnet"
},
"watchmovie": {
"fallback_servers": [
"fembed",
"yourupload",
"mp4upload"
],
"server": "gcloud",
"servers": [
"vidstream",
"gcloud",
"yourupload",
"hydrax"
],
"version": "subbed"
},
"yify": {
"servers": [
"vidstream",
"yify"
]
}
},
"watch": {
"autoplay_next": true,
"fallback_qualities": [
"720p",
"480p",
"360p"
],
"log_level": "INFO",
"mpv_arguments": "",
"provider": "anitube",
"quality": "1080p"
}
}

View file

@ -0,0 +1,22 @@
---
- name: Create config directory
file:
path: ~/.config/anime-downloader
state: directory
- name: Copy config
copy:
src: config.json
dest: ~/.config/anime-downloader/config.json
force: yes
- name: Install anime-downloader with pip
pip:
name: anime-downloader
virtualenv: ~/.config/anime-downloader/venv
- name: Symlink anime executable
file:
src: ~/.config/anime-downloader/venv/bin/anime
dest: ~/.local/bin/anime
state: link

View file

@ -1,6 +0,0 @@
---
- name: Copy config
copy:
src: bashrc
dest: ~/.bashrc
force: yes

11
roles/bat/tasks/main.yml Normal file
View file

@ -0,0 +1,11 @@
---
- name: Create config directory
file:
path: ~/.config/bat
state: directory
- name: Copy config
template:
src: config.j2
dest: ~/.config/bat/config
force: yes

View file

@ -0,0 +1,9 @@
{% if theme == 'nord' %}
--theme="Nord"
{% elif theme == 'onedark' %}
--theme="TwoDark"
{% endif %}
--color=always
--italic-text=always
--pager="less -R"
--style="plain"

11
roles/cava/tasks/main.yml Normal file
View file

@ -0,0 +1,11 @@
---
- name: Create config directory
file:
path: ~/.config/cava
state: directory
- name: Copy config
template:
src: config.j2
dest: ~/.config/cava/config
force: yes

View file

@ -0,0 +1,191 @@
## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.
[general]
# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
; mode = normal
# Accepts only non-negative values.
; framerate = 60
# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
# new as of 0.6.0 autosens of low values (dynamic range)
# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
; autosens = 1
; overshoot = 20
# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
# 200 means double height. Accepts only non-negative values.
; sensitivity = 100
# The number of bars (0-200). 0 sets it to auto (fill up console).
# Bars' width and space between bars in number of characters.
; bars = 0
; bar_width = 2
; bar_spacing = 1
# For SDL width and space between bars is in pixels, defaults are:
; bar_width = 20
; bar_spacing = 5
# Lower and higher cutoff frequencies for lowest and highest bars
# the bandwidth of the visualizer.
# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
# Cava will automatically increase the higher cutoff if a too low band is specified.
; lower_cutoff_freq = 50
; higher_cutoff_freq = 10000
# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
; sleep_timer = 0
[input]
# Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem'
# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
#
# All input methods uses the same config variable 'source'
# to define where it should get the audio.
#
# For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
#
# For alsa 'source' will be the capture device.
# For fifo 'source' will be the path to fifo-file.
# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
; method = pulse
; source = auto
; method = alsa
; source = hw:Loopback,1
; method = fifo
; source = /tmp/mpd.fifo
; sample_rate = 44100
; sample_bits = 16
; method = shmem
; source = /squeezelite-AA:BB:CC:DD:EE:FF
; method = portaudio
; source = auto
[output]
# Output method. Can be 'ncurses', 'noncurses', 'raw' or 'sdl'.
# 'noncurses' uses a custom framebuffer technique and prints only changes
# from frame to frame in the terminal. 'ncurses' is default if supported.
#
# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
# stream of the bar heights that can be used to send to other applications.
# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
#
# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
; method = ncurses
# Visual channels. Can be 'stereo' or 'mono'.
# 'stereo' mirrors both channels with low frequencies in center.
# 'mono' outputs left to right lowest to highest frequencies.
# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
; channels = stereo
; mono_option = average
# Raw output target. A fifo will be created if target does not exist.
; raw_target = /dev/stdout
# Raw data format. Can be 'binary' or 'ascii'.
; data_format = binary
# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
; bit_format = 16bit
# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
; ascii_max_range = 1000
# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
; bar_delimiter = 59
; frame_delimiter = 10
# sdl window size and position. -1,-1 is centered.
; sdl_width = 1000
; sdl_height = 500
; sdl_x = -1
; sdl_y= -1
[color]
# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
# ncurses output method and a terminal that can change color definitions such as Gnome-terminal or rxvt.
# if supported, ncurses mode will be forced on if user defined colors are used.
# default is to keep current terminal color
; background = default
; foreground = default
# SDL only support hex code colors, these are the default:
; background = '#111111'
; foreground = '#33cccc'
# Gradient mode, only hex defined colors (and thereby ncurses mode) are supported,
# background must also be defined in hex or remain commented out. 1 = on, 0 = off.
# You can define as many as 8 different colors. They range from bottom to top of screen
gradient = 1
gradient_count = 8
{% if theme == 'nord' %}
gradient_color_1 = '{{ purple }}'
gradient_color_2 = '{{ blue }}'
gradient_color_3 = '{{ cyan }}'
gradient_color_4 = '{{ teal }}'
gradient_color_5 = '{{ green }}'
gradient_color_6 = '{{ yellow }}'
gradient_color_7 = '{{ orange }}'
gradient_color_8 = '{{ red }}'
{% elif theme == 'onedark' %}
gradient_color_1 = '{{ violet }}'
gradient_color_2 = '{{ blue }}'
gradient_color_3 = '{{ cyan }}'
gradient_color_4 = '{{ green }}'
gradient_color_5 = '{{ yellow }}'
gradient_color_6 = '{{ orange }}'
gradient_color_7 = '{{ red }}'
gradient_color_8 = '{{ dark_red }}'
{% endif %}
[smoothing]
# Percentage value for integral smoothing. Takes values from 0 - 100.
# Higher values means smoother, but less precise. 0 to disable.
; integral = 77
# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
; monstercat = 0
; waves = 0
# Set gravity percentage for "drop off". Higher values means bars will drop faster.
# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
; gravity = 100
# In bar height, bars that would have been lower that this will not be drawn.
; ignore = 0
[eq]
# This one is tricky. You can have as much keys as you want.
# Remember to uncomment more then one key! More keys = more precision.
# Look at readme.md on github for further explanations and examples.
1 = 2 # bass
2 = 2
3 = 1 # midtone
4 = 1
5 = 0.5 # treble

View file

@ -1,9 +1,4 @@
---
- name: Check the name of notification daemon
fail:
msg: The daemon needs to be 'dunst' or 'mako'
when: notification != 'dunst' and notification != 'mako'
- name: Create config directory
file:
path: '~/.config/{{ notification }}'
@ -13,19 +8,17 @@
synchronize:
src: icons/
dest: '~/.config/{{ notification }}/'
recursive: yes
delete: yes
- name: Copy config
- name: Copy dunst config
template:
src: dunstrc.j2
dest: ~/.config/dunst/dunstrc
force: yes
when: notification == 'dunst'
- name: Copy config
- name: Copy mako config
template:
src: mako_config.j2
src: config.j2
dest: ~/.config/mako/config
force: yes
when: notification == 'mako'

View file

@ -24,7 +24,7 @@
# dynamic width from 0 to 300
# width = (0, 300)
# constant width of 300
width = 300
width = (300, 500)
# The maximum height of a single notification, excluding the frame.
height = 300

View file

@ -0,0 +1,47 @@
{
"settingDefaults": {
"custom_themes": [
{
"name": "Nord",
"is_dark": true,
"colors": {
"accent-color": "#a3be8c",
"primary-color": "#88c0d0",
"warning-color": "#bf616a",
"sidebar-color": "#2e3440",
"roomlist-background-color": "#434c5e",
"roomlist-text-color": "#ebcb8b",
"roomlist-text-secondary-color": "#e5e9f0",
"roomlist-highlights-color": "#2e3440",
"roomlist-separator-color": "#3b4252",
"timeline-background-color": "#3b4252",
"timeline-text-color": "#eceff4",
"timeline-text-secondary-color": "#81a1c1",
"timeline-highlights-color": "#434c5e",
"reaction-row-button-selected-bg-color": "#bf616a"
}
},
{
"name": "OneDark",
"is_dark": true,
"colors": {
"accent-color": "#98c379",
"primary-color": "#56b6c2",
"warning-color": "#e06c75",
"sidebar-color": "#282c34",
"roomlist-background-color": "#4b5263",
"roomlist-text-color": "#e5c07b",
"roomlist-text-secondary-color": "#bbc2cf",
"roomlist-highlights-color": "#282c34",
"roomlist-separator-color": "#3e4452",
"timeline-background-color": "#3e4452",
"timeline-text-color": "#bbc2cf",
"timeline-text-secondary-color": "#61afef",
"timeline-highlights-color": "#4b5263",
"reaction-row-button-selected-bg-color": "#e06c75"
}
}
]
},
"showLabsSettings": true
}

View file

@ -0,0 +1,11 @@
---
- name: Create config directory
file:
path: ~/.config/Element
state: directory
- name: Copy theme config
copy:
src: config.json
dest: ~/.config/Element/config.json
force: yes

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

View file

@ -0,0 +1,207 @@
;;; init.el -*- lexical-binding: t; -*-
(doom! :input
;;chinese
;;japanese
;;layout ; auie,ctsrnm is the superior home row
:completion
(company ; the ultimate code completion backend
+childframe)
;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
(ivy ; a search engine for love and life
+fuzzy
+prescient
+icons)
;;vertico ; the search engine of the future
:ui
;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
doom-quit ; DOOM quit-message prompts when you quit Emacs
(emoji ; :)
+unicode
+ascii
+github)
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;hydra
indent-guides ; highlighted indent columns
;;(ligatures +extra); ligatures and symbols to make your code pretty again
;;minimap ; show a map of the code on the side
modeline ; snazzy, Atom-inspired modeline, plus API
nav-flash ; blink cursor line after big motions
;;neotree ; a project drawer, like NERDTree for vim
ophints ; highlight the region an operation acts on
(popup ; tame sudden yet inevitable temporary windows
+all
+defaults)
;;tabs ; a tab bar for Emacs
(treemacs +lsp) ; a project drawer, like neotree but cooler
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
+numbers)
workspaces ; tab emulation, persistence & separate workspaces
zen ; distraction-free coding or writing
:editor
(evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
;;(format +onsave) ; automated prettiness
;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim
multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent
parinfer ; turn lisp into python, sort of
;;rotate-text ; cycle region at point between text candidates
snippets ; my elves. They type so I don't have to
;;word-wrap ; soft wrapping with language-aware indent
:emacs
(dired ; making dired pretty [functional]
+ranger
+icons)
electric ; smarter, keyword-based electric-indent
(ibuffer +icons) ; interactive buffer management
undo ; persistent, smarter undo for your inevitable mistakes
vc ; version-control and Emacs, sitting in a tree
:term
eshell ; the elisp shell that works everywhere
;;shell ; simple shell REPL for Emacs
;;term ; basic terminal emulator for Emacs
;;vterm ; the best terminal emulation in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
(spell ; tasing you for misspelling misspelling
+everywhere
+hunspell
+flyspell)
grammar ; tasing grammar mistake every you make
:tools
ansible
(debugger +lsp) ; FIXME stepping through code, to help you add bugs
direnv
docker
editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
;;gist ; interacting with github gists
(lookup ; navigate your code and its documentation
+dictionary
+docsets)
(lsp +peek)
(magit +forge) ; a git porcelain for Emacs
make ; run make tasks from Emacs
;;pass ; password manager for nerds
pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders
rgb ; creating color strings
;;taskrunner ; taskrunner for all your projects
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
;;upload ; map local to remote projects via ssh/ftp
:os
;;(:if IS-MAC macos); improve compatibility with macOS
;;tty ; improve the terminal Emacs experience
:lang
;;agda ; types of types of types of types...
;;(beancount +lsp) ; the accounting system in Emacs
(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
;;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
;;dhall
;;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
;;factor
;;faust ; dsp, but you get to keep your soul
;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3
;;gdscript ; the language you waited for
go ; the hipster dialect
;;(haskell +dante) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ;
json ; At least it ain't XML
;;(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)
(latex ; writing papers in Emacs has never been so fun
+latexmk
+cdlatex
+lsp
+fold)
;;lean ; for folks with too much to prove
;;ledger ; be audit you can be
(lua ; one-based indices? one-based indices
+moonscript)
(markdown +grip) ; 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 ; organize your plain life in plain text
+pretty
+journal
+noter
+pandoc)
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional
(python ; beautiful is better than ugly
+lsp
;;+pyenv
;;+poetry
+pyright
+cpython)
qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs
;;raku ; the artist formerly known as perl6
rest ; Emacs as a REST client
;;rst ; ReST in peace
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
(scheme +guile) ; a fully conniving family of lisps
(sh ; she sells {ba,z,fi}sh shells on the C xor
+fish)
;;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
yaml ; JSON, but readable
zig ; C, but simpler
:email
;;(mu4e +org +gmail)
;;notmuch
;;(wanderlust +gmail)
:app
calendar
;;emms
;;everywhere ; *leave* Emacs!? You must be joking
;;irc ; how neckbeards socialize
;;(rss +org) ; emacs as an RSS reader
;;twitter ; twitter client https://twitter.com/vnought
:config
;;literate
(default +bindings +smartparens))

View file

@ -0,0 +1,10 @@
;; -*- no-byte-compile: t; -*-
;;; $DOOMDIR/packages.el
;; (package! xonsh-mode)
(package! vimrc-mode)
(package! all-the-icons-ivy-rich)
(package! nerd-fonts
:recipe (:host github :repo "FollieHiyuki/nerd-fonts.el"))
(package! keycast)
(package! org-tree-slide)

View file

@ -0,0 +1,46 @@
---
- name: Create doom directory
file:
path: ~/.config/doom
state: directory
- name: Copy files
synchronize:
src: doom/
dest: ~/.config/doom/
recursive: yes
- name: Copy doom config
template:
src: config.j2
dest: ~/.config/doom/config.el
force: yes
- name: Clone Doom Emacs
git:
depth: 1
update: yes
repo: https://github.com/hlissner/doom-emacs.git
dest: ~/.config/emacs
- name: Run 'doom install'
command:
cmd: ~/.config/emacs/bin/doom -y install
creates: ~/.config/emacs/.local/env
- name: Clone and build parinfer-rust
vars:
- parinfer_dir: ~/.config/emacs/.local/etc/parinfer-rust
block:
- name: Clone parinfer-rust
git:
depth: 1
update: yes
repo: https://github.com/eraserhd/parinfer-rust.git
dest: '{{ parinfer_dir }}'
- name: Build parinfer-rust
command: cargo build --release --features emacs
args:
chdir: '{{ parinfer_dir }}'
creates: '{{ parinfer_dir }}/target/release/libparinfer_rust.so'

View file

@ -0,0 +1,244 @@
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
;; Some functionality uses this to identify you
(setq user-full-name "{{ user_name }}"
user-mail-address "{{ user_email }}")
;; Better default settings
(setq-default
;; Tab vs space
indent-tabs-mode nil
tab-width 4
evil-shift-width 4
standard-indent 4
line-spacing 2
;; From @tecosaur
delete-by-moving-to-trash t
window-combination-resize t
x-stretch-cursor t)
(setq undo-limit 80000000
evil-want-fine-undo t
auto-save-default t
truncate-string-ellipsis "…")
(global-subword-mode 1) ;; Use CamelCase words
;; Font settings
(setq doom-font (font-spec :family "Iosevka" :size 18 :weight 'semi-light)
doom-serif-font (font-spec :family "Iosevka Slab" :size 18 :weight 'semi-light)
doom-variable-pitch-font (font-spec :family "IBM Plex Sans" :size 18)
doom-big-font (font-spec :family "Iosevka" :size 26 :weight 'semi-light))
(after! unicode-fonts
(setq doom-unicode-font doom-font)
(dolist (unicode-block '("CJK Compatibility"
"CJK Compatibility Forms"
"CJK Compatibility Ideographs"
"CJK Compatibility Ideographs Supplement"
"CJK Radicals Supplement"
"CJK Strokes"
"CJK Symbols and Punctuation"
"CJK Unified Ideographs"
"CJK Unified Ideographs Extension A"
"CJK Unified Ideographs Extension B"
"CJK Unified Ideographs Extension C"
"CJK Unified Ideographs Extension D"
"CJK Unified Ideographs Extension E"))
(push "{{ cjk_font }}" (cadr (assoc unicode-block unicode-fonts-block-font-mapping)))))
;;(setq inhibit-compacting-font-caches t)
(custom-set-faces!
'(font-lock-comment-face :slant italic)
'(font-lock-keyword-face :weight bold))
;; Japanese input method
;; (use-package! mozc
;; :config
;; (setq default-input-method "japanese-mozc"))
(after! doom-modeline
(setq doom-modeline-major-mode-icon t
doom-modeline-major-mode-color-icon t
doom-modeline-buffer-encoding t
doom-modeline-enable-word-count t
doom-modeline-unicode-fallback t))
(custom-set-faces!
'(doom-modeline-buffer-modified :foreground "orange"))
;; Window split position
(setq evil-vsplit-window-right t
evil-split-window-below t)
;; Emoji
(after! emojify
(setq emojify-display-style 'unicode))
{% if theme == 'nord' %}
(setq doom-theme 'doom-nord)
{% elif theme == 'onedark' %}
(setq doom-theme 'doom-one)
{% endif %}
(setq doom-themes-enable-bold t
doom-themes-enable-italic t)
(after! treemacs
(setq doom-themes-treemacs-theme 'doom-colors
doom-themes-treemacs-enable-variable-pitch nil))
;; Pick an image for dashboard
(defun random-choice (items)
(let* ((size (length items))
(index (random size)))
(nth index items)))
(defvar kawaii (random-choice (delete "."
(delete ".." (directory-files (expand-file-name "images" doom-private-dir))))))
(setq +doom-dashboard-banner-file kawaii
+doom-dashboard-banner-dir (expand-file-name "images" doom-private-dir)
+doom-dashboard-banner-padding '(0 . 2)
+doom-dashboard-functions '(doom-dashboard-widget-banner
doom-dashboard-widget-shortmenu
doom-dashboard-widget-loaded))
(setq display-line-numbers-type 'relative)
(setq global-hl-line-modes nil)
;; Git-gutter
(after! git-gutter
(setq +vc-gutter-default-style nil))
;; Indent
(after! highlight-indent-guides
(setq highlight-indent-guides-method 'character
highlight-indent-guides-responsive t))
;; Use ranger.el instead of default dired
(after! ranger
(setq ranger-parent-depth 0
ranger-cleanup-eagerly t
ranger-show-hidden t
ranger-max-preview-size 20
ranger-dont-show-binary t))
;; Projectile
(after! projectile
(setq projectile-project-search-path '("~/Code/")
projectile-auto-discover nil))
(use-package! all-the-icons-ivy-rich
:defer-incrementally counsel-projectile
:init (all-the-icons-ivy-rich-mode 1)
:config
(setq all-the-icons-ivy-rich-icon-size 1.0))
(use-package! ivy-rich
:after all-the-icons-ivy-rich)
;; Company
(after! company
(setq company-idle-delay 0.5
company-minimum-prefix-length 2
company-show-numbers nil))
;; lsp
(use-package! lsp-treemacs
:after (treemacs lsp)
:config
(lsp-treemacs-sync-mode 1))
(setq lsp-clients-clangd-args '("-j=2"
"--background-index"
"--clang-tidy"
"--completion-style=detailed"
"--pch-storage=memory"
"--header-insertion=iwyu"
"--header-insertion-decorators"))
(after! lsp-clangd (set-lsp-priority! 'clangd 2)) ;; Prefer clangd than the default ccls
;; Quicker which-key
(after! which-key
(setq which-key-idle-delay 0.5))
(use-package! parinfer-rust-mode
:init
(setq parinfer-rust-library (concat doom-etc-dir "parinfer-rust/target/release/libparinfer_rust.so")
parinfer-rust-auto-download nil))
(setq org-directory "~/Documents/Org/")
(after! org
(setq org-default-notes-file "~/Documents/Org/notes.org"
org-agenda-files '("~/Documents/Org/agenda/agenda.org" "~/Documents/Org/agenda/archive.org")
org-confirm-babel-evaluate nil
org-ellipsis "▾"
org-log-done t
org-log-into-drawser t
org-insert-heading-respect-content nil
org-hide-emphasis-markers t)
(add-to-list 'org-modules 'ol-info)
;; Org-noter
(setq org-noter-notes-search-path '("~/Documents/Org/noter/"))
;; Org-journal
(setq org-journal-dir "~/Documents/Org/journal/"))
(defun follie/comfy-org-editing ()
(setq visual-fill-column-width 100
visual-fill-column-center-text t)
(visual-fill-column-mode 1)
(display-line-numbers-mode -1))
(add-hook 'org-mode-hook 'follie/comfy-org-editing)
(add-hook! org-mode (electric-indent-local-mode -1))
(defun follie/org-toggle-emphasis-markers ()
"Toggle emphasis markers in an Org buffer"
(interactive)
(if org-hide-emphasis-markers
(setq org-hide-emphasis-markers nil)
(setq org-hide-emphasis-markers t))
(org-mode-restart))
(map! :map org-mode-map
:localleader :desc "org-toggle-emphasis-markers"
"z" #'follie/org-toggle-emphasis-markers)
;; Org-tree-slide
(defun follie/presentation-start ()
(text-scale-set 2)
(hide-mode-line-mode 1))
(defun follie/presentation-stop ()
(text-scale-set 0)
(hide-mode-line-mode -1))
(use-package! org-tree-slide
:commands org-tree-slide-mode
:config
(setq org-tree-slide-skip-outline-level 0
org-image-actual-width nil
org-tree-slide-heading-emphasis t
org-tree-slide-modeline-display nil
org-tree-slide-header t
org-tree-slide-slide-in-effect t
org-tree-slide-breadcrumbs " ▶ "
org-tree-slide-activate-message "Presentation starto..."
org-tree-slide-deactivate-message "Thanks for listening!")
(add-hook! 'org-tree-slide-mode-hook #'evil-normalize-keymaps)
(add-hook! 'org-tree-slide-play-hook #'follie/presentation-start)
(add-hook! 'org-tree-slide-stop-hook #'follie/presentation-stop))
;; Latex
(setq +latex-viewers '(pdf-tools))
;; Spell checker
(after! flyspell
(setq flyspell-lazy-idle-seconds 2))
;; Magit
(after! magit
(setq magit-diff-refine-hunk 'all))
;; Keycast
(use-package! keycast
:commands keycast-mode
:config
(define-minor-mode keycast-mode
"Show current command and its key binding in the mode line."
:global t
(if keycast-mode
(progn
(add-hook 'pre-command-hook 'keycast--update t)
(add-to-list 'global-mode-string '("" mode-line-keycast " ")))
(remove-hook 'pre-command-hook 'keycast--update)
(setq global-mode-string (remove '("" mode-line-keycast " ") global-mode-string))))
(custom-set-faces!
'(keycast-command :inherit doom-modeline-debug
:height 0.9)
'(keycast-key :inherit custom-modified
:height 1.1
:weight bold)))

View file

@ -1,9 +0,0 @@
if not pgrep -u "$USER" gpg-agent >/dev/null
gpg-agent --daemon --enable-ssh-support >/dev/null
end
if test -z "$SSH_AUTH_SOCK"
set -gx SSH_AUTH_SOCK (gpgconf --list-dirs agent-ssh-socket)
end
gpg-connect-agent updatestartuptty /bye >/dev/null

View file

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- Default font (no fc-match pattern) -->
<match>
<edit mode="prepend" name="family">
<string>Iosevka Aile</string>
</edit>
</match>
<!-- Default font for the ja_JP locale (no fc-match pattern) -->
<match>
<test compare="contains" name="lang">
<string>ja</string>
</test>
<edit mode="prepend" name="family">
<string>Sarasa Fixed J</string>
</edit>
</match>
<!-- Default sans-serif font -->
<match target="pattern">
<test qual="any" name="family"><string>sans-serif</string></test>
<edit name="family" mode="prepend" binding="same"><string>Iosevka Aile</string></edit>
<edit name="family" mode="append" binding="same"><string>Sarasa Fixed J</string></edit>
</match>
<!-- Default serif fonts -->
<match target="pattern">
<test qual="any" name="family"><string>serif</string></test>
<edit name="family" mode="prepend" binding="same"><string>Iosevka Etoile</string></edit>
<edit name="family" mode="append" binding="same"><string>Sarasa Fixed Slab J</string></edit>
</match>
<!-- Default monospace fonts -->
<match target="pattern">
<test qual="any" name="family"><string>monospace</string></test>
<edit name="family" mode="prepend" binding="same"><string>Iosevka</string></edit>
<edit name="family" mode="append" binding="same"><string>Sarasa Mono J</string></edit>
</match>
<!-- Fallback fonts preference order -->
<alias>
<family>sans-serif</family>
<prefer>
<family>Iosevka Aile</family>
<family>Noto Sans</family>
<family>FreeSans</family>
<family>Open Sans</family>
<family>Droid Sans</family>
<family>Ubuntu</family>
<family>Roboto</family>
<family>Sarasa Fixed J</family>
<family>NotoSansCJK</family>
<family>Source Han Sans JP</family>
<family>IPAPGothic</family>
<family>VL PGothic</family>
<family>Koruri</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Iosevka Etoile</family>
<family>Noto Serif</family>
<family>FreeSerif</family>
<family>Droid Serif</family>
<family>Roboto Slab</family>
<family>Sarasa Fixed Slab J</family>
<family>IPAPMincho</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Iosevka</family>
<family>Noto Sans Mono</family>
<family>FreeMono</family>
<family>Inconsolatazi4</family>
<family>Ubuntu Mono</family>
<family>Droid Sans Mono</family>
<family>Roboto Mono</family>
<family>Sarasa Mono J</family>
<family>IPAGothic</family>
</prefer>
</alias>
<!-- <match target="font"> -->
<!-- <edit name="antialias" mode="assign"> -->
<!-- <bool>true</bool> -->
<!-- </edit> -->
<!-- <edit name="hinting" mode="assign"> -->
<!-- <bool>true</bool> -->
<!-- </edit> -->
<!-- <edit name="hintstyle" mode="assign"> -->
<!-- <const>hintnone</const> -->
<!-- </edit> -->
<!-- <edit name="rgba" mode="assign"> -->
<!-- <const>none</const> -->
<!-- </edit> -->
<!-- <edit name="autohint" mode="assign"> -->
<!-- <bool>false</bool> -->
<!-- </edit> -->
<!-- <edit name="lcdfilter" mode="assign"> -->
<!-- <const>lcdnone</const> -->
<!-- </edit> -->
<!-- <edit name="dpi" mode="assign"> -->
<!-- <double>96</double> -->
<!-- </edit> -->
<!-- </match> -->
</fontconfig>

View file

@ -0,0 +1,11 @@
---
- name: Create config directory
file:
path: ~/.config/fontconfig
state: directory
- name: Copy config
copy:
src: fonts.conf
dest: ~/.config/fontconfig/fonts.conf
force: yes

View file

@ -0,0 +1,31 @@
---
- name: Create config directory
file:
path: ~/.config/gallery-dl
state: directory
- name: Copy config
template:
src: config.j2
dest: ~/.config/gallery-dl/config.json
force: yes
# gallery-dl will complain that ~/.local/share/gallery-dl/log.txt is missing
# This path is setup inside the config file, so create it as desired
- name: Create directory in ~/.local/share
file:
path: ~/.local/share/gallery-dl
state: directory
- name: Install gallery-dl with pip
pip:
name:
- gallery-dl
- yt-dlp
virtualenv: ~/.config/gallery-dl/venv
- name: Symlink gallery-dl executable
file:
src: ~/.config/gallery-dl/venv/bin/gallery-dl
dest: ~/.local/bin/gallery-dl
state: link

View file

@ -0,0 +1,176 @@
{
"extractor": {
"archive": "~/.local/share/gallery-dl/archive.sqlite3",
"base-directory": "~/Pictures/gallery-dl",
"chapter-filter": "lang == 'en'",
"chapter-unique": true,
"cookies": null,
"date-format": "%Y-%m-%dT%H:%M:%S",
"image-unique": true,
"path-remove": "\u0000-\u001f\u007f",
"path-replace": "_",
"path-restrict": "unix",
"retries": 4,
"skip": true,
"user-agent": "{{ user_agent }}",
"pixiv": {
"filename": "{id}_p{num}.{extension}",
"directory": [
"Pixiv",
"{user[name]}-{user[id]}"
],
"avatar": false,
"ugoira": true,
"refresh-token": ""
},
"danbooru": {
"ugoira": false
},
"artstation": {
"directory": [
"ArtStation",
"{user[username]}"
],
"external": false
},
"deviantart": {
"directory": [
"DeviantArt",
"{user[id]}"
],
"flat": true,
"extra": false,
"include": "gallery,scraps,favorite",
"metadata": false,
"mature": true,
"journals": "text",
"original": true,
"quality": 100
},
"mangadex": {
"directory": [
"Manga",
"{manga}",
"c{chapter}{chaper_minor} - {title}"
],
"postprocessors": [
{
"name": "zip",
"compression": "store",
"extension": "cbz",
"keep-files": false
}
]
},
"mangafox": {
"directory": [
"Manga",
"{manga}",
"c{chapter}{chaper_minor}"
],
"postprocessors": [
{
"name": "zip",
"compression": "store",
"extension": "cbz",
"keep-files": false
}
]
},
"manganelo": {
"directory": [
"Manga",
"{manga}",
"c{chapter}{chaper_minor} - {title}"
],
"postprocessors": [
{
"name": "zip",
"compression": "store",
"extension": "cbz",
"keep-files": false
}
]
},
"mangahere": {
"directory": [
"Manga",
"{manga}",
"c{chapter}{chaper_minor} - {title}"
],
"postprocessors": [
{
"name": "zip",
"compression": "store",
"extension": "cbz",
"keep-files": false
}
]
},
"mangapark": {
"directory": [
"Manga",
"{manga}",
"c{chapter}{chaper_minor} - {title}"
],
"postprocessors": [
{
"name": "zip",
"compression": "store",
"extension": "cbz",
"keep-files": false
}
]
},
"reddit": {
"comments": 0,
"morecomments": false,
"recursion": 0
},
"twitter": {
"quoted": false,
"replies": false,
"retweets": false,
"twitpic": false
}
},
"downloader": {
"mtime": true,
"part": true,
"part-directory": "/tmp/gallery-dl/.download/",
"retries": 4,
"timeout": 8.0,
"verify": true,
"http": {
"adjust-extensions": true
}
},
"output": {
"mode": "color",
"progress": true,
"logfile": {
"path": "~/.local/share/gallery-dl/log.txt",
"mode": "w",
"level": "debug"
},
"log": {
"level": "info",
"format": {
"debug": "\u001b[0;37m{name}: {message}\u001b[0m",
"info": "\u001b[1;37m{name}: {message}\u001b[0m",
"warning": "\u001b[1;33m{name}: {message}\u001b[0m",
"error": "\u001b[1;31m{name}: {message}\u001b[0m"
}
},
"unsupportedfile": {
"path": "~/.local/share/gallery-dl/unsupported.txt",
"mode": "a",
"format": "{asctime} {message}",
"format-date": "%Y-%m-%d-%H-%M-%S"
}
},
"cache": {
"file": "~/.cache/gallery-dl/cache.sqlite3"
},
"netrc": false
}

View file

@ -9,6 +9,7 @@
[core]
editor = nvim
whitespace = trailing-space
sshCommand = dbclient -y
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f

203
roles/glow/files/nord.json Normal file
View file

@ -0,0 +1,203 @@
{
"document": {
"block_prefix": "\n",
"block_suffix": "\n",
"color": "#d8dee9",
"margin": 2
},
"block_quote": {
"indent": 1,
"indent_token": "│ "
},
"paragraph": {},
"list": {
"level_indent": 2
},
"heading": {
"block_suffix": "\n",
"color": "#81a1c1",
"bold": true
},
"h1": {
"prefix": " ",
"suffix": " ",
"color": "#ebcb8b",
"background_color": "#5e81ac",
"bold": true
},
"h2": {
"prefix": "## "
},
"h3": {
"prefix": "### "
},
"h4": {
"prefix": "#### "
},
"h5": {
"prefix": "##### "
},
"h6": {
"prefix": "###### ",
"color": "#88c0d0",
"bold": false
},
"text": {},
"strikethrough": {
"crossed_out": true
},
"emph": {
"italic": true
},
"strong": {
"bold": true
},
"hr": {
"color": "#3b4252",
"format": "\n--------\n"
},
"item": {
"block_prefix": "• "
},
"enumeration": {
"block_prefix": ". "
},
"task": {
"ticked": "[✓] ",
"unticked": "[ ] "
},
"link": {
"color": "#8fbcbb",
"underline": true
},
"link_text": {
"color": "#a3be8c",
"bold": true
},
"image": {
"color": "#b48ead",
"underline": true
},
"image_text": {
"color": "#4c566a",
"format": "Image: {{.text}} →"
},
"code": {
"prefix": " ",
"suffix": " ",
"color": "#d08770",
"background_color": "#434c5e"
},
"code_block": {
"color": "#d8dee9",
"margin": 2,
"chroma": {
"text": {
"color": "#d8dee9"
},
"error": {
"color": "#bf616a"
},
"comment": {
"color": "#616e87",
"italic": true
},
"comment_preproc": {
"color": "#5e81ac"
},
"keyword": {
"color": "#81a1c1",
"bold": true
},
"keyword_reserved": {
"color": "#81a1c1",
"bold": false
},
"keyword_namespace": {
"color": "#81a1c1",
"bold": false
},
"keyword_type": {
"color": "#81a1c1",
"bold": false
},
"operator": {
"color": "#81a1c1"
},
"punctuation": {
"color": "#eceff4"
},
"name": {
"color": "#d8dee9"
},
"name_builtin": {
"color": "#81a1c1"
},
"name_tag": {
"color": "#81a1c1"
},
"name_attribute": {
"color": "#8fbcbb"
},
"name_class": {
"color": "#8fbcbb"
},
"name_constant": {
"color": "#8fbcbb"
},
"name_decorator": {
"color": "#d08770"
},
"name_exception": {
"color": "#bf616a"
},
"name_function": {
"color": "#88c0d0"
},
"name_other": {},
"literal": {},
"literal_number": {
"color": "#b48ead"
},
"literal_date": {},
"literal_string": {
"color": "#a3be8c"
},
"literal_string_escape": {
"color": "#ebcb8b"
},
"generic_deleted": {
"color": "#bf616a"
},
"generic_emph": {
"italic": true
},
"generic_inserted": {
"color": "#4c566a",
"bold": true
},
"generic_strong": {
"bold": true
},
"generic_subheading": {
"color": "#88c0d0",
"bold": true
},
"background": {
"background_color": "#2e3440"
}
}
},
"table": {
"center_separator": "┼",
"column_separator": "│",
"row_separator": "─"
},
"definition_list": {},
"definition_term": {},
"definition_description": {
"block_prefix": "\n🠶 "
},
"html_block": {},
"html_span": {}
}

View file

@ -0,0 +1,197 @@
{
"document": {
"block_prefix": "\n",
"block_suffix": "\n",
"color": "#abb2bf",
"margin": 2
},
"block_quote": {
"indent": 1,
"indent_token": "│ "
},
"paragraph": {},
"list": {
"level_indent": 2
},
"heading": {
"block_suffix": "\n",
"color": "#61afef",
"bold": true
},
"h1": {
"prefix": " ",
"suffix": " ",
"color": "#e5c07b",
"background_color": "#61afef",
"bold": true
},
"h2": {
"prefix": "## "
},
"h3": {
"prefix": "### "
},
"h4": {
"prefix": "#### "
},
"h5": {
"prefix": "##### "
},
"h6": {
"prefix": "###### ",
"color": "#56b6c2",
"bold": false
},
"text": {},
"strikethrough": {
"crossed_out": true
},
"emph": {
"italic": true
},
"strong": {
"bold": true
},
"hr": {
"color": "#3e4452",
"format": "\n--------\n"
},
"item": {
"block_prefix": "• "
},
"enumeration": {
"block_prefix": ". "
},
"task": {
"ticked": "[✓] ",
"unticked": "[ ] "
},
"link": {
"color": "#5699af",
"underline": true
},
"link_text": {
"color": "#98c379",
"bold": true
},
"image": {
"color": "#c678dd",
"underline": true
},
"image_text": {
"color": "#4b5263",
"format": "Image: {{.text}} →"
},
"code": {
"prefix": " ",
"suffix": " ",
"color": "#d19a66",
"background_color": "#4b5263"
},
"code_block": {
"color": "#b0c4de",
"margin": 2,
"chroma": {
"text": {
"color": "#b0c4de"
},
"error": {
"color": "#b0c4de"
},
"comment": {
"color": "#8a93a5",
"italic": true
},
"comment_preproc": {
"bold": true
},
"keyword": {
"color": "#c678dd"
},
"keyword_reserved": {},
"keyword_namespace": {
"color": "#b756ff",
"bold": true
},
"keyword_type": {
"color": "#ef8383"
},
"operator": {
"color": "#c7bf54"
},
"punctuation": {
"color": "#b0c4de"
},
"name": {
"color": "#c1abea"
},
"name_builtin": {
"color": "#ef8383"
},
"name_tag": {
"color": "#e06c75"
},
"name_attribute": {
"color": "#b3d23c"
},
"name_class": {
"color": "#76a9f9"
},
"name_constant": {
"color": "#b756ff",
"bold": true
},
"name_decorator": {
"color": "#e5c07b"
},
"name_exception": {
"color": "#fd7474",
"bold": true
},
"name_function": {
"color": "#00b1f7"
},
"name_other": {},
"literal": {},
"literal_number": {
"color": "#d19a66"
},
"literal_date": {},
"literal_string": {
"color": "#98c379"
},
"literal_string_escape": {
"color": "#d26464",
"bold": true
},
"generic_deleted": {},
"generic_emph": {
"italic": true
},
"generic_inserted": {
"color": "#a6e22e"
},
"generic_strong": {
"bold": true
},
"generic_subheading": {
"color": "#a2cbff"
},
"background": {
"background_color": "#282c34"
}
}
},
"table": {
"center_separator": "┼",
"column_separator": "│",
"row_separator": "─"
},
"definition_list": {},
"definition_term": {},
"definition_description": {
"block_prefix": "\n🠶 "
},
"html_block": {},
"html_span": {}
}

20
roles/glow/tasks/main.yml Normal file
View file

@ -0,0 +1,20 @@
---
- name: Create config directory
file:
path: ~/.config/glow/styles
state: directory
- name: Copy themes
copy:
src: '{{ item }}'
dest: ~/.config/glow/styles
force: yes
loop:
- nord.json
- onedark.json
- name: Copy config
template:
src: glow.j2
dest: ~/.config/glow/glow.yml
force: yes

View file

@ -0,0 +1,10 @@
# style name or JSON path (default "auto")
style: "~/.config/glow/styles/{{ theme }}.json"
# show local files only; no network (TUI-mode only)
local: false
# mouse support (TUI-mode only)
mouse: true
# use pager to display markdown
pager: false
# word-wrap at width
width: 80

View file

@ -0,0 +1,12 @@
# https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html
# gpg-agent timeout
max-cache-ttl 14400
default-cache-ttl 7200
max-cache-ttl-ssh 14400
default-cache-ttl-ssh 7200
# the default password prompt
#pinentry-program /usr/bin/pinentry-curses
#pinentry-program /usr/bin/pinentry-gnome3
pinentry-program /usr/bin/pinentry-qt

View file

@ -0,0 +1,20 @@
---
- name: Create gnupg directory
file:
path: ~/.local/share/gnupg
state: directory
mode: 0700
- name: Copy gpg.conf
template:
src: gpg.j2
dest: ~/.local/share/gnupg/gpg.conf
force: yes
mode: 0600
- name: Copy gpg-agent.conf
copy:
src: gpg-agent.conf
dest: ~/.local/share/gnupg/gpg-agent.conf
force: yes
mode: 0600

View file

@ -0,0 +1,45 @@
# https://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration-Options.html
# https://www.gnupg.org/documentation/manuals/gnupg/GPG-Esoteric-Options.html
# No greeting
no-greeting
# No version in output
no-emit-version
# Key servers
keyserver hkp://keys.gnupg.net
# The command line that should be run to view a photo ID
photo-viewer "qimgv %i"
# Use the following options when verifying signatures
verify-options show-photos show-user-notations pka-lookup
list-options show-usage show-user-notations show-uid-validity
# Disable caching of passphrase for symmetrical ops
no-symkey-cache
# Display all keys and their fingerprints
with-fingerprint
# Long hexadecimal key format
#keyid-format 0xlong
# The message digest algorithm used when signing a key
cert-digest-algo SHA256
# The default key to sign with
default-key {{ gpg_signature }}
# Use the default key as default recipient
default-recipient-self
# Personal algorithms
personal-cipher-preferences AES256 AES192 AES CAST5
personal-digest-preferences SHA256 SHA512 SHA384 SHA224
personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed
# No one seems to use these
disable-cipher-algo 3DES
disable-cipher-algo BLOWFISH

View file

@ -11,7 +11,7 @@
# Or else mpd will fail to start
- name: Create mpd directory in ~/.local/share
file:
path: ~/.local/share/mpd
path: ~/.local/share/mpd/playlists
state: directory
- name: Copy mpd config

View file

@ -0,0 +1,17 @@
# Low-end computer
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode A (Fast)"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode B (Fast)"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode C (Fast)"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_Restore_CNN_S.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode A+A (Fast)"
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_S.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode B+B (Fast)"
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_S.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode C+A (Fast)"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
# High-end computer
# CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
# CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)"
# CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)"
# CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)"
# CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)"
# CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C+A (HQ)"
# CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"

30
roles/mpv/tasks/main.yml Normal file
View file

@ -0,0 +1,30 @@
---
- name: Create config directory
file:
path: ~/.config/mpv/shaders
state: directory
- name: Copy config
template:
src: mpv.j2
dest: ~/.config/mpv/mpv.conf
force: yes
- name: Download Anime4K shaders
get_url:
url: https://github.com/bloc97/Anime4K/releases/download/v4.0.1/Anime4K_v4.0.zip
dest: /tmp/Anime4K.zip
mode: 0644
# Busybox has 'unzip' so use that
# 'zipinfo' is required for 'unarchive' module, but it is only available in 'unzip' package
- name: Unzip Anime4K shaders
command: unzip /tmp/Anime4K.zip -d ~/.config/mpv/shaders
args:
creates: ~/.config/mpv/shaders/Anime4K_Darken_HQ.glsl
- name: Copy input config
copy:
src: input.conf
dest: ~/.config/mpv/input.conf
force: yes

View file

@ -0,0 +1,13 @@
sub-auto=fuzzy
sub-bold=yes
# scale=ewa_lanczossharp
# cscale=ewa_lanczossharp
# video-sync=display-resample
# interpolation
# tscale=oversample
profile=gpu-hq
gpu-context=wayland
vo=gpu
hwdec=vaapi
user-agent="{{ user_agent }}"
script-opts=ytdl_hook-ytdl_path=/usr/bin/yt-dlp

66
roles/newsboat/files/urls Normal file
View file

@ -0,0 +1,66 @@
-------Linux/BSD-------
https://distrowatch.com/news/dw.xml "~DistroWatch" news
https://www.reddit.com/r/linux/new.rss "~r/linux" reddit
https://www.reddit.com/r/linuxquestions/new.rss "~r/linuxquestions" reddit
https://www.reddit.com/r/openbsd/new.rss "~r/openbsd" reddit
https://www.reddit.com/r/freebsd/new.rss "~r/freebsd" reddit
https://www.reddit.com/r/Gentoo/new.rss "~r/Gentoo" reddit
https://www.reddit.com/r/archlinux/new.rss "~r/archlinux" reddit
https://www.reddit.com/r/voidlinux/new.rss "~r/voidlinux" reddit
https://www.reddit.com/r/NixOS/new.rss "~r/NixOS" reddit
https://www.reddit.com/r/bedrocklinux/new.rss "~r/bedrocklinux" reddit
https://www.reddit.com/r/Fedora/new.rss "~r/Fedora" reddit
https://www.reddit.com/r/kde/new.rss "~r/kde" reddit
https://www.reddit.com/r/commandline/new.rss "~r/commandline" reddit
--------Privacy--------
https://www.reddit.com/r/privacytoolsIO/new.rss "~r/privacytoolsIO" reddit
https://www.reddit.com/r/privacy/new.rss "~r/privacy" reddit
https://www.reddit.com/r/TOR/new.rss "~r/TOR" reddit
https://www.reddit.com/r/Monero/new.rss "~r/Monero" reddit
---------Fluff---------
https://www.reddit.com/r/unixporn/new.rss "~r/unixporn" reddit
https://www.reddit.com/r/Rainmeter/new.rss "~r/Rainmeter" reddit
https://www.reddit.com/r/FirefoxCSS/new.rss "~r/FirefoxCSS" reddit
https://www.reddit.com/r/startpages/new.rss "~r/startpages" reddit
https://www.reddit.com/r/wallpaper/new.rss "~r/wallpaper" reddit
https://www.reddit.com/r/Animewallpaper/new.rss "~r/Animewallpaper" reddit
https://www.reddit.com/r/AnimewallpapersSFW/new.rss "~r/AnimewallpaperSFW" reddit
https://www.reddit.com/r/awwnime/new.rss "~r/awwnime" reddit
https://www.reddit.com/r/Lolirefugees/new.rss "~r/Lolirefugees" reddit
https://www.reddit.com/r/AnimeGirlsInKimonos/new.rss "~r/AnimeGirlsInKimono" reddit
https://www.reddit.com/r/fatestaynight/new.rss "~r/fatestaynight" reddit
https://www.reddit.com/r/Saber/new.rss "~r/Saber" reddit
https://www.reddit.com/r/OneTrueTohsaka/new.rss "~r/OneTrueTohsaka" reddit
https://www.reddit.com/r/formalwaifus/new.rss "~r/formalwaifus" reddit
https://www.reddit.com/r/LightNovels/new.rss "~r/LightNovels" reddit
https://www.reddit.com/r/PixelArt/new.rss "~r/PixelArt" reddit
https://www.reddit.com/r/riprequests/new.rss "~r/riprequests" reddit
https://www.reddit.com/r/dllinks/new.rss "~r/dllinks" reddit
------Programming------
https://www.reddit.com/r/learnprogramming/new.rss "~r/learnprogramming" reddit
https://www.reddit.com/r/programming/new.rss "~r/programming" reddit
https://www.reddit.com/r/dailyprogrammer/new.rss "~r/dailyprogrammer" reddit
https://www.reddit.com/r/badcode/new.rss "~r/badcode" reddit
---------CVE-----------
https://nvd.nist.gov/feeds/xml/cve/misc/nvd-rss.xml "~8-day vulnerabilities"
https://nvd.nist.gov/feeds/xml/cve/misc/nvd-rss-analyzed.xml "~8-day vulnerabilities (info)"
https://www.tenable.com/security/feed "~Tenable (security)"
https://www.tenable.com/security/research/feed "~Tenable (security research)"
https://www.tenable.com/blog/cyber-exposure-alerts/feed "~Tenable (cyber exposure alerts)"
http://tools.cisco.com/security/center/psirtrss20/CiscoSecurityAdvisory.xml "~Cisco (security)"
---------News----------
https://news.ycombinator.com/rss "~Hacker News" news
https://www.phoronix.com/rss.php "~Phoronix" news
https://www.nytimes.com/svc/collections/v1/publish/https://www.nytimes.com/section/world/rss.xml "~The NewYork Times" news
https://www.cbsnews.com/latest/rss/world "~CBS News" news
https://www.theguardian.com/world/rss "~The Guardian" news
-------Youtube---------
https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg "~Youtube: DistroTube" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA "~Youtube: Brodie Robertson" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA "~Youtube: Mental Outlaw" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCZWadyLVO4ZnMgLrRVtS6VA "~Youtube: baby WOGUE" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCAiiOTio8Yu69c3XnR7nQBQ "~Youtube: System Crafters" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA "~Youtube: Veritasium" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC6nSFpj9HTCZ5t-N3Rm3-HA "~Youtube: Vsauce" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCoxcjq-8xIDTYp3uz647V5A "~Youtube: Numberphile" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCBa659QWEk1AI4Tg--mrJ2A "~Youtube: Tom Scott" youtube

View file

@ -0,0 +1,17 @@
---
- name: Create config directory
file:
path: ~/.config/newsboat
state: directory
- name: Copy RSS feeds list
copy:
src: urls
dest: ~/.config/newsboat/urls
force: yes
- name: Copy config
template:
src: config.j2
dest: ~/.config/newsboat/config
force: yes

View file

@ -0,0 +1,54 @@
auto-reload no
refresh-on-startup no
notify-program "notify-send"
notify-screen yes
notify-xterm no
unbind-key q
unbind-key Q
unbind-key j
unbind-key k
unbind-key g
unbind-key m
unbind-key f
browser "{{ default_browser }} %u"
macro m set browser "mpv %u" ; open-in-browser ; set browser "{{ default_browser }} %u"
bind-key , macro-prefix
bind-key j down
bind-key k up
bind-key G end
bind-key g home
bind-key d pagedown
bind-key u pageup
bind-key l open
bind-key h quit
bind-key RIGHT open
bind-key LEFT quit
bind-key BACKSPACE quit
bind-key q hard-quit
bind-key H prev-feed
bind-key L next-feed
bind-key c toggle-show-read-feeds
color background default default
color listnormal blue default
color listnormal_unread blue default
color listfocus black yellow
color listfocus_unread black yellow
color info default black
color article default default
color info yellow black bold
highlight all "---.*---" green
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" blue default bold
highlight article "(^Link:.*|^Date:.*)" default default
highlight article "https?://[^ ]+" yellow default
highlight article "^(Title):.*$" cyan default
highlight article "\\[[0-9][0-9]*\\]" magenta default bold
highlight article "\\[image\\ [0-9]+\\]" yellow default bold
highlight article "\\[embedded flash: [0-9][0-9]*\\]" yellow default bold
highlight article ":.*\\(link\\)$" blue default
highlight article ":.*\\(image\\)$" cyan default
highlight article ":.*\\(embedded flash)$" magenta default

3
roles/npm/files/npmrc Normal file
View file

@ -0,0 +1,3 @@
cache=${XDG_CACHE_HOME}/npm
tmp=${XDG_RUNTIME_DIR}/npm
init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js

11
roles/npm/tasks/main.yml Normal file
View file

@ -0,0 +1,11 @@
---
- name: Create config directory
file:
path: ~/.config/npm
state: directory
- name: Copy config
copy:
src: npmrc
dest: ~/.config/npm/npmrc
force: yes

View file

@ -40,7 +40,7 @@ if exists('b:match_words')
for element in g:HtmlJinjaBodyElements
let pattern = ''
for tag in element[:-2]
if pattern != ''
if pattern !=? ''
let pattern .= ':'
endif
let pattern .= '{%-\?\s*\<' . tag . '\>' "\_.\{-}-\?%}'

View file

@ -13,7 +13,7 @@ let b:did_indent = 1
" Indent within the jinja tags
" Made by Steve Losh <steve@stevelosh.com>
if &l:indentexpr == ''
if &l:indentexpr ==? ''
if &l:cindent
let &l:indentexpr = 'cindent(v:lnum)'
else
@ -33,9 +33,9 @@ if exists('*GetDjangoIndent')
endif
function! GetDjangoIndent(...)
if a:0 && a:1 == '.'
if a:0 && a:1 ==? '.'
let v:lnum = line('.')
elseif a:0 && a:1 =~ '^\d'
elseif a:0 && a:1 =~? '^\d'
let v:lnum = a:1
endif
let vcol = col('.')

View file

@ -72,11 +72,11 @@ hi def link jinjaOperator Operator
hi def link jinjaAttribute Identifier
hi def link jinjaTagBlock PreProc
hi def link jinjaVarBlock PreProc
hi def link jinjaStatement Float
hi def link jinjaStatement Statement
hi def link jinjaFunction Function
hi def link jinjaTest Type
hi def link jinjaFilter Identifier
hi def link jinjaArgument String
hi def link jinjaArgument Constant
hi def link jinjaTagError Error
hi def link jinjaVarError Error
hi def link jinjaError Error

View file

@ -51,7 +51,7 @@ local augroups = {
{'TextYankPost', [[* silent! lua vim.highlight.on_yank({higroup='IncSearch', timeout=300})]]}
},
keymaps = {
{'FileType', '*', 'lua require("keymap").whichkeyLocal()'},
{'BufReadPre', '*', 'lua require("keymap").whichkeyLocal()'},
{'FileType', 'org', 'lua require("keymap").whichkeyOrg()'},
{'FileType', 'html', 'lua require("keymap").whichkeyHtml()'},
{'FileType', 'markdown', 'lua require("keymap").whichkeyMarkdown()'}

View file

@ -469,20 +469,24 @@ function M.filetype()
extensions = {
j2 = 'jinja', jinja2 = 'jinja', jinja = 'jinja',
md = 'markdown', mkd = 'markdown',
log = 'log', LO = 'log',
patch = 'diff',
toml = 'toml',
rasi = 'css',
vifm = 'vim',
log = 'log', LO = 'log'
vifm = 'vim'
},
literal = {
log = 'log',
vifmrc = 'vim',
Vagrantfile = 'ruby'
},
complex = {
['*_log'] = 'log',
['G*_LOG'] = 'log',
['.*waybar/config'] = 'jsonc',
['.*lf/lfrc'] = 'sh'
['*waybar/config'] = 'jsonc',
['*sway*/config'] = 'config',
['*mako/config'] = 'config',
['*lf/lfrc'] = 'sh'
}
}
}

View file

@ -209,6 +209,12 @@ function M.highlight_languages()
cmd('hi! link htmlH4 markdownH4')
cmd('hi! link htmlH5 markdownH5')
cmd('hi! link htmlH6 markdownH6')
-- jinja
hi('jinjaAttribute', c.teal, '', 'bold', '')
hi('jinjaStatement', c.purple, '', 'bold', '')
hi('jinjaFilter', c.teal, '', 'bold', '')
hi('jinjaArgument', c.green, '', '', '')
end
-- Treesitter (:h nvim-treesitter-highlights)
@ -254,7 +260,7 @@ function M.highlight_treesitter()
hi('TSStrike', c.orange, '', 'italic', '')
hi('TSTitle', c.dark_blue, '', 'bold', '')
hi('TSLiteral', c.green, '', 'italic', '')
hi('TSURI', c.green, '', 'underline', '')
hi('TSURI', c.green, '', '', '')
cmd('hi! link TSComment Comment')
hi('TSConditional', c.blue, '', 'bold', '')

View file

@ -13,16 +13,16 @@ nvim_script_dir=${XDG_CONFIG_HOME:-$HOME/.config}/nvim/scripts
if [ "$1" = "-lsp" ]; then
printf "\033[1;33mInstalling lsp servers...\033[0m\n"
find "${nvim_script_dir}/lsp" -type f -exec printf "\033[1;34mInstalling \033[0m" \; -and -exec basename '{}' \; -and -exec '{}' \; -and -exec printf '\n' \;
find "${nvim_script_dir}/lsp" -type f -exec printf "\033[1;34mInstalling \033[1;32m" \; -and -exec basename '{}' \; -and -exec printf "\033[0m" \; -and -exec '{}' \; -and -exec printf '\n' \;
elif [ "$1" = '-dap' ]; then
printf "\033[1;33mInstalling dap servers...\033[0m\n"
find "${nvim_script_dir}/dap" -type f -exec printf "\033[1;34mInstalling \033[0m" \; -and -exec basename '{}' \; -and -exec '{}' \; -and -exec printf '\n' \;
find "${nvim_script_dir}/dap" -type f -exec printf "\033[1;34mInstalling \033[1;32m" \; -and -exec basename '{}' \; -and -exec printf "\033[0m" \; -and -exec '{}' \; -and -exec printf '\n' \;
elif [ "$1" = '-lint' ]; then
printf "\033[1;33mInstalling linters and formatters...\033[0m\n"
find "${nvim_script_dir}/lint" -type f -exec printf "\033[1;34mInstalling \033[0m" \; -and -exec basename '{}' \; -and -exec '{}' \; -and -exec printf '\n' \;
find "${nvim_script_dir}/lint" -type f -exec printf "\033[1;34mInstalling \033[1;32m" \; -and -exec basename '{}' \; -and -exec printf "\033[0m" \; -and -exec '{}' \; -and -exec printf '\n' \;
elif [ "$1" = '-all' ]; then
printf "\033[1;33mInstalling everything...\033[0m\n"
find "${nvim_script_dir}" -mindepth 2 -type f -exec printf "\033[1;34mInstalling \033[0m" \; -and -exec basename '{}' \; -and -exec '{}' \; -and -exec printf '\n' \;
find "${nvim_script_dir}" -mindepth 2 -type f -exec printf "\033[1;34mInstalling \033[1;32m" \; -and -exec basename '{}' \; -and -exec printf "\033[0m" \; -and -exec '{}' \; -and -exec printf '\n' \;
else
# Each server should have an unique name
server_path=$(find "${nvim_script_dir}" -mindepth 2 -type f -name "$1" | head -n 1)
@ -30,6 +30,6 @@ else
printf "Incorrect server name \033[1;31m%s\033[0m.\n" "$1"
exit 1
fi
printf "\033[1;34mInstalling \033[0m%s\n" "$1"
printf "\033[1;34mInstalling \033[1;32m%s\033[0m\n" "$1"
exec ${server_path}
fi

View file

@ -1,11 +1,6 @@
---
- name: Check theme name
fail:
msg: Theme needs to be 'nord' or 'onedark'
when: theme != 'nord' and theme != 'onedark'
- name: Generate color variables
template:
src: palette.j2
dest: '{{ ansible_env.PWD }}/palette.yml'
dest: /tmp/palette.yml
force: yes

View file

@ -1,6 +1,7 @@
---
{% if theme == 'nord' %}
# Colors for theming
violet: '#8c9cff'
{% if theme == 'nord' %}
background: '#2e3440'
foreground: '#d8dee9'
grey1: '#3b4252'
@ -38,7 +39,6 @@ color13: '#b48ead'
color14: '#8fbcbb'
color15: '#eceff4'
{% elif theme == 'onedark' %}
# Colors for theming
foreground: '#abb2bf'
background: '#282c34'
grey1: '#3e4452'
@ -52,6 +52,7 @@ cyan: '#56b6c2'
blue: '#61afef'
dark_blue: '#2257a0'
red: '#e06c75'
dark_red: '#be5046'
orange: '#d19a66'
yellow: '#e5c07b'
green: '#98c379'

View file

@ -0,0 +1,300 @@
[General]
ThemeName=Nord
PreferredStyles=Fusion
DefaultTextEditorColorScheme=nord.xml
[Palette]
shadowBackground=ff21252b
text=ffd8dee9
textDisabled=99d8dee9
textHighlighted=ffabb2bf
toolBarItem=ffd8dee9
toolBarItemDisabled=99d8dee9
fancyBarsNormalTextColor=ffd8dee9
fancyBarsBoldTextColor=ffd8dee9
hoverBackground=ff31363f
selectedBackground=ff3a3f4b
selectedBackgroundText=ffabb2bf
normalBackground=ff2e3440
alternateBackground=ff31363f
error=ffbf616a
warning=ffebcb8b
success=ffa3be8c
message=ff81a1c1
splitter=ff181a1f
textColorLink=81a1c1
textColorLinkVisited=b48ead
backgroundColorDisabled=ff21252b
[Colors]
;DS controls theme START
DScontrolBackground=normalBackground
DScontrolOutline=splitter
DStextColor=text
DSdisabledTextColor=textDisabled
DSpanelBackground=ff454444
DShoverHighlight=hoverBackground
DScolumnBackground=ff363636
DSfocusEdit=normalBackground
DSfocusDrag=ff565656
DScontrolBackgroundPressed=selectedBackground
DScontrolBackgroundChecked=selectedBackground
DSinteraction=selectedBackground
DSsliderActiveTrack=ff7a7a7a
DSsliderInactiveTrack=ff4d4d4d
DSsliderHandle=ff4c566a
DSsliderActiveTrackHover=ff7f7f7f
DSsliderInactiveTrackHover=ff505050
DSsliderHandleHover=ff7a7a7a
DSsliderActiveTrackFocus=ffaaaaaa
DSsliderInactiveTrackFocus=ff7a7a7a
DSsliderHandleFocus=ff1d545c
DSerrorColor=error
DScontrolBackgroundDisabled=backgroundColorDisabled
DScontrolOutlineDisabled=ff4d4d4d
DStextColorDisabled=textDisabled
DStextSelectionColor=selectedBackground
DStextSelectedTextColor=selectedBackgroundText
DSscrollBarTrack=ff4d4d4d
DSscrollBarHandle=ff4c566a
DScontrolBackgroundInteraction=ff4d4d4d
DStranslationIndicatorBorder=splitter
DSsectionHeadBackground=alternateBackground
DSchangedStateText=message
DS3DAxisXColor=error
DS3DAxisYColor=success
DS3DAxisZColor=message
;DS controls theme END
BackgroundColorAlternate=alternateBackground
BackgroundColorDark=shadowBackground
BackgroundColorHover=hoverBackground
BackgroundColorNormal=normalBackground
BackgroundColorDisabled=backgroundColorDisabled
BackgroundColorSelected=selectedBackground
BadgeLabelBackgroundColorChecked=text
BadgeLabelBackgroundColorUnchecked=text
BadgeLabelTextColorChecked=normalBackground
BadgeLabelTextColorUnchecked=normalBackground
CanceledSearchTextColor=error
ComboBoxArrowColor=toolBarItem
ComboBoxArrowColorDisabled=toolBarItemDisabled
ComboBoxTextColor=fancyBarsNormalTextColor
DetailsButtonBackgroundColorHover=hoverBackground
DetailsWidgetBackgroundColor=shadowBackground
DockWidgetResizeHandleColor=splitter
DoubleTabWidget1stSeparatorColor=splitter
DoubleTabWidget1stTabActiveTextColor=text
DoubleTabWidget1stTabBackgroundColor=normalBackground
DoubleTabWidget1stTabInactiveTextColor=text
DoubleTabWidget2ndSeparatorColor=toolBarItemDisabled
DoubleTabWidget2ndTabActiveTextColor=text
DoubleTabWidget2ndTabBackgroundColor=selectedBackground
DoubleTabWidget2ndTabInactiveTextColor=text
EditorPlaceholderColor=shadowBackground
FancyToolBarSeparatorColor=toolBarItemDisabled
FancyTabBarBackgroundColor=shadowBackground
FancyTabBarSelectedBackgroundColor=selectedBackground
FancyTabWidgetDisabledSelectedTextColor=toolBarItemDisabled
FancyTabWidgetDisabledUnselectedTextColor=toolBarItemDisabled
FancyTabWidgetEnabledSelectedTextColor=fancyBarsBoldTextColor
FancyTabWidgetEnabledUnselectedTextColor=fancyBarsBoldTextColor
FancyToolButtonHoverColor=hoverBackground
FancyToolButtonSelectedColor=selectedBackground
FutureProgressBackgroundColor=shadowBackground
IconsBaseColor=toolBarItem
IconsDisabledColor=toolBarItemDisabled
IconsInfoColor=message
IconsInfoToolBarColor=message
IconsWarningColor=warning
IconsWarningToolBarColor=warning
IconsErrorColor=error
IconsErrorToolBarColor=error
IconsRunColor=success
IconsRunToolBarColor=success
IconsStopColor=error
IconsStopToolBarColor=error
IconsInterruptColor=message
IconsInterruptToolBarColor=message
IconsDebugColor=toolBarItem
IconsNavigationArrowsColor=warning
IconsBuildHammerHandleColor=b06112
IconsBuildHammerHeadColor=toolBarItem
IconsModeWelcomeActiveColor=success
IconsModeEditActiveColor=message
IconsModeDesignActiveColor=warning
IconsModeDebugActiveColor=message
IconsModeProjectActiveColor=success
IconsModeAnalyzeActiveColor=message
IconsModeHelpActiveColor=warning
IconsCodeModelKeywordColor=ff777777
IconsCodeModelClassColor=ffc0b550
IconsCodeModelStructColor=ff53b053
IconsCodeModelFunctionColor=ffd34373
IconsCodeModelVariableColor=ff2bbbcc
IconsCodeModelEnumColor=ffc0b550
IconsCodeModelMacroColor=ff5e81ac
IconsCodeModelAttributeColor=ff316511
IconsCodeModelUniformColor=ff994899
IconsCodeModelVaryingColor=ffa08833
IconsCodeModelOverlayBackgroundColor=normalBackground
IconsCodeModelOverlayForegroundColor=text
InfoBarBackground=shadowBackground
InfoBarText=text
MenuBarEmptyAreaBackgroundColor=shadowBackground
MenuBarItemBackgroundColor=shadowBackground
MenuBarItemTextColorDisabled=textDisabled
MenuBarItemTextColorNormal=text
MenuItemTextColorDisabled=textDisabled
MenuItemTextColorNormal=text
MiniProjectTargetSelectorBackgroundColor=shadowBackground
MiniProjectTargetSelectorBorderColor=shadowBackground
MiniProjectTargetSelectorSummaryBackgroundColor=normalBackground
MiniProjectTargetSelectorTextColor=fancyBarsNormalTextColor
PanelStatusBarBackgroundColor=shadowBackground
PanelsWidgetSeparatorLineColor=splitter
PanelTextColorDark=text
PanelTextColorMid=text
PanelTextColorLight=textHighlighted
ProgressBarColorError=error
ProgressBarColorFinished=success
ProgressBarColorNormal=message
ProgressBarTitleColor=text
ProgressBarBackgroundColor=alternateBackground
SplitterColor=splitter
TextColorDisabled=textDisabled
TextColorError=error
TextColorHighlight=textHighlighted
TextColorHighlightBackground=hoverBackground
TextColorLink=textColorLink
TextColorLinkVisited=textColorLinkVisited
TextColorNormal=text
ToggleButtonBackgroundColor=shadowBackground
ToolBarBackgroundColor=shadowBackground
TreeViewArrowColorNormal=hoverBackground
TreeViewArrowColorSelected=text
OutputPanes_DebugTextColor=text
OutputPanes_ErrorMessageTextColor=error
OutputPanes_MessageOutput=message
OutputPanes_NormalMessageTextColor=text
OutputPanes_StdErrTextColor=error
OutputPanes_StdOutTextColor=text
OutputPanes_WarningMessageTextColor=warning
OutputPanes_TestPassTextColor=success
OutputPanes_TestFailTextColor=error
OutputPanes_TestXFailTextColor=error
OutputPanes_TestXPassTextColor=message
OutputPanes_TestSkipTextColor=message
OutputPanes_TestWarnTextColor=warning
OutputPanes_TestFatalTextColor=error
OutputPanes_TestDebugTextColor=text
OutputPaneButtonFlashColor=error
OutputPaneToggleButtonTextColorChecked=fancyBarsNormalTextColor
OutputPaneToggleButtonTextColorUnchecked=fancyBarsNormalTextColor
Debugger_LogWindow_LogInput=ff56b6c2
Debugger_LogWindow_LogStatus=message
Debugger_LogWindow_LogTime=error
Debugger_WatchItem_ValueNormal=text
Debugger_WatchItem_ValueInvalid=textDisabled
Debugger_WatchItem_ValueChanged=error
Debugger_Breakpoint_TextMarkColor=message
Welcome_TextColor=text
Welcome_ForegroundPrimaryColor=text
Welcome_ForegroundSecondaryColor=text
Welcome_BackgroundColor=normalBackground
Welcome_ButtonBackgroundColor=normalBackground
Welcome_DividerColor=splitter
Welcome_HoverColor=hoverBackground
Welcome_LinkColor=textColorLink
Welcome_DisabledLinkColor=textDisabled
Timeline_TextColor=text
Timeline_BackgroundColor1=normalBackground
Timeline_BackgroundColor2=shadowBackground
Timeline_DividerColor=splitter
Timeline_HighlightColor=selectedBackground
Timeline_PanelBackgroundColor=alternateBackground
Timeline_PanelHeaderColor=normalBackground
Timeline_HandleColor=ff4b5362
Timeline_RangeColor=selectedBackground
VcsBase_FileStatusUnknown_TextColor=text
VcsBase_FileAdded_TextColor=success
VcsBase_FileModified_TextColor=warning
VcsBase_FileDeleted_TextColor=error
VcsBase_FileRenamed_TextColor=message
VcsBase_FileUnmerged_TextColor=error
Bookmarks_TextMarkColor=message
TextEditor_SearchResult_ScrollBarColor=success
TextEditor_CurrentLine_ScrollBarColor=message
ProjectExplorer_TaskError_TextMarkColor=error
ProjectExplorer_TaskWarn_TextMarkColor=warning
CodeModel_Error_TextMarkColor=error
CodeModel_Warning_TextMarkColor=warning
QmlDesigner_BackgroundColor=normalBackground
QmlDesigner_HighlightColor=selectedBackground
QmlDesigner_FormEditorSelectionColor=message
QmlDesigner_FormEditorForegroundColor=normalBackground
QmlDesigner_BackgroundColorDarkAlternate=shadowBackground
QmlDesigner_BackgroundColorDarker=splitter
QmlDesigner_BorderColor=splitter
QmlDesigner_ButtonColor=normalBackground
QmlDesigner_TabDark=shadowBackground
QmlDesigner_TabLight=text
QmlDesigner_FormeditorBackgroundColor=normalBackground
QmlDesigner_AlternateBackgroundColor=alternateBackground
QmlDesigner_ScrollBarHandleColor=ff4c566a
PaletteWindow=shadowBackground
PaletteWindowText=text
PaletteBase=normalBackground
PaletteAlternateBase=alternateBackground
PaletteButton=shadowBackground
PaletteBrightText=error
PaletteText=text
PaletteButtonText=text
PaletteButtonTextDisabled=textDisabled
PaletteToolTipBase=hoverBackground
PaletteHighlight=selectedBackground
PaletteDark=shadowBackground
PaletteHighlightedText=selectedBackgroundText
PaletteToolTipText=text
PaletteLink=textColorLink
PaletteLinkVisited=textColorLinkVisited
PaletteWindowDisabled=backgroundColorDisabled
PaletteWindowTextDisabled=textDisabled
PaletteBaseDisabled=backgroundColorDisabled
PaletteTextDisabled=textDisabled
[Flags]
ComboBoxDrawTextShadow=false
DerivePaletteFromTheme=true
DrawIndicatorBranch=true
DrawSearchResultWidgetFrame=false
DrawTargetSelectorBottom=false
DrawToolBarHighlights=false
DrawToolBarBorders=false
ApplyThemePaletteGlobally=true
FlatToolBars=true
FlatSideBarIcons=true
FlatProjectsMode=true
FlatMenuBar=true
ToolBarIconShadow=true
WindowColorAsBase=true
DarkUserInterface=true
[Gradients]
DetailsWidgetHeaderGradient\1\color=normalBackground
DetailsWidgetHeaderGradient\1\pos=1
DetailsWidgetHeaderGradient\size=1

View file

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<style-scheme version="1.0" name="Nord">
<style name="Text" foreground="#d8dee9" background="#2e3440"/>
<style name="Link" underlineStyle="SingleUnderline"/>
<style name="Selection" background="#3b4252"/>
<style name="LineNumber" foreground="#4c566a" background="#2e3440" bold="true"/>
<style name="SearchResult" foreground="#eceff4" background="#ebcb8b"/>
<style name="SearchScope" background="#2e3440"/>
<style name="Parentheses" foreground="#bf616a" background="#2e3440" bold="true"/>
<style name="ParenthesesMismatch" foreground="#d8dee9" background="#bf616a" bold="true"/>
<style name="AutoComplete" background="#3b4252"/>
<style name="CurrentLine" background="#3b4252"/>
<style name="CurrentLineNumber" foreground="#d8dee9" bold="true"/>
<style name="Occurrences" background="#5e81ac"/>
<style name="Occurrences.Unused" foreground="#d08770" underlineStyle="DashUnderline"/>
<style name="Occurrences.Rename" background="#434c5e"/>
<style name="Number" foreground="#b48ead"/>
<style name="String" foreground="#a3be8c"/>
<style name="Type" foreground="#8fbcbb"/>
<style name="Local"/>
<style name="Global"/>
<style name="Field" foreground="#d8dee9"/>
<style name="Static" foreground="#88c0d0" italic="true"/>
<style name="VirtualMethod" foreground="#88c0d0" italic="true"/>
<style name="Function" foreground="#88c0d0"/>
<style name="Keyword" foreground="#81a1c1"/>
<style name="PrimitiveType" foreground="#81a1c1"/>
<style name="Operator" foreground="#81a1c1"/>
<style name="Overloaded Operator" foreground="#81a1c1"/>
<style name="Punctuation"/>
<style name="Preprocessor" foreground="#81a1c1"/>
<style name="Label" foreground="#bf616a" bold="true"/>
<style name="Comment" foreground="#4c566a" italic="true"/>
<style name="Doxygen.Comment" foreground="#4c566a" italic="true"/>
<style name="Doxygen.Tag" foreground="#8fbcbb" bold="true"/>
<style name="VisualWhitespace" foreground="#3b4252"/>
<style name="QmlLocalId" foreground="#88c0d0" italic="true"/>
<style name="QmlExternalId" foreground="#81a1c1" bold="true" italic="true"/>
<style name="QmlTypeId" foreground="#8fbcbb"/>
<style name="QmlRootObjectProperty" foreground="#81a1c1" italic="true"/>
<style name="QmlScopeObjectProperty" foreground="#81a1c1" italic="true"/>
<style name="QmlExternalObjectProperty" foreground="#88c0d0" italic="true"/>
<style name="JsScopeVar" foreground="#b48ead" italic="true"/>
<style name="JsImportVar" foreground="#88c0d0" italic="true"/>
<style name="JsGlobalVar" foreground="#81a1c1"/>
<style name="QmlStateName" foreground="#81a1c1" italic="true"/>
<style name="Binding" foreground="#d8dee9" underlineColor="#000000"/>
<style name="DisabledCode" foreground="#4c566a" background="#2e3440"/>
<style name="AddedLine" foreground="#a3be8c"/>
<style name="RemovedLine" foreground="#bf616a"/>
<style name="DiffFile" foreground="#81a1c1"/>
<style name="DiffLocation" foreground="#d08770"/>
<style name="DiffFileLine" foreground="#2e3440" background="#ebcb8b"/>
<style name="DiffContextLine" foreground="#2e3440" background="#88c0d0"/>
<style name="DiffSourceLine" foreground="#2e3440" background="#e06c75"/>
<style name="DiffSourceChar" foreground="#2e3440" background="#bf616a"/>
<style name="DiffDestLine" foreground="#2e3440" background="#8fbcbb"/>
<style name="DiffDestChar" foreground="#2e3440" background="#a3be8c"/>
<style name="LogChangeLine" foreground="#bf616a"/>
<style name="LogAuthorName" foreground="#81a1c1"/>
<style name="LogCommitDate" foreground="#a3be8c"/>
<style name="LogCommitHash" foreground="#bf616a"/>
<style name="LogCommitSubject"/>
<style name="LogDecoration" foreground="#b48ead"/>
<style name="Warning" underlineColor="#d08770" underlineStyle="SingleUnderline"/>
<style name="WarningContext" underlineColor="#d08770" underlineStyle="DotLine"/>
<style name="Error" underlineColor="#bf616a" underlineStyle="SingleUnderline"/>
<style name="ErrorContext" underlineColor="#bf616a" underlineStyle="DotLine"/>
<style name="Declaration"/>
<style name="FunctionDefinition"/>
<style name="OutputArgument" foreground="#2e3440" background="#d8dee9" italic="true"/>
<style name="LastStyleSentinel"/>
</style-scheme>

View file

@ -0,0 +1,300 @@
[General]
ThemeName=OneDark
PreferredStyles=Fusion
DefaultTextEditorColorScheme=onedark.xml
[Palette]
shadowBackground=ff21252b
text=ffabb2bf
textDisabled=99abb2bf
textHighlighted=ffd7dae0
toolBarItem=ffabb2bf
toolBarItemDisabled=99abb2bf
fancyBarsNormalTextColor=ffabb2bf
fancyBarsBoldTextColor=ffabb2bf
hoverBackground=ff31363f
selectedBackground=ff3a3f4b
selectedBackgroundText=ffd7dae0
normalBackground=ff282c34
alternateBackground=ff31363f
error=ffe06c75
warning=ffe5c07b
success=ff98c379
message=ff61afef
splitter=ff181a1f
textColorLink=61afef
textColorLinkVisited=c678dd
backgroundColorDisabled=ff21252b
[Colors]
;DS controls theme START
DScontrolBackground=normalBackground
DScontrolOutline=splitter
DStextColor=text
DSdisabledTextColor=textDisabled
DSpanelBackground=ff454444
DShoverHighlight=hoverBackground
DScolumnBackground=ff363636
DSfocusEdit=normalBackground
DSfocusDrag=ff565656
DScontrolBackgroundPressed=selectedBackground
DScontrolBackgroundChecked=selectedBackground
DSinteraction=selectedBackground
DSsliderActiveTrack=ff7a7a7a
DSsliderInactiveTrack=ff4d4d4d
DSsliderHandle=ff4b5362
DSsliderActiveTrackHover=ff7f7f7f
DSsliderInactiveTrackHover=ff505050
DSsliderHandleHover=ff7a7a7a
DSsliderActiveTrackFocus=ffaaaaaa
DSsliderInactiveTrackFocus=ff7a7a7a
DSsliderHandleFocus=ff1d545c
DSerrorColor=error
DScontrolBackgroundDisabled=backgroundColorDisabled
DScontrolOutlineDisabled=ff4d4d4d
DStextColorDisabled=textDisabled
DStextSelectionColor=selectedBackground
DStextSelectedTextColor=selectedBackgroundText
DSscrollBarTrack=ff4d4d4d
DSscrollBarHandle=ff4b5362
DScontrolBackgroundInteraction=ff4d4d4d
DStranslationIndicatorBorder=splitter
DSsectionHeadBackground=alternateBackground
DSchangedStateText=message
DS3DAxisXColor=error
DS3DAxisYColor=success
DS3DAxisZColor=message
;DS controls theme END
BackgroundColorAlternate=alternateBackground
BackgroundColorDark=shadowBackground
BackgroundColorHover=hoverBackground
BackgroundColorNormal=normalBackground
BackgroundColorDisabled=backgroundColorDisabled
BackgroundColorSelected=selectedBackground
BadgeLabelBackgroundColorChecked=text
BadgeLabelBackgroundColorUnchecked=text
BadgeLabelTextColorChecked=normalBackground
BadgeLabelTextColorUnchecked=normalBackground
CanceledSearchTextColor=error
ComboBoxArrowColor=toolBarItem
ComboBoxArrowColorDisabled=toolBarItemDisabled
ComboBoxTextColor=fancyBarsNormalTextColor
DetailsButtonBackgroundColorHover=hoverBackground
DetailsWidgetBackgroundColor=shadowBackground
DockWidgetResizeHandleColor=splitter
DoubleTabWidget1stSeparatorColor=splitter
DoubleTabWidget1stTabActiveTextColor=text
DoubleTabWidget1stTabBackgroundColor=normalBackground
DoubleTabWidget1stTabInactiveTextColor=text
DoubleTabWidget2ndSeparatorColor=toolBarItemDisabled
DoubleTabWidget2ndTabActiveTextColor=text
DoubleTabWidget2ndTabBackgroundColor=selectedBackground
DoubleTabWidget2ndTabInactiveTextColor=text
EditorPlaceholderColor=shadowBackground
FancyToolBarSeparatorColor=toolBarItemDisabled
FancyTabBarBackgroundColor=shadowBackground
FancyTabBarSelectedBackgroundColor=selectedBackground
FancyTabWidgetDisabledSelectedTextColor=toolBarItemDisabled
FancyTabWidgetDisabledUnselectedTextColor=toolBarItemDisabled
FancyTabWidgetEnabledSelectedTextColor=fancyBarsBoldTextColor
FancyTabWidgetEnabledUnselectedTextColor=fancyBarsBoldTextColor
FancyToolButtonHoverColor=hoverBackground
FancyToolButtonSelectedColor=selectedBackground
FutureProgressBackgroundColor=shadowBackground
IconsBaseColor=toolBarItem
IconsDisabledColor=toolBarItemDisabled
IconsInfoColor=message
IconsInfoToolBarColor=message
IconsWarningColor=warning
IconsWarningToolBarColor=warning
IconsErrorColor=error
IconsErrorToolBarColor=error
IconsRunColor=success
IconsRunToolBarColor=success
IconsStopColor=error
IconsStopToolBarColor=error
IconsInterruptColor=message
IconsInterruptToolBarColor=message
IconsDebugColor=toolBarItem
IconsNavigationArrowsColor=warning
IconsBuildHammerHandleColor=b06112
IconsBuildHammerHeadColor=toolBarItem
IconsModeWelcomeActiveColor=success
IconsModeEditActiveColor=message
IconsModeDesignActiveColor=warning
IconsModeDebugActiveColor=message
IconsModeProjectActiveColor=success
IconsModeAnalyzeActiveColor=message
IconsModeHelpActiveColor=warning
IconsCodeModelKeywordColor=ff777777
IconsCodeModelClassColor=ffc0b550
IconsCodeModelStructColor=ff53b053
IconsCodeModelFunctionColor=ffd34373
IconsCodeModelVariableColor=ff2bbbcc
IconsCodeModelEnumColor=ffc0b550
IconsCodeModelMacroColor=ff476ba0
IconsCodeModelAttributeColor=ff316511
IconsCodeModelUniformColor=ff994899
IconsCodeModelVaryingColor=ffa08833
IconsCodeModelOverlayBackgroundColor=normalBackground
IconsCodeModelOverlayForegroundColor=text
InfoBarBackground=shadowBackground
InfoBarText=text
MenuBarEmptyAreaBackgroundColor=shadowBackground
MenuBarItemBackgroundColor=shadowBackground
MenuBarItemTextColorDisabled=textDisabled
MenuBarItemTextColorNormal=text
MenuItemTextColorDisabled=textDisabled
MenuItemTextColorNormal=text
MiniProjectTargetSelectorBackgroundColor=shadowBackground
MiniProjectTargetSelectorBorderColor=shadowBackground
MiniProjectTargetSelectorSummaryBackgroundColor=normalBackground
MiniProjectTargetSelectorTextColor=fancyBarsNormalTextColor
PanelStatusBarBackgroundColor=shadowBackground
PanelsWidgetSeparatorLineColor=splitter
PanelTextColorDark=text
PanelTextColorMid=text
PanelTextColorLight=textHighlighted
ProgressBarColorError=error
ProgressBarColorFinished=success
ProgressBarColorNormal=message
ProgressBarTitleColor=text
ProgressBarBackgroundColor=alternateBackground
SplitterColor=splitter
TextColorDisabled=textDisabled
TextColorError=error
TextColorHighlight=textHighlighted
TextColorHighlightBackground=hoverBackground
TextColorLink=textColorLink
TextColorLinkVisited=textColorLinkVisited
TextColorNormal=text
ToggleButtonBackgroundColor=shadowBackground
ToolBarBackgroundColor=shadowBackground
TreeViewArrowColorNormal=hoverBackground
TreeViewArrowColorSelected=text
OutputPanes_DebugTextColor=text
OutputPanes_ErrorMessageTextColor=error
OutputPanes_MessageOutput=message
OutputPanes_NormalMessageTextColor=text
OutputPanes_StdErrTextColor=error
OutputPanes_StdOutTextColor=text
OutputPanes_WarningMessageTextColor=warning
OutputPanes_TestPassTextColor=success
OutputPanes_TestFailTextColor=error
OutputPanes_TestXFailTextColor=error
OutputPanes_TestXPassTextColor=message
OutputPanes_TestSkipTextColor=message
OutputPanes_TestWarnTextColor=warning
OutputPanes_TestFatalTextColor=error
OutputPanes_TestDebugTextColor=text
OutputPaneButtonFlashColor=error
OutputPaneToggleButtonTextColorChecked=fancyBarsNormalTextColor
OutputPaneToggleButtonTextColorUnchecked=fancyBarsNormalTextColor
Debugger_LogWindow_LogInput=ff56b6c2
Debugger_LogWindow_LogStatus=message
Debugger_LogWindow_LogTime=error
Debugger_WatchItem_ValueNormal=text
Debugger_WatchItem_ValueInvalid=textDisabled
Debugger_WatchItem_ValueChanged=error
Debugger_Breakpoint_TextMarkColor=message
Welcome_TextColor=text
Welcome_ForegroundPrimaryColor=text
Welcome_ForegroundSecondaryColor=text
Welcome_BackgroundColor=normalBackground
Welcome_ButtonBackgroundColor=normalBackground
Welcome_DividerColor=splitter
Welcome_HoverColor=hoverBackground
Welcome_LinkColor=textColorLink
Welcome_DisabledLinkColor=textDisabled
Timeline_TextColor=text
Timeline_BackgroundColor1=normalBackground
Timeline_BackgroundColor2=shadowBackground
Timeline_DividerColor=splitter
Timeline_HighlightColor=selectedBackground
Timeline_PanelBackgroundColor=alternateBackground
Timeline_PanelHeaderColor=normalBackground
Timeline_HandleColor=ff4b5362
Timeline_RangeColor=selectedBackground
VcsBase_FileStatusUnknown_TextColor=text
VcsBase_FileAdded_TextColor=success
VcsBase_FileModified_TextColor=warning
VcsBase_FileDeleted_TextColor=error
VcsBase_FileRenamed_TextColor=message
VcsBase_FileUnmerged_TextColor=error
Bookmarks_TextMarkColor=message
TextEditor_SearchResult_ScrollBarColor=success
TextEditor_CurrentLine_ScrollBarColor=message
ProjectExplorer_TaskError_TextMarkColor=error
ProjectExplorer_TaskWarn_TextMarkColor=warning
CodeModel_Error_TextMarkColor=error
CodeModel_Warning_TextMarkColor=warning
QmlDesigner_BackgroundColor=normalBackground
QmlDesigner_HighlightColor=selectedBackground
QmlDesigner_FormEditorSelectionColor=message
QmlDesigner_FormEditorForegroundColor=normalBackground
QmlDesigner_BackgroundColorDarkAlternate=shadowBackground
QmlDesigner_BackgroundColorDarker=splitter
QmlDesigner_BorderColor=splitter
QmlDesigner_ButtonColor=normalBackground
QmlDesigner_TabDark=shadowBackground
QmlDesigner_TabLight=text
QmlDesigner_FormeditorBackgroundColor=normalBackground
QmlDesigner_AlternateBackgroundColor=alternateBackground
QmlDesigner_ScrollBarHandleColor=ff4b5362
PaletteWindow=shadowBackground
PaletteWindowText=text
PaletteBase=normalBackground
PaletteAlternateBase=alternateBackground
PaletteButton=shadowBackground
PaletteBrightText=error
PaletteText=text
PaletteButtonText=text
PaletteButtonTextDisabled=textDisabled
PaletteToolTipBase=hoverBackground
PaletteHighlight=selectedBackground
PaletteDark=shadowBackground
PaletteHighlightedText=selectedBackgroundText
PaletteToolTipText=text
PaletteLink=textColorLink
PaletteLinkVisited=textColorLinkVisited
PaletteWindowDisabled=backgroundColorDisabled
PaletteWindowTextDisabled=textDisabled
PaletteBaseDisabled=backgroundColorDisabled
PaletteTextDisabled=textDisabled
[Flags]
ComboBoxDrawTextShadow=false
DerivePaletteFromTheme=true
DrawIndicatorBranch=true
DrawSearchResultWidgetFrame=false
DrawTargetSelectorBottom=false
DrawToolBarHighlights=false
DrawToolBarBorders=false
ApplyThemePaletteGlobally=true
FlatToolBars=true
FlatSideBarIcons=true
FlatProjectsMode=true
FlatMenuBar=true
ToolBarIconShadow=true
WindowColorAsBase=true
DarkUserInterface=true
[Gradients]
DetailsWidgetHeaderGradient\1\color=normalBackground
DetailsWidgetHeaderGradient\1\pos=1
DetailsWidgetHeaderGradient\size=1

View file

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<style-scheme version="1.0" name="OneDark">
<style name="Text" foreground="#abb2bf" background="#282c34"/>
<style name="Link" underlineStyle="SingleUnderline"/>
<style name="Selection" background="#3e4451"/>
<style name="LineNumber" foreground="#4b5363"/>
<style name="SearchResult" background="#324365"/>
<style name="SearchScope" background="#3e4451"/>
<style name="Parentheses" underlineColor="#61afef" underlineStyle="SingleUnderline"/>
<style name="ParenthesesMismatch" foreground="#000000" background="#c678dd"/>
<style name="AutoComplete" background="#3e4451"/>
<style name="CurrentLine" background="#3a3f4b"/>
<style name="CurrentLineNumber" foreground="#777c87"/>
<style name="Occurrences" background="#324365"/>
<style name="Occurrences.Unused" underlineColor="#d19a66" underlineStyle="DashUnderline"/>
<style name="Occurrences.Rename" background="#e06c75"/>
<style name="Number" foreground="#d19a66"/>
<style name="String" foreground="#98c379"/>
<style name="Type" foreground="#61afef"/>
<style name="Local"/>
<style name="Global"/>
<style name="Field" foreground="#e06c75"/>
<style name="Static" foreground="#61afef" italic="true"/>
<style name="VirtualMethod" foreground="#61afef" italic="true"/>
<style name="Function" foreground="#61afef"/>
<style name="Keyword" foreground="#c678dd"/>
<style name="PrimitiveType" foreground="#c678dd"/>
<style name="Operator" foreground="#c678dd"/>
<style name="Overloaded Operator" foreground="#c678dd"/>
<style name="Punctuation"/>
<style name="Preprocessor" foreground="#c678dd"/>
<style name="Label" foreground="#e06c75" bold="true"/>
<style name="Comment" foreground="#5c6370" italic="true"/>
<style name="Doxygen.Comment" foreground="#5c6370" italic="true"/>
<style name="Doxygen.Tag" foreground="#61afef"/>
<style name="VisualWhitespace" foreground="#3c4049"/>
<style name="QmlLocalId" foreground="#61afef"/>
<style name="QmlExternalId"/>
<style name="QmlTypeId" foreground="#61afef"/>
<style name="QmlRootObjectProperty" foreground="#61afef"/>
<style name="QmlScopeObjectProperty" foreground="#61afef"/>
<style name="QmlExternalObjectProperty"/>
<style name="JsScopeVar"/>
<style name="JsImportVar" foreground="#d19a66"/>
<style name="JsGlobalVar" foreground="#d19a66"/>
<style name="QmlStateName" foreground="#61afef"/>
<style name="Binding" foreground="#c678dd"/>
<style name="DisabledCode" foreground="#5c6370"/>
<style name="AddedLine" foreground="#98c379"/>
<style name="RemovedLine" foreground="#e06c75"/>
<style name="DiffFile" foreground="#61afef"/>
<style name="DiffLocation" foreground="#d19a66"/>
<style name="DiffFileLine" foreground="#000000" background="#e5c07b"/>
<style name="DiffContextLine" foreground="#000000" background="#56b6c2"/>
<style name="DiffSourceLine" foreground="#000000" background="#be5046"/>
<style name="DiffSourceChar" foreground="#000000" background="#e06c75"/>
<style name="DiffDestLine" foreground="#000000" background="#789353"/>
<style name="DiffDestChar" foreground="#000000" background="#98c379"/>
<style name="LogChangeLine" foreground="#e06c75"/>
<style name="LogAuthorName" foreground="#61afef"/>
<style name="LogCommitDate" foreground="#98c379"/>
<style name="LogCommitHash" foreground="#e06c75"/>
<style name="LogCommitSubject"/>
<style name="LogDecoration" foreground="#c678dd"/>
<style name="Warning" underlineColor="#d19a66" underlineStyle="SingleUnderline"/>
<style name="WarningContext" underlineColor="#d19a66" underlineStyle="DotLine"/>
<style name="Error" underlineColor="#e06c75" underlineStyle="SingleUnderline"/>
<style name="ErrorContext" underlineColor="#e06c75" underlineStyle="DotLine"/>
<style name="Declaration"/>
<style name="FunctionDefinition"/>
<style name="OutputArgument" italic="true"/>
<style name="LastStyleSentinel"/>
</style-scheme>

View file

@ -0,0 +1,26 @@
---
- name: Create config directories
file:
path: '~/.config/QtProject/qtcreator/{{ item }}'
state: directory
loop:
- styles
- themes
- name: Copy application themes
copy:
src: '{{ item }}'
dest: ~/.config/QtProject/qtcreator/themes
force: yes
loop:
- nord.creatortheme
- onedark.creatortheme
- name: Copy editor styles
copy:
src: '{{ item }}'
dest: ~/.config/QtProject/qtcreator/styles
force: yes
loop:
- nord.xml
- onedark.xml

View file

@ -0,0 +1,300 @@
# base16-qutebrowser (https://github.com/theova/base16-qutebrowser)
# Base16 qutebrowser template by theova
# Nord scheme by arcticicestudio
base00 = "#2E3440"
base01 = "#3B4252"
base02 = "#434C5E"
base03 = "#4C566A"
base04 = "#D8DEE9"
base05 = "#E5E9F0"
base06 = "#ECEFF4"
base07 = "#8FBCBB"
base08 = "#BF616A"
base09 = "#D08770"
base0A = "#EBCB8B"
base0B = "#A3BE8C"
base0C = "#88C0D0"
base0D = "#81A1C1"
base0E = "#B48EAD"
base0F = "#5E81AC"
# set qutebrowser colors
# Text color of the completion widget. May be a single color to use for
# all columns or a list of three colors, one for each column.
c.colors.completion.fg = base05
# Background color of the completion widget for odd rows.
c.colors.completion.odd.bg = base00
# Background color of the completion widget for even rows.
c.colors.completion.even.bg = base00
# Foreground color of completion widget category headers.
c.colors.completion.category.fg = base0A
# Background color of the completion widget category headers.
c.colors.completion.category.bg = base00
# Top border color of the completion widget category headers.
c.colors.completion.category.border.top = base00
# Bottom border color of the completion widget category headers.
c.colors.completion.category.border.bottom = base00
# Foreground color of the selected completion item.
c.colors.completion.item.selected.fg = base00
# Background color of the selected completion item.
c.colors.completion.item.selected.bg = base0A
# Top border color of the selected completion item.
c.colors.completion.item.selected.border.top = base02
# Bottom border color of the selected completion item.
c.colors.completion.item.selected.border.bottom = base02
# Foreground color of the matched text in the selected completion item.
c.colors.completion.item.selected.match.fg = base0B
# Foreground color of the matched text in the completion.
c.colors.completion.match.fg = base0B
# Color of the scrollbar handle in the completion view.
c.colors.completion.scrollbar.fg = base05
# Color of the scrollbar in the completion view.
c.colors.completion.scrollbar.bg = base00
# Background color of disabled items in the context menu.
c.colors.contextmenu.disabled.bg = base01
# Foreground color of disabled items in the context menu.
c.colors.contextmenu.disabled.fg = base04
# Background color of the context menu. If set to null, the Qt default is used.
c.colors.contextmenu.menu.bg = base00
# Foreground color of the context menu. If set to null, the Qt default is used.
c.colors.contextmenu.menu.fg = base05
# Background color of the context menus selected item. If set to null, the Qt default is used.
c.colors.contextmenu.selected.bg = base02
#Foreground color of the context menus selected item. If set to null, the Qt default is used.
c.colors.contextmenu.selected.fg = base05
# Background color for the download bar.
c.colors.downloads.bar.bg = base00
# Color gradient start for download text.
c.colors.downloads.start.fg = base00
# Color gradient start for download backgrounds.
c.colors.downloads.start.bg = base0D
# Color gradient end for download text.
c.colors.downloads.stop.fg = base00
# Color gradient stop for download backgrounds.
c.colors.downloads.stop.bg = base0C
# Foreground color for downloads with errors.
c.colors.downloads.error.fg = base08
# Font color for hints.
c.colors.hints.fg = base00
# Background color for hints. Note that you can use a `rgba(...)` value
# for transparency.
c.colors.hints.bg = base0A
# Font color for the matched part of hints.
c.colors.hints.match.fg = base05
# Text color for the keyhint widget.
c.colors.keyhint.fg = base05
# Highlight color for keys to complete the current keychain.
c.colors.keyhint.suffix.fg = base05
# Background color of the keyhint widget.
c.colors.keyhint.bg = base00
# Foreground color of an error message.
c.colors.messages.error.fg = base00
# Background color of an error message.
c.colors.messages.error.bg = base08
# Border color of an error message.
c.colors.messages.error.border = base08
# Foreground color of a warning message.
c.colors.messages.warning.fg = base00
# Background color of a warning message.
c.colors.messages.warning.bg = base0E
# Border color of a warning message.
c.colors.messages.warning.border = base0E
# Foreground color of an info message.
c.colors.messages.info.fg = base05
# Background color of an info message.
c.colors.messages.info.bg = base00
# Border color of an info message.
c.colors.messages.info.border = base00
# Foreground color for prompts.
c.colors.prompts.fg = base05
# Border used around UI elements in prompts.
c.colors.prompts.border = base00
# Background color for prompts.
c.colors.prompts.bg = base00
# Background color for the selected item in filename prompts.
c.colors.prompts.selected.bg = base02
# Foreground color for the selected item in filename prompts.
c.colors.prompts.selected.fg = base06
# Foreground color of the statusbar.
c.colors.statusbar.normal.fg = base0B
# Background color of the statusbar.
c.colors.statusbar.normal.bg = base00
# Foreground color of the statusbar in insert mode.
c.colors.statusbar.insert.fg = base00
# Background color of the statusbar in insert mode.
c.colors.statusbar.insert.bg = base0D
# Foreground color of the statusbar in passthrough mode.
c.colors.statusbar.passthrough.fg = base00
# Background color of the statusbar in passthrough mode.
c.colors.statusbar.passthrough.bg = base0C
# Foreground color of the statusbar in private browsing mode.
c.colors.statusbar.private.fg = base0E
# Background color of the statusbar in private browsing mode.
c.colors.statusbar.private.bg = base01
# Foreground color of the statusbar in command mode.
c.colors.statusbar.command.fg = base05
# Background color of the statusbar in command mode.
c.colors.statusbar.command.bg = base00
# Foreground color of the statusbar in private browsing + command mode.
c.colors.statusbar.command.private.fg = base05
# Background color of the statusbar in private browsing + command mode.
c.colors.statusbar.command.private.bg = base00
# Foreground color of the statusbar in caret mode.
c.colors.statusbar.caret.fg = base00
# Background color of the statusbar in caret mode.
c.colors.statusbar.caret.bg = base0E
# Foreground color of the statusbar in caret mode with a selection.
c.colors.statusbar.caret.selection.fg = base00
# Background color of the statusbar in caret mode with a selection.
c.colors.statusbar.caret.selection.bg = base0D
# Background color of the progress bar.
c.colors.statusbar.progress.bg = base0D
# Default foreground color of the URL in the statusbar.
c.colors.statusbar.url.fg = base05
# Foreground color of the URL in the statusbar on error.
c.colors.statusbar.url.error.fg = base08
# Foreground color of the URL in the statusbar for hovered links.
c.colors.statusbar.url.hover.fg = base05
# Foreground color of the URL in the statusbar on successful load
# (http).
c.colors.statusbar.url.success.http.fg = base0C
# Foreground color of the URL in the statusbar on successful load
# (https).
c.colors.statusbar.url.success.https.fg = base0B
# Foreground color of the URL in the statusbar when there's a warning.
c.colors.statusbar.url.warn.fg = base0E
# Background color of the tab bar.
c.colors.tabs.bar.bg = base00
# Color gradient start for the tab indicator.
c.colors.tabs.indicator.start = base0D
# Color gradient end for the tab indicator.
c.colors.tabs.indicator.stop = base0C
# Color for the tab indicator on errors.
c.colors.tabs.indicator.error = base08
# Foreground color of unselected odd tabs.
c.colors.tabs.odd.fg = base05
# Background color of unselected odd tabs.
c.colors.tabs.odd.bg = base01
# Foreground color of unselected even tabs.
c.colors.tabs.even.fg = base05
# Background color of unselected even tabs.
c.colors.tabs.even.bg = base00
# Background color of pinned unselected even tabs.
c.colors.tabs.pinned.even.bg = base0C
# Foreground color of pinned unselected even tabs.
c.colors.tabs.pinned.even.fg = base07
# Background color of pinned unselected odd tabs.
c.colors.tabs.pinned.odd.bg = base0B
# Foreground color of pinned unselected odd tabs.
c.colors.tabs.pinned.odd.fg = base07
# Background color of pinned selected even tabs.
c.colors.tabs.pinned.selected.even.bg = base02
# Foreground color of pinned selected even tabs.
c.colors.tabs.pinned.selected.even.fg = base05
# Background color of pinned selected odd tabs.
c.colors.tabs.pinned.selected.odd.bg = base02
# Foreground color of pinned selected odd tabs.
c.colors.tabs.pinned.selected.odd.fg = base05
# Foreground color of selected odd tabs.
c.colors.tabs.selected.odd.fg = base05
# Background color of selected odd tabs.
c.colors.tabs.selected.odd.bg = base02
# Foreground color of selected even tabs.
c.colors.tabs.selected.even.fg = base05
# Background color of selected even tabs.
c.colors.tabs.selected.even.bg = base02
# Background color for webpages if unset (or empty to use the theme's
# color).
# c.colors.webpage.bg = base00

View file

@ -0,0 +1,300 @@
# base16-qutebrowser (https://github.com/theova/base16-qutebrowser)
# Base16 qutebrowser template by theova
# OneDark scheme by Lalit Magant (http://github.com/tilal6991)
base00 = "#282c34"
base01 = "#353b45"
base02 = "#3e4451"
base03 = "#545862"
base04 = "#565c64"
base05 = "#abb2bf"
base06 = "#b6bdca"
base07 = "#c8ccd4"
base08 = "#e06c75"
base09 = "#d19a66"
base0A = "#e5c07b"
base0B = "#98c379"
base0C = "#56b6c2"
base0D = "#61afef"
base0E = "#c678dd"
base0F = "#be5046"
# set qutebrowser colors
# Text color of the completion widget. May be a single color to use for
# all columns or a list of three colors, one for each column.
c.colors.completion.fg = base05
# Background color of the completion widget for odd rows.
c.colors.completion.odd.bg = base00
# Background color of the completion widget for even rows.
c.colors.completion.even.bg = base00
# Foreground color of completion widget category headers.
c.colors.completion.category.fg = base0A
# Background color of the completion widget category headers.
c.colors.completion.category.bg = base00
# Top border color of the completion widget category headers.
c.colors.completion.category.border.top = base00
# Bottom border color of the completion widget category headers.
c.colors.completion.category.border.bottom = base00
# Foreground color of the selected completion item.
c.colors.completion.item.selected.fg = base00
# Background color of the selected completion item.
c.colors.completion.item.selected.bg = base0A
# Top border color of the selected completion item.
c.colors.completion.item.selected.border.top = base02
# Bottom border color of the selected completion item.
c.colors.completion.item.selected.border.bottom = base02
# Foreground color of the matched text in the selected completion item.
c.colors.completion.item.selected.match.fg = base0B
# Foreground color of the matched text in the completion.
c.colors.completion.match.fg = base0B
# Color of the scrollbar handle in the completion view.
c.colors.completion.scrollbar.fg = base05
# Color of the scrollbar in the completion view.
c.colors.completion.scrollbar.bg = base00
# Background color of disabled items in the context menu.
c.colors.contextmenu.disabled.bg = base01
# Foreground color of disabled items in the context menu.
c.colors.contextmenu.disabled.fg = base04
# Background color of the context menu. If set to null, the Qt default is used.
c.colors.contextmenu.menu.bg = base00
# Foreground color of the context menu. If set to null, the Qt default is used.
c.colors.contextmenu.menu.fg = base05
# Background color of the context menus selected item. If set to null, the Qt default is used.
c.colors.contextmenu.selected.bg = base02
#Foreground color of the context menus selected item. If set to null, the Qt default is used.
c.colors.contextmenu.selected.fg = base05
# Background color for the download bar.
c.colors.downloads.bar.bg = base00
# Color gradient start for download text.
c.colors.downloads.start.fg = base00
# Color gradient start for download backgrounds.
c.colors.downloads.start.bg = base0D
# Color gradient end for download text.
c.colors.downloads.stop.fg = base00
# Color gradient stop for download backgrounds.
c.colors.downloads.stop.bg = base0C
# Foreground color for downloads with errors.
c.colors.downloads.error.fg = base08
# Font color for hints.
c.colors.hints.fg = base00
# Background color for hints. Note that you can use a `rgba(...)` value
# for transparency.
c.colors.hints.bg = base0A
# Font color for the matched part of hints.
c.colors.hints.match.fg = base05
# Text color for the keyhint widget.
c.colors.keyhint.fg = base05
# Highlight color for keys to complete the current keychain.
c.colors.keyhint.suffix.fg = base05
# Background color of the keyhint widget.
c.colors.keyhint.bg = base00
# Foreground color of an error message.
c.colors.messages.error.fg = base00
# Background color of an error message.
c.colors.messages.error.bg = base08
# Border color of an error message.
c.colors.messages.error.border = base08
# Foreground color of a warning message.
c.colors.messages.warning.fg = base00
# Background color of a warning message.
c.colors.messages.warning.bg = base0E
# Border color of a warning message.
c.colors.messages.warning.border = base0E
# Foreground color of an info message.
c.colors.messages.info.fg = base05
# Background color of an info message.
c.colors.messages.info.bg = base00
# Border color of an info message.
c.colors.messages.info.border = base00
# Foreground color for prompts.
c.colors.prompts.fg = base05
# Border used around UI elements in prompts.
c.colors.prompts.border = base00
# Background color for prompts.
c.colors.prompts.bg = base00
# Background color for the selected item in filename prompts.
c.colors.prompts.selected.bg = base02
# Foreground color for the selected item in filename prompts.
c.colors.prompts.selected.fg = base06
# Foreground color of the statusbar.
c.colors.statusbar.normal.fg = base0B
# Background color of the statusbar.
c.colors.statusbar.normal.bg = base00
# Foreground color of the statusbar in insert mode.
c.colors.statusbar.insert.fg = base00
# Background color of the statusbar in insert mode.
c.colors.statusbar.insert.bg = base0D
# Foreground color of the statusbar in passthrough mode.
c.colors.statusbar.passthrough.fg = base00
# Background color of the statusbar in passthrough mode.
c.colors.statusbar.passthrough.bg = base0C
# Foreground color of the statusbar in private browsing mode.
c.colors.statusbar.private.fg = base0E
# Background color of the statusbar in private browsing mode.
c.colors.statusbar.private.bg = base01
# Foreground color of the statusbar in command mode.
c.colors.statusbar.command.fg = base05
# Background color of the statusbar in command mode.
c.colors.statusbar.command.bg = base00
# Foreground color of the statusbar in private browsing + command mode.
c.colors.statusbar.command.private.fg = base05
# Background color of the statusbar in private browsing + command mode.
c.colors.statusbar.command.private.bg = base00
# Foreground color of the statusbar in caret mode.
c.colors.statusbar.caret.fg = base00
# Background color of the statusbar in caret mode.
c.colors.statusbar.caret.bg = base0E
# Foreground color of the statusbar in caret mode with a selection.
c.colors.statusbar.caret.selection.fg = base00
# Background color of the statusbar in caret mode with a selection.
c.colors.statusbar.caret.selection.bg = base0D
# Background color of the progress bar.
c.colors.statusbar.progress.bg = base0D
# Default foreground color of the URL in the statusbar.
c.colors.statusbar.url.fg = base05
# Foreground color of the URL in the statusbar on error.
c.colors.statusbar.url.error.fg = base08
# Foreground color of the URL in the statusbar for hovered links.
c.colors.statusbar.url.hover.fg = base05
# Foreground color of the URL in the statusbar on successful load
# (http).
c.colors.statusbar.url.success.http.fg = base0C
# Foreground color of the URL in the statusbar on successful load
# (https).
c.colors.statusbar.url.success.https.fg = base0B
# Foreground color of the URL in the statusbar when there's a warning.
c.colors.statusbar.url.warn.fg = base0E
# Background color of the tab bar.
c.colors.tabs.bar.bg = base00
# Color gradient start for the tab indicator.
c.colors.tabs.indicator.start = base0D
# Color gradient end for the tab indicator.
c.colors.tabs.indicator.stop = base0C
# Color for the tab indicator on errors.
c.colors.tabs.indicator.error = base08
# Foreground color of unselected odd tabs.
c.colors.tabs.odd.fg = base05
# Background color of unselected odd tabs.
c.colors.tabs.odd.bg = base01
# Foreground color of unselected even tabs.
c.colors.tabs.even.fg = base05
# Background color of unselected even tabs.
c.colors.tabs.even.bg = base00
# Background color of pinned unselected even tabs.
c.colors.tabs.pinned.even.bg = base0C
# Foreground color of pinned unselected even tabs.
c.colors.tabs.pinned.even.fg = base07
# Background color of pinned unselected odd tabs.
c.colors.tabs.pinned.odd.bg = base0B
# Foreground color of pinned unselected odd tabs.
c.colors.tabs.pinned.odd.fg = base07
# Background color of pinned selected even tabs.
c.colors.tabs.pinned.selected.even.bg = base02
# Foreground color of pinned selected even tabs.
c.colors.tabs.pinned.selected.even.fg = base05
# Background color of pinned selected odd tabs.
c.colors.tabs.pinned.selected.odd.bg = base02
# Foreground color of pinned selected odd tabs.
c.colors.tabs.pinned.selected.odd.fg = base05
# Foreground color of selected odd tabs.
c.colors.tabs.selected.odd.fg = base05
# Background color of selected odd tabs.
c.colors.tabs.selected.odd.bg = base02
# Foreground color of selected even tabs.
c.colors.tabs.selected.even.fg = base05
# Background color of selected even tabs.
c.colors.tabs.selected.even.bg = base02
# Background color for webpages if unset (or empty to use the theme's
# color).
# c.colors.webpage.bg = base00

View file

@ -0,0 +1,20 @@
---
- name: Create config directory
file:
path: ~/.config/qutebrowser
state: directory
- name: Copy themes
copy:
src: '{{ item }}'
dest: ~/.config/qutebrowser
force: yes
loop:
- base16-nord.py
- base16-onedark.py
- name: Copy config
template:
src: config.j2
dest: ~/.config/qutebrowser/config.py
force: yes

View file

@ -0,0 +1,174 @@
# Uncomment this to still load settings configured via autoconfig.yml
config.load_autoconfig()
config.source('base16-{{ theme }}.py')
# Settings ─────────────────────────────────────────────────────────────
# Darkmode
# c.colors.webpage.darkmode.enabled = True
c.colors.webpage.preferred_color_scheme = 'dark'
# Confirm on quit
c.confirm_quit = ['downloads', 'multiple-tabs']
# No autoplay
c.content.autoplay = False
# Block canvas reading
c.content.canvas_reading = False
# Cookies
c.content.cookies.accept = 'no-3rdparty'
# c.content.cookies.store = False
# Screen sharing
c.content.desktop_capture = False
# Caching dns
c.content.dns_prefetch = False
# Geo location requests
c.content.geolocation = False
# Headers
c.content.headers.accept_language = 'en-US,en;q=0.5'
c.content.headers.custom = {"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"}
c.content.headers.do_not_track = True
c.content.headers.referer = 'same-domain'
# From current TorBrowser
c.content.headers.user_agent = '{{ user_agent }}'
# Additional adblocking
c.content.blocking.enabled = True
c.content.blocking.method = 'adblock'
c.content.blocking.adblock.lists = ["https://easylist.to/easylist/easylist.txt",
"https://easylist.to/easylist/easyprivacy.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/annoyances.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/privacy.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt",
"https://easylist-downloads.adblockplus.org/antiadblockfilters.txt",
"https://www.fanboy.co.nz/fanboy-problematic-sites.txt",
"https://www.fanboy.co.nz/enhancedstats.txt",
"https://www.fanboy.co.nz/fanboy-antifacebook.txt",
"https://www.fanboy.co.nz/fanboy-antifonts.txt",
"https://secure.fanboy.co.nz/fanboy-annoyance.txt",
"https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_2_English/filter.txt",
"https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_3_Spyware/filter.txt",
"https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_4_Social/filter.txt",
"https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_14_Annoyances/filter.txt",
"https://raw.githubusercontent.com/AdguardTeam/AdguardFilters/master/AnnoyancesFilter/sections/antiadblock.txt"]
# Hyperlink auditing
c.content.hyperlink_auditing = False
# JavaScript
c.content.javascript.alert = True
c.content.javascript.can_access_clipboard = False
c.content.javascript.can_close_tabs = False
c.content.javascript.can_open_tabs_automatically = False
c.content.javascript.enabled = False
# No recording
c.content.media.audio_capture = False
c.content.media.audio_video_capture = False
c.content.media.video_capture = False
# Mouse lock
c.content.mouse_lock = False
# No notification
c.content.notifications.enabled = False
# No request for persistent storage
c.content.persistent_storage = False
# Reduce animation
c.content.prefers_reduced_motion = True
# Incognito
c.content.private_browsing = True
# Don't allow to register protocol handlers
c.content.register_protocol_handler = False
# SSL
c.content.tls.certificate_errors = 'ask-block-thirdparty'
# Disable WebGL
c.content.webgl = False
# WebRTC
c.content.webrtc_ip_handling_policy = 'disable-non-proxied-udp'
# XSS auditing
c.content.xss_auditing = False
# Download location
c.downloads.location.directory = '$HOME/Downloads'
c.downloads.location.remember = False
# Fonts
c.fonts.completion.category = '{{ font_size }}pt {{ cjk_font }}'
c.fonts.completion.entry = '{{ font_size }}pt {{ cjk_font }}'
c.fonts.contextmenu = '{{ font_size }}pt {{ cjk_font }}'
c.fonts.default_family = ['{{ cjk_font }}', 'Iosevka', 'Noto Sans']
c.fonts.default_size = '{{ font_size }}pt'
c.fonts.prompts = 'default_size sans-serif'
c.fonts.statusbar = '{{ font_size }}pt {{ cjk_font }}'
c.fonts.tabs.selected = 'bold {{ font_size }}pt {{ cjk_font }}'
c.fonts.tabs.unselected = 'italic {{ font_size }}pt {{ cjk_font }}'
# Hints
c.hints.uppercase = True
# Scroll bar
c.scrolling.bar = 'overlay'
# Tabs
c.tabs.last_close = 'default-page'
c.tabs.new_position.related = 'next'
c.tabs.new_position.stacking = True
c.tabs.new_position.unrelated = 'prev'
c.tabs.show = 'multiple'
c.tabs.title.alignment = 'center'
c.tabs.title.format = '{audio}{index}: {current_title} [{scroll_pos}]'
# urls
c.url.start_pages = 'qute://help'
c.url.default_page = 'qute://help'
c.url.open_base_url = True
c.url.searchengines = {'DEFAULT': 'https://search.disroot.org/?category_general=on&q={}',
'!ddg': 'https://www.duckduckgo.com/?q={}',
'!searx0': 'https://search.disroot.org/?category_general=on&q={}',
'!searx1': 'https://searx.info/?category_general=on&q={}',
'!searx2': 'https://searx.fmac.xyz/?category_general=on&q={}',
'!searx3': 'https://searx.be/?category_general=on&q={}',
'!searx4': 'https://searx.monicz.pl/?category_general=on&q={}',
'!sp': 'https://startpage.com/do/search?query={}',
'!qwant': 'https://www.qwant.com/?q={}',
'!so': 'http://stackoverflow.com/search?q={}',
'!github': 'https://github.com/search?utf8=\u2713&q={}',
'!gitlab': 'https://gitlab.com/explore?utf8=\u2713&sort=latest_activity_desc&name={}',
'!mdn': 'https://developer.mozilla.org/en-US/search?q={}',
'!devhints': 'https://devhints.io/{}',
'!gentoo': 'https://wiki.gentoo.org/index.php?title=Special%3ASearch&profile=default&fulltext=Search&search={}',
'!arch': 'https://wiki.archlinux.org/index.php?search={}',
'!wiki': 'https://en.wikipedia.org/wiki/{}',
'!osm': 'https://www.openstreetmap.org/search?query={}',
'!gi': 'https://www.google.com/search?tbm=isch&q={}',
'!urban': 'https://www.urbandictionary.com/define.php?term={}',
'!thesaurus': 'https://www.thesaurus.com/browse/{}',
'!vocab': 'https://www.vocabulary.com/dictionary/{}',
'!twitter': 'https://twitter.com/search?q={}',
'!yt': 'https://www.youtube.com/results?search_query={}',
'!odysee': 'https://odysee.com/$/search?q={}',
'!archive': 'https://archive.org/search.php?query={}',
'!alto': 'https://alternativeto.net/browse/search?q={}'}
# Bindings ─────────────────────────────────────────────────────────────
config.bind(',m', 'hint links spawn mpv {hint-url}')
config.bind(',y', 'hint links spawn alacritty -e yt-dlp {hint-url}')
config.bind(',t', 'config-cycle tabs.show multiple never')
config.bind(',T', 'set-cmd-text -s :open -t')

View file

@ -0,0 +1,6 @@
--hidden
--glob
!git/*
--smart-case

View file

@ -0,0 +1,11 @@
---
- name: Create config directory
file:
path: ~/.config/ripgrep
state: directory
- name: Copy config
copy:
src: config
dest: ~/.config/ripgrep/config
force: yes

View file

@ -0,0 +1,11 @@
---
- name: Create config directory
file:
path: ~/.config/river
state: directory
- name: Copy init
template:
src: init.j2
dest: ~/.config/river/init
mode: 0755

View file

@ -0,0 +1,14 @@
# Output configuration ─────────────────────────────────────────────────────────
riverctl spawn 'wlr-randr --output eDP-1 --mode 1920x1080@60.000000Hz --pos -1920,0 --transform normal --scale 1.000000 --output HDMI-A-1 --mode 1920x1080@60.000000Hz --pos 0,0 --transform normal --scale 1.000000'
# Inputs ───────────────────────────────────────────────────────────────────────
riverctl input 2:7:SynPS/2_Synaptics_TouchPad events disabled-on-external-mouse
riverctl input 2:7:SynPS/2_Synaptics_TouchPad drag enabled
riverctl input 2:7:SynPS/2_Synaptics_TouchPad disable-while-typing enabled
riverctl input 2:7:SynPS/2_Synaptics_TouchPad natural-scroll enabled
riverctl input 2:7:SynPS/2_Synaptics_TouchPad tap enabled
riverctl input 2:7:SynPS/2_Synaptics_TouchPad tap-button-map left-right-middle
riverctl input 2:7:SynPS/2_Synaptics_TouchPad scroll-method two-finger

View file

@ -0,0 +1,232 @@
#!/bin/sh
export XKB_DEFAULT_LAYOUT="us,ru"
export XKB_DEFAULT_OPTIONS="grp:rctrl_rshift_toggle"
# Startup commands ─────────────────────────────────────────────────────────────
# Inform dbus about the environment
riverctl spawn 'dbus-update-activationn-environment DISPLAY WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP'
riverctl spawn '~/.local/libexec/wayland/launch_pipewire'
riverctl spawn '~/.local/libexec/wayland/launch_mpd'
riverctl spawn '~/.local/libexec/wayland/start_notify'
riverctl spawn '~/.local/libexec/wayland/launch_waybar'
riverctl spawn '~/.local/libexec/wayland/clipboard --start'
riverctl spawn '~/.local/libexec/wayland/wlwpp'
riverctl spawn '/usr/libexec/xdg-desktop-portal-wlr'
riverctl spawn '/usr/libexec/xdg-desktop-portal-gtk'
riverctl spawn 'swayidle -w before-sleep swaylock'
riverctl spawn 'mpDris2'
{% include 'by_host/' + ansible_hostname + '/init.j2' ignore missing %}
# Looks ────────────────────────────────────────────────────────────────────────
# Gtk theme
riverctl spawn 'gsettings set org.gnome.desktop.interface gtk-theme {{ gtk_theme }}'
riverctl spawn 'gsettings set org.gnome.desktop.interface icon-theme {{ icon_theme }}'
riverctl spawn 'gsettings set org.gnome.desktop.interface cursor-theme {{ cursor_theme }}'
riverctl spawn 'gsettings set org.gnome.desktop.interface cursor-size {{ cursor_size }}'
# Cursor theme
riverctl xcursor-theme {{ cursor_theme }} {{ cursor_size }}
# Borders
riverctl border-width 2
riverctl border-color-focused 0x{{ white2 | regex_replace('^#', '') }}
riverctl border-color-unfocused 0x{{ blue | regex_replace('^#', '') }}
riverctl border-color-urgent 0x{{ red | regex_replace('^#', '') }}
# Background (if no wallpaper is presented)
riverctl background-color 0x{{ background | regex_replace('^#', '') }}
# Bindings ─────────────────────────────────────────────────────────────────────
# Use the "logo" key as the primary modifier
mod="Mod4"
# Terminals
riverctl map normal $mod Return spawn alacritty
riverctl map normal $mod+Shift Return spawn foot
# Launcher
riverctl map normal $mod D spawn 'wofi --show=drun'
riverctl map normal $mod+Control D spawn 'wofi --show=run'
# Web search
riverctl map normal $mod+Mod1 S spawn '~/.local/libexec/wayland/searchmenu --wofi'
# Manga
riverctl map normal $mod+Mod1 M spawn '~/.local/libexec/wayland/mangamenu --wofi'
# Clipboard manager
riverctl map normal $mod+Mod1 D spawn '~/.local/libexec/wayland/clipboard --wofi'
riverctl map normal $mod+Mod1 C spawn '~/.local/libexec/wayland/clipboard --clear'
riverctl map normal $mod C spawn '~/.local/libexec/wayland/clipboard --wofi-clear'
# Dismiss notifications
riverctl map normal $mod+Mod1 N spawn '~/.local/libexec/wayland/dismiss_notify'
# Emacs
riverctl map normal $mod+Mod1 E spawn 'emacsclient -c -a emacs'
# Screenshot
riverctl map normal $mod Print spawn '~/.local/libexec/wayland/screenshot --full'
riverctl map normal None Print spawn '~/.local/libexec/wayland/screenshot --region'
riverctl map normal Mod1 Print spawn '~/.local/libexec/wayland/screenshot --region-optional'
riverctl map normal Control Print spawn '~/.local/libexec/wayland/screeshot --full-optional'
# Mod+Q to close the focused view
riverctl map normal $mod Q close
# Mod+Z to lock the screen
riverctl map normal $mod Z spawn swaylock
# Mod+Alt+Q to exit river
riverctl map normal $mod+Mod1 Q exit
# Mod+J and Mod+K to focus the next/previous view in the layout stack
riverctl map normal $mod J focus-view next
riverctl map normal $mod K focus-view previous
# Mod+Shift+J and Mod+Shift+K to swap the focused view with the next/previous
# view in the layout stack
riverctl map normal $mod+Shift J swap next
riverctl map normal $mod+Shift K swap previous
# Mod+Period and Mod+Comma to focus the next/previous output
riverctl map normal $mod Period focus-output next
riverctl map normal $mod Comma focus-output previous
# Mod+Shift+{Period,Comma} to send the focused view to the next/previous output
riverctl map normal $mod+Shift Period send-to-output next
riverctl map normal $mod+Shift Comma send-to-output previous
# Mod+E to bump the focused view to the top of the layout stack
riverctl map normal $mod E zoom
# Mod+H and Mod+L to decrease/increase the main_factor value of rivertile by 0.02
riverctl map normal $mod H send-layout-cmd rivertile 'main-ratio -0.02'
riverctl map normal $mod L send-layout-cmd rivertile 'main-ratio +0.02'
# Mod+Shift+H and Mod+Shift+L to increment/decrement the main_count value of rivertile
riverctl map normal $mod+Shift H send-layout-cmd rivertile 'main-count +1'
riverctl map normal $mod+Shift L send-layout-cmd rivertile 'main-count -1'
# Mod+Alt+{H,J,K,L} to move views
riverctl map normal $mod+Mod1 H move left 100
riverctl map normal $mod+Mod1 J move down 100
riverctl map normal $mod+Mod1 K move up 100
riverctl map normal $mod+Mod1 L move right 100
# Mod+Control+{H,J,K,L} to resize views
riverctl map normal $mod+Control H resize horizontal -100
riverctl map normal $mod+Control J resize vertical 100
riverctl map normal $mod+Control K resize vertical -100
riverctl map normal $mod+Control L resize horizontal 100
# Mod+Alt+Control+{H,J,K,L} to snap views to screen edges
riverctl map normal $mod+Mod1+Control H snap left
riverctl map normal $mod+Mod1+Control J snap down
riverctl map normal $mod+Mod1+Control K snap up
riverctl map normal $mod+Mod1+Control L snap right
# Mod + Left Mouse Button to move views
riverctl map-pointer normal $mod BTN_LEFT move-view
# Mod + Right Mouse Button to resize views
riverctl map-pointer normal $mod BTN_RIGHT resize-view
for i in $(seq 1 9)
do
tags=$((1 << (i - 1)))
# Mod+[1-9] to focus tag [0-8]
riverctl map normal $mod $i set-focused-tags $tags
# Mod+Shift+[1-9] to tag focused view with tag [0-8]
riverctl map normal $mod+Shift $i set-view-tags $tags
# Mod+Ctrl+[1-9] to toggle focus of tag [0-8]
riverctl map normal $mod+Control $i toggle-focused-tags $tags
# Mod+Shift+Ctrl+[1-9] to toggle tag [0-8] of focused view
riverctl map normal $mod+Shift+Control $i toggle-view-tags $tags
done
# Mod+0 to focus all tags
# Mod+Shift+0 to tag focused view with all tags
all_tags=$(((1 << 32) - 1))
riverctl map normal $mod 0 set-focused-tags $all_tags
riverctl map normal $mod+Shift 0 set-view-tags $all_tags
# Mod+Space to toggle float
riverctl map normal $mod Space toggle-float
# Mod+F to toggle fullscreen
riverctl map normal $mod F toggle-fullscreen
# Control+Alt+{H,J,K,L} to change layout orientation
riverctl map normal Mod1+Control H send-layout-cmd rivertile 'main-location left'
riverctl map normal Mod1+Control J send-layout-cmd rivertile 'main-location bottom'
riverctl map normal Mod1+Control K send-layout-cmd rivertile 'main-location top'
riverctl map normal Mod1+Control L send-layout-cmd rivertile 'main-location right'
# Declare a passthrough mode. This mode has only a single mapping to return to
# normal mode. This makes it useful for testing a nested wayland compositor
riverctl declare-mode passthrough
# Mod+F11 to enter passthrough mode
riverctl map normal $mod F11 enter-mode passthrough
# Mod+F11 to return to normal mode
riverctl map passthrough $mod F11 enter-mode normal
# Various media key mapping examples for both normal and locked mode which do
# not have a modifier
for mode in normal locked
do
# Eject the optical drive
riverctl map $mode None XF86Eject spawn 'eject -T'
# Control pulse audio volume
riverctl map $mode None XF86AudioRaiseVolume spawn '~/.local/libexec/wayland/volumecontrol increase'
riverctl map $mode None XF86AudioLowerVolume spawn '~/.local/libexec/wayland/volumecontrol decrease'
riverctl map $mode None XF86AudioMute spawn '~/.local/libexec/wayland/volumecontrol toggle'
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
# Control screen backlight brightness
riverctl map $mode None XF86MonBrightnessUp spawn '~/.local/libexec/wayland/brightness up'
riverctl map $mode None XF86MonBrightnessDown spawn '~/.local/libexec/wayland/brightness down'
done
# Rules ────────────────────────────────────────────────────────────────────────
# Set repeat rate
riverctl set-repeat 50 300
# Cursor
riverctl focus-follows-cursor normal
riverctl set-cursor-warp on-output-change
# New window position
riverctl attach-mode bottom
# Set app-ids of views which should float
riverctl float-filter-add app-id 'float'
riverctl float-filter-add app-id 'popup'
riverctl float-filter-add app-id 'swappy'
riverctl float-filter-add app-id 'info.febvre.Komikku'
# Set app-ids of views which should use client side decorations
riverctl csd-filter-add app-id 'swappy'
# Default layout
riverctl default-layout rivertile
exec rivertile -view-padding 4 -outer-padding 4 -main-location left -main-count 1 -main-ratio 0.54

View file

@ -7,7 +7,7 @@ underline=$(tput smul)
esc=$(tput sgr0)
if [ -z "$1" ]; then
fzf --no-multi < /usr/share/dict/american-english | xargs -t -r dict
fzf --prompt "Find word: " --no-multi < /usr/share/dict/american-english | xargs -t -r dict
else
curl -s "dict://dict.org/d:$1" | sed -n -e '/^151.*/,/^\./p' | sed -e 's/^151.*//g' -e '/^\./D' -e '/^\s*1\./i\\' -e "s/{\([^{]*\)}/${esc}${bold}${underline}\1${esc}/g" -e "s/^\($1\)\(\W\)/${esc}${bold}${red}\1${esc}\2/gI" -e "s/^\(\s*\)\([0-9]\.\)/\1${esc}${bold}${cyan}\2${esc}/g" -e 's/--/—/g' -e 's/—\(\w\)/— \1/g'
fi

View file

@ -1,11 +1,11 @@
#!/bin/sh
if [ "$1" = "-a" ]; then
apk list -a | awk -F' ' '{print $1}' | sed 's/-[^-]*-r[0-9]*//g' | sort | fzf --multi --preview 'apk info -a {}'
apk list -a | awk -F' ' '{print $1}' | sed 's/-[^-]*-r[0-9]*//g' | sort | fzf --multi --prompt "Packages: " --preview 'apk info -a {}'
elif [ "$1" = "-i" ]; then
apk list -I | awk -F' ' '{print $1}' | sed 's/-[^-]*-r[0-9]*//g' | sort | fzf --multi --preview 'apk info -a {}'
apk list -I | awk -F' ' '{print $1}' | sed 's/-[^-]*-r[0-9]*//g' | sort | fzf --multi --prompt "Packages: " --preview 'apk info -a {}'
elif [ "$1" = "-m" ]; then
fzf --multi --preview 'apk info -a {}' < /etc/apk/world
fzf --multi --prompt "Packages: " --preview 'apk info -a {}' < /etc/apk/world
else
echo "Usage:
-a: list all packages

View file

@ -1,6 +1,6 @@
#!/bin/sh
# In case of using seatd (need the user to be in _seatd group)
# In case of using seatd (need the user to be in 'seat' group)
if [ -z "${XDG_RUNTIME_DIR}" ]
then
userid=$(id -u ${USER})
@ -22,5 +22,5 @@ export MOZ_ENABLE_WAYLAND=1
#export SDL_VIDEODRIVER=wayland
export XDG_CURRENT_DESKTOP="$1"
# $HOME/.config/emacs-config/doom/bin/doom env
exec dbus-run-session "$@" > "${XDG_RUNTIME_DIR}/$1-$(date "+%Y-%m-%d").log" 2>&1
# $HOME/.config/emacs/bin/doom env
exec dbus-run-session "$@" > "${XDG_RUNTIME_DIR}/$1-$(date "+%Y-%m-%d").log" 2>&1 && exit

View file

@ -1,14 +0,0 @@
#!/bin/sh
mute=$(pulsemixer --get-mute)
if [ "$mute" -eq 1 ] || [ "$mute" = "true" ]
then
echo "婢 muted"
else
volume=$(pulsemixer --get-volume)
left=$(echo "$volume" | cut -d' ' -f1)
right=$(echo "$volume" | cut -d' ' -f2)
average=$(((left+right)/2))
echo "墳 $average%"
fi

View file

@ -0,0 +1,10 @@
#!/bin/sh
# Terminate already running mpd instance
mpd --kill
# Wait until the processes have been shut down
while pgrep -x mpd >/dev/null; do sleep 1; done
# Relaunch
exec mpd --no-daemon

View file

@ -0,0 +1,11 @@
#!/bin/sh
# Terminate already running pipewire session
# We can launch pipewire-pulse and wireplumber in the config, so don't need to kill here
pkill -9 pipewire
# Wait until it is fully killed
while pgrep -x pipewire >/dev/null; do sleep 1; done
# Launch again
exec pipewire

View file

@ -0,0 +1,10 @@
#!/bin/sh
# Terminate already running bar instances
pkill -9 waybar
# Wait until the processes have been shut down
while pgrep -x waybar >/dev/null; do sleep 1; done
# Launch main
exec waybar

View file

@ -1,9 +1,10 @@
#!/bin/sh
mangadir="$HOME/Pictures/gallery-dl/Manga"
case $1 in
--fzf)
menu1="fzf -e --no-multi"
menu2="${menu1}"
menu1="fzf -e --no-multi --prompt 'Manga: '"
menu2="fzf -e --no-multi --prompt 'Chapter: '"
;;
--wofi)
menu1="wofi -d -p Manga"
@ -14,14 +15,14 @@ case $1 in
;;
esac
manga=$(find ~/gallery-dl/Manga -type f -exec basename '{}' \; | ${menu1})
manga=$(find "${mangadir}" -type f -exec basename '{}' \; | ${menu1})
if [ -n "$manga" ]
then
chapter=$(find ~/gallery-dl/Manga/"${manga}" -type f -exec basename '{}' \; | ${menu2})
if [ -n "$chapter" ]
chapter=$(find "${mangadir}/${manga}" -type f -exec basename '{}' \; | ${menu2})
if [ -n "${chapter}" ]
then
zathura ~/gallery-dl/Manga/"${manga}"/"${chapter}" &
zathura "${mangadir}/${manga}"/"${chapter}" &
else
mangamenu "$1"
fi

0
roles/scripts/templates/brightness.j2 Executable file → Normal file
View file

27
roles/scripts/templates/clipboard.j2 Executable file → Normal file
View file

@ -1,15 +1,20 @@
#!/bin/sh
case $1 in
--wofi)
clipman pick --tool wofi -T'-p "Clipboard " -i -O default'
;;
--fzf)
clipman pick --tool fzf -T'--no-multi -e'
;;
--clear)
clipman clear --all && notify-send -i "$HOME/.config/{{ notification }}/clipboard.png" "Clipboard cleared"
;;
*)
;;
{% if clipboard == 'clipman' %}
--wofi) clipman pick --tool wofi -T'-p "Clipboard " -i -O default' ;;
--fzf) clipman pick --tool fzf -T'--prompt "Clipboard " --no-multi -e' ;;
--wofi-clear) clipman clear --tool wofi -T'-p "Clear clipboard " -i -O default' ;;
--fzf-clear) clipman clear --tool fzf -T'--prompt "Clear clipboard " -e' ;;
--start) wl-paste -t text --watch clipman store --no-persist ;;
--clear) clipman clear --all && notify-send -i "$HOME/.config/{{ notification }}/clipboard.png" "Clipboard cleared" ;;
{% elif clipboard == 'cliphist' %}
--wofi) cliphist list | wofi -p "Clipboard " -i -O default | cliphist decode | wl-copy ;;
--fzf) cliphist list | fzf --prompt "Clipboard " --no-multi -e | cliphist decode | wl-copy ;;
--wofi-clear) cliphist list | wofi -p "Clear clipboard " -i -O default | cliphist delete ;;
--fzf-clear) cliphist list | fzf --prompt "Clear clipboard " -e | cliphist delete ;;
--start) wl-paste --watch cliphist store ;;
--clear) rm -f "$XDG_CACHE_HOME/cliphist/db" && notify-send -i "$HOME/.config/{{ notification }}/clipboard.png" "Clipboard cleared" ;;
{% endif %}
*) ;;
esac

0
roles/scripts/templates/dismiss_notify.j2 Executable file → Normal file
View file

0
roles/scripts/templates/screenshot.j2 Executable file → Normal file
View file

View file

@ -0,0 +1,7 @@
#!/bin/sh
{% if notification == 'dunst' %}
exec dunst -config ~/.config/dunst/dunstrc
{% elif notification == 'mako' %}
exec mako -c ~/.config/mako/config
{% endif %}

0
roles/scripts/templates/touchpad.j2 Executable file → Normal file
View file

0
roles/scripts/templates/volumecontrol.j2 Executable file → Normal file
View file

View file

@ -0,0 +1,18 @@
skip_welcome_message = true
startup = [
"zoxide init nushell --hook prompt | save ~/.local/share/nu/zoxide.nu",
"source ~/.local/share/nu/zoxide.nu",
"starship init nu | save ~/.local/share/nu/starship.nu",
"source ~/.local/share/nu/starship.nu"
]
prompt = "starship_prompt"
[line_editor]
completion_type = "list"
edit_mode = "vi"
[textview]
pager = "less -R"
paging_mode = "quitifonescreen"
true_color = true
theme = "base16"

View file

@ -10,9 +10,9 @@ alias mkdir='mkdir -pv'
# alias lt='exa --tree'
abbr tmux 'TERM=screen-256color command tmux'
# vim
# neovim
abbr v nvim
abbr vi 'fzf | xargs -r nvim -o'
abbr vi 'fzf --prompt "Edit files: " | xargs nvim'
# emacs
alias doom='$HOME/.config/emacs/bin/doom'

View file

@ -0,0 +1,5 @@
if not pgrep -u "$USER" gpg-agent >/dev/null
gpg-agent --daemon >/dev/null
end
gpg-connect-agent updatestartuptty /bye >/dev/null

Some files were not shown because too many files have changed in this diff Show more