Compare commits

..

1 Commits

Author SHA1 Message Date
Henrik Bakken 8512162cd0 endos.py 2025-10-27 15:42:47 +01:00
137 changed files with 3266 additions and 2635 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
-281
View File
@@ -1,281 +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 = 4
## 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" ]
-198
View File
@@ -1,198 +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
pad=12x12 # optionally append 'center'
# 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>
[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
[colors]
alpha=0.9 # Adjust alpha to change transparency level
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
## dimmed colors (see foot.ini(5) man page)
# dim0=<not set>
# ...
# dim7=<not-set>
## The remaining 256-color palette
16=fab387
17=f5e0dc
# ...
# 255 = <256-color palette #255>
# Misc colors
selection-foreground=cdd6f4
selection-background=414356
jump-labels=11111b fab387
# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue
search-box-no-match=11111b f38ba8
search-box-match=cdd6f4 313244
urls=89b4fa
[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 Control+equal Control+KP_Add
# font-decrease=Control+minus Control+KP_Subtract
# font-reset=Control+0 Control+KP_0
# 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=%l:%M %p
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
-46
View File
@@ -1,46 +0,0 @@
* {
border: none;
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8)
}
window {
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.
-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] }}"
-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
-359
View File
@@ -1,359 +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 10 px
$mod+ctrl+Up resize grow height 10 px
$mod+ctrl+Down resize shrink height 10 px
$mod+ctrl+Left resize grow width 10 px
# Resize with Vim keys
$mod+ctrl+$right resize shrink width 10 px
$mod+ctrl+$up resize grow height 10 px
$mod+ctrl+$down resize shrink height 10 px
$mod+ctrl+$left resize grow width 10 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
set {
$ws1 number 1
$ws2 number 2
$ws3 number 3
$ws4 number 4
$ws5 number 5
$ws6 number 6
$ws7 number 7
$ws8 number 8
$ws9 number 9
$ws10 number 10
}
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 swayidle idlehint 1
exec_always swayidle -w before-sleep "gtklock -d"
# Start foot server
exec_always --no-startup-id foot --server
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
# flashfocus
systemctl --user start flashfocus
# 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
# 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"
xkb_variant "altgr-weur"
xkb_options "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
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.
-196
View File
@@ -1,196 +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'"
},
"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
},
// 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;
}
-70
View File
@@ -1,70 +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 ../..'
# --- 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
+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
@@ -1,2 +1,2 @@
[Sleep] [sleep]
HibernateDelaySec=30min HibernateDelaySec=30min
+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>
@@ -1,30 +0,0 @@
{
"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
@@ -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,32 +0,0 @@
# input
input type:tablet_tool map_to_region 2560 0 2560 1440
# output
output DP-1 resolution 5120x1440
# workspaces
bindsym {
# Switch to workspace
$mod+1 workspace $ws1
$mod+2 workspace $ws2
$mod+3 workspace $ws3
$mod+4 workspace $ws4
$mod+5 workspace $ws5
$mod+6 workspace $ws6
$mod+7 workspace $ws7
$mod+8 workspace $ws8
$mod+9 workspace $ws9
$mod+0 workspace $ws10
# Move focused container to workspace
$mod+Shift+1 move container to workspace $ws1
$mod+Shift+2 move container to workspace $ws2
$mod+Shift+3 move container to workspace $ws3
$mod+Shift+4 move container to workspace $ws4
$mod+Shift+5 move container to workspace $ws5
$mod+Shift+6 move container to workspace $ws6
$mod+Shift+7 move container to workspace $ws7
$mod+Shift+8 move container to workspace $ws8
$mod+Shift+9 move container to workspace $ws9
$mod+Shift+0 move container to workspace $ws10
}
@@ -1,30 +0,0 @@
{
"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'"
}
}
-34
View File
@@ -1,34 +0,0 @@
# input
input type:touchpad {
pointer_accel 0.8
}
# output
output eDP-1 resolution 2736x1824 scale 1.6
# workspaces
bindsym {
# Switch to workspace
$mod+1 workspace $ws1
$mod+2 workspace $ws2
$mod+3 workspace $ws3
$mod+4 workspace $ws4
$mod+5 workspace $ws5
$mod+6 workspace $ws6
$mod+7 workspace $ws7
$mod+8 workspace $ws8
$mod+9 workspace $ws9
$mod+0 workspace $ws10
# Move focused container to workspace
$mod+Shift+1 move container to workspace $ws1
$mod+Shift+2 move container to workspace $ws2
$mod+Shift+3 move container to workspace $ws3
$mod+Shift+4 move container to workspace $ws4
$mod+Shift+5 move container to workspace $ws5
$mod+Shift+6 move container to workspace $ws6
$mod+Shift+7 move container to workspace $ws7
$mod+Shift+8 move container to workspace $ws8
$mod+Shift+9 move container to workspace $ws9
$mod+Shift+0 move container to workspace $ws10
}
@@ -1,15 +0,0 @@
{
"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"
-35
View File
@@ -1,35 +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
# workspaces
bindsym {
# Switch to workspace
$mod+1 workspace $ws1
$mod+2 workspace $ws2
$mod+3 workspace $ws3
$mod+4 workspace $ws4
$mod+5 workspace $ws5
$mod+6 workspace $ws6
$mod+7 workspace $ws7
$mod+8 workspace $ws8
$mod+9 workspace $ws9
$mod+0 workspace $ws10
# Move focused container to workspace
$mod+Shift+1 move container to workspace $ws1
$mod+Shift+2 move container to workspace $ws2
$mod+Shift+3 move container to workspace $ws3
$mod+Shift+4 move container to workspace $ws4
$mod+Shift+5 move container to workspace $ws5
$mod+Shift+6 move container to workspace $ws6
$mod+Shift+7 move container to workspace $ws7
$mod+Shift+8 move container to workspace $ws8
$mod+Shift+9 move container to workspace $ws9
$mod+Shift+0 move container to workspace $ws10
}
@@ -1,15 +0,0 @@
{
"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=suspend-then-hibernate
IdleActionSec=10min
HandlePowerKey=suspend-then-hibernate
HandlePowerKeyLongPress=poweroff
HandleLidSwitch=suspend-then-hibernate
HandleLidSwitchExternalPower=suspend-then-hibernate
HandleLidSwitchDocked=ignore
@@ -1,2 +0,0 @@
[Sleep]
HibernateDelaySec=30min
-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
+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
+163 -319
View File
@@ -5,216 +5,144 @@
# "defopt", # "defopt",
# ] # ]
# /// # ///
# TODO
# fix btop colors
# pre-luks remote ssh
# modify /etc/greetd/regreet.toml WLR_NO_HARDWARE_CURSORS
# add
# - 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 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("~").expanduser() DOTFILES = Path("~/dotfiles").expanduser()
ROOT_TGT = Path("/")
DOTFILES = HOME_TGT / "dotfiles"
HOME_SRC = DOTFILES / "HOME"
ROOT_SRC = DOTFILES / "ROOT"
CFG_TGT = HOME_TGT / ".config"
CFG_SRC = DOTFILES / "CONFIG"
CUSTOM_SRC = DOTFILES / f"custom-{HOSTNAME}"
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",
"npm", # required for nvim plugins
"go", # required for vim-hexokinase build
),
utils=("uv", "ncdu", "unzip", "jq", "bluetui"),
gittools=(
"tig",
"diff-so-fancy",
"git-secret",
"git-delta",
"git-lfs",
"lazygit",
"bat",
),
pdftools=("sioyek", "zathura", "zathura-pdf-mupdf", "zathura-djvu", "zathura-ps"), pdftools=("sioyek", "zathura", "zathura-pdf-mupdf", "zathura-djvu", "zathura-ps"),
mediaviewers=( media=("vlc", "mpv", "protobuf", "yt-dlp", "quodlibet", "qimgv"),
# video filebrowsers=("pcmanfm", "yazi", "zoxide", "eza"),
"vlc",
"mpv",
"protobuf",
"yt-dlp",
"v4l-utils",
# photos
"qimgv",
# music
"quodlibet",
# 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",
"microsoft-edge-stable-bin",
"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
"pandoc", # md2html emails
"pass", # password manager
"w3m", # terminal browser
"newsboat", # rss reader "newsboat", # rss reader
"vdirsyncer", # sync calendar+contacts
"pandoc", # md2html for aerc
"pass", # password manager for aerc and newsboat
"w3m", # terminal browser for aerc and newsboat
"urlscan", # url finder for newsboat
"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=(
# visuals
"wlsunset", # eye saver
"wdisplays", # ui for display settings
"flashfocus", # quick flash when changing app in focus "flashfocus", # quick flash when changing app in focus
# clipboard "noisetorch", # noise cancellation
"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
), ),
optional_nvidia_containers=("nvidia-docker",),
) )
def compare(src: Path, tgt: Path) -> str: def compare_files(a: Path, b: Path) -> str:
if src.is_dir(): return "".join(
diff = "" unified_diff(open(a).readlines(), open(b).readlines(), str(a), str(b))
for subsrc in src.glob("**/*"): )
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( def helper_symlink_contents(
src_folder: Path, tgt_folder: Path, sub: str, overwrite: bool, symlink: bool source_folder: str | Path, target_folder: str | Path, overwrite: bool
) -> bool:
src = src_folder.expanduser() / sub
tgt = tgt_folder.expanduser() / sub
assert src.exists()
tgt.parent.mkdir(exist_ok=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))
tgt.symlink_to(src)
return True
def helper_symlink_foldercontent(
src_parent: Path, tgt_parent: Path, folder: str, overwrite: bool
) -> None: ) -> None:
src_folder = src_parent.expanduser() / folder source_folder = Path(source_folder).expanduser()
tgt_folder = tgt_parent.expanduser() / folder target_folder = Path(target_folder).expanduser()
tgt_folder.mkdir(exist_ok=True) target_folder.mkdir(exist_ok=True)
assert src_folder.is_dir() for folder in [source_folder, target_folder]:
assert tgt_folder.is_dir() or tgt_folder.is_symlink() assert folder.expanduser().is_dir()
for src in src_folder.iterdir(): for src in source_folder.iterdir():
name = src.name tgt = target_folder / src.name
if name.endswith(".secret"): # git-secret item if tgt.exists():
continue if src.is_dir():
helper_maybe_copy(src_folder, tgt_folder, name, overwrite, symlink=True) if overwrite:
tgt.rmdir()
tgt.symlink_to(src)
else:
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
case True, True:
path.unlink()
return True
case True, False:
return False
case err:
raise ValueError(err)
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:
@@ -229,196 +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)
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_symlink_foldercontent(CFG_SRC, CFG_TGT, "zsh", overwrite) helper_symlink_contents(DOTFILES / "nushell", CFG / "nushell", overwrite)
helper_symlink_foldercontent(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_symlink_foldercontent(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_symlink_foldercontent(CFG_SRC, CFG_TGT, "nvim", overwrite) helper_symlink_contents(DOTFILES / "nvim", CFG / "nvim", overwrite)
helper_symlink_foldercontent(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_symlink_foldercontent(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_pdftools(overwrite: bool, reinstall: bool) -> None: def install_pdftools(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["pdftools"], reinstall=reinstall) helper_install(*installmap["pdftools"], reinstall=reinstall)
helper_symlink_foldercontent(CFG_SRC, CFG_TGT, "sioyek", overwrite) helper_symlink_contents(DOTFILES / "sioyek", CFG / "sioyek", overwrite)
helper_symlink_foldercontent(CFG_SRC, CFG_TGT, "zathura", overwrite) helper_symlink_contents(DOTFILES / "zathura", CFG / "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_symlink_foldercontent(CFG_SRC, CFG_TGT, "ranger", overwrite) helper_symlink_contents(DOTFILES / "yazi", CFG / "yazi", overwrite)
helper_symlink_foldercontent(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())
def install_netbrowsers(overwrite: bool, reinstall: bool) -> None:
helper_install(*installmap["netbrowsers"], reinstall=reinstall)
helper_symlink_foldercontent(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_symlink_foldercontent(CFG_SRC, CFG_TGT, "discordo", overwrite)
helper_symlink_foldercontent(CFG_SRC, CFG_TGT, "gurk", 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", "newsboat"]: for tgt in ["vdirsyncer", "khard", "khal", "aerc", "newsboat"]:
helper_symlink_foldercontent(CFG_SRC, CFG_TGT, tgt, overwrite) helper_symlink_contents(DOTFILES / tgt, CFG / tgt, overwrite)
run("systemctl enable --user --now vdirsyncer.timer".split()) run(f"chmod 600 {CFG / 'aerc/accounts.conf'}".split())
helper_maybe_copy(
HOME_SRC / ".local/share/applications/",
HOME_TGT / ".local/share/applications/",
"userapp-khalimport.desktop",
overwrite,
symlink=True,
)
run(f"chmod 600 {CFG_TGT / 'aerc/accounts.conf'}".split())
(HOME_TGT / ".cache/newsboat").mkdir(exist_ok=True)
(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:
# sudo helper_install(*installmap["swaytools"], reinstall=reinstall)
helper_uninstall("autotiling", "cliphist") sub = "sway/config.d"
helper_install(*installmap["sway"], reinstall=reinstall) 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",
]: ]:
src = CUSTOM_SRC / "ROOT" / sub run(["sudo", "cp", str(DOTFILES / "ROOT" / sub), str(Path("/") / sub)])
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())
# user
run("systemctl --user enable --now flashfocus".split())
if (tgt := CFG_TGT / "waybar/config").exists():
tgt.unlink()
for sub in ["sway", "waybar", "gtk-3.0", "mako", "fuzzel", "nwg-drawer"]:
helper_symlink_foldercontent(CFG_SRC, CFG_TGT, sub, overwrite)
helper_symlink_foldercontent(CUSTOM_SRC / "CONFIG", CFG_TGT, "sway", overwrite)
helper_symlink_foldercontent(CUSTOM_SRC / "CONFIG", CFG_TGT, "waybar", overwrite)
helper_maybe_copy(CFG_SRC, CFG_TGT, "mimeapps.list", overwrite, symlink=True)
helper_symlink_foldercontent(
HOME_SRC,
HOME_TGT,
".local/share/applications",
overwrite,
)
helper_symlink_foldercontent(CFG_SRC, CFG_TGT, "foot", 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_symlink_foldercontent(HOME_SRC, HOME_TGT, sub, overwrite)
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)])
# user
helper_symlink_foldercontent(CFG_SRC, CFG_TGT, "k9s", overwrite)
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_pdftools(overwrite, reinstall) install_pdftools(overwrite, reinstall)
print("installed pdftools") 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)
print("installed chat")
helper_install(*installmap["monitors"], reinstall=reinstall) helper_install(*installmap["monitors"], reinstall=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")
@@ -426,51 +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)
for file in ["configuration.yaml", "SERVICE_ACCOUNT.JSON"]:
helper_maybe_copy(
CFG_SRC,
CFG_TGT,
f"homeassistant/{file}",
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` `sudo groupadd docker && sudo usermod -aG docker $USER`
- run `hjarl-system/k8s.py` scripts
# docker / home assistant
- docker with non-root daemon
`sudo groupadd docker && sudo usermod -aG docker $USER`
- run home assistant and music assistant scripts to start docker services
""") """)
+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
Binary file not shown.
+269
View File
@@ -0,0 +1,269 @@
# 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] }}"
+22
View File
@@ -0,0 +1,22 @@
# General Options.
[options]
background = 2d2d2d
overlay_font = Iosevka:18
overlay_background_color = 282828
# Keybindings.
[binds]
h = prev 1
j = zoom 5
k = zoom -5
l = next 1
<Shift+H> = pan -100 0
<Shift+J> = pan 0 100
<Shift+K> = pan 0 -100
<Shift+L> = pan 100 0
<Ctrl+h> = rotate by -90
<Ctrl+j> = flip vertical
<Ctrl+k> = flip horizontal
<Ctrl+l> = rotate by 90
+6 -6
View File
@@ -1,6 +1,6 @@
[default] [default]
default_calendar = henrik@hjarl.com default_calendar = purelymail
highlight_event_days = true highlight_event_days = true
[view] [view]
@@ -16,18 +16,18 @@ longdateformat = %d.%m.%Y
[calendars] [calendars]
[[henrik@hjarl.com]] [[purelymail]]
path = ~/Calendars/henrik@hjarl.com/ path = ~/.config/vdirsyncer/calendars/purelymail/
color = yellow color = yellow
priority = 10 priority = 10
[[bakken.henrik@gmail.com]] [[google]]
path = ~/Calendars/google/bakken.henrik@gmail.com path = ~/.config/vdirsyncer/calendars/google/bakken.henrik@gmail.com
color = light magenta color = light magenta
priority = 5 priority = 5
[[holidays]] [[holidays]]
path = ~/Calendars/holidays/ path = ~/.config/vdirsyncer/calendars/holidays/
color = dark cyan color = dark cyan
readonly = True readonly = True
priority = 0 priority = 0
+4 -4
View File
@@ -1,6 +1,6 @@
[addressbooks] [addressbooks]
[[henrik@hjarl.com]] [[bakken.henrik@gmail.com]]
path = ~/Contacts/henrik@hjarl.com/default/ path = ~/.config/vdirsyncer/contacts/google/default/
[general] [general]
debug = no debug = no
@@ -40,9 +40,9 @@ preferred_email_address_type = pref, work, home
# example: # example:
# private_objects = Jabber, Skype, Twitter # private_objects = Jabber, Skype, Twitter
# default: , (the empty list) # default: , (the empty list)
private_objects = , private_objects = Jabber, Skype, Twitter
# preferred vcard version: 3.0 / 4.0 # preferred vcard version: 3.0 / 4.0
preferred_version = 4.0 preferred_version = 3.0
# Look into source vcf files to speed up search queries: yes / no # Look into source vcf files to speed up search queries: yes / no
search_in_source_files = no search_in_source_files = no
# skip unparsable vcard files: yes / no # skip unparsable vcard files: yes / no
+28
View File
@@ -0,0 +1,28 @@
font=Cozette 11
format=<b>%a ⏵</b> %s\n%b
sort=-time
output=DP-2
layer=overlay
anchor=bottom-center
background-color=#2e3440
width=300
height=110
margin=5
padding=0,5,10
border-size=2
border-color=#88c0d0
border-radius=15
icons=0
max-icon-size=64
default-timeout=0
ignore-timeout=1
[urgency=normal]
border-color=#d08770
[urgency=high]
border-color=#bf616a
default-timeout=0
[summary~="log-.*"]
border-color=#a3be8c

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