10 Commits
d405f264db
...
f1ad855f23
Author | SHA1 | Message | Date |
---|---|---|---|
|
f1ad855f23 |
Hevin screensaver on one monitor
|
1 week ago |
|
82baa8a23d
|
Ubuntu start script, HERO ticker, Chrome default browser
|
1 month ago |
|
05231501e7
|
Python currency converter
|
2 months ago |
|
d04af8e39f
|
Setup task, AWS aliases
|
2 months ago |
|
941bee835a
|
Ubuntu pkgs
|
2 months ago |
|
720e104f55
|
Dexscreener MC
|
2 months ago |
|
aef13d7f26
|
AVAX first 3 digits
|
2 months ago |
|
85fb63208d
|
Git signing key, volume i3block spacing
|
2 months ago |
|
6f8c0b08d7 |
Tickers color scheme
|
2 months ago |
|
5c098bd26d |
Basic i3 setup
|
2 months ago |
48 changed files with 3617 additions and 224 deletions
-
68aliases/key_aliases.tmpl
-
27aliases/key_dirs.tmpl
-
2aliases/key_files.tmpl
-
8dot_Xmodmap-ubuntu
-
115dot_config/fish/completions/pass.fish
-
235dot_config/fish/completions/timetrace.fish
-
45dot_config/fish/config.fish.tmpl
-
3dot_config/fish/functions/aws-attach-volume.fish
-
8dot_config/fish/functions/bc-qalc.fish
-
3dot_config/fish/functions/taskopen-new.fish
-
49dot_config/i3/config.tmpl
-
30dot_config/i3blocks/i3blocks-secondary.conf.tmpl
-
83dot_config/i3blocks/i3blocks.conf.tmpl
-
3dot_config/i3blocks/scripts/executable_calendar
-
3dot_config/i3blocks/scripts/executable_dexscreener
-
6dot_config/i3blocks/scripts/executable_dexscreener-fdv
-
6dot_config/i3blocks/scripts/executable_dexscreener-mc
-
3dot_config/i3blocks/scripts/executable_kraken
-
6dot_config/i3blocks/scripts/executable_spotify
-
2dot_config/i3blocks/scripts/executable_volume
-
13dot_config/mimeapps-ffox.list
-
10dot_config/mimeapps.list
-
4dot_config/neofetch/config.conf
-
6dot_config/ranger/executable_scope.sh
-
9dot_config/ranger/rc.conf.tmpl
-
1dot_config/ranger/rifle.conf
-
4dot_gitconfig.tmpl
-
4dot_imwheelrc
-
155dot_taskopenrc
-
8dot_taskrc
-
5dot_vimrc.tmpl
-
5dot_xinitrc.tmpl
-
2private_dot_gnupg/gpg-agent.conf
-
3scripts/executable_backup-pc
-
29scripts/executable_currency
-
21scripts/executable_dexscreener
-
24scripts/executable_dexscreener-fdv
-
24scripts/executable_dexscreener-mc
-
127scripts/executable_dual-monitor-slideshow
-
36scripts/executable_glhf-metadata
-
31scripts/executable_kraken
-
34scripts/executable_spotify-now
-
16scripts/executable_ubuntu-start
-
6txt/exclude-dirs-backup.txt.tmpl
-
2438txt/ubuntu/apt-packages.txt
-
5txt/ubuntu/npm-packages.txt
-
92txt/ubuntu/pip-packages.txt
-
24txt/ubuntu/snap-packages.txt
@ -0,0 +1,8 @@ |
|||
clear Lock |
|||
|
|||
keycode 66 = Caps_Lock |
|||
keycode 9 = Escape |
|||
|
|||
pointer = 1 2 3 6 7 4 5 10 11 12 8 9 |
|||
! side thumb button as middle click |
|||
! pointer = 1 10 3 6 7 4 5 2 11 12 8 9 |
@ -0,0 +1,115 @@ |
|||
# Copyright (C) 2012-2014 Dmitry Medvinsky <me@dmedvinsky.name>. All Rights Reserved. |
|||
# This file is licensed under the GPLv2+. Please see COPYING for more information. |
|||
|
|||
set -l PROG 'pass' |
|||
|
|||
function __fish_pass_get_prefix |
|||
if set -q PASSWORD_STORE_DIR |
|||
realpath -- "$PASSWORD_STORE_DIR" |
|||
else |
|||
echo "$HOME/.password-store" |
|||
end |
|||
end |
|||
|
|||
function __fish_pass_needs_command |
|||
[ (count (commandline -opc)) -eq 1 ] |
|||
end |
|||
|
|||
function __fish_pass_uses_command |
|||
set -l cmd (commandline -opc) |
|||
if [ (count $cmd) -gt 1 ] |
|||
if [ $argv[1] = $cmd[2] ] |
|||
return 0 |
|||
end |
|||
end |
|||
return 1 |
|||
end |
|||
|
|||
function __fish_pass_print_gpg_keys |
|||
gpg2 --list-keys | grep uid | sed 's/.*<\(.*\)>/\1/' |
|||
end |
|||
|
|||
function __fish_pass_print |
|||
set -l ext $argv[1] |
|||
set -l strip $argv[2] |
|||
set -l prefix (__fish_pass_get_prefix) |
|||
set -l matches $prefix/**$ext |
|||
printf '%s\n' $matches | sed "s#$prefix/\(.*\)$strip#\1#" |
|||
end |
|||
|
|||
function __fish_pass_print_entry_dirs |
|||
__fish_pass_print "/" |
|||
end |
|||
|
|||
function __fish_pass_print_entries |
|||
__fish_pass_print ".gpg" ".gpg" |
|||
end |
|||
|
|||
function __fish_pass_print_entries_and_dirs |
|||
__fish_pass_print_entry_dirs |
|||
__fish_pass_print_entries |
|||
end |
|||
|
|||
function __fish_pass_git_complete |
|||
set -l prefix (__fish_pass_get_prefix) |
|||
set -l git_cmd (commandline -opc) (commandline -ct) |
|||
set -e git_cmd[1 2] # Drop "pass git". |
|||
complete -C"git -C $prefix $git_cmd" |
|||
end |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a help -d 'Command: show usage help' |
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a version -d 'Command: show program version' |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a init -d 'Command: initialize new password storage' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command init' -s p -l path -d 'Assign gpg-id for specified sub folder of password store' |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a ls -d 'Command: list passwords' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command ls' -a "(__fish_pass_print_entry_dirs)" |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a insert -d 'Command: insert new password' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command insert' -s e -l echo -d 'Echo the password on console' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command insert' -s m -l multiline -d 'Provide multiline password entry' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command insert' -s f -l force -d 'Do not prompt before overwritting' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command insert' -a "(__fish_pass_print_entry_dirs)" |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a generate -d 'Command: generate new password' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command generate' -s n -l no-symbols -d 'Do not use special symbols' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command generate' -s c -l clip -d 'Put the password in clipboard' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command generate' -s f -l force -d 'Do not prompt before overwritting' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command generate' -s i -l in-place -d 'Replace only the first line with the generated password' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command generate' -a "(__fish_pass_print_entry_dirs)" |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a mv -d 'Command: rename existing password' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command mv' -s f -l force -d 'Force rename' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command mv' -a "(__fish_pass_print_entries_and_dirs)" |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a cp -d 'Command: copy existing password' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command cp' -s f -l force -d 'Force copy' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command cp' -a "(__fish_pass_print_entries_and_dirs)" |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a rm -d 'Command: remove existing password' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command rm' -s r -l recursive -d 'Remove password groups recursively' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command rm' -s f -l force -d 'Force removal' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command rm' -a "(__fish_pass_print_entries_and_dirs)" |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a edit -d 'Command: edit password using text editor' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command edit' -a "(__fish_pass_print_entries)" |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a show -d 'Command: show existing password' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command show' -s c -l clip -d 'Put password in clipboard' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command show' -a "(__fish_pass_print_entries)" |
|||
# When no command is given, `show` is defaulted. |
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -s c -l clip -d 'Put password in clipboard' |
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a "(__fish_pass_print_entries)" |
|||
complete -c $PROG -f -n '__fish_pass_uses_command -c' -a "(__fish_pass_print_entries)" |
|||
complete -c $PROG -f -n '__fish_pass_uses_command --clip' -a "(__fish_pass_print_entries)" |
|||
|
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a git -d 'Command: execute a git command' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command git' -a '(__fish_pass_git_complete)' |
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a find -d 'Command: find a password file or directory matching pattern' |
|||
complete -c $PROG -f -n '__fish_pass_needs_command' -a grep -d 'Command: search inside of decrypted password files for matching pattern' |
|||
complete -c $PROG -f -n '__fish_pass_uses_command grep' -a '(begin |
|||
set -l cmd (commandline -opc) (commandline -ct) |
|||
set -e cmd[1 2] # Drop "pass grep". |
|||
complete -C"grep $cmd" |
|||
end)' |
@ -0,0 +1,235 @@ |
|||
# fish completion for timetrace -*- shell-script -*- |
|||
|
|||
function __timetrace_debug |
|||
set -l file "$BASH_COMP_DEBUG_FILE" |
|||
if test -n "$file" |
|||
echo "$argv" >> $file |
|||
end |
|||
end |
|||
|
|||
function __timetrace_perform_completion |
|||
__timetrace_debug "Starting __timetrace_perform_completion" |
|||
|
|||
# Extract all args except the last one |
|||
set -l args (commandline -opc) |
|||
# Extract the last arg and escape it in case it is a space |
|||
set -l lastArg (string escape -- (commandline -ct)) |
|||
|
|||
__timetrace_debug "args: $args" |
|||
__timetrace_debug "last arg: $lastArg" |
|||
|
|||
# Disable ActiveHelp which is not supported for fish shell |
|||
set -l requestComp "TIMETRACE_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg" |
|||
|
|||
__timetrace_debug "Calling $requestComp" |
|||
set -l results (eval $requestComp 2> /dev/null) |
|||
|
|||
# Some programs may output extra empty lines after the directive. |
|||
# Let's ignore them or else it will break completion. |
|||
# Ref: https://github.com/spf13/cobra/issues/1279 |
|||
for line in $results[-1..1] |
|||
if test (string trim -- $line) = "" |
|||
# Found an empty line, remove it |
|||
set results $results[1..-2] |
|||
else |
|||
# Found non-empty line, we have our proper output |
|||
break |
|||
end |
|||
end |
|||
|
|||
set -l comps $results[1..-2] |
|||
set -l directiveLine $results[-1] |
|||
|
|||
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>) |
|||
# completions must be prefixed with the flag |
|||
set -l flagPrefix (string match -r -- '-.*=' "$lastArg") |
|||
|
|||
__timetrace_debug "Comps: $comps" |
|||
__timetrace_debug "DirectiveLine: $directiveLine" |
|||
__timetrace_debug "flagPrefix: $flagPrefix" |
|||
|
|||
for comp in $comps |
|||
printf "%s%s\n" "$flagPrefix" "$comp" |
|||
end |
|||
|
|||
printf "%s\n" "$directiveLine" |
|||
end |
|||
|
|||
# this function limits calls to __timetrace_perform_completion, by caching the result behind $__timetrace_perform_completion_once_result |
|||
function __timetrace_perform_completion_once |
|||
__timetrace_debug "Starting __timetrace_perform_completion_once" |
|||
|
|||
if test -n "$__timetrace_perform_completion_once_result" |
|||
__timetrace_debug "Seems like a valid result already exists, skipping __timetrace_perform_completion" |
|||
return 0 |
|||
end |
|||
|
|||
set --global __timetrace_perform_completion_once_result (__timetrace_perform_completion) |
|||
if test -z "$__timetrace_perform_completion_once_result" |
|||
__timetrace_debug "No completions, probably due to a failure" |
|||
return 1 |
|||
end |
|||
|
|||
__timetrace_debug "Performed completions and set __timetrace_perform_completion_once_result" |
|||
return 0 |
|||
end |
|||
|
|||
# this function is used to clear the $__timetrace_perform_completion_once_result variable after completions are run |
|||
function __timetrace_clear_perform_completion_once_result |
|||
__timetrace_debug "" |
|||
__timetrace_debug "========= clearing previously set __timetrace_perform_completion_once_result variable ==========" |
|||
set --erase __timetrace_perform_completion_once_result |
|||
__timetrace_debug "Succesfully erased the variable __timetrace_perform_completion_once_result" |
|||
end |
|||
|
|||
function __timetrace_requires_order_preservation |
|||
__timetrace_debug "" |
|||
__timetrace_debug "========= checking if order preservation is required ==========" |
|||
|
|||
__timetrace_perform_completion_once |
|||
if test -z "$__timetrace_perform_completion_once_result" |
|||
__timetrace_debug "Error determining if order preservation is required" |
|||
return 1 |
|||
end |
|||
|
|||
set -l directive (string sub --start 2 $__timetrace_perform_completion_once_result[-1]) |
|||
__timetrace_debug "Directive is: $directive" |
|||
|
|||
set -l shellCompDirectiveKeepOrder 32 |
|||
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2) |
|||
__timetrace_debug "Keeporder is: $keeporder" |
|||
|
|||
if test $keeporder -ne 0 |
|||
__timetrace_debug "This does require order preservation" |
|||
return 0 |
|||
end |
|||
|
|||
__timetrace_debug "This doesn't require order preservation" |
|||
return 1 |
|||
end |
|||
|
|||
|
|||
# This function does two things: |
|||
# - Obtain the completions and store them in the global __timetrace_comp_results |
|||
# - Return false if file completion should be performed |
|||
function __timetrace_prepare_completions |
|||
__timetrace_debug "" |
|||
__timetrace_debug "========= starting completion logic ==========" |
|||
|
|||
# Start fresh |
|||
set --erase __timetrace_comp_results |
|||
|
|||
__timetrace_perform_completion_once |
|||
__timetrace_debug "Completion results: $__timetrace_perform_completion_once_result" |
|||
|
|||
if test -z "$__timetrace_perform_completion_once_result" |
|||
__timetrace_debug "No completion, probably due to a failure" |
|||
# Might as well do file completion, in case it helps |
|||
return 1 |
|||
end |
|||
|
|||
set -l directive (string sub --start 2 $__timetrace_perform_completion_once_result[-1]) |
|||
set --global __timetrace_comp_results $__timetrace_perform_completion_once_result[1..-2] |
|||
|
|||
__timetrace_debug "Completions are: $__timetrace_comp_results" |
|||
__timetrace_debug "Directive is: $directive" |
|||
|
|||
set -l shellCompDirectiveError 1 |
|||
set -l shellCompDirectiveNoSpace 2 |
|||
set -l shellCompDirectiveNoFileComp 4 |
|||
set -l shellCompDirectiveFilterFileExt 8 |
|||
set -l shellCompDirectiveFilterDirs 16 |
|||
|
|||
if test -z "$directive" |
|||
set directive 0 |
|||
end |
|||
|
|||
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2) |
|||
if test $compErr -eq 1 |
|||
__timetrace_debug "Received error directive: aborting." |
|||
# Might as well do file completion, in case it helps |
|||
return 1 |
|||
end |
|||
|
|||
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2) |
|||
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2) |
|||
if test $filefilter -eq 1; or test $dirfilter -eq 1 |
|||
__timetrace_debug "File extension filtering or directory filtering not supported" |
|||
# Do full file completion instead |
|||
return 1 |
|||
end |
|||
|
|||
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2) |
|||
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2) |
|||
|
|||
__timetrace_debug "nospace: $nospace, nofiles: $nofiles" |
|||
|
|||
# If we want to prevent a space, or if file completion is NOT disabled, |
|||
# we need to count the number of valid completions. |
|||
# To do so, we will filter on prefix as the completions we have received |
|||
# may not already be filtered so as to allow fish to match on different |
|||
# criteria than the prefix. |
|||
if test $nospace -ne 0; or test $nofiles -eq 0 |
|||
set -l prefix (commandline -t | string escape --style=regex) |
|||
__timetrace_debug "prefix: $prefix" |
|||
|
|||
set -l completions (string match -r -- "^$prefix.*" $__timetrace_comp_results) |
|||
set --global __timetrace_comp_results $completions |
|||
__timetrace_debug "Filtered completions are: $__timetrace_comp_results" |
|||
|
|||
# Important not to quote the variable for count to work |
|||
set -l numComps (count $__timetrace_comp_results) |
|||
__timetrace_debug "numComps: $numComps" |
|||
|
|||
if test $numComps -eq 1; and test $nospace -ne 0 |
|||
# We must first split on \t to get rid of the descriptions to be |
|||
# able to check what the actual completion will be. |
|||
# We don't need descriptions anyway since there is only a single |
|||
# real completion which the shell will expand immediately. |
|||
set -l split (string split --max 1 \t $__timetrace_comp_results[1]) |
|||
|
|||
# Fish won't add a space if the completion ends with any |
|||
# of the following characters: @=/:., |
|||
set -l lastChar (string sub -s -1 -- $split) |
|||
if not string match -r -q "[@=/:.,]" -- "$lastChar" |
|||
# In other cases, to support the "nospace" directive we trick the shell |
|||
# by outputting an extra, longer completion. |
|||
__timetrace_debug "Adding second completion to perform nospace directive" |
|||
set --global __timetrace_comp_results $split[1] $split[1]. |
|||
__timetrace_debug "Completions are now: $__timetrace_comp_results" |
|||
end |
|||
end |
|||
|
|||
if test $numComps -eq 0; and test $nofiles -eq 0 |
|||
# To be consistent with bash and zsh, we only trigger file |
|||
# completion when there are no other completions |
|||
__timetrace_debug "Requesting file completion" |
|||
return 1 |
|||
end |
|||
end |
|||
|
|||
return 0 |
|||
end |
|||
|
|||
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves |
|||
# so we can properly delete any completions provided by another script. |
|||
# Only do this if the program can be found, or else fish may print some errors; besides, |
|||
# the existing completions will only be loaded if the program can be found. |
|||
if type -q "timetrace" |
|||
# The space after the program name is essential to trigger completion for the program |
|||
# and not completion of the program name itself. |
|||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. |
|||
complete --do-complete "timetrace " > /dev/null 2>&1 |
|||
end |
|||
|
|||
# Remove any pre-existing completions for the program since we will be handling all of them. |
|||
complete -c timetrace -e |
|||
|
|||
# this will get called after the two calls below and clear the $__timetrace_perform_completion_once_result global |
|||
complete -c timetrace -n '__timetrace_clear_perform_completion_once_result' |
|||
# The call to __timetrace_prepare_completions will setup __timetrace_comp_results |
|||
# which provides the program's completion choices. |
|||
# If this doesn't require order preservation, we don't use the -k flag |
|||
complete -c timetrace -n 'not __timetrace_requires_order_preservation && __timetrace_prepare_completions' -f -a '$__timetrace_comp_results' |
|||
# otherwise we use the -k flag |
|||
complete -k -c timetrace -n '__timetrace_requires_order_preservation && __timetrace_prepare_completions' -f -a '$__timetrace_comp_results' |
@ -0,0 +1,3 @@ |
|||
function aws-attach-volume |
|||
aws ec2 attach-volume --volume-id $argv[1] --instance-id $argv[2] --device /dev/sda1 |
|||
end |
@ -0,0 +1,8 @@ |
|||
#function bc-qalc |
|||
#echo "scale=4; $argv[1]" | bc |
|||
#end |
|||
function bc-qalc |
|||
set -l expression "scale=4; $argv[1]" |
|||
set -l result (echo "$expression" | bc -l) |
|||
python3 -c "print(f'{float($result):,}')" |
|||
end |
@ -0,0 +1,3 @@ |
|||
function taskopen-new |
|||
echo "md" | taskopen -A $argv[1] && taskopen -A $argv[1] |
|||
end |
@ -1,5 +1,6 @@ |
|||
#!/bin/bash |
|||
|
|||
. "/home/kevin/.cache/wal/colors.sh" |
|||
ticker=$(~/scripts/dexscreener $CHAIN $PAIR) |
|||
#ticker=$(~/scripts/dexscreener $CHAIN $PAIR) |
|||
ticker=$(~/scripts/dexscreener $1 $2) |
|||
printf "%s\n\n%s\n" "$ticker" "$color7" |
@ -0,0 +1,6 @@ |
|||
#!/bin/bash |
|||
|
|||
. "/home/kevin/.cache/wal/colors.sh" |
|||
#ticker=$(~/scripts/dexscreener $CHAIN $PAIR) |
|||
ticker=$(~/scripts/dexscreener-fdv $1 $2) |
|||
printf "%s\n\n%s\n" "$ticker" "$color7" |
@ -0,0 +1,6 @@ |
|||
#!/bin/bash |
|||
|
|||
. "/home/kevin/.cache/wal/colors.sh" |
|||
#ticker=$(~/scripts/dexscreener $CHAIN $PAIR) |
|||
ticker=$(~/scripts/dexscreener-mc $1 $2) |
|||
printf "%s\n\n%s\n" "$ticker" "$color7" |
@ -1,5 +1,6 @@ |
|||
#!/bin/bash |
|||
|
|||
. "/home/kevin/.cache/wal/colors.sh" |
|||
ticker=$(~/scripts/kraken $TICKER) |
|||
#ticker=$(~/scripts/kraken $TICKER) |
|||
ticker=$(~/scripts/kraken $1) |
|||
printf "%s\n\n%s\n" "$ticker" "$color7" |
@ -1,72 +1,83 @@ |
|||
|
|||
# BROWSER='xdg-open $FILE &>/dev/null' |
|||
BROWSER='firefox' |
|||
EDITOR='nvim' |
|||
#FILE_CMD='xdg-open' |
|||
TASKBIN='task' |
|||
|
|||
# If you sync tasks NOTES_FOLDER should be a location that syncs and is available to |
|||
# other computers, i.e. /users/dropbox/tasknotes |
|||
# NOTES_FOLDER to store notes in, must already exist! |
|||
NOTES_FOLDER="$HOME/.task/notes/" |
|||
|
|||
# Preferred extension for tasknotes |
|||
NOTES_EXT=".md" |
|||
|
|||
# Path to notes file. UUID will be replaced with the actual uuid of |
|||
# the task. If NOTES_CMD |
|||
# Default is: ${NOTES_FOLDER}UUID${NOTES_EXT} |
|||
#NOTES_FILE="$HOME/tasknotes/UUID.txt" |
|||
|
|||
# Command that opens notes. UUID will be replaced with the actual uuid of |
|||
# the task. |
|||
# Default is: $EDITOR $NOTES_FILE |
|||
#NOTES_CMD="vim "$HOME/tasknotes/$UUID.txt"" |
|||
|
|||
# Specify the default sorting. |
|||
# Default is taskwarrior's default sorting, i.e. sorting by task IDs. |
|||
#DEFAULT_SORT="urgency-,label,annot" |
|||
|
|||
# Apply a default taskwarrior filter in order to exclude certain tasks. |
|||
# Default is: status.is:pending |
|||
#DEFAULT_FILTER= |
|||
|
|||
# Default command for '-i' |
|||
# Default is: ls -la |
|||
#DEFAULT-i="ls -la" |
|||
|
|||
# Add some paths to the taskopen's PATH variable |
|||
#PATH_EXT=/path/to/taskopen/scripts |
|||
PATH_EXT=/usr/share/taskopen/scripts |
|||
|
|||
# Regular expression that referes to the NOTES_FILE. |
|||
# Default is: Notes |
|||
#NOTES_REGEX="Notes" |
|||
|
|||
# Regular expression that identifies annotations openable by BROWSER. |
|||
# Default is: www|http |
|||
#BROWSER_REGEX="www|http" |
|||
|
|||
# Regular expression that identifies file paths in annotations. Will be opened by xdg-open. |
|||
# Default is: \.|\/|~ |
|||
#FILE_REGEX="\.|\/|~" |
|||
|
|||
# Regular expression that identifies a text annotation. Automatically triggers raw edit mode like '-r'. |
|||
#TEXT_REGEX=".*" |
|||
|
|||
# Custom regular expression that specifies annotations passed to CUSTOM1_CMD, e.g: |
|||
#CUSTOM1_REGEX="Message-[Ii][Dd]:|message:" |
|||
#CUSTOM1_CMD="muttjumpwrapper" |
|||
|
|||
# Custom regular expression that specifies annotations passed to CUSTOM2_CMD. |
|||
#CUSTOM2_REGEX="" |
|||
#CUSTOM2_CMD="" |
|||
|
|||
# Execute an arbitrary command if there is no annotation available. The corresponding taskwarrior IDs will |
|||
# be passed as arguments, e.g. "addnote 21 42" |
|||
#NO_ANNOTATION_HOOK=addnote |
|||
|
|||
# Make additional taskwarrior attributes available as sort keys and environment variables. |
|||
# E.g. TASK_ATTRIBUTES="project,tags" allows to sort by "task_project" or "task_tags" and to use |
|||
# "$TASK_PROJECT" or "$TASK_TAGS" within your (custom) commands. |
|||
#TASK_ATTRIBUTES="" |
|||
[General] |
|||
EDITOR = nvim # Use your preferred editor |
|||
path_ext = /usr/share/taskopen/scripts |
|||
taskbin = task |
|||
|
|||
[Actions] |
|||
notes.regex = "Notes" # Match tasks with the "Notes" annotation |
|||
notes.command = "$EDITOR $HOME/.task/notes/$UUID.md" # Custom notes directory |
|||
#notes.modes = any |
|||
notes.modes = normal |
|||
|
|||
# # BROWSER='xdg-open $FILE &>/dev/null' |
|||
# BROWSER='firefox' |
|||
# EDITOR='nvim' |
|||
# #FILE_CMD='xdg-open' |
|||
# TASKBIN='task' |
|||
# |
|||
# # If you sync tasks NOTES_FOLDER should be a location that syncs and is available to |
|||
# # other computers, i.e. /users/dropbox/tasknotes |
|||
# # NOTES_FOLDER to store notes in, must already exist! |
|||
# NOTES_FOLDER="$HOME/.task/notes/" |
|||
# data_location="$HOME/.task/notes/" |
|||
# |
|||
# # Preferred extension for tasknotes |
|||
# NOTES_EXT=".md" |
|||
# |
|||
# # Path to notes file. UUID will be replaced with the actual uuid of |
|||
# # the task. If NOTES_CMD |
|||
# # Default is: ${NOTES_FOLDER}UUID${NOTES_EXT} |
|||
# #NOTES_FILE="$HOME/tasknotes/UUID.txt" |
|||
# |
|||
# # Command that opens notes. UUID will be replaced with the actual uuid of |
|||
# # the task. |
|||
# # Default is: $EDITOR $NOTES_FILE |
|||
# #NOTES_CMD="vim "$HOME/tasknotes/$UUID.txt"" |
|||
# |
|||
# # Specify the default sorting. |
|||
# # Default is taskwarrior's default sorting, i.e. sorting by task IDs. |
|||
# #DEFAULT_SORT="urgency-,label,annot" |
|||
# |
|||
# # Apply a default taskwarrior filter in order to exclude certain tasks. |
|||
# # Default is: status.is:pending |
|||
# #DEFAULT_FILTER= |
|||
# |
|||
# # Default command for '-i' |
|||
# # Default is: ls -la |
|||
# #DEFAULT-i="ls -la" |
|||
# |
|||
# # Add some paths to the taskopen's PATH variable |
|||
# #PATH_EXT=/path/to/taskopen/scripts |
|||
# PATH_EXT=/usr/share/taskopen/scripts |
|||
# |
|||
# # Regular expression that referes to the NOTES_FILE. |
|||
# # Default is: Notes |
|||
# #NOTES_REGEX="Notes" |
|||
# |
|||
# # Regular expression that identifies annotations openable by BROWSER. |
|||
# # Default is: www|http |
|||
# #BROWSER_REGEX="www|http" |
|||
# |
|||
# # Regular expression that identifies file paths in annotations. Will be opened by xdg-open. |
|||
# # Default is: \.|\/|~ |
|||
# #FILE_REGEX="\.|\/|~" |
|||
# |
|||
# # Regular expression that identifies a text annotation. Automatically triggers raw edit mode like '-r'. |
|||
# #TEXT_REGEX=".*" |
|||
# |
|||
# # Custom regular expression that specifies annotations passed to CUSTOM1_CMD, e.g: |
|||
# #CUSTOM1_REGEX="Message-[Ii][Dd]:|message:" |
|||
# #CUSTOM1_CMD="muttjumpwrapper" |
|||
# |
|||
# # Custom regular expression that specifies annotations passed to CUSTOM2_CMD. |
|||
# #CUSTOM2_REGEX="" |
|||
# #CUSTOM2_CMD="" |
|||
# |
|||
# # Execute an arbitrary command if there is no annotation available. The corresponding taskwarrior IDs will |
|||
# # be passed as arguments, e.g. "addnote 21 42" |
|||
# #NO_ANNOTATION_HOOK=addnote |
|||
# |
|||
# # Make additional taskwarrior attributes available as sort keys and environment variables. |
|||
# # E.g. TASK_ATTRIBUTES="project,tags" allows to sort by "task_project" or "task_tags" and to use |
|||
# # "$TASK_PROJECT" or "$TASK_TAGS" within your (custom) commands. |
|||
# #TASK_ATTRIBUTES="" |
@ -0,0 +1,2 @@ |
|||
default-cache-ttl 86400 |
|||
max-cache-ttl 86400 |
@ -0,0 +1,29 @@ |
|||
#!/usr/bin/env python3 |
|||
|
|||
import sys |
|||
import requests |
|||
|
|||
def convert_currency(amount, from_currency, to_currency): |
|||
url = f"https://api.frankfurter.app/latest?amount={amount}&from={from_currency}&to={to_currency}" |
|||
response = requests.get(url) |
|||
if response.status_code == 200: |
|||
data = response.json() |
|||
converted_amount = data['rates'][to_currency] |
|||
print(f"{amount} {from_currency} = {converted_amount} {to_currency}") |
|||
else: |
|||
print("Error: Unable to fetch exchange rates.") |
|||
|
|||
def main(): |
|||
if len(sys.argv) != 4: |
|||
print("Usage: currency_converter.py <amount> <from_currency> <to_currency>") |
|||
print("Example: currency_converter.py 100 CAD USD") |
|||
sys.exit(1) |
|||
|
|||
amount = float(sys.argv[3]) |
|||
from_currency = sys.argv[1].upper() |
|||
to_currency = sys.argv[2].upper() |
|||
|
|||
convert_currency(amount, from_currency, to_currency) |
|||
|
|||
if __name__ == "__main__": |
|||
main() |
@ -0,0 +1,24 @@ |
|||
# /bin/bash |
|||
|
|||
# curl -s https://api.dexscreener.com/latest/dex/pairs/$1/$2| jq -r '.pairs | .[] | .priceUsd' |
|||
#raw=$(curl -s "https://api.dexscreener.com/latest/dex/pairs/$1/$2") |
|||
#price=$(echo "$raw" | jq '.pairs[0].marketCap / 1000000000 | . as $marketCap | "\($marketCap | floor).$(($marketCap * 10 | floor % 10))"') |
|||
#price=$(echo "$raw" | jq -r '.pairs[0].marketCap / 1000000000 | "\(floor).\( (. * 10 | floor % 10) )B"') |
|||
#curl -s "https://api.dexscreener.com/latest/dex/pairs/$1/$2" | jq -r '.pairs[0].marketCap / 1000000000 | "\(floor).\( (. * 10 | floor % 10) )"' |
|||
curl -s "https://api.dexscreener.com/latest/dex/pairs/$1/$2" | jq -r '.pairs[0].fdv / 1000000000 | "\(floor).\( (. * 10 | floor % 10) )"' | jq -r 'tostring | gsub("\\.";"")' |
|||
|
|||
# if (( $(echo "$price < .05" | bc -l) )); then |
|||
# printf "%0.4f\n" "$price" | cut -c 4- |
|||
# elif (( $(echo "$price < .1" | bc -l) )); then |
|||
# printf "%0.3f\n" "$price" | cut -c 4- |
|||
#if (( $(echo "$price < .09" | bc -l) )); then |
|||
#printf "%0.4f\n" "$price" | cut -c 4- |
|||
#elif (( $(echo "$price < .1" | bc -l) )); then |
|||
#printf "%0.3f\n" "$price" | cut -c 4- |
|||
#elif (( $(echo "$price < 1" | bc -l) )); then |
|||
#printf "%0.3f\n" "$price" | cut -c 3- |
|||
#elif (( $(echo "$price < 10" | bc -l) )); then |
|||
#printf "%0.2f\n" "$price" |
|||
#fi |
|||
|
|||
|
@ -0,0 +1,24 @@ |
|||
# /bin/bash |
|||
|
|||
# curl -s https://api.dexscreener.com/latest/dex/pairs/$1/$2| jq -r '.pairs | .[] | .priceUsd' |
|||
#raw=$(curl -s "https://api.dexscreener.com/latest/dex/pairs/$1/$2") |
|||
#price=$(echo "$raw" | jq '.pairs[0].marketCap / 1000000000 | . as $marketCap | "\($marketCap | floor).$(($marketCap * 10 | floor % 10))"') |
|||
#price=$(echo "$raw" | jq -r '.pairs[0].marketCap / 1000000000 | "\(floor).\( (. * 10 | floor % 10) )B"') |
|||
#curl -s "https://api.dexscreener.com/latest/dex/pairs/$1/$2" | jq -r '.pairs[0].marketCap / 1000000000 | "\(floor).\( (. * 10 | floor % 10) )"' |
|||
curl -s "https://api.dexscreener.com/latest/dex/pairs/$1/$2" | jq -r '.pairs[0].marketCap / 1000000000 | "\(floor).\( (. * 10 | floor % 10) )"' | jq -r 'tostring | gsub("\\.";"")' |
|||
|
|||
# if (( $(echo "$price < .05" | bc -l) )); then |
|||
# printf "%0.4f\n" "$price" | cut -c 4- |
|||
# elif (( $(echo "$price < .1" | bc -l) )); then |
|||
# printf "%0.3f\n" "$price" | cut -c 4- |
|||
#if (( $(echo "$price < .09" | bc -l) )); then |
|||
#printf "%0.4f\n" "$price" | cut -c 4- |
|||
#elif (( $(echo "$price < .1" | bc -l) )); then |
|||
#printf "%0.3f\n" "$price" | cut -c 4- |
|||
#elif (( $(echo "$price < 1" | bc -l) )); then |
|||
#printf "%0.3f\n" "$price" | cut -c 3- |
|||
#elif (( $(echo "$price < 10" | bc -l) )); then |
|||
#printf "%0.2f\n" "$price" |
|||
#fi |
|||
|
|||
|
@ -0,0 +1,127 @@ |
|||
#!/usr/bin/env fish |
|||
|
|||
# Find a random image |
|||
#set image (fdfind -e jpg -e jpeg -e png -e webp . /mnt/linux-files-2/Pictures/hevin | shuf -n 1) |
|||
|
|||
## Create blurred lock image |
|||
#convert "$image" -resize 1920x1080^ -gravity center -extent 1920x1080 /tmp/lock.png |
|||
|
|||
## Lock with i3lock-color |
|||
#i3lock -n -i /tmp/lock.png |
|||
|
|||
# -------------------- |
|||
#!/usr/bin/env fish |
|||
|
|||
#set WALLPAPER_DIR "/mnt/linux-files-2/Pictures/hevin" |
|||
#set CYCLE_TIME 5 # Seconds between image changes |
|||
#set LOCK_AFTER 500 # Activate real lock after 30 seconds of screensaver |
|||
|
|||
## Use a transparent window to cover everything |
|||
#while true |
|||
#set image (fdfind -e jpg -e jpeg -e png -e webp . $WALLPAPER_DIR | shuf -n 1) |
|||
|
|||
## Create fullscreen image |
|||
#convert "$image" -resize (xrandr | grep '*' | head -1 | awk '{print $1}')^ \ |
|||
#-gravity center -extent (xrandr | grep '*' | head -1 | awk '{print $1}') \ |
|||
#/tmp/screensaver.png |
|||
|
|||
## Display fullscreen using feh |
|||
#feh --fullscreen --hide-pointer --no-fehbg /tmp/screensaver.png & |
|||
#set feh_pid $last_pid |
|||
|
|||
## Wait for timeout or mouse movement |
|||
#sleep $CYCLE_TIME |
|||
#kill $feh_pid |
|||
|
|||
## After longer timeout, activate real lock |
|||
#if test (math $CYCLE_TIME \* $count) -ge $LOCK_AFTER |
|||
#i3lock -n -i /tmp/screensaver.png |
|||
#set count 0 |
|||
#else |
|||
#set count (math $count + 1) |
|||
#end |
|||
#end |
|||
|
|||
# -------------------- |
|||
#!/usr/bin/env fish |
|||
|
|||
# Configuration |
|||
set WALLPAPER_DIR "/mnt/linux-files-2/Pictures/hevin" |
|||
set CYCLE_TIME 2 # Seconds between image changes |
|||
#set BLUR_AMOUNT "0x5" # Set to "0x0" for no blur |
|||
set BLUR_AMOUNT "0x0" # Set to "0x0" for no blur |
|||
|
|||
# Get monitor information - sanitize names by replacing hyphens with underscores |
|||
set monitors (xrandr --query | grep " connected" | awk '{print $1}' | string replace -a '-' '_') |
|||
set geometries (xrandr --query | grep -A1 " connected" | grep -v " connected" | awk '{print $1}') |
|||
|
|||
# Verify we found monitors |
|||
if test (count $monitors) -eq 0 |
|||
echo "Error: No monitors detected!" |
|||
exit 1 |
|||
end |
|||
|
|||
# Create monitor geometry mapping |
|||
set -g monitor_geometries |
|||
for i in (seq (count $monitors)) |
|||
set monitor $monitors[$i] |
|||
set geo $geometries[$i] |
|||
if test -z "$geo" |
|||
echo "Warning: Could not get geometry for monitor $monitor, using default 1920x1080" |
|||
set geo "1920x1080" |
|||
end |
|||
set monitor_geometries $monitor_geometries "$monitor:$geo" |
|||
end |
|||
|
|||
while true |
|||
# Use only the first monitor's geometry |
|||
set entry $monitor_geometries[1] |
|||
set monitor (echo $entry | cut -d':' -f1) |
|||
set geo (echo $entry | cut -d':' -f2) |
|||
set width (echo $geo | cut -d'x' -f1) |
|||
set height (echo $geo | cut -d'x' -f2) |
|||
|
|||
# Select and process image |
|||
set image (fdfind -e jpg -e jpeg -e png -e webp . $WALLPAPER_DIR | shuf -n 1) |
|||
if test -n "$image" |
|||
echo "Found image: $image" |
|||
|
|||
# Get image dimensions |
|||
set img_info (identify -format "%wx%h" "$image") |
|||
set img_width (echo $img_info | cut -d'x' -f1) |
|||
set img_height (echo $img_info | cut -d'x' -f2) |
|||
|
|||
# Process image based on orientation |
|||
if test $img_height -gt $img_width |
|||
# Vertical image - fit to height with black background |
|||
convert "$image" \ |
|||
-resize x{$height}^ \ |
|||
-gravity center \ |
|||
-background black \ |
|||
-extent {$width}x{$height} \ |
|||
-blur $BLUR_AMOUNT \ |
|||
"/tmp/screensaver-$monitor.png" |
|||
else |
|||
# Horizontal image - fit to width |
|||
convert "$image" \ |
|||
-resize {$width}x^ \ |
|||
-gravity center \ |
|||
-extent {$width}x{$height} \ |
|||
-blur $BLUR_AMOUNT \ |
|||
"/tmp/screensaver-$monitor.png" |
|||
end |
|||
|
|||
# Display image on single monitor |
|||
feh --no-fehbg --hide-pointer --fullscreen --title 'screensaver' "/tmp/screensaver-$monitor.png" & |
|||
set feh_pid $last_pid |
|||
|
|||
# Wait for cycle time |
|||
sleep $CYCLE_TIME |
|||
|
|||
# Kill feh process |
|||
kill $feh_pid 2>/dev/null |
|||
else |
|||
echo "Error: No images found in $WALLPAPER_DIR" |
|||
exit 1 |
|||
end |
|||
end |
@ -0,0 +1,36 @@ |
|||
#!/usr/bin/env python |
|||
|
|||
import requests |
|||
|
|||
def get_tier_value(num): |
|||
url = f"https://www.glhfers.com/api/rom-metadata/{num}" |
|||
try: |
|||
response = requests.get(url) |
|||
response.raise_for_status() # Raise an error for bad status codes |
|||
data = response.json() |
|||
|
|||
# Find the Tier trait value |
|||
for attribute in data.get("attributes", []): |
|||
if attribute.get("trait_type") == "Tier": |
|||
return attribute.get("value") |
|||
# value = attribute.get("value") |
|||
|
|||
return "Tier not found" |
|||
except requests.exceptions.RequestException as e: |
|||
return f"Error fetching data: {e}" |
|||
|
|||
def main(): |
|||
while True: |
|||
try: |
|||
num = input("Enter a number: ") |
|||
if num.lower() == 'exit': |
|||
break |
|||
|
|||
num = int(num) # Convert input to integer |
|||
tier_value = get_tier_value(num) |
|||
print(f"{tier_value}") |
|||
except ValueError: |
|||
print("Invalid input. Please enter a number or 'exit' to quit.") |
|||
|
|||
if __name__ == "__main__": |
|||
main() |
@ -0,0 +1,34 @@ |
|||
#!/usr/bin/python |
|||
|
|||
import dbus |
|||
import os |
|||
import sys |
|||
|
|||
|
|||
try: |
|||
bus = dbus.SessionBus() |
|||
spotify = bus.get_object("org.mpris.MediaPlayer2.spotify", "/org/mpris/MediaPlayer2") |
|||
|
|||
|
|||
if os.environ.get('BLOCK_BUTTON'): |
|||
control_iface = dbus.Interface(spotify, 'org.mpris.MediaPlayer2.Player') |
|||
if (os.environ['BLOCK_BUTTON'] == '1'): |
|||
control_iface.Previous() |
|||
elif (os.environ['BLOCK_BUTTON'] == '2'): |
|||
control_iface.PlayPause() |
|||
elif (os.environ['BLOCK_BUTTON'] == '3'): |
|||
control_iface.Next() |
|||
|
|||
spotify_iface = dbus.Interface(spotify, 'org.freedesktop.DBus.Properties') |
|||
props = spotify_iface.Get('org.mpris.MediaPlayer2.Player', 'Metadata') |
|||
|
|||
if (sys.version_info > (3, 0)): |
|||
print(str(props['xesam:artist'][0]) + " - " + str(props['xesam:title'])) |
|||
else: |
|||
print(props['xesam:artist'][0] + " - " + props['xesam:title']).encode('utf-8') |
|||
exit |
|||
except dbus.exceptions.DBusException: |
|||
exit |
|||
|
|||
|
|||
|
@ -0,0 +1,16 @@ |
|||
#!/bin/bash |
|||
|
|||
picom & |
|||
pulseaudio --start |
|||
imwheel |
|||
xmodmap ~/.Xmodmap |
|||
|
|||
redshift -O 3000 |
|||
xset r rate $XSET_DELAY $XSET_RATE |
|||
/usr/lib/notification-daemon-1.0/notification-daemon & |
|||
picom & |
|||
imwheel & |
|||
numlockx on & |
|||
start-pulseaudio-x11 & |
|||
|
|||
wal -i $(/home/kevin/scripts/shuffler "$HOME/Pictures/Backgrounds/dim/editing") & |
2438
txt/ubuntu/apt-packages.txt
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,5 @@ |
|||
/home/kevin/.local/share/fnm/node-versions/v23.6.0/installation/lib |
|||
├── corepack@0.30.0 |
|||
├── node-gyp@11.0.0 |
|||
└── npm@10.9.2 |
|||
|
@ -0,0 +1,92 @@ |
|||
argcomplete==3.1.4 |
|||
attrs==23.2.0 |
|||
Babel==2.10.3 |
|||
bcc==0.29.1 |
|||
bcrypt==3.2.2 |
|||
blinker==1.7.0 |
|||
Brlapi==0.8.5 |
|||
certifi==2023.11.17 |
|||
chardet==5.2.0 |
|||
click==8.1.6 |
|||
cloud-init==24.4 |
|||
colorama==0.4.6 |
|||
command-not-found==0.3 |
|||
configobj==5.0.8 |
|||
cryptography==41.0.7 |
|||
cupshelpers==1.0 |
|||
dbus-python==1.3.2 |
|||
defer==1.0.6 |
|||
distro==1.9.0 |
|||
distro-info==1.7+build1 |
|||
docopt==0.6.2 |
|||
duplicity==2.1.4 |
|||
fasteners==0.18 |
|||
greenlet==3.0.3 |
|||
gyp==0.1 |
|||
httplib2==0.20.4 |
|||
idna==3.6 |
|||
iotop==0.6 |
|||
Jinja2==3.1.2 |
|||
jsonpatch==1.32 |
|||
jsonpointer==2.0 |
|||
jsonschema==4.10.3 |
|||
language-selector==0.1 |
|||
launchpadlib==1.11.0 |
|||
lazr.restfulclient==0.14.6 |
|||
lazr.uri==1.0.6 |
|||
louis==3.29.0 |
|||
Mako==1.3.2.dev0 |
|||
markdown-it-py==3.0.0 |
|||
MarkupSafe==2.1.5 |
|||
mdurl==0.1.2 |
|||
monotonic==1.6 |
|||
msgpack==1.0.3 |
|||
netaddr==0.8.0 |
|||
netifaces==0.11.0 |
|||
oauthlib==3.2.2 |
|||
olefile==0.46 |
|||
packaging==24.0 |
|||
paramiko==2.12.0 |
|||
pexpect==4.9.0 |
|||
pillow==10.2.0 |
|||
pipx==1.4.3 |
|||
platformdirs==4.2.0 |
|||
psutil==5.9.8 |
|||
ptyprocess==0.7.0 |
|||
pycairo==1.25.1 |
|||
pycups==2.0.1 |
|||
Pygments==2.17.2 |
|||
PyGObject==3.48.2 |
|||
PyJWT==2.7.0 |
|||
PyNaCl==1.5.0 |
|||
pynvim==0.5.0 |
|||
pyparsing==3.1.1 |
|||
pyrsistent==0.20.0 |
|||
pyserial==3.5 |
|||
python-apt==2.7.7+ubuntu3 |
|||
python-dateutil==2.8.2 |
|||
python-debian==0.1.49+ubuntu2 |
|||
python-xlib==0.33 |
|||
pytz==2024.1 |
|||
pyxdg==0.28 |
|||
PyYAML==6.0.1 |
|||
ranger-fm==1.9.3 |
|||
requests==2.31.0 |
|||
rich==13.7.1 |
|||
screen-resolution-extra==0.0.0 |
|||
setuptools==68.1.2 |
|||
six==1.16.0 |
|||
systemd-python==235 |
|||
typing_extensions==4.10.0 |
|||
ubuntu-drivers-common==0.0.0 |
|||
ubuntu-pro-client==8001 |
|||
ueberzug==18.2.2 |
|||
ufw==0.36.2 |
|||
unattended-upgrades==0.1 |
|||
urllib3==2.0.7 |
|||
usb-creator==0.3.16 |
|||
userpath==1.9.1 |
|||
wadllib==1.3.6 |
|||
wheel==0.42.0 |
|||
xdg==5 |
|||
xkit==0.0.0 |
@ -0,0 +1,24 @@ |
|||
Name Version Rev Tracking Publisher Notes |
|||
bare 1.0 5 latest/stable canonical** base |
|||
core 16-2.61.4-20240607 17200 latest/stable canonical** core |
|||
core18 20240920 2846 latest/stable canonical** base |
|||
core20 20240911 2434 latest/stable canonical** base |
|||
core22 20241119 1722 latest/stable canonical** base |
|||
core24 20241119 716 latest/stable canonical** base |
|||
discord 0.0.80 222 latest/stable snapcrafters* - |
|||
firefox 129.0.2-1 4793 latest/stable/… mozilla** - |
|||
firmware-updater 0+git.7983059 147 1/stable/… canonical** - |
|||
gimp 2.10.38 484 latest/stable snapcrafters* - |
|||
gnome-3-38-2004 0+git.efb213a 143 latest/stable canonical** - |
|||
gnome-42-2204 0+git.510a601 176 latest/stable/… canonical** - |
|||
gnome-46-2404 0+git.7d0cf36 77 latest/stable canonical** - |
|||
gtk-common-themes 0.1-81-g442e511 1535 latest/stable/… canonical** - |
|||
gtk2-common-themes 0.1 13 latest/stable canonical** - |
|||
mesa-2404 24.0.9 143 latest/stable canonical** - |
|||
signal-desktop 7.38.0 745 latest/stable snapcrafters* - |
|||
snap-store 0+git.7a3a49a6 1248 2/stable/… canonical** - |
|||
snapd 2.67 23545 latest/stable canonical** snapd |
|||
snapd-desktop-integration 0.9 253 latest/stable/… canonical** - |
|||
spotify 1.2.52.442.g01893f92 82 latest/stable spotify** - |
|||
thunderbird 128.6.0esr-1 609 latest/stable canonical** - |
|||
tldr 3.3.0 627 latest/stable kbdk - |
Reference in new issue
xxxxxxxxxx