Initial commit
257
btop/btop.conf
Normal file
|
|
@ -0,0 +1,257 @@
|
|||
#? Config file for btop v. 1.4.5
|
||||
|
||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||
color_theme = "caelestia"
|
||||
|
||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||
theme_background = False
|
||||
|
||||
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||
truecolor = True
|
||||
|
||||
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||
force_tty = False
|
||||
|
||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||
#* Use whitespace " " as separator between different presets.
|
||||
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
|
||||
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
|
||||
|
||||
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||
vim_keys = False
|
||||
|
||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||
rounded_corners = True
|
||||
|
||||
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||
#* "block" has half the resolution of braille but uses more common characters.
|
||||
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
|
||||
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
|
||||
graph_symbol = "braille"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_cpu = "default"
|
||||
|
||||
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_gpu = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_mem = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_net = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_proc = "default"
|
||||
|
||||
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
|
||||
shown_boxes = "cpu mem net proc"
|
||||
|
||||
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||
update_ms = 2000
|
||||
|
||||
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
||||
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||
proc_sorting = "cpu lazy"
|
||||
|
||||
#* Reverse sorting order, True or False.
|
||||
proc_reversed = False
|
||||
|
||||
#* Show processes as a tree.
|
||||
proc_tree = False
|
||||
|
||||
#* Use the cpu graph colors in the process list.
|
||||
proc_colors = True
|
||||
|
||||
#* Use a darkening gradient in the process list.
|
||||
proc_gradient = True
|
||||
|
||||
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||
proc_per_core = False
|
||||
|
||||
#* Show process memory as bytes instead of percent.
|
||||
proc_mem_bytes = True
|
||||
|
||||
#* Show cpu graph for each process.
|
||||
proc_cpu_graphs = True
|
||||
|
||||
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||
proc_info_smaps = False
|
||||
|
||||
#* Show proc box on left side of screen instead of right.
|
||||
proc_left = False
|
||||
|
||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||
proc_filter_kernel = False
|
||||
|
||||
#* In tree-view, always accumulate child process resources in the parent process.
|
||||
proc_aggregate = False
|
||||
|
||||
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_upper = "Auto"
|
||||
|
||||
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_lower = "Auto"
|
||||
|
||||
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
|
||||
show_gpu_info = "Auto"
|
||||
|
||||
#* Toggles if the lower CPU graph should be inverted.
|
||||
cpu_invert_lower = True
|
||||
|
||||
#* Set to True to completely disable the lower CPU graph.
|
||||
cpu_single_graph = False
|
||||
|
||||
#* Show cpu box at bottom of screen instead of top.
|
||||
cpu_bottom = False
|
||||
|
||||
#* Shows the system uptime in the CPU box.
|
||||
show_uptime = True
|
||||
|
||||
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
|
||||
show_cpu_watts = True
|
||||
|
||||
#* Show cpu temperature.
|
||||
check_temp = True
|
||||
|
||||
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||
cpu_sensor = "Auto"
|
||||
|
||||
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||
show_coretemp = True
|
||||
|
||||
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
|
||||
#* Example: "4:0 5:1 6:3"
|
||||
cpu_core_map = ""
|
||||
|
||||
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
|
||||
temp_scale = "celsius"
|
||||
|
||||
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||
base_10_sizes = False
|
||||
|
||||
#* Show CPU frequency.
|
||||
show_cpu_freq = True
|
||||
|
||||
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||
clock_format = "%X"
|
||||
|
||||
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||
background_update = True
|
||||
|
||||
#* Custom cpu model name, empty string to disable.
|
||||
custom_cpu_name = ""
|
||||
|
||||
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
||||
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
|
||||
disks_filter = ""
|
||||
|
||||
#* Show graphs instead of meters for memory values.
|
||||
mem_graphs = True
|
||||
|
||||
#* Show mem box below net box instead of above.
|
||||
mem_below_net = False
|
||||
|
||||
#* Count ZFS ARC in cached and available memory.
|
||||
zfs_arc_cached = True
|
||||
|
||||
#* If swap memory should be shown in memory box.
|
||||
show_swap = True
|
||||
|
||||
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||
swap_disk = True
|
||||
|
||||
#* If mem box should be split to also show disks info.
|
||||
show_disks = True
|
||||
|
||||
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||
only_physical = True
|
||||
|
||||
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||
use_fstab = True
|
||||
|
||||
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||
zfs_hide_datasets = False
|
||||
|
||||
#* Set to true to show available disk space for privileged users.
|
||||
disk_free_priv = False
|
||||
|
||||
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||
show_io_stat = True
|
||||
|
||||
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||
io_mode = False
|
||||
|
||||
#* Set to True to show combined read/write io graphs in io mode.
|
||||
io_graph_combined = False
|
||||
|
||||
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||
io_graph_speeds = ""
|
||||
|
||||
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||
net_download = 100
|
||||
|
||||
net_upload = 100
|
||||
|
||||
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||
net_auto = True
|
||||
|
||||
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||
net_sync = True
|
||||
|
||||
#* Starts with the Network Interface specified here.
|
||||
net_iface = ""
|
||||
|
||||
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
|
||||
base_10_bitrate = "Auto"
|
||||
|
||||
#* Show battery stats in top right if battery is present.
|
||||
show_battery = True
|
||||
|
||||
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||
selected_battery = "Auto"
|
||||
|
||||
#* Show power stats of battery next to charge indicator.
|
||||
show_battery_watts = True
|
||||
|
||||
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||
log_level = "WARNING"
|
||||
|
||||
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
|
||||
nvml_measure_pcie_speeds = True
|
||||
|
||||
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
|
||||
rsmi_measure_pcie_speeds = True
|
||||
|
||||
#* Horizontally mirror the GPU graph.
|
||||
gpu_mirror_graph = True
|
||||
|
||||
#* Custom gpu0 model name, empty string to disable.
|
||||
custom_gpu_name0 = ""
|
||||
|
||||
#* Custom gpu1 model name, empty string to disable.
|
||||
custom_gpu_name1 = ""
|
||||
|
||||
#* Custom gpu2 model name, empty string to disable.
|
||||
custom_gpu_name2 = ""
|
||||
|
||||
#* Custom gpu3 model name, empty string to disable.
|
||||
custom_gpu_name3 = ""
|
||||
|
||||
#* Custom gpu4 model name, empty string to disable.
|
||||
custom_gpu_name4 = ""
|
||||
|
||||
#* Custom gpu5 model name, empty string to disable.
|
||||
custom_gpu_name5 = ""
|
||||
83
btop/themes/caelestia.theme
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
# Main background, empty for terminal default, need to be empty if you want transparent background
|
||||
theme[main_bg]=#141318
|
||||
|
||||
# Main text color
|
||||
theme[main_fg]=#e6e1e9
|
||||
|
||||
# Title color for boxes
|
||||
theme[title]=#e6e1e9
|
||||
|
||||
# Highlight color for keyboard shortcuts
|
||||
theme[hi_fg]=#cbbeff
|
||||
|
||||
# Background color of selected item in processes box
|
||||
theme[selected_bg]=#201f24
|
||||
|
||||
# Foreground color of selected item in processes box
|
||||
theme[selected_fg]=#cbbeff
|
||||
|
||||
# Color of inactive/disabled text
|
||||
theme[inactive_fg]=#938f99
|
||||
|
||||
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
|
||||
theme[graph_text]=#edb8cc
|
||||
|
||||
# Background color of the percentage meters
|
||||
theme[meter_bg]=#938f99
|
||||
|
||||
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
|
||||
theme[proc_misc]=#edb8cc
|
||||
|
||||
# CPU, Memory, Network, Proc box outline colors
|
||||
theme[cpu_box]=#c7b6ff
|
||||
theme[mem_box]=#c8e3ff
|
||||
theme[net_box]=#cfb3ea
|
||||
theme[proc_box]=#b9b5ff
|
||||
|
||||
# Box divider line and small boxes line color
|
||||
theme[div_line]=#48454e
|
||||
|
||||
# Temperature graph color (Green -> Yellow -> Red)
|
||||
theme[temp_start]=#c8e3ff
|
||||
theme[temp_mid]=#ffecf3
|
||||
theme[temp_end]=#cba2f9
|
||||
|
||||
# CPU graph colors (Teal -> Sapphire -> Lavender)
|
||||
theme[cpu_start]=#d7deff
|
||||
theme[cpu_mid]=#bec3ff
|
||||
theme[cpu_end]=#cec6ff
|
||||
|
||||
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
|
||||
theme[free_start]=#c7b6ff
|
||||
theme[free_mid]=#cec6ff
|
||||
theme[free_end]=#b9b5ff
|
||||
|
||||
# Mem/Disk cached meter (Sapphire -> Blue -> Lavender)
|
||||
theme[cached_start]=#bec3ff
|
||||
theme[cached_mid]=#b9b5ff
|
||||
theme[cached_end]=#cec6ff
|
||||
|
||||
# Mem/Disk available meter (Peach -> Maroon -> Red)
|
||||
theme[available_start]=#e6c0f5
|
||||
theme[available_mid]=#cfb3ea
|
||||
theme[available_end]=#cba2f9
|
||||
|
||||
# Mem/Disk used meter (Green -> Teal -> Sky)
|
||||
theme[used_start]=#c8e3ff
|
||||
theme[used_mid]=#d7deff
|
||||
theme[used_end]=#d4d9ff
|
||||
|
||||
# Download graph colors (Peach -> Maroon -> Red)
|
||||
theme[download_start]=#e6c0f5
|
||||
theme[download_mid]=#cfb3ea
|
||||
theme[download_end]=#cba2f9
|
||||
|
||||
# Upload graph colors (Green -> Teal -> Sky)
|
||||
theme[upload_start]=#c8e3ff
|
||||
theme[upload_mid]=#d7deff
|
||||
theme[upload_end]=#d4d9ff
|
||||
|
||||
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Lavender -> Mauve)
|
||||
theme[process_start]=#bec3ff
|
||||
theme[process_mid]=#cec6ff
|
||||
theme[process_end]=#c7b6ff
|
||||
14
fish/conf.d/fish_frozen_key_bindings.fish
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# This file was created by fish when upgrading to version 4.3, to migrate
|
||||
# the 'fish_key_bindings' variable from its old default scope (universal)
|
||||
# to its new default scope (global). We recommend you delete this file
|
||||
# and configure key bindings in ~/.config/fish/config.fish if needed.
|
||||
|
||||
# set --global fish_key_bindings fish_default_key_bindings
|
||||
|
||||
# Prior to version 4.3, fish shipped an event handler that runs
|
||||
# `set --universal fish_key_bindings fish_default_key_bindings`
|
||||
# whenever the fish_key_bindings variable is erased.
|
||||
# This means that as long as any fish < 4.3 is still running on this system,
|
||||
# we cannot complete the migration.
|
||||
# As a workaround, erase the universal variable at every shell startup.
|
||||
set --erase --universal fish_key_bindings
|
||||
62
fish/config.fish
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
if status is-interactive
|
||||
set -e SSH_AUTH_SOCK
|
||||
set -U -x SSH_AUTH_SOCK (gpgconf --list-dirs agent-ssh-socket)
|
||||
|
||||
set -x GPG_TTY (tty)
|
||||
|
||||
gpgconf --launch gpg-agent
|
||||
|
||||
set -gx EDITOR /usr/bin/hx
|
||||
|
||||
# Starship custom prompt
|
||||
starship init fish | source
|
||||
|
||||
# Direnv + Zoxide
|
||||
command -v direnv &>/dev/null && direnv hook fish | source
|
||||
command -v zoxide &>/dev/null && zoxide init fish --cmd cd | source
|
||||
|
||||
# Better ls
|
||||
alias ls='eza --icons --group-directories-first -1'
|
||||
|
||||
# Abbrs
|
||||
abbr lg lazygit
|
||||
abbr gd 'git diff'
|
||||
abbr ga 'git add .'
|
||||
abbr gc 'git commit -am'
|
||||
abbr gl 'git log'
|
||||
abbr gs 'git status'
|
||||
abbr gst 'git stash'
|
||||
abbr gsp 'git stash pop'
|
||||
abbr gp 'git push'
|
||||
abbr gpl 'git pull'
|
||||
abbr gsw 'git switch'
|
||||
abbr gsm 'git switch main'
|
||||
abbr gb 'git branch'
|
||||
abbr gbd 'git branch -d'
|
||||
abbr gco 'git checkout'
|
||||
abbr gsh 'git show'
|
||||
|
||||
abbr l ls
|
||||
abbr ll 'ls -l'
|
||||
abbr la 'ls -a'
|
||||
abbr lla 'ls -la'
|
||||
|
||||
# Custom colours
|
||||
#cat ~/.local/state/caelestia/sequences.txt 2>/dev/null
|
||||
|
||||
# For jumping between prompts in foot terminal
|
||||
function mark_prompt_start --on-event fish_prompt
|
||||
echo -en "\e]133;A\e\\"
|
||||
end
|
||||
|
||||
function y
|
||||
set tmp (mktemp -t "yazi-cwd.XXXXXX")
|
||||
yazi $argv --cwd-file="$tmp"
|
||||
if read -z cwd <"$tmp"; and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||
builtin cd -- "$cwd"
|
||||
end
|
||||
rm -f -- "$tmp"
|
||||
end
|
||||
|
||||
bind \cz 'fg 2>/dev/null; commandline -f repaint'
|
||||
end
|
||||
5
fish/fish_variables
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR --export SSH_AUTH_SOCK:/run/user/1000/gnupg/S\x2egpg\x2dagent\x2essh
|
||||
SETUVAR __fish_initialized:4300
|
||||
SETUVAR fish_user_paths:/home/ceres/\x2elocal/bin/qmk\x2dtoolchain/bin\x1e/home/ceres/Git/monero/build/Linux/master/release/bin\x1e/home/ceres/Git/depot_tools
|
||||
3
fish/functions/1
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
ringed azure sunsets,
|
||||
highest peaks under two suns;
|
||||
tiny shining dot
|
||||
3
fish/functions/2
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
stunning dusty clouds
|
||||
stars dancing in synchrony
|
||||
amidst endless dark
|
||||
3
fish/functions/3
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
starry fireworks spark
|
||||
galaxy-bright, yet so small—
|
||||
little fires start
|
||||
3
fish/functions/4
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
distant city lights
|
||||
sea and sky merge in blackness—
|
||||
an infinite void
|
||||
10
fish/functions/fish_greeting.fish
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
function fish_greeting
|
||||
set num $(random 1 4)
|
||||
echo -ne '\x1b[36;16m' # Set colour to primary
|
||||
echo '▄▖ ▄▖ ▄▖▜ ▜ '
|
||||
echo '▌ █▌▛▘█▌▛▘▄▖▚ █▌█▌▛▘▄▖▌▌▐ ▐ '
|
||||
echo '▙▖▙▖▌ ▙▖▄▌ ▄▌▙▖▙▖▄▌ ▛▌▐▖▐▖'
|
||||
echo ''
|
||||
echo "$(cat ~/.caelestia/fish/functions/$num)"
|
||||
glafetch
|
||||
end
|
||||
21
foot/colours.ini
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
[colors]
|
||||
foreground=FDF8F0
|
||||
background=151313
|
||||
|
||||
regular0=3F3D3D
|
||||
regular1=51494A
|
||||
regular2=866F67
|
||||
regular3=808578
|
||||
regular4=897E6B
|
||||
regular5=EEDA8D
|
||||
regular6=F9ECD4
|
||||
regular7=F4EDE1
|
||||
|
||||
bright0=ABA69D
|
||||
bright1=51494A
|
||||
bright2=866F67
|
||||
bright3=808578
|
||||
bright4=897E6B
|
||||
bright5=EEDA8D
|
||||
bright6=F9ECD4
|
||||
bright7=F4EDE1
|
||||
31
foot/foot.ini
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
shell=fish
|
||||
title=foot
|
||||
font=Departure Mono:size=12
|
||||
letter-spacing=0
|
||||
dpi-aware=no
|
||||
pad=25x25
|
||||
bold-text-in-bright=no
|
||||
gamma-correct-blending=no
|
||||
|
||||
[scrollback]
|
||||
lines=10000
|
||||
|
||||
[cursor]
|
||||
style=beam
|
||||
beam-thickness=1.5
|
||||
|
||||
[colors]
|
||||
alpha=0.78
|
||||
|
||||
[main]
|
||||
include=/home/ceres/.caelestia/foot/colours.ini
|
||||
|
||||
[key-bindings]
|
||||
scrollback-up-page=Page_Up
|
||||
scrollback-down-page=Page_Down
|
||||
search-start=Control+Shift+f
|
||||
|
||||
[search-bindings]
|
||||
cancel=Escape
|
||||
find-prev=Shift+F3
|
||||
find-next=F3 Control+G
|
||||
15
glafetch/config.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"show_err": false,
|
||||
"use_bold": true,
|
||||
"items": [
|
||||
"separator",
|
||||
"host",
|
||||
"kernel",
|
||||
"cpu",
|
||||
"de",
|
||||
"portage_world",
|
||||
"portage_all",
|
||||
"Thank you Cyn :3",
|
||||
"separator"
|
||||
]
|
||||
}
|
||||
24
helix/config.toml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
theme = "theme"
|
||||
|
||||
[editor.indent-guides]
|
||||
render = true
|
||||
|
||||
[keys.normal.space]
|
||||
e = [
|
||||
':sh rm -f /tmp/unique-file',
|
||||
':sh rm -f /tmp/unique-cwd-file',
|
||||
":insert-output yazi --chooser-file=/tmp/unique-file --cwd-file=/tmp/unique-cwd-file",
|
||||
':insert-output echo "\x1b[?1049h\x1b[?2004h" > /dev/tty',
|
||||
':open %sh{cat /tmp/unique-file}',
|
||||
':cd %sh{cat /tmp/unique-cwd-file}',
|
||||
':redraw',
|
||||
]
|
||||
|
||||
# helix/config.toml
|
||||
[keys.normal]
|
||||
C-g = [
|
||||
":write-all",
|
||||
":insert-output lazygit >/dev/tty",
|
||||
":redraw",
|
||||
":reload-all"
|
||||
]
|
||||
23
helix/languages.toml
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
[[language]]
|
||||
name = "latex"
|
||||
soft-wrap.enable = true
|
||||
|
||||
|
||||
[language-server.texlab.config.texlab.build]
|
||||
onSave = true
|
||||
forwardSearchAfter = true
|
||||
|
||||
[language-server.texlab.config.texlab.forwardSearch]
|
||||
executable = "qpdfview"
|
||||
args = ["--unique", "%p#src:%f:%l:1"]
|
||||
|
||||
[language-server.texlab.config.texlab.chktex]
|
||||
onEdit = true
|
||||
|
||||
[[language]]
|
||||
name = "bash"
|
||||
file-types = ["ebuild"]
|
||||
|
||||
[[language]]
|
||||
name = "markdown"
|
||||
soft-wrap.enable = true
|
||||
4
helix/themes/theme.toml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
inherits = "catppuccin_mocha"
|
||||
|
||||
"ui.background" = {}
|
||||
"ui.statusline" = {}
|
||||
7
niri/colours.kdl
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
layout {
|
||||
border {
|
||||
active-color "#51494A"
|
||||
inactive-color "#201D1E"
|
||||
urgent-color "#866F67"
|
||||
}
|
||||
}
|
||||
561
niri/config.kdl
Normal file
|
|
@ -0,0 +1,561 @@
|
|||
include "colours.kdl"
|
||||
|
||||
input {
|
||||
keyboard {
|
||||
xkb {
|
||||
// You can set rules, model, layout, variant and options.
|
||||
// For more information, see xkeyboard-config(7).
|
||||
|
||||
// For example:
|
||||
// layout "us,ru"
|
||||
// options "grp:win_space_toggle,compose:ralt,ctrl:nocaps"
|
||||
|
||||
// If this section is empty, niri will fetch xkb settings
|
||||
// from org.freedesktop.locale1. You can control these using
|
||||
// localectl set-x11-keymap.
|
||||
}
|
||||
|
||||
// Enable numlock on startup, omitting this setting disables it.
|
||||
numlock
|
||||
}
|
||||
|
||||
// Next sections include libinput settings.
|
||||
// Omitting settings disables them, or leaves them at their default values.
|
||||
// All commented-out settings here are examples, not defaults.
|
||||
touchpad {
|
||||
// off
|
||||
tap
|
||||
// dwt
|
||||
// dwtp
|
||||
// drag false
|
||||
// drag-lock
|
||||
natural-scroll
|
||||
// accel-speed 0.2
|
||||
// accel-profile "flat"
|
||||
// scroll-method "two-finger"
|
||||
// disabled-on-external-mouse
|
||||
}
|
||||
|
||||
mouse {
|
||||
// off
|
||||
// natural-scroll
|
||||
// accel-speed 0.2
|
||||
// accel-profile "flat"
|
||||
// scroll-method "no-scroll"
|
||||
}
|
||||
|
||||
trackpoint {
|
||||
// off
|
||||
// natural-scroll
|
||||
// accel-speed 0.2
|
||||
// accel-profile "flat"
|
||||
// scroll-method "on-button-down"
|
||||
// scroll-button 273
|
||||
// scroll-button-lock
|
||||
// middle-emulation
|
||||
}
|
||||
|
||||
// Uncomment this to make the mouse warp to the center of newly focused windows.
|
||||
warp-mouse-to-focus
|
||||
|
||||
// Focus windows and outputs automatically when moving the mouse into them.
|
||||
// Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
|
||||
focus-follows-mouse max-scroll-amount="100%"
|
||||
}
|
||||
|
||||
// You can configure outputs by their name, which you can find
|
||||
// by running `niri msg outputs` while inside a niri instance.
|
||||
// The built-in laptop monitor is usually called "eDP-1".
|
||||
// Find more information on the wiki:
|
||||
// https://yalter.github.io/niri/Configuration:-Outputs
|
||||
// Remember to uncomment the node by removing "/-"!
|
||||
/-output "eDP-1" {
|
||||
// Uncomment this line to disable this output.
|
||||
// off
|
||||
|
||||
// Resolution and, optionally, refresh rate of the output.
|
||||
// The format is "<width>x<height>" or "<width>x<height>@<refresh rate>".
|
||||
// If the refresh rate is omitted, niri will pick the highest refresh rate
|
||||
// for the resolution.
|
||||
// If the mode is omitted altogether or is invalid, niri will pick one automatically.
|
||||
// Run `niri msg outputs` while inside a niri instance to list all outputs and their modes.
|
||||
mode "1920x1080@120.030"
|
||||
|
||||
// You can use integer or fractional scale, for example use 1.5 for 150% scale.
|
||||
scale 2
|
||||
|
||||
// Transform allows to rotate the output counter-clockwise, valid values are:
|
||||
// normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270.
|
||||
transform "normal"
|
||||
|
||||
// Position of the output in the global coordinate space.
|
||||
// This affects directional monitor actions like "focus-monitor-left", and cursor movement.
|
||||
// The cursor can only move between directly adjacent outputs.
|
||||
// Output scale and rotation has to be taken into account for positioning:
|
||||
// outputs are sized in logical, or scaled, pixels.
|
||||
// For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080,
|
||||
// so to put another output directly adjacent to it on the right, set its x to 1920.
|
||||
// If the position is unset or results in an overlap, the output is instead placed
|
||||
// automatically.
|
||||
position x=1280 y=0
|
||||
}
|
||||
|
||||
// Settings that influence how windows are positioned and sized.
|
||||
// Find more information on the wiki:
|
||||
// https://yalter.github.io/niri/Configuration:-Layout
|
||||
layout {
|
||||
// Set gaps around windows in logical pixels.
|
||||
gaps 16
|
||||
|
||||
// These set global defaults for blur, however it needs to be enabled
|
||||
// individually on a per-window or per-layer basis as well for it to have
|
||||
// any effect.
|
||||
//
|
||||
// Certain apps that support the KDE blur protocol may blur themselves as well.
|
||||
blur {
|
||||
noise 0.1
|
||||
passes 2
|
||||
radius 6
|
||||
|
||||
// Sensible default, gets applied to blurred layer surfaces, as most of the
|
||||
// time, the actual surface is bigger than what is rendered on screen.
|
||||
ignore-alpha 0.8
|
||||
}
|
||||
|
||||
// When to center a column when changing focus, options are:
|
||||
// - "never", default behavior, focusing an off-screen column will keep at the left
|
||||
// or right edge of the screen.
|
||||
// - "always", the focused column will always be centered.
|
||||
// - "on-overflow", focusing a column will center it if it doesn't fit
|
||||
// together with the previously focused column.
|
||||
center-focused-column "never"
|
||||
|
||||
// You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
|
||||
preset-column-widths {
|
||||
// Proportion sets the width as a fraction of the output width, taking gaps into account.
|
||||
// For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
|
||||
// The default preset widths are 1/3, 1/2 and 2/3 of the output.
|
||||
proportion 0.33333
|
||||
proportion 0.5
|
||||
proportion 0.66667
|
||||
|
||||
// Fixed sets the width in logical pixels exactly.
|
||||
// fixed 1920
|
||||
}
|
||||
|
||||
// You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
|
||||
// preset-window-heights { }
|
||||
|
||||
// You can change the default width of the new windows.
|
||||
default-column-width { proportion 0.5; }
|
||||
// If you leave the brackets empty, the windows themselves will decide their initial width.
|
||||
// default-column-width {}
|
||||
|
||||
// By default focus ring and border are rendered as a solid background rectangle
|
||||
// behind windows. That is, they will show up through semitransparent windows.
|
||||
// This is because windows using client-side decorations can have an arbitrary shape.
|
||||
//
|
||||
// If you don't like that, you should uncomment `prefer-no-csd` below.
|
||||
// Niri will draw focus ring and border *around* windows that agree to omit their
|
||||
// client-side decorations.
|
||||
//
|
||||
// Alternatively, you can override it with a window rule called
|
||||
// `draw-border-with-background`.
|
||||
|
||||
// You can change how the focus ring looks.
|
||||
focus-ring {
|
||||
// Uncomment this line to disable the focus ring.
|
||||
off
|
||||
|
||||
// How many logical pixels the ring extends out from the windows.
|
||||
width 4
|
||||
|
||||
// Colors can be set in a variety of ways:
|
||||
// - CSS named colors: "red"
|
||||
// - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
|
||||
// - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
|
||||
|
||||
// Color of the ring on the active monitor.
|
||||
active-color "#7fc8ff"
|
||||
|
||||
// Color of the ring on inactive monitors.
|
||||
//
|
||||
// The focus ring only draws around the active window, so the only place
|
||||
// where you can see its inactive-color is on other monitors.
|
||||
inactive-color "#505050"
|
||||
|
||||
// You can also use gradients. They take precedence over solid colors.
|
||||
// Gradients are rendered the same as CSS linear-gradient(angle, from, to).
|
||||
// The angle is the same as in linear-gradient, and is optional,
|
||||
// defaulting to 180 (top-to-bottom gradient).
|
||||
// You can use any CSS linear-gradient tool on the web to set these up.
|
||||
// Changing the color space is also supported, check the wiki for more info.
|
||||
//
|
||||
// active-gradient from="#80c8ff" to="#c7ff7f" angle=45
|
||||
|
||||
// You can also color the gradient relative to the entire view
|
||||
// of the workspace, rather than relative to just the window itself.
|
||||
// To do that, set relative-to="workspace-view".
|
||||
//
|
||||
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
|
||||
}
|
||||
|
||||
border {
|
||||
on
|
||||
width 4
|
||||
}
|
||||
|
||||
// You can enable drop shadows for windows.
|
||||
shadow {
|
||||
// Uncomment the next line to enable shadows.
|
||||
// on
|
||||
|
||||
// By default, the shadow draws only around its window, and not behind it.
|
||||
// Uncomment this setting to make the shadow draw behind its window.
|
||||
//
|
||||
// Note that niri has no way of knowing about the CSD window corner
|
||||
// radius. It has to assume that windows have square corners, leading to
|
||||
// shadow artifacts inside the CSD rounded corners. This setting fixes
|
||||
// those artifacts.
|
||||
//
|
||||
// However, instead you may want to set prefer-no-csd and/or
|
||||
// geometry-corner-radius. Then, niri will know the corner radius and
|
||||
// draw the shadow correctly, without having to draw it behind the
|
||||
// window. These will also remove client-side shadows if the window
|
||||
// draws any.
|
||||
//
|
||||
// draw-behind-window true
|
||||
|
||||
// You can change how shadows look. The values below are in logical
|
||||
// pixels and match the CSS box-shadow properties.
|
||||
|
||||
// Softness controls the shadow blur radius.
|
||||
softness 30
|
||||
|
||||
// Spread expands the shadow.
|
||||
spread 5
|
||||
|
||||
// Offset moves the shadow relative to the window.
|
||||
offset x=0 y=5
|
||||
|
||||
// You can also change the shadow color and opacity.
|
||||
color "#0007"
|
||||
}
|
||||
|
||||
// Struts shrink the area occupied by windows, similarly to layer-shell panels.
|
||||
// You can think of them as a kind of outer gaps. They are set in logical pixels.
|
||||
// Left and right struts will cause the next window to the side to always be visible.
|
||||
// Top and bottom struts will simply add outer gaps in addition to the area occupied by
|
||||
// layer-shell panels and regular gaps.
|
||||
struts {
|
||||
// left 64
|
||||
// right 64
|
||||
// top 64
|
||||
// bottom 64
|
||||
}
|
||||
}
|
||||
|
||||
// Add lines like this to spawn processes at startup.
|
||||
// Note that running niri as a session supports xdg-desktop-autostart,
|
||||
// which may be more convenient to use.
|
||||
// See the binds section below for more spawn examples.
|
||||
|
||||
// This line starts waybar, a commonly used bar for Wayland compositors.
|
||||
spawn-sh-at-startup "/home/ceres/.caelestia/niri/random-wallpaper.sh"
|
||||
spawn-sh-at-startup "qs -c shell"
|
||||
spawn-sh-at-startup "echo start | sudo tee /sys/class/remoteproc/remoteproc0/state"
|
||||
|
||||
// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup:
|
||||
// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell"
|
||||
|
||||
hotkey-overlay {
|
||||
// Uncomment this line to disable the "Important Hotkeys" pop-up at startup.
|
||||
skip-at-startup
|
||||
}
|
||||
|
||||
// Uncomment this line to ask the clients to omit their client-side decorations if possible.
|
||||
// If the client will specifically ask for CSD, the request will be honored.
|
||||
// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
|
||||
// This option will also fix border/focus ring drawing behind some semitransparent windows.
|
||||
// After enabling or disabling this, you need to restart the apps for this to take effect.
|
||||
prefer-no-csd
|
||||
|
||||
// You can change the path where screenshots are saved.
|
||||
// A ~ at the front will be expanded to the home directory.
|
||||
// The path is formatted with strftime(3) to give you the screenshot date and time.
|
||||
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
|
||||
|
||||
// You can also set this to null to disable saving screenshots to disk.
|
||||
// screenshot-path null
|
||||
|
||||
// Animation settings.
|
||||
// The wiki explains how to configure individual animations:
|
||||
// https://yalter.github.io/niri/Configuration:-Animations
|
||||
animations {
|
||||
// Uncomment to turn off all animations.
|
||||
// off
|
||||
|
||||
// Slow down all animations by this factor. Values below 1 speed them up instead.
|
||||
// slowdown 3.0
|
||||
}
|
||||
|
||||
// Window rules let you adjust behavior for individual windows.
|
||||
// Find more information on the wiki:
|
||||
// https://yalter.github.io/niri/Configuration:-Window-Rules
|
||||
|
||||
// Work around WezTerm's initial configure bug
|
||||
// by setting an empty default-column-width.
|
||||
window-rule {
|
||||
// This regular expression is intentionally made as specific as possible,
|
||||
// since this is the default config, and we want no false positives.
|
||||
// You can get away with just app-id="wezterm" if you want.
|
||||
match app-id=r#"^org\.wezfurlong\.wezterm$"#
|
||||
default-column-width {}
|
||||
}
|
||||
|
||||
// Open the Firefox picture-in-picture player as floating by default.
|
||||
window-rule {
|
||||
// This app-id regular expression will work for both:
|
||||
// - host Firefox (app-id is "firefox")
|
||||
// - Flatpak Firefox (app-id is "org.mozilla.firefox")
|
||||
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
|
||||
open-floating true
|
||||
}
|
||||
|
||||
window-rule {
|
||||
// This app-id regular expression will work for both:
|
||||
// - host Firefox (app-id is "firefox")
|
||||
// - Flatpak Firefox (app-id is "org.mozilla.firefox")
|
||||
match title="^qs-pass$"
|
||||
open-floating true
|
||||
}
|
||||
|
||||
window-rule {
|
||||
// This app-id regular expression will work for both:
|
||||
// - host Firefox (app-id is "firefox")
|
||||
// - Flatpak Firefox (app-id is "org.mozilla.firefox")
|
||||
match title="^wallpaper-selector$"
|
||||
open-floating true
|
||||
}
|
||||
|
||||
// Example: block out two password managers from screen capture.
|
||||
// (This example rule is commented out with a "/-" in front.)
|
||||
/-window-rule {
|
||||
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
||||
match app-id=r#"^org\.gnome\.World\.Secrets$"#
|
||||
|
||||
block-out-from "screen-capture"
|
||||
|
||||
// Use this instead if you want them visible on third-party screenshot tools.
|
||||
// block-out-from "screencast"
|
||||
}
|
||||
|
||||
// Example: enable rounded corners for all windows.
|
||||
// (This example rule is commented out with a "/-" in front.)
|
||||
window-rule {
|
||||
geometry-corner-radius 12
|
||||
clip-to-geometry true
|
||||
draw-border-with-background false
|
||||
blur {
|
||||
on
|
||||
}
|
||||
}
|
||||
|
||||
window-rule {
|
||||
match app-id="zen"
|
||||
opacity 0.95
|
||||
}
|
||||
|
||||
overview {
|
||||
backdrop-color "#1e1e2e"
|
||||
}
|
||||
|
||||
binds {
|
||||
Mod+T hotkey-overlay-title="Open a Terminal: alacritty" { spawn "foot"; }
|
||||
Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; }
|
||||
Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
|
||||
Mod+B { spawn "zen"; }
|
||||
Mod+P { spawn-sh "qs ipc -c shell call pass toggle"; }
|
||||
Mod+Space { spawn-sh "qs ipc -c shell call launcher toggle"; }
|
||||
Mod+W { spawn-sh "qs ipc -c shell call widgets toggle"; }
|
||||
Mod+L { spawn-sh "qs -c lock"; }
|
||||
|
||||
Mod+Z repeat=false { toggle-overview; }
|
||||
|
||||
Mod+Q repeat=false { close-window; }
|
||||
|
||||
Mod+Left { focus-column-left; }
|
||||
Mod+Down { focus-window-or-workspace-down; }
|
||||
Mod+Up { focus-window-or-workspace-up; }
|
||||
Mod+Right { focus-column-right; }
|
||||
Mod+N { focus-column-left; }
|
||||
Mod+H { focus-window-or-workspace-down; }
|
||||
Mod+O { focus-window-or-workspace-up; }
|
||||
Mod+E { focus-column-right; }
|
||||
|
||||
Mod+Ctrl+Left { move-column-left; }
|
||||
Mod+Ctrl+Down { move-window-down-or-to-workspace-down; }
|
||||
Mod+Ctrl+Up { move-window-up-or-to-workspace-up; }
|
||||
Mod+Ctrl+Right { move-column-right; }
|
||||
Mod+Ctrl+N { move-column-left; }
|
||||
Mod+Ctrl+H { move-window-down-or-to-workspace-down; }
|
||||
Mod+Ctrl+O { move-window-up-or-to-workspace-up; }
|
||||
Mod+Ctrl+E { move-column-right; }
|
||||
|
||||
Mod+Home { focus-column-first; }
|
||||
Mod+End { focus-column-last; }
|
||||
Mod+Ctrl+Home { move-column-to-first; }
|
||||
Mod+Ctrl+End { move-column-to-last; }
|
||||
|
||||
Mod+Shift+Left { focus-monitor-left; }
|
||||
Mod+Shift+Down { focus-monitor-down; }
|
||||
Mod+Shift+Up { focus-monitor-up; }
|
||||
Mod+Shift+Right { focus-monitor-right; }
|
||||
|
||||
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
|
||||
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
|
||||
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
|
||||
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
|
||||
|
||||
// Alternatively, there are commands to move just a single window:
|
||||
// Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
|
||||
// ...
|
||||
|
||||
// And you can also move a whole workspace to another monitor:
|
||||
// Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
|
||||
// ...
|
||||
|
||||
// You can bind mouse wheel scroll ticks using the following syntax.
|
||||
// These binds will change direction based on the natural-scroll setting.
|
||||
//
|
||||
// To avoid scrolling through workspaces really fast, you can use
|
||||
// the cooldown-ms property. The bind will be rate-limited to this value.
|
||||
// You can set a cooldown on any bind, but it's most useful for the wheel.
|
||||
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
|
||||
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
|
||||
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
|
||||
|
||||
Mod+WheelScrollRight { focus-column-right; }
|
||||
Mod+WheelScrollLeft { focus-column-left; }
|
||||
Mod+Ctrl+WheelScrollRight { move-column-right; }
|
||||
Mod+Ctrl+WheelScrollLeft { move-column-left; }
|
||||
|
||||
// Usually scrolling up and down with Shift in applications results in
|
||||
// horizontal scrolling; these binds replicate that.
|
||||
Mod+Shift+WheelScrollDown { focus-column-right; }
|
||||
Mod+Shift+WheelScrollUp { focus-column-left; }
|
||||
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
|
||||
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
|
||||
|
||||
Mod+1 { focus-workspace 1; }
|
||||
Mod+2 { focus-workspace 2; }
|
||||
Mod+3 { focus-workspace 3; }
|
||||
Mod+4 { focus-workspace 4; }
|
||||
Mod+5 { focus-workspace 5; }
|
||||
Mod+6 { focus-workspace 6; }
|
||||
Mod+7 { focus-workspace 7; }
|
||||
Mod+8 { focus-workspace 8; }
|
||||
Mod+9 { focus-workspace 9; }
|
||||
Mod+Ctrl+1 { move-column-to-workspace 1; }
|
||||
Mod+Ctrl+2 { move-column-to-workspace 2; }
|
||||
Mod+Ctrl+3 { move-column-to-workspace 3; }
|
||||
Mod+Ctrl+4 { move-column-to-workspace 4; }
|
||||
Mod+Ctrl+5 { move-column-to-workspace 5; }
|
||||
Mod+Ctrl+6 { move-column-to-workspace 6; }
|
||||
Mod+Ctrl+7 { move-column-to-workspace 7; }
|
||||
Mod+Ctrl+8 { move-column-to-workspace 8; }
|
||||
Mod+Ctrl+9 { move-column-to-workspace 9; }
|
||||
|
||||
// Alternatively, there are commands to move just a single window:
|
||||
// Mod+Ctrl+1 { move-window-to-workspace 1; }
|
||||
|
||||
// Switches focus between the current and the previous workspace.
|
||||
// Mod+Tab { focus-workspace-previous; }
|
||||
|
||||
// The following binds move the focused window in and out of a column.
|
||||
// If the window is alone, they will consume it into the nearby column to the side.
|
||||
// If the window is already in a column, they will expel it out.
|
||||
Mod+BracketLeft { consume-or-expel-window-left; }
|
||||
Mod+BracketRight { consume-or-expel-window-right; }
|
||||
|
||||
// Consume one window from the right to the bottom of the focused column.
|
||||
Mod+Comma { consume-window-into-column; }
|
||||
// Expel the bottom window from the focused column to the right.
|
||||
Mod+Period { expel-window-from-column; }
|
||||
|
||||
Mod+R { switch-preset-column-width; }
|
||||
// Cycling through the presets in reverse order is also possible.
|
||||
// Mod+R { switch-preset-column-width-back; }
|
||||
Mod+Shift+R { switch-preset-window-height; }
|
||||
Mod+Ctrl+R { reset-window-height; }
|
||||
Mod+F { maximize-column; }
|
||||
Mod+Shift+F { fullscreen-window; }
|
||||
|
||||
// Expand the focused column to space not taken up by other fully visible columns.
|
||||
// Makes the column "fill the rest of the space".
|
||||
Mod+Ctrl+F { expand-column-to-available-width; }
|
||||
|
||||
Mod+C { center-column; }
|
||||
|
||||
// Center all fully visible columns on screen.
|
||||
Mod+Ctrl+C { center-visible-columns; }
|
||||
|
||||
// Finer width adjustments.
|
||||
// This command can also:
|
||||
// * set width in pixels: "1000"
|
||||
// * adjust width in pixels: "-5" or "+5"
|
||||
// * set width as a percentage of screen width: "25%"
|
||||
// * adjust width as a percentage of screen width: "-10%" or "+10%"
|
||||
// Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
|
||||
// set-column-width "100" will make the column occupy 200 physical screen pixels.
|
||||
Mod+Minus { set-column-width "-10%"; }
|
||||
Mod+Equal { set-column-width "+10%"; }
|
||||
|
||||
// Finer height adjustments when in column with other windows.
|
||||
Mod+Shift+Minus { set-window-height "-10%"; }
|
||||
Mod+Shift+Equal { set-window-height "+10%"; }
|
||||
|
||||
// Move the focused window between the floating and the tiling layout.
|
||||
Mod+V { toggle-window-floating; }
|
||||
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
|
||||
|
||||
// Toggle tabbed tile display mode.
|
||||
// Windows can be moved into or out of this tile using the
|
||||
// `move-window-into-or-out-of-group` action; example:
|
||||
Mod+G { toggle-group; }
|
||||
Mod+Alt+H { move-window-into-or-out-of-group "left"; }
|
||||
Mod+Alt+L { move-window-into-or-out-of-group "right"; }
|
||||
Mod+Alt+K { move-window-into-or-out-of-group "up"; }
|
||||
Mod+Alt+J { move-window-into-or-out-of-group "down"; }
|
||||
|
||||
// Actions to switch layouts.
|
||||
// Note: if you uncomment these, make sure you do NOT have
|
||||
// a matching layout switch hotkey configured in xkb options above.
|
||||
// Having both at once on the same hotkey will break the switching,
|
||||
// since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
|
||||
// Mod+Space { switch-layout "next"; }
|
||||
// Mod+Shift+Space { switch-layout "prev"; }
|
||||
|
||||
Print { screenshot; }
|
||||
Ctrl+Print { screenshot-screen; }
|
||||
Alt+Print { screenshot-window; }
|
||||
|
||||
// Applications such as remote-desktop clients and software KVM switches may
|
||||
// request that niri stops processing the keyboard shortcuts defined here
|
||||
// so they may, for example, forward the key presses as-is to a remote machine.
|
||||
// It's a good idea to bind an escape hatch to toggle the inhibitor,
|
||||
// so a buggy application can't hold your session hostage.
|
||||
//
|
||||
// The allow-inhibiting=false property can be applied to other binds as well,
|
||||
// which ensures niri always processes them, even when an inhibitor is active.
|
||||
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
|
||||
|
||||
// The quit action will show a confirmation dialog to avoid accidental exits.
|
||||
Mod+Shift+E { quit; }
|
||||
Ctrl+Alt+Delete { quit; }
|
||||
|
||||
// Powers off the monitors. To turn them back on, do any input like
|
||||
// moving the mouse or pressing any other key.
|
||||
Mod+Shift+P { power-off-monitors; }
|
||||
}
|
||||
6
niri/random-wallpaper.sh
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
wallpaper_path="$(find ~/.caelestia/wallpapers -type f | shuf -n 1)"
|
||||
|
||||
ln -sf ${wallpaper_path} "/home/ceres/.local/state/niri/wallpaper"
|
||||
|
||||
wallust run "${wallpaper_path}"
|
||||
25
quickshell/lock/Colours.qml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
|
||||
Singleton {
|
||||
readonly property string foreground: "#FDF8F0"
|
||||
readonly property string background: "#151313"
|
||||
|
||||
readonly property string colour0: "#3F3D3D"
|
||||
readonly property string colour1: "#51494A"
|
||||
readonly property string colour2: "#866F67"
|
||||
readonly property string colour3: "#808578"
|
||||
readonly property string colour4: "#897E6B"
|
||||
readonly property string colour5: "#EEDA8D"
|
||||
readonly property string colour6: "#F9ECD4"
|
||||
readonly property string colour7: "#F4EDE1"
|
||||
readonly property string colour8: "#ABA69D"
|
||||
readonly property string colour9: "#51494A"
|
||||
readonly property string colour10: "#866F67"
|
||||
readonly property string colour11: "#808578"
|
||||
readonly property string colour12: "#897E6B"
|
||||
readonly property string colour13: "#EEDA8D"
|
||||
readonly property string colour14: "#F9ECD4"
|
||||
readonly property string colour15: "#F4EDE1"
|
||||
}
|
||||
54
quickshell/lock/LockContext.qml
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Services.Pam
|
||||
|
||||
Scope {
|
||||
id: root
|
||||
signal unlocked()
|
||||
signal failed()
|
||||
|
||||
// These properties are in the context and not individual lock surfaces
|
||||
// so all surfaces can share the same state.
|
||||
property string currentText: ""
|
||||
property bool unlockInProgress: false
|
||||
property bool showFailure: false
|
||||
|
||||
// Clear the failure text once the user starts typing.
|
||||
onCurrentTextChanged: showFailure = false;
|
||||
|
||||
function tryUnlock() {
|
||||
if (currentText === "") return;
|
||||
|
||||
root.unlockInProgress = true;
|
||||
pam.start();
|
||||
}
|
||||
|
||||
PamContext {
|
||||
id: pam
|
||||
|
||||
// Its best to have a custom pam config for quickshell, as the system one
|
||||
// might not be what your interface expects, and break in some way.
|
||||
// This particular example only supports passwords.
|
||||
configDirectory: "pam"
|
||||
config: "password.conf"
|
||||
|
||||
// pam_unix will ask for a response for the password prompt
|
||||
onPamMessage: {
|
||||
if (this.responseRequired) {
|
||||
this.respond(root.currentText);
|
||||
}
|
||||
}
|
||||
|
||||
// pam_unix won't send any important messages so all we need is the completion status.
|
||||
onCompleted: result => {
|
||||
if (result == PamResult.Success) {
|
||||
root.unlocked();
|
||||
} else {
|
||||
root.currentText = "";
|
||||
root.showFailure = true;
|
||||
}
|
||||
|
||||
root.unlockInProgress = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
118
quickshell/lock/LockSurface.qml
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls.Fusion
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Services.UPower
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
required property LockContext context
|
||||
|
||||
Image {
|
||||
anchors.fill: parent
|
||||
source: "/home/ceres/.local/state/niri/wallpaper"
|
||||
}
|
||||
|
||||
Label {
|
||||
id: clock
|
||||
property var date: new Date()
|
||||
|
||||
font.family: "Departure Mono"
|
||||
color: Colours.foreground
|
||||
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
top: parent.top
|
||||
topMargin: 100
|
||||
}
|
||||
|
||||
// The native font renderer tends to look nicer at large sizes.
|
||||
renderType: Text.NativeRendering
|
||||
font.pointSize: 80
|
||||
|
||||
// updates the clock every second
|
||||
Timer {
|
||||
running: true
|
||||
repeat: true
|
||||
interval: 1000
|
||||
|
||||
onTriggered: clock.date = new Date();
|
||||
}
|
||||
|
||||
// updated when the date changes
|
||||
text: {
|
||||
const hours = this.date.getHours().toString().padStart(2, '0');
|
||||
const minutes = this.date.getMinutes().toString().padStart(2, '0');
|
||||
return `${hours}:${minutes}`;
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
top: parent.top
|
||||
topMargin: 250
|
||||
}
|
||||
|
||||
renderType: Text.NativeRendering
|
||||
font.pointSize: 30
|
||||
font.family: "Departure Mono"
|
||||
color: Colours.foreground
|
||||
|
||||
text: Math.floor(UPower.displayDevice.percentage * 100) + "% Battery"
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
// Uncommenting this will make the password entry invisible except on the active monitor.
|
||||
// visible: Window.active
|
||||
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
top: parent.verticalCenter
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
TextField {
|
||||
id: passwordBox
|
||||
|
||||
background: Rectangle {
|
||||
color: Colours.background
|
||||
opacity: 0.9
|
||||
border.width: 4
|
||||
border.color: Colours.colour2
|
||||
radius: 20
|
||||
}
|
||||
|
||||
implicitWidth: 400
|
||||
padding: 10
|
||||
color: Colours.foreground
|
||||
horizontalAlignment: TextInput.AlignHCenter
|
||||
|
||||
focus: true
|
||||
enabled: !root.context.unlockInProgress
|
||||
echoMode: TextInput.Password
|
||||
inputMethodHints: Qt.ImhSensitiveData
|
||||
|
||||
onTextChanged: root.context.currentText = this.text;
|
||||
|
||||
onAccepted: root.context.tryUnlock();
|
||||
|
||||
Connections {
|
||||
target: root.context
|
||||
|
||||
function onCurrentTextChanged() {
|
||||
passwordBox.text = root.context.currentText;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
visible: root.context.showFailure
|
||||
text: "Incorrect password"
|
||||
font.family: "Departure Mono"
|
||||
color: Colours.foreground
|
||||
}
|
||||
}
|
||||
}
|
||||
3
quickshell/lock/pam/password.conf
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
auth required pam_unix.so
|
||||
auth required pam_u2f.so cue authfile=/etc/u2f_mappings
|
||||
|
||||
31
quickshell/lock/shell.qml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
|
||||
ShellRoot {
|
||||
// This stores all the information shared between the lock surfaces on each screen.
|
||||
LockContext {
|
||||
id: lockContext
|
||||
|
||||
onUnlocked: {
|
||||
// Unlock the screen before exiting, or the compositor will display a
|
||||
// fallback lock you can't interact with.
|
||||
lock.locked = false;
|
||||
|
||||
Qt.quit();
|
||||
}
|
||||
}
|
||||
|
||||
WlSessionLock {
|
||||
id: lock
|
||||
|
||||
// Lock the session immediately when quickshell starts.
|
||||
locked: true
|
||||
|
||||
WlSessionLockSurface {
|
||||
LockSurface {
|
||||
anchors.fill: parent
|
||||
context: lockContext
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
25
quickshell/shell/Config/Colours.qml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
|
||||
Singleton {
|
||||
readonly property string foreground: "#FDF8F0"
|
||||
readonly property string background: "#151313"
|
||||
|
||||
readonly property string colour0: "#3F3D3D"
|
||||
readonly property string colour1: "#51494A"
|
||||
readonly property string colour2: "#866F67"
|
||||
readonly property string colour3: "#808578"
|
||||
readonly property string colour4: "#897E6B"
|
||||
readonly property string colour5: "#EEDA8D"
|
||||
readonly property string colour6: "#F9ECD4"
|
||||
readonly property string colour7: "#F4EDE1"
|
||||
readonly property string colour8: "#ABA69D"
|
||||
readonly property string colour9: "#51494A"
|
||||
readonly property string colour10: "#866F67"
|
||||
readonly property string colour11: "#808578"
|
||||
readonly property string colour12: "#897E6B"
|
||||
readonly property string colour13: "#EEDA8D"
|
||||
readonly property string colour14: "#F9ECD4"
|
||||
readonly property string colour15: "#F4EDE1"
|
||||
}
|
||||
8
quickshell/shell/Config/Config.qml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
|
||||
Singleton {
|
||||
readonly property int launcherVisibleEntries: 5
|
||||
readonly property real launcherOuterPadding: 10
|
||||
}
|
||||
74
quickshell/shell/Modules/Battery.qml
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
//@ pragma IconTheme Adwaita
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Io
|
||||
import Quickshell.Widgets
|
||||
import Quickshell.Services.UPower
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import "../Config"
|
||||
|
||||
PanelWindow {
|
||||
anchors {
|
||||
bottom: true
|
||||
right: true
|
||||
}
|
||||
|
||||
width: text.width + 70
|
||||
color: "transparent"
|
||||
|
||||
function getIcon() {
|
||||
if (UPower.displayDevice.percentage > 0.9) {
|
||||
if (UPower.onBattery == false) {
|
||||
return "xfce4-battery-full-charging"
|
||||
}
|
||||
else {
|
||||
return "xfce4-battery-full"
|
||||
}
|
||||
}
|
||||
else if (0.5 < UPower.displayDevice.percentage) {
|
||||
if (UPower.onBattery == false) {
|
||||
return "xfce4-battery-ok-charging"
|
||||
}
|
||||
else {
|
||||
return "xfce4-battery-ok"
|
||||
}
|
||||
}
|
||||
else if (0.1 < UPower.displayDevice.percentage) {
|
||||
if (UPower.onBattery == false) {
|
||||
return "xfce4-battery-low-charging"
|
||||
}
|
||||
else {
|
||||
return "xfce4-battery-low"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
|
||||
topLeftRadius: 20
|
||||
opacity: 0.95
|
||||
color: Colours.colour1
|
||||
|
||||
Row {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
IconImage {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: 50
|
||||
height: 50
|
||||
source: Quickshell.iconPath(getIcon())
|
||||
}
|
||||
Text {
|
||||
id: text
|
||||
color: Colours.foreground
|
||||
font.family: "Departure Mono"
|
||||
font.pixelSize: 50
|
||||
text: Math.floor(UPower.displayDevice.percentage * 100) + "%"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
56
quickshell/shell/Modules/Clock.qml
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
//@ pragma IconTheme Adwaita
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Io
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import "../Config"
|
||||
|
||||
PanelWindow {
|
||||
anchors {
|
||||
bottom: true
|
||||
left: true
|
||||
}
|
||||
|
||||
width: text.width + 20
|
||||
color: "transparent"
|
||||
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
|
||||
topRightRadius: 20
|
||||
opacity: 0.95
|
||||
color: Colours.colour1
|
||||
|
||||
Text {
|
||||
id: text
|
||||
anchors.centerIn: parent
|
||||
color: Colours.foreground
|
||||
font.family: "Departure Mono"
|
||||
font.pixelSize: 50
|
||||
|
||||
Process {
|
||||
id: dateProc
|
||||
|
||||
command: ["date"]
|
||||
running: true
|
||||
|
||||
stdout: StdioCollector {
|
||||
onStreamFinished: clock.text = this.text
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
interval: 1000
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: text.text = Qt.formatDateTime(new Date(), "HH:mm")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
178
quickshell/shell/Modules/Launcher.qml
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Io
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import "../Config"
|
||||
|
||||
PanelWindow {
|
||||
id: launcher
|
||||
anchors.top: true
|
||||
property var open: false
|
||||
property int selectedIndex: 0
|
||||
readonly property list<DesktopEntry> visibleEntries: Array.from(DesktopEntries.applications.values).sort((d1, d2) => d1.name.localeCompare(d2.name)).filter(application => application.name.toLowerCase().includes(search.text.toLowerCase()))
|
||||
|
||||
function genHeight() {
|
||||
if (launcher.visibleEntries.length > Config.launcherVisibleEntries) {
|
||||
return ((search.height * (Config.launcherVisibleEntries + 1) + Config.launcherOuterPadding))
|
||||
}
|
||||
else {
|
||||
return (search.height * (launcher.visibleEntries.length + 1) + Config.launcherOuterPadding)
|
||||
}
|
||||
}
|
||||
implicitHeight: open ? genHeight() : 0
|
||||
implicitWidth: 500
|
||||
|
||||
color: "transparent"
|
||||
visible: open ? true : false
|
||||
|
||||
Behavior on implicitHeight {
|
||||
NumberAnimation {
|
||||
duration: 80
|
||||
easing.type: Easing.InOutQuad
|
||||
easing.overshoot: 2
|
||||
}
|
||||
}
|
||||
|
||||
WlrLayershell.layer: WlrLayer.Overlay
|
||||
WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
|
||||
Rectangle {
|
||||
id: rect
|
||||
anchors.fill: parent
|
||||
color: Colours.background
|
||||
opacity: 0.9
|
||||
|
||||
bottomLeftRadius: 20
|
||||
bottomRightRadius: 20
|
||||
|
||||
ColumnLayout {
|
||||
id: content
|
||||
anchors.fill: parent
|
||||
|
||||
Row{
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
width: Config.launcherOuterPadding
|
||||
height: search.height
|
||||
}
|
||||
Rectangle {
|
||||
height: search.height
|
||||
width: search.height
|
||||
color: "transparent"
|
||||
|
||||
IconImage {
|
||||
anchors.centerIn: parent
|
||||
source: Quickshell.iconPath("search-icon")
|
||||
height: search.height
|
||||
width: search.height
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
width: launcher.width - search.height - (2 * Config.launcherOuterPadding)
|
||||
height: search.height
|
||||
TextField {
|
||||
id: search
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
|
||||
focus: true
|
||||
placeholderText: "Search..."
|
||||
background: null
|
||||
|
||||
color: Colours.foreground
|
||||
placeholderTextColor: Colours.colour0
|
||||
|
||||
Keys.onPressed: event => {
|
||||
if (event.key == Qt.Key_Return) {
|
||||
launcher.open = false;
|
||||
launcher.visibleEntries[launcher.selectedIndex].execute();
|
||||
}
|
||||
if (event.key == Qt.Key_Down) {
|
||||
if (list.currentIndex < (launcher.visibleEntries.length-1)) {
|
||||
list.currentIndex++;
|
||||
}
|
||||
event.accepted = true;
|
||||
}
|
||||
if (event.key == Qt.Key_Up) {
|
||||
if (list.currentIndex > 0) {
|
||||
list.currentIndex--;
|
||||
}
|
||||
event.accepted = true;
|
||||
}
|
||||
if (event.key == Qt.Key_Escape) {
|
||||
launcher.open = false;
|
||||
event.accepted = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
width: Config.launcherOuterPadding
|
||||
height: search.height
|
||||
}
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: list
|
||||
model: launcher.visibleEntries
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
clip: true
|
||||
preferredHighlightBegin: 0
|
||||
|
||||
highlight: Rectangle { color: Colours.colour1; radius:20 }
|
||||
currentIndex: 0
|
||||
|
||||
delegate: Row {
|
||||
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
width: Config.launcherOuterPadding
|
||||
height: search.height
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
height: search.height
|
||||
width: search.height
|
||||
|
||||
IconImage {
|
||||
source: Quickshell.iconPath(modelData.icon, true)
|
||||
height:search.height
|
||||
width: search.height
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
height: search.height
|
||||
width: launcher.width - search.height - Config.launcherOuterPadding
|
||||
|
||||
Text{
|
||||
color: Colours.foreground
|
||||
text: modelData.name
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IpcHandler {
|
||||
target: "launcher"
|
||||
|
||||
function toggle() {
|
||||
search.text = ""
|
||||
launcher.open = !launcher.open
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
237
quickshell/shell/Modules/Pass.qml
Normal file
|
|
@ -0,0 +1,237 @@
|
|||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Io
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import Qt.labs.folderlistmodel
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import "../Config"
|
||||
|
||||
PanelWindow {
|
||||
id: pass
|
||||
anchors.bottom: true
|
||||
property var open: false
|
||||
property int selectedIndex: 0
|
||||
property string passLocation: ""
|
||||
|
||||
function genHeight() {
|
||||
if (folderModel.count > 5) {
|
||||
return 200
|
||||
}
|
||||
else {
|
||||
return (search.height * (folderModel.count + 1)) + Config.launcherOuterPadding
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: passCopy
|
||||
running: false
|
||||
command: ["pass", "-c", passLocation]
|
||||
}
|
||||
|
||||
Process {
|
||||
id: userCopy
|
||||
running: false
|
||||
command: ["pass", "-c2", passLocation]
|
||||
stdout: StdioCollector {
|
||||
onStreamFinished: passCopy.running = true
|
||||
}
|
||||
}
|
||||
|
||||
function goBack() {
|
||||
var lastSlash = list.currentItem.filePath.lastIndexOf('/')
|
||||
var currentDir = list.currentItem.filePath.substring(0, lastSlash)
|
||||
var lastSlash = currentDir.lastIndexOf('/')
|
||||
var parentDir = currentDir.substring(0, lastSlash)
|
||||
if (currentDir == "/home/ceres/.password-store") {
|
||||
return;
|
||||
}
|
||||
else {
|
||||
folderModel.folder = "file://" + parentDir
|
||||
}
|
||||
}
|
||||
|
||||
function copyPass() {
|
||||
if(list.currentItem.fileIsDir==true) {
|
||||
folderModel.folder = folderModel.folder+"/"+list.currentItem.fileBaseName
|
||||
}
|
||||
else {
|
||||
passLocation = list.currentItem.filePath
|
||||
passLocation = passLocation.replace("/home/ceres/.password-store/", "")
|
||||
passLocation = passLocation.replace(".gpg", "")
|
||||
userCopy.running = true
|
||||
pass.open = false
|
||||
search.text = ""
|
||||
folderModel.folder = "file:///home/ceres/.password-store"
|
||||
}
|
||||
}
|
||||
|
||||
implicitHeight: open ? genHeight() : 0
|
||||
implicitWidth: 500
|
||||
|
||||
color: "transparent"
|
||||
visible: open ? true : false
|
||||
|
||||
Behavior on implicitHeight {
|
||||
NumberAnimation {
|
||||
duration: 80
|
||||
easing.type: Easing.InOutQuad
|
||||
easing.overshoot: 2
|
||||
}
|
||||
}
|
||||
|
||||
WlrLayershell.layer: WlrLayer.Overlay
|
||||
WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
|
||||
Rectangle {
|
||||
id: rect
|
||||
anchors.fill: parent
|
||||
color: Colours.background
|
||||
opacity: 0.9
|
||||
|
||||
topLeftRadius: 20
|
||||
topRightRadius: 20
|
||||
|
||||
ColumnLayout {
|
||||
id: content
|
||||
anchors.fill: parent
|
||||
|
||||
Row{
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
width: Config.launcherOuterPadding
|
||||
height: search.height
|
||||
}
|
||||
Rectangle {
|
||||
height: search.height
|
||||
width: search.height
|
||||
color: "transparent"
|
||||
|
||||
IconImage {
|
||||
anchors.centerIn: parent
|
||||
source: Quickshell.iconPath("search-icon")
|
||||
height: search.height
|
||||
width: search.height
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
width: pass.width - search.height - (2 * Config.launcherOuterPadding)
|
||||
height: search.height
|
||||
TextField {
|
||||
id: search
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
|
||||
focus: true
|
||||
placeholderText: "Search..."
|
||||
background: null
|
||||
|
||||
color: Colours.foreground
|
||||
placeholderTextColor: Colours.colour0
|
||||
|
||||
Keys.onPressed: event => {
|
||||
if (event.key == Qt.Key_Return) {
|
||||
copyPass();
|
||||
event.accepted = true;
|
||||
}
|
||||
if (event.key == Qt.Key_Down) {
|
||||
if(list.currentIndex<folderModel.count-1) {
|
||||
list.currentIndex++;
|
||||
}
|
||||
event.accepted = true;
|
||||
}
|
||||
if (event.key == Qt.Key_Up) {
|
||||
if (list.currentIndex > 0) {
|
||||
list.currentIndex--;
|
||||
}
|
||||
event.accepted = true;
|
||||
}
|
||||
if (event.key == Qt.Key_Escape) {
|
||||
pass.open = false;
|
||||
list.currentIndex = 0
|
||||
folderModel.folder = "file:///home/ceres/.password-store"
|
||||
event.accepted = true;
|
||||
}
|
||||
if (event.key == Qt.Key_Tab) {
|
||||
goBack();
|
||||
event.accepted = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
width: Config.launcherOuterPadding
|
||||
height: search.height
|
||||
}
|
||||
}
|
||||
|
||||
FolderListModel {
|
||||
id: folderModel
|
||||
folder: "file:///home/ceres/.password-store"
|
||||
caseSensitive: false
|
||||
showDirs: search.text === "" ? true : false
|
||||
showDirsFirst: true
|
||||
nameFilters: "*"+search.text+"*"
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: list
|
||||
model: folderModel
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
clip: true
|
||||
preferredHighlightBegin: 0
|
||||
|
||||
highlight: Rectangle { color: Colours.colour1; radius:20 }
|
||||
currentIndex: 0
|
||||
|
||||
delegate: Row {
|
||||
required property string fileBaseName
|
||||
required property bool fileIsDir
|
||||
required property string filePath
|
||||
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
width: Config.launcherOuterPadding
|
||||
height: search.height
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: "transparent"
|
||||
height: search.height
|
||||
width: pass.width - (2 * Config.launcherOuterPadding)
|
||||
|
||||
Text{
|
||||
function genText() {
|
||||
if(fileIsDir==true) {
|
||||
return fileBaseName+"/"
|
||||
}
|
||||
else {
|
||||
return fileBaseName
|
||||
}
|
||||
}
|
||||
color: Colours.foreground
|
||||
text: genText()
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IpcHandler {
|
||||
target: "pass"
|
||||
|
||||
function toggle() {
|
||||
search.text = ""
|
||||
pass.open = !pass.open
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
22
quickshell/shell/Modules/Wallpaper.qml
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import Quickshell
|
||||
import QtQuick
|
||||
import Quickshell.Wayland
|
||||
|
||||
PanelWindow {
|
||||
id: background
|
||||
anchors {
|
||||
left: true
|
||||
right: true
|
||||
bottom: true
|
||||
top: true
|
||||
}
|
||||
WlrLayershell.layer: WlrLayer.Background
|
||||
|
||||
Image {
|
||||
width: background.width
|
||||
height: background.height
|
||||
source: "/home/ceres/.local/state/niri/wallpaper"
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
}
|
||||
|
||||
}
|
||||
33
quickshell/shell/Modules/Widgets.qml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Io
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import "../Config"
|
||||
|
||||
ShellRoot{
|
||||
id: widgets
|
||||
|
||||
property var open: false
|
||||
|
||||
Battery {
|
||||
visible: open ? true : false
|
||||
height: open ? 80 : 0
|
||||
}
|
||||
|
||||
Clock {
|
||||
visible: open ? true : false
|
||||
height: open ? 80 : 0
|
||||
}
|
||||
|
||||
IpcHandler {
|
||||
target: "widgets"
|
||||
|
||||
function toggle() {
|
||||
widgets.open = !widgets.open
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
9
quickshell/shell/shell.qml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import Quickshell
|
||||
import "Modules"
|
||||
|
||||
ShellRoot {
|
||||
Wallpaper {}
|
||||
Launcher {}
|
||||
Widgets {}
|
||||
Pass {}
|
||||
}
|
||||
320
starship.toml
Normal file
|
|
@ -0,0 +1,320 @@
|
|||
# version: 1.0.0
|
||||
|
||||
add_newline = false
|
||||
continuation_prompt = "[▸▹ ](dimmed white)"
|
||||
|
||||
format = """($nix_shell$container$fill$git_metrics\n)$cmd_duration\
|
||||
$localip\
|
||||
$shlvl\
|
||||
$shell\
|
||||
$env_var\
|
||||
$jobs\
|
||||
$sudo\
|
||||
$username$hostname\
|
||||
$character"""
|
||||
|
||||
right_format = """
|
||||
$singularity\
|
||||
$kubernetes\
|
||||
$directory\
|
||||
$vcsh\
|
||||
$fossil_branch\
|
||||
$git_branch\
|
||||
$git_commit\
|
||||
$git_state\
|
||||
$git_status\
|
||||
$hg_branch\
|
||||
$pijul_channel\
|
||||
$docker_context\
|
||||
$package\
|
||||
$c\
|
||||
$cmake\
|
||||
$cobol\
|
||||
$daml\
|
||||
$dart\
|
||||
$deno\
|
||||
$dotnet\
|
||||
$elixir\
|
||||
$elm\
|
||||
$erlang\
|
||||
$fennel\
|
||||
$golang\
|
||||
$guix_shell\
|
||||
$haskell\
|
||||
$haxe\
|
||||
$helm\
|
||||
$java\
|
||||
$julia\
|
||||
$kotlin\
|
||||
$gradle\
|
||||
$lua\
|
||||
$nim\
|
||||
$nodejs\
|
||||
$ocaml\
|
||||
$opa\
|
||||
$perl\
|
||||
$php\
|
||||
$pulumi\
|
||||
$purescript\
|
||||
$python\
|
||||
$raku\
|
||||
$rlang\
|
||||
$red\
|
||||
$ruby\
|
||||
$rust\
|
||||
$scala\
|
||||
$solidity\
|
||||
$swift\
|
||||
$terraform\
|
||||
$vlang\
|
||||
$vagrant\
|
||||
$zig\
|
||||
$buf\
|
||||
$conda\
|
||||
$meson\
|
||||
$spack\
|
||||
$memory_usage\
|
||||
$aws\
|
||||
$gcloud\
|
||||
$openstack\
|
||||
$azure\
|
||||
$crystal\
|
||||
$custom\
|
||||
$status\
|
||||
$os\
|
||||
$battery\
|
||||
$time"""
|
||||
|
||||
[fill]
|
||||
symbol = ' '
|
||||
|
||||
[character]
|
||||
format = "$symbol "
|
||||
success_symbol = "[◎](bold italic bright-yellow)"
|
||||
error_symbol = "[○](italic purple)"
|
||||
vimcmd_symbol = "[■](italic dimmed green)"
|
||||
# not supported in zsh
|
||||
vimcmd_replace_one_symbol = "◌"
|
||||
vimcmd_replace_symbol = "□"
|
||||
vimcmd_visual_symbol = "▼"
|
||||
|
||||
[env_var.VIMSHELL]
|
||||
format = "[$env_value]($style)"
|
||||
style = 'green italic'
|
||||
|
||||
[sudo]
|
||||
format = "[$symbol]($style)"
|
||||
style = "bold italic bright-purple"
|
||||
symbol = "⋈┈"
|
||||
disabled = false
|
||||
|
||||
[username]
|
||||
style_user = "bright-yellow bold italic"
|
||||
style_root = "purple bold italic"
|
||||
format = "[⭘ ](bold dimmed green)[$user]($style)"
|
||||
disabled = false
|
||||
show_always = true
|
||||
|
||||
[hostname]
|
||||
ssh_only = false
|
||||
format = '[@$hostname ]($style)'
|
||||
style = "bold dimmed green"
|
||||
|
||||
[directory]
|
||||
home_symbol = "⌂"
|
||||
truncation_length = 2
|
||||
truncation_symbol = "□ "
|
||||
read_only = " ◈"
|
||||
use_os_path_sep = true
|
||||
style = "italic blue"
|
||||
format = '[$path]($style)[$read_only]($read_only_style)'
|
||||
repo_root_style = 'bold blue'
|
||||
repo_root_format = '[$before_root_path]($before_repo_root_style)[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style) [△](bold bright-blue)'
|
||||
|
||||
[cmd_duration]
|
||||
min_time = 0
|
||||
format = "[◄ $duration ](italic white)"
|
||||
|
||||
[jobs]
|
||||
format = "[$symbol$number]($style) "
|
||||
style = "white"
|
||||
symbol = "[▶](blue italic)"
|
||||
|
||||
[localip]
|
||||
ssh_only = true
|
||||
format = " ◯[$localipv4](bold magenta)"
|
||||
disabled = false
|
||||
|
||||
[time]
|
||||
disabled = false
|
||||
format = "[ $time]($style)"
|
||||
time_format = "%R"
|
||||
utc_time_offset = "local"
|
||||
style = "italic dimmed white"
|
||||
|
||||
[battery]
|
||||
format = "[ $percentage $symbol]($style)"
|
||||
full_symbol = "█"
|
||||
charging_symbol = "[↑](italic bold green)"
|
||||
discharging_symbol = "↓"
|
||||
unknown_symbol = "░"
|
||||
empty_symbol = "▃"
|
||||
|
||||
[[battery.display]]
|
||||
threshold = 20
|
||||
style = "italic bold red"
|
||||
|
||||
[[battery.display]]
|
||||
threshold = 60
|
||||
style = "italic dimmed bright-purple"
|
||||
|
||||
[[battery.display]]
|
||||
threshold = 70
|
||||
style = "italic dimmed yellow"
|
||||
|
||||
[git_branch]
|
||||
format = " [$branch(:$remote_branch)]($style)"
|
||||
symbol = "[△](bold italic bright-blue)"
|
||||
style = "italic bright-blue"
|
||||
truncation_symbol = "⋯"
|
||||
truncation_length = 11
|
||||
ignore_branches = ["main", "master"]
|
||||
only_attached = true
|
||||
|
||||
[git_metrics]
|
||||
format = '([▴$added]($added_style))([▿$deleted]($deleted_style))'
|
||||
added_style = 'italic dimmed green'
|
||||
deleted_style = 'italic dimmed red'
|
||||
ignore_submodules = true
|
||||
disabled = false
|
||||
|
||||
[git_status]
|
||||
style = "bold italic bright-blue"
|
||||
format = "([⎪$ahead_behind$staged$modified$untracked$renamed$deleted$conflicted$stashed⎥]($style))"
|
||||
conflicted = "[◪◦](italic bright-magenta)"
|
||||
ahead = "[▴│[${count}](bold white)│](italic green)"
|
||||
behind = "[▿│[${count}](bold white)│](italic red)"
|
||||
diverged = "[◇ ▴┤[${ahead_count}](regular white)│▿┤[${behind_count}](regular white)│](italic bright-magenta)"
|
||||
untracked = "[◌◦](italic bright-yellow)"
|
||||
stashed = "[◃◈](italic white)"
|
||||
modified = "[●◦](italic yellow)"
|
||||
staged = "[▪┤[$count](bold white)│](italic bright-cyan)"
|
||||
renamed = "[◎◦](italic bright-blue)"
|
||||
deleted = "[✕](italic red)"
|
||||
|
||||
[deno]
|
||||
format = " [deno](italic) [∫ $version](green bold)"
|
||||
version_format = "${raw}"
|
||||
|
||||
[lua]
|
||||
format = " [lua](italic) [${symbol}${version}]($style)"
|
||||
version_format = "${raw}"
|
||||
symbol = "⨀ "
|
||||
style = "bold bright-yellow"
|
||||
|
||||
[nodejs]
|
||||
format = " [node](italic) [◫ ($version)](bold bright-green)"
|
||||
version_format = "${raw}"
|
||||
detect_files = ["package-lock.json", "yarn.lock"]
|
||||
detect_folders = ["node_modules"]
|
||||
detect_extensions = []
|
||||
|
||||
[python]
|
||||
format = " [py](italic) [${symbol}${version}]($style)"
|
||||
symbol = "[⌉](bold bright-blue)⌊ "
|
||||
version_format = "${raw}"
|
||||
style = "bold bright-yellow"
|
||||
|
||||
[ruby]
|
||||
format = " [rb](italic) [${symbol}${version}]($style)"
|
||||
symbol = "◆ "
|
||||
version_format = "${raw}"
|
||||
style = "bold red"
|
||||
|
||||
[rust]
|
||||
format = " [rs](italic) [$symbol$version]($style)"
|
||||
symbol = "⊃ "
|
||||
version_format = "${raw}"
|
||||
style = "bold red"
|
||||
|
||||
[package]
|
||||
format = " [pkg](italic dimmed) [$symbol$version]($style)"
|
||||
version_format = "${raw}"
|
||||
symbol = "◨ "
|
||||
style = "dimmed yellow italic bold"
|
||||
|
||||
[swift]
|
||||
format = " [sw](italic) [${symbol}${version}]($style)"
|
||||
symbol = "◁ "
|
||||
style = "bold bright-red"
|
||||
version_format = "${raw}"
|
||||
|
||||
[aws]
|
||||
disabled = true
|
||||
format = " [aws](italic) [$symbol $profile $region]($style)"
|
||||
style = "bold blue"
|
||||
symbol = "▲ "
|
||||
|
||||
[buf]
|
||||
symbol = "■ "
|
||||
format = " [buf](italic) [$symbol $version $buf_version]($style)"
|
||||
|
||||
[c]
|
||||
symbol = "ℂ "
|
||||
format = " [$symbol($version(-$name))]($style)"
|
||||
|
||||
[conda]
|
||||
symbol = "◯ "
|
||||
format = " conda [$symbol$environment]($style)"
|
||||
|
||||
[dart]
|
||||
symbol = "◁◅ "
|
||||
format = " dart [$symbol($version )]($style)"
|
||||
|
||||
[docker_context]
|
||||
symbol = "◧ "
|
||||
format = " docker [$symbol$context]($style)"
|
||||
|
||||
[elixir]
|
||||
symbol = "△ "
|
||||
format = " exs [$symbol $version OTP $otp_version ]($style)"
|
||||
|
||||
[elm]
|
||||
symbol = "◩ "
|
||||
format = " elm [$symbol($version )]($style)"
|
||||
|
||||
[golang]
|
||||
symbol = "∩ "
|
||||
format = " go [$symbol($version )]($style)"
|
||||
|
||||
[haskell]
|
||||
symbol = "❯λ "
|
||||
format = " hs [$symbol($version )]($style)"
|
||||
|
||||
[java]
|
||||
symbol = "∪ "
|
||||
format = " java [${symbol}(${version} )]($style)"
|
||||
|
||||
[julia]
|
||||
symbol = "◎ "
|
||||
format = " jl [$symbol($version )]($style)"
|
||||
|
||||
[memory_usage]
|
||||
symbol = "▪▫▪ "
|
||||
format = " mem [${ram}( ${swap})]($style)"
|
||||
|
||||
[nim]
|
||||
symbol = "▴▲▴ "
|
||||
format = " nim [$symbol($version )]($style)"
|
||||
|
||||
[nix_shell]
|
||||
style = 'bold italic dimmed blue'
|
||||
symbol = '✶'
|
||||
format = '[$symbol nix⎪$state⎪]($style) [$name](italic dimmed white)'
|
||||
impure_msg = '[⌽](bold dimmed red)'
|
||||
pure_msg = '[⌾](bold dimmed green)'
|
||||
unknown_msg = '[◌](bold dimmed ellow)'
|
||||
|
||||
[spack]
|
||||
symbol = "◇ "
|
||||
format = " spack [$symbol$environment]($style)"
|
||||
BIN
wallpapers/Meh/moments-before-desk.png
Normal file
|
After Width: | Height: | Size: 560 KiB |
BIN
wallpapers/aesthetic-deer.png
Normal file
|
After Width: | Height: | Size: 3.9 MiB |
BIN
wallpapers/arcade.jpg
Normal file
|
After Width: | Height: | Size: 722 KiB |
BIN
wallpapers/autumn-lake.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
wallpapers/balcony.jpg
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
wallpapers/black-hole.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
wallpapers/broken-railway.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
wallpapers/busy-shipyard.jpg
Normal file
|
After Width: | Height: | Size: 16 MiB |
BIN
wallpapers/campfire.jpg
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
wallpapers/clouds-and-powerlines.png
Normal file
|
After Width: | Height: | Size: 14 MiB |
BIN
wallpapers/clouds.jpg
Normal file
|
After Width: | Height: | Size: 6.1 MiB |
BIN
wallpapers/cloudy-horizon.jpg
Normal file
|
After Width: | Height: | Size: 879 KiB |
BIN
wallpapers/colourful-desk.png
Normal file
|
After Width: | Height: | Size: 8.7 MiB |
BIN
wallpapers/countryside.png
Normal file
|
After Width: | Height: | Size: 5.7 MiB |
BIN
wallpapers/cozy-desk.jpg
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
wallpapers/crawlers.jpg
Normal file
|
After Width: | Height: | Size: 2.8 MiB |
BIN
wallpapers/dark-clouds.jpg
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
wallpapers/desert-wanderer.jpg
Normal file
|
After Width: | Height: | Size: 689 KiB |
BIN
wallpapers/disaster.jpg
Normal file
|
After Width: | Height: | Size: 574 KiB |
BIN
wallpapers/dusk-sky.jpg
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
wallpapers/eclipse.jpg
Normal file
|
After Width: | Height: | Size: 745 KiB |
BIN
wallpapers/evening-birds.jpg
Normal file
|
After Width: | Height: | Size: 2.8 MiB |
BIN
wallpapers/evening-cats.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
wallpapers/evening-city.jpg
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
wallpapers/evening-clouds.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
wallpapers/evening-railroad.jpg
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
wallpapers/evening-sky.png
Normal file
|
After Width: | Height: | Size: 4.6 MiB |
BIN
wallpapers/firewatch.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
wallpapers/flying castle.jpg
Normal file
|
After Width: | Height: | Size: 269 KiB |
BIN
wallpapers/forest-hill.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
wallpapers/forest-traveller.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
wallpapers/fuji-car.jpg
Normal file
|
After Width: | Height: | Size: 8.9 MiB |
BIN
wallpapers/fuji.jpg
Normal file
|
After Width: | Height: | Size: 749 KiB |
BIN
wallpapers/gas-station.jpg
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
wallpapers/glade.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
wallpapers/gloomy-night.jpg
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
wallpapers/great-arch.jpg
Normal file
|
After Width: | Height: | Size: 926 KiB |
BIN
wallpapers/gris-forest.jpg
Normal file
|
After Width: | Height: | Size: 363 KiB |
BIN
wallpapers/gris-komorebi.jpg
Normal file
|
After Width: | Height: | Size: 441 KiB |
BIN
wallpapers/gris-mirror.jpg
Normal file
|
After Width: | Height: | Size: 171 KiB |
BIN
wallpapers/gris-mountain.jpg
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
wallpapers/gris-steps.jpg
Normal file
|
After Width: | Height: | Size: 288 KiB |
BIN
wallpapers/gris-tree.png
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
BIN
wallpapers/gris-waterfall.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
wallpapers/gruvbox-astro.jpg
Normal file
|
After Width: | Height: | Size: 368 KiB |
BIN
wallpapers/hands.jpg
Normal file
|
After Width: | Height: | Size: 157 KiB |
BIN
wallpapers/hollow-knight.jpg
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
wallpapers/island.png
Normal file
|
After Width: | Height: | Size: 9.2 MiB |
BIN
wallpapers/lady.png
Normal file
|
After Width: | Height: | Size: 160 KiB |
BIN
wallpapers/larry.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
wallpapers/living-room.png
Normal file
|
After Width: | Height: | Size: 3.6 MiB |
BIN
wallpapers/lowpoly-street.png
Normal file
|
After Width: | Height: | Size: 372 KiB |
BIN
wallpapers/many-moons.jpg
Normal file
|
After Width: | Height: | Size: 4.8 MiB |
BIN
wallpapers/monument-hill.jpg
Normal file
|
After Width: | Height: | Size: 3.6 MiB |
BIN
wallpapers/monument.jpg
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
wallpapers/moon-dune.jpg
Normal file
|
After Width: | Height: | Size: 3.6 MiB |
BIN
wallpapers/moor.jpg
Normal file
|
After Width: | Height: | Size: 2 MiB |
BIN
wallpapers/morning-road.jpg
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
wallpapers/mountain.jpg
Normal file
|
After Width: | Height: | Size: 4.4 MiB |
BIN
wallpapers/my-neighbor-totoro-sunflowers.png
Normal file
|
After Width: | Height: | Size: 365 KiB |
BIN
wallpapers/new-moon.jpg
Normal file
|
After Width: | Height: | Size: 966 KiB |
BIN
wallpapers/night-drive.jpg
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
wallpapers/nighttime-cat.png
Normal file
|
After Width: | Height: | Size: 14 MiB |
BIN
wallpapers/overgrown-kingdom.png
Normal file
|
After Width: | Height: | Size: 9.7 MiB |
BIN
wallpapers/overgrown-town.jpg
Normal file
|
After Width: | Height: | Size: 2 MiB |
BIN
wallpapers/peninsula.jpg
Normal file
|
After Width: | Height: | Size: 517 KiB |