Compare commits

...

10 commits

Author SHA1 Message Date
03cbb41004
bootstrap: Remove testing packages which are stable 2025-01-24 11:50:04 +01:00
af86766260
bootstrap: Fix beets dependency spelling error 2025-01-24 11:49:42 +01:00
fd1cd241fc
bootstrap: Move pipx packages to be managed by uv instead 2025-01-24 11:44:57 +01:00
b64116fac7
waybar: Switch tray and battery placement
Battery will always be displayed on the very right of the status bar
now, to easily find the indicator. Also removed the remaining time from
the alternative display which snuck in there accidentally - it can be
seen from the tooltip instead.
2025-01-24 11:31:29 +01:00
c6ebfdd85f
bootstrap: Add uv managed package category
Added python packages that should be installed through uv (instead of
pipx). uv provides a modern package and project management solution for
python packages which are not found in the other repositories (or which
should have additional dependencies which are not).

Will also slowly migrate my existing python packages away from pipx
toward uv so we need one tool less.
2025-01-24 11:31:28 +01:00
9cc3495c31
nvim: Add nim lsp and formatting 2025-01-24 08:21:24 +01:00
3d0a706c0c
bootstrap: Add beancount fava dashboards package 2025-01-23 16:58:35 +01:00
284c12f781
vidl: Allow getting current status
Can now get the current status with -p option (either running or
stopped) and currently remaining queue items with -P option.
2025-01-23 16:49:40 +01:00
6002c49a16
waybar: Make alt formats consistent
Every notification icon (except wifi) has a more detailed alternative
display format which can be toggle with right click. By default only the
icons are displayed.
2025-01-23 16:48:49 +01:00
7f35be07f7
waybar: Declutter status icons
Slightly declutter the status icons: Only display an icon which shows
the rough state until you hover over or activate alternative modes
(rightclick on respective icon) which show more detail.
2025-01-21 11:31:29 +01:00
8 changed files with 140 additions and 54 deletions

View file

@ -11,6 +11,7 @@ PKG_TSV_FILE=${PKG_TSV_FILE:-bootstrap/packages_stable.tsv}
packages_repo="${BOOTSTRAP_PACKAGES:-$(grep -e ' R ' "$PKG_TSV_FILE" | cut -f1 -d' ')}"
packages_aur="${BOOTSTRAP_PACKAGES_AUR:-$(grep -e ' A ' "$PKG_TSV_FILE" | cut -f1 -d' ')}"
packages_pipx="${BOOTSTRAP_PACKAGES_PIPX:-$(grep -e ' P ' "$PKG_TSV_FILE" | cut -f1,5 -d' ')}"
packages_uv="${BOOTSTRAP_PACKAGES_PIPX:-$(grep -e ' U ' "$PKG_TSV_FILE" | cut -f1,5 -d' ')}"
main() {
local cmd=""
@ -18,7 +19,7 @@ main() {
case "$1" in
-v | --version)
printf "Package bootstrap script.\n\n©Marty Oehme\n\nVersion: 0.3\n"
printf "Package bootstrap script.\n\n©Marty Oehme\n\nVersion: 0.4\n"
;;
-h | --help)
printf "Usage: install [-f|--force][-v|--version][-h|--help]\n\n-f Do not ask for any confirmations but force update and installation.\n"
@ -72,6 +73,14 @@ install_packages() {
fi
}
# check if any packages in list
has_pkg() { # 1=variable containing packages
if [ -n "$1" ]; then
return 0
fi
return 1
}
install_pipx() {
if type pipx >/dev/null 2>&1; then
echo "Existing pipx installation found .........................................."
@ -84,6 +93,18 @@ install_pipx() {
fi
}
install_uv() {
if type uv >/dev/null 2>&1; then
echo "Existing uv installation found .........................................."
return
fi
if "$unattended"; then
paru -S --noconfirm uv
else
paru -S uv
fi
}
install_pipx_pkgs() {
while IFS= read -r line; do
if [ -z "$line" ]; then return; fi
@ -97,6 +118,20 @@ install_pipx_pkgs() {
done <<<"$packages_pipx"
}
install_uv_pkgs() {
while IFS= read -r line; do
if [ -z "$line" ]; then return; fi
prog=$(echo "$line" | cut -f1 -d' ')
injections=$(echo "$line" | cut -f2 -d' ')
cmd_with_args="uv tool install"
for inject_args in ${injections//,/ }; do
cmd_with_args+=" --with $inject_args"
done
$cmd_with_args "$prog"
done <<<"$packages_uv"
}
install() {
unattended=$1
echo "Beginning package bootstrap ..............................................."
@ -105,11 +140,20 @@ install() {
echo "Installing apps ..........................................................."
update_repos "$unattended"
install_packages "$unattended"
echo "Done ......................................................................"
echo "Installing pipx ..........................................................."
install_pipx
echo "Installing pipx packages .................................................."
install_pipx_pkgs
if has_pkg "$packages_pipx"; then
echo "Installing pipx ..........................................................."
install_pipx
echo "Installing pipx packages .................................................."
install_pipx_pkgs
fi
if has_pkg "$packages_uv"; then
echo "Installing uv ..........................................................."
install_uv
echo "Installing uv packages .................................................."
install_uv_pkgs
fi
echo "Done ......................................................................"
}

View file

@ -29,9 +29,10 @@ bash-language-server Bash language server implementation based on Tree Sitter an
bat Cat clone with syntax highlighting and git integration R
bats Bash Automated Testing System R
bc An arbitrary precision calculator language R
beancount A personal double entry accounting and budgeting software P git+https://github.com/bratekarate/beancount-categorizer.git,beancount-dkb,fava,python-magic,smart-importer
beancount A personal double entry accounting and budgeting software U git+https://github.com/bratekarate/beancount-categorizer.git,beancount-dkb,fava,git+https://github.com/andreasgerstmayr/fava-dashboards.git,python-magic,smart-importer,neovim
beanquery A customizable light-weight SQL query tool that works on tabular data, including Beancount U
bearssl Implementation of the SSL/TLS protocol (RFC 5246) written in C R
beets Organize your music collection from the command line P beetcamp,deets-describe,beets-ydl,pyacoustid,pylast
beets Organize your music collection from the command line U beetcamp,beets-describe,beets-ydl,pyacoustid,pylast
bemenu-dmenu Symlink for using bemenu (native wayland support) as a drop-in replacement to dmenu A
bemoji Emoji picker that remembers your favorites A
bibclean BibTeX and Scribe bibliography prettyprinter and syntax checker A
@ -69,7 +70,7 @@ edir Program to rename, remove, and copy files and directories using your editor
efm-langserver General purpose Language Server A
enca Charset analyser and converter R
entr Run arbitrary commands when files change R
euporie View and work with ipnb Python notebooks from the cli P
euporie View and work with ipnb Python notebooks from the cli U
exercism-bin Command line client for exercism.io A
exfat-utils Utilities for exFAT file system R
eza A modern replacement for ls (community fork of exa) R
@ -157,7 +158,7 @@ maim Utility to take a screenshot using imlib2 R
mako Lightweight notification daemon for Wayland R
man-db A utility for reading man pages R
man-pages Linux man pages R
markdown-anki-decks Construct and modify anki decks directly with markdown P
markdown-anki-decks Construct and modify anki decks directly with markdown U
markdownlint-cli MarkdownLint Command Line Interface A
masterpdfeditor-free A complete solution for creation and editing PDF files - Free version without watermark A
mbsync-git free (GPL) mailbox synchronization program A
@ -208,7 +209,7 @@ offpunk Fork of the command-line Gemini client AV-98 with added offline capabili
oh-my-zsh-git A community-driven framework for managing your zsh configuration. Includes 180+ optional plugins and over 120 themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community A
os-prober Utility to detect other OSes on a set of drives R
pacman-contrib Contributed scripts and tools for pacman systems R
papis Papis is a powerful and highly extensible command-line based document and bibliography manager. P whoosh,papis-zotero,papis-scihub,git+https://git.martyoeh.me/Marty/papis-extract.git,git+https://github.com/supersambo/papis-tui,pybtex-apa-style,git+https://git.martyoeh.me/Marty/papis-bbt-formatter.git
papis Papis is a powerful and highly extensible command-line based document and bibliography manager. U whoosh,papis-zotero,papis-scihub,git+https://git.martyoeh.me/Marty/papis-extract.git,git+https://github.com/supersambo/papis-tui,pybtex-apa-style,git+https://git.martyoeh.me/Marty/papis-bbt-formatter.git
parallel A shell tool for executing jobs in parallel R
parsec-bin Remotely connect to a gaming pc for a low latency remote computing experience A
paru-bin Feature packed AUR helper A
@ -233,7 +234,7 @@ protonvpn Official ProtonVPN metapackage that installs protonvpn-gui and protonv
ptpython Python REPL build on top of prompt_toolkit A
pulsemixer CLI and curses mixer for pulseaudio R
pup Command line tool for processing HTML A
pv A terminal-based tool for monitoring the progress of data through a pipeline. R
pv A terminal-based tool for monitoring the progress of data through a pipeline R
pyright Type checker for the Python language R
python-adblock Brave's adblock library in Python R
python-dictcc commandline tool for dict.cc A
@ -258,6 +259,7 @@ python-pyqt6-networkauth Python bindings for QtNetworkAuth R
python-readability-lxml Fast html to text parser (article readability tool) python library R
python-slugify A Python slugify application that handles unicode R
python-tasklib Python library for interacting with taskwarrior databases R
python-tgpt Programmatic access to tgpt through python U
qemu-desktop A QEMU setup for desktop environments R
qt5-wayland Provides APIs for Wayland R
qt5-xmlpatterns Support for XPath, XQuery, XSLT and XML schema validation R
@ -311,7 +313,7 @@ tidy-viewer CLI csv pretty printer that uses column styling A
timew Timewarrior, A command line time tracking application R
tinyxxd Standalone version of the hex dump utility that comes with ViM R
tlp Linux Advanced Power Management R
toilet free replacement for the FIGlet utility. A
toilet Free replacement for the FIGlet utility R
topgrade-bin Invoke the upgrade procedure of multiple package managers A
traceroute Tracks the route taken by packets over an IP network R
translate-shell A command-line interface and interactive shell for Google Translate R

Can't render this file because it has a wrong number of fields in line 32.

View file

@ -2,15 +2,9 @@ Name Description Source Target
adbfs-rootless-git fuse filesystem over adb tool for android devices, no device root required A
arch-install-scripts Scripts to aid in installing Arch Linux R
blueberry Bluetooth configuration tool R
dotter-rs-bin A dotfile manager and templater written in Rust A
eza A modern replacement for ls (community fork of exa) R
feishin-appimage A modern self-hosted music player. A
khal CLI calendar application built around CalDAV R
m4b-tool-bin A command line utility to merge, split and chapterize audiobook files such as mp3, ogg, flac, m4a or m4b A
nodejs-markmap-cli Create markmaps (mindmaps from markdown) from CLI A
pv A terminal-based tool for monitoring the progress of data through a pipeline R
qpwgraph PipeWire Graph Qt GUI Interface R
texlive-latexextra TeX Live - LaTeX additional packages R
toilet Free replacement for the FIGlet utility R
vifm A file manager with curses interface, which provides Vi[m]-like environment R
woeusb-ng Simple tool that enable you to create your own usb stick with Windows installer. A

1 Name Description Source Target
2 adbfs-rootless-git fuse filesystem over adb tool for android devices, no device root required A
3 arch-install-scripts Scripts to aid in installing Arch Linux R
4 blueberry Bluetooth configuration tool R
dotter-rs-bin A dotfile manager and templater written in Rust A
eza A modern replacement for ls (community fork of exa) R
5 feishin-appimage A modern self-hosted music player. A
khal CLI calendar application built around CalDAV R
6 m4b-tool-bin A command line utility to merge, split and chapterize audiobook files such as mp3, ogg, flac, m4a or m4b A
7 nodejs-markmap-cli Create markmaps (mindmaps from markdown) from CLI A
pv A terminal-based tool for monitoring the progress of data through a pipeline R
8 qpwgraph PipeWire Graph Qt GUI Interface R
9 texlive-latexextra TeX Live - LaTeX additional packages R
toilet Free replacement for the FIGlet utility R
vifm A file manager with curses interface, which provides Vi[m]-like environment R
10 woeusb-ng Simple tool that enable you to create your own usb stick with Windows installer. A

View file

@ -2,10 +2,11 @@
"layer": "top",
"modules-left": ["river/tags", "custom/events", "custom/vidl", "river/window"],
"modules-center": ["clock", "custom/media"],
"modules-right": ["river/mode", "custom/wireguard", "custom/archupdates", "pulseaudio", "backlight", "network", "cpu", "memory", "temperature", "battery", "tray"],
"modules-right": ["river/mode", "custom/wireguard", "custom/archupdates", "pulseaudio", "backlight", "network", "cpu", "memory", "temperature", "tray", "battery"],
"custom/archupdates": {
"format": "{} {icon}",
"format-alt-click": "right",
"format": "{icon}",
"format-alt": "{} {icon}",
"format-alt-click": "click-right",
"format-icons": {
"default": ""
},
@ -16,17 +17,22 @@
},
"backlight": {
"device": "intel_backlight",
"format": "{percent}% {icon}",
"format-icons": ["滋", "", "", ""],
"format": "{icon}",
"format-alt": "{percent}% {icon}",
"format-alt-click": "click-right",
"format-icons": ["󰛩", "󱩎", "󱩏", "󱩐", "󱩑", "󱩒", "󱩓", "󱩔", "󱩕", "󱩖", "󰛨"],
"tooltip-format": "{percent}% {icon}",
"on-scroll-up": "brightnessctl set 1%+",
"on-scroll-down": "brightnessctl set 1%-"
},
"battery": {
"format": "{capacity}% {icon}",
"format-alt":"{capacity}% ({time}) {icon}",
"format": "{icon}",
"format-warning": "{capacity}% {icon}",
"format-critical": "{capacity}% {icon}",
"format-alt":"{capacity}% {icon}",
"format-alt-click": "click-right",
"format-icons": ["", "", "", "", ""],
"interval": 60,
"interval": 10,
"states": {
"warning": 30,
"critical": 15
@ -39,14 +45,15 @@
},
"cpu": {
"interval": 10,
"format": "{usage}% ",
"format": "",
"format-alt": "{usage}% ",
"format-alt-click": "click-right",
"max-length": 10,
"states": {
"warning": 50,
"critical": 80
},
"on-click": "$TERMINAL start --class float top",
"on-click-right": "$TERMINAL start --class float glances"
"on-click": "$TERMINAL start --class float htop"
},
"custom/events": {
"exec-if": "command -v khal >/dev/null 2>&1",
@ -54,7 +61,7 @@
"return-type": "json",
"interval": 300,
"on-click": "$TERMINAL start --class float ikhal",
"format": "{icon}{}",
"format": "{icon}{0}", // issue tracked here https://github.com/Alexays/Waybar/issues/3623
"format-icons": {
"event": " ",
"no-event": "",
@ -62,9 +69,12 @@
},
"memory": {
"interval": 30,
"format": "{avail:0.1f}G ",
"format": "{icon}",
"format-alt": "{used:0.1f}G/{total:0.1f}G ",
"format-alt-click": "click-right",
"tooltip": true,
"tooltip-format": "{used:0.1f}G/{total:0.1f}G \nUsed: {percentage} %\nSwap: {swapPercentage} %",
"format-icons": ["󰪞", "󰪟", "󰪠", "󰪡", "󰪢", "󰪣", "󰪤", "󰪥"],
"max-length": 10
},
"mpd": {
@ -93,7 +103,7 @@
},
"custom/media": {
"format": "{icon}{}",
"format-alt-click": "right",
"format-alt-click": "click-right",
"return-type": "json",
"format-icons": {
"Playing": " ",
@ -108,11 +118,11 @@
},
"network": {
"format": "{ifname}",
"format-wifi": "{signalStrength}% ",
"format-ethernet": "{ipaddr}/{cidr} 󰈀",
"format-disconnected": "󰖪",
"format-wifi": "",
"format-ethernet": "󰈀 ",
"format-disconnected": "󰖪 ",
"tooltip-format": "{ifname} via {gwaddr} 󰈁",
"tooltip-format-wifi": "{essid}: {bandwidthDownBits}-{bandwidthUpBits} ({signalStrength}%)  {ifname}",
"tooltip-format-wifi": "{essid}: {bandwidthDownBits}-{bandwidthUpBits} ({signalStrength}%)  {ifname}",
"tooltip-format-ethernet": "{ifname} 󰈀",
"tooltip-format-disconnected": "Disconnected",
"max-length": 50,
@ -120,9 +130,11 @@
// "on-click-right": "sudo rfkill toggle wlan"
},
"pulseaudio": {
"format": "{volume}% {icon}",
"format": "{icon}",
"format-alt": "{volume}% {icon}",
"format-bluetooth": "{volume}% {icon} ",
"format-muted": "",
"format-alt-click": "click-right",
"format-muted": "󰖁",
"format-icons": {
"headphone": "",
"hands-free": "",
@ -130,22 +142,24 @@
"phone": "",
"portable": "",
"car": "",
"default": ["", ""]
"default": ["", "", ""]
},
"scroll-step": 1,
"scroll-step": 2,
"on-click": "$TERMINAL start --class float pulsemixer",
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +1%",
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -1%"
},
"river/tags": {
"num-tags": 10,
"tag-labels": [ "", "", "", "", "", "", "", "", "", "" ]
"tag-labels": [ "", "", "", "", "", "", "", "", "", "" ],
},
"river/mode": {
"format": "{} ",
},
"river/window": {
"format": " {}",
"format": " ",
"format-alt": " {}",
"format-alt-click": "click-right",
"max-length": 70
},
"temperature": {
@ -153,7 +167,9 @@
"hwmon-path": "/sys/class/hwmon/hwmon5/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}° ",
"format": "{temperatureC}° ",
"format": "",
"format-alt": "{temperatureC}° ",
"format-alt-click": "click-right",
"on-click": "$TERMINAL start --class float watch sensors"
},
"tray": {
@ -172,20 +188,20 @@
"pia": "󰖂",
"netbird": "󱗆"
},
"format-alt": "{} {icon}",
"format-alt-click": "click-right",
"exec": "~/.config/waybar/modules/wireguard json",
"exec-if": "command -v nmcli >/dev/null 2>&1",
"return-type": "json",
"signal": 6,
"interval": 60,
"interval": 20,
},
"custom/vidl": {
"format": "{icon}{}",
"format-alt-click": "right",
"format-icons": {
"default": " "
},
"format": "",
"format-alt": " {}",
"format-alt-click": "click-right",
"exec": "wc -l ~/.local/share/vidl/vidl_queue | cut -d' ' -f1",
"exec-if": "[ -f ~/.local/share/vidl/vidl_queue ]",
"exec-if": "[ $(vidl -p) = 'running' ] && [ $(vidl -P) -gt 0 ]",
"interval": 5,
"on-click": "$TERMINAL start --class float nvim ~/.local/share/vidl/vidl_queue"
},

View file

@ -45,6 +45,13 @@ window#waybar.hidden {
color: @base0C;
}
/* give coherent background */
.modules-right {
padding: 0;
margin: 0;
background-color: @base01;
}
#clock,
#battery,
#cpu,
@ -64,7 +71,7 @@ window#waybar.hidden {
#custom-events,
#custom-vidl,
#custom-media {
padding: 0 10px;
padding: 0 5px;
margin: 0 5px;
color: @base05;
background-color: @base01;
@ -84,6 +91,10 @@ window#waybar.hidden {
background-color: @base02;
}
#mode.interact_float {
background-color: @base0D;
}
/* Mark active output through highlighted window background */
#window {
background-color: transparent;

View file

@ -13,6 +13,7 @@ local formatters = {
liquid = { "prettier" },
lua = { "stylua" },
markdown = { "prettier", "injected" },
nim = { "nimpretty" },
python = { "ruff_fix", "ruff_format", "ruff_organize_imports" },
quarto = { "prettier", "injected" },
sh = { "shfmt" },

View file

@ -29,6 +29,7 @@ local servers = {
},
},
marksman = {},
nim_langserver = {},
basedpyright = {},
ruff = {},
serve_d = {},
@ -287,6 +288,7 @@ return {
local python_path
-- ensure python virtualenv is determined automatically on lsp start
-- we primarily use pyright for cmp lsp completion & hover info
lspconfig.basedpyright.setup({
on_attach = function(client, bufnr)
on_attach(client, bufnr)
@ -299,12 +301,13 @@ return {
client.config.settings.python.pythonPath = python_path
end,
settings = {
-- disable imports and linting since, we use ruff for that
-- disable imports and linting since, using ruff for it
pyright = {
disableOrganizeImports = true,
},
python = {
analysis = {
-- ignore all files, use ruff for linting
ignore = { "*" },
},
},

View file

@ -33,7 +33,7 @@ Options:
urls=("$@")
while getopts "t:f:d:hcp" opt; do
while getopts "t:f:d:hcpP" opt; do
case "$opt" in
# v) verbose=1
# ;;
@ -50,6 +50,9 @@ while getopts "t:f:d:hcp" opt; do
ONLY_DO=clear
;;
p)
ONLY_DO=status
;;
P)
ONLY_DO=remaining
;;
h | \? | *)
@ -155,6 +158,7 @@ is_in_queue() { # 1=url
}
add_to_queue() { # 1=url
if is_in_queue "$1"; then return; fi
echo "$1" >>"$queue_file"
echo "added $url to queue."
@ -193,6 +197,14 @@ print_queue_remaining() {
wc -l "$queue_file" | cut -f1 -d' '
}
print_status() {
if is_only_instance; then
printf "stopped\n"
return
fi
printf "running\n"
}
main() {
setup
if [ "$ONLY_DO" = "clear" ]; then
@ -201,6 +213,9 @@ main() {
elif [ "$ONLY_DO" = "remaining" ]; then
print_queue_remaining
exit
elif [ "$ONLY_DO" = "status" ]; then
print_status
exit
fi
for url in "$@"; do