Compare commits

..

1 Commits

Author SHA1 Message Date
Henrik Bakken 8512162cd0 endos.py 2025-10-27 15:42:47 +01:00
154 changed files with 5067 additions and 4030 deletions
+1 -3
View File
@@ -1,5 +1,3 @@
.gitsecret/keys/random_seed .gitsecret/keys/random_seed
!*.secret !*.secret
CONFIG/homeassistant/SERVICE_ACCOUNT.JSON homeassistant/SERVICE_ACCOUNT.JSON
CONFIG/vdirsyncer/config
CONFIG/rclone/rclone.conf
+1 -3
View File
@@ -1,3 +1 @@
CONFIG/homeassistant/SERVICE_ACCOUNT.JSON:5a3eabcbc53278f7713423b0ea20d0558f6334f8a1f6aed2a2e4cfb2ca9c93ab homeassistant/SERVICE_ACCOUNT.JSON:5a3eabcbc53278f7713423b0ea20d0558f6334f8a1f6aed2a2e4cfb2ca9c93ab
CONFIG/vdirsyncer/config:73434db7346e1d070c38c8099c0c8ec99925f4d89ba3e558875fa2a179f41a25
CONFIG/rclone/rclone.conf:85e963d7e0487bf4c10c63a135cc958259eb4156276661276fccb4d9595e79bd
-284
View File
@@ -1,284 +0,0 @@
## where to store your database, default is your system data directory
## linux/mac: ~/.local/share/atuin/history.db
## windows: %USERPROFILE%/.local/share/atuin/history.db
# db_path = "~/.history.db"
## where to store your encryption key, default is your system data directory
## linux/mac: ~/.local/share/atuin/key
## windows: %USERPROFILE%/.local/share/atuin/key
# key_path = "~/.key"
## where to store your auth session token, default is your system data directory
## linux/mac: ~/.local/share/atuin/session
## windows: %USERPROFILE%/.local/share/atuin/session
# session_path = "~/.session"
## date format used, either "us" or "uk"
# dialect = "us"
## default timezone to use when displaying time
## either "l", "local" to use the system's current local timezone, or an offset
## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
# timezone = "local"
## enable or disable automatic sync
# auto_sync = true
## enable or disable automatic update checks
update_check = false
## address of the sync server
# sync_address = "https://api.atuin.sh"
## how often to sync history. note that this is only triggered when a command
## is ran, so sync intervals may well be longer
## set it to 0 to sync after every command
# sync_frequency = "10m"
## which search mode to use
## possible values: prefix, fulltext, fuzzy, skim
search_mode = "fulltext"
## which filter mode to use by default
## possible values: "global", "host", "session", "directory", "workspace"
## consider using search.filters to customize the enablement and order of filter modes
# filter_mode = "global"
## With workspace filtering enabled, Atuin will filter for commands executed
## in any directory within a git repository tree (default: false).
##
## To use workspace mode by default when available, set this to true and
## set filter_mode to "workspace" or leave it unspecified and
## set search.filters to include "workspace" before other filter modes.
# workspaces = false
## which filter mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "filter_mode"
## leave unspecified to use same mode set in "filter_mode"
filter_mode_shell_up_key_binding = "session"
## which search mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "search_mode"
## leave unspecified to use same mode set in "search_mode"
# search_mode_shell_up_key_binding = "fuzzy"
## which style to use
## possible values: auto, full, compact
# style = "auto"
## the maximum number of lines the interface should take up
## set it to 0 to always go full screen
inline_height = 20
## the maximum number of lines the interface should take up
## when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "inline_height"
inline_height_shell_up_key_binding = 5
## Invert the UI - put the search bar at the top , Default to `false`
# invert = false
## enable or disable showing a preview of the selected command
## useful when the command is longer than the terminal width and is cut off
# show_preview = true
## what to do when the escape key is pressed when searching
## possible values: return-original, return-query
exit_mode = "return-query"
## possible values: emacs, subl
# word_jump_mode = "emacs"
## characters that count as a part of a word
# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
## number of context lines to show when scrolling by pages
# scroll_context_lines = 1
## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
## alt-0 .. alt-9
ctrl_n_shortcuts = true
## default history list format - can also be specified with the --format arg
# history_format = "{time}\t{command}\t{duration}"
## prevent commands matching any of these regexes from being written to history.
## Note that these regular expressions are unanchored, i.e. if they don't start
## with ^ or end with $, they'll match anywhere in the command.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
history_filter = [
"^exit$",
"^ .*",
"_secret="
]
## prevent commands run with cwd matching any of these regexes from being written
## to history. Note that these regular expressions are unanchored, i.e. if they don't
## start with ^ or end with $, they'll match anywhere in CWD.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# cwd_filter = [
# "^/very/secret/area",
# ]
## Configure the maximum height of the preview to show.
## Useful when you have long scripts in your history that you want to distinguish
## by more than the first few lines.
max_preview_height = 20
## Configure whether or not to show the help row, which includes the current Atuin
## version (and whether an update is available), a keymap hint, and the total
## amount of commands in your history.
# show_help = true
## Configure whether or not to show tabs for search and inspect
# show_tabs = true
## Configure whether or not the tabs row may be auto-hidden, which includes the current Atuin
## tab, such as Search or Inspector, and other tabs you may wish to see. This will
## only be hidden if there are fewer than this count of lines available, and does not affect the use
## of keyboard shortcuts to switch tab. 0 to never auto-hide, default is 8 (lines).
## This is ignored except in `compact` mode.
# auto_hide_height = 8
## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
## 1. AWS key id
## 2. Github pat (old and new)
## 3. Slack oauth tokens (bot, user)
## 4. Slack webhooks
## 5. Stripe live/test keys
# secrets_filter = true
## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
# enter_accept = true
## Defaults to false. If enabled, when triggered after && or ||, Atuin will complete commands to chain rather than replace the current line.
# command_chaining = false
## Defaults to "emacs". This specifies the keymap on the startup of `atuin
## search`. If this is set to "auto", the startup keymap mode in the Atuin
## search is automatically selected based on the shell's keymap where the
## keybinding is defined. If this is set to "emacs", "vim-insert", or
## "vim-normal", the startup keymap mode in the Atuin search is forced to be
## the specified one.
keymap_mode = "auto"
## Cursor style in each keymap mode. If specified, the cursor style is changed
## in entering the cursor shape. Available values are "default" and
## "{blink,steady}-{block,underline,bar}".
# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
# network_connect_timeout = 5
# network_timeout = 5
## Timeout (in seconds) for acquiring a local database connection (sqlite)
# local_timeout = 5
## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc.
## Alternatively, set env NO_MOTION=true
# prefers_reduced_motion = false
[stats]
## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
# common_subcommands = [
# "apt",
# "cargo",
# "composer",
# "dnf",
# "docker",
# "git",
# "go",
# "ip",
# "jj",
# "kubectl",
# "nix",
# "nmcli",
# "npm",
# "pecl",
# "pnpm",
# "podman",
# "port",
# "systemctl",
# "tmux",
# "yarn",
# ]
## Set commands that should be totally stripped and ignored from stats
# common_prefix = ["sudo"]
## Set commands that will be completely ignored from stats
# ignored_commands = [
# "cd",
# "ls",
# "vi"
# ]
[keys]
# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
# scroll_exits = true
# Defaults to true. The left arrow key will exit the TUI when scrolling before the first character
# exit_past_line_start = true
# Defaults to true. The right arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified.
# accept_past_line_end = true
[sync]
# Enable sync v2 by default
# This ensures that sync v2 is enabled for new installs only
# In a later release it will become the default across the board
records = true
[preview]
## which preview strategy to use to calculate the preview height (respects max_preview_height).
## possible values: auto, static
## auto: length of the selected command.
## static: length of the longest command stored in the history.
## fixed: use max_preview_height as fixed height.
# strategy = "auto"
[daemon]
## Enables using the daemon to sync. Requires the daemon to be running in the background. Start it with `atuin daemon`
# enabled = false
## How often the daemon should sync in seconds
# sync_frequency = 300
## The path to the unix socket used by the daemon (on unix systems)
## linux/mac: ~/.local/share/atuin/atuin.sock
## windows: Not Supported
# socket_path = "~/.local/share/atuin/atuin.sock"
## Use systemd socket activation rather than opening the given path (the path must still be correct for the client)
## linux: false
## mac/windows: Not Supported
# systemd_socket = false
## The port that should be used for TCP on non unix systems
# tcp_port = 8889
# [theme]
## Color theme to use for rendering in the terminal.
## There are some built-in themes, including the base theme ("default"),
## "autumn" and "marine". You can add your own themes to the "./themes" subdirectory of your
## Atuin config (or ATUIN_THEME_DIR, if provided) as TOML files whose keys should be one or
## more of AlertInfo, AlertWarn, AlertError, Annotation, Base, Guidance, Important, and
## the string values as lowercase entries from this list:
## https://ogeon.github.io/docs/palette/master/palette/named/index.html
## If you provide a custom theme file, it should be called "NAME.toml" and the theme below
## should be the stem, i.e. `theme = "NAME"` for your chosen NAME.
# name = "autumn"
## Whether the theme manager should output normal or extra information to help fix themes.
## Boolean, true or false. If unset, left up to the theme manager.
# debug = true
[search]
## The list of enabled filter modes, in order of priority.
## The "workspace" mode is skipped when not in a workspace or workspaces = false.
## Default filter mode can be overridden with the filter_mode setting.
# filters = [ "global", "host", "session", "workspace", "directory" ]
[ui]
columns = ["datetime", "duration", "host", "command"]
-272
View File
@@ -1,272 +0,0 @@
#? Config file for btop v.1.4.6
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "Default"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = true
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = true
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = false
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use whitespace " " as separator between different presets.
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = false
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = true
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
terminal_sync = true
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
#* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default"
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
graph_symbol_gpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
shown_boxes = "cpu mem net proc gpu0"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy"
#* Reverse sorting order, True or False.
proc_reversed = false
#* Show processes as a tree.
proc_tree = false
#* Use the cpu graph colors in the process list.
proc_colors = true
#* Use a darkening gradient in the process list.
proc_gradient = true
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = false
#* Show process memory as bytes instead of percent.
proc_mem_bytes = true
#* Show cpu graph for each process.
proc_cpu_graphs = true
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = false
#* Show proc box on left side of screen instead of right.
proc_left = false
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = false
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = false
#* Should cpu and memory usage display be preserved for dead processes when paused.
keep_dead_proc_usage = false
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "Auto"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "Auto"
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = true
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = false
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = false
#* Shows the system uptime in the CPU box.
show_uptime = true
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
show_cpu_watts = true
#* Show cpu temperature.
check_temp = true
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = true
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = false
#* Show CPU frequency.
show_cpu_freq = true
#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
freq_mode = "first"
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = true
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = true
#* Show mem box below net box instead of above.
mem_below_net = false
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = true
#* If swap memory should be shown in memory box.
show_swap = true
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = true
#* If mem box should be split to also show disks info.
show_disks = false
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = true
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = true
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = false
#* Set to true to show available disk space for privileged users.
disk_free_priv = false
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = true
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = false
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = false
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = true
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = true
#* Starts with the Network Interface specified here.
net_iface = ""
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present.
show_battery = true
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Show power stats of battery next to charge indicator.
show_battery_watts = true
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"
#* Automatically save current settings to config file on exit.
save_config_on_exit = true
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = true
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = true
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = true
#* Set which GPU vendors to show. Available values are "nvidia amd intel"
shown_gpus = "nvidia amd intel"
#* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = ""
#* Custom gpu1 model name, empty string to disable.
custom_gpu_name1 = ""
#* Custom gpu2 model name, empty string to disable.
custom_gpu_name2 = ""
#* Custom gpu3 model name, empty string to disable.
custom_gpu_name3 = ""
#* Custom gpu4 model name, empty string to disable.
custom_gpu_name4 = ""
#* Custom gpu5 model name, empty string to disable.
custom_gpu_name5 = ""
-144
View File
@@ -1,144 +0,0 @@
# Whether to enable mouse or not.
mouse = true
# The program to open when the `keys.message_input.editor` keymap is pressed. Set the value to `"default"` to use `$EDITOR`.
editor = "default"
# "default" (unknown), "online", "dnd", "idle", "invisible", "offline"
status = "default"
# Whether to parse and render markdown in messages or not.
markdown = true
hide_blocked_users = true
show_attachment_links = true
# Use autocomplete_limit = 0 to disable autocompleting mentions
# Note: tab completion will still work, but it won't show any list.
autocomplete_limit = 20
# The number of messages to fetch when a text-based channel is selected from guilds tree. The minimum and maximum value is 0 and 100, respectively.
messages_limit = 50
[timestamps]
enabled = true
# https://pkg.go.dev/time#Layout
format = "01-02 15:04:05 (Z07:00)"
[notifications]
enabled = true
# The duration of the sound. Set the value to `0` to use default duration. This is only supported on Unix and Windows.
duration = 0
[notifications.sound]
enabled = true
only_on_ping = true
# Global shortcuts
# Esc: Reset message selection or close the channel selection popup.
[keys]
focus_guilds_tree = "Ctrl+G"
focus_messages_list = "Ctrl+T"
focus_message_input = "Ctrl+Space"
# Cycle focus between the widgets.
focus_previous = "Ctrl+H"
focus_next = "Ctrl+L"
# Hide/show the guilds tree.
toggle_guilds_tree = "Ctrl+B"
quit = "Ctrl+C"
# Log out and remove the authentication token from keyring.
# Requires re-login upon restart.
logout = "Ctrl+D"
# Only while focusing on the guilds tree
[keys.guilds_tree]
select_previous = "Rune[k]"
select_next = "Rune[j]"
select_first = "Rune[g]"
select_last = "Rune[G]"
# Select the currently highlighted text-based channel or expand a guild or channel.
select_current = "Enter"
yank_id = "Rune[i]"
collapse_parent_node = "Rune[-]"
move_to_parent_node = "Rune[p]"
# Only while focusing on sent messages
[keys.messages_list]
select_previous = "Rune[k]"
select_next = "Rune[j]"
select_first = "Rune[g]"
select_last = "Rune[G]"
# Select the message reference (reply) of the selected channel.
select_reply = "Rune[s]"
# Reply to the selected message.
reply = "Rune[r]"
# Reply (with mention) to the selected message.
reply_mention = "Rune[R]"
cancel = "Esc"
edit = "Rune[e]"
delete = "Rune[D]"
delete_confirm = "Rune[d]"
# Open the selected message's attachments or hyperlinks in the message
# using the default browser application.
open = "Rune[o]"
# Yank (copy) the selected message's content/url/id.
yank_content = "Rune[y]"
yank_url = "Rune[u]"
yank_id = "Rune[i]"
# Only while typing a message
# Alt+Enter: Insert a new line to the current text.
[keys.message_input]
# paste from clipboard (supports both text and images)
paste = "Ctrl+V"
send = "Enter"
# Remove existing text or cancel reply.
cancel = "Esc"
# Complete usernames when mentioning
tab_complete = "Tab"
open_editor = "Ctrl+E"
open_file_picker = "Ctrl+\\"
[keys.mentions_list]
up = "Ctrl+P"
down = "Ctrl+N"
# style = { foreground = "", background = "", attributes = "" or [""] }
[theme.title]
alignment = "left" # `"left"`, `"center"`, or `"right"`.
normal_style = { attributes = "dim" }
active_style = { foreground = "green", attributes = "bold" }
[theme.border]
enabled = true
padding = [0, 0, 1, 1] # [top, bottom, left, right]
normal_style = { attributes = "dim" }
active_style = { foreground = "green", attributes = "bold" }
# `"hidden"`, `"plain"`, `"round"`, `"thick"`, or `"double"`.
normal_set = "round"
active_set = "round"
[theme.guilds_tree]
auto_expand_folders = true
# Give tree-like shape
graphics = true
graphics_color = "default"
[theme.messages_list]
reply_indicator = ">"
forwarded_indicator = "<"
mention_style = { foreground = "blue" }
emoji_style = { foreground = "green" }
url_style = { foreground = "blue" }
attachment_style = { foreground = "yellow" }
[theme.mentions_list]
# Note: width and height are capped to the avaliable space
# Minimum width
# 0 = make the list as wide as possible
min_width = 20
# Maximum height
# 0 = make the list as tall as needed
max_height = 0
-156
View File
@@ -1,156 +0,0 @@
# -*- conf -*-
# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
# term=foot (or xterm-256color if built with -Dterminfo=disabled)
# login-shell=no
# app-id=foot
# title=foot
# locked-title=no
font=monospace:size=10,JetBrainsMono Nerd Font:size=10
# font-bold=<bold variant of regular font>
# font-italic=<italic variant of regular font>
# font-bold-italic=<bold+italic variant of regular font>
# line-height=<font metrics>
# letter-spacing=0
# horizontal-letter-offset=0
# vertical-letter-offset=0
# underline-offset=<font metrics>
# box-drawings-uses-font-glyphs=no
dpi-aware=yes
# initial-window-size-pixels=700x500 # Or,
# initial-window-size-chars=<COLSxROWS>
# initial-window-mode=windowed
# resize-delay-ms=100
# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
# bold-text-in-bright=no
# word-delimiters=,│`|:"'()[]{}<>
# selection-target=primary
# workers=<number of logical CPUs>
[main]
include=/usr/share/foot/themes/gruvbox
[environment]
SYSTEMD_EDITOR=/usr/bin/nvim
EDITOR=/usr/bin/nvim
VISUAL=/usr/bin/nvim
PAGER="bat --style=header,rule,snip"
[bell]
# urgent=no
# notify=no
# command=
# command-focused=no
[scrollback]
lines=100000
# multiplier=3.0
# indicator-position=relative
# indicator-format=
[url]
# launch=xdg-open ${url}
# label-letters=sadfjklewcmpgh
# osc8-underline=url-mode
# protocols=http, https, ftp, ftps, file, gemini, gopher
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
[cursor]
# style=block
# color=<inverse foreground/background>
# blink=no
# beam-thickness=1.5
# underline-thickness=<font underline thickness>
[mouse]
# hide-when-typing=no
# alternate-scroll-mode=yes
[csd]
# preferred=server
size=0
# font=<primary font>
# color=<foreground color>
# hide-when-typing=no
# border-width=0
# border-color=<csd.color>
# button-width=26
# button-color=<background color>
# button-minimize-color=<regular4>
# button-maximize-color=<regular2>
# button-close-color=<regular1>
[key-bindings]
# scrollback-up-page=Shift+Page_Up
# scrollback-up-half-page=none
# scrollback-up-line=none
# scrollback-down-page=Shift+Page_Down
# scrollback-down-half-page=none
# scrollback-down-line=none
# clipboard-copy=Control+Shift+c XF86Copy
# clipboard-paste=Control+Shift+v XF86Paste
# primary-paste=Shift+Insert
search-start=Control+Shift+f
font-increase=Control+plus
font-decrease=Control+minus
font-reset=Control+equal
# spawn-terminal=Control+Shift+n
# minimize=none
# maximize=none
# fullscreen=none
# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-selected=[xargs -r firefox] none
# show-urls-launch=Control+Shift+o
show-urls-copy=Control+Shift+y
# show-urls-persistent=none
# prompt-prev=Control+Shift+z
# prompt-next=Control+Shift+x
# unicode-input=none
# noop=none
[search-bindings]
# cancel=Control+g Control+c Escape
# commit=Return
find-prev=Control+p
find-next=Control+n
# cursor-left=Left Control+b
# cursor-left-word=Control+Left Mod1+b
# cursor-right=Right Control+f
# cursor-right-word=Control+Right Mod1+f
# cursor-home=Home Control+a
# cursor-end=End Control+e
# delete-prev=BackSpace
# delete-prev-word=Mod1+BackSpace Control+BackSpace
# delete-next=Delete
# delete-next-word=Mod1+d Control+Delete
# extend-to-word-boundary=Control+w
# extend-to-next-whitespace=Control+Shift+w
# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
# primary-paste=Shift+Insert
# unicode-input=none
[url-bindings]
# cancel=Control+g Control+c Control+d Escape
# toggle-url-visible=t
[text-bindings]
# \x03=Mod4+c # Map Super+c -> Ctrl+c
[mouse-bindings]
# selection-override-modifiers=Shift
# primary-paste=BTN_MIDDLE
# select-begin=BTN_LEFT
# select-begin-block=Control+BTN_LEFT
# select-extend=BTN_RIGHT
# select-extend-character-wise=Control+BTN_RIGHT
# select-word=BTN_LEFT-2
# select-word-whitespace=Control+BTN_LEFT-2
# select-row=BTN_LEFT-3
# vim: ft=dosini
-115
View File
@@ -1,115 +0,0 @@
# output=<not set>
font=JetBrainsMono-Regular:size=14
dpi-aware=no
# use-bold=no
prompt=" "
# placeholder=
icon-theme=Qogir-dark
# icons-enabled=yes
# fields=filename,name,generic
# password-character=*
# filter-desktop=no
# match-mode=fzf
# sort-result=yes
# match-counter=no
# delayed-filter-ms=300
# delayed-filter-limit=20000
# show-actions=no
terminal=footclient -e
# launch-prefix=<not set>
# list-executables-in-path=no
# anchor=center
# x-margin=0
# y-margin=0
lines=16
width=50
tabs=4
horizontal-pad=50
vertical-pad=18
inner-pad=10
image-size-ratio=.25
# line-height=<use font metrics>
# letter-spacing=0
# layer=overlay
exit-on-keyboard-focus-loss=no
# cache=<not set>
# render-workers=<number of logical CPUs>
# match-workers=<number of logical CPUs>
[colors]
background=08052bdd
text=e3e3eaff
prompt=ff7f7fff
# placeholder=ffd966ff
input=ff7f7fff
match=FFE57Fff
selection-match=FFE57Fff
selection=44475add
selection-text=FFFFFFff
# counter=93a1a1ff
border=7f3fbf55
[border]
# width=1
# radius=10
[dmenu]
# mode=text # text|index
# exit-immediately-if-empty=no
[key-bindings]
# cancel=Escape Control+g Control+c Control+bracketleft
# execute=Return KP_Enter Control+y
# execute-or-next=Tab
# execute-input=Shift+Return Shift+KP_Enter
# cursor-left=Left Control+b
# cursor-left-word=Control+Left Mod1+b
# cursor-right=Right Control+f
# cursor-right-word=Control+Right Mod1+f
# cursor-home=Home Control+a
# cursor-end=End Control+e
# delete-prev=BackSpace Control+h
# delete-prev-word=Mod1+BackSpace Control+BackSpace Control+w
# delete-line-backward=Control+u
# delete-next=Delete KP_Delete Control+d
# delete-next-word=Mod1+d Control+Delete Control+KP_Delete
# delete-line-forward=Control+k
# prev=Up Control+p
# prev-with-wrap=ISO_Left_Tab
# prev-page=Page_Up KP_Page_Up
# next=Down Control+n
# next-with-wrap=none
# next-page=Page_Down KP_Page_Down
# expunge=Shift+Delete
# clipboard-paste=Control+v XF86Paste
# primary-paste=Shift+Insert Shift+KP_Insert
# custom-N: *dmenu mode only*. Like execute, but with a non-zero
# exit-code; custom-1 exits with code 10, custom-2 with 11, custom-3
# with 12, and so on.
# custom-1=Mod1+1
# custom-2=Mod1+2
# custom-3=Mod1+3
# custom-4=Mod1+4
# custom-5=Mod1+5
# custom-6=Mod1+6
# custom-7=Mod1+7
# custom-8=Mod1+8
# custom-9=Mod1+9
# custom-10=Mod1+0
# custom-11=Mod1+exclam
# custom-12=Mod1+at
# custom-13=Mod1+numbersign
# custom-14=Mod1+dollar
# custom-15=Mod1+percent
# custom-16=Mod1+dead_circumflex
# custom-17=Mod1+ampersand
# custom-18=Mod1+asterix
# custom-19=Mod1+parentleft
-16
View File
@@ -1,16 +0,0 @@
[Settings]
gtk-theme-name=Arc-Dark
gtk-icon-theme-name=Qogir-dark
gtk-font-name=Noto Sans 10
gtk-cursor-theme-name=Qogir-dark
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintmedium
gtk-xft-rgba=rgb
-19
View File
@@ -1,19 +0,0 @@
[main]
gtk-theme=Arc-Dark
time-format=%H:%M
start-hidden=1
modules=userinfo-module;powerbar-module
[userinfo]
round-image=true
horizontal-layout=false
under-clock=true
[powerbar]
show-labels=true
linked-buttons=true
reboot-command=systemctl reboot
poweroff-command=systemctl -i poweroff
suspend-command=systemctl suspend
userswitch-command=
logout-command=swaymsg exit
-47
View File
@@ -1,47 +0,0 @@
* {
border: none;
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8)
}
window {
background-image: url("EndeavourOS_Astronaut_SpaceWalk.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center;
background-color: black;
}
#clock-label {
font-family: JetBrainsMono;
font-size: 64.0px;
}
#unlock-button {
background: none;
background-color: rgba(127, 63, 191, 0.4);
border: 2px solid rgba(127, 63, 191, 0.5);
padding: 4px;
}
#unlock-button:hover {
background-color: rgba(127, 63, 191, 0.9);
}
#input-field {
border-radius: 10px;
background-color: rgba(127, 127, 255, 0.1);
border: 2px solid rgba(127, 63, 191, 0.5);
padding-top: 5px;
padding-bottom: 5px;
}
#powerbar-box button {
background: none;
background-color: rgba(127, 63, 191, 0.4);
border: 2px solid rgba(127, 63, 191, 0.5);
border-radius: 10px;
padding: 4px;
}
#powerbar-box button:hover {
background-color: rgba(127, 63, 191, 0.9);
}
#input-label {
font-size: 0px;
}
#window-box infobar {
background-color: transparent;
}
Binary file not shown.
-30
View File
@@ -1,30 +0,0 @@
- id: "1733842664884"
alias: Varmestyring
description: ""
use_blueprint:
path: MikaelUlvesjo/nordpool_simple_blueprint.yaml
input:
grid_area: sensor.nordpool_kwh_no1_nok_3_095_025
hour_rank: 16
turnon:
- action: climate.set_temperature
metadata: {}
data:
temperature: 19.5
target:
device_id:
- b65d14f7ef6300f4939db8935072b756
- ca85a2f25f3d48681e8d7e32d9de5e8e
- 2e1665d98e2051ea6f30e0b6ea31e7c5
turnoff:
- action: climate.set_temperature
metadata: {}
data:
temperature: 18
target:
device_id:
- b65d14f7ef6300f4939db8935072b756
- ca85a2f25f3d48681e8d7e32d9de5e8e
- 2e1665d98e2051ea6f30e0b6ea31e7c5
allways_off: 5
allways_on: 1
-269
View File
@@ -1,269 +0,0 @@
# Loads default set of integrations. Do not remove.
default_config:
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
http:
use_x_forwarded_for: true
trusted_proxies: 10.2.0.0/16
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
google_assistant:
project_id: homeassistant-mothership-1123
service_account: !include SERVICE_ACCOUNT.JSON
report_state: true
sensor:
- platform: nordpool
region: "NO1"
currency: "NOK"
low_price_cutoff: 0.95
# - platform: template
# sensors:
# # NORDPOOL PRICES
# nordpool_today_hr_00_01:
# friendly_name: "Today hour 0"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[0] }}"
# nordpool_today_hr_01_02:
# friendly_name: "Today hour 1"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[1] }}"
# nordpool_today_hr_02_03:
# friendly_name: "Today hour 2"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[2] }}"
# nordpool_today_hr_03_04:
# friendly_name: "Today hour 3"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[3] }}"
# nordpool_today_hr_04_05:
# friendly_name: "Today hour 4"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[4] }}"
# nordpool_today_hr_05_06:
# friendly_name: "Today hour 5"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[5] }}"
# nordpool_today_hr_06_07:
# friendly_name: "Today hour 6"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[6] }}"
# nordpool_today_hr_07_08:
# friendly_name: "Today hour 7"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[7] }}"
# nordpool_today_hr_08_09:
# friendly_name: "Today hour 8"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[8] }}"
# nordpool_today_hr_09_10:
# friendly_name: "Today hour 9"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[9] }}"
# nordpool_today_hr_10_11:
# friendly_name: "Today hour 10"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[10] }}"
# nordpool_today_hr_11_12:
# friendly_name: "Today hour 11"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[11] }}"
# nordpool_today_hr_12_13:
# friendly_name: "Today hour 12"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[12] }}"
# nordpool_today_hr_13_14:
# friendly_name: "Today hour 13"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[13] }}"
# nordpool_today_hr_14_15:
# friendly_name: "Today hour 14"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[14] }}"
# nordpool_today_hr_15_16:
# friendly_name: "Today hour 15"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[15] }}"
# nordpool_today_hr_16_17:
# friendly_name: "Today hour 16"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[16] }}"
# nordpool_today_hr_17_18:
# friendly_name: "Today hour 17"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[17] }}"
# nordpool_today_hr_18_19:
# friendly_name: "Today hour 18"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[18] }}"
# nordpool_today_hr_19_20:
# friendly_name: "Today hour 19"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[19] }}"
# nordpool_today_hr_20_21:
# friendly_name: "Today hour 20"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[20] }}"
# nordpool_today_hr_21_22:
# friendly_name: "Today hour 21"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[21] }}"
# nordpool_today_hr_22_23:
# friendly_name: "Today hour 22"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[22] }}"
# nordpool_today_hr_23_24:
# friendly_name: "Today hour 23"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.today[23] }}"
# nordpool_tomorrow_hr_00_01:
# friendly_name: "Tomorrow hour 0"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[0] }}"
# nordpool_tomorrow_hr_01_02:
# friendly_name: "Tomorrow hour 1"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[1] }}"
# nordpool_tomorrow_hr_02_03:
# friendly_name: "Tomorrow hour 2"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[2] }}"
# nordpool_tomorrow_hr_03_04:
# friendly_name: "Tomorrow hour 3"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[3] }}"
# nordpool_tomorrow_hr_04_05:
# friendly_name: "Tomorrow hour 4"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[4] }}"
# nordpool_tomorrow_hr_05_06:
# friendly_name: "Tomorrow hour 5"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[5] }}"
# nordpool_tomorrow_hr_06_07:
# friendly_name: "Tomorrow hour 6"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[6] }}"
# nordpool_tomorrow_hr_07_08:
# friendly_name: "Tomorrow hour 7"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[7] }}"
# nordpool_tomorrow_hr_08_09:
# friendly_name: "Tomorrow hour 8"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[8] }}"
# nordpool_tomorrow_hr_09_10:
# friendly_name: "Tomorrow hour 9"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[9] }}"
# nordpool_tomorrow_hr_10_11:
# friendly_name: "Tomorrow hour 10"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[10] }}"
# nordpool_tomorrow_hr_11_12:
# friendly_name: "Tomorrow hour 11"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[11] }}"
# nordpool_tomorrow_hr_12_13:
# friendly_name: "Tomorrow hour 12"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[12] }}"
# nordpool_tomorrow_hr_13_14:
# friendly_name: "Tomorrow hour 13"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[13] }}"
# nordpool_tomorrow_hr_14_15:
# friendly_name: "Tomorrow hour 14"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[14] }}"
# nordpool_tomorrow_hr_15_16:
# friendly_name: "Tomorrow hour 15"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[15] }}"
# nordpool_tomorrow_hr_16_17:
# friendly_name: "Tomorrow hour 16"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[16] }}"
# nordpool_tomorrow_hr_17_18:
# friendly_name: "Tomorrow hour 17"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[17] }}"
# nordpool_tomorrow_hr_18_19:
# friendly_name: "Tomorrow hour 18"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[18] }}"
# nordpool_tomorrow_hr_19_20:
# friendly_name: "Tomorrow hour 19"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[19] }}"
# nordpool_tomorrow_hr_20_21:
# friendly_name: "Tomorrow hour 20"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[20] }}"
# nordpool_tomorrow_hr_21_22:
# friendly_name: "Tomorrow hour 21"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[21] }}"
# nordpool_tomorrow_hr_22_23:
# friendly_name: "Tomorrow hour 22"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[22] }}"
# nordpool_tomorrow_hr_23_24:
# friendly_name: "Tomorrow hour 23"
# icon_template: mdi:cash
# unit_of_measurement: "øre"
# value_template: "{{ states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.tomorrow[23] }}"
View File
View File
-10
View File
@@ -1,10 +0,0 @@
aliases:
dp: deployments
sec: v1/secrets
jo: jobs
cr: clusterroles
crb: clusterrolebindings
ro: roles
rb: rolebindings
np: networkpolicies
gr: gitrepo
-48
View File
@@ -1,48 +0,0 @@
k9s:
liveViewAutoRefresh: false
gpuVendors: {}
screenDumpDir: /home/hjalmarlucius/.local/state/k9s/screen-dumps
refreshRate: 2
apiServerTimeout: 2m0s
maxConnRetry: 5
readOnly: false
noExitOnCtrlC: false
portForwardAddress: localhost
ui:
enableMouse: false
headless: false
logoless: false
crumbsless: false
splashless: false
reactive: false
noIcons: false
defaultsToFullScreen: false
useFullGVRTitle: false
skipLatestRevCheck: false
disablePodCounting: false
shellPod:
image: busybox:1.35.0
namespace: default
limits:
cpu: 100m
memory: 100Mi
imageScans:
enable: false
exclusions:
namespaces: []
labels: {}
logger:
tail: 100
buffer: 5000
sinceSeconds: -1
textWrap: false
disableAutoscroll: false
showTime: true
thresholds:
cpu:
critical: 90
warn: 70
memory:
critical: 90
warn: 70
defaultView: ""
-27
View File
@@ -1,27 +0,0 @@
font=UbuntuMono 12.5
background-color=#404552
text-color=#e5e9f0
width=315
height=200
padding=10
margin=10
progress-color=over #eceff480
icon-path=/usr/share/icons/Arc-X-D
max-icon-size=70
layer=overlay
anchor=bottom-center
border-size=2
border-radius=15
border-color=#5294e2
default-timeout=0
ignore-timeout=1
[urgency=normal]
border-color=#d08770
[urgency=high]
border-color=#bf616a
default-timeout=0
-38
View File
@@ -1,38 +0,0 @@
window {
background-color: rgba (38, 18, 57, 0.9);
color: #eceff4;
border-radius: 30px
}
/* search entry */
entry {
box-shadow: 0 0 6px 5px #2e3440;
background-color: rgba (0, 0, 0, 0.5)
}
button, image {
background-color: #3b4252;
background: none;
border: none;
margin: 10px
}
button:hover {
background-color: rgba (127, 63, 191, .4);
box-shadow: 0 0 6px 5px #190C26
}
/* in case you wanted to give category buttons a different look */
#category-button {
margin: 0 0px 0 0px
}
#pinned-box {
padding-bottom: 1px;
border-bottom: 1px solid gray
}
#files-box {
padding: 1px;
border: 1px solid gray
}
Binary file not shown.
-24
View File
@@ -1,24 +0,0 @@
add_newline = true
right_format = """$cmd_duration"""
[line_break]
disabled = false
[time]
disabled = false
[cmd_duration]
min_time = 1000
format = 'underwent [$duration](bold yellow)'
show_milliseconds = true
[directory]
truncation_length = 5
truncate_to_repo = false
truncation_symbol = '…/'
repo_root_style = "red"
before_repo_root_style = "cyan"
repo_root_format = '[$before_root_path]($before_repo_root_style)[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) '
[git_status]
disabled = true
-388
View File
@@ -1,388 +0,0 @@
# ------------------------------------------
# THEME
# ------------------------------------------
# Apply gtk theming
exec_always ~/.config/sway/scripts/import-gsettings
# mouse settings: don't refocus, don't move with output
focus_follows_mouse no
mouse_warping none
# Set inner/outer gaps
smart_gaps on
gaps inner 2
gaps outer 0
# Hide titlebar on windows:
default_border pixel 1
# Default Font
font pango:Noto Sans Regular 10
# Thin borders:
smart_borders on
# Title format for windows
for_window [shell="xdg_shell"] title_format "%title (%app_id)"
for_window [shell="x_wayland"] title_format "%class - %title"
# class border bground text indicator child_border
client.focused #556064 #F9CE5C #000000 #CB4B16 #FDF6E3
client.focused_inactive #CB4B16 #2F3D44 #1ABC9C #454948 #454948
client.unfocused #556064 #2F3D44 #1ABC9C #454948 #454948
client.urgent #CB4B16 #FDF6E3 #1ABC9C #268BD2 #268BD2
client.placeholder #000000 #0C0C0C #ffffff #000000 #000000
client.background #2B2C2B
# Status Bar:
bar {
swaybar_command waybar
}
# ------------------------------------------
# DEFINITIONS
# ------------------------------------------
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Add Vim key support
set $left h
set $down j
set $up k
set $right l
# Set default terminal emulator
set $term footclient
# Application launcher
set $launcher fuzzel
# Application menu
set $menu nwg-drawer
# Power Menu
set $powermenu ~/.config/sway/scripts/power_menu.sh
# ------------------------------------------
# BINDINGS
# ------------------------------------------
# Launch the terminal
bindsym $mod+Return exec $term
bindsym $mod+Shift+Return exec foot
# Kill focused window
bindsym $mod+Shift+q kill
# Lock screen
bindsym $mod+f1 exec gtklock
# Reload the configuration file
bindsym $mod+Shift+c reload
# menus
bindsym {
# Open the power menu
$mod+Shift+e exec $powermenu
# Start your launcher
$mod+d exec $launcher
# Menu
$mod+Shift+d exec $menu
# Activities
$mod+p exec ~/.config/sway/scripts/window_switcher.sh
}
# move around
bindsym {
# Change window focus
$mod+Left focus left
$mod+Down focus down
$mod+Up focus up
$mod+Right focus right
# Vim key support
$mod+$left focus left
$mod+$down focus down
$mod+$up focus up
$mod+$right focus right
# Move the focused window
$mod+Shift+Left move left
$mod+Shift+Down move down
$mod+Shift+Up move up
$mod+Shift+Right move right
# Vim key support
$mod+Shift+$left move left
$mod+Shift+$down move down
$mod+Shift+$up move up
$mod+Shift+$right move right
}
# layout
bindsym {
# Set how the current window will be split
$mod+s splitv
$mod+v splith
$mod+q split toggle
# Switch the current container between different layout styles
$mod+w layout stacking
$mod+t layout tabbed
$mod+e layout toggle split
# Make the current focus fullscreen
$mod+f fullscreen
# Toggle between tiling and floating mode
$mod+Shift+space floating toggle
$mod+Ctrl+space sticky toggle
# Swap focus between the tiling area and the floating area
$mod+space focus mode_toggle
# Move focus to the parent container
$mod+a focus parent
# Move focus to the child container
$mod+Shift+a focus child
}
# scratchpad
bindsym {
# Move the currently focused window to the scratchpad
$mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
$mod+minus scratchpad show
}
# resize
# Move windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Change "normal" to "inverse" to switch left and right
floating_modifier $mod normal
bindsym {
# Resize with arrow keys
$mod+ctrl+Right resize shrink width 100 px
$mod+ctrl+Up resize grow height 100 px
$mod+ctrl+Down resize shrink height 100 px
$mod+ctrl+Left resize grow width 100 px
# Resize with Vim keys
$mod+ctrl+$right resize shrink width 100 px
$mod+ctrl+$up resize grow height 100 px
$mod+ctrl+$down resize shrink height 100 px
$mod+ctrl+$left resize grow width 100 px
}
# Resize floating windows with mouse scroll
bindsym --whole-window --border {
# Resize vertically
$mod+button4 resize shrink height 5 px or 5 ppt
$mod+button5 resize grow height 5 px or 5 ppt
# Resize horizontally
$mod+Shift+button4 resize shrink width 5 px or 5 ppt
$mod+Shift+button5 resize grow width 5 px or 5 ppt
}
# media keys
bindsym {
# Volume
XF86AudioRaiseVolume exec pamixer -ui 2
XF86AudioLowerVolume exec pamixer -ud 2
XF86AudioMute exec pamixer --toggle-mute
Pause exec pamixer -ui 2
Print exec pamixer -ud 2
Scroll_Lock exec pamixer --toggle-mute
# Player
XF86AudioPlay exec playerctl play-pause
XF86AudioNext exec playerctl next
XF86AudioPrev exec playerctl previous
# Backlight
XF86MonBrightnessUp exec brightnessctl -c backlight set +5%
XF86MonBrightnessDown exec brightnessctl -c backlight set 5%-
}
# workspaces
bindsym {
# Switch to workspace
$mod+1 workspace 1
$mod+2 workspace 2
$mod+3 workspace 3
$mod+4 workspace 4
$mod+5 workspace 5
$mod+6 workspace 6
$mod+7 workspace 7
$mod+8 workspace 8
$mod+9 workspace 9
$mod+0 workspace 10
$mod+Insert workspace INS
$mod+Delete workspace DEL
$mod+Home workspace HOM
$mod+End workspace END
$mod+Prior workspace PUp
$mod+Next workspace Pdn
# Move focused container to workspace
$mod+Shift+1 move container to workspace 1
$mod+Shift+2 move container to workspace 2
$mod+Shift+3 move container to workspace 3
$mod+Shift+4 move container to workspace 4
$mod+Shift+5 move container to workspace 5
$mod+Shift+6 move container to workspace 6
$mod+Shift+7 move container to workspace 7
$mod+Shift+8 move container to workspace 8
$mod+Shift+9 move container to workspace 9
$mod+Shift+0 move container to workspace 10
$mod+Shift+Insert move container to workspace INS
$mod+Shift+Delete move container to workspace DEL
$mod+Shift+Home move container to workspace HOM
$mod+Shift+End move container to workspace END
$mod+Shift+Prior move container to workspace PUp
$mod+Shift+Next move container to workspace Pdn
}
# local config
include $HOME/.config/sway/local_config
# apps
bindsym {
# Snip a selection and pipe to swappy
$mod+Shift+s exec grim -g "$(slurp)" - | swappy -f -
# unicode picker
$mod+u exec unipicker --command "fuzzel --dmenu | wl-copy"
# Launch the browser
$mod+i exec qutebrowser
# Launch the file explorer
$mod+o exec pcmanfm
# Dismiss message
$mod+n exec makoctl dismiss
$mod+Shift+n exec makoctl dismiss -a
}
# config tools
set $mode_monitor (b) btop, (h) htop, (s) isd, (j) journal, (n) nvtop
mode "$mode_monitor" {
bindsym b exec footclient --app-id floating_shell --window-size-chars 140x50 btop, mode "default"
bindsym h exec footclient --app-id floating_shell --window-size-chars 140x50 htop, mode "default"
bindsym s exec footclient --app-id floating_shell --window-size-chars 140x50 isd, mode "default"
bindsym j exec footclient --app-id floating_shell --window-size-chars 140x50 lazyjournal, mode "default"
bindsym n exec footclient --app-id floating_shell --window-size-chars 140x50 nvtop, mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+m mode "$mode_monitor"
# ------------------------------------------
# AUTOSTART
# ------------------------------------------
# Auth with polkit-gnome
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# Import environment variables for user systemd service manager
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
# Update dbus environments with display variables
exec hash dbus-update-activation-environment 2>/dev/null && \
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
# Idle configuration
exec_always swayidle -w \
timeout 1200 'gtklock -d' \
timeout 2400 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
before-sleep 'gtklock -d' \
after-resume 'swaymsg reload' \
idlehint 240
# Start foot server
exec systemctl --user enable --now foot-server.service
exec {
# Desktop notifications
exec mako
# Set wallpaper
~/.azotebg
# Network Applet
nm-applet --indicator
# automount usb
pcmanfm --daemon-mode
# Bluetooth Applet
blueman-applet
# night-time color shift
wlsunset -l 59.91:10.76
}
exec_always {
# nwg-drawer
nwg-drawer -r -c 7 -is 90 -mb 10 -ml 50 -mr 50 -mt 10
# persist clipboard after close
pkill -x wl-clip-persist
wl-clip-persist --clipboard regular --all-mime-type-regex '(?i)^(?!image/x-inkscape-svg).+'
# enable noisetorch
noisetorch -u
noisetorch -i
}
# ------------------------------------------
# WINDOWS
# ------------------------------------------
# Custom windowing rules
for_window [class="Yad" instance="yad"] floating enable
for_window [app_id="yad"] floating enable
for_window [app_id="blueman-manager"] floating enable, resize set width 40 ppt height 30 ppt
for_window [app_id="pavucontrol" ] floating enable, resize set width 40 ppt height 30 ppt
for_window [window_role="pop-up"] floating enable
for_window [window_role="bubble"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [window_role="Preferences"] floating enable
for_window [window_type="dialog"] floating enable
for_window [window_type="menu"] floating enable
for_window [window_role="About"] floating enable
for_window [title="File Operation Progress"] floating enable, border pixel 1, sticky enable, resize set width 40 ppt height 30 ppt
for_window [app_id="floating_shell"] floating enable, border pixel 1, sticky enable
for_window [title="Picture in picture"] floating enable, sticky enable
for_window [title="Save File"] floating enable
for_window [app_id="firefox" title="Firefox — Sharing Indicator"] kill
# only thunderbird main window as float
for_window [app_id="org.mozilla.Thunderbird" title="^((?!Mozilla Thunderbird).)*$"] floating enable
# steam
# https://github.com/ValveSoftware/steam-for-linux/issues/1040
for_window [app_id="^steam$"] floating enable
for_window [app_id="^Steam$"] floating enable
for_window [app_id="^steam$" title="^Steam$"] floating disable
# Inhibit idle
for_window [app_id="firefox"] inhibit_idle fullscreen
for_window [app_id="Chromium"] inhibit_idle fullscreen
# Don't allow applications to inhibit shortcuts, i.e. grab total control of the
# keyboard. Chrome currently abuses this by enabling it for all "--app=..." shortcuts.
seat * shortcuts_inhibitor disable
# ------------------------------------------
# IO
# ------------------------------------------
input type:touchpad {
dwt enabled
tap disabled
natural_scroll enabled
accel_profile "adaptive"
}
input type:keyboard {
xkb_layout "us_custom,us_norwegian"
xkb_options "grp:shifts_toggle,caps:escape"
}
input type:mouse {
accel_profile "flat"
pointer_accel 0.5
}
-15
View File
@@ -1,15 +0,0 @@
#!/bin/sh
# usage: import-gsettings
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
if [ ! -f "$config" ]; then exit 1; fi
gnome_schema="org.gnome.desktop.interface"
gtk_theme="$(grep 'gtk-theme-name' "$config" | cut -d'=' -f2)"
icon_theme="$(grep 'gtk-icon-theme-name' "$config" | cut -d'=' -f2)"
cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | cut -d'=' -f2)"
font_name="$(grep 'gtk-font-name' "$config" | cut -d'=' -f2)"
gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
gsettings set "$gnome_schema" icon-theme "$icon_theme"
gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
gsettings set "$gnome_schema" font-name "$font_name"
-34
View File
@@ -1,34 +0,0 @@
#!/bin/bash
SELECTION="$(printf "󰌾 Lock\n󰤄 Suspend\n󰍃 Log out\n Reboot\n Reboot to UEFI\n󰐥 Shutdown" | fuzzel --dmenu -a top-right -l 6 -w 18 -p "Select an option: ")"
confirm_action() {
local action="$1"
CONFIRMATION="$(printf "No\nYes" | fuzzel --dmenu -a top-right -l 2 -w 18 -p "$action?")"
[[ "$CONFIRMATION" == *"Yes"* ]]
}
case $SELECTION in
*"󰌾 Lock"*)
gtklock;;
*"󰤄 Suspend"*)
if confirm_action "Suspend"; then
systemctl suspend-then-hibernate
fi;;
*"󰍃 Log out"*)
if confirm_action "Log out"; then
swaymsg exit
fi;;
*" Reboot"*)
if confirm_action "Reboot"; then
systemctl reboot
fi;;
*" Reboot to UEFI"*)
if confirm_action "Reboot to UEFI"; then
systemctl reboot --firmware-setup
fi;;
*"󰐥 Shutdown"*)
if confirm_action "Shutdown"; then
systemctl poweroff
fi;;
esac
-32
View File
@@ -1,32 +0,0 @@
#!/bin/bash
# Define the lengths for each column
ws_length=2
app_id_length=14
name_length=50
# Fetch the data from swaymsg and format it
formatted_output=$(swaymsg -t get_tree | jq -r --arg ws_length "$ws_length" --arg app_id_length "$app_id_length" --arg name_length "$name_length" '
def lpad($len; $char):
if (.|length) > $len then $char * ($len - (.|length)) +.[:$len-1] + "\u2026" else $char * ($len - (.|length)) +. end;
def rpad($len; $char):
if (.|length) > $len then.[:$len-1] + "\u2026" else. + $char * ($len - (.|length)) end;
..
| objects
| select(.type == "workspace") as $ws
|..
| objects
| select(has("app_id"))
| (if.focused then "*" else " " end) as $asterisk
| "\($asterisk)[\($ws.name | lpad($ws_length | tonumber; " "))]\((.app_id // "xwayland") | lpad($app_id_length | tonumber; " ")): \(.name | rpad($name_length | tonumber; " ")) (\(.id))"
')
# Launch fuzzel with the formatted output
row=$(echo "$formatted_output" | fuzzel --dmenu --width=80 --lines=12)
# Get the container ID from the selection and focus the container
if [ -n "$row" ]; then
winid="${row##*(}"
winid="${winid%%)*}"
swaymsg "[con_id=$winid] focus"
fi
Binary file not shown.
-185
View File
@@ -1,185 +0,0 @@
{
"layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
// "height": 30, // Auto-height is used when commented
// "width": 1280, // Full screen width when commented
"spacing": 16, // Gaps between modules (in px)
// See `man waybar` for more configuration options
// Configuration - modules-left
"modules-left": [
"custom/launcher",
"sway/workspaces",
"sway/mode",
"sway/window"
],
"custom/launcher": {
"format":"<span size='x-large'></span>",
"on-click": "exec nwg-drawer",
"tooltip": false
},
"sway/workspaces": {
"disable-scroll": true,
"all-outputs": true,
"format": "{icon}",
"format-icons": {
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "10"
}
},
"sway/mode": {
"format": "<span style=\"italic\">{}</span>",
"tooltip": false
},
"sway/window": {
"format": "{}",
//"all-outputs": true, // Active window shows only on active display when commented
"max-length": 120
},
// Configuration - modules-center
"modules-center": [
"systemd-failed-units", "network"
],
"systemd-failed-units": {
"hide-on-ok": false, // Do not hide if there is zero failed units.
"format": "Systemd ✗ {nr_failed}",
"format-ok": "Systemd ✓",
"system": true, // Monitor failed systemwide units.
"user": true, // Ignore failed user units.
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x45 isd'"
},
// Configuration - modules-right
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
},
"tooltip-format-activated": "Idle Inhibitor Activated",
"tooltip-format-deactivated": "Idle Inhibitor Deactivated"
},
"cpu": {
"interval": 5,
"format": "{usage:>3}%",
"states": {
"warning": 70,
"critical": 90,
},
"on-click": "footclient --app-id floating_shell --window-size-chars 120x45 -e btop"
},
"custom/cputemp": {
"exec": "sensors | grep 'CPU:' | awk '{print substr($2,2); }'",
"format": " {}",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 watch sensors'",
"interval": 1
},
"memory": {
"interval": 5,
"format": "{:>3}%",
"on-click": "footclient --app-id floating_shell --window-size-chars 100x100 -e btop",
"states": {
"warning": 70,
"critical": 90
}
},
"disk#root": {
"path": "/",
"interval": 30,
"format": " / {specific_free:0.0f} of {specific_total:0.0f} GB free",
"unit": "GB",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /'"
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["󰄰", "󰪞", "󰪟", "󰪠", "󰪡", "󰪢", "󰪣", "󰪤", "󰪥"],
"tooltip-format": "Backlight (Scroll): {percent:}%",
"on-scroll-down": "brightnessctl -c backlight set 5%-",
"on-scroll-up": "brightnessctl -c backlight set +5%"
},
"pulseaudio": {
"scroll-step": 2,
"format": "{icon} {volume}%",
"format-muted":"󰝟 muted",
"format-icons": {
"headphones": "",
"handsfree": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["󰕿", "󰖀", "󰕾"]
},
"on-click": "pavucontrol",
"tooltip-format": "{icon} {volume}% {format_source}",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x12 pulsemixer'",
"on-click-middle": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +5%",
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -5%"
},
"include": "~/.config/waybar/local_config.jsonc",
"battery": {
"states": {
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-icons": ["", "", "", "", ""]
},
"clock": {
"format": "󰅐 {:%H:%M}",
"format-alt": "󰅐 {:%OI:%M %p}",
"tooltip-format": " {:%A %m/%d}\n\n<tt><small>{calendar}</small></tt>",
"calendar": {
"on-scroll": 1,
"format": {
"months": "<span color='#ffead3'><b>{}</b></span>",
"days": "<span color='#ecc6d9'><b>{}</b></span>",
"weeks": "<span color='#99ffdd'><b>W{}</b></span>",
"weekdays": "<span color='#ffcc66'><b>{}</b></span>",
"today": "<span color='#ff6699'><b><u>{}</u></b></span>"
},
},
"actions": {
"on-scroll-up": "shift_up",
"on-scroll-down": "shift_down"
},
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x45 khal interactive'"
},
"tray": {
"icon-size": 16,
"spacing":10
},
"custom/power": {
"format":"⏻",
"on-click": "exec ~/.config/sway/scripts/power_menu.sh",
"tooltip": false
},
}
-186
View File
@@ -1,186 +0,0 @@
/* =============================================================================
*
* Waybar configuration
*
* Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration
*
* =========================================================================== */
/* -----------------------------------------------------------------------------
* Keyframes
* -------------------------------------------------------------------------- */
@define-color highlight #685878 ;
@define-color base1 #19191e ;
@keyframes blink-warning {
70% {
color: white;
}
to {
color: white;
background-color: orange;
}
}
@keyframes blink-critical {
70% {
color: white;
}
to {
color: white;
background-color: red;
}
}
/* -----------------------------------------------------------------------------
* Base styles
* -------------------------------------------------------------------------- */
/* Reset all styles */
* {
border: none;
border-radius: 0;
min-height: 0;
margin: 1px;
padding: 0;
}
/* The whole bar */
#waybar {
background: transparent;
color: #e3e3ea;
background-color: @base1;
font-family: JetBrainsMono;
font-size: 13px;
}
/* Every modules */
#mode,
#network,
#custom-keyboard-layout,
#idle_inhibitor,
#cpu,
#memory,
#backlight,
#pulseaudio,
#battery,
#clock,
#tray {
padding:0.5rem 0.6rem;
margin: 1px 0px;
}
/* -----------------------------------------------------------------------------
* Module styles
* -------------------------------------------------------------------------- */
#custom-launcher {
margin-left:15px;
margin-right:10px;
}
#workspaces {
font-size:13px;
}
#workspaces button {
border-radius: 5px;
color: #eceff4;
padding: 1px 6px;
margin-right: 2px;
margin-left: 2px;
}
#workspaces button.focused {
border: 1px solid #d8dee9;
}
#workspaces button.urgent {
border-color: #c9545d;
color: #c9545d;
}
#mode {
background: @highlight;
border-bottom: 3px transparent;
color:white;
margin-left: 5px;
padding: 7px;
}
#window {
font-weight: bold;
}
#network.disconnected {
color: orange;
}
#cpu.warning {
color: orange;
}
#cpu.critical {
color: red;
}
#memory {
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#memory.warning {
color: orange;
}
#memory.critical {
color: red;
animation-name: blink-critical;
animation-duration: 2s;
padding-left:5px;
padding-right:5px;
}
#backlight.icon {
}
#pulseaudio {
}
#pulseaudio.muted {
color: @highlight;
}
#battery {
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#battery.warning {
color: orange;
}
#battery.critical {
color: red;
}
#battery.warning.discharging {
animation-name: blink-warning;
animation-duration: 3s;
}
#battery.critical.discharging {
animation-name: blink-critical;
animation-duration: 2s;
}
#custom-power {
margin-left:15px;
margin-right:15px;
font-size:15px;
}
-5
View File
@@ -1,5 +0,0 @@
[screencast]
chooser_type = dmenu
chooser_cmd = fuzzel --dmenu
output_name=DP-1
max_fps=30
-1
View File
@@ -1 +0,0 @@
foot.desktop
-6
View File
@@ -1,6 +0,0 @@
partial alphanumeric_keys
xkb_symbols "basic" {
include "us(basic)"
name[Group1]= "US Custom";
key <MENU> { [ Super_L ] };
};
-16
View File
@@ -1,16 +0,0 @@
partial alphanumeric_keys
xkb_symbols "basic" {
include "us(basic)"
name[Group1]= "US Custom Norwegian";
key <MENU> { [ Super_L ] };
key <AD01> { [ q, Q, aring, Aring ] };
key <AD11> { [ bracketleft, braceleft, aring, Aring ] };
key <AD02> { [ w, W, ae, AE ] };
key <AC11> { [apostrophe, quotedbl, ae, AE ] };
key <AD05> { [ t, T, oslash, Oslash ] };
key <AC10> { [ semicolon, colon, oslash, Oslash ] };
key <AC03> { [ d, D, eacute, Eacute ] };
include "level3(ralt_switch)"
};
-314
View File
@@ -1,314 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--The Xournal++ settings file. Do not edit this file! Most settings are available in the Settings dialog, the others are commented in this file, but handle with care!-->
<settings>
<property name="pressureSensitivity" value="true"/>
<property name="minimumPressure" value="0.05"/>
<property name="pressureMultiplier" value="1"/>
<property name="zoomGesturesEnabled" value="true"/>
<property name="selectedToolbar" value="Portrait"/>
<property name="lastSavePath" value="/home/hjalmarlucius/Downloads"/>
<property name="lastOpenPath" value=""/>
<property name="lastImagePath" value=""/>
<property name="edgePanSpeed" value="20"/>
<property name="edgePanMaxMult" value="5"/>
<property name="zoomStep" value="10"/>
<property name="zoomStepScroll" value="2"/>
<property name="displayDpi" value="72"/>
<property name="mainWndWidth" value="1702"/>
<property name="mainWndHeight" value="1398"/>
<property name="maximized" value="false"/>
<property name="showToolbar" value="true"/>
<property name="showSidebar" value="true"/>
<property name="sidebarWidth" value="159"/>
<property name="sidebarNumberingStyle" value="1"/>
<property name="sidebarOnRight" value="false"/>
<property name="scrollbarOnLeft" value="false"/>
<property name="menubarVisible" value="false"/>
<property name="filepathShownInTitlebar" value="false"/>
<property name="pageNumberShownInTitlebar" value="false"/>
<property name="numColumns" value="1"/>
<property name="numRows" value="1"/>
<property name="viewFixedRows" value="false"/>
<property name="showPairedPages" value="false"/>
<property name="layoutVertical" value="false"/>
<property name="layoutRightToLeft" value="false"/>
<property name="layoutBottomToTop" value="false"/>
<property name="numPairsOffset" value="1"/>
<!--The icon theme, allowed values are "disabled", "onDrawOfLastPage", and "onScrollOfLastPage"-->
<property name="emptyLastPageAppend" value="onScrollOfLastPage"/>
<property name="presentationMode" value="false"/>
<!--Which GUI elements are shown in default view mode, separated by a colon (,)-->
<property name="defaultViewModeAttributes" value="showMenubar,showToolbar"/>
<!--Which GUI elements are shown in fullscreen view mode, separated by a colon (,)-->
<property name="fullscreenViewModeAttributes" value="goFullscren,showToolbar,showSidebar"/>
<!--Which GUI elements are shown in presentation view mode, separated by a colon (,)-->
<property name="presentationViewModeAttributes" value="goFullscren,showToolbar"/>
<!--The cursor icon used with a stylus, allowed values are "none", "dot", "big", "arrow"-->
<property name="stylusCursorType" value="dot"/>
<!--The eraser cursor visibility used with a stylus, allowed values are "never", "always", "hover", "touch"-->
<property name="eraserVisibility" value="always"/>
<!--The icon theme, allowed values are "iconsColor", "iconsLucide"-->
<property name="iconTheme" value="iconsColor"/>
<!--Dark/light mode, allowed values are "useSystem", "forceLight", "forceDark"-->
<property name="themeVariant" value="useSystem"/>
<property name="highlightPosition" value="true"/>
<property name="cursorHighlightColor" value="2164260608"/>
<property name="cursorHighlightBorderColor" value="2147483903"/>
<property name="cursorHighlightRadius" value="30"/>
<property name="cursorHighlightBorderWidth" value="0"/>
<property name="useStockIcons" value="false"/>
<property name="disableScrollbarFadeout" value="false"/>
<property name="disableAudio" value="false"/>
<!--Hides scroolbars in the main window, allowed values: "none", "horizontal", "vertical", "both"-->
<property name="scrollbarHideType" value="none"/>
<property name="autoloadMostRecent" value="false"/>
<property name="autoloadPdfXoj" value="true"/>
<property name="defaultSaveName" value="%F-Note-%H-%M"/>
<property name="defaultPdfExportName" value="%{name}_annotated"/>
<property name="autosaveEnabled" value="true"/>
<property name="autosaveTimeout" value="3"/>
<property name="addHorizontalSpace" value="false"/>
<property name="addHorizontalSpaceAmountRight" value="150"/>
<property name="addHorizontalSpaceAmountLeft" value="150"/>
<property name="addVerticalSpace" value="false"/>
<property name="addVerticalSpaceAmountAbove" value="150"/>
<property name="addVerticalSpaceAmountBelow" value="150"/>
<property name="unlimitedScrolling" value="false"/>
<property name="drawDirModsEnabled" value="false"/>
<property name="drawDirModsRadius" value="50"/>
<property name="snapRotation" value="true"/>
<property name="snapRotationTolerance" value="0.3"/>
<property name="snapGrid" value="false"/>
<property name="snapGridTolerance" value="0.5"/>
<property name="snapGridSize" value="14.17"/>
<property name="strokeRecognizerMinSize" value="40"/>
<property name="touchDrawing" value="false"/>
<property name="gtkTouchInertialScrolling" value="true"/>
<property name="pressureGuessing" value="false"/>
<property name="recolor.enabled" value="false"/>
<property name="recolor.sidebar" value="false"/>
<property name="recolor.dark" value="4281349190"/>
<property name="recolor.light" value="4291219701"/>
<property name="selectionBorderColor" value="4294901760"/>
<property name="backgroundColor" value="4292664021"/>
<property name="selectionMarkerColor" value="4285702095"/>
<property name="activeSelectionColor" value="4286381056"/>
<property name="touchZoomStartThreshold" value="0"/>
<property name="pageRerenderThreshold" value="5"/>
<!--The count of rendered PDF pages which will be cached.-->
<property name="pdfPageCacheSize" value="10"/>
<property name="preloadPagesBefore" value="3"/>
<property name="preloadPagesAfter" value="5"/>
<property name="eagerPageCleanup" value="true"/>
<!--Config for new pages-->
<property name="pageTemplate" value="xoj/template&#10;copyLastPageSettings=true&#10;size=595.275591x841.889764&#10;backgroundType=lined&#10;backgroundColor=#ffffff&#10;"/>
<property name="sizeUnit" value=""/>
<property name="audioFolder" value=""/>
<property name="audioInputDevice" value="-1"/>
<property name="audioOutputDevice" value="-1"/>
<property name="audioSampleRate" value="44100"/>
<property name="audioGain" value="1"/>
<property name="defaultSeekTime" value="5"/>
<property name="pluginEnabled" value=""/>
<property name="pluginDisabled" value=""/>
<property name="strokeFilterIgnoreTime" value="150"/>
<property name="strokeFilterIgnoreLength" value="1"/>
<property name="strokeFilterSuccessiveTime" value="500"/>
<property name="strokeFilterEnabled" value="false"/>
<property name="doActionOnStrokeFiltered" value="false"/>
<property name="trySelectOnStrokeFiltered" value="false"/>
<property name="snapRecognizedShapesEnabled" value="false"/>
<property name="restoreLineWidthEnabled" value="false"/>
<property name="numIgnoredStylusEvents" value="0"/>
<property name="inputSystemTPCButton" value="false"/>
<property name="inputSystemDrawOutsideWindow" value="true"/>
<property name="preferredLocale" value=""/>
<property name="useSpacesForTab" value="false"/>
<property name="numberOfSpacesForTab" value="4"/>
<property name="laserPointerFadeOutTime" value="500"/>
<property name="stabilizerAveragingMethod" value="0"/>
<property name="stabilizerPreprocessor" value="0"/>
<property name="stabilizerBuffersize" value="20"/>
<property name="stabilizerSigma" value="0.5"/>
<property name="stabilizerDeadzoneRadius" value="1.3"/>
<property name="stabilizerDrag" value="0.4"/>
<property name="stabilizerMass" value="5"/>
<property name="stabilizerCuspDetection" value="true"/>
<property name="stabilizerFinalizeStroke" value="true"/>
<property name="colorPalette" value="/usr/share/xournalpp/palettes/xournal.gpl"/>
<property name="latexSettings.autoCheckDependencies" value="true"/>
<property name="latexSettings.defaultText" value="x^2"/>
<property name="latexSettings.globalTemplatePath" value="/usr/share/xournalpp/resources/default_template.tex"/>
<property name="latexSettings.genCmd" value="pdflatex -halt-on-error -interaction=nonstopmode '{}'"/>
<property name="latexSettings.sourceViewThemeId" value="classic"/>
<property name="latexSettings.editorFont" value="Monospace 12"/>
<property name="latexSettings.useCustomEditorFont" value="false"/>
<property name="latexSettings.editorWordWrap" value="true"/>
<property name="latexSettings.sourceViewAutoIndent" value="true"/>
<property name="latexSettings.sourceViewSyntaxHighlight" value="true"/>
<property name="latexSettings.sourceViewShowLineNumbers" value="false"/>
<property name="latexSettings.useExternalEditor" value="false"/>
<property name="latexSettings.externalEditorAutoConfirm" value="false"/>
<property name="latexSettings.externalEditorCmd" value=""/>
<property name="latexSettings.temporaryFileExt" value="tex"/>
<property name="font" font="Sans" size="12"/>
<data name="buttonConfig">
<data name="default">
<attribute name="color" type="hex" value="ff000000"/>
<attribute name="drawingType" type="string" value="default"/>
<attribute name="size" type="string" value="thin"/>
<attribute name="strokeType" type="string" value="none"/>
<attribute name="tool" type="string" value="pen"/>
</data>
<data name="eraser">
<attribute name="eraserMode" type="string" value="none"/>
<attribute name="size" type="string" value="none"/>
<attribute name="tool" type="string" value="eraser"/>
</data>
<data name="left">
<attribute name="tool" type="string" value="none"/>
</data>
<data name="middle">
<attribute name="tool" type="string" value="hand"/>
</data>
<data name="right">
<attribute name="tool" type="string" value="none"/>
</data>
<data name="stylus">
<attribute name="color" type="hex" value="ffffff00"/>
<attribute name="drawingType" type="string" value="default"/>
<attribute name="size" type="string" value="none"/>
<attribute name="tool" type="string" value="highlighter"/>
</data>
<data name="stylus2">
<attribute name="tool" type="string" value="none"/>
</data>
<data name="touch">
<attribute name="device" type="string" value=""/>
<attribute name="disableDrawing" type="boolean" value="false"/>
<attribute name="tool" type="string" value="none"/>
</data>
</data>
<data name="deviceClasses">
<data name="">
<attribute name="deviceClass" type="int" value="0"/>
<attribute name="deviceSource" type="int" value="0"/>
</data>
<data name="Wacom Co.,Ltd. Wacom One pen tablet small">
<attribute name="deviceClass" type="int" value="2"/>
<attribute name="deviceSource" type="int" value="1"/>
</data>
<data name="Wacom Co.,Ltd. Wacom One pen tablet small (Eraser)">
<attribute name="deviceClass" type="int" value="3"/>
<attribute name="deviceSource" type="int" value="2"/>
</data>
<data name="Wayland Pointer">
<attribute name="deviceClass" type="int" value="1"/>
<attribute name="deviceSource" type="int" value="0"/>
</data>
<data name="Wayland Wheel Scrolling">
<attribute name="deviceClass" type="int" value="1"/>
<attribute name="deviceSource" type="int" value="0"/>
</data>
</data>
<data name="tools">
<attribute name="current" type="string" value="pen"/>
<data name="drawArrow">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="drawCoordinateSystem">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="drawDoubleArrow">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="drawEllipse">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="drawRect">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="drawSpline">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="eraser">
<attribute name="drawingType" type="string" value="default"/>
<attribute name="size" type="string" value="MEDIUM"/>
<attribute name="type" type="string" value="default"/>
</data>
<data name="hand">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="highlighter">
<attribute name="color" type="hex" value="ffffff00"/>
<attribute name="drawingType" type="string" value="default"/>
<attribute name="fill" type="int" value="0"/>
<attribute name="fillAlpha" type="int" value="128"/>
<attribute name="size" type="string" value="MEDIUM"/>
</data>
<data name="image">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="laserPointerHighlighter">
<attribute name="color" type="hex" value="ffff0000"/>
<attribute name="drawingType" type="string" value="default"/>
<attribute name="size" type="string" value="MEDIUM"/>
</data>
<data name="laserPointerPen">
<attribute name="color" type="hex" value="ffff0000"/>
<attribute name="drawingType" type="string" value="default"/>
<attribute name="size" type="string" value="MEDIUM"/>
</data>
<data name="pen">
<attribute name="color" type="hex" value="ffff00ff"/>
<attribute name="drawingType" type="string" value="default"/>
<attribute name="fill" type="int" value="0"/>
<attribute name="fillAlpha" type="int" value="128"/>
<attribute name="size" type="string" value="THIN"/>
<attribute name="style" type="string" value="plain"/>
</data>
<data name="playObject">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="selectMultiLayerRect">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="selectMultiLayerRegion">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="selectObject">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="selectPdfTextLinear">
<attribute name="color" type="hex" value="ff000000"/>
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="selectPdfTextRect">
<attribute name="color" type="hex" value="ff000000"/>
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="selectRect">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="selectRegion">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="showFloatingToolbox">
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="text">
<attribute name="color" type="hex" value="ff000000"/>
<attribute name="drawingType" type="string" value="default"/>
</data>
<data name="verticalSpace">
<attribute name="drawingType" type="string" value="default"/>
</data>
</data>
<data name="touch">
<attribute name="cmdDisable" type="string" value=""/>
<attribute name="cmdEnable" type="string" value=""/>
<attribute name="disableTouch" type="boolean" value="false"/>
<attribute name="method" type="string" value="auto"/>
<attribute name="timeout" type="int" value="1000"/>
</data>
</settings>
-78
View File
@@ -1,78 +0,0 @@
# --- env ---
export SYSTEMD_EDITOR=nvim
export EDITOR=nvim
export VISUAL=nvim
export PAGER="bat --style=header,rule,snip"
export PATH=~/.local/bin:$PATH
export BROWSER=/usr/bin/qutebrowser
export HISTFILE=~/.config/zsh/history
export HISTSIZE=200000
export SAVEHIST=200000
# --- aliases ---
alias ls='ls --color=auto -Ah'
alias ..='cd ..'
alias ...='cd ../..'
catai () {
rg -l --hidden --glob '!.git/*' '^' -- "$@" | while IFS= read -r f; do
printf "\n── %s ──\n" "$f"
echo '```'
cat "$f"
echo '```'
done
}
# --- basic keybinds ---
bindkey '^[[Z' reverse-menu-complete # shift-tab
bindkey '^[^M' self-insert-unmeta # alt+enter newline
bindkey "^[^?" backward-kill-word # alt+backspace
# --- options ---
setopt HIST_IGNORE_ALL_DUPS HIST_IGNORE_SPACE SHARE_HISTORY EXTENDED_HISTORY
setopt AUTO_CD AUTO_MENU
setopt AUTO_PUSHD PUSHD_SILENT PUSHD_TO_HOME
setopt NO_NOMATCH
WORDCHARS='_-*?.[]~=&;!#$%^(){}<>'
# --- command line to EDITOR ---
autoload -Uz edit-command-line
zle -N edit-command-line
bindkey '^X^E' edit-command-line
# --- autocompletion ---
autoload -Uz compinit
compinit -d "~/.config/zsh/zcompdump"
zstyle ':completion:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' 'r:|[._-]=** r:|=**'
zstyle ':completion:*' list-colors ''
if command -v kubectl >/dev/null 2>&1; then
source <(kubectl completion zsh)
fi
# --- div plugins ---
# autosuggestions must come before atuin
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
eval "$(zoxide init zsh)"
eval "$(starship init zsh)"
# --- vi mode ---
bindkey -v
source /usr/share/zsh/plugins/zsh-vi-mode/zsh-vi-mode.plugin.zsh
# --- search ---
# fzf: Ctrl-T, Alt-C
FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git' \
FZF_CTRL_R_COMMAND= \
FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" \
source <(fzf --zsh)
# atuin: Ctrl+R, /
eval "$(atuin init zsh)"
# handle collisions
function zvm_after_init() {
bindkey -M vicmd '^R' redo
bindkey -M viins '^R' atuin-search
}
# --- syntax hl ---
# must be the last plugins sourced
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
@@ -1,7 +0,0 @@
[Desktop Entry]
Type=Application
Name=file-roller
Exec=file-roller %f
Categories=FileTools;FileManager;
MimeType=application/zip
Terminal=false
+36
View File
@@ -0,0 +1,36 @@
import pdb
class Config(pdb.DefaultConfig):
editor = "e"
stdin_paste = "epaste"
filename_color = pdb.Color.lightgray
use_terminal256formatter = False
# exec_if_unfocused = "play ~/sounds/dialtone.wav 2> /dev/null &"
def __init__(self):
# import readline
# readline.parse_and_bind('set convert-meta on')
# readline.parse_and_bind('Meta-/: complete')
try:
from pygments.formatters import terminal
except ImportError:
pass
else:
self.colorscheme = terminal.TERMINAL_COLORS.copy()
self.colorscheme.update(
{
terminal.Keyword: ("darkred", "red"),
terminal.Number: ("darkyellow", "yellow"),
terminal.String: ("brown", "green"),
terminal.Name.Function: ("darkgreen", "blue"),
terminal.Name.Namespace: ("teal", "cyan"),
}
)
def setup(self, pdb):
# make 'l' an alias to 'longlist'
Pdb = pdb.__class__
Pdb.do_l = Pdb.do_longlist
Pdb.do_st = Pdb.do_sticky
+8
View File
@@ -0,0 +1,8 @@
# required for qt5ct to know QT_QPA_PLATFORMTHEME
export QT_QPA_PLATFORMTHEME=qt5ct
export SYSTEMD_EDITOR=/usr/bin/nvim
export EDITOR=/usr/bin/nvim
export VISUAL=/usr/bin/nvim
export TERMINAL=/usr/bin/footclient
export PAGER="bat --style=header,rule,snip"
export BROWSER=/usr/bin/qutebrowser
-1
View File
@@ -1 +0,0 @@
export ZDOTDIR="$HOME/.config/zsh"
@@ -1 +0,0 @@
br_netfilter
@@ -0,0 +1,8 @@
[Login]
IdleAction=suspend-then-hibernate
IdleActionSec=10min
HandlePowerKey=suspend-then-hibernate
HandlePowerKeyLongPress=poweroff
HandleLidSwitch=suspend-then-hibernate
HandleLidSwitchExternalPower=suspend-then-hibernate
HandleLidSwitchDocked=ignore
@@ -1,2 +1,2 @@
[Sleep] [sleep]
HibernateDelaySec=30min HibernateDelaySec=30min
+2 -2
View File
@@ -25,8 +25,8 @@ icon-signed=✔
icon-signed-encrypted=✔ icon-signed-encrypted=✔
icon-unknown=✘ icon-unknown=✘
icon-invalid=⚠ icon-invalid=⚠
reverse-thread-order=false reverse-thread-order=true
threading-enabled=false threading-enabled=true
[viewer] [viewer]
always-show-mime=true always-show-mime=true
+2 -2
View File
@@ -73,12 +73,12 @@ D = :delete-message<Enter>
<tab> = :next-part<Enter> <tab> = :next-part<Enter>
<C-o> = :prev-part<Enter> <C-o> = :prev-part<Enter>
<backtab> = :prev-part<Enter> <backtab> = :prev-part<Enter>
<C-l> = :open-link <space>
A = :unmark -a<Enter>:mark -T<Enter>:archive flat<Enter> A = :unmark -a<Enter>:mark -T<Enter>:archive flat<Enter>
aa = :archive flat<Enter> aa = :archive flat<Enter>
D = :delete-message<Enter> D = :delete-message<Enter>
dd = :mv Trash<Enter> dd = :mv Trash<Enter>
f = :open-link <space> f = :forward -A<Enter>
<C-f> = :forward -A<Enter>
H = :toggle-headers<Enter> H = :toggle-headers<Enter>
J = :next-message<Enter> J = :next-message<Enter>
K = :prev-message<Enter> K = :prev-message<Enter>
-23
View File
@@ -1,23 +0,0 @@
# output
set $out-left DP-1
set $out-right DP-2
output $out-left resolution 2560x1440 position 0 0
output $out-right resolution 3840x2160 position 2560 0
# switch to workspace
workspace 1 output $out-left
workspace 2 output $out-left
workspace 3 output $out-left
workspace 4 output $out-left
workspace 5 output $out-left
workspace 6 output $out-right
workspace 7 output $out-right
workspace 8 output $out-right
workspace 9 output $out-right
workspace 10 output $out-right
workspace INS output $out-left
workspace DEL output $out-right
workspace HOM output $out-left
workspace END output $out-right
workspace PUp output $out-left
workspace PDn output $out-right
@@ -1,41 +0,0 @@
{
"network": {
"interface": "enp6s0",
"format-disabled": " Disabled",
"format-wifi": " {bandwidthDownBits:>} 󰶡 {bandwidthUpBits:>} 󰶣 ({signalStrength}%)",
"tooltip-format-wifi": "{essid}",
"format-ethernet": "󰈀 {bandwidthDownBits:>} 󰶡 {bandwidthUpBits:>} 󰶣",
"tooltip-format-ethernet": "{ifname}: {ipaddr}/{cidr}",
"format-disconnected": " Disconnected",
"on-click": "footclient --app-id floating_shell --window-size-chars 60x45 -e nmtui",
"interval": 2
},
"disk#hdd1": {
"path": "/mnt/hdd1",
"interval": 30,
"format": " /mnt/hdd1 {specific_free:0.0f} of {specific_total:0.0f} GB free",
"unit": "GB",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /mnt/hdd1/'"
},
"custom/nvidia": {
"exec": "nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,nounits,noheader | sed 's/\\([0-9]\\+\\), \\([0-9]\\+\\), \\([0-9]\\+\\)/\\1% \\2MB \\3°C/g'",
"format": "󰓅 {}",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x45 nvtop'",
"interval": 1
},
"modules-right": [
"idle_inhibitor",
"cpu",
"custom/cputemp",
"memory",
"custom/nvidia",
"disk#root",
"disk#hdd1",
"backlight",
"pulseaudio",
"battery",
"clock",
"tray",
"custom/power"
]
}
@@ -0,0 +1,12 @@
# `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after gtkgreet.
exec "qtgreet; swaymsg exit"
bindsym Mod4+shift+e exec swaynag \
-t warning \
-m 'What do you want to do?' \
-b 'Poweroff' 'sudo poweroff' \
-b 'Reboot' 'sudo reboot'
output DP-1 resolution 2560x1440 position 0 0
# include /etc/sway/config.d/*
@@ -1,3 +0,0 @@
output DP-1 resolution 2560x1440 position 0 0
output DP-2 resolution 3840x2160 position 2560 0
exec "regreet; swaymsg exit"
@@ -1,3 +0,0 @@
[Login]
HandlePowerKey=ignore
HandlePowerKeyLongPress=poweroff
@@ -1,5 +0,0 @@
[Sleep]
AllowSuspend=no
AllowHibernation=no
AllowHybridSleep=no
AllowSuspendThenHibernate=no
+70
View File
@@ -0,0 +1,70 @@
set $out-left DP-1
set $out-right DP-2
output $out-left resolution 2560x1440 position 0 0
output $out-right resolution 3840x2160 position 2560 0
# switch to workspace
workspace $ws1 output $out-left
workspace $ws2 output $out-right
workspace $ws3 output $out-left
workspace $ws4 output $out-right
workspace $ws5 output $out-left
workspace $ws6 output $out-right
workspace $ws7 output $out-left
workspace $ws8 output $out-right
workspace $ws9 output $out-left
workspace $ws10 output $out-right
# switch to workspace
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
bindsym $mod+Insert workspace $ws5
bindsym $mod+Delete workspace $ws6
bindsym $mod+Home workspace $ws7
bindsym $mod+End workspace $ws8
bindsym $mod+Prior workspace $ws9
bindsym $mod+Next workspace $ws10
# Move focused container to workspace
bindsym $mod+Ctrl+1 move container to workspace $ws1
bindsym $mod+Ctrl+2 move container to workspace $ws2
bindsym $mod+Ctrl+3 move container to workspace $ws3
bindsym $mod+Ctrl+4 move container to workspace $ws4
bindsym $mod+Ctrl+5 move container to workspace $ws5
bindsym $mod+Ctrl+6 move container to workspace $ws6
bindsym $mod+Ctrl+7 move container to workspace $ws7
bindsym $mod+Ctrl+8 move container to workspace $ws8
bindsym $mod+Ctrl+9 move container to workspace $ws9
bindsym $mod+Ctrl+0 move container to workspace $ws10
bindsym $mod+Ctrl+Insert move container to workspace $ws5
bindsym $mod+Ctrl+Delete move container to workspace $ws6
bindsym $mod+Ctrl+Home move container to workspace $ws7
bindsym $mod+Ctrl+End move container to workspace $ws8
bindsym $mod+Ctrl+Prior move container to workspace $ws9
bindsym $mod+Ctrl+Next move container to workspace $ws10
# Move to workspace with focused container
bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9; workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10; workspace $ws10
bindsym $mod+Shift+Insert move container to workspace $ws5; workspace $ws5
bindsym $mod+Shift+Delete move container to workspace $ws8; workspace $ws6
bindsym $mod+Shift+Home move container to workspace $ws6; workspace $ws7
bindsym $mod+Shift+End move container to workspace $ws9; workspace $ws8
bindsym $mod+Shift+Prior move container to workspace $ws7; workspace $ws9
bindsym $mod+Shift+Next move container to workspace $ws10; workspace $ws10
@@ -0,0 +1,34 @@
{
"disk#disk1": {
"path": "/",
"interval": 30,
"format": " / {specific_free:0.0f} of {specific_total:0.0f} GB free",
"unit": "GB",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /'"
},
"disk#disk2": {
"path": "/mnt/hdd1",
"interval": 30,
"format": " /mnt/hdd1 {specific_free:0.0f} of {specific_total:0.0f} GB free",
"unit": "GB",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /mnt/hdd1/'"
},
"network": {
"interface": "enp6s0",
"interval": 5,
"format-wifi": "{icon}",
"format-ethernet": "󰈀",
"format-disconnected": "󰖪",
"format-disabled": "󰀝",
"format-icons": [ "󰤯", "󰤟", "󰤢", "󰤥", "󰤨" ],
"format-wifi": "{icon} {ipaddr} {essid} ({signalStrength}%)",
"format-ethernet": "{icon} {ipaddr}",
"format-disconnected": "", //An empty format will hide the module.
"tooltip-format": "{icon} {ifname}: {ipaddr}",
"tooltip-format-ethernet": "{icon} {ifname}: {ipaddr}",
"tooltip-format-wifi": "{icon} {ifname} ({essid}): {ipaddr} ({signalStrength}%)",
"tooltip-format-disconnected": "{icon} disconnected",
"tooltip-format-disabled": "{icon} disabled",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 60x45 nmtui connect'"
}
}
@@ -1,26 +0,0 @@
# input
input type:tablet_tool map_to_region 2560 0 2560 1440
# output
exec create_output HEADLESS-1
output DP-1 resolution 5120x1440 position 0 0
output HEADLESS-1 resolution 2560x1440 position 5120 0
bindsym $mod+x output create HEADLESS-1
bindsym $mod+Shift+x output HEADLESS-1 unplug
workspace 1 output DP-1
workspace 2 output DP-1
workspace 3 output DP-1
workspace 4 output DP-1
workspace 5 output DP-1
workspace 6 output DP-1
workspace 7 output DP-1
workspace 8 output DP-1
workspace 9 output DP-1
workspace 10 output DP-1
workspace INS output HEADLESS-1
workspace DEL output HEADLESS-1
workspace HOM output HEADLESS-1
workspace END output HEADLESS-1
workspace PUp output HEADLESS-1
workspace PDn output HEADLESS-1
@@ -1,41 +0,0 @@
{
"network": {
"interface": "wlan0",
"format-disabled": " Disabled",
"format-wifi": " {bandwidthDownBits:>} 󰶡 {bandwidthUpBits:>} 󰶣 ({signalStrength}%)",
"tooltip-format-wifi": "{essid}",
"format-ethernet": "󰈀 {bandwidthDownBits:>} 󰶡 {bandwidthUpBits:>} 󰶣",
"tooltip-format-ethernet": "{ifname}: {ipaddr}/{cidr}",
"format-disconnected": " Disconnected",
"on-click": "footclient --app-id floating_shell --window-size-chars 60x45 -e nmtui",
"interval": 2
},
"disk#hdd1": {
"path": "/mnt/hdd1",
"interval": 30,
"format": " /mnt/hdd1 {specific_free:0.0f} of {specific_total:0.0f} GB free",
"unit": "GB",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /mnt/hdd1/'"
},
"custom/nvidia": {
"exec": "nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv,nounits,noheader | sed 's/\\([0-9]\\+\\), \\([0-9]\\+\\), \\([0-9]\\+\\)/\\1% \\2MB \\3°C/g'",
"format": "󰓅 {}",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 120x45 nvtop'",
"interval": 1
},
"modules-right": [
"idle_inhibitor",
"cpu",
"custom/cputemp",
"memory",
"custom/nvidia",
"disk#root",
"disk#hdd1",
"backlight",
"pulseaudio",
"battery",
"clock",
"tray",
"custom/power"
]
}
@@ -0,0 +1,12 @@
# `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after gtkgreet.
exec "qtgreet; swaymsg exit"
bindsym Mod4+shift+e exec swaynag \
-t warning \
-m 'What do you want to do?' \
-b 'Poweroff' 'sudo poweroff' \
-b 'Reboot' 'sudo reboot'
output DP-1 resolution 5120x1440
# include /etc/sway/config.d/*
@@ -1,2 +0,0 @@
output DP-1 resolution 5120x1440
exec "regreet; swaymsg exit"
@@ -1,3 +0,0 @@
[Login]
HandlePowerKey=ignore
HandlePowerKeyLongPress=poweroff
@@ -1,5 +0,0 @@
[Sleep]
AllowSuspend=no
AllowHibernation=no
AllowHybridSleep=no
AllowSuspendThenHibernate=no
+49
View File
@@ -0,0 +1,49 @@
output DP-1 resolution 5120x1440
# switch to workspace
workspace $ws1 output DP-0
workspace $ws2 output DP-0
workspace $ws3 output DP-0
workspace $ws4 output DP-0
workspace $ws5 output DP-0
workspace $ws6 output DP-0
workspace $ws7 output DP-0
workspace $ws8 output DP-0
workspace $ws9 output DP-0
workspace $ws10 output DP-0
# switch to workspace
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
# Move focused container to workspace
bindsym $mod+Ctrl+1 move container to workspace $ws1
bindsym $mod+Ctrl+2 move container to workspace $ws2
bindsym $mod+Ctrl+3 move container to workspace $ws3
bindsym $mod+Ctrl+4 move container to workspace $ws4
bindsym $mod+Ctrl+5 move container to workspace $ws5
bindsym $mod+Ctrl+6 move container to workspace $ws6
bindsym $mod+Ctrl+7 move container to workspace $ws7
bindsym $mod+Ctrl+8 move container to workspace $ws8
bindsym $mod+Ctrl+9 move container to workspace $ws9
bindsym $mod+Ctrl+0 move container to workspace $ws10
# Move to workspace with focused container
bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9; workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10; workspace $ws10
@@ -0,0 +1,34 @@
{
"disk#disk1": {
"path": "/",
"interval": 30,
"format": " / {specific_free:0.0f} of {specific_total:0.0f} GB free",
"unit": "GB",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /'"
},
"disk#disk2": {
"path": "/mnt/hdd1",
"interval": 30,
"format": " /mnt/hdd1 {specific_free:0.0f} of {specific_total:0.0f} GB free",
"unit": "GB",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 80x45 ncdu -x /mnt/hdd1/'"
},
"network": {
"interface": "wlp5s0",
"interval": 5,
"format-wifi": "{icon}",
"format-ethernet": "󰈀",
"format-disconnected": "󰖪",
"format-disabled": "󰀝",
"format-icons": [ "󰤯", "󰤟", "󰤢", "󰤥", "󰤨" ],
"format-wifi": "{icon} {ipaddr} {essid} ({signalStrength}%)",
"format-ethernet": "{icon} {ipaddr}",
"format-disconnected": "", //An empty format will hide the module.
"tooltip-format": "{icon} {ifname}: {ipaddr}",
"tooltip-format-ethernet": "{icon} {ifname}: {ipaddr}",
"tooltip-format-wifi": "{icon} {ifname} ({essid}): {ipaddr} ({signalStrength}%)",
"tooltip-format-disconnected": "{icon} disconnected",
"tooltip-format-disabled": "{icon} disabled",
"on-click": "swaymsg exec 'footclient --app-id floating_shell --window-size-chars 60x45 nmtui connect'"
}
}
-7
View File
@@ -1,7 +0,0 @@
# input
input type:touchpad {
pointer_accel 0.8
}
# output
output eDP-1 resolution 2736x1824 scale 1.6
@@ -1,25 +0,0 @@
{
"network": {
"format-disabled": " Disabled",
"format-wifi": " {bandwidthDownBits:>} 󰶡 {bandwidthUpBits:>} 󰶣 ({signalStrength}%)",
"tooltip-format-wifi": "{essid}",
"format-ethernet": "󰈀 {bandwidthDownBits:>} 󰶡 {bandwidthUpBits:>} 󰶣",
"tooltip-format-ethernet": "{ifname}: {ipaddr}/{cidr}",
"format-disconnected": " Disconnected",
"on-click": "footclient --app-id floating_shell --window-size-chars 60x45 -e nmtui",
"interval": 2
},
"modules-right": [
"idle_inhibitor",
"cpu",
"custom/cputemp",
"memory",
"disk#root",
"backlight",
"pulseaudio",
"battery",
"clock",
"tray",
"custom/power"
]
}
-2
View File
@@ -1,2 +0,0 @@
output eDP-1 resolution 2736x1824 scale 1.6
exec "regreet; swaymsg exit"
@@ -1,8 +0,0 @@
[Login]
IdleAction=hibernate
IdleActionSec=10min
HandlePowerKey=hibernate
HandlePowerKeyLongPress=poweroff
HandleLidSwitch=hibernate
HandleLidSwitchExternalPower=hibernate
HandleLidSwitchDocked=ignore
@@ -1,12 +0,0 @@
#!/bin/sh
# This file (or a link to it) must be in /lib/systemd/system-sleep/iptsd.sh
logger -t "iptsd-hack" "\$0=$0, \$1=$1, \$2=$2"
if [ $1 == "pre" ]; then
logger -t "iptsd-hack" "stopping iptsd"
iptsd-systemd -- stop
else
logger -t "iptsd-hack" "starting iptsd"
iptsd-systemd -- start
fi
-8
View File
@@ -1,8 +0,0 @@
# input
input type:touchpad {
pointer_accel 0.4
}
bindswitch tablet:on busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true
# output
output eDP-1 resolution 2496x1664 scale 1.6
@@ -1,25 +0,0 @@
{
"network": {
"format-disabled": " Disabled",
"format-wifi": " {bandwidthDownBits:>} 󰶡 {bandwidthUpBits:>} 󰶣 ({signalStrength}%)",
"tooltip-format-wifi": "{essid}",
"format-ethernet": "󰈀 {bandwidthDownBits:>} 󰶡 {bandwidthUpBits:>} 󰶣",
"tooltip-format-ethernet": "{ifname}: {ipaddr}/{cidr}",
"format-disconnected": " Disconnected",
"on-click": "footclient --app-id floating_shell --window-size-chars 60x45 -e nmtui",
"interval": 2
},
"modules-right": [
"idle_inhibitor",
"cpu",
"custom/cputemp",
"memory",
"disk#root",
"backlight",
"pulseaudio",
"battery",
"clock",
"tray",
"custom/power"
]
}
-2
View File
@@ -1,2 +0,0 @@
output eDP-1 resolution 2496x1664 scale 1.6
exec "regreet; swaymsg exit"
@@ -1,8 +0,0 @@
[Login]
IdleAction=hibernate
IdleActionSec=10min
HandlePowerKey=hibernate
HandlePowerKeyLongPress=poweroff
HandleLidSwitch=hibernate
HandleLidSwitchExternalPower=hibernate
HandleLidSwitchDocked=ignore
@@ -1,2 +0,0 @@
[Sleep]
HibernateDelaySec=30min
@@ -1,12 +0,0 @@
#!/bin/sh
# This file (or a link to it) must be in /lib/systemd/system-sleep/iptsd.sh
logger -t "iptsd-hack" "\$0=$0, \$1=$1, \$2=$2"
if [ $1 == "pre" ]; then
logger -t "iptsd-hack" "stopping iptsd"
iptsd-systemd -- stop
else
logger -t "iptsd-hack" "starting iptsd"
iptsd-systemd -- start
fi
-129
View File
@@ -1,129 +0,0 @@
#!/bin/sh
set -e
# general
sudo systemctl enable --now sshd.service
sudo systemctl enable --now fstrim.timer
yay -S plymouth tldextract go nodejs unzip exa topgrade
# display manager
yay -S greetd qtgreet
# sway
yay -S manjaro-sway-settings swaytools swaylock-effects pamac-tray-plasma unipicker mako ly wlsunset pcmanfm-qt wev gtklock idlehack sworkstyle foot
systemctl --now --user enable foot-server.socket
# systemctl --now --user enable foot-server
# systemctl --now --user enable idlehack
# systemctl --now --user enable sworkstyle
# systemctl --now --user enable pcmanfm
# nvidia
yay -S cuda nvidia-settings nvidia-docker
# python
yay -S python-pip pyenv ipython
# sound
yay -S manjaro-pipewire pavucontrol-qt
# video sharing
yay -S wireplumber xdg-desktop-portal xdg-desktop-portal-wlr
# theme
yay -S mint-themes mint-y-icons kvantum-theme-catppuccin-git catppuccin-gtk-theme-latte catppuccin-gtk-theme-mocha breeze-grub breeze-gtk breeze-icons
yay -S lxinput-gtk3 qt6ct pamac-gtk3
# terminal and shell
yay -S nushell oh-my-posh carapace-bin zoxide
chsh -s /usr/bin/nu
oh-my-posh init nu --config https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/refs/heads/main/themes/peru.omp.json
# code
yay -S neovim tmux tig diff-so-fancy ripgrep urlscan
git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm
# git
yay -S git-secret git-delta git-lfs lazygit
# formatters
yay -S python-black python-blackdoc python-pyment python-isort \
eslint_d eslint jq yamlfmt shfmt prettierd
# file sync
yay -S rclone dropbox
systemctl --user daemon-reload
rclone config # follow instructions and paste creds from https://console.cloud.google.com/apis/credentials
systemctl --now --user enable rclone-gdrive
systemctl --now --user enable dropbox
# docker incl non-root daemon
yay -S docker docker-compose dry-bin nvidia-docker docker-buildx
docker plugin install grafana/loki-docker-driver --alias loki --grant-all-permissions
sudo groupadd docker && sudo usermod -aG docker $USER
sudo systemctl enable --now containerd.service
sudo systemctl enable --now docker.service
# docker multi-platform build
yay -S qemu-user-static-binfmt qemu-user-static
# printer
yay -S manajaro-printer samsung-unified-driver-printer
# monitors
yay -S iftop btop nvtop lazyjournal isd bandwhich
# pdf
yay -S sioyek zathura zathura-pdf-mupdf zathura-djvu zathura-ps
# fonts
yay -S noto-fonts-emoji ttf-hack
# coolercontrol
yay -S coolercontrol
sudo systemctl enable --now coolercontrold.service
sudo systemctl edit coolercontrold.service # set log level to WARN
# video streaming
yay -S vlc protobuf yt-dlp
yay -S castnow
# cal+email+contacts
yay -S khard aerc khal vdirsyncer python-aiohttp-oauthlib pandoc
# latex
yay texlive-latexextra
# div applications
yay -S \
vesktop \
qimgv \
firefox \
font-manager \
i3status \
ncspot \
qalculate-qt \
qbittorrent \
quodlibet \
qutebrowser \
pass \
rofi \
steam \
teamviewer \
yazi \
eza
# firefox windowed fullscreen
# can be achieved by setting full-screen-api.ignore-widgets to true in about:config
wget -P ~/.local/share/fonts/ https://raw.githubusercontent.com/SUNET/static_sunet_se/refs/heads/master/fonts/Akkurat-Mono.otf
sudo mkdir -p /usr/share/backgrounds/ultrawide/
sudo wget -O rainbowsmoke.jpg -P /usr/share/backgrounds/ultrawide https://superultrawidewallpaper.com/wp-content/uploads/2022/02/rainbow-smoke-3840x1080-1860x523.jpg
# set up vdirsyncer with google calendar using
# https://vdirsyncer.pimutils.org/en/stable/config.html#google
# yazi plugins
ya pkg add yazi-rs/plugins:chmod
ya pkg add yazi-rs/plugins:git
ya pkg add yazi-rs/plugins:mount
ya pkg add yazi-rs/plugins:piper
ya pkg add yazi-rs/plugins:smart-enter
ya pkg add yazi-rs/plugins:smart-filter
ya pkg add yazi-rs/plugins:toggle-pane
+58
View File
@@ -0,0 +1,58 @@
mouse = true
hide_blocked_users = true
messages_limit = 50
editor = "default"
timestamps = true
timestamps_format = "01-02 15:04:05 (Z07:00)"
show_attachment_links = false
[keys]
focus_guilds_tree = "Ctrl+O"
focus_messages_text = "Ctrl+P"
focus_message_input = "Ctrl+N"
toggle_guilds_tree = "Ctrl+P"
select_previous = "Rune[k]"
select_next = "Rune[j]"
select_first = "Rune[g]"
select_last = "Rune[G]"
logout = "Ctrl+Shift+D"
quit = "Ctrl+C"
[keys.guilds_tree]
select_current = "Enter"
[keys.messages_text]
select_reply = "Rune[s]"
select_pin = "Rune[p]"
reply = "Rune[r]"
reply_mention = "Rune[R]"
delete = "Rune[d]"
yank = "Rune[y]"
open = "Rune[o]"
[keys.message_input]
send = "Enter"
editor = "Ctrl+E"
cancel = "Ctrl+D"
[notifications]
enabled = true
duration = 500
[notifications.sound]
enabled = true
only_on_ping = false
[theme]
border_color = "default"
border_padding = [0, 0, 1, 1]
title_color = "default"
background_color = "default"
[theme.guilds_tree]
auto_expand_folders = true
channel_color = "white"
graphics = true
guild_color = "white"
private_channel_color = "white"
[theme.messages_text]
author_color = "aqua"
content_color = "white"
emoji_color = "green"
link_color = "blue"
attachment_color = "yellow"
+45
View File
@@ -0,0 +1,45 @@
[global]
width = (0, 600)
height = (0, 300)
origin = top-right
offset = (10, 50)
notification_limit = 200 # Maximum number of notification (0 means no limit)
frame_width = 1 # Defines width in pixels of frame around the notification window. Set to 0 to disable.
frame_color = "#788388"
separator_color = #263238
font = Noto Sans 10
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# Markup is allowed
format = "<b>%s</b> %p\n%b"
icon_position = off # Align icons left/right/off
icon_path = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/ # Paths to default icons.
sticky_history = no
history_length = 100 # Maximum amount of notifications kept in history
[urgency_low]
background = "#263238"
foreground = "#556064"
timeout = 20
default_icon = dialog-information
[urgency_normal]
background = "#263238"
foreground = "#F9FAF9"
timeout = 40
override_pause_level = 30
default_icon = dialog-information
[urgency_critical]
background = "#D62929"
foreground = "#F9FAF9"
timeout = 0
override_pause_level = 60
default_icon = dialog-warning
# vim: ft=cfg
+169 -402
View File
@@ -5,250 +5,144 @@
# "defopt", # "defopt",
# ] # ]
# /// # ///
# TODO
# pre-luks remote ssh
# add ufw setup
# - sudo ufw allow 22/tcp comment "ssh"
# - sudo ufw default allow FORWARD
# - sudo ufw allow 2222
# - ... etc
# - sudo enable ufw
from difflib import unified_diff from difflib import unified_diff
from getpass import getuser
from os.path import lexists
from pathlib import Path from pathlib import Path
from shutil import rmtree
from subprocess import run from subprocess import run
from urllib.request import urlretrieve from urllib.request import urlretrieve
HOSTNAME = open("/etc/hostname").read().strip() CFG = Path("~/.config").expanduser()
HOME_TGT = Path.home() DOTFILES = Path("~/dotfiles").expanduser()
ROOT_TGT = Path("/")
DOTFILES = Path(__file__).resolve().parent
HOME_SRC = DOTFILES / "HOME"
ROOT_SRC = DOTFILES / "ROOT"
CFG_TGT = HOME_TGT / ".config"
CFG_SRC = DOTFILES / "CONFIG"
CUSTOM_SRC = DOTFILES / f"custom-{HOSTNAME}"
USERNAME = getuser()
installmap = dict( installmap = dict(
fonts=( fonts=("noto-fonts-emoji", "ttf-hack", "font-manager"),
"noto-fonts-emoji", nushell=("nushell", "oh-my-posh", "carapace-bin", "zoxide"),
"ttf-hack",
"font-manager",
),
zsh=(
"zsh",
"zsh-autosuggestions",
"zsh-syntax-highlighting",
"zsh-vi-mode",
"atuin",
"fzf",
"git-delta",
"starship",
"zoxide",
"bat",
),
tmux=("tmux", "urlscan"), tmux=("tmux", "urlscan"),
editors=( nvim=("neovim", "ripgrep"),
"neovim", utils=("uv", "bat", "ncdu", "unzip", "jq"),
"helix", gittools=("tig", "diff-so-fancy", "git-secret", "git-delta", "git-lfs", "lazygit"),
"ripgrep", pdftools=("sioyek", "zathura", "zathura-pdf-mupdf", "zathura-djvu", "zathura-ps"),
"npm", # required for nvim plugins media=("vlc", "mpv", "protobuf", "yt-dlp", "quodlibet", "qimgv"),
"go", # required for vim-hexokinase build filebrowsers=("pcmanfm", "yazi", "zoxide", "eza"),
),
utils=("uv", "ncdu", "unzip", "jq", "bluetui"),
gittools=(
"tig",
"diff-so-fancy",
"git-secret",
"git-delta",
"git-lfs",
"lazygit",
"bat",
),
readers=(
"sioyek",
"zathura",
"zathura-pdf-mupdf",
"zathura-djvu",
"zathura-ps",
"typst",
"okular",
"calligra",
"libreoffice-fresh",
"xournalpp",
),
mediaviewers=(
# video
"vlc",
"mpv",
"protobuf",
"yt-dlp",
"v4l-utils",
# photos
"qimgv",
"digikam",
# music
"quodlibet",
"gst-plugins-good", # required deb
# audio
"pamixer",
"noisetorch",
),
filebrowsers=(
"yazi",
"ranger",
"pcmanfm",
"thunar",
"gparted",
"sshfs",
"file-roller",
"7zip", # explore zip files
"zoxide", # quick search
"eza", # pretty alternative to `ls`
"glow", # markdown renderer
),
netbrowsers=( netbrowsers=(
"qutebrowser", "qutebrowser",
"firefox", "firefox",
"google-chrome", "python-adblock",
"w3m",
"python-adblock", # for qutebrowser ad blocker
"python-tldextract", "python-tldextract",
"bitwarden-cli", # for qutebrowser autofill "bitwarden-cli", # for qutebrowser autofill
), ),
chat=("discordo-git", "gurk"),
emailcalrss=( emailcalrss=(
"vdirsyncer", # sync calendar+contacts
"khard", # contacts "khard", # contacts
"khal", # calendar "khal", # calendar
"aerc", # email "aerc", # email
"eilmeldung", # rss reader "pandoc", # md2html emails
"vdirsyncer", # sync calendar+contacts "pass", # password manager
"pandoc", # md2html for aerc "w3m", # terminal browser
"pass", # password manager for aerc "newsboat", # rss reader
"w3m", # terminal browser for aerc
"python-aiohttp-oauthlib", # for google vdirsyncer "python-aiohttp-oauthlib", # for google vdirsyncer
), ),
monitors=( monitors=(
"htop", # hardware
"btop", # hardware "btop", # hardware
"nvtop", # gpu "nvtop", # gpu
"lazyjournal", # journald "lazyjournal", # journald
"isd", # systemd "isd", # systemd
"bandwhich", # network "bandwhich", # network
"sysstat",
), ),
apps=("keepassxc", "bitwarden", "qalculate-gtk", "vesktop"), apps=("bitwarden", "qalculate-gtk", "vesktop"),
sway=( swaytools=(
"xdg-terminal-exec", "flashfocus", # quick flash when changing app in focus
# visuals "noisetorch", # noise cancellation
"wlsunset", # eye saver
"wdisplays", # ui for display settings
# clipboard
"wl-clip-persist", # keep clipboard after close
# div
"unipicker", # unicode symbol selector "unipicker", # unicode symbol selector
"wl-clip-persist", # keep clipboard after close
"wlsunset", # eye saver
"blueman", # bluetooth "blueman", # bluetooth
"wdisplays", # ui for display settings
"wev", # debugging of ui "wev", # debugging of ui
"gtklock", # lock screen
), ),
remotedata=("rclone", "dropbox", "minio-client"), remotedata=("rclone", "dropbox", "minio-client"),
screensharing=("wireplumber",), screensharing=(
nvidia=("cuda", "nvidia-settings"), "wireplumber",
coolercontrol=("coolercontrol",), "xdg-desktop-portal",
docker=( "xdg-desktop-portal-wlr",
"docker",
"dry-bin", # docker tui
), ),
k8s=( optional_nvidia=("cuda", "nvidia-settings"),
optional_coolercontrol=("coolercontrol",),
optional_containers=(
"docker",
"docker-compose",
"docker-buildx", # advanced build "docker-buildx", # advanced build
"qemu-user-static-binfmt", # build arm64 "qemu-user-static-binfmt", # build arm64
"qemu-user-static", # build arm64 "qemu-user-static", # build arm64
"dry-bin", # docker tui
"k9s", # kubernetes tui "k9s", # kubernetes tui
"wireguard-tools", # includes wg-quick
"sops", # secret mgmt
"flux-bin",
"open-iscsi", # required by longhorn
"kubectl-cnpg",
# ssh for luks unlocking
"dracut-crypt-ssh",
"dropbear",
),
virtwin=(
"qemu-full", # the emulator itself
"libvirt", # the backend manager - handles running qemu
"virt-manager", # the graphical dashboard
"virt-viewer", # the display window
"iptables-nft", # for using iptables instead of nft
"dnsmasq", # lightweight DHCP and DNS server
"bridge-utils", # tools for creating network bridges
"vde2", # networking plumbing
"openbsd-netcat", # networking plumbing
"swtpm", # win11 requirement
), ),
optional_nvidia_containers=("nvidia-docker",),
) )
def compare(src: Path, tgt: Path) -> str: def compare_files(a: Path, b: Path) -> str:
return "".join(
unified_diff(open(a).readlines(), open(b).readlines(), str(a), str(b))
)
def helper_symlink_contents(
source_folder: str | Path, target_folder: str | Path, overwrite: bool
) -> None:
source_folder = Path(source_folder).expanduser()
target_folder = Path(target_folder).expanduser()
target_folder.mkdir(exist_ok=True)
for folder in [source_folder, target_folder]:
assert folder.expanduser().is_dir()
for src in source_folder.iterdir():
tgt = target_folder / src.name
if tgt.exists():
if src.is_dir(): if src.is_dir():
diff = "" if overwrite:
for subsrc in src.glob("**/*"): tgt.rmdir()
subpath = subsrc.relative_to(src) # NOTE: dirty code!
subtgt = tgt / subpath
if subtgt.exists() and lexists(subtgt):
diff += compare(subsrc, subtgt)
return diff
else:
srcdata = open(src).readlines() if src.exists() else []
tgtdata = open(tgt).readlines() if tgt.exists() else []
return "".join(unified_diff(srcdata, tgtdata, str(src), str(tgt)))
def helper_maybe_copy(
src_folder: Path, tgt_folder: Path, sub: str, overwrite: bool, symlink: bool
) -> bool:
src = src_folder.expanduser() / sub
tgt = tgt_folder.expanduser() / sub
assert src.exists()
tgt.parent.mkdir(exist_ok=True, parents=True)
if lexists(tgt):
if not overwrite:
if diff := compare(src, tgt):
print("DIFF:\n" + diff)
if input("overwrite? (y/n) ") == "n":
return False
if tgt.is_file() or tgt.is_symlink():
tgt.unlink()
else:
rmtree(str(tgt))
if symlink:
tgt.symlink_to(src) tgt.symlink_to(src)
else: else:
run(["cp", str(src), str(tgt)]) diff = ""
for subsrc in src.glob("**/*"):
subpath = subsrc.relative_to(source_folder)
subtgt = target_folder / subpath
if subtgt.exists():
diff += compare_files(subsrc, subtgt)
if diff:
print("DIFF:\n" + diff)
if input("overwrite? (y/n) ") == "y":
tgt.rmdir()
tgt.symlink_to(src)
else:
if overwrite:
tgt.unlink()
tgt.symlink_to(src)
else:
tgt = target_folder / src.name
diff = compare_files(src, tgt)
if diff:
print("DIFF:\n" + diff)
if input("overwrite? (y/n) ") == "y":
tgt.unlink()
tgt.symlink_to(src)
def helper_maybe_continue(path: Path, overwrite: bool) -> bool:
path = path.expanduser()
match path.exists(), overwrite:
case False, _:
return True return True
case True, True:
path.unlink()
def helper_clone_foldercontents( return True
src_parent: Path, case True, False:
tgt_parent: Path, return False
folder: str, case err:
overwrite: bool, raise ValueError(err)
symlink: bool = True,
) -> None:
src_folder = src_parent.expanduser() / folder
tgt_folder = tgt_parent.expanduser() / folder
tgt_folder.mkdir(exist_ok=True, parents=True)
assert src_folder.is_dir()
assert tgt_folder.is_dir() or tgt_folder.is_symlink()
for src in src_folder.iterdir():
name = src.name
if name.endswith(".secret"): # git-secret item
continue
helper_maybe_copy(src_folder, tgt_folder, name, overwrite, symlink=symlink)
def helper_check_if_installed(pkg: str) -> bool: def helper_check_if_installed(pkg: str) -> bool:
return run(["pacman", "-Q", pkg], capture_output=True).returncode == 0 return run(["yay", "-Qs", pkg], capture_output=True).returncode == 0
def helper_uninstall(*pkgs: str) -> None: def helper_uninstall(*pkgs: str) -> None:
@@ -263,228 +157,129 @@ def helper_install(*pkgs: str, reinstall: bool) -> None:
def install_fonts(reinstall: bool) -> None: def install_fonts(reinstall: bool) -> None:
tgt = Path("~/.local/share/fonts/Akkurat-Mono.otf").expanduser()
tgt.parent.mkdir(exist_ok=True, parents=True)
urlretrieve( urlretrieve(
"https://raw.githubusercontent.com/SUNET/static_sunet_se/refs/heads/master/fonts/Akkurat-Mono.otf", "https://raw.githubusercontent.com/SUNET/static_sunet_se/refs/heads/master/fonts/Akkurat-Mono.otf",
tgt, Path("~/.local/share/fonts/Akkurat-Mono.otf").expanduser(),
) )
helper_install(*installmap["fonts"], reinstall=reinstall) helper_install(*installmap["fonts"], reinstall=reinstall)
def install_zsh(overwrite: bool, reinstall: bool) -> None: def install_nushell(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["zsh"], reinstall=reinstall) helper_install(*installmap["nushell"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "zsh", overwrite) helper_symlink_contents(DOTFILES / "nushell", CFG / "nushell", overwrite)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "atuin", overwrite) run("sudo chsh -s /usr/bin/nu".split())
run("chsh -s /usr/bin/zsh".split()) url = "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/refs/heads/main/themes/peru.omp.json"
helper_maybe_copy(CFG_SRC, CFG_TGT, "starship.toml", overwrite, symlink=True) run(["oh-my-posh", "init", "nu", "--config", url])
helper_maybe_copy(HOME_SRC, HOME_TGT, ".zshenv", overwrite, symlink=True)
def install_tmux(overwrite: bool, reinstall: bool) -> None: def install_tmux(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["tmux"], reinstall=reinstall) helper_install(*installmap["tmux"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "tmux", overwrite) helper_symlink_contents(DOTFILES / "tmux", CFG / "tmux", overwrite)
tpmpath = CFG_TGT / "tmux/plugins/tpm" tpmpath = CFG / "tmux/plugins/tpm"
if overwrite or not lexists(tpmpath): if overwrite or not tpmpath.exists():
if lexists(tpmpath): if tpmpath.exists():
if tpmpath.is_symlink(): tpmpath.rmdir()
tpmpath.unlink()
else:
rmtree(str(tpmpath))
run(["git", "clone", "https://github.com/tmux-plugins/tpm", tpmpath]) run(["git", "clone", "https://github.com/tmux-plugins/tpm", tpmpath])
def install_editors(overwrite: bool, reinstall: bool) -> None: def install_nvim(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["editors"], reinstall=reinstall) helper_install(*installmap["nvim"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "nvim", overwrite) helper_symlink_contents(DOTFILES / "nvim", CFG / "nvim", overwrite)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "helix", overwrite)
def install_gittools(overwrite: bool, reinstall: bool) -> None: def install_gittools(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["gittools"], reinstall=reinstall) helper_install(*installmap["gittools"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "tig", overwrite) helper_symlink_contents(DOTFILES / "tig", CFG / "tig", overwrite)
helper_maybe_copy(HOME_SRC, HOME_TGT, ".gitconfig", overwrite, symlink=True) gitcfgpath = Path("~/.gitconfig").expanduser()
if overwrite or not gitcfgpath.exists():
if gitcfgpath.exists():
gitcfgpath.unlink()
gitcfgpath.expanduser().symlink_to(DOTFILES / "HOME/.gitconfig")
def install_readers(overwrite: bool, reinstall: bool) -> None: def install_pdftools(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["readers"], reinstall=reinstall) helper_install(*installmap["pdftools"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "xournalpp", overwrite) helper_symlink_contents(DOTFILES / "sioyek", CFG / "sioyek", overwrite)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "sioyek", overwrite) helper_symlink_contents(DOTFILES / "zathura", CFG / "zathura", overwrite)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "zathura", overwrite)
def install_mediaviewers(reinstall: bool) -> None:
helper_install(*installmap["mediaviewers"], reinstall=reinstall)
def install_filebrowsers(overwrite: bool, reinstall: bool) -> None: def install_filebrowsers(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["filebrowsers"], reinstall=reinstall) helper_install(*installmap["filebrowsers"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "ranger", overwrite) helper_symlink_contents(DOTFILES / "yazi", CFG / "yazi", overwrite)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "yazi", overwrite)
for plugin in [ for plugin in [
"yazi-rs/plugins:chmod", "chmod",
"yazi-rs/plugins:git", "git",
"yazi-rs/plugins:mount", "mount",
"yazi-rs/plugins:piper", "piper",
"yazi-rs/plugins:smart-enter", "smart-enter",
"yazi-rs/plugins:smart-filter", "smart-filter",
"yazi-rs/plugins:toggle-pane", "toggle-pane",
"boydaihungst/file-extra-metadata",
]: ]:
run(f"ya pkg add {plugin}".split()) run(f"ya pkg add yazi-rs/plugins:{plugin}".split())
tgt = ".local/share/applications/userapp-file-roller.desktop"
helper_maybe_copy(HOME_SRC, HOME_TGT, tgt, overwrite, symlink=True)
def install_netbrowsers(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["netbrowsers"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "qutebrowser", overwrite)
helper_maybe_copy(HOME_SRC, HOME_TGT, ".w3m/keymap", overwrite, symlink=True)
(HOME_TGT / "Downloads").mkdir(exist_ok=True)
def install_chat(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["chat"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "discordo", overwrite)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "gurk", overwrite)
def install_monitors(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["monitors"], reinstall=reinstall)
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "btop", overwrite)
def install_emailcalrss(overwrite: bool, reinstall: bool) -> None: def install_emailcalrss(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["emailcalrss"], reinstall=reinstall) helper_install(*installmap["emailcalrss"], reinstall=reinstall)
for tgt in ["vdirsyncer", "khard", "khal", "aerc"]: for tgt in ["vdirsyncer", "khard", "khal", "aerc", "newsboat"]:
helper_clone_foldercontents(CFG_SRC, CFG_TGT, tgt, overwrite) helper_symlink_contents(DOTFILES / tgt, CFG / tgt, overwrite)
tgt = ".local/share/applications/userapp-khalimport.desktop" run(f"chmod 600 {CFG / 'aerc/accounts.conf'}".split())
helper_maybe_copy(HOME_SRC, HOME_TGT, tgt, overwrite, symlink=True)
run("systemctl enable --user --now vdirsyncer.timer".split())
run(f"chmod 600 {CFG_TGT / 'aerc/accounts.conf'}".split())
(HOME_TGT / "Calendars").mkdir(exist_ok=True)
(HOME_TGT / "Contacts").mkdir(exist_ok=True)
def install_sway(overwrite: bool, reinstall: bool) -> None: def install_swaytools(overwrite: bool, reinstall: bool) -> None:
helper_uninstall("autotiling", "cliphist") helper_install(*installmap["swaytools"], reinstall=reinstall)
helper_install(*installmap["sway"], reinstall=reinstall) sub = "sway/config.d"
# sudo stuff helper_symlink_contents(DOTFILES / sub, CFG / sub, overwrite)
run("sudo systemctl enable --now bluetooth".split())
for sub in [ for sub in [
"etc/systemd/logind.conf.d/suspend.conf", "etc/systemd/logind.conf.d/suspend.conf",
"etc/systemd/sleep.conf.d/hibernate.conf", "etc/systemd/sleep.conf.d/hibernate.conf",
"etc/greetd/sway.cfg",
"lib/systemd/system-sleep/iptsd.sh",
]: ]:
src = CUSTOM_SRC / "ROOT" / sub run(["sudo", "cp", str(DOTFILES / "ROOT" / sub), str(Path("/") / sub)])
if not src.exists():
continue
tgt = ROOT_TGT / sub
run(["sudo", "mkdir", "-p", str(tgt.parent)])
if tgt.exists():
if diff := compare(src, tgt):
print("DIFF:\n" + diff)
if input("overwrite? (y/n) ") == "n":
continue
run(["sudo", "rm", str(tgt)])
run(["sudo", "cp", str(src), str(tgt)])
run("sudo systemctl enable --now bluetooth".split()) run("sudo systemctl enable --now bluetooth".split())
# div app configs
if (tgt := CFG_TGT / "waybar/config").exists(): # precedence over config.jsonc
tgt.unlink()
for sub in [
"sway",
"waybar",
"gtklock",
"gtk-3.0",
"mako",
"fuzzel",
"nwg-drawer",
"xdg-desktop-portal-wlr",
"foot",
"xkb/symbols",
]:
helper_clone_foldercontents(CFG_SRC, CFG_TGT, sub, overwrite)
helper_maybe_copy(CFG_SRC, CFG_TGT, "xdg-terminals.list", overwrite, symlink=True)
helper_maybe_copy(CFG_SRC, CFG_TGT, "mimeapps.list", overwrite, symlink=True)
# custom sway configs
helper_clone_foldercontents(CUSTOM_SRC / "CONFIG", CFG_TGT, "sway", overwrite)
# custom waybar configs
helper_clone_foldercontents(CUSTOM_SRC / "CONFIG", CFG_TGT, "waybar", overwrite)
# desktop entries
helper_clone_foldercontents(
HOME_SRC,
HOME_TGT,
".local/share/applications",
overwrite,
)
def configure_pytools(overwrite: bool) -> None: def configure_pytools(overwrite: bool) -> None:
for sub in [".ipython/profile_default", ".jupyter"]: for sub in [".ipython/profile_default", ".jupyter"]:
tgt = HOME_TGT / sub helper_symlink_contents(DOTFILES / "HOME" / sub, Path("~") / sub, overwrite)
run(["mkdir", "-p", str(tgt)])
helper_clone_foldercontents(HOME_SRC, HOME_TGT, sub, overwrite)
def install_virtwin(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["virtwin"], reinstall=reinstall)
run(["sudo", "usermod", "-aG", "libvirt", USERNAME])
run("sudo virsh net-start default".split())
run("sudo virsh net-autostart default".split())
run("systemctl enable --now libvirtd".split())
def install_k8sreqs(overwrite: bool, reinstall: bool) -> None:
# sudo
helper_install(*installmap["k8s"], reinstall=reinstall)
run("sudo systemctl enable --now docker.service".split())
sub = "etc/modules-load.d/br_netfilter.conf"
run(["sudo", "cp", str(ROOT_SRC / sub), str(ROOT_TGT / sub)])
run("sudo systemctl enable --now iscsid".split())
# user
helper_clone_foldercontents(CFG_SRC, CFG_TGT, "k9s", overwrite)
# luks
run("sudo mkdir -p /root/.ssh".split())
run("sudo chmod 700 /root/.ssh".split())
run("sudo touch /root/.ssh/authorized_keys".split())
run("sudo chmod 600 /root/.ssh/authorized_keys".split())
def installer( def installer(
*,
overwrite: bool = False, overwrite: bool = False,
reinstall: bool = False, reinstall: bool = False,
with_gpu: bool = False,
with_containers: bool = False,
with_coolercontrol: bool = False,
) -> None: ) -> None:
if helper_check_if_installed("cliphist"):
helper_uninstall("cliphist")
print("removed cliphist")
install_fonts(reinstall) install_fonts(reinstall)
print("installed fonts") print("installed fonts")
install_zsh(overwrite, reinstall) install_nushell(overwrite, reinstall)
print("installed zsh") print("installed nushell")
install_tmux(overwrite, reinstall) install_tmux(overwrite, reinstall)
print("installed tmux") print("installed tmux")
install_editors(overwrite, reinstall) install_nvim(overwrite, reinstall)
print("installed editors") print("installed nvim")
helper_install(*installmap["utils"], reinstall=reinstall) helper_install(*installmap["utils"], reinstall=reinstall)
print("installed utils") print("installed utils")
install_gittools(overwrite, reinstall) install_gittools(overwrite, reinstall)
print("installed gittools") print("installed gittools")
install_readers(overwrite, reinstall) install_pdftools(overwrite, reinstall)
print("installed readers") print("installed pdftools")
install_mediaviewers(reinstall) helper_install(*installmap["media"], reinstall=reinstall)
print("installed mediaviewers") print("installed media")
install_filebrowsers(overwrite, reinstall) install_filebrowsers(overwrite, reinstall)
print("installed filebrowsers") print("installed filebrowsers")
install_netbrowsers(overwrite, reinstall) helper_install(*installmap["netbrowsers"], reinstall=reinstall)
print("installed netbrowsers") print("installed netbrowsers")
install_emailcalrss(overwrite, reinstall) install_emailcalrss(overwrite, reinstall)
print("installed emailcalrss") print("installed emailcalrss")
install_chat(overwrite, reinstall) helper_install(*installmap["monitors"], reinstall=reinstall)
print("installed chat")
install_monitors(overwrite, reinstall)
print("installed monitors") print("installed monitors")
helper_install(*installmap["apps"], reinstall=reinstall) helper_install(*installmap["apps"], reinstall=reinstall)
print("installed apps") print("installed apps")
install_sway(overwrite, reinstall) install_swaytools(overwrite, reinstall)
print("installed sway") print("installed sway")
helper_install(*installmap["remotedata"], reinstall=reinstall) helper_install(*installmap["remotedata"], reinstall=reinstall)
print("installed remotedata") print("installed remotedata")
@@ -492,62 +287,34 @@ def installer(
print("installed screensharing") print("installed screensharing")
configure_pytools(overwrite=overwrite) configure_pytools(overwrite=overwrite)
print("configured python tools") print("configured python tools")
if HOSTNAME in ["mothership", "droneship"]: if with_gpu:
helper_install(*installmap["nvidia"], reinstall=reinstall) helper_install(*installmap["optional_nvidia"], reinstall=reinstall)
print("installed nvidia") print("installed nvidia")
if HOSTNAME in ["mothership", "droneship"]: if with_containers:
install_k8sreqs(overwrite, reinstall) helper_install(*installmap["optional_containers"], reinstall=reinstall)
print("installed k8s requirements") run("sudo systemctl enable --now docker.service".split())
if HOSTNAME in ["mothership", "droneship"]: print("installed containers")
helper_install(*installmap["coolercontrol"], reinstall=reinstall) if with_gpu and with_containers:
helper_install(*installmap["optional_nvidia_containers"], reinstall=reinstall)
print("installed nvidia containers")
if with_coolercontrol:
helper_install(*installmap["optional_coolercontrol"], reinstall=reinstall)
run("sudo systemctl enable --now coolercontrold.service".split()) run("sudo systemctl enable --now coolercontrold.service".split())
print("installed coolercontrol") print("installed coolercontrol")
if HOSTNAME in ["mothership"]:
helper_install(*installmap["docker"], reinstall=reinstall)
install_virtwin(overwrite, reinstall)
helper_clone_foldercontents(
CFG_SRC, CFG_TGT, "homeassistant", overwrite, symlink=False
)
print("installed docker + home assistant")
print(""" print("""
MANUAL NEXT STEPS: MANUAL NEXT STEPS:
# vdirsyncer set up vdirsyncer with google calendar using
- set up with google calendar using
https://vdirsyncer.pimutils.org/en/stable/config.html#google https://vdirsyncer.pimutils.org/en/stable/config.html#google
- run `vdirsyncer discover` then `vdiscover sync`
# firefox allow firefox windowed fullscreen by setting full-screen-api.ignore-widgets
- allow windowed fullscreen by setting full-screen-api.ignore-widgets to to true in about:config
true in about:config
# coolercontrol set coolercontrold log level to WARN:
- set coolercontrold log level to WARN: `sudo systemctl edit `sudo systemctl edit coolercontrold.service`
coolercontrold.service`
# k8s docker with non-root daemon
- configure /etc/hosts
- /etc/hosts: configure
- /root/.ssh/authorized_keys: add permitted ssh keys
- /etc/dracut.conf.d/crypt-ssh.conf: set port + 'unlock' helper
- /etc/dracut.conf.d/eos-defaults.conf: don't omit network
- /etc/kernel/cmdline: add `rd.neednet=1 ip=dhcp` arguments
- `sudo dracut-rebuild`
- run `hjarl-system/k8s.py` scripts
# docker / home assistant
- docker with non-root daemon
`sudo groupadd docker && sudo usermod -aG docker $USER` `sudo groupadd docker && sudo usermod -aG docker $USER`
- run home assistant and music assistant scripts to start docker services
# virtual machine
- /etc/libvirt/network.conf: set `firewall_backend = "iptables"` and restart libvirtd
- download windows + virtio driver ISOs
- vm setup:
- CPUs: Uncheck "Copy host CPU configuration" and select host-passthrough
- Disk (IDE/SATA): Change the "Disk bus" to VirtIO
- NIC (Network): Change "Device model" to virtio
- Add Hardware: Click "Add Hardware" -> "Storage" -> Select "CDROM" -> select virtio driver iso
""") """)
+23
View File
@@ -0,0 +1,23 @@
# graphics
MOZ_ENABLE_WAYLAND=1
QT_QPA_PLATFORM=wayland-egl
CLUTTER_BACKEND=wayland
ECORE_EVAS_ENGINE=wayland-egl
ELM_ENGINE=wayland_egl
SDL_VIDEODRIVER=wayland
_JAVA_AWT_WM_NONREPARENTING=1
NO_AT_BRIDGE=1
# QT theme
QT_QPA_PLATFORMTHEME=qt5ct
# defaults
SYSTEMD_EDITOR=/usr/bin/nvim
EDITOR=/usr/bin/nvim
VISUAL=/usr/bin/nvim
TERMINAL=/usr/bin/footclient
PAGER="bat --style=header,rule,snip"
BROWSER=/usr/bin/qutebrowser
# sioyek fix
# QT_QPA_PLATFORM=xcb
+7
View File
@@ -0,0 +1,7 @@
if status is-interactive
pyenv init - | source
set -x PAGER "nvimpager"
set -Ua fish_user_paths /home/hjalmarlucius/.local/bin/
set -x CUDA_HOME /opt/cuda
set -x LD_LIBRARY_PATH $LD_LIBRARY_PATH $CUDA_HOME/lib64
end
@@ -0,0 +1,3 @@
function ll --description 'List contents of directory using long format'
exa --icons -l $argv
end
+3
View File
@@ -0,0 +1,3 @@
function ll --description 'List contents of directory using long format'
exa --icons -l -g $argv
end
+57
View File
@@ -0,0 +1,57 @@
[main]
font=monospace:size=7,JetBrainsMono Nerd Font:size=7
dpi-aware=yes
[environment]
SYSTEMD_EDITOR=/usr/bin/nvim
EDITOR=/usr/bin/nvim
VISUAL=/usr/bin/nvim
PAGER="bat --style=header,rule,snip"
BROWSER=/usr/bin/qutebrowser
[scrollback]
lines=100000
[key-bindings]
search-start=Control+Shift+F
show-urls-copy=Control+Shift+O
[search-bindings]
find-prev=Control+p
find-next=Control+n
[colors]
alpha=0.9
foreground=cdd6f4
background=1e1e2e
cursor=11111b f5e0dc
regular0=45475a
regular1=f38ba8
regular2=a6e3a1
regular3=f9e2af
regular4=89b4fa
regular5=f5c2e7
regular6=94e2d5
regular7=bac2de
bright0=585b70
bright1=f38ba8
bright2=a6e3a1
bright3=f9e2af
bright4=89b4fa
bright5=f5c2e7
bright6=94e2d5
bright7=a6adc8
16=fab387
17=f5e0dc
selection-foreground=cdd6f4
selection-background=414356
search-box-no-match=11111b f38ba8
search-box-match=cdd6f4 313244
jump-labels=11111b fab387
urls=89b4fa
+156
View File
@@ -0,0 +1,156 @@
# Syntax highlighting
# -------------------
"attribute" = "yellow"
"type" = "yellow"
"type.enum.variant" = "teal"
"constructor" = "sapphire"
"constant" = "peach"
"constant.character" = "teal"
"constant.character.escape" = "pink"
"string" = "green"
"string.regexp" = "pink"
"string.special" = "blue"
"string.special.symbol" = "red"
"comment" = { fg = "overlay2", modifiers = ["italic"] }
"variable" = "text"
"variable.parameter" = { fg = "maroon", modifiers = ["italic"] }
"variable.builtin" = "red"
"variable.other.member" = "teal"
"label" = "sapphire" # used for lifetimes
"punctuation" = "overlay2"
"punctuation.special" = "sky"
"keyword" = "mauve"
"keyword.control.conditional" = { fg = "mauve", modifiers = ["italic"] }
"operator" = "sky"
"function" = "blue"
"function.macro" = "mauve"
"tag" = "blue"
"namespace" = { fg = "yellow", modifiers = ["italic"] }
"special" = "blue" # fuzzy highlight
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
"markup.heading.1" = "lavender"
"markup.heading.2" = "mauve"
"markup.heading.3" = "green"
"markup.heading.4" = "yellow"
"markup.heading.5" = "pink"
"markup.heading.6" = "teal"
"markup.list" = "mauve"
"markup.bold" = { modifiers = ["bold"] }
"markup.italic" = { modifiers = ["italic"] }
"markup.link.url" = { fg = "blue", modifiers = ["italic", "underlined"] }
"markup.link.text" = "blue"
"markup.raw" = "flamingo"
"diff.plus" = "green"
"diff.minus" = "red"
"diff.delta" = "blue"
# User Interface
# --------------
"ui.background" = { fg = "text", bg = "base" }
"ui.linenr" = { fg = "surface1" }
"ui.linenr.selected" = { fg = "lavender" }
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
"ui.popup" = { fg = "text", bg = "surface0" }
"ui.window" = { fg = "crust" }
"ui.help" = { fg = "overlay2", bg = "surface0" }
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
"ui.bufferline.background" = { bg = "crust" }
"ui.text" = "text"
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
"ui.text.inactive" = { fg = "overlay1" }
"ui.virtual" = "overlay0"
"ui.virtual.ruler" = { bg = "surface0" }
"ui.virtual.indent-guide" = "surface0"
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
"ui.selection" = { bg = "surface1" }
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
"ui.cursorline.primary" = { bg = "cursorline" }
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
"ui.menu" = { fg = "overlay2", bg = "surface0" }
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
error = "red"
warning = "yellow"
info = "sky"
hint = "teal"
[palette]
rosewater = "#f2d5cf"
flamingo = "#eebebe"
pink = "#f4b8e4"
mauve = "#ca9ee6"
red = "#e78284"
maroon = "#ea999c"
peach = "#ef9f76"
yellow = "#e5c890"
green = "#a6d189"
teal = "#81c8be"
sky = "#99d1db"
sapphire = "#85c1dc"
blue = "#8caaee"
lavender = "#babbf1"
text = "#c6d0f5"
subtext1 = "#b5bfe2"
subtext0 = "#a5adce"
overlay2 = "#949cbb"
overlay1 = "#838ba7"
overlay0 = "#737994"
surface2 = "#626880"
surface1 = "#51576d"
surface0 = "#414559"
base = "#303446"
mantle = "#292c3c"
crust = "#232634"
cursorline = "#3b3f52"
secondary_cursor = "#b8a5a6"
secondary_cursor_normal = "#9192be"
secondary_cursor_insert = "#83a275"
+156
View File
@@ -0,0 +1,156 @@
# Syntax highlighting
# -------------------
"attribute" = "yellow"
"type" = "yellow"
"type.enum.variant" = "teal"
"constructor" = "sapphire"
"constant" = "peach"
"constant.character" = "teal"
"constant.character.escape" = "pink"
"string" = "green"
"string.regexp" = "pink"
"string.special" = "blue"
"string.special.symbol" = "red"
"comment" = { fg = "overlay2", modifiers = ["italic"] }
"variable" = "text"
"variable.parameter" = { fg = "maroon", modifiers = ["italic"] }
"variable.builtin" = "red"
"variable.other.member" = "teal"
"label" = "sapphire" # used for lifetimes
"punctuation" = "overlay2"
"punctuation.special" = "sky"
"keyword" = "mauve"
"keyword.control.conditional" = { fg = "mauve", modifiers = ["italic"] }
"operator" = "sky"
"function" = "blue"
"function.macro" = "mauve"
"tag" = "blue"
"namespace" = { fg = "yellow", modifiers = ["italic"] }
"special" = "blue" # fuzzy highlight
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
"markup.heading.1" = "lavender"
"markup.heading.2" = "mauve"
"markup.heading.3" = "green"
"markup.heading.4" = "yellow"
"markup.heading.5" = "pink"
"markup.heading.6" = "teal"
"markup.list" = "mauve"
"markup.bold" = { modifiers = ["bold"] }
"markup.italic" = { modifiers = ["italic"] }
"markup.link.url" = { fg = "blue", modifiers = ["italic", "underlined"] }
"markup.link.text" = "blue"
"markup.raw" = "flamingo"
"diff.plus" = "green"
"diff.minus" = "red"
"diff.delta" = "blue"
# User Interface
# --------------
"ui.background" = { fg = "text", bg = "base" }
"ui.linenr" = { fg = "surface1" }
"ui.linenr.selected" = { fg = "lavender" }
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
"ui.popup" = { fg = "text", bg = "surface0" }
"ui.window" = { fg = "crust" }
"ui.help" = { fg = "overlay2", bg = "surface0" }
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
"ui.bufferline.background" = { bg = "crust" }
"ui.text" = "text"
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
"ui.text.inactive" = { fg = "overlay1" }
"ui.virtual" = "overlay0"
"ui.virtual.ruler" = { bg = "surface0" }
"ui.virtual.indent-guide" = "surface0"
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
"ui.selection" = { bg = "surface1" }
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
"ui.cursorline.primary" = { bg = "cursorline" }
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
"ui.menu" = { fg = "overlay2", bg = "surface0" }
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
error = "red"
warning = "yellow"
info = "sky"
hint = "teal"
[palette]
rosewater = "#dc8a78"
flamingo = "#dd7878"
pink = "#ea76cb"
mauve = "#8839ef"
red = "#d20f39"
maroon = "#e64553"
peach = "#fe640b"
yellow = "#df8e1d"
green = "#40a02b"
teal = "#179299"
sky = "#04a5e5"
sapphire = "#209fb5"
blue = "#1e66f5"
lavender = "#7287fd"
text = "#4c4f69"
subtext1 = "#5c5f77"
subtext0 = "#6c6f85"
overlay2 = "#7c7f93"
overlay1 = "#8c8fa1"
overlay0 = "#9ca0b0"
surface2 = "#acb0be"
surface1 = "#bcc0cc"
surface0 = "#ccd0da"
base = "#eff1f5"
mantle = "#e6e9ef"
crust = "#dce0e8"
cursorline = "#e8ecf1"
secondary_cursor = "#e1a99d"
secondary_cursor_normal = "#97a7fb"
secondary_cursor_insert = "#74b867"
+159
View File
@@ -0,0 +1,159 @@
# Syntax highlighting
# -------------------
"attribute" = "yellow"
"type" = "yellow"
"type.enum.variant" = "teal"
"constructor" = "sapphire"
"constant" = "peach"
"constant.character" = "teal"
"constant.character.escape" = "pink"
"string" = "green"
"string.regexp" = "pink"
"string.special" = "blue"
"string.special.symbol" = "red"
"comment" = { fg = "overlay2", modifiers = ["italic"] }
"variable" = "text"
"variable.parameter" = { fg = "maroon", modifiers = ["italic"] }
"variable.builtin" = "red"
"variable.other.member" = "teal"
"label" = "sapphire" # used for lifetimes
"punctuation" = "overlay2"
"punctuation.special" = "sky"
"keyword" = "mauve"
"keyword.control.conditional" = { fg = "mauve", modifiers = ["italic"] }
"operator" = "sky"
"function" = "blue"
"function.macro" = "mauve"
"tag" = "blue"
"namespace" = { fg = "yellow", modifiers = ["italic"] }
"special" = "blue" # fuzzy highlight
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
"markup.heading.1" = "lavender"
"markup.heading.2" = "mauve"
"markup.heading.3" = "green"
"markup.heading.4" = "yellow"
"markup.heading.5" = "pink"
"markup.heading.6" = "teal"
"markup.list" = "mauve"
"markup.bold" = { modifiers = ["bold"] }
"markup.italic" = { modifiers = ["italic"] }
"markup.link.url" = { fg = "blue", modifiers = ["italic", "underlined"] }
"markup.link.text" = "blue"
"markup.raw" = "flamingo"
"diff.plus" = "green"
"diff.minus" = "red"
"diff.delta" = "blue"
# User Interface
# --------------
# fix issue with background color getting messed up in tmux...
"ui.background" = { }
# "ui.background" = { fg = "text", bg = "base" }
"ui.linenr" = { fg = "surface1" }
"ui.linenr.selected" = { fg = "lavender" }
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
"ui.popup" = { fg = "text", bg = "surface0" }
"ui.window" = { fg = "crust" }
"ui.help" = { fg = "overlay2", bg = "surface0" }
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
"ui.bufferline.background" = { bg = "crust" }
"ui.text" = "text"
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
"ui.text.inactive" = { fg = "overlay1" }
"ui.virtual" = "overlay0"
"ui.virtual.ruler" = { bg = "surface0" }
"ui.virtual.indent-guide" = "surface0"
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
"ui.selection" = { bg = "surface1" }
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
"ui.cursorline.primary" = { bg = "cursorline" }
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
"ui.menu" = { fg = "overlay2", bg = "surface0" }
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
error = "red"
warning = "yellow"
info = "sky"
hint = "teal"
[palette]
rosewater = "#f4dbd6"
flamingo = "#f0c6c6"
pink = "#f5bde6"
mauve = "#c6a0f6"
red = "#ed8796"
maroon = "#ee99a0"
peach = "#f5a97f"
yellow = "#eed49f"
green = "#a6da95"
teal = "#8bd5ca"
sky = "#91d7e3"
sapphire = "#7dc4e4"
blue = "#8aadf4"
lavender = "#b7bdf8"
text = "#cad3f5"
subtext1 = "#b8c0e0"
subtext0 = "#a5adcb"
overlay2 = "#939ab7"
overlay1 = "#8087a2"
overlay0 = "#6e738d"
surface2 = "#5b6078"
surface1 = "#494d64"
surface0 = "#363a4f"
base = "#24273a"
mantle = "#1e2030"
crust = "#181926"
cursorline = "#303347"
secondary_cursor = "#b6a6a7"
secondary_cursor_normal = "#8b91bf"
secondary_cursor_insert = "#80a57a"
+156
View File
@@ -0,0 +1,156 @@
# Syntax highlighting
# -------------------
"attribute" = "yellow"
"type" = "yellow"
"type.enum.variant" = "teal"
"constructor" = "sapphire"
"constant" = "peach"
"constant.character" = "teal"
"constant.character.escape" = "pink"
"string" = "green"
"string.regexp" = "pink"
"string.special" = "blue"
"string.special.symbol" = "red"
"comment" = { fg = "overlay2", modifiers = ["italic"] }
"variable" = "text"
"variable.parameter" = { fg = "maroon", modifiers = ["italic"] }
"variable.builtin" = "red"
"variable.other.member" = "teal"
"label" = "sapphire" # used for lifetimes
"punctuation" = "overlay2"
"punctuation.special" = "sky"
"keyword" = "mauve"
"keyword.control.conditional" = { fg = "mauve", modifiers = ["italic"] }
"operator" = "sky"
"function" = "blue"
"function.macro" = "mauve"
"tag" = "blue"
"namespace" = { fg = "yellow", modifiers = ["italic"] }
"special" = "blue" # fuzzy highlight
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
"markup.heading.1" = "lavender"
"markup.heading.2" = "mauve"
"markup.heading.3" = "green"
"markup.heading.4" = "yellow"
"markup.heading.5" = "pink"
"markup.heading.6" = "teal"
"markup.list" = "mauve"
"markup.bold" = { modifiers = ["bold"] }
"markup.italic" = { modifiers = ["italic"] }
"markup.link.url" = { fg = "blue", modifiers = ["italic", "underlined"] }
"markup.link.text" = "blue"
"markup.raw" = "flamingo"
"diff.plus" = "green"
"diff.minus" = "red"
"diff.delta" = "blue"
# User Interface
# --------------
"ui.background" = { fg = "text", bg = "base" }
"ui.linenr" = { fg = "surface1" }
"ui.linenr.selected" = { fg = "lavender" }
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
"ui.popup" = { fg = "text", bg = "surface0" }
"ui.window" = { fg = "crust" }
"ui.help" = { fg = "overlay2", bg = "surface0" }
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
"ui.bufferline.background" = { bg = "crust" }
"ui.text" = "text"
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
"ui.text.inactive" = { fg = "overlay1" }
"ui.virtual" = "overlay0"
"ui.virtual.ruler" = { bg = "surface0" }
"ui.virtual.indent-guide" = "surface0"
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
"ui.selection" = { bg = "surface1" }
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
"ui.cursorline.primary" = { bg = "cursorline" }
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
"ui.menu" = { fg = "overlay2", bg = "surface0" }
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
error = "red"
warning = "yellow"
info = "sky"
hint = "teal"
[palette]
rosewater = "#f5e0dc"
flamingo = "#f2cdcd"
pink = "#f5c2e7"
mauve = "#cba6f7"
red = "#f38ba8"
maroon = "#eba0ac"
peach = "#fab387"
yellow = "#f9e2af"
green = "#a6e3a1"
teal = "#94e2d5"
sky = "#89dceb"
sapphire = "#74c7ec"
blue = "#89b4fa"
lavender = "#b4befe"
text = "#cdd6f4"
subtext1 = "#bac2de"
subtext0 = "#a6adc8"
overlay2 = "#9399b2"
overlay1 = "#7f849c"
overlay0 = "#6c7086"
surface2 = "#585b70"
surface1 = "#45475a"
surface0 = "#313244"
base = "#1e1e2e"
mantle = "#181825"
crust = "#11111b"
cursorline = "#2a2b3c"
secondary_cursor = "#b5a6a8"
secondary_cursor_normal = "#878ec0"
secondary_cursor_insert = "#7ea87f"
@@ -0,0 +1,156 @@
# Syntax highlighting
# -------------------
"attribute" = "yellow"
"type" = "yellow"
"type.enum.variant" = "teal"
"constructor" = "sapphire"
"constant" = "peach"
"constant.character" = "teal"
"constant.character.escape" = "pink"
"string" = "green"
"string.regexp" = "pink"
"string.special" = "blue"
"string.special.symbol" = "red"
"comment" = { fg = "overlay2" }
"variable" = "text"
"variable.parameter" = { fg = "maroon" }
"variable.builtin" = "red"
"variable.other.member" = "teal"
"label" = "sapphire" # used for lifetimes
"punctuation" = "overlay2"
"punctuation.special" = "sky"
"keyword" = "mauve"
"keyword.control.conditional" = { fg = "mauve" }
"operator" = "sky"
"function" = "blue"
"function.macro" = "mauve"
"tag" = "blue"
"namespace" = { fg = "yellow" }
"special" = "blue" # fuzzy highlight
"markup.heading.marker" = { fg = "peach", modifiers = ["bold"] }
"markup.heading.1" = "lavender"
"markup.heading.2" = "mauve"
"markup.heading.3" = "green"
"markup.heading.4" = "yellow"
"markup.heading.5" = "pink"
"markup.heading.6" = "teal"
"markup.list" = "mauve"
"markup.bold" = { modifiers = ["bold"] }
"markup.italic" = { modifiers = ["italic"] }
"markup.link.url" = { fg = "blue", modifiers = ["underlined"] }
"markup.link.text" = "blue"
"markup.raw" = "flamingo"
"diff.plus" = "green"
"diff.minus" = "red"
"diff.delta" = "blue"
# User Interface
# --------------
"ui.background" = { fg = "text", bg = "base" }
"ui.linenr" = { fg = "surface1" }
"ui.linenr.selected" = { fg = "lavender" }
"ui.statusline" = { fg = "subtext1", bg = "mantle" }
"ui.statusline.inactive" = { fg = "surface2", bg = "mantle" }
"ui.statusline.normal" = { fg = "base", bg = "lavender", modifiers = ["bold"] }
"ui.statusline.insert" = { fg = "base", bg = "green", modifiers = ["bold"] }
"ui.statusline.select" = { fg = "base", bg = "flamingo", modifiers = ["bold"] }
"ui.popup" = { fg = "text", bg = "surface0" }
"ui.window" = { fg = "crust" }
"ui.help" = { fg = "overlay2", bg = "surface0" }
"ui.bufferline" = { fg = "subtext0", bg = "mantle" }
"ui.bufferline.active" = { fg = "mauve", bg = "base", underline = { color = "mauve", style = "line" } }
"ui.bufferline.background" = { bg = "crust" }
"ui.text" = "text"
"ui.text.focus" = { fg = "text", bg = "surface0", modifiers = ["bold"] }
"ui.text.inactive" = { fg = "overlay1" }
"ui.virtual" = "overlay0"
"ui.virtual.ruler" = { bg = "surface0" }
"ui.virtual.indent-guide" = "surface0"
"ui.virtual.inlay-hint" = { fg = "surface1", bg = "mantle" }
"ui.virtual.jump-label" = { fg = "rosewater", modifiers = ["bold"] }
"ui.selection" = { bg = "surface1" }
"ui.cursor" = { fg = "base", bg = "secondary_cursor" }
"ui.cursor.primary" = { fg = "base", bg = "rosewater" }
"ui.cursor.match" = { fg = "peach", modifiers = ["bold"] }
"ui.cursor.primary.normal" = { fg = "base", bg = "lavender" }
"ui.cursor.primary.insert" = { fg = "base", bg = "green" }
"ui.cursor.primary.select" = { fg = "base", bg = "flamingo" }
"ui.cursor.normal" = { fg = "base", bg = "secondary_cursor_normal" }
"ui.cursor.insert" = { fg = "base", bg = "secondary_cursor_insert" }
"ui.cursor.select" = { fg = "base", bg = "secondary_cursor" }
"ui.cursorline.primary" = { bg = "cursorline" }
"ui.highlight" = { bg = "surface1", modifiers = ["bold"] }
"ui.menu" = { fg = "overlay2", bg = "surface0" }
"ui.menu.selected" = { fg = "text", bg = "surface1", modifiers = ["bold"] }
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
"diagnostic.info" = { underline = { color = "sky", style = "curl" } }
"diagnostic.hint" = { underline = { color = "teal", style = "curl" } }
error = "red"
warning = "yellow"
info = "sky"
hint = "teal"
[palette]
rosewater = "#f2d5cf"
flamingo = "#eebebe"
pink = "#f4b8e4"
mauve = "#ca9ee6"
red = "#e78284"
maroon = "#ea999c"
peach = "#ef9f76"
yellow = "#e5c890"
green = "#a6d189"
teal = "#81c8be"
sky = "#99d1db"
sapphire = "#85c1dc"
blue = "#8caaee"
lavender = "#babbf1"
text = "#c6d0f5"
subtext1 = "#b5bfe2"
subtext0 = "#a5adce"
overlay2 = "#949cbb"
overlay1 = "#838ba7"
overlay0 = "#737994"
surface2 = "#626880"
surface1 = "#51576d"
surface0 = "#414559"
base = "#303446"
mantle = "#292c3c"
crust = "#232634"
cursorline = "#3b3f52"
secondary_cursor = "#b8a5a6"
secondary_cursor_normal = "#9192be"
secondary_cursor_insert = "#83a275"

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