From 5d4a749b7c51649bcd3953cd1686856408d08121 Mon Sep 17 00:00:00 2001 From: davidpkj Date: Sat, 3 Dec 2022 22:26:26 +0100 Subject: Merge in dotfiles --- LICENSE | 13 + Makefile | 7 + README.adoc | 25 + bash/.bash_profile | 6 + bash/.bashrc | 37 + dunst/.config/dunst/dunstrc | 435 +++++++++++ git/.gitconfig | 3 + lf/.config/lf/cleaner | 4 + lf/.config/lf/lfrc | 80 ++ lf/.config/lf/scope | 44 ++ neofetch/.config/neofetch/config.conf | 865 +++++++++++++++++++++ neovim/.config/nvim/init.lua | 17 + neovim/.config/nvim/lua/autocmd.lua | 25 + neovim/.config/nvim/lua/keybinds.lua | 34 + neovim/.config/nvim/lua/plugins.lua | 149 ++++ neovim/.config/nvim/lua/plugins/catppuccin.lua | 22 + neovim/.config/nvim/lua/plugins/cmp.lua | 29 + neovim/.config/nvim/lua/plugins/fidget.lua | 9 + neovim/.config/nvim/lua/plugins/github-theme.lua | 4 + neovim/.config/nvim/lua/plugins/gitsigns.lua | 27 + neovim/.config/nvim/lua/plugins/lsp.lua | 79 ++ neovim/.config/nvim/lua/plugins/lualine.lua | 34 + neovim/.config/nvim/lua/plugins/mason.lua | 10 + neovim/.config/nvim/lua/plugins/pairs.lua | 2 + neovim/.config/nvim/lua/plugins/rust-tools.lua | 24 + neovim/.config/nvim/lua/plugins/telescope.lua | 64 ++ neovim/.config/nvim/lua/plugins/treesitter.lua | 126 +++ neovim/.config/nvim/lua/settings.lua | 53 ++ neovim/.config/nvim/plugin/packer_compiled.lua | 333 ++++++++ qutebrowser/.config/qutebrowser/config.py | 95 +++ qutebrowser/.config/qutebrowser/home.html | 15 + screenshot.png | Bin 0 -> 2469374 bytes scripts/.local/bin/personal/appmenu | 8 + scripts/.local/bin/personal/bar/battery | 27 + scripts/.local/bin/personal/bar/brightness | 67 ++ scripts/.local/bin/personal/bar/datetime | 9 + scripts/.local/bin/personal/bar/getrpm | 3 + scripts/.local/bin/personal/bar/lights | 14 + scripts/.local/bin/personal/bar/load | 4 + scripts/.local/bin/personal/bar/network | 13 + scripts/.local/bin/personal/bar/packages | 9 + scripts/.local/bin/personal/bar/player | 12 + scripts/.local/bin/personal/bar/status | 30 + scripts/.local/bin/personal/bar/temp | 3 + scripts/.local/bin/personal/bar/title | 10 + scripts/.local/bin/personal/bar/updates | 16 + scripts/.local/bin/personal/bar/volume | 10 + scripts/.local/bin/personal/batestimate | 17 + scripts/.local/bin/personal/colorconvert | 28 + scripts/.local/bin/personal/compile | 81 ++ scripts/.local/bin/personal/compresspdf | 9 + scripts/.local/bin/personal/dayprogress | 6 + scripts/.local/bin/personal/dlmusic | 13 + scripts/.local/bin/personal/ed | 27 + scripts/.local/bin/personal/edge2 | 31 + scripts/.local/bin/personal/edgedetect | 31 + scripts/.local/bin/personal/eve | 3 + scripts/.local/bin/personal/extract | 23 + scripts/.local/bin/personal/getibusinput | 11 + scripts/.local/bin/personal/hdmi | 14 + scripts/.local/bin/personal/hdqwallsdownload | 34 + scripts/.local/bin/personal/infoboard | 25 + scripts/.local/bin/personal/kivytest | 30 + scripts/.local/bin/personal/klimperklamper | 129 +++ scripts/.local/bin/personal/launchworkingenv | 5 + scripts/.local/bin/personal/lfub | 24 + scripts/.local/bin/personal/lockscreen | 8 + scripts/.local/bin/personal/mats | 4 + scripts/.local/bin/personal/mountmenu | 28 + scripts/.local/bin/personal/music | 12 + scripts/.local/bin/personal/mute | 31 + scripts/.local/bin/personal/pdfcompress | 4 + scripts/.local/bin/personal/pipes.sh | 385 +++++++++ scripts/.local/bin/personal/powermenu | 28 + scripts/.local/bin/personal/prepare | 9 + scripts/.local/bin/personal/retab | 12 + scripts/.local/bin/personal/rica | 53 ++ scripts/.local/bin/personal/rmbackup | 29 + scripts/.local/bin/personal/rotdir | 12 + scripts/.local/bin/personal/tabmenu | 25 + scripts/.local/bin/personal/tabura | 3 + scripts/.local/bin/personal/trans | 119 +++ scripts/.local/bin/personal/volctl | 22 + scripts/.local/bin/personal/wally | 56 ++ scripts/.local/bin/personal/zeit | 5 + scripts/compile | 64 -- scripts/compresspdf | 5 - scripts/dlmusic | 13 - scripts/getibusinput | 11 - scripts/music | 12 - scripts/mute | 31 - scripts/prepare | 9 - sxhkd/.config/sxhkd/mediarc | 114 +++ sxhkd/.config/sxhkd/sxhkdrc | 151 ++++ .../systemd/user/brightness-persistence.service | 8 + .../brightness-persistence.service | 1 + wal/.config/wal/templates/config.py | 82 ++ wal/.config/wal/templates/zathurarc | 20 + xorg/.Xmodmap | 248 ++++++ xorg/.Xresources | 72 ++ xorg/.config/env | 31 + xorg/.config/mimeapps.list | 16 + xorg/.config/wallpaper | Bin 0 -> 1434794 bytes xorg/.xinitrc | 24 + zathura/.config/zathura/zathurarc | 22 + 105 files changed, 5080 insertions(+), 145 deletions(-) create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.adoc create mode 100644 bash/.bash_profile create mode 100755 bash/.bashrc create mode 100644 dunst/.config/dunst/dunstrc create mode 100644 git/.gitconfig create mode 100755 lf/.config/lf/cleaner create mode 100755 lf/.config/lf/lfrc create mode 100755 lf/.config/lf/scope create mode 100644 neofetch/.config/neofetch/config.conf create mode 100644 neovim/.config/nvim/init.lua create mode 100644 neovim/.config/nvim/lua/autocmd.lua create mode 100644 neovim/.config/nvim/lua/keybinds.lua create mode 100644 neovim/.config/nvim/lua/plugins.lua create mode 100644 neovim/.config/nvim/lua/plugins/catppuccin.lua create mode 100644 neovim/.config/nvim/lua/plugins/cmp.lua create mode 100644 neovim/.config/nvim/lua/plugins/fidget.lua create mode 100644 neovim/.config/nvim/lua/plugins/github-theme.lua create mode 100644 neovim/.config/nvim/lua/plugins/gitsigns.lua create mode 100644 neovim/.config/nvim/lua/plugins/lsp.lua create mode 100644 neovim/.config/nvim/lua/plugins/lualine.lua create mode 100644 neovim/.config/nvim/lua/plugins/mason.lua create mode 100644 neovim/.config/nvim/lua/plugins/pairs.lua create mode 100644 neovim/.config/nvim/lua/plugins/rust-tools.lua create mode 100644 neovim/.config/nvim/lua/plugins/telescope.lua create mode 100644 neovim/.config/nvim/lua/plugins/treesitter.lua create mode 100644 neovim/.config/nvim/lua/settings.lua create mode 100644 neovim/.config/nvim/plugin/packer_compiled.lua create mode 100644 qutebrowser/.config/qutebrowser/config.py create mode 100644 qutebrowser/.config/qutebrowser/home.html create mode 100644 screenshot.png create mode 100755 scripts/.local/bin/personal/appmenu create mode 100755 scripts/.local/bin/personal/bar/battery create mode 100755 scripts/.local/bin/personal/bar/brightness create mode 100755 scripts/.local/bin/personal/bar/datetime create mode 100755 scripts/.local/bin/personal/bar/getrpm create mode 100755 scripts/.local/bin/personal/bar/lights create mode 100755 scripts/.local/bin/personal/bar/load create mode 100755 scripts/.local/bin/personal/bar/network create mode 100755 scripts/.local/bin/personal/bar/packages create mode 100755 scripts/.local/bin/personal/bar/player create mode 100755 scripts/.local/bin/personal/bar/status create mode 100755 scripts/.local/bin/personal/bar/temp create mode 100755 scripts/.local/bin/personal/bar/title create mode 100755 scripts/.local/bin/personal/bar/updates create mode 100755 scripts/.local/bin/personal/bar/volume create mode 100755 scripts/.local/bin/personal/batestimate create mode 100755 scripts/.local/bin/personal/colorconvert create mode 100755 scripts/.local/bin/personal/compile create mode 100755 scripts/.local/bin/personal/compresspdf create mode 100755 scripts/.local/bin/personal/dayprogress create mode 100755 scripts/.local/bin/personal/dlmusic create mode 100755 scripts/.local/bin/personal/ed create mode 100755 scripts/.local/bin/personal/edge2 create mode 100755 scripts/.local/bin/personal/edgedetect create mode 100755 scripts/.local/bin/personal/eve create mode 100755 scripts/.local/bin/personal/extract create mode 100755 scripts/.local/bin/personal/getibusinput create mode 100755 scripts/.local/bin/personal/hdmi create mode 100755 scripts/.local/bin/personal/hdqwallsdownload create mode 100755 scripts/.local/bin/personal/infoboard create mode 100755 scripts/.local/bin/personal/kivytest create mode 100755 scripts/.local/bin/personal/klimperklamper create mode 100755 scripts/.local/bin/personal/launchworkingenv create mode 100755 scripts/.local/bin/personal/lfub create mode 100755 scripts/.local/bin/personal/lockscreen create mode 100755 scripts/.local/bin/personal/mats create mode 100755 scripts/.local/bin/personal/mountmenu create mode 100755 scripts/.local/bin/personal/music create mode 100755 scripts/.local/bin/personal/mute create mode 100755 scripts/.local/bin/personal/pdfcompress create mode 100755 scripts/.local/bin/personal/pipes.sh create mode 100755 scripts/.local/bin/personal/powermenu create mode 100755 scripts/.local/bin/personal/prepare create mode 100755 scripts/.local/bin/personal/retab create mode 100755 scripts/.local/bin/personal/rica create mode 100755 scripts/.local/bin/personal/rmbackup create mode 100755 scripts/.local/bin/personal/rotdir create mode 100755 scripts/.local/bin/personal/tabmenu create mode 100755 scripts/.local/bin/personal/tabura create mode 100755 scripts/.local/bin/personal/trans create mode 100755 scripts/.local/bin/personal/volctl create mode 100755 scripts/.local/bin/personal/wally create mode 100755 scripts/.local/bin/personal/zeit delete mode 100755 scripts/compile delete mode 100755 scripts/compresspdf delete mode 100755 scripts/dlmusic delete mode 100755 scripts/getibusinput delete mode 100755 scripts/music delete mode 100755 scripts/mute delete mode 100755 scripts/prepare create mode 100644 sxhkd/.config/sxhkd/mediarc create mode 100644 sxhkd/.config/sxhkd/sxhkdrc create mode 100644 systemd/.config/systemd/user/brightness-persistence.service create mode 120000 systemd/.config/systemd/user/default.target.wants/brightness-persistence.service create mode 100644 wal/.config/wal/templates/config.py create mode 100644 wal/.config/wal/templates/zathurarc create mode 100644 xorg/.Xmodmap create mode 100644 xorg/.Xresources create mode 100644 xorg/.config/env create mode 100644 xorg/.config/mimeapps.list create mode 100644 xorg/.config/wallpaper create mode 100755 xorg/.xinitrc create mode 100644 zathura/.config/zathura/zathurarc diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5f75680 --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c542619 --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +all: install + +install: + stow -v --target="$(HOME)" --restow */ + +uninstall: + stow -v --target="$(HOME)" --delete */ diff --git a/README.adoc b/README.adoc new file mode 100644 index 0000000..5c29fcc --- /dev/null +++ b/README.adoc @@ -0,0 +1,25 @@ += davipkj's .files + +In this directory you will find my user-specific application configuration files. +I use `make` and `stow` to manage them, meaning the top level directories are where you will find the respective configurations. + +NOTE: Since I have a HiDPI Display, my font size may be a little too big for you. + +image::screenshot.png + +image:https://img.shields.io/badge/license-wtfpl-bf419c?style=flat-square[] +image:https://img.shields.io/badge/price-free-bf419c?style=flat-square[] + +== Requirements + +* I use the *JetBrains Mono font*, which can be downloaded https://github.com/JetBrains/JetBrainsMono[here]. + +== System + +Don- Don't say it- ... I use arch btw! + +* *OS:* https://archlinux.org[Arch Linux] +* *Device:* https://support.apple.com/kb/SP719[MacBook Pro] +* *Window Manager:* https://git.davidpenkowoj.de/dwm.git[dwm] +* *Terminal Emulator:* https://git.davidpenkowoj.de/st.git[st] +* *Browser:* https://www.qutebrowser.org[qutebrowser] diff --git a/bash/.bash_profile b/bash/.bash_profile new file mode 100644 index 0000000..fe4ba32 --- /dev/null +++ b/bash/.bash_profile @@ -0,0 +1,6 @@ +# Startx +if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then + exec startx +fi + +[[ -f ~/.bashrc ]] && . ~/.bashrc diff --git a/bash/.bashrc b/bash/.bashrc new file mode 100755 index 0000000..6fbbaaf --- /dev/null +++ b/bash/.bashrc @@ -0,0 +1,37 @@ +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +# Define function for easy script sourcing +source_if_present () { [ -f "$1" ] && source $1 ; } + +# Load environment variables +source_if_present "$HOME/.config/env" + +# Load wal colors +source_if_present "$HOME/.cache/wal/colors.sh" +# Support TTYs +source_if_present "$HOME/.cache/wal/colors-tty.sh" + +# Load bash completion +source_if_present "/usr/share/bash-completion/bash_completion" + +# Enable tab to cycle-complete +bind '"\t":menu-complete' + +# Set aliases +alias lf='lfub' +alias vim='nvim' +alias ll="ls -lah" +alias tlmgr='tllocalmgr' +alias ls='ls --color=auto' +alias ip='ip --color=auto' +alias grep='grep --color=auto' +alias diff='diff --color=auto' +alias dmenu="dmenu -nb '$color0' -nf '$color15' -sb '$color1' -sf '$color0'" + +# Set prompt +PS1='[ \001\e[0;31m\002\u\001\e[0m\002@\001\e[0;32m\002\h\001\e[0m\002 ] \001\e[0;33m\002\W\001\e[0m\002 \$ ' + +# Enable wal colors +[ -f "$HOME/.cache/wal/sequences" ] && (cat "$HOME/.cache/wal/sequences" &) + diff --git a/dunst/.config/dunst/dunstrc b/dunst/.config/dunst/dunstrc new file mode 100644 index 0000000..1e12f27 --- /dev/null +++ b/dunst/.config/dunst/dunstrc @@ -0,0 +1,435 @@ +# See dunst(5) for all configuration options + +[global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = none + + ### Geometry ### + + # dynamic width from 0 to 300 + # width = (0, 300) + # constant width of 300 + width = 400 + + # The maximum height of a single notification, excluding the frame. + height = 220 + + # Position the notification in the top right corner + origin = bottom-center + + # Offset from the origin + offset = 0x300 + + # Scale factor. It is auto-detected if value is 0. + scale = 0 + + # Maximum number of notification (0 means no limit) + notification_limit = 0 + + ### Progress bar ### + + # Turn on the progess bar. It appears when a progress hint is passed with + # for example dunstify -h int:value:12 + progress_bar = true + + # Set the progress bar height. This includes the frame, so make sure + # it's at least twice as big as the frame width. + progress_bar_height = 10 + + # Set the frame width of the progress bar + progress_bar_frame_width = 1 + + # Set the minimum width for the progress bar + progress_bar_min_width = 150 + + # Set the maximum width for the progress bar + progress_bar_max_width = 300 + + + # Show how many messages are currently hidden (because of + # notification_limit). + indicate_hidden = yes + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). (X11 only) + transparency = 0 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + separator_height = 2 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 8 + + # Padding between text and icon. + text_icon_padding = 0 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 0 + + # Defines color of the frame around the notification window. + frame_color = "#aaaaaa" + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = frame + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # A client can set the 'transient' hint to bypass this. See the rules + # section for how to disable this if necessary + # idle_threshold = 120 + + ### Text ### + + font = Hack 24 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 0 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "%s\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = center + + # Vertical alignment of message text and icon. + # Possible values are "top", "center" and "bottom". + vertical_alignment = center + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Specify where to make an ellipsis in long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Stack together notifications with the same content + stack_duplicates = true + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = true + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Align icons left/right/off + icon_position = off + + # Scale small icons up to this size, set to 0 to disable. Helpful + # for e.g. small files or high-dpi screens. In case of conflict, + # max_icon_size takes precedence over this. + min_icon_size = 0 + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 32 + + # Paths to default icons. + icon_path = /usr/share/icons/Papirus-Dark/16x16/devices/ + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/xdg-open + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = 0 + + # Ignore the dbus closeNotification message. + # Useful to enforce the timeout set by dunst configuration. Without this + # parameter, an application may close the notification sent before the + # user defined timeout. + ignore_dbusclose = false + + ### Wayland ### + # These settings are Wayland-specific. They have no effect when using X11 + + # Uncomment this if you want to let notications appear under fullscreen + # applications (default: overlay) + # layer = top + + # Set this to true to use X11 output on Wayland. + force_xwayland = false + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + + ### mouse + + # Defines list of actions for each mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: Invoke the action determined by the action_name rule. If there is no + # such action, open the context menu. + # * open_url: If the notification has exactly one url, open it. If there are multiple + # ones, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + # * context: Open context menu for the notification. + # * context_all: Open context menu for all notifications. + # These values can be strung together for each mouse event, and + # will be executed in sequence. + mouse_left_click = close_current + mouse_middle_click = do_action, close_current + mouse_right_click = close_all + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behaviour across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + background = "#E6E1DF" + foreground = "#232122" + timeout = 2 + # Icon for notifications with low urgency, uncomment to enable + #default_icon = /path/to/icon + +[urgency_normal] + background = "#232323" + foreground = "#E6E1DF" + timeout = 10 + # Icon for notifications with normal urgency, uncomment to enable + #default_icon = /path/to/icon + +[urgency_critical] + background = "#F30021" + foreground = "#FFFFFF" + timeout = 0 + # Icon for notifications with critical urgency, uncomment to enable + #default_icon = /path/to/icon + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# +# Messages can be matched by +# appname (discouraged, see desktop_entry) +# body +# category +# desktop_entry +# icon +# match_transient +# msg_urgency +# stack_tag +# summary +# +# and you can override the +# background +# foreground +# format +# frame_color +# fullscreen +# new_icon +# set_stack_tag +# set_transient +# set_category +# timeout +# urgency +# skip_display +# history_ignore +# action_name +# word_wrap +# ellipsize +# alignment +# +# Shell-like globbing will get expanded. +# +# Instead of the appname filter, it's recommended to use the desktop_entry filter. +# GLib based applications export their desktop-entry name. In comparison to the appname, +# the desktop-entry won't get localized. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules. + +# Disable the transient hint so that idle_threshold cannot be bypassed from the +# client +#[transient_disable] +# match_transient = yes +# set_transient = no +# +# Make the handling of transient notifications more strict by making them not +# be placed in history. +#[transient_history_ignore] +# match_transient = yes +# history_ignore = yes + +# fullscreen values +# show: show the notifications, regardless if there is a fullscreen window opened +# delay: displays the new notification, if there is no fullscreen window active +# If the notification is already drawn, it won't get undrawn. +# pushback: same as delay, but when switching into fullscreen, the notification will get +# withdrawn from screen again and will get delayed like a new notification +#[fullscreen_delay_everything] +# fullscreen = delay +#[fullscreen_show_critical] +# msg_urgency = critical +# fullscreen = show + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# skip_display = true + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[skip-display] +# # This notification will not be displayed, but will be included in the history +# summary = "foobar" +# skip_display = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +#[stack-volumes] +# appname = "some_volume_notifiers" +# set_stack_tag = "volume" +# +# vim: ft=cfg diff --git a/git/.gitconfig b/git/.gitconfig new file mode 100644 index 0000000..8c81160 --- /dev/null +++ b/git/.gitconfig @@ -0,0 +1,3 @@ +[user] + email = davidpenkow1@gmail.com + name = davidpkj diff --git a/lf/.config/lf/cleaner b/lf/.config/lf/cleaner new file mode 100755 index 0000000..a184d84 --- /dev/null +++ b/lf/.config/lf/cleaner @@ -0,0 +1,4 @@ +#!/bin/sh +if [ -n "$FIFO_UEBERZUG" ]; then + printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG" +fi diff --git a/lf/.config/lf/lfrc b/lf/.config/lf/lfrc new file mode 100755 index 0000000..6380420 --- /dev/null +++ b/lf/.config/lf/lfrc @@ -0,0 +1,80 @@ +# Luke's lf settings + +# Note on Image Previews +# For those wanting image previews, like this system, there are four steps to +# set it up. These are done automatically for LARBS users, but I will state +# them here for others doing it manually. +# +# 1. ueberzug must be installed. +# 2. The scope file (~/.config/lf/scope for me), must have a command similar to +# mine to generate ueberzug images. +# 3. A `set cleaner` line as below is a cleaner script. +# 4. lf should be started through a wrapper script (~/.local/bin/lfub for me) +# that creates the environment for ueberzug. This command can be be aliased +# in your shellrc (`alias lf="lfub") or if set to a binding, should be +# called directly instead of normal lf. + +# Basic vars +set shellopts '-eu' +set ifs "\n" +set scrolloff 10 +set period 1 +set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml" +set cleaner '~/.config/lf/cleaner' +set previewer '~/.config/lf/scope' + +# cmds/functions +cmd createdirectory $mkdir -p "$(echo $* | tr ' ' '\ ')" +cmd createfile $touch "$(echo $* | tr ' ' '\ ')" + +cmd open ${{ + case $(file --mime-type "$(readlink -f $f)" -b) in + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) localc $fx ;; + image/vnd.djvu|application/pdf|application/octet-stream|application/postscript) setsid -f zathura $fx >/dev/null 2>&1 ;; + text/*|application/json|inode/x-empty) $EDITOR $fx;; + image/x-xcf) setsid -f gimp $f >/dev/null 2>&1 ;; + image/svg+xml) display -- $f ;; + image/*) rotdir $f | grep -i "\.\(png\|jpg\|jpeg\|gif\|webp\|tif\|ico\)\(_large\)*$" | + setsid -f sxiv -aio 2>/dev/null | while read -r file; do + [ -z "$file" ] && continue + lf -remote "send select \"$file\"" + lf -remote "send toggle" + done & + ;; + audio/*) mpv --audio-display=no $f ;; + video/*) setsid -f mpv $f -quiet >/dev/null 2>&1 ;; + application/pdf|application/vnd*|application/epub*) setsid -f zathura $fx >/dev/null 2>&1 ;; + application/pgp-encrypted) $EDITOR $fx ;; + *) for f in $fx; do setsid -f $OPENER $f >/dev/null 2>&1; done;; + esac +}} + +cmd extract ${{ + set -f + printf "%s\n\t" "$fx" + printf "extract?[y/N]" + read ans + [ $ans = "y" ] && extract $fx +}} + +cmd delete ${{ + clear; tput cup $(($(tput lines)/3)); tput bold + set -f + printf "%s\n\t" "$fx" + printf "delete?[y/N]" + read ans + [ $ans = "y" ] && rm -rf -- $fx +}} + +cmd setbg ${{ + wally "$fx" > /dev/null +}} + +# Bindings +map D delete +map E extract +map . set hidden! +map b setbg +map M push :createdirectory +map T push :createfile +map Y copy diff --git a/lf/.config/lf/scope b/lf/.config/lf/scope new file mode 100755 index 0000000..618bde3 --- /dev/null +++ b/lf/.config/lf/scope @@ -0,0 +1,44 @@ +#!/bin/sh + +# File preview handler for lf. + +set -C -f +IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" + +image() { + if [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1; then + printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG" + else + mediainfo "$1" + fi +} + +ifub() { + [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1 +} + +# Note that the cache file name is a function of file information, meaning if +# an image appears in multiple places across the machine, it will not have to +# be regenerated once seen. + +case "$(file --dereference --brief --mime-type -- "$1")" in + image/*) image "$1" "$2" "$3" "$4" "$5" ;; + text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;; + text/troff) man ./ "$1" | col -b ;; + text/* | */xml | application/json) bat -p --theme base16 --terminal-width "$4" -f "$1" ;; + application/zip) atool --list -- "$1" ;; + audio/* | application/octet-stream) mediainfo "$1" || exit 1;; + video/* ) + CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}')" + [ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0 + image "$CACHE" "$2" "$3" "$4" "$5" + ;; + */pdf) + CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}')" + [ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" + image "$CACHE.jpg" "$2" "$3" "$4" "$5" + ;; + *opendocument*) odt2txt "$1" ;; + application/pgp-encrypted) gpg -d -- "$1" ;; +esac +exit 1 diff --git a/neofetch/.config/neofetch/config.conf b/neofetch/.config/neofetch/config.conf new file mode 100644 index 0000000..0a1931d --- /dev/null +++ b/neofetch/.config/neofetch/config.conf @@ -0,0 +1,865 @@ +# See this wiki page for more info: +# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info +print_info() { + info title + info underline + + info "OS" distro + info "Kernel" kernel + info "Host" model + #info "Shell" shell + info "Packages" packages + info "Resolution" resolution + info "DE" de + info "WM" wm + info "Uptime" uptime + #info "WM Theme" wm_theme + #info "Theme" theme + #info "Icons" icons + info "Terminal" term + info "Terminal Font" term_font + info "Memory" memory + info "CPU" cpu + info "GPU" gpu + + # info "GPU Driver" gpu_driver # Linux/macOS only + # info "CPU Usage" cpu_usage + # info "Disk" disk + # info "Battery" battery + # info "Font" font + # info "Song" song + # [[ "$player" ]] && prin "Music Player" "$player" + # info "Local IP" local_ip + # info "Public IP" public_ip + # info "Users" users + # info "Locale" locale # This only works on glibc systems. + + info cols +} + +# Title + + +# Hide/Show Fully qualified domain name. +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --title_fqdn +title_fqdn="off" + + +# Kernel + + +# Shorten the output of the kernel function. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --kernel_shorthand +# Supports: Everything except *BSDs (except PacBSD and PC-BSD) +# +# Example: +# on: '4.8.9-1-ARCH' +# off: 'Linux 4.8.9-1-ARCH' +kernel_shorthand="on" + + +# Distro + + +# Shorten the output of the distro function +# +# Default: 'off' +# Values: 'on', 'tiny', 'off' +# Flag: --distro_shorthand +# Supports: Everything except Windows and Haiku +distro_shorthand="off" + +# Show/Hide OS Architecture. +# Show 'x86_64', 'x86' and etc in 'Distro:' output. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --os_arch +# +# Example: +# on: 'Arch Linux x86_64' +# off: 'Arch Linux' +os_arch="on" + + +# Uptime + + +# Shorten the output of the uptime function +# +# Default: 'on' +# Values: 'on', 'tiny', 'off' +# Flag: --uptime_shorthand +# +# Example: +# on: '2 days, 10 hours, 3 mins' +# tiny: '2d 10h 3m' +# off: '2 days, 10 hours, 3 minutes' +uptime_shorthand="on" + + +# Memory + + +# Show memory pecentage in output. +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --memory_percent +# +# Example: +# on: '1801MiB / 7881MiB (22%)' +# off: '1801MiB / 7881MiB' +memory_percent="off" + +# Change memory output unit. +# +# Default: 'mib' +# Values: 'kib', 'mib', 'gib' +# Flag: --memory_unit +# +# Example: +# kib '1020928KiB / 7117824KiB' +# mib '1042MiB / 6951MiB' +# gib: ' 0.98GiB / 6.79GiB' +memory_unit="mib" + + +# Packages + + +# Show/Hide Package Manager names. +# +# Default: 'tiny' +# Values: 'on', 'tiny' 'off' +# Flag: --package_managers +# +# Example: +# on: '998 (pacman), 8 (flatpak), 4 (snap)' +# tiny: '908 (pacman, flatpak, snap)' +# off: '908' +package_managers="on" + + +# Shell + + +# Show the path to $SHELL +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --shell_path +# +# Example: +# on: '/bin/bash' +# off: 'bash' +shell_path="off" + +# Show $SHELL version +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --shell_version +# +# Example: +# on: 'bash 4.4.5' +# off: 'bash' +shell_version="on" + + +# CPU + + +# CPU speed type +# +# Default: 'bios_limit' +# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'. +# Flag: --speed_type +# Supports: Linux with 'cpufreq' +# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value. +speed_type="bios_limit" + +# CPU speed shorthand +# +# Default: 'off' +# Values: 'on', 'off'. +# Flag: --speed_shorthand +# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz +# +# Example: +# on: 'i7-6500U (4) @ 3.1GHz' +# off: 'i7-6500U (4) @ 3.100GHz' +speed_shorthand="off" + +# Enable/Disable CPU brand in output. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --cpu_brand +# +# Example: +# on: 'Intel i7-6500U' +# off: 'i7-6500U (4)' +cpu_brand="on" + +# CPU Speed +# Hide/Show CPU speed. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --cpu_speed +# +# Example: +# on: 'Intel i7-6500U (4) @ 3.1GHz' +# off: 'Intel i7-6500U (4)' +cpu_speed="on" + +# CPU Cores +# Display CPU cores in output +# +# Default: 'logical' +# Values: 'logical', 'physical', 'off' +# Flag: --cpu_cores +# Support: 'physical' doesn't work on BSD. +# +# Example: +# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores) +# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores) +# off: 'Intel i7-6500U @ 3.1GHz' +cpu_cores="logical" + +# CPU Temperature +# Hide/Show CPU temperature. +# Note the temperature is added to the regular CPU function. +# +# Default: 'off' +# Values: 'C', 'F', 'off' +# Flag: --cpu_temp +# Supports: Linux, BSD +# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable +# coretemp kernel module. This only supports newer Intel processors. +# +# Example: +# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]' +# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]' +# off: 'Intel i7-6500U (4) @ 3.1GHz' +cpu_temp="off" + + +# GPU + + +# Enable/Disable GPU Brand +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --gpu_brand +# +# Example: +# on: 'AMD HD 7950' +# off: 'HD 7950' +gpu_brand="on" + +# Which GPU to display +# +# Default: 'all' +# Values: 'all', 'dedicated', 'integrated' +# Flag: --gpu_type +# Supports: Linux +# +# Example: +# all: +# GPU1: AMD HD 7950 +# GPU2: Intel Integrated Graphics +# +# dedicated: +# GPU1: AMD HD 7950 +# +# integrated: +# GPU1: Intel Integrated Graphics +gpu_type="all" + + +# Resolution + + +# Display refresh rate next to each monitor +# Default: 'off' +# Values: 'on', 'off' +# Flag: --refresh_rate +# Supports: Doesn't work on Windows. +# +# Example: +# on: '1920x1080 @ 60Hz' +# off: '1920x1080' +refresh_rate="off" + + +# Gtk Theme / Icons / Font + + +# Shorten output of GTK Theme / Icons / Font +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --gtk_shorthand +# +# Example: +# on: 'Numix, Adwaita' +# off: 'Numix [GTK2], Adwaita [GTK3]' +gtk_shorthand="off" + + +# Enable/Disable gtk2 Theme / Icons / Font +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --gtk2 +# +# Example: +# on: 'Numix [GTK2], Adwaita [GTK3]' +# off: 'Adwaita [GTK3]' +gtk2="on" + +# Enable/Disable gtk3 Theme / Icons / Font +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --gtk3 +# +# Example: +# on: 'Numix [GTK2], Adwaita [GTK3]' +# off: 'Numix [GTK2]' +gtk3="on" + + +# IP Address + + +# Website to ping for the public IP +# +# Default: 'http://ident.me' +# Values: 'url' +# Flag: --ip_host +public_ip_host="http://ident.me" + +# Public IP timeout. +# +# Default: '2' +# Values: 'int' +# Flag: --ip_timeout +public_ip_timeout=2 + + +# Desktop Environment + + +# Show Desktop Environment version +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --de_version +de_version="on" + + +# Disk + + +# Which disks to display. +# The values can be any /dev/sdXX, mount point or directory. +# NOTE: By default we only show the disk info for '/'. +# +# Default: '/' +# Values: '/', '/dev/sdXX', '/path/to/drive'. +# Flag: --disk_show +# +# Example: +# disk_show=('/' '/dev/sdb1'): +# 'Disk (/): 74G / 118G (66%)' +# 'Disk (/mnt/Videos): 823G / 893G (93%)' +# +# disk_show=('/'): +# 'Disk (/): 74G / 118G (66%)' +# +disk_show=('/') + +# Disk subtitle. +# What to append to the Disk subtitle. +# +# Default: 'mount' +# Values: 'mount', 'name', 'dir', 'none' +# Flag: --disk_subtitle +# +# Example: +# name: 'Disk (/dev/sda1): 74G / 118G (66%)' +# 'Disk (/dev/sdb2): 74G / 118G (66%)' +# +# mount: 'Disk (/): 74G / 118G (66%)' +# 'Disk (/mnt/Local Disk): 74G / 118G (66%)' +# 'Disk (/mnt/Videos): 74G / 118G (66%)' +# +# dir: 'Disk (/): 74G / 118G (66%)' +# 'Disk (Local Disk): 74G / 118G (66%)' +# 'Disk (Videos): 74G / 118G (66%)' +# +# none: 'Disk: 74G / 118G (66%)' +# 'Disk: 74G / 118G (66%)' +# 'Disk: 74G / 118G (66%)' +disk_subtitle="mount" + +# Disk percent. +# Show/Hide disk percent. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --disk_percent +# +# Example: +# on: 'Disk (/): 74G / 118G (66%)' +# off: 'Disk (/): 74G / 118G' +disk_percent="on" + + +# Song + + +# Manually specify a music player. +# +# Default: 'auto' +# Values: 'auto', 'player-name' +# Flag: --music_player +# +# Available values for 'player-name': +# +# amarok +# audacious +# banshee +# bluemindo +# clementine +# cmus +# deadbeef +# deepin-music +# dragon +# elisa +# exaile +# gnome-music +# gmusicbrowser +# gogglesmm +# guayadeque +# io.elementary.music +# iTunes +# juk +# lollypop +# mocp +# mopidy +# mpd +# muine +# netease-cloud-music +# olivia +# playerctl +# pogo +# pragha +# qmmp +# quodlibet +# rhythmbox +# sayonara +# smplayer +# spotify +# strawberry +# tauonmb +# tomahawk +# vlc +# xmms2d +# xnoise +# yarock +music_player="auto" + +# Format to display song information. +# +# Default: '%artist% - %album% - %title%' +# Values: '%artist%', '%album%', '%title%' +# Flag: --song_format +# +# Example: +# default: 'Song: Jet - Get Born - Sgt Major' +song_format="%artist% - %album% - %title%" + +# Print the Artist, Album and Title on separate lines +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --song_shorthand +# +# Example: +# on: 'Artist: The Fratellis' +# 'Album: Costello Music' +# 'Song: Chelsea Dagger' +# +# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger' +song_shorthand="off" + +# 'mpc' arguments (specify a host, password etc). +# +# Default: '' +# Example: mpc_args=(-h HOST -P PASSWORD) +mpc_args=() + + +# Text Colors + + +# Text Colors +# +# Default: 'distro' +# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' +# Flag: --colors +# +# Each number represents a different part of the text in +# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info' +# +# Example: +# colors=(distro) - Text is colored based on Distro colors. +# colors=(4 6 1 8 8 6) - Text is colored in the order above. +colors=(distro) + + +# Text Options + + +# Toggle bold text +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --bold +bold="on" + +# Enable/Disable Underline +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --underline +underline_enabled="on" + +# Underline character +# +# Default: '-' +# Values: 'string' +# Flag: --underline_char +underline_char="—" + + +# Info Separator +# Replace the default separator with the specified string. +# +# Default: ':' +# Flag: --separator +# +# Example: +# separator="->": 'Shell-> bash' +# separator=" =": 'WM = dwm' +separator=" " + + +# Color Blocks + + +# Color block range +# The range of colors to print. +# +# Default: '0', '15' +# Values: 'num' +# Flag: --block_range +# +# Example: +# +# Display colors 0-7 in the blocks. (8 colors) +# neofetch --block_range 0 7 +# +# Display colors 0-15 in the blocks. (16 colors) +# neofetch --block_range 0 15 +block_range=(0 15) + +# Toggle color blocks +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --color_blocks +color_blocks="on" + +# Color block width in spaces +# +# Default: '3' +# Values: 'num' +# Flag: --block_width +block_width=3 + +# Color block height in lines +# +# Default: '1' +# Values: 'num' +# Flag: --block_height +block_height=1 + +# Color Alignment +# +# Default: 'auto' +# Values: 'auto', 'num' +# Flag: --col_offset +# +# Number specifies how far from the left side of the terminal (in spaces) to +# begin printing the columns, in case you want to e.g. center them under your +# text. +# Example: +# col_offset="auto" - Default behavior of neofetch +# col_offset=7 - Leave 7 spaces then print the colors +col_offset="auto" + +# Progress Bars + + +# Bar characters +# +# Default: '-', '=' +# Values: 'string', 'string' +# Flag: --bar_char +# +# Example: +# neofetch --bar_char 'elapsed' 'total' +# neofetch --bar_char '-' '=' +bar_char_elapsed="-" +bar_char_total="=" + +# Toggle Bar border +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --bar_border +bar_border="on" + +# Progress bar length in spaces +# Number of chars long to make the progress bars. +# +# Default: '15' +# Values: 'num' +# Flag: --bar_length +bar_length=15 + +# Progress bar colors +# When set to distro, uses your distro's logo colors. +# +# Default: 'distro', 'distro' +# Values: 'distro', 'num' +# Flag: --bar_colors +# +# Example: +# neofetch --bar_colors 3 4 +# neofetch --bar_colors distro 5 +bar_color_elapsed="distro" +bar_color_total="distro" + + +# Info display +# Display a bar with the info. +# +# Default: 'off' +# Values: 'bar', 'infobar', 'barinfo', 'off' +# Flags: --cpu_display +# --memory_display +# --battery_display +# --disk_display +# +# Example: +# bar: '[---=======]' +# infobar: 'info [---=======]' +# barinfo: '[---=======] info' +# off: 'info' +cpu_display="off" +memory_display="off" +battery_display="off" +disk_display="off" + + +# Backend Settings + + +# Image backend. +# +# Default: 'ascii' +# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off', +# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty' +# Flag: --backend +image_backend="ascii" + +# Image Source +# +# Which image or ascii file to display. +# +# Default: 'auto' +# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/' +# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")' +# Flag: --source +# +# NOTE: 'auto' will pick the best image source for whatever image backend is used. +# In ascii mode, distro ascii art will be used and in an image mode, your +# wallpaper will be used. +#image_source="/home/me/.config/neo.png" +image_source="ascii" + + +# Ascii Options + + +# Ascii distro +# Which distro's ascii art to display. +# +# Default: 'auto' +# Values: 'auto', 'distro_name' +# Flag: --ascii_distro +# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS", +# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs, +# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock, +# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD, +# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS, +# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, +# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin, +# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary, +# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD, +# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo, +# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, +# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, +# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite, +# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, +# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib, +# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner, +# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba, +# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD, +# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint, +# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix, +# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, +# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, +# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, +# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, +# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, +# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio, +# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin, +# and IRIX have ascii logos +# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants. +# Use '{distro name}_old' to use the old logos. +# NOTE: Ubuntu has flavor variants. +# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME, +# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors. +# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu, +# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android, +# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola, +# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS, +# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian, +# postmarketOS, and Void have a smaller logo variant. +# Use '{distro name}_small' to use the small variants. +ascii_distro="auto" + +# Ascii Colors +# +# Default: 'distro' +# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' +# Flag: --ascii_colors +# +# Example: +# ascii_colors=(distro) - Ascii is colored based on Distro colors. +# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors. +ascii_colors=(distro) + +# Bold ascii logo +# Whether or not to bold the ascii logo. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --ascii_bold +ascii_bold="on" + + +# Image Options + + +# Image loop +# Setting this to on will make neofetch redraw the image constantly until +# Ctrl+C is pressed. This fixes display issues in some terminal emulators. +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --loop +image_loop="off" + +# Thumbnail directory +# +# Default: '~/.cache/thumbnails/neofetch' +# Values: 'dir' +thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch" + +# Crop mode +# +# Default: 'normal' +# Values: 'normal', 'fit', 'fill' +# Flag: --crop_mode +# +# See this wiki page to learn about the fit and fill options. +# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F +crop_mode="normal" + +# Crop offset +# Note: Only affects 'normal' crop mode. +# +# Default: 'center' +# Values: 'northwest', 'north', 'northeast', 'west', 'center' +# 'east', 'southwest', 'south', 'southeast' +# Flag: --crop_offset +crop_offset="center" + +# Image size +# The image is half the terminal width by default. +# +# Default: 'auto' +# Values: 'auto', '00px', '00%', 'none' +# Flags: --image_size +# --size +image_size="500px" + +# Gap between image and text +# +# Default: '3' +# Values: 'num', '-num' +# Flag: --gap +gap=3 + +# Image offsets +# Only works with the w3m backend. +# +# Default: '0' +# Values: 'px' +# Flags: --xoffset +# --yoffset +yoffset=0 +xoffset=0 + +# Image background color +# Only works with the w3m backend. +# +# Default: '' +# Values: 'color', 'blue' +# Flag: --bg_color +background_color= + + +# Misc Options + +# Stdout mode +# Turn off all colors and disables image backend (ASCII/Image). +# Useful for piping into another command. +# Default: 'off' +# Values: 'on', 'off' +stdout="off" diff --git a/neovim/.config/nvim/init.lua b/neovim/.config/nvim/init.lua new file mode 100644 index 0000000..ccad37a --- /dev/null +++ b/neovim/.config/nvim/init.lua @@ -0,0 +1,17 @@ +require("settings") +require("keybinds") +require("autocmd") +require("plugins") + +-- https://sharksforarms.dev/posts/neovim-rust/ +-- https://ka.codes/posts/nvim-lspinstall +-- https://rsdlt.github.io/posts/rust-nvim-ide-guide-walkthrough-development-debug/#why-neovim-for-rust-development + +-- 1. italic error signs -> probably st + +-- Pretty print lua table +function _G.dump(...) + local objects = vim.tbl_map(vim.inspect, { ... }) + print(unpack(objects)) +end + diff --git a/neovim/.config/nvim/lua/autocmd.lua b/neovim/.config/nvim/lua/autocmd.lua new file mode 100644 index 0000000..603e6b4 --- /dev/null +++ b/neovim/.config/nvim/lua/autocmd.lua @@ -0,0 +1,25 @@ +-- Custom filetypes +vim.filetype.add({ + extension = { + conf = "conf", + nd = "markdown", + }, + pattern = { + [".*%.env.*"] = "sh", + ["ignore$"] = "conf", + }, +}) + +local cmd = vim.api.nvim_create_autocmd + +-- Go to last location when opening buffer +cmd("BufReadPost", { + command = [[ if line("'\"") > 1 && line("'\"") <= line("$") | execute "normal! g`\"" | endif ]] +}) + +-- Highlight the region on yank +cmd("TextYankPost", { + group = vim.api.nvim_create_augroup("TextYankGroup", { clear = true }), + callback = function() vim.highlight.on_yank({ higroup = "Visual" }) end, +}) + diff --git a/neovim/.config/nvim/lua/keybinds.lua b/neovim/.config/nvim/lua/keybinds.lua new file mode 100644 index 0000000..56834b2 --- /dev/null +++ b/neovim/.config/nvim/lua/keybinds.lua @@ -0,0 +1,34 @@ +map = function(m, k, v) + vim.keymap.set(m, k, v, { silent = true }) +end + +-- Fix * (Keep the cursor position, don't move to next match) +map("n", "*", "*N") + +-- Fix n and N. Keeping cursor in center +map("n", "n", "nzz") +map("n", "N", "Nzz") + +-- Move line up and down in NORMAL and VISUAL modes +map("n", "", "move .+1") +map("n", "", "move .-2") +map("x", "", ":move '>+1gv=gv") +map("x", "", ":move '<-2gv=gv") + +-- map("n", "", ":Files") +map("n", "", ":!compile %") + +-- Mimic shell movements +-- map("i", "", "A") +-- map("i", "", "I") + +-- Move to the next/previous buffer +-- map("n", "[", "bp") +-- map("n", "]", "bn") + +-- Move to last buffer +-- map("n", """", "b#") + +exp = {} +exp.map = map + diff --git a/neovim/.config/nvim/lua/plugins.lua b/neovim/.config/nvim/lua/plugins.lua new file mode 100644 index 0000000..5b28fbb --- /dev/null +++ b/neovim/.config/nvim/lua/plugins.lua @@ -0,0 +1,149 @@ +-- Automatically run :PackerCompile whenever plugins.lua is updated with an autocommand: +vim.api.nvim_create_autocmd("BufWritePost", { + group = vim.api.nvim_create_augroup("PACKER", { clear = true }), + pattern = "plugins.lua", + command = "source | PackerCompile", +}) + +return require("packer").startup(function(use) + use("wbthomason/packer.nvim") + use("nvim-lua/plenary.nvim") + + -- Color theme + use({ + "catppuccin/nvim", + as = "catppuccin-theme", + run = ":CatppuccinCompile", + config = function() require("plugins.catppuccin") end, + }) + + --[[ use({ + "projekt0n/github-nvim-theme", + config = function() require("plugins.github-theme") end, + }) ]] + + -- Status line + use({ + { + "nvim-lualine/lualine.nvim", + event = "BufEnter", + config = function() require("plugins.lualine") end, + }, + { + "j-hui/fidget.nvim", + after = "lualine.nvim", + config = function() require("plugins.fidget") end, + }, + }) + + -- Better syntax highlighting + use({ + { + "nvim-treesitter/nvim-treesitter", + event = "BufEnter", + config = function() require("plugins.treesitter") end, + }, + { + "nvim-treesitter/playground", + after = "nvim-treesitter" + }, + { + "nvim-treesitter/nvim-treesitter-refactor", + after = "nvim-treesitter" + }, + { + "nvim-treesitter/nvim-treesitter-textobjects", + after = "nvim-treesitter" + }, + }) + + -- Git features + use({ + "lewis6991/gitsigns.nvim", + event = "BufEnter", + config = function() require("plugins.gitsigns") end, + }) + + -- Automatic bracket pars + use({ + "windwp/nvim-autopairs", + event = "InsertCharPre", + after = "nvim-cmp", + config = function() require("plugins.pairs") end, + }) + + -- Comment utility + use({ + "numToStr/Comment.nvim", + event = "BufEnter", + config = function() require("Comment").setup() end, + }) + + -- Fuzzy file picker + use({ + { + "nvim-telescope/telescope.nvim", + config = function() require("plugins.telescope") end, + }, + { + "nvim-telescope/telescope-fzf-native.nvim", + run = "make", + after = "telescope.nvim", + config = function() require("telescope").load_extension("fzf") end, + }, + }) + + -- Language Server Protocol + use({ + { + "neovim/nvim-lspconfig", + -- event = "BufEnter", + config = function() require("plugins.lsp") end, + }, + { + "williamboman/mason-lspconfig.nvim", + after = "nvim-lspconfig", + }, + { + "williamboman/mason.nvim", + after = "mason-lspconfig.nvim", + config = function() require("plugins.mason") end, + }, + }) + + -- Completion framework + use({ + { + "hrsh7th/nvim-cmp", + -- after = "nvim-lspconfig", + -- event = "BufEnter", + config = function() require("plugins.cmp") end, + }, + { + "hrsh7th/cmp-nvim-lsp", + after = "nvim-cmp", + }, + { + "hrsh7th/cmp-vsnip", + after = "nvim-cmp", + }, + { + "hrsh7th/cmp-path", + after = "nvim-cmp", + }, + { + "hrsh7th/cmp-buffer", + after = "nvim-cmp", + }, + { + "hrsh7th/vim-vsnip", + after = "nvim-cmp", + }, + }) + + use({ + "simrat39/rust-tools.nvim", + after = "nvim-cmp", + config = function() require("plugins.rust-tools") end, + }) +end) diff --git a/neovim/.config/nvim/lua/plugins/catppuccin.lua b/neovim/.config/nvim/lua/plugins/catppuccin.lua new file mode 100644 index 0000000..e1780e3 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/catppuccin.lua @@ -0,0 +1,22 @@ +vim.g.catppuccin_flavour = "macchiato" -- latte, frappe, macchiato, mocha +local colors = require("catppuccin.palettes").get_palette() -- return vim.g.catppuccin_flavour palette + +require("catppuccin").setup({ + transparent_background = true, + styles = { + comments = {}, + conditionals = {}, + }, + integration = { + telescope = true, + }, + highlight_overrides = { + all = { + CursorLine = { bg = colors.base }, + CursorLineNr = { bg = colors.base }, + }, + }, +}) + +vim.cmd([[ colorscheme catppuccin ]]) + diff --git a/neovim/.config/nvim/lua/plugins/cmp.lua b/neovim/.config/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..18d8fe6 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/cmp.lua @@ -0,0 +1,29 @@ +-- https://github.com/hrsh7th/nvim-cmp#basic-configuration +local cmp = require('cmp') + +cmp.setup({ + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + mapping = { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Insert, + select = false, + }) + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'vsnip' }, + { name = 'path' }, + { name = 'buffer' }, + }, +}) + diff --git a/neovim/.config/nvim/lua/plugins/fidget.lua b/neovim/.config/nvim/lua/plugins/fidget.lua new file mode 100644 index 0000000..f6564d5 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/fidget.lua @@ -0,0 +1,9 @@ +require("fidget").setup({ + text = { + spinner = "dots", -- animation shown when tasks are ongoing + done = "✓", -- character shown when all tasks are complete + }, + window = { + blend = 0, -- &winblend for the window + }, +}) diff --git a/neovim/.config/nvim/lua/plugins/github-theme.lua b/neovim/.config/nvim/lua/plugins/github-theme.lua new file mode 100644 index 0000000..b000fbb --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/github-theme.lua @@ -0,0 +1,4 @@ +require('github-theme').setup({ + transparent = true, + theme_style = "dark_default", +}) diff --git a/neovim/.config/nvim/lua/plugins/gitsigns.lua b/neovim/.config/nvim/lua/plugins/gitsigns.lua new file mode 100644 index 0000000..61f6238 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/gitsigns.lua @@ -0,0 +1,27 @@ +local map = vim.keymap.set + +require("gitsigns").setup({ + signs = { + add = { text = "+" }, + delete = { text = "-" }, + change = { text = "~" }, + changedelete = { text = "⋍" }, + }, + on_attach = function(buf) + local gs = package.loaded.gitsigns + local opts = { buffer = buf, expr = true, replace_keycodes = false } + + -- Navigation + map("n", "]c", "&diff ? ']c' : 'Gitsigns next_hunk'", opts) + map("n", "[c", "&diff ? '[c' : 'Gitsigns prev_hunk'", opts) + + -- Actions + map({ "n", "v" }, "hr", gs.reset_hunk, { buffer = buf }) + map({ "n", "v" }, "hs", gs.stage_hunk) + map("n", "hS", gs.stage_buffer, { buffer = buf }) + map("n", "hp", gs.preview_hunk, { buffer = buf }) + + -- Text object + map({ "o", "x" }, "ih", ":Gitsigns select_hunk", { buffer = buf }) + end, +}) diff --git a/neovim/.config/nvim/lua/plugins/lsp.lua b/neovim/.config/nvim/lua/plugins/lsp.lua new file mode 100644 index 0000000..db73c10 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/lsp.lua @@ -0,0 +1,79 @@ +require("lspconfig") + +local sign = function(opts) + vim.fn.sign_define(opts.name, { + texthl = opts.name, + text = opts.text, + numhl = '' + }) +end + +sign({name = 'DiagnosticSignError', text = ''}) +sign({name = 'DiagnosticSignWarn', text = ''}) +sign({name = 'DiagnosticSignHint', text = ''}) +sign({name = 'DiagnosticSignInfo', text = ''}) + +vim.diagnostic.config({ + signs = true, + virtual_text = false, + update_in_insert = true, + underline = false, + severity_sort = true, + float = { + source = 'always', + header = '', + prefix = '', + }, +}) + +require("keybinds") + +map("n", "", "lua vim.lsp.buf.rename()") +map("n", "", "lua vim.diagnostic.open_float()") + +--[[ +nnoremap lua vim.lsp.buf.definition() +nnoremap K lua vim.lsp.buf.hover() +nnoremap gD lua vim.lsp.buf.implementation() +nnoremap lua vim.lsp.buf.signature_help() +nnoremap 1gD lua vim.lsp.buf.type_definition() +nnoremap gr lua vim.lsp.buf.references() +nnoremap g0 lua vim.lsp.buf.document_symbol() +nnoremap gW lua vim.lsp.buf.workspace_symbol() +nnoremap gd lua vim.lsp.buf.definition() + +-- Jump to the definition +bufmap('n', 'gd', 'lua vim.lsp.buf.definition()') + +-- Jump to declaration +bufmap('n', 'gD', 'lua vim.lsp.buf.declaration()') + +-- Lists all the implementations for the symbol under the cursor +bufmap('n', 'gi', 'lua vim.lsp.buf.implementation()') + +-- Jumps to the definition of the type symbol +bufmap('n', 'go', 'lua vim.lsp.buf.type_definition()') + +-- Lists all the references +bufmap('n', 'gr', 'lua vim.lsp.buf.references()') + +-- Displays a function's signature information +bufmap('n', '', 'lua vim.lsp.buf.signature_help()') + +-- Renames all references to the symbol under the cursor +bufmap('n', '', 'lua vim.lsp.buf.rename()') + +-- Selects a code action available at the current cursor position +bufmap('n', '', 'lua vim.lsp.buf.code_action()') +bufmap('x', '', 'lua vim.lsp.buf.range_code_action()') + +-- Show diagnostics in a floating window +bufmap('n', 'gl', 'lua vim.diagnostic.open_float()') + +-- Move to the previous diagnostic +bufmap('n', '[d', 'lua vim.diagnostic.goto_prev()') + +-- Move to the next diagnostic +bufmap('n', ']d', 'lua vim.diagnostic.goto_next()') +]] + diff --git a/neovim/.config/nvim/lua/plugins/lualine.lua b/neovim/.config/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..353e691 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/lualine.lua @@ -0,0 +1,34 @@ +require("lualine").setup({ + options = { + theme = "catppuccin", + component_separators = { left = "»", right = "«" }, + section_separators = "", + icons_enabled = true, + globalstatus = true, + }, + sections = { + lualine_a = { + { "mode", color = { gui = "bold" } }, + }, + lualine_b = { + { "branch" }, + { "diff", colored = false }, + }, + lualine_c = { + { "filename", file_status = true }, + { "diagnostics" }, + }, + lualine_x = { + { "filetype" }, + { "fileformat", icons_enabled = false }, + { "encoding" }, + }, + lualine_y = { + { "progress" }, + }, + lualine_z = { + { "location", color = { gui = "bold" } }, + }, + }, + extensions = { "quickfix", "nvim-tree" }, +}) diff --git a/neovim/.config/nvim/lua/plugins/mason.lua b/neovim/.config/nvim/lua/plugins/mason.lua new file mode 100644 index 0000000..3e97958 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/mason.lua @@ -0,0 +1,10 @@ +require("mason").setup({ + ui = { + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗" + } + } +}) +require("mason-lspconfig").setup() diff --git a/neovim/.config/nvim/lua/plugins/pairs.lua b/neovim/.config/nvim/lua/plugins/pairs.lua new file mode 100644 index 0000000..ed0e692 --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/pairs.lua @@ -0,0 +1,2 @@ +require("nvim-autopairs").setup() +require("cmp").event:on("confirm_done", require("nvim-autopairs.completion.cmp").on_confirm_done()) diff --git a/neovim/.config/nvim/lua/plugins/rust-tools.lua b/neovim/.config/nvim/lua/plugins/rust-tools.lua new file mode 100644 index 0000000..c8442aa --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/rust-tools.lua @@ -0,0 +1,24 @@ +require("rust-tools").setup({ + tools = { + autoSetHints = true, + inlay_hints = { + auto = false, + show_parameter_hints = false, + parameter_hints_prefix = "", + other_hints_prefix = "", + }, + }, + + -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#rust_analyzer + server = { + settings = { + -- https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/generated_config.adoc + ["rust-analyzer"] = { + checkOnSave = { + command = "clippy" + }, + } + } + }, +}) + diff --git a/neovim/.config/nvim/lua/plugins/telescope.lua b/neovim/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..01dcb2f --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,64 @@ +local actions = require("telescope.actions") +local finders = require("telescope.builtin") + +local action_mt = require "telescope.actions.mt" +local action_state = require "telescope.actions.state" +-- global for later inspection +custom_actions = action_mt.transform_mod({ + print_entry = function() + print(vim.inspect(action_state.get_selected_entry())) + end, +}) + +require("telescope").setup({ + defaults = { + prompt_prefix = " ", + initial_mode = "insert", + sorting_strategy = "ascending", + layout_config = { + prompt_position = "top", + }, + mappings = { + i = { + [""] = custom_actions['print_entry'], + [""] = actions.close, + [""] = actions.move_selection_next, + [""] = actions.move_selection_previous, + [""] = actions.toggle_selection + actions.move_selection_next, + [""] = actions.send_selected_to_qflist, + [""] = actions.send_to_qflist, + }, + }, + }, + extensions = { + fzf = { + fuzzy = true, + override_generic_sorter = true, + override_file_sorter = true, + case_mode = "smart_case", + }, + }, +}) + +local Telescope = setmetatable({}, { + __index = function(_, k) + if vim.bo.filetype == "NvimTree" then + vim.cmd.wincmd("l") + end + return finders[k] + end, +}) + +vim.keymap.set("n", "", function() + local ok = pcall(Telescope.git_files, { show_untracked = true }) + if not ok then + Telescope.find_files() + end +end) + +-- Get :help at the speed of light +vim.keymap.set("n", "H", Telescope.help_tags) +-- Search for string +vim.keymap.set("n", "s", Telescope.live_grep) +-- Fuzzy find changed files in git +vim.keymap.set("n", "c", Telescope.git_status) diff --git a/neovim/.config/nvim/lua/plugins/treesitter.lua b/neovim/.config/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..e3d8fbb --- /dev/null +++ b/neovim/.config/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,126 @@ +-- Treesitter folds +-- vim.o.foldmethod = "expr" +-- vim.o.foldexpr = "nvim_treesitter#foldexpr()" +-- vim.o.foldlevelstart = 99 + +require("nvim-treesitter.configs").setup({ + -- nvim-treesitter/nvim-treesitter (self config) + auto_install = true, + ensure_installed = { + "c", + "lua", + "rust", + "go", + "javascript", + "typescript", + "tsx", + "markdown", + "markdown_inline", + "html", + "css", + "json", + "bash", + }, + highlight = { + enable = true, + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on "syntax" being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = false, + }, + indent = { + enable = true, + }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "gs", + -- NOTE: These are visual mode mappings + node_incremental = "gs", + node_decremental = "gS", + scope_incremental = "gc", + }, + }, + -- nvim-treesitter/nvim-treesitter-textobjects + textobjects = { + select = { + enable = true, + -- Automatically jump forward to textobj, similar to targets.vim + lookahead = true, + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ["af"] = "@function.outer", + ["if"] = "@function.inner", + ["ac"] = "@class.outer", + ["ic"] = "@class.inner", + ["al"] = "@loop.outer", + ["il"] = "@loop.inner", + ["aa"] = "@parameter.outer", + ["ia"] = "@parameter.inner", + ["uc"] = "@comment.outer", + + -- Or you can define your own textobjects like this + -- ["iF"] = { + -- python = "(function_definition) @function", + -- cpp = "(function_definition) @function", + -- c = "(function_definition) @function", + -- java = "(method_declaration) @function", + -- }, + }, + }, + swap = { + enable = true, + swap_next = { + ["a"] = "@parameter.inner", + ["f"] = "@function.outer", + ["e"] = "@element", + }, + swap_previous = { + ["A"] = "@parameter.inner", + ["F"] = "@function.outer", + ["E"] = "@element", + }, + }, + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + goto_next_start = { + ["]f"] = "@function.outer", + ["]]"] = "@class.outer", + }, + goto_next_end = { + ["]F"] = "@function.outer", + ["]["] = "@class.outer", + }, + goto_previous_start = { + ["[f"] = "@function.outer", + ["[["] = "@class.outer", + }, + goto_previous_end = { + ["[F"] = "@function.outer", + ["[]"] = "@class.outer", + }, + }, + }, + -- windwp/nvim-ts-autotag + autotag = { + enable = true, + }, + -- nvim-treesitter/playground + playground = { + enable = true, + disable = {}, + updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code + persist_queries = false, -- Whether the query persists across vim sessions + }, + -- nvim-treesitter/nvim-treesitter-refactor + refactor = { + highlight_definitions = { enable = true }, + -- highlight_current_scope = { enable = false }, + }, + context_commentstring = { + enable = true, + enable_autocmd = false, + }, +}) diff --git a/neovim/.config/nvim/lua/settings.lua b/neovim/.config/nvim/lua/settings.lua new file mode 100644 index 0000000..e65dbff --- /dev/null +++ b/neovim/.config/nvim/lua/settings.lua @@ -0,0 +1,53 @@ +local g = vim.g +local o = vim.o + +-- Amount of lines to keep below and above the cursor +o.scrolloff = 10 + +-- I like it this way +o.number = true +o.cursorline = true +o.relativenumber = true +o.numberwidth = 4 + +o.signcolumn = "yes:1" +o.shortmess = o.shortmess .. "c" +o.completeopt = "menuone,noselect,noinsert" + +o.hidden = true +o.backup = false +o.undofile = true +o.swapfile = false +o.writebackup = false +o.encoding = "utf-8" +o.guicursor = "a:ver25-blinkwait50-blinkon50-blinkoff50" + +o.ruler = true +o.showcmd = true +o.showmode = true +o.laststatus = 2 + +o.smarttab = true +o.expandtab = true +o.autoindent = true +o.softtabstop = -1 +o.shiftwidth = 2 +o.tabstop = 2 + +-- Search is case insensitive unless /C or searched capitalized +o.hlsearch = true +o.incsearch = true +o.smartcase = true +o.ignorecase = true + +-- Invisible characters +o.list = true +o.listchars = "trail:·,nbsp:×,tab:->" + +-- Clipboard works with os +o.clipboard = "unnamedplus" + +-- Map leader to space +g.mapleader = " " +g.maplocalleader = " " + diff --git a/neovim/.config/nvim/plugin/packer_compiled.lua b/neovim/.config/nvim/plugin/packer_compiled.lua new file mode 100644 index 0000000..a561012 --- /dev/null +++ b/neovim/.config/nvim/plugin/packer_compiled.lua @@ -0,0 +1,333 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +local time +local profile_info +local should_profile = false +if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end +else + time = function(chunk, start) end +end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/me/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/me/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/me/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/me/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/me/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + ["Comment.nvim"] = { + config = { "\27LJ\2\n5\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\fComment\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/Comment.nvim", + url = "https://github.com/numToStr/Comment.nvim" + }, + ["catppuccin-theme"] = { + config = { "\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23plugins.catppuccin\frequire\0" }, + loaded = true, + path = "/home/me/.local/share/nvim/site/pack/packer/start/catppuccin-theme", + url = "https://github.com/catppuccin/nvim" + }, + ["cmp-buffer"] = { + after_files = { "/home/me/.local/share/nvim/site/pack/packer/opt/cmp-buffer/after/plugin/cmp_buffer.lua" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/cmp-buffer", + url = "https://github.com/hrsh7th/cmp-buffer" + }, + ["cmp-nvim-lsp"] = { + after_files = { "/home/me/.local/share/nvim/site/pack/packer/opt/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + ["cmp-path"] = { + after_files = { "/home/me/.local/share/nvim/site/pack/packer/opt/cmp-path/after/plugin/cmp_path.lua" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/cmp-path", + url = "https://github.com/hrsh7th/cmp-path" + }, + ["cmp-vsnip"] = { + after_files = { "/home/me/.local/share/nvim/site/pack/packer/opt/cmp-vsnip/after/plugin/cmp_vsnip.lua" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/cmp-vsnip", + url = "https://github.com/hrsh7th/cmp-vsnip" + }, + ["fidget.nvim"] = { + config = { "\27LJ\2\n.\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\19plugins.fidget\frequire\0" }, + load_after = { + ["lualine.nvim"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/fidget.nvim", + url = "https://github.com/j-hui/fidget.nvim" + }, + ["gitsigns.nvim"] = { + config = { "\27LJ\2\n0\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\21plugins.gitsigns\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/gitsigns.nvim", + url = "https://github.com/lewis6991/gitsigns.nvim" + }, + ["lualine.nvim"] = { + after = { "fidget.nvim" }, + config = { "\27LJ\2\n/\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\20plugins.lualine\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/lualine.nvim", + url = "https://github.com/nvim-lualine/lualine.nvim" + }, + ["mason-lspconfig.nvim"] = { + after = { "mason.nvim" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/mason-lspconfig.nvim", + url = "https://github.com/williamboman/mason-lspconfig.nvim" + }, + ["mason.nvim"] = { + config = { "\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18plugins.mason\frequire\0" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/mason.nvim", + url = "https://github.com/williamboman/mason.nvim" + }, + ["nvim-autopairs"] = { + config = { "\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18plugins.pairs\frequire\0" }, + load_after = {}, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/nvim-autopairs", + url = "https://github.com/windwp/nvim-autopairs" + }, + ["nvim-cmp"] = { + after = { "cmp-vsnip", "cmp-buffer", "nvim-autopairs", "cmp-nvim-lsp", "rust-tools.nvim", "vim-vsnip", "cmp-path" }, + config = { "\27LJ\2\n+\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\16plugins.cmp\frequire\0" }, + loaded = true, + only_config = true, + path = "/home/me/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-lspconfig"] = { + after = { "mason-lspconfig.nvim" }, + config = { "\27LJ\2\n+\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\16plugins.lsp\frequire\0" }, + loaded = true, + only_config = true, + path = "/home/me/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-treesitter"] = { + after = { "nvim-treesitter-textobjects", "playground", "nvim-treesitter-refactor" }, + config = { "\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23plugins.treesitter\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/nvim-treesitter", + url = "https://github.com/nvim-treesitter/nvim-treesitter" + }, + ["nvim-treesitter-refactor"] = { + load_after = { + ["nvim-treesitter"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/nvim-treesitter-refactor", + url = "https://github.com/nvim-treesitter/nvim-treesitter-refactor" + }, + ["nvim-treesitter-textobjects"] = { + load_after = { + ["nvim-treesitter"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/nvim-treesitter-textobjects", + url = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects" + }, + ["packer.nvim"] = { + loaded = true, + path = "/home/me/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + playground = { + load_after = { + ["nvim-treesitter"] = true + }, + loaded = false, + needs_bufread = true, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/playground", + url = "https://github.com/nvim-treesitter/playground" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/me/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["rust-tools.nvim"] = { + config = { "\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23plugins.rust-tools\frequire\0" }, + load_after = {}, + loaded = true, + needs_bufread = true, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/rust-tools.nvim", + url = "https://github.com/simrat39/rust-tools.nvim" + }, + ["telescope-fzf-native.nvim"] = { + config = { "\27LJ\2\nH\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0'\2\3\0B\0\2\1K\0\1\0\bfzf\19load_extension\14telescope\frequire\0" }, + load_after = {}, + loaded = true, + needs_bufread = false, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/telescope-fzf-native.nvim", + url = "https://github.com/nvim-telescope/telescope-fzf-native.nvim" + }, + ["telescope.nvim"] = { + after = { "telescope-fzf-native.nvim" }, + config = { "\27LJ\2\n1\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\22plugins.telescope\frequire\0" }, + loaded = true, + only_config = true, + path = "/home/me/.local/share/nvim/site/pack/packer/start/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + }, + ["vim-vsnip"] = { + load_after = {}, + loaded = true, + needs_bufread = true, + path = "/home/me/.local/share/nvim/site/pack/packer/opt/vim-vsnip", + url = "https://github.com/hrsh7th/vim-vsnip" + } +} + +time([[Defining packer_plugins]], false) +-- Config for: nvim-lspconfig +time([[Config for nvim-lspconfig]], true) +try_loadstring("\27LJ\2\n+\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\16plugins.lsp\frequire\0", "config", "nvim-lspconfig") +time([[Config for nvim-lspconfig]], false) +-- Config for: catppuccin-theme +time([[Config for catppuccin-theme]], true) +try_loadstring("\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23plugins.catppuccin\frequire\0", "config", "catppuccin-theme") +time([[Config for catppuccin-theme]], false) +-- Config for: nvim-cmp +time([[Config for nvim-cmp]], true) +try_loadstring("\27LJ\2\n+\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\16plugins.cmp\frequire\0", "config", "nvim-cmp") +time([[Config for nvim-cmp]], false) +-- Config for: telescope.nvim +time([[Config for telescope.nvim]], true) +try_loadstring("\27LJ\2\n1\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\22plugins.telescope\frequire\0", "config", "telescope.nvim") +time([[Config for telescope.nvim]], false) +-- Load plugins in order defined by `after` +time([[Sequenced loading]], true) +vim.cmd [[ packadd mason-lspconfig.nvim ]] +vim.cmd [[ packadd mason.nvim ]] + +-- Config for: mason.nvim +try_loadstring("\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18plugins.mason\frequire\0", "config", "mason.nvim") + +vim.cmd [[ packadd telescope-fzf-native.nvim ]] + +-- Config for: telescope-fzf-native.nvim +try_loadstring("\27LJ\2\nH\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0'\2\3\0B\0\2\1K\0\1\0\bfzf\19load_extension\14telescope\frequire\0", "config", "telescope-fzf-native.nvim") + +vim.cmd [[ packadd cmp-path ]] +vim.cmd [[ packadd vim-vsnip ]] +vim.cmd [[ packadd rust-tools.nvim ]] + +-- Config for: rust-tools.nvim +try_loadstring("\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23plugins.rust-tools\frequire\0", "config", "rust-tools.nvim") + +vim.cmd [[ packadd cmp-nvim-lsp ]] +vim.cmd [[ packadd cmp-buffer ]] +vim.cmd [[ packadd cmp-vsnip ]] +time([[Sequenced loading]], false) +vim.cmd [[augroup packer_load_aucmds]] +vim.cmd [[au!]] + -- Event lazy-loads +time([[Defining lazy-load event autocommands]], true) +vim.cmd [[au InsertCharPre * ++once lua require("packer.load")({'nvim-autopairs'}, { event = "InsertCharPre *" }, _G.packer_plugins)]] +vim.cmd [[au BufEnter * ++once lua require("packer.load")({'gitsigns.nvim', 'Comment.nvim', 'lualine.nvim', 'nvim-treesitter'}, { event = "BufEnter *" }, _G.packer_plugins)]] +time([[Defining lazy-load event autocommands]], false) +vim.cmd("augroup END") + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/qutebrowser/.config/qutebrowser/config.py b/qutebrowser/.config/qutebrowser/config.py new file mode 100644 index 0000000..4ff32b1 --- /dev/null +++ b/qutebrowser/.config/qutebrowser/config.py @@ -0,0 +1,95 @@ +config.load_autoconfig(False) + +translucent = "#801a1a1a" +background = "#1a1a1a" +foreground = "#bbd2e0" +accent = "#306b92" + +c.zoom.default = "175%" +c.fonts.default_size = "19pt" +c.fonts.default_family = "JetBrains Mono" + +c.downloads.location.prompt = False +c.downloads.location.remember = False +c.downloads.location.directory = "/home/me/downloads/" + +c.statusbar.widgets = ["keypress", "url", "scroll"] +c.statusbar.show = "in-mode" + +c.tabs.show = "always" +c.tabs.favicons.show = "never" +c.tabs.title.alignment = "center" +c.tabs.title.format = "{perc}{audio}{current_title}" + +c.content.blocking.method = "adblock" + +c.qt.highdpi = True +c.qt.force_software_rendering = "chromium" + +c.colors.webpage.preferred_color_scheme = "dark" + +# local searxng instance stuff +c.url.start_pages = "https://search.brave.com/" +c.url.default_page = "https://search.brave.com/" +c.url.searchengines = {"DEFAULT": "https://search.brave.com/search?q={}"} + +# fileselect stuff + +c.colors.completion.category.bg = accent +c.colors.completion.category.fg = background +c.colors.completion.even.bg = background +c.colors.completion.odd.bg = background +c.colors.completion.item.selected.bg = foreground +c.colors.completion.item.selected.fg = background +c.colors.completion.item.selected.match.fg = accent +c.colors.completion.match.fg = accent +c.colors.completion.scrollbar.bg = background +c.colors.completion.scrollbar.fg = foreground + +c.colors.downloads.bar.bg = background +c.colors.downloads.error.bg = background +c.colors.downloads.error.fg = foreground +c.colors.downloads.start.bg = background +c.colors.downloads.start.fg = foreground +c.colors.downloads.stop.bg = background +c.colors.downloads.stop.fg = foreground + +c.colors.keyhint.bg = translucent +c.colors.keyhint.fg = foreground +c.colors.keyhint.suffix.fg = accent +c.colors.hints.bg = translucent +c.colors.hints.fg = foreground +c.hints.border = "none" +c.hints.radius = 0 + +c.colors.tabs.bar.bg = background +c.colors.tabs.even.bg = background +c.colors.tabs.even.fg = foreground +c.colors.tabs.odd.bg = background +c.colors.tabs.odd.fg = foreground +c.colors.tabs.indicator.error = accent +c.colors.tabs.indicator.start = foreground +c.colors.tabs.indicator.stop = background +c.colors.tabs.selected.even.bg = accent +c.colors.tabs.selected.even.fg = background +c.colors.tabs.selected.odd.bg = accent +c.colors.tabs.selected.odd.fg = background + +c.colors.statusbar.command.bg = background +c.colors.statusbar.command.fg = foreground +c.colors.statusbar.url.fg = foreground +c.colors.statusbar.url.warn.fg = accent +c.colors.statusbar.url.error.fg = accent +c.colors.statusbar.url.hover.fg = foreground +c.colors.statusbar.url.success.http.fg = foreground +c.colors.statusbar.url.success.https.fg = foreground + +c.colors.messages.error.bg = background +c.colors.messages.error.fg = foreground +c.colors.messages.error.border = background +c.colors.messages.info.bg = background +c.colors.messages.info.fg = foreground +c.colors.messages.info.border = background +c.colors.messages.warning.bg = background +c.colors.messages.warning.fg = foreground +c.colors.messages.warning.border = background diff --git a/qutebrowser/.config/qutebrowser/home.html b/qutebrowser/.config/qutebrowser/home.html new file mode 100644 index 0000000..bff6b19 --- /dev/null +++ b/qutebrowser/.config/qutebrowser/home.html @@ -0,0 +1,15 @@ + + + + + start + + + + + + diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..6b383cc Binary files /dev/null and b/screenshot.png differ diff --git a/scripts/.local/bin/personal/appmenu b/scripts/.local/bin/personal/appmenu new file mode 100755 index 0000000..3c96a8f --- /dev/null +++ b/scripts/.local/bin/personal/appmenu @@ -0,0 +1,8 @@ +#!/bin/bash + +# Launching +rofi -no-lazy-grab -show drun \ +-display-drun "Applications :" -drun-display-format "{name}" \ +-matching fuzzy \ +-font "Hack 20" \ + diff --git a/scripts/.local/bin/personal/bar/battery b/scripts/.local/bin/personal/bar/battery new file mode 100755 index 0000000..53c1cb0 --- /dev/null +++ b/scripts/.local/bin/personal/bar/battery @@ -0,0 +1,27 @@ +#!/bin/bash + +percent="$(acpi | awk '{print $4}')" +state="$(acpi | awk '{print $3}')" +time="$(acpi | awk '{print $5}')" + +state0="" +state1="" +state2="" +state3="" +state4="" + +if [[ "$1" = "condition" ]]; then + if ((${percent::-2} <= 10)) ; then + echo "1" + else + echo "0" + fi + + exit 0 +fi + +if [ "${state::-1}" == "Discharging" ]; then + echo "${percent::-1} (${time::-3} ↓)" +else + echo "${percent::-1} (${time::-3} ↑)" +fi diff --git a/scripts/.local/bin/personal/bar/brightness b/scripts/.local/bin/personal/bar/brightness new file mode 100755 index 0000000..a7dbe73 --- /dev/null +++ b/scripts/.local/bin/personal/bar/brightness @@ -0,0 +1,67 @@ +#!/bin/bash + +# A script to manage screen and keyboard brightness on my machine +# Depends on: bash, brightnessctl +# By David Penkowoj, 2021/06/24 + +MTR_VALUE=15 +KBD_VALUE=1 + +SWITCH="$1" + +case $SWITCH in + "help") + printf "Possible arguments:\n" + printf "===================\n" + printf "load - loads brightness from save\n" + printf "save - saves current brightness\n" + printf "up - increases brightness by 5 percent and saves\n" + printf "down - decreases brightness by 5 percent and saves\n" + printf "smallup - increases brightness by 1 percent and saves\n" + printf "smalldown - decreases brightness by 1 percent and saves\n" + printf "status - show brightness of a device" + ;; + "load") + brightnessctl --device='intel_backlight' set "$MTR_VALUE%" + brightnessctl --device='smc::kbd_backlight' set 0 # "$KBD_VALUE%" + ;; + "save") + M="$(brightnessctl --device='intel_backlight' | grep -Eo "[0-9]+" | head -n 2 | tail -n 1)" + K="$(brightnessctl --device='smc::kbd_backlight' | grep -Eo "[0-9]+" | head -n 2 | tail -n 1)" + sed -i "s/MTR_VALUE=$MTR_VALUE/MTR_VALUE=$M/g" "$0" + sed -i "s/KBD_VALUE=$KBD_VALUE/KBD_VALUE=$K/g" "$0" + ;; + "smalldown") + if [[ "$2" = "monitor" ]]; then brightnessctl --device='intel_backlight' set 1-%; fi + if [[ "$2" = "keyboard" ]]; then brightnessctl --device='smc::kbd_backlight' set 1-%; fi + brightness save + ;; + "smallup") + if [[ "$2" = "monitor" ]]; then brightnessctl --device='intel_backlight' set +1%; fi + if [[ "$2" = "keyboard" ]]; then brightnessctl --device='smc::kbd_backlight' set +1%; fi + brightness save + ;; + "down") + if [[ "$2" = "monitor" ]]; then brightnessctl --device='intel_backlight' set 5-%; fi + if [[ "$2" = "keyboard" ]]; then brightnessctl --device='smc::kbd_backlight' set 5-%; fi + brightness save + ;; + "up") + if [[ "$2" = "monitor" ]]; then brightnessctl --device='intel_backlight' set +5%; fi + if [[ "$2" = "keyboard" ]]; then brightnessctl --device='smc::kbd_backlight' set +5%; fi + brightness save + ;; + "get") + M="$(brightnessctl --device='intel_backlight' | grep -Eo "[0-9]+" | head -n 2 | tail -n 1)" + K="$(brightnessctl --device='smc::kbd_backlight' | grep -Eo "[0-9]+" | head -n 2 | tail -n 1)" + if [[ "$2" = "monitor" ]]; then echo "$M%"; fi + if [[ "$2" = "keyboard" ]]; then echo "$K%"; fi + ;; + *) + printf "Monitor:\n" + brightnessctl --device='intel_backlight' | tail -n 3 | sed 's/\t/- /g' + printf "Keyboard:\n" + brightnessctl --device='smc::kbd_backlight' | tail -n 3 | sed 's/\t/- /g' + ;; +esac + diff --git a/scripts/.local/bin/personal/bar/datetime b/scripts/.local/bin/personal/bar/datetime new file mode 100755 index 0000000..31f2144 --- /dev/null +++ b/scripts/.local/bin/personal/bar/datetime @@ -0,0 +1,9 @@ +#!/bin/dash + +if [ "$1" = "date" ]; then + echo "$(date '+%a. %Y-%m-%d')" +elif [ "$1" = "time" ]; then + echo "$(date '+%H:%M %Z')" +else + echo "$(date '+%a. %Y-%m-%d %H:%M %Z')" +fi diff --git a/scripts/.local/bin/personal/bar/getrpm b/scripts/.local/bin/personal/bar/getrpm new file mode 100755 index 0000000..14f07cc --- /dev/null +++ b/scripts/.local/bin/personal/bar/getrpm @@ -0,0 +1,3 @@ +#!/bin/bash + +sensors | grep RPM | awk '{print $4} { sum += $4; n++ } END { if (n > 0) print sum / n; }' diff --git a/scripts/.local/bin/personal/bar/lights b/scripts/.local/bin/personal/bar/lights new file mode 100755 index 0000000..e347188 --- /dev/null +++ b/scripts/.local/bin/personal/bar/lights @@ -0,0 +1,14 @@ +#!/bin/bash + +# A script to log screen and keyboard brighness +# Dependencies: bash, brightnessctl +# By David Penkowoj, 2022/02/08 + +MTR_BRIGHTNESS="$(brightnessctl --device="intel_backlight" i | sed -z 's/.*(\|).*//g')" +KBD_BRIGHTNESS="$(brightnessctl --device="smc::kbd_backlight" i | sed -z 's/.*(\|).*//g')" + +if [[ "$KBD_BRIGHTNESS" = "0%" ]]; then + echo "$MTR_BRIGHTNESS" +else + echo "$MTR_BRIGHTNESS | $KBD_BRIGHTNESS" +fi diff --git a/scripts/.local/bin/personal/bar/load b/scripts/.local/bin/personal/bar/load new file mode 100755 index 0000000..dec7f60 --- /dev/null +++ b/scripts/.local/bin/personal/bar/load @@ -0,0 +1,4 @@ +#!/bin/bash + +grep 'cpu ' /proc/stat | awk '{cpu_usage=($2+$4)*100/($2+$4+$5)} {printf "%0.2f%", cpu_usage}' +printf "\n" diff --git a/scripts/.local/bin/personal/bar/network b/scripts/.local/bin/personal/bar/network new file mode 100755 index 0000000..915d482 --- /dev/null +++ b/scripts/.local/bin/personal/bar/network @@ -0,0 +1,13 @@ +#!/bin/dash + +ssid="$(nmcli device show | grep "GENERAL.CONNECTION" -m 1 | awk '{print $2}')" + +if [ -n "$ssid" ]; then + if [ "$ssid" = "--" ]; then + echo "" + else + echo "$ssid" + fi +else + echo "..." +fi diff --git a/scripts/.local/bin/personal/bar/packages b/scripts/.local/bin/personal/bar/packages new file mode 100755 index 0000000..348b0b7 --- /dev/null +++ b/scripts/.local/bin/personal/bar/packages @@ -0,0 +1,9 @@ +#!/bin/dash + +updates=$(checkupdates | wc -l) + +if [ -z "$updates" ]; then + printf "Fully Updated" +else + printf "$updates updates" updates +fi diff --git a/scripts/.local/bin/personal/bar/player b/scripts/.local/bin/personal/bar/player new file mode 100755 index 0000000..85366c0 --- /dev/null +++ b/scripts/.local/bin/personal/bar/player @@ -0,0 +1,12 @@ +#!/bin/bash + +STATUS="$(playerctl status)" + +if [[ "$STATUS" == "Playing" ]]; then + TITLE="$(playerctl metadata title)" + ARTIST="$(playerctl metadata artist)" + + printf "%s - %s" "$ARTIST" "$TITLE" +else + echo "" +fi diff --git a/scripts/.local/bin/personal/bar/status b/scripts/.local/bin/personal/bar/status new file mode 100755 index 0000000..10c33de --- /dev/null +++ b/scripts/.local/bin/personal/bar/status @@ -0,0 +1,30 @@ +#!/bin/dash + +# loads colors +. ~/.cache/wal/colors.sh + +SEPARATOR=" " + +# default color button +use() { + printf "%s^c%s^^b%s^ %s ^b%s^ %s ^b%s^" "$SEPARATOR" "$color0" "$color1" "$1" "$color2" "$2" "$color0" +} + +# show in specified color if specified condition is true +usecolorif() { + if [ "$3" = "1" ]; then + printf "%s^c%s^^b%s^ %s ^c%s^^b%s^ %s ^b%s^" "$SEPARATOR" "$color1" "$color0" "$1" "$color2" "$color0" "$2" "$color0" + else + use "$1" "$2" + fi +} + +# only show if content is not zero +useif() { + if [ -n "$2" ]; then + use "$1" "$2" + fi +} + +# actual string +echo "$(useif "" "$(updates read)")$(useif "" "$(volume)")$(use "" "$(lights)")$(usecolorif "ﴞ" "$(battery)" "$(battery condition)")$(useif "說" "$(network)")$(use "" "$(datetime time)")$(use "" "$(datetime date)")" diff --git a/scripts/.local/bin/personal/bar/temp b/scripts/.local/bin/personal/bar/temp new file mode 100755 index 0000000..4a9589f --- /dev/null +++ b/scripts/.local/bin/personal/bar/temp @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "$(sensors | grep "Package id 0:" | awk '{print $4}')" diff --git a/scripts/.local/bin/personal/bar/title b/scripts/.local/bin/personal/bar/title new file mode 100755 index 0000000..5d2ed60 --- /dev/null +++ b/scripts/.local/bin/personal/bar/title @@ -0,0 +1,10 @@ +#!/bin/bash + +TITLE="$(xtitle)" + +if [[ -z "$TITLE" ]]; then + echo "Enjoying the Desktop - No waifu, no laifu" +else + echo "$TITLE" +fi + diff --git a/scripts/.local/bin/personal/bar/updates b/scripts/.local/bin/personal/bar/updates new file mode 100755 index 0000000..c0a3f4a --- /dev/null +++ b/scripts/.local/bin/personal/bar/updates @@ -0,0 +1,16 @@ +#!/bin/dash + +storage=0 + +if [ "$1" = "read" ]; then + if [ "$storage" != "0" ]; then + echo "$storage" + else + echo "" + fi +elif [ "$1" = "run" ]; then + sudo pacman -Syu && updates check +elif [ "$1" = "check" ]; then + packages="$(checkupdates | wc -l)" + sed -i "s/storage=$storage/storage=$packages/g" "$0" +fi diff --git a/scripts/.local/bin/personal/bar/volume b/scripts/.local/bin/personal/bar/volume new file mode 100755 index 0000000..f709d6a --- /dev/null +++ b/scripts/.local/bin/personal/bar/volume @@ -0,0 +1,10 @@ +#!/bin/dash + +SINK="$(pactl get-default-sink)" +VOLUME="$(pactl get-sink-volume $SINK | awk '{print $5}')" + +if [ "$VOLUME" != "0%" ]; then + echo "$VOLUME" +else + echo "" +fi diff --git a/scripts/.local/bin/personal/batestimate b/scripts/.local/bin/personal/batestimate new file mode 100755 index 0000000..b8d70aa --- /dev/null +++ b/scripts/.local/bin/personal/batestimate @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +charge_now_path = "/sys/class/power_supply/BAT0/charge_now" +current_now_path = "/sys/class/power_supply/BAT0/current_now" + +f = open(charge_now_path, "r") +charge_now = int(f.readlines()[0]) +f = open(current_now_path, "r") +current_now = int(f.readlines()[0]) + +ratio = charge_now / current_now * 100 + +hours = ratio / 60 +minutes = ratio % 60 + +print(str(hours) + ":" + str(minutes)) + diff --git a/scripts/.local/bin/personal/colorconvert b/scripts/.local/bin/personal/colorconvert new file mode 100755 index 0000000..6777f23 --- /dev/null +++ b/scripts/.local/bin/personal/colorconvert @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +import sys +import colorsys + +def hsl2hex(color): + # regex = r'hsl\(\s*(\d+),\s*(\d+)%,\s*(\d+)%\s*\);' + # lines = [re.findall(regex,line) for line in one_dark_syn.split('\n')] + # rgbs = [colorsys.hsv_to_rgb(int(line[1][0])/360, int(line[0][1])/100, int(line[0][2])/100) for line in lines if line] + # rgbhex = ["".join("%03X" % round(i*255) for i in rgb) for rgb in rgbs] + + colors = color.split(",") + color_rgb_frac = colorsys.hls_to_rgb(int(colors[0]) / 360, int(colors[2]) / 100, int(color[1]) / 100) + print(color_rgb_frac) + color_rgb = [round(value / 255) for value in color_rgb_frac] + print(color_rgb) + color_hex = [",".join("%3X" % rgb for rgb in color_rgb)] + print(color_hex) + return color_hex + +# https://www.rapidtables.com/convert/color/hsl-to-rgb.html + +if __name__ == "__main__": + if sys.argv[1] == "hsl2hex": + print(hsl2hex(sys.argv[2])) + else: + print("Usage example:\ncolorconvert hsl2hex 78,50,60") + diff --git a/scripts/.local/bin/personal/compile b/scripts/.local/bin/personal/compile new file mode 100755 index 0000000..028ae11 --- /dev/null +++ b/scripts/.local/bin/personal/compile @@ -0,0 +1,81 @@ +#!/bin/bash + +# A script to compile any (here defined) type of text file to a target format +# Depends on: bash, basename, pdflatex, pandoc, asciidoctor +# By David Penkowoj, 2021/08/02 + +# Function to compile .md to .pdf files +ADOC_TO_HTML() { + asciidoctor "$1" && + printf "Successfully compiled %s to %s\n" "$1" "$2.pdf" || + printf "[ Error ] Couldn't compile %s\n" "$1" +} + +# Function to compile .tex to .pdf files without making a mess +TEX_TO_PDF() { + printf "If the script seems to hang, try pressing \n" + + pdflatex -shell-escape "$1" > /dev/null && + pdflatex -shell-escape "$1" > /dev/null && # This is to ensure certain tex elements being drawn + rm -rf "$2.toc" "$2.log" "$2.aux" && + printf "Successfully compiled %s to %s\n" "$2.tex" "$2.pdf" || + printf "[ Error ] Couldn't compile %s\n" "$2.tex" +} + +# Function to compile .lp to .pdf files +LP_TO_PDF() { + lilypond "$1" --pdf -s -o "$2.pdf" && + printf "Successfully compiled %s to %s\n" "$1" "$2.pdf" || + printf "[ Error ] Couldn't compile %s\n" "$1" +} + +# Function to compile .md to .pdf files +MD_TO_PDF() { + TMP="/tmp/compilemd" + + sed '/^!.*/d' "$1" > "$TMP" && # This enables comments with "!" + sed 's/^\\!/!/g' "$TMP" "$TMP" && # This enables escaping with "\!" + + pandoc "$TMP" -o "$2.pdf" && + printf "Successfully compiled %s to %s\n" "$1" "$2.pdf" || + printf "[ Error ] Couldn't compile %s\n" "$1" +} + +# Check if file exists +if [[ -e "$1" ]]; then + # Determine filename and extension + FILENAME="$(basename -- "$1")" + EXTENSION="${FILENAME##*.}" + + # Check if there is a extension at all + if [[ "$FILENAME" == "$EXTENSION" ]]; then + printf "[ Error ] The specified file has no extension\n" + exit 1 + fi + + # Do the respective compile actions + case "$EXTENSION" in + "adoc") + ADOC_TO_HTML "$1" "${FILENAME%.*}" + ;; + "tex") + TEX_TO_PDF "$1" "${FILENAME%.*}" + ;; + "pov") + povray "$1" + ;; + "lp") + MD_TO_PDF "$1" "${FILENAME%.*}" + ;; + "md") + MD_TO_PDF "$1" "${FILENAME%.*}" + ;; + *) + printf "[ Error ] There is no entry on how to handle '%s' files.\n" "$EXTENSION" + exit 1 + esac +else + printf "[ Error ] No file specified!\n" +fi + +exit 0 diff --git a/scripts/.local/bin/personal/compresspdf b/scripts/.local/bin/personal/compresspdf new file mode 100755 index 0000000..8ad1b07 --- /dev/null +++ b/scripts/.local/bin/personal/compresspdf @@ -0,0 +1,9 @@ +#!/bin/bash + +# PDF Compressor +# Dependencies: ghostscript + +if [[ -e $1 ]]; then + gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile="${1}_compressed.pdf" "$1" && + printf "done" || printf "error" +fi diff --git a/scripts/.local/bin/personal/dayprogress b/scripts/.local/bin/personal/dayprogress new file mode 100755 index 0000000..f872893 --- /dev/null +++ b/scripts/.local/bin/personal/dayprogress @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 + +from datetime import datetime + +minute = datetime.now().minute +print(minute / 60 * 100) diff --git a/scripts/.local/bin/personal/dlmusic b/scripts/.local/bin/personal/dlmusic new file mode 100755 index 0000000..c0177ac --- /dev/null +++ b/scripts/.local/bin/personal/dlmusic @@ -0,0 +1,13 @@ +#!/bin/bash + +# A script to not make me type all that argument **** when I want to download music. +# Yes I am lazy. + +if [[ -n "$1" ]]; then + youtube-dl "$1" --extract-audio -i -o "%(title)s.%(ext)s" --audio-format mp3 && + exit 0 || + exit 1 +else + printf "[ Error ] Not enough arguments.\n" + exit 1 +fi diff --git a/scripts/.local/bin/personal/ed b/scripts/.local/bin/personal/ed new file mode 100755 index 0000000..9e7b99f --- /dev/null +++ b/scripts/.local/bin/personal/ed @@ -0,0 +1,27 @@ +#!/bin/bash + +# A script to start editing files +# Dependencies: bash, basename, date +# By David Penkowoj, 2022-02-18 + +# implement: fzf -f QUERY + +DATE="$(date +'%Y-%m-%d')" +FILE="$(basename $1)" +DIR="$(dirname $1)" + +if [[ "$DIR" = "." ]]; then + if [[ -f "$DATE-A-$FILE" ]]; then + "$EDITOR" "$DATE-A-$FILE" + else + "$EDITOR" "$DATE-B-$FILE" + fi +else + cd "$DIR" + if [[ -f "$DATE-A-$FILE" ]]; then + "$EDITOR" "$DATE-A-$FILE" + else + "$EDITOR" "$DATE-B-$FILE" + fi +fi + diff --git a/scripts/.local/bin/personal/edge2 b/scripts/.local/bin/personal/edge2 new file mode 100755 index 0000000..376bebb --- /dev/null +++ b/scripts/.local/bin/personal/edge2 @@ -0,0 +1,31 @@ +#!/bin/env python + +import sys +import cv2 +import math +import numpy as np +import matplotlib.pyplot as plt + +def correct(): + img = cv2.imread(sys.argv[1]) + rows,cols,ch = img.shape + + pts1 = np.float32([[98, 786],[20, 3268],[1800, 3268],[1798, 850]]) + + ratio=1.6 + cardH=math.sqrt((pts1[2][0]-pts1[1][0])*(pts1[2][0]-pts1[1][0])+(pts1[2][1]-pts1[1][1])*(pts1[2][1]-pts1[1][1])) + cardW=ratio*cardH; + pts2 = np.float32([[pts1[0][0],pts1[0][1]], [pts1[0][0]+cardW, pts1[0][1]], [pts1[0][0]+cardW, pts1[0][1]+cardH], [pts1[0][0], pts1[0][1]+cardH]]) + + M = cv2.getPerspectiveTransform(pts1,pts2) + + offsetSize=500 + transformed = np.zeros((int(cardW+offsetSize), int(cardH+offsetSize)), dtype=np.uint8); + dst = cv2.warpPerspective(img, M, transformed.shape) + + plt.subplot(121),plt.imshow(img),plt.title('Input') + plt.subplot(122),plt.imshow(dst),plt.title('Output') + plt.show() + +if __name__ == "__main__": + correct() diff --git a/scripts/.local/bin/personal/edgedetect b/scripts/.local/bin/personal/edgedetect new file mode 100755 index 0000000..34d26c8 --- /dev/null +++ b/scripts/.local/bin/personal/edgedetect @@ -0,0 +1,31 @@ +#!/bin/env python3 + +import sys +import cv2 as cv +import numpy as np +import matplotlib.pyplot as plt +from skimage.io import imread, imshow +from skimage.color import rgb2gray +from skimage.feature import match_template, peak_local_max +from skimage import transform + +def detect(): + #img = cv.imread(cv.samples.findFile(sys.argv[1])) + #if img is None: + # sys.exit("Could not read the image.") + #_,img = cv.threshold(img, 128, 255, cv.THRESH_BINARY) + + image= cv.imread(sys.argv[1]) + gray= cv.cvtColor(image, cv.COLOR_BGR2GRAY) + gray= np.float32(gray) + harris_corners= cv.cornerHarris(gray, 3, 3, 0.05) + kernel= np.ones((7,7), np.uint8) + harris_corners= cv.dilate(harris_corners, kernel, iterations= 2) + image[harris_corners > 0.025 * harris_corners.max()]= [255,127,127] + cv.imshow('Harris Corners', image) + cv.waitKey(0) + cv.destroyAllWindows() + + +if __name__ == "__main__": + detect() diff --git a/scripts/.local/bin/personal/eve b/scripts/.local/bin/personal/eve new file mode 100755 index 0000000..556bde0 --- /dev/null +++ b/scripts/.local/bin/personal/eve @@ -0,0 +1,3 @@ +#!/bin/bash + +wally "$(ls /home/me/images/wallpapers | dmenu)" diff --git a/scripts/.local/bin/personal/extract b/scripts/.local/bin/personal/extract new file mode 100755 index 0000000..b51c413 --- /dev/null +++ b/scripts/.local/bin/personal/extract @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +if [ -f $1 ] ; then + case $1 in + *.tar.bz2) tar -xvjf $1 --one-top-level ;; + *.tar.gz) tar -xvzf $1 --one-top-level ;; + # *.bz2) bunzip2 $1 ;; + *.rar) unrar x $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xf $1 ;; + *.tbz2) tar xjf $1 ;; + *.tgz) tar xzf $1 ;; + *.zip) unzip $1 ;; + # *.Z) uncompress $1;; + # * .7z) 7z x $1 ;; + *.deb) ar x $1 ;; + *.tar.xz) tar xf $1 ;; + *.tar.zst) tar xf $1 ;; + *) echo "'$1' cannot be extracted via ex()" ;; + esac +else + echo "'$1' is not a valid file" +fi diff --git a/scripts/.local/bin/personal/getibusinput b/scripts/.local/bin/personal/getibusinput new file mode 100755 index 0000000..4d52273 --- /dev/null +++ b/scripts/.local/bin/personal/getibusinput @@ -0,0 +1,11 @@ +#!/bin/bash + +STRING="$(ibus read-config | grep -o engines-order:.* | sed 's/engines-order: \[\|\]\|,//g' | awk '{ print $1 }')" + +if [[ "$STRING" == "'xkb:de::deu'" ]]; then + echo "DE" +elif [[ "$STRING" == "'anthy'" ]]; then + echo "JA" +elif [[ "$STRING" == "'xkb:de:ru:rus'" ]]; then + echo "RU" +fi diff --git a/scripts/.local/bin/personal/hdmi b/scripts/.local/bin/personal/hdmi new file mode 100755 index 0000000..ea687ef --- /dev/null +++ b/scripts/.local/bin/personal/hdmi @@ -0,0 +1,14 @@ +#!/bin/bash + +# HDMI_ACTIVE="$(xrandr | grep ' connected' | grep 'HDMI' | awk '{print $1}')" + +# if [[ ! -z "$HDMI_ACTIVE" ]]; then +# echo "active" +# fi + +HDMI_ACTIVE="$(grep '^connected' /sys/class/drm/card0/*HDMI*/status)" + +if [[ ! -z "$HDMI_ACTIVE" ]]; then + echo active +fi + diff --git a/scripts/.local/bin/personal/hdqwallsdownload b/scripts/.local/bin/personal/hdqwallsdownload new file mode 100755 index 0000000..72498a9 --- /dev/null +++ b/scripts/.local/bin/personal/hdqwallsdownload @@ -0,0 +1,34 @@ +#!/bin/bash + +# A utility to download all images from a specific website give the exact url + +# https://hdqwalls.com/2880x1800/anime-girl-wallpapers/page/2 +# https://hdqwalls.com/search?q=Genshin+Impact&page=2 + +FILE="/tmp/wallpaperhtml" + +download() { + curl -s "$1" > "$FILE" + + IMAGES=$(cat "$FILE" | pup img.thumbnail | grep -o '"http[^"]\+"' | sed 's/\/wallpapers\/thumb/\/download/g' | sed 's/.jpg"$/-2880x1800.jpg/g' | sed 's/"//g') + COUNTER=0 + + for IMG in $IMAGES; do + let COUNTER++ + NAME="$(basename $IMG)" + + echo "[ Download ] ($COUNTER) $NAME" + curl -s "$IMG" > "$NAME" + sleep 2 + done + + echo -e "\nFinished!" +} + +if [[ -z "$1" ]]; then + echo "[ Error ] Please provide a URL" + exit 1 +fi + +download "$1" + diff --git a/scripts/.local/bin/personal/infoboard b/scripts/.local/bin/personal/infoboard new file mode 100755 index 0000000..a220709 --- /dev/null +++ b/scripts/.local/bin/personal/infoboard @@ -0,0 +1,25 @@ +#!/bin/bash + +# bspc desktop -f '^11' && +# +# windows="$(bspc query -N -d '^11' -n .window)" +# +# if [ "$windows" = "2" ] +# then + # exit 0; +# else + # for number in {$windows} + # do + # bspc node -c && sleep 0.1 + # done +# + # kitty zsh -c ". ~/.config/zsh/.zshrc; zeit" & + # kitty zsh -c ". ~/.config/zsh/.zshrc; cmatrix" & +# fi + +if [[ -n "$(eww windows | grep -o '\*')" ]]; then + eww close info +else + eww open info +fi + diff --git a/scripts/.local/bin/personal/kivytest b/scripts/.local/bin/personal/kivytest new file mode 100755 index 0000000..55699ed --- /dev/null +++ b/scripts/.local/bin/personal/kivytest @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +import kivy +import random + +from kivy.app import App +from kivy.uix.button import Button +from kivy.uix.boxlayout import BoxLayout + +red = [1,0,0,1] +green = [0,1,0,1] +blue = [0,0,1,1] +purple = [1,0,1,1] + +class h1(App): + def build(self): + layout = BoxLayout(padding=20) + colors = [red, green, blue, purple] + + for i in range(8): + btn = Button(text="Button #%s" % (i+1), + background_color=random.choice(colors) + ) + + layout.add_widget(btn) + return layout + +if __name__ == "__main__": + app = h1() + app.run() diff --git a/scripts/.local/bin/personal/klimperklamper b/scripts/.local/bin/personal/klimperklamper new file mode 100755 index 0000000..6bd15ad --- /dev/null +++ b/scripts/.local/bin/personal/klimperklamper @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 + +import random +import sys +import os + +slowLength = [ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2 ] +mediumLength = [ 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4 ] +fastLength = [ 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16 ] +notes = [ "c", "cis", "d", "dis", "e", "f", "fis", "g", "gis", "a", "ais", "b" ] +string = '\\version "2.22.1"\n\\header {\ntitle = "Die Dissonanz der Schulzeit"\nsubtitle = "Musik Klausurersatzleistung"\ncomposer = "David Penkowoj"\ncopyright = ""\ntagline = ""\n}\n\\score {\n\\fixed c\' {\n\\time 4/4\n\\tempo "Allegro" 4 = 160\n' + +variationDict = { + "normal": [], + "mirror": [], + "reverse": [], + "reverseMirror": [], +} + +def mirror(noteCopy): + result = [] + mirrorAxisNote = noteCopy[0] + baseIndex = notes.index(mirrorAxisNote) + + for note in noteCopy: + index = notes.index(note) + newNoteIndex = index + (- 2 * (index - baseIndex)) + + result.append(notes[newNoteIndex % len(notes)]) + + return result + +def reverse(noteCopy): + return noteCopy[::-1] + +def reverseMirror(noteCopy): + return mirror(noteCopy)[::-1] + +def randomVariation(rand): + rand = random.randrange(1, 5) + + if rand == 1: + return variationDict["normal"].copy(), "Grundreihe" + if rand == 2: + return variationDict["mirror"].copy(), "Umkehrung" + if rand == 3: + return variationDict["reverse"].copy(), "Krebs" + if rand == 4: + return variationDict["reverseMirror"].copy(), "Krebsumkehrung" + +def getLength(notesCopy, location): + lengthList = [] + + if location <= 1 or location >= 7: + lengthList = slowLength.copy() + elif location >= 3 and location <= 5: + lengthList = fastLength.copy() + else: + lengthList = mediumLength.copy() + + # asd + + return lengthList + +def changeLength(notesCopy, location): + for note in notesCopy: + index = notesCopy.index(note) + rand = random.choice(lengthList) + notesCopy[index] = (f"{note}{rand} ") + lengthList.remove(rand) + + return notesCopy + +def generateRows(): + notesCopy = notes.copy() + random.shuffle(notesCopy) + + variationDict["normal"] = notesCopy + variationDict["mirror"] = mirror(notesCopy) + variationDict["reverse"] = reverse(notesCopy) + variationDict["reverseMirror"] = reverseMirror(notesCopy) + +def makeMusescore(): + global string + + string = "#!/usr/local/bin/xdotool\n\n" + + generateRows() + + for i in range(4): + articualtedVariation, variationType = randomVariation(i) + getLength(articualtedVariation, i) + + variation = " ".join(articualtedVariation) + string = f"{string}type {variation}\nkey Enter\n" + + with open("/tmp/klimperklamper", "w") as file: + file.write(string) + file.close() + + os.system("nvim /tmp/klimperklamper") + +def makePDF(): + global string + + generateRows() + + for i in range(8): + articualtedVariation, variationType = randomVariation() + changeLength(articualtedVariation, i) + + variation = " ".join(articualtedVariation) + string = f"{string}\\mark \\markup \\smaller \\italic {variationType} {variation}|\\break\n" + string = string + "}\n\\midi {} \n\\layout {\nindent = 0\\mm\n}\n}" + + with open("/tmp/klimperklamper", "w") as file: + file.write(string) + file.close() + + os.system("nvim /tmp/klimperklamper") + os.system("lilypond -o /tmp/klimperklamper /tmp/klimperklamper") + os.system("zathura /tmp/klimperklamper.pdf") + +if __name__ == "__main__": + if sys.argv[1] == "musescore": + makeMusescore() + else: + makePDF() + diff --git a/scripts/.local/bin/personal/launchworkingenv b/scripts/.local/bin/personal/launchworkingenv new file mode 100755 index 0000000..5b35542 --- /dev/null +++ b/scripts/.local/bin/personal/launchworkingenv @@ -0,0 +1,5 @@ +#!/bin/bash + +# bspc desktop -f '^1' && +# kitty -d documents & +tabura & diff --git a/scripts/.local/bin/personal/lfub b/scripts/.local/bin/personal/lfub new file mode 100755 index 0000000..9012f50 --- /dev/null +++ b/scripts/.local/bin/personal/lfub @@ -0,0 +1,24 @@ +#!/bin/sh + +# This is a wrapper script for lb that allows it to create image previews with +# ueberzug. This works in concert with the lf configuration file and the +# lf-cleaner script. + +set -e + +cleanup() { + exec 3>&- + rm "$FIFO_UEBERZUG" +} + +if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then + lf "$@" +else + [ ! -d "$HOME/.cache/lf" ] && mkdir -p "$HOME/.cache/lf" + export FIFO_UEBERZUG="$HOME/.cache/lf/ueberzug-$$" + mkfifo "$FIFO_UEBERZUG" + ueberzug layer -s <"$FIFO_UEBERZUG" -p json & + exec 3>"$FIFO_UEBERZUG" + trap cleanup HUP INT QUIT TERM PWR EXIT + lf "$@" 3>&- +fi diff --git a/scripts/.local/bin/personal/lockscreen b/scripts/.local/bin/personal/lockscreen new file mode 100755 index 0000000..bf4e825 --- /dev/null +++ b/scripts/.local/bin/personal/lockscreen @@ -0,0 +1,8 @@ +#!/bin/bash + +[ -e "/tmp/lockscrot.png" ] && sudo rm /tmp/lockscrot.png +[ -e "/etc/lightdm/lockscreen.png" ] && sudo rm /etc/lightdm/lockscreen.png + +scrot -e 'sudo mv -f $f /tmp/lockscrot.png' +sudo convert /tmp/lockscrot.png -filter Gaussian -blur 0x15 /etc/lightdm/lockscreen.png +dm-tool lock diff --git a/scripts/.local/bin/personal/mats b/scripts/.local/bin/personal/mats new file mode 100755 index 0000000..ba299a8 --- /dev/null +++ b/scripts/.local/bin/personal/mats @@ -0,0 +1,4 @@ +#!/bin/bash + +wmname LG3D +exec matlab -r "s = settings;s.matlab.desktop.DisplayScaleFactor.PersonalValue=2;quit" -nodesktop -nosplash diff --git a/scripts/.local/bin/personal/mountmenu b/scripts/.local/bin/personal/mountmenu new file mode 100755 index 0000000..1b5a007 --- /dev/null +++ b/scripts/.local/bin/personal/mountmenu @@ -0,0 +1,28 @@ +#!/bin/bash + +# Colors +BACKGROUND="#1A1A1A" +INACTIVE="#1F1F1F" +ACTIVE="#186673" +TEXT="#FFFFFF" + +# Launching +RESULT="$(echo "$(lsblk -l | awk '$3 == "1" {print $0}' | grep part)" | rofi -no-lazy-grab -dmenu \ +-display-drun "Applications :" -drun-display-format "{name}" \ +-hide-scrollbar true \ +-matching fuzzy \ +-bw 0 \ +-lines 5 \ +-line-padding 15 \ +-padding 20 \ +-width 50 \ +-font "Hack 20" \ +-color-enabled true \ +-color-window "$BACKGROUND, $BACKGROUND, $BACKGROUND" \ +-color-normal "$INACTIVE, $TEXT, $INACTIVE, $ACTIVE, $TEXT" | awk '{print $1}' )" + +mkdir -p /mnt/mount +sudo mount "/dev/$RESULT" /mnt/mount && notify-send "Erfolg" || notify-send "Fehler" + +# I like this font +# -font "Fantasque Sans Mono 20" \ diff --git a/scripts/.local/bin/personal/music b/scripts/.local/bin/personal/music new file mode 100755 index 0000000..54104b0 --- /dev/null +++ b/scripts/.local/bin/personal/music @@ -0,0 +1,12 @@ +#!/bin/bash + +STATE="$(mpc | grep -o playing)" +NAME="$(mpc current | xargs -i basename '{}')" +VOLUME="$(mpc volume | awk '{print $2}')" + +if [[ -n "$STATE" ]]; then + echo "MPD Playing: ${NAME%.*} ($VOLUME)" +else + echo "MPD Paused" +fi + diff --git a/scripts/.local/bin/personal/mute b/scripts/.local/bin/personal/mute new file mode 100755 index 0000000..1103c0e --- /dev/null +++ b/scripts/.local/bin/personal/mute @@ -0,0 +1,31 @@ +#!/bin/bash + +SOURCE="alsa_input.usb-R__DE_Microphones_R__DE_NT-USB_Mini_610BAACA-00.mono-fallback" + +if [[ "$1" == "shortstatus" ]]; then + VOLUME="$(pactl get-source-volume "$SOURCE" | grep -o [0-9]*%)" + + if [[ "$VOLUME" == "0%" ]]; then + echo "OFF" + else + echo "ON" + fi + + exit +fi + +if [[ "$1" == "status" ]]; then + NAME="$(pactl list sources | grep -o Description:.* | sed -n 's/Description: //g;2p')" + VOLUME="$(pactl get-source-volume "$SOURCE" | grep -o [0-9]*%)" + + echo "$NAME ($VOLUME)" + + exit +fi + +if [[ "$(pactl get-source-volume $SOURCE | grep -o [0-9]*%)" == "0%" ]]; then + pactl set-source-volume "$SOURCE" 70% +else + pactl set-source-volume "$SOURCE" 0% +fi + diff --git a/scripts/.local/bin/personal/pdfcompress b/scripts/.local/bin/personal/pdfcompress new file mode 100755 index 0000000..aa972ea --- /dev/null +++ b/scripts/.local/bin/personal/pdfcompress @@ -0,0 +1,4 @@ +#!/bin/bash + +gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="c_$1" "$1" + diff --git a/scripts/.local/bin/personal/pipes.sh b/scripts/.local/bin/personal/pipes.sh new file mode 100755 index 0000000..73346ef --- /dev/null +++ b/scripts/.local/bin/personal/pipes.sh @@ -0,0 +1,385 @@ +#!/usr/bin/env bash +# pipes.sh: Animated pipes terminal screensaver. +# https://github.com/pipeseroni/pipes.sh +# +# Copyright (c) 2015-2018 Pipeseroni/pipes.sh contributors +# Copyright (c) 2013-2015 Yu-Jie Lin +# Copyright (c) 2010 Matthew Simpson +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + + +VERSION=1.3.0 + +M=32768 # Bash RANDOM maximum + 1 +p=1 # number of pipes +f=75 # frame rate +s=13 # probability of straight fitting +r=2000 # characters limit +t=0 # iteration counter for -r character limit +w=80 # terminal size +h=24 + +# ab -> sets[][idx] = a*4 + b +# 0: up, 1: right, 2: down, 3: left +# 00 means going up , then going up -> ┃ +# 12 means going right, then going down -> ┓ +sets=( + "┃┏ ┓┛━┓ ┗┃┛┗ ┏━" + "│╭ ╮╯─╮ ╰│╯╰ ╭─" + "│┌ ┐┘─┐ └│┘└ ┌─" + "║╔ ╗╝═╗ ╚║╝╚ ╔═" + "|+ ++-+ +|++ +-" + "|/ \/-\ \|/\ /-" + ".. .... .... .." + ".o oo.o o.oo o." + "-\ /\|/ /-\/ \|" # railway + "╿┍ ┑┚╼┒ ┕╽┙┖ ┎╾" # knobby pipe +) +SETS=() # rearranged all pipe chars into individul elements for easier access + +# pipes' +x=() # current position +y=() +l=() # current directions + # 0: up, 1: right, 2: down, 3: left +n=() # new directions +v=() # current types +c=() # current escape codes + +# selected pipes' +V=() # types (indexes to sets[]) +C=() # color indices for tput setaf +VN=0 # number of selected types +CN=0 # number of selected colors +E=() # pre-generated escape codes from BOLD, NOCOLOR, and C + +# switches +RNDSTART=0 # randomize starting position and direction +BOLD=1 +NOCOLOR=0 +KEEPCT=0 # keep pipe color and type + + +# print help message in 72-char width +print_help() { + local cgap + printf -v cgap '%*s' $((15 - ${#COLORS})) '' + cat <= 0 + is_N() { + [[ -n $1 && -z ${1//[0-9]} ]] + } + + + # test if $1 is a hexadecimal string + is_hex() { + [[ -n $1 && -z ${1//[0-9A-Fa-f]} ]] + } + + + # print error message for invalid argument to standard error, this + # - mimics getopts error message + # - use all positional parameters as error message + # - has a newline appended + # $arg and $OPTARG are the option name and argument set by getopts. + pearg() { + printf "%s: -$arg invalid argument -- $OPTARG; %s\n" "$0" "$*" >&2 + } + + + OPTIND=1 + while getopts "p:t:c:f:s:r:RBCKhv" arg; do + case $arg in + p) + if is_N "$OPTARG" && ((OPTARG > 0)); then + p=$OPTARG + else + pearg 'must be an integer and greater than 0' + return 1 + fi + ;; + t) + if [[ "$OPTARG" = c???????????????? ]]; then + V+=(${#sets[@]}) + sets+=("${OPTARG:1}") + elif is_N "$OPTARG" && ((OPTARG < ${#sets[@]})); then + V+=($OPTARG) + else + pearg 'must be an integer and from 0 to' \ + "$((${#sets[@]} - 1)); or a custom type" + return 1 + fi + ;; + c) + if [[ $OPTARG == '#'* ]]; then + if ! is_hex "${OPTARG:1}"; then + pearg 'unrecognized hexadecimal string' + return 1 + fi + if ((16$OPTARG >= COLORS)); then + pearg 'hexadecimal must be from #0 to' \ + "#$(printf '%X' $((COLORS - 1)))" + return 1 + fi + C+=($((16$OPTARG))) + elif is_N "$OPTARG" && ((OPTARG < COLORS)); then + C+=($OPTARG) + else + pearg "must be an integer and from 0 to $((COLORS - 1));" \ + 'or a hexadecimal string with # prefix' + return 1 + fi + ;; + f) + if is_N "$OPTARG" && ((OPTARG >= 20 && OPTARG <= 100)); then + f=$OPTARG + else + pearg 'must be an integer and from 20 to 100' + return 1 + fi + ;; + s) + if is_N "$OPTARG" && ((OPTARG >= 5 && OPTARG <= 15)); then + s=$OPTARG + else + pearg 'must be an integer and from 5 to 15' + return 1 + fi + ;; + r) + if is_N "$OPTARG"; then + r=$OPTARG + else + pearg 'must be a non-negative integer' + return 1 + fi + ;; + R) RNDSTART=1;; + B) BOLD=0;; + C) NOCOLOR=1;; + K) KEEPCT=1;; + h) + print_help + exit 0 + ;; + v) echo "$(basename -- "$0") $VERSION" + exit 0 + ;; + *) + return 1 + esac + done + + shift $((OPTIND - 1)) + if (($#)); then + printf "$0: illegal arguments -- $*; no arguments allowed\n" >&2 + return 1 + fi +} + + +cleanup() { + # clear out standard input + read -t 0.001 && cat /dev/null + + tput reset # fix for konsole, see pipeseroni/pipes.sh#43 + tput rmcup + tput cnorm + stty echo + printf "$SGR0" + exit 0 +} + + +resize() { + w=$(tput cols) h=$(tput lines) +} + + +init_pipes() { + # +_CP_init_pipes + local i + + ci=$((KEEPCT ? 0 : CN * RANDOM / M)) + vi=$((KEEPCT ? 0 : VN * RANDOM / M)) + for ((i = 0; i < p; i++)); do + (( + n[i] = 0, + l[i] = RNDSTART ? RANDOM % 4 : 0, + x[i] = RNDSTART ? w * RANDOM / M : w / 2, + y[i] = RNDSTART ? h * RANDOM / M : h / 2, + v[i] = V[vi] + )) + c[i]=${E[ci]} + ((ci = (ci + 1) % CN, vi = (vi + 1) % VN)) + done + # -_CP_init_pipes +} + + +init_screen() { + stty -echo + tput smcup + tput civis + tput clear + trap cleanup HUP TERM + + resize + trap resize SIGWINCH +} + + +main() { + # simple pre-check of TERM, tput's error message should be enough + tput -T "$TERM" sgr0 >/dev/null || return $? + + # +_CP_init_termcap_vars + COLORS=$(tput colors) # COLORS - 1 == maximum color index for -c argument + SGR0=$(tput sgr0) + SGR_BOLD=$(tput bold) + # -_CP_init_termcap_vars + + parse "$@" || return $? + + # +_CP_init_VC + # set default values if not by options + ((${#V[@]})) || V=(0) + VN=${#V[@]} + ((${#C[@]})) || C=(1 2 3 4 5 6 7 0) + CN=${#C[@]} + # -_CP_init_VC + + # +_CP_init_E + # generate E[] based on BOLD (SGR_BOLD), NOCOLOR, and C for each element in + # C, a corresponding element in E[] = + # SGR0 + # + SGR_BOLD, if BOLD + # + tput setaf C, if !NOCOLOR + local i + for ((i = 0; i < CN; i++)) { + E[i]=$SGR0 + ((BOLD)) && E[i]+=$SGR_BOLD + ((NOCOLOR)) || E[i]+=$(tput setaf ${C[i]}) + } + # -_CP_init_E + + # +_CP_init_SETS + local i j + for ((i = 0; i < ${#sets[@]}; i++)) { + for ((j = 0; j < 16; j++)) { + SETS+=("${sets[i]:j:1}") + } + } + unset i j + # -_CP_init_SETS + + init_screen + init_pipes + + # any key press exits the loop and this script + trap 'break 2' INT + + local i + while REPLY=; do + read -t 0.0$((1000 / f)) -n 1 2>/dev/null + case "$REPLY" in + P) ((s = s < 15 ? s + 1 : s));; + O) ((s = s > 3 ? s - 1 : s));; + F) ((f = f < 100 ? f + 1 : f));; + D) ((f = f > 20 ? f - 1 : f));; + B) ((BOLD = (BOLD + 1) % 2));; + C) ((NOCOLOR = (NOCOLOR + 1) % 2));; + K) ((KEEPCT = (KEEPCT + 1) % 2));; + ?) break;; + esac + for ((i = 0; i < p; i++)); do + # New position: + # l[] direction = 0: up, 1: right, 2: down, 3: left + # +_CP_newpos + ((l[i] % 2)) && ((x[i] += -l[i] + 2, 1)) || ((y[i] += l[i] - 1)) + # -_CP_newpos + + # Loop on edges (change color on loop): + # +_CP_warp + ((!KEEPCT && (x[i] >= w || x[i] < 0 || y[i] >= h || y[i] < 0))) \ + && { c[i]=${E[CN * RANDOM / M]}; ((v[i] = V[VN * RANDOM / M])); } + ((x[i] = (x[i] + w) % w, + y[i] = (y[i] + h) % h)) + # -_CP_warp + + # new turning direction: + # $((s - 1)) in $s, going straight, therefore n[i] == l[i]; + # and 1 in $s that pipe makes a right or left turn + # + # s * RANDOM / M - 1 == 0 + # n[i] == -1 + # => n[i] == l[i] + 1 or l[i] - 1 + # +_CP_newdir + (( + n[i] = s * RANDOM / M - 1, + n[i] = n[i] >= 0 ? l[i] : l[i] + (2 * (RANDOM % 2) - 1), + n[i] = (n[i] + 4) % 4 + )) + # -_CP_newdir + + # Print: + # +_CP_print + printf '\e[%d;%dH%s%s' \ + $((y[i] + 1)) $((x[i] + 1)) ${c[i]} \ + "${SETS[v[i] * 16 + l[i] * 4 + n[i]]}" + # -_CP_print + l[i]=${n[i]} + done + ((r > 0 && t * p >= r)) && tput reset && tput civis && t=0 || ((t++)) + done + + cleanup +} + + +# when being sourced, $0 == bash, only invoke main when they are the same +[[ "$0" != "$BASH_SOURCE" ]] || main "$@" diff --git a/scripts/.local/bin/personal/powermenu b/scripts/.local/bin/personal/powermenu new file mode 100755 index 0000000..0a26582 --- /dev/null +++ b/scripts/.local/bin/personal/powermenu @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +UPTIME=$(uptime -p | sed -e 's/up //g') +DWM_PID="$(pidof dwm)" + +OPTION_CANCEL="Cancel" +OPTION_SHUTDOWN="Shutdown" +OPTION_REBOOT="Restart" +OPTION_LOGOUT="Logout" +OPTION_LOCK="Lock" + +OPTIONS="$OPTION_CANCEL\n$OPTION_SHUTDOWN\n$OPTION_REBOOT\n$OPTION_LOCK\n$OPTION_LOGOUT" +SELECTED="$(echo -e "$OPTIONS" | dmenu -i -l 5 -p "Uptime: $UPTIME" -z 700 -h 30 -y 900 -x 1090 -fn 'JetBrains Mono:size=19')" + +case $SELECTED in + $OPTION_SHUTDOWN) + sudo systemctl poweroff + ;; + $OPTION_REBOOT) + sudo systemctl reboot + ;; + $OPTION_LOCK) + slock + ;; + $OPTION_LOGOUT) + kill -TERM $DWM_PID + ;; +esac diff --git a/scripts/.local/bin/personal/prepare b/scripts/.local/bin/personal/prepare new file mode 100755 index 0000000..bb6d231 --- /dev/null +++ b/scripts/.local/bin/personal/prepare @@ -0,0 +1,9 @@ +#!/bin/bash + +# sudo networkctl up enp0s31f6 +# sudo dhcpcd enp0s31f6 + +xset -dpms +xset s noblank +xset s off + diff --git a/scripts/.local/bin/personal/retab b/scripts/.local/bin/personal/retab new file mode 100755 index 0000000..f1b63c6 --- /dev/null +++ b/scripts/.local/bin/personal/retab @@ -0,0 +1,12 @@ +#!/bin/bash + +currentid=$(xdotool getwindowfocus) +tabbedid=$(xdotool search --class tabbed | tail -n1) +childid="$(xwininfo -id $tabbedid -children | awk 'NR==7 {print $1}')" + +if [[ $currentid -eq $childid ]]; then + xdotool windowreparent $childid "$(xwininfo -root | awk '/Window id:/ {print $4}')" +else + xdotool windowreparent $currentid $tabbedid +fi + diff --git a/scripts/.local/bin/personal/rica b/scripts/.local/bin/personal/rica new file mode 100755 index 0000000..5004785 --- /dev/null +++ b/scripts/.local/bin/personal/rica @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 + +# A script to update the colors in specific config files for easy ricing. +# Depenencies: +# By David Penkowoj, 2022-03-18 + +import os + +# Get colors and loop over relevant configs +def replace_color_configs(): + with open("/home/me/.cache/wal/oldcolors") as old_color_file: + old_colors = [ color.replace("\n", "") for color in old_color_file.readlines() ] + + with open("/home/me/.cache/wal/colors") as new_color_file: + new_colors = [ color.replace("\n", "") for color in new_color_file.readlines() ] + + for config in relevant: + config(old_colors, new_colors) + +def find_and_replace_config(file_path, old_colors, new_colors): + with open(file_path, "r") as file: + data = file.read() + + for color in old_colors: + if data.find(color) != -1: + index = old_colors.index(color) + data = data.replace(color, new_colors[index]) + + with open(file_path, "w") as file: + file.write(data) + +# Change config for zathura +def change_zathura(old_colors, new_colors): + file_path = "/home/me/.config/zathura/zathurarc" + + find_and_replace_config(file_path, old_colors, new_colors) + +def change_qutebrowser(old_colors, new_colors): + file_path = "/home/me/.config/qutebrowser/config.py" + + find_and_replace_config(file_path, old_colors, new_colors) + +# change_nvim +# change_dunst, + +relevant = [ + change_zathura, + change_qutebrowser, +] + +if __name__ == "__main__": + os.system('xrdb merge "$HOME/.cache/wal/colors.Xresources"') + replace_color_configs() diff --git a/scripts/.local/bin/personal/rmbackup b/scripts/.local/bin/personal/rmbackup new file mode 100755 index 0000000..1d1a241 --- /dev/null +++ b/scripts/.local/bin/personal/rmbackup @@ -0,0 +1,29 @@ +#!/bin/bash + +HOST="root@remarkable" +DEST="$HOME/documents/remarkable/backup/$(date +%Y-%m-%d)" + +ERRORS=0 + +function loglin() { printf "\e[1;$1m%.s─\e[1;30m" $(seq 1 $(tput cols)) ; } + +function loginf() { loglin 34 ; echo -e "\e[1;34m[ Info ]\e[1;30m $1" ; loglin 34 ; } +function logerr() { ((ERRORS=ERRORS+1)) ; loglin 31 ; echo -e "\e[1;31m[ Error ]\e[1;30m $1" ; loglin 31 ; } + +function copyfrom() { + scp -r "$1" "$2" && + loginf "Successfully backed up data: $1 → $2" || + logerr "Failed to back up data: $1 → $2" ; +} + +mkdir -p "$DEST/files" && cd "$DEST" && +loginf "Created backup directory at $DEST/" || +logerr "Failed to create back up directory" ; + +copyfrom "$HOST:/usr/share/remarkable" "$DEST" +copyfrom "$HOST:~/.local/share/remarkable/xochitl" "$DEST/files" +copyfrom "$HOST:~/.config/remarkable/xochitl.conf" "$DEST/xochitl.conf" +copyfrom "$HOST:/usr/bin/xochitl" "$DEST/xochitl" + +echo -e "\n" +loginf "\e[0mFinished back up with $ERRORS error(s)!" diff --git a/scripts/.local/bin/personal/rotdir b/scripts/.local/bin/personal/rotdir new file mode 100755 index 0000000..86da6db --- /dev/null +++ b/scripts/.local/bin/personal/rotdir @@ -0,0 +1,12 @@ +#!/bin/sh + +# When I open an image from the file manager in sxiv (the image viewer), I want +# to be able to press the next/previous keys to key through the rest of the +# images in the same directory. This script "rotates" the content of a +# directory based on the first chosen file, so that if I open the 15th image, +# if I press next, it will go to the 16th etc. Autistic, I know, but this is +# one of the reasons that sxiv is great for being able to read standard input. + +[ -z "$1" ] && echo "usage: rotdir regex 2>&1" && exit 1 +base="$(basename "$1")" +ls "$PWD" | awk -v BASE="$base" 'BEGIN { lines = ""; m = 0; } { if ($0 == BASE) { m = 1; } } { if (!m) { if (lines) { lines = lines"\n"; } lines = lines""$0; } else { print $0; } } END { print lines; }' diff --git a/scripts/.local/bin/personal/tabmenu b/scripts/.local/bin/personal/tabmenu new file mode 100755 index 0000000..4c0404b --- /dev/null +++ b/scripts/.local/bin/personal/tabmenu @@ -0,0 +1,25 @@ +#!/bin/bash + +# Colors +BACKGROUND="#1A1A1A" +INACTIVE="#1F1F1F" +ACTIVE="#186673" +TEXT="#FFFFFF" + +# Launching +rofi -no-lazy-grab -show windowcd \ +-display-drun "Applications :" -drun-display-format "{name}" \ +-hide-scrollbar true \ +-matching fuzzy \ +-bw 0 \ +-lines 5 \ +-line-padding 15 \ +-padding 20 \ +-width 50 \ +-font "Hack 20" \ +-color-enabled true \ +-color-window "$BACKGROUND, $BACKGROUND, $BACKGROUND" \ +-color-normal "$INACTIVE, $TEXT, $INACTIVE, $ACTIVE, $TEXT" \ + +# I like this font +# -font "Fantasque Sans Mono 20" \ diff --git a/scripts/.local/bin/personal/tabura b/scripts/.local/bin/personal/tabura new file mode 100755 index 0000000..1ebdece --- /dev/null +++ b/scripts/.local/bin/personal/tabura @@ -0,0 +1,3 @@ +#!/bin/bash + +tabbed -c zathura -e diff --git a/scripts/.local/bin/personal/trans b/scripts/.local/bin/personal/trans new file mode 100755 index 0000000..755b5cf --- /dev/null +++ b/scripts/.local/bin/personal/trans @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 + +# A script to fetch information from https://dict.cc/ and display it in the terminal +# Depends on: python3, beautifulsoup4, tabulate, pynput, requests +# By David Penkowoj, 2021/01/11 + +# https://stackoverflow.com/questions/65328213/how-to-prevent-certain-certain-keys-from-sending-input-in-python + +import sys +import requests +from pynput import keyboard +from tabulate import tabulate +from bs4 import BeautifulSoup + +index = 0 +entry = "Allgemein" +dictionary = {} +found_rows = [] +keys = [] + +def get_file(): + file = "/tmp/$1.dictcc" + link = "http://www.dict.cc/?s=" + sys.argv[1] + agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36" + headers = { "User-Agent": agent } + + return requests.get(link, headers = headers, allow_redirects=True) + +def setup(): + file = get_file() + + parsed = BeautifulSoup(file.content, features = "html5lib") + + found_table = parsed.body.find("table", attrs = {"cellspacing": "1"}) + + global found_rows + found_rows = found_table.find_all("tr") + found_rows[0].decompose() + + print(found_rows[1].text + "\n") + found_rows[1].decompose() + + global dictionary + dictionary = {entry: []} + +def add_translation(items): + global entry + global dictionary + translation = []; + + for item in items: + translation.append(item.text) + if len(translation) == 0: + continue + + dictionary[entry].append(translation) + +def stop(): + print(chr(27) + "[2J") + print("Exit") + sys.exit(0); + +def showpage(key): + global index + if not safe_index(index): + stop() + + print(chr(27) + "[2J") + print(tabulate(dictionary[key], [key.ljust(60, " "), "-".ljust(60, " ")], tablefmt="fancy_grid")) + print("\n[j] next, [k] previous, [q] quit") + +def safe_index(i): + if i >= 0 and i < len(keys): + return True + return False + +def on_press(key): + global index + + if "char" in dir(key): + if key.char == 'q' or not safe_index(index): + stop() + + if key.char == 'j': + index=(index + 1) + if key.char == 'k': + index=(index - 1) + + showpage(keys[index]) + +def main(): + global keys + global found_rows + for row in found_rows: + found_items = row.find_all("td", attrs = {"dir": "ltr"}) + if len(found_items) == 0: + found_items = row.find_all("td", attrs = {"colspan": "4"}) + if len(found_items) == 1: + global entry + global dictionary + entry = found_items[0].text + dictionary[entry] = [] + continue + else: + continue + + #dfn div + + add_translation(found_items) + + keys = list(dictionary) + showpage(keys[index]) + + with keyboard.Listener(suppress=True, on_press=on_press) as listener: + listener.join() + +setup() +main() + diff --git a/scripts/.local/bin/personal/volctl b/scripts/.local/bin/personal/volctl new file mode 100755 index 0000000..6dc6e6b --- /dev/null +++ b/scripts/.local/bin/personal/volctl @@ -0,0 +1,22 @@ +#!/bin/bash + +# A script to manage the volume on my system universally + +sink="$(pactl list short sinks | grep "pci-0000_00_1b.0" | awk '{print $1}')" +volume="$(pamixer --get-volume)" + +if [ "$1" = "increase" ] +then + pactl set-sink-volume "$sink" +5% +elif [ "$1" = "decrease" ] +then + pactl set-sink-volume "$sink" -5% +elif [ "$1" = "mute" ] +then + pactl set-sink-volume "$sink" 0% +elif [ "$1" = "check" ] +then + printf "%s\n" "$volume" +else + printf "[ Error ] Not enough arguments.\n" +fi diff --git a/scripts/.local/bin/personal/wally b/scripts/.local/bin/personal/wally new file mode 100755 index 0000000..91ab90e --- /dev/null +++ b/scripts/.local/bin/personal/wally @@ -0,0 +1,56 @@ +#!/bin/bash + +# A script to generate a theme for my system (auto-rice) +# Dependencies: pywal, feh, xdotool +# By David Penkowoj, 2022-01-31 + +# Usage: wally {path to image} [backend] [saturation value] + +backend="colorz" +saturation="0.5" +wallpaperDir="$HOME/images/wallpapers" +cachedWallpaperFile="$HOME/.config/wallpaper" + +setTheme() { + echo "Overwriting previous color backup with current colors." + mv "$HOME/.cache/wal/colors" "$HOME/.cache/wal/oldcolors" + echo "Generating new color scheme." + wal -i "$1" -q -b "#1a1a1a" --saturate "$saturation" + echo "Caching wallpaper." + cp "$1" "$cachedWallpaperFile" + echo "Setting wallpaper." + feh --bg-fill "$cachedWallpaperFile" + echo "Updating various software with rica." + rica + echo "Refreshing window manager." + xdotool key Super_L+r +} + +if [[ -n "$3" ]]; then + echo "Got saturation value '$3'." + saturation="$3" +else + echo "Did not recieve saturation value as third argument" +fi + +if [[ -n "$2" ]]; then + echo "Got backend value '$2'." + backend="$2" +else + echo "Did not recieve backend value as second argument" +fi + +if [[ -f "$1" ]]; then + echo "Image found in relative directory." + setTheme "$1" +else + echo "File not found, searching wallpaper directory." + + if [[ -f "$wallpaperDir/$1" ]]; then + echo "Image found in wallpaper directory." + setTheme "$wallpaperDir/$1" + else + echo "No image found." + fi +fi + diff --git a/scripts/.local/bin/personal/zeit b/scripts/.local/bin/personal/zeit new file mode 100755 index 0000000..f31894d --- /dev/null +++ b/scripts/.local/bin/personal/zeit @@ -0,0 +1,5 @@ +#!/bin/bash + +# Don't ask. It's really weird and painful to explain. + +tty-clock -C 3 -f %d.%m.%Y -sc diff --git a/scripts/compile b/scripts/compile deleted file mode 100755 index f038562..0000000 --- a/scripts/compile +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash - -# A script to compile any (here defined) type of text file to a target format -# Depends on: bash, basename, pdflatex -# By David Penkowoj, 2021/08/02 - -# Function to compile .lp to .pdf files -LP_TO_PDF() { - lilypond "$1" --pdf -s -o "$2.pdf" && - printf "Successfully compiled %s to %s\n" "$1" "$2.pdf" || - printf "[ Error ] Couldn't compile %s\n" "$1" -} - -# Function to compile .md to .pdf files -MD_TO_PDF() { - pandoc "$1" -o "$2.pdf" && - printf "Successfully compiled %s to %s\n" "$1" "$2.pdf" || - printf "[ Error ] Couldn't compile %s\n" "$1" -} - -# Function to compile .tex to .pdf files without making a mess -TEX_TO_PDF() { - printf "If the script seems to hang, try pressing \n" - - pdflatex "$1" > /dev/null && - pdflatex "$1" > /dev/null && # This is to ensure certain tex elements being drawn - rm -rf "$2.toc" "$2.log" "$2.aux" && - printf "Successfully compiled %s to %s\n" "$2.tex" "$2.pdf" || - printf "[ Error ] Couldn't compile %s\n" "$2.tex" -} - -# Check if file exists -if [[ -e "$1" ]]; then - # Determine filename and extension - FILENAME="$(basename -- "$1")" - EXTENSION="${FILENAME##*.}" - - # Check if there is a extension at all - if [[ "$FILENAME" == "$EXTENSION" ]]; then - printf "[ Error ] The specified file has no extension\n" - exit 1 - fi - - # Do the respective compile actions - case "$EXTENSION" in - "tex") - TEX_TO_PDF "$1" "${FILENAME%.*}" - ;; - "md") - MD_TO_PDF "$1" "${FILENAME%.*}" - ;; - "lp") - LP_TO_PDF "$1" "${FILENAME%.*}" - ;; - "pov") - povray "$1" - ;; - *) - printf "[ Error ] There is no entry on how to handle '%s' files.\n" "$EXTENSION" - exit 1 - esac -fi - -exit 0 diff --git a/scripts/compresspdf b/scripts/compresspdf deleted file mode 100755 index 704f2eb..0000000 --- a/scripts/compresspdf +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# PDF Compressor -# Dependencies: ghostscript - -[[ -e $1 ]] && gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile="${1}_compressed.pdf" "$1" && printf "done" || printf "error" diff --git a/scripts/dlmusic b/scripts/dlmusic deleted file mode 100755 index aeda290..0000000 --- a/scripts/dlmusic +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# A script to not make me type all that argument **** when I want to download music. -# Yes I am lazy. - -if [ "$1" ] -then - youtube-dl "$1" --extract-audio -i -o "%(title)s.%(ext)s" --audio-format mp3 - exit 0 -else - printf "[ Error ] Not enough arguments.\n" - exit 1 -fi diff --git a/scripts/getibusinput b/scripts/getibusinput deleted file mode 100755 index 4d52273..0000000 --- a/scripts/getibusinput +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -STRING="$(ibus read-config | grep -o engines-order:.* | sed 's/engines-order: \[\|\]\|,//g' | awk '{ print $1 }')" - -if [[ "$STRING" == "'xkb:de::deu'" ]]; then - echo "DE" -elif [[ "$STRING" == "'anthy'" ]]; then - echo "JA" -elif [[ "$STRING" == "'xkb:de:ru:rus'" ]]; then - echo "RU" -fi diff --git a/scripts/music b/scripts/music deleted file mode 100755 index 54104b0..0000000 --- a/scripts/music +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -STATE="$(mpc | grep -o playing)" -NAME="$(mpc current | xargs -i basename '{}')" -VOLUME="$(mpc volume | awk '{print $2}')" - -if [[ -n "$STATE" ]]; then - echo "MPD Playing: ${NAME%.*} ($VOLUME)" -else - echo "MPD Paused" -fi - diff --git a/scripts/mute b/scripts/mute deleted file mode 100755 index 1103c0e..0000000 --- a/scripts/mute +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -SOURCE="alsa_input.usb-R__DE_Microphones_R__DE_NT-USB_Mini_610BAACA-00.mono-fallback" - -if [[ "$1" == "shortstatus" ]]; then - VOLUME="$(pactl get-source-volume "$SOURCE" | grep -o [0-9]*%)" - - if [[ "$VOLUME" == "0%" ]]; then - echo "OFF" - else - echo "ON" - fi - - exit -fi - -if [[ "$1" == "status" ]]; then - NAME="$(pactl list sources | grep -o Description:.* | sed -n 's/Description: //g;2p')" - VOLUME="$(pactl get-source-volume "$SOURCE" | grep -o [0-9]*%)" - - echo "$NAME ($VOLUME)" - - exit -fi - -if [[ "$(pactl get-source-volume $SOURCE | grep -o [0-9]*%)" == "0%" ]]; then - pactl set-source-volume "$SOURCE" 70% -else - pactl set-source-volume "$SOURCE" 0% -fi - diff --git a/scripts/prepare b/scripts/prepare deleted file mode 100755 index bb6d231..0000000 --- a/scripts/prepare +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -# sudo networkctl up enp0s31f6 -# sudo dhcpcd enp0s31f6 - -xset -dpms -xset s noblank -xset s off - diff --git a/sxhkd/.config/sxhkd/mediarc b/sxhkd/.config/sxhkd/mediarc new file mode 100644 index 0000000..91ef9c6 --- /dev/null +++ b/sxhkd/.config/sxhkd/mediarc @@ -0,0 +1,114 @@ +### ESSENTIALS + +## Restart sxhkd +super + alt + s + pkill -USR1 -x sxhkd + +## Reparent Window to tabbed +super + t + retab + +## Take a Screenshot +super + p + flameshot full -p /home/me/images/screenshots + +## Take a cropped Screenshot +super + shift + p + flameshot full -p /home/me/images/screenshots + +## Mountmenu +## Powermenu +## Theme changer? + +### MEDIA + +## Monitor brightness down by 1 +XF86MonBrightnessDown + brightness smalldown monitor; \ + dunstify -u low -r "110" "Monitor: $(xbacklight -get)%" + +## Monitor brightness up by 1 +XF86MonBrightnessUp + brightness smallup monitor; \ + dunstify -u low -r "110" "Monitor: $(xbacklight -get)%" + +## Monitor brightness down by 5 +shift + XF86MonBrightnessDown + brightness down monitor; \ + dunstify -u low -r "110" "Monitor: $(xbacklight -get)%" + +## Monitor brightness up by 5 +shift + XF86MonBrightnessUp + brightness up monitor; \ + dunstify -u low -r "110" "Monitor: $(xbacklight -get)%" + +## Remove redshift +super + XF86MonBrightnessDown + redshift -x + +## Set redshift +super + XF86MonBrightnessUp + redshift -P -O 3500 + +## Turn off wifi +super + XF86KbdBrightnessDown + nmcli radio all off + +## Turn on wifi +super + XF86KbdBrightnessUp + nmcli radio all on + +## Keyboard brightness down by 1 +XF86KbdBrightnessDown + brightness smalldown keyboard; \ + dunstify -u low -r "110" "Keyboard: $(brightnessctl --device='smc::kbd_backlight' g)" + +## Keyboard brightness up by 1 +XF86KbdBrightnessUp + brightness smallup keyboard; \ + dunstify -u low -r "110" "Keyboard: $(brightnessctl --device='smc::kbd_backlight' g)" + +## Keyboard brightness down by 5 +shift + XF86KbdBrightnessDown + brightness down keyboard; \ + dunstify -u low -r "110" "Keyboard: $(brightnessctl --device='smc::kbd_backlight' g)" + +## Keyboard brightness up by 5 +shift + XF86KbdBrightnessUp + brightness up keyboard; \ + dunstify -u low -r "110" "Keyboard: $(brightnessctl --device='smc::kbd_backlight' g)" + +## Play/Pause media +XF86AudioPlay + playerctl play-pause + +## Next media +XF86AudioNext + playerctl next + +## Previous media +XF86AudioPrev + playerctl previous + +## Increase volume +XF86AudioRaiseVolume + volctl increase + +## Decrease volume +XF86AudioLowerVolume + volctl decrease + +## Mute volume +XF86AudioMute + volctl mute + +### LAUNCHERS + +## Launch document writing environment +XF86LaunchA + launchworkingenv + +## Launch infoboard +XF86LaunchB + infoboard + diff --git a/sxhkd/.config/sxhkd/sxhkdrc b/sxhkd/.config/sxhkd/sxhkdrc new file mode 100644 index 0000000..8cf659b --- /dev/null +++ b/sxhkd/.config/sxhkd/sxhkdrc @@ -0,0 +1,151 @@ +### ESSENTIALS + +## Terminal +super + Return + kitty + +## Rofi +super + @space + appmenu # rofi -show drun -theme ~/.cache/wal/colors-rofi-dark.rasi + +## Deth +super + alt + 0 + bspc quit + +## Reload sxhkd +super + alt + s + pkill -USR1 -x sxhkd + +## Reload bspwm +super + alt + b + bspc wm -r + +## Close window +super + q + bspc node -c + +## Kill window and parent +super + shift + q + bspc node -k + +## Mount script +super + m + mountmenu + + +### EXTENDED ESSENTIALS + +## Lock screen +super + l + dm-tool lock + +## Take a Screenshot +super + p + scrot -e 'mv $f ~/images/screenshots/ && notify-send -u normal "Screenshot Taken"' + +## Tab to next/previous node +super + {_,shift + }Tab + rofi -show window + #tabmenu + # bspc node -f {next,prev} + +## Set window state +super + {t,s,f} + bspc node -t {tiled,floating,fullscreen} + +## Focus or send to a workspace +super + {_,shift + }{1-9,0} + bspc {desktop -f,node -d} '^{1-9,10}' + + +### RESIZING AND POSITIONING + +## Expand a window +super + ctrl + {Left,Down,Up,Right} + bspc node -z {left -10 0,bottom 0 10,top 0 -10,right 10 0} + +## Contract a window +super + ctrl + shift + {Left,Down,Up,Right} + bspc node -z {right -10 0,top 0 10,bottom 0 -10,left 10 0} + +## Move a floating window +super + {Left,Down,Up,Right} + bspc node -v {-10 0,0 10,0 -10,10 0} + + +### MEDIA + +## Monitor brightness down by 1 +XF86MonBrightnessDown + brightness smalldown monitor; \ + dunstify -u low -r "110" "Monitor: $(xbacklight -get)%" + +## Monitor brightness up by 1 +XF86MonBrightnessUp + brightness smallup monitor; \ + dunstify -u low -r "110" "Monitor: $(xbacklight -get)%" + +## Monitor brightness down by 5 +super + XF86MonBrightnessDown + brightness down monitor; \ + dunstify -u low -r "110" "Monitor: $(xbacklight -get)%" + +## Monitor brightness up by 5 +super + XF86MonBrightnessUp + brightness up monitor; \ + dunstify -u low -r "110" "Monitor: $(xbacklight -get)%" + +## Keyboard brightness down by 1 +XF86KbdBrightnessDown + brightness smalldown keyboard; \ + dunstify -u low -r "110" "Keyboard: $(brightnessctl --device='smc::kbd_backlight' g)" + +## Keyboard brightness up by 1 +XF86KbdBrightnessUp + brightness smallup keyboard; \ + dunstify -u low -r "110" "Keyboard: $(brightnessctl --device='smc::kbd_backlight' g)" + +## Keyboard brightness down by 5 +super + XF86KbdBrightnessDown + brightness down keyboard; \ + dunstify -u low -r "110" "Keyboard: $(brightnessctl --device='smc::kbd_backlight' g)" + +## Keyboard brightness up by 5 +super + XF86KbdBrightnessUp + brightness up keyboard; \ + dunstify -u low -r "110" "Keyboard: $(brightnessctl --device='smc::kbd_backlight' g)" + +## Play/Pause media +XF86AudioPlay + playerctl play-pause + +## Next media +XF86AudioNext + playerctl next + +## Previous media +XF86AudioPrev + playerctl previous + +## Increase volume +XF86AudioRaiseVolume + volctl increase + +## Decrease volume +XF86AudioLowerVolume + volctl decrease + +## Mute volume +XF86AudioMute + volctl mute + + +### LAUNCHERS + +## Launch document writing environment +XF86LaunchA + launchworkingenv + +## Launch infoboard +XF86LaunchB + infoboard diff --git a/systemd/.config/systemd/user/brightness-persistence.service b/systemd/.config/systemd/user/brightness-persistence.service new file mode 100644 index 0000000..3dff020 --- /dev/null +++ b/systemd/.config/systemd/user/brightness-persistence.service @@ -0,0 +1,8 @@ +[Unit] +Description=persistent brightness across sessions + +[Service] +ExecStart=/home/me/.local/bin/brightness load + +[Install] +WantedBy=default.target diff --git a/systemd/.config/systemd/user/default.target.wants/brightness-persistence.service b/systemd/.config/systemd/user/default.target.wants/brightness-persistence.service new file mode 120000 index 0000000..0278c84 --- /dev/null +++ b/systemd/.config/systemd/user/default.target.wants/brightness-persistence.service @@ -0,0 +1 @@ +/home/me/.config/systemd/user/brightness-persistence.service \ No newline at end of file diff --git a/wal/.config/wal/templates/config.py b/wal/.config/wal/templates/config.py new file mode 100644 index 0000000..0438973 --- /dev/null +++ b/wal/.config/wal/templates/config.py @@ -0,0 +1,82 @@ +config.load_autoconfig(False) + +translucent = "#801a1a1a" +background = "#1a1a1a" +foreground = "#f0ede1" +accent = "#bace6d" + +c.zoom.default = "175%" +c.fonts.default_size = "20pt" +c.fonts.default_family = "Hack" + +c.downloads.location.prompt = False +c.downloads.location.remember = False +c.downloads.location.directory = "/home/me/downloads/" + +c.statusbar.widgets = ["keypress", "url", "scroll"] +c.statusbar.show = "in-mode" + +c.tabs.favicons.show = "never" +c.tabs.title.alignment = "center" +c.tabs.title.format = "{perc}{audio}{current_title}" + +# fileselect stuff + +c.colors.completion.category.bg = accent +c.colors.completion.category.fg = background +c.colors.completion.even.bg = background +c.colors.completion.odd.bg = background +c.colors.completion.item.selected.bg = foreground +c.colors.completion.item.selected.fg = background +c.colors.completion.item.selected.match.fg = accent +c.colors.completion.match.fg = accent +c.colors.completion.scrollbar.bg = background +c.colors.completion.scrollbar.fg = foreground + +c.colors.downloads.bar.bg = background +c.colors.downloads.error.bg = background +c.colors.downloads.error.fg = foreground +c.colors.downloads.start.bg = background +c.colors.downloads.start.fg = foreground +c.colors.downloads.stop.bg = background +c.colors.downloads.stop.fg = foreground + +c.colors.keyhint.bg = translucent +c.colors.keyhint.fg = foreground +c.colors.keyhint.suffix.fg = accent +c.colors.hints.bg = translucent +c.colors.hints.fg = foreground +c.hints.border = "none" +c.hints.radius = 0 + +c.colors.tabs.bar.bg = background +c.colors.tabs.even.bg = background +c.colors.tabs.even.fg = foreground +c.colors.tabs.odd.bg = background +c.colors.tabs.odd.fg = foreground +c.colors.tabs.indicator.error = accent +c.colors.tabs.indicator.start = foreground +c.colors.tabs.indicator.stop = background +c.colors.tabs.selected.even.bg = accent +c.colors.tabs.selected.even.fg = background +c.colors.tabs.selected.odd.bg = accent +c.colors.tabs.selected.odd.fg = background + +c.colors.statusbar.command.bg = background +c.colors.statusbar.command.fg = foreground +c.colors.statusbar.url.fg = foreground +c.colors.statusbar.url.warn.fg = accent +c.colors.statusbar.url.error.fg = accent +c.colors.statusbar.url.hover.fg = foreground +c.colors.statusbar.url.success.http.fg = foreground +c.colors.statusbar.url.success.https.fg = foreground + +c.colors.messages.error.bg = background +c.colors.messages.error.fg = foreground +c.colors.messages.error.border = background +c.colors.messages.info.bg = background +c.colors.messages.info.fg = foreground +c.colors.messages.info.border = background +c.colors.messages.warning.bg = background +c.colors.messages.warning.fg = foreground +c.colors.messages.warning.border = background diff --git a/wal/.config/wal/templates/zathurarc b/wal/.config/wal/templates/zathurarc new file mode 100644 index 0000000..a30e101 --- /dev/null +++ b/wal/.config/wal/templates/zathurarc @@ -0,0 +1,20 @@ +set selection-clipboard "clipboard" + +set window-title-basename true +set window-title-page false + +set default-bg "#1a1a1a" +set font "Hack normal 20" +set highlight-color "#ece4e4" +set highlight-active-color "#f30021" +set recolor-lightcolor "#1a1a1a" +set statusbar-bg "#1a1a1a" +set statusbar-fg "#ece4e4" +set inputbar-bg "#1a1a1a" +set inputbar-fg "#ece4e4" +set completion-fg "#ece4e4" +set completion-bg "#1a1a1a" +set completion-group-fg "#ece4e4" +set completion-group-bg "#f30021" +set completion-highlight-fg "#1a1a1a" +set completion-highlight-bg "#ece4e4" diff --git a/xorg/.Xmodmap b/xorg/.Xmodmap new file mode 100644 index 0000000..0a90c25 --- /dev/null +++ b/xorg/.Xmodmap @@ -0,0 +1,248 @@ +keycode 8 = +keycode 9 = Escape NoSymbol Escape +keycode 10 = 1 exclam 1 exclam onesuperior exclamdown onesuperior exclamdown +keycode 11 = 2 quotedbl 2 quotedbl twosuperior oneeighth twosuperior oneeighth +keycode 12 = 3 section 3 section threesuperior sterling threesuperior sterling +keycode 13 = 4 dollar 4 dollar onequarter currency onequarter currency +keycode 14 = 5 percent 5 percent onehalf threeeighths onehalf threeeighths +keycode 15 = 6 ampersand 6 ampersand notsign fiveeighths notsign fiveeighths +keycode 16 = 7 slash 7 slash braceleft seveneighths braceleft seveneighths +keycode 17 = 8 parenleft 8 parenleft bracketleft trademark bracketleft trademark +keycode 18 = 9 parenright 9 parenright bracketright plusminus bracketright plusminus +keycode 19 = 0 equal 0 equal braceright degree braceright degree +keycode 20 = ssharp question ssharp question backslash questiondown U1E9E backslash questiondown U1E9E +keycode 21 = dead_acute dead_grave dead_acute dead_grave dead_cedilla dead_ogonek dead_cedilla dead_ogonek +keycode 22 = BackSpace BackSpace BackSpace BackSpace +keycode 23 = Tab ISO_Left_Tab Tab ISO_Left_Tab +keycode 24 = q Q q Q at Greek_OMEGA at Greek_OMEGA +keycode 25 = w W w W U017F section U017F section +keycode 26 = e E e E EuroSign EuroSign EuroSign EuroSign +keycode 27 = r R r R paragraph registered paragraph registered +keycode 28 = t T t T tslash Tslash tslash Tslash +keycode 29 = z Z z Z leftarrow yen leftarrow yen +keycode 30 = u U u U downarrow uparrow downarrow uparrow +keycode 31 = i I i I rightarrow idotless rightarrow idotless +keycode 32 = o O o O oslash Oslash oslash Oslash +keycode 33 = p P p P thorn THORN thorn THORN +keycode 34 = udiaeresis Udiaeresis udiaeresis Udiaeresis dead_diaeresis dead_abovering dead_diaeresis dead_abovering +keycode 35 = plus asterisk plus asterisk asciitilde macron asciitilde macron +keycode 36 = Return NoSymbol Return +keycode 37 = Control_L NoSymbol Control_L +keycode 38 = a A a A ae AE ae AE +keycode 39 = s S s S U017F U1E9E U017F U1E9E +keycode 40 = d D d D eth ETH eth ETH +keycode 41 = f F f F dstroke ordfeminine dstroke ordfeminine +keycode 42 = g G g G eng ENG eng ENG +keycode 43 = h H h H hstroke Hstroke hstroke Hstroke +keycode 44 = j J j J dead_belowdot dead_abovedot dead_belowdot dead_abovedot +keycode 45 = k K k K kra ampersand kra ampersand +keycode 46 = l L l L lstroke Lstroke lstroke Lstroke +keycode 47 = odiaeresis Odiaeresis odiaeresis Odiaeresis dead_doubleacute dead_belowdot dead_doubleacute dead_belowdot +keycode 48 = adiaeresis Adiaeresis adiaeresis Adiaeresis dead_circumflex dead_caron dead_circumflex dead_caron +keycode 49 = less greater less greater bar dead_belowmacron bar dead_belowmacron +keycode 50 = Shift_L NoSymbol Shift_L +keycode 51 = numbersign apostrophe numbersign apostrophe rightsinglequotemark dead_breve rightsinglequotemark dead_breve +keycode 52 = y Y y Y guillemotright U203A guillemotright U203A +keycode 53 = x X x X guillemotleft U2039 guillemotleft U2039 +keycode 54 = c C c C cent copyright cent copyright +keycode 55 = v V v V doublelowquotemark singlelowquotemark doublelowquotemark singlelowquotemark +keycode 56 = b B b B leftdoublequotemark leftsinglequotemark leftdoublequotemark leftsinglequotemark +keycode 57 = n N n N rightdoublequotemark rightsinglequotemark rightdoublequotemark rightsinglequotemark +keycode 58 = m M m M mu masculine mu masculine +keycode 59 = comma semicolon comma semicolon periodcentered multiply periodcentered multiply +keycode 60 = period colon period colon U2026 division U2026 division +keycode 61 = minus underscore minus underscore endash emdash endash emdash +keycode 62 = Shift_R NoSymbol Shift_R +keycode 63 = KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply XF86ClearGrab KP_Multiply KP_Multiply XF86ClearGrab +keycode 64 = Alt_L Meta_L Alt_L Meta_L +keycode 65 = space NoSymbol space +keycode 66 = Caps_Lock NoSymbol Caps_Lock +keycode 67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1 F1 F1 XF86Switch_VT_1 +keycode 68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2 F2 F2 XF86Switch_VT_2 +keycode 69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3 F3 F3 XF86Switch_VT_3 +keycode 70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4 F4 F4 XF86Switch_VT_4 +keycode 71 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5 F5 F5 XF86Switch_VT_5 +keycode 72 = F6 F6 F6 F6 F6 F6 XF86Switch_VT_6 F6 F6 XF86Switch_VT_6 +keycode 73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7 F7 F7 XF86Switch_VT_7 +keycode 74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8 F8 F8 XF86Switch_VT_8 +keycode 75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9 F9 F9 XF86Switch_VT_9 +keycode 76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10 F10 F10 XF86Switch_VT_10 +keycode 77 = Num_Lock NoSymbol Num_Lock +keycode 78 = Scroll_Lock NoSymbol Scroll_Lock +keycode 79 = KP_Home KP_7 KP_Home KP_7 +keycode 80 = KP_Up KP_8 KP_Up KP_8 +keycode 81 = KP_Prior KP_9 KP_Prior KP_9 +keycode 82 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract XF86Prev_VMode KP_Subtract KP_Subtract XF86Prev_VMode +keycode 83 = KP_Left KP_4 KP_Left KP_4 +keycode 84 = KP_Begin KP_5 KP_Begin KP_5 +keycode 85 = KP_Right KP_6 KP_Right KP_6 +keycode 86 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add XF86Next_VMode KP_Add KP_Add XF86Next_VMode +keycode 87 = KP_End KP_1 KP_End KP_1 +keycode 88 = KP_Down KP_2 KP_Down KP_2 +keycode 89 = KP_Next KP_3 KP_Next KP_3 +keycode 90 = KP_Insert KP_0 KP_Insert KP_0 +keycode 91 = KP_Delete KP_Separator KP_Delete KP_Separator +keycode 92 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift +keycode 93 = +keycode 94 = asciicircum degree asciitilde notsign U2033 +keycode 95 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11 F11 F11 XF86Switch_VT_11 +keycode 96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12 F12 F12 XF86Switch_VT_12 +keycode 97 = +keycode 98 = Katakana NoSymbol Katakana +keycode 99 = Hiragana NoSymbol Hiragana +keycode 100 = Henkan_Mode NoSymbol Henkan_Mode +keycode 101 = Hiragana_Katakana NoSymbol Hiragana_Katakana +keycode 102 = Muhenkan NoSymbol Muhenkan +keycode 103 = +keycode 104 = KP_Enter NoSymbol KP_Enter +keycode 105 = Control_R NoSymbol Control_R +keycode 106 = KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide XF86Ungrab KP_Divide KP_Divide XF86Ungrab +keycode 107 = Print Sys_Req Print Sys_Req +keycode 108 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift +keycode 109 = Linefeed NoSymbol Linefeed +keycode 110 = Home NoSymbol Home +keycode 111 = Up NoSymbol Up +keycode 112 = Prior NoSymbol Prior +keycode 113 = Left NoSymbol Left +keycode 114 = Right NoSymbol Right +keycode 115 = End NoSymbol End +keycode 116 = Down NoSymbol Down +keycode 117 = Next NoSymbol Next +keycode 118 = Insert NoSymbol Insert +keycode 119 = Delete NoSymbol Delete +keycode 120 = +keycode 121 = XF86AudioMute NoSymbol XF86AudioMute +keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume +keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume +keycode 124 = XF86PowerOff NoSymbol XF86PowerOff +keycode 125 = KP_Equal NoSymbol KP_Equal +keycode 126 = plusminus NoSymbol plusminus +keycode 127 = Pause Break Pause Break +keycode 128 = XF86LaunchA NoSymbol XF86LaunchA +keycode 129 = KP_Decimal KP_Decimal KP_Decimal KP_Decimal +keycode 130 = Hangul NoSymbol Hangul +keycode 131 = Hangul_Hanja NoSymbol Hangul_Hanja +keycode 132 = +keycode 133 = Super_L NoSymbol Super_L +keycode 134 = Super_R NoSymbol Super_R +keycode 135 = Menu NoSymbol Menu +keycode 136 = Cancel NoSymbol Cancel +keycode 137 = Redo NoSymbol Redo +keycode 138 = SunProps NoSymbol SunProps +keycode 139 = Undo NoSymbol Undo +keycode 140 = SunFront NoSymbol SunFront +keycode 141 = XF86Copy NoSymbol XF86Copy +keycode 142 = XF86Open NoSymbol XF86Open +keycode 143 = XF86Paste NoSymbol XF86Paste +keycode 144 = Find NoSymbol Find +keycode 145 = XF86Cut NoSymbol XF86Cut +keycode 146 = Help NoSymbol Help +keycode 147 = XF86MenuKB NoSymbol XF86MenuKB +keycode 148 = XF86Calculator NoSymbol XF86Calculator +keycode 149 = +keycode 150 = XF86Sleep NoSymbol XF86Sleep +keycode 151 = XF86WakeUp NoSymbol XF86WakeUp +keycode 152 = XF86Explorer NoSymbol XF86Explorer +keycode 153 = XF86Send NoSymbol XF86Send +keycode 154 = +keycode 155 = XF86Xfer NoSymbol XF86Xfer +keycode 156 = XF86Launch1 NoSymbol XF86Launch1 +keycode 157 = XF86Launch2 NoSymbol XF86Launch2 +keycode 158 = XF86WWW NoSymbol XF86WWW +keycode 159 = XF86DOS NoSymbol XF86DOS +keycode 160 = XF86ScreenSaver NoSymbol XF86ScreenSaver +keycode 161 = XF86RotateWindows NoSymbol XF86RotateWindows +keycode 162 = XF86TaskPane NoSymbol XF86TaskPane +keycode 163 = XF86Mail NoSymbol XF86Mail +keycode 164 = XF86Favorites NoSymbol XF86Favorites +keycode 165 = XF86MyComputer NoSymbol XF86MyComputer +keycode 166 = XF86Back NoSymbol XF86Back +keycode 167 = XF86Forward NoSymbol XF86Forward +keycode 168 = +keycode 169 = XF86Eject NoSymbol XF86Eject +keycode 170 = XF86Eject NoSymbol XF86Eject +keycode 171 = XF86AudioNext NoSymbol XF86AudioNext +keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause +keycode 173 = XF86AudioPrev NoSymbol XF86AudioPrev +keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject +keycode 175 = XF86AudioRecord NoSymbol XF86AudioRecord +keycode 176 = XF86AudioRewind NoSymbol XF86AudioRewind +keycode 177 = XF86Phone NoSymbol XF86Phone +keycode 178 = +keycode 179 = XF86Tools NoSymbol XF86Tools +keycode 180 = XF86HomePage NoSymbol XF86HomePage +keycode 181 = XF86Reload NoSymbol XF86Reload +keycode 182 = XF86Close NoSymbol XF86Close +keycode 183 = +keycode 184 = +keycode 185 = XF86ScrollUp NoSymbol XF86ScrollUp +keycode 186 = XF86ScrollDown NoSymbol XF86ScrollDown +keycode 187 = parenleft NoSymbol parenleft +keycode 188 = parenright NoSymbol parenright +keycode 189 = XF86New NoSymbol XF86New +keycode 190 = Redo NoSymbol Redo +keycode 191 = XF86Tools NoSymbol XF86Tools +keycode 192 = XF86Launch5 NoSymbol XF86Launch5 +keycode 193 = XF86Launch6 NoSymbol XF86Launch6 +keycode 194 = XF86Launch7 NoSymbol XF86Launch7 +keycode 195 = XF86Launch8 NoSymbol XF86Launch8 +keycode 196 = XF86Launch9 NoSymbol XF86Launch9 +keycode 197 = +keycode 198 = XF86AudioMicMute NoSymbol XF86AudioMicMute +keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle +keycode 200 = XF86TouchpadOn NoSymbol XF86TouchpadOn +keycode 201 = XF86TouchpadOff NoSymbol XF86TouchpadOff +keycode 202 = +keycode 203 = Mode_switch NoSymbol Mode_switch +keycode 204 = NoSymbol Alt_L NoSymbol Alt_L +keycode 205 = NoSymbol Meta_L NoSymbol Meta_L +keycode 206 = NoSymbol Super_L NoSymbol Super_L +keycode 207 = NoSymbol Hyper_L NoSymbol Hyper_L +keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay +keycode 209 = XF86AudioPause NoSymbol XF86AudioPause +keycode 210 = XF86Launch3 NoSymbol XF86Launch3 +keycode 211 = XF86Launch4 NoSymbol XF86Launch4 +keycode 212 = XF86LaunchB NoSymbol XF86LaunchB +keycode 213 = XF86Suspend NoSymbol XF86Suspend +keycode 214 = XF86Close NoSymbol XF86Close +keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay +keycode 216 = XF86AudioForward NoSymbol XF86AudioForward +keycode 217 = +keycode 218 = Print NoSymbol Print +keycode 219 = +keycode 220 = XF86WebCam NoSymbol XF86WebCam +keycode 221 = XF86AudioPreset NoSymbol XF86AudioPreset +keycode 222 = +keycode 223 = XF86Mail NoSymbol XF86Mail +keycode 224 = XF86Messenger NoSymbol XF86Messenger +keycode 225 = XF86Search NoSymbol XF86Search +keycode 226 = XF86Go NoSymbol XF86Go +keycode 227 = XF86Finance NoSymbol XF86Finance +keycode 228 = XF86Game NoSymbol XF86Game +keycode 229 = XF86Shop NoSymbol XF86Shop +keycode 230 = +keycode 231 = Cancel NoSymbol Cancel +keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown +keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp +keycode 234 = XF86AudioMedia NoSymbol XF86AudioMedia +keycode 235 = XF86Display NoSymbol XF86Display +keycode 236 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff +keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown +keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp +keycode 239 = XF86Send NoSymbol XF86Send +keycode 240 = XF86Reply NoSymbol XF86Reply +keycode 241 = XF86MailForward NoSymbol XF86MailForward +keycode 242 = XF86Save NoSymbol XF86Save +keycode 243 = XF86Documents NoSymbol XF86Documents +keycode 244 = XF86Battery NoSymbol XF86Battery +keycode 245 = XF86Bluetooth NoSymbol XF86Bluetooth +keycode 246 = XF86WLAN NoSymbol XF86WLAN +keycode 247 = XF86UWB NoSymbol XF86UWB +keycode 248 = +keycode 249 = XF86Next_VMode NoSymbol XF86Next_VMode +keycode 250 = XF86Prev_VMode NoSymbol XF86Prev_VMode +keycode 251 = XF86MonBrightnessCycle NoSymbol XF86MonBrightnessCycle +keycode 252 = XF86BrightnessAuto NoSymbol XF86BrightnessAuto +keycode 253 = XF86DisplayOff NoSymbol XF86DisplayOff +keycode 254 = XF86WWAN NoSymbol XF86WWAN +keycode 255 = XF86RFKill NoSymbol XF86RFKill diff --git a/xorg/.Xresources b/xorg/.Xresources new file mode 100644 index 0000000..ae19709 --- /dev/null +++ b/xorg/.Xresources @@ -0,0 +1,72 @@ +Xft.dpi: 96 + +! X colors. +! Generated by 'wal' +*foreground: #cbcbcb +*background: #141414 +*.foreground: #cbcbcb +*.background: #141414 +emacs*foreground: #cbcbcb +emacs*background: #141414 +URxvt*foreground: #cbcbcb +XTerm*foreground: #cbcbcb +UXTerm*foreground: #cbcbcb +URxvt*background: [100]#141414 +XTerm*background: #141414 +UXTerm*background: #141414 +URxvt*cursorColor: #cbcbcb +XTerm*cursorColor: #cbcbcb +UXTerm*cursorColor: #cbcbcb +URxvt*borderColor: [100]#141414 + +! Colors 0-15. +*.color0: #141414 +*color0: #141414 +*.color1: #98000d +*color1: #98000d +*.color2: #a2000c +*color2: #a2000c +*.color3: #e10000 +*color3: #e10000 +*.color4: #b80018 +*color4: #b80018 +*.color5: #ff1f4d +*color5: #ff1f4d +*.color6: #fe0b0b +*color6: #fe0b0b +*.color7: #cbcbcb +*color7: #cbcbcb +*.color8: #8e8e8e +*color8: #8e8e8e +*.color9: #98000d +*color9: #98000d +*.color10: #a2000c +*color10: #a2000c +*.color11: #e10000 +*color11: #e10000 +*.color12: #b80018 +*color12: #b80018 +*.color13: #ff1f4d +*color13: #ff1f4d +*.color14: #fe0b0b +*color14: #fe0b0b +*.color15: #cbcbcb +*color15: #cbcbcb + +! Black color that will not be affected by bold highlighting. +*.color66: #141414 +*color66: #141414 + +! Xclock colors. +XClock*foreground: #cbcbcb +XClock*background: #141414 +XClock*majorColor: rgba:cb/cb/cb/ff +XClock*minorColor: rgba:cb/cb/cb/ff +XClock*hourColor: rgba:cb/cb/cb/ff +XClock*minuteColor: rgba:cb/cb/cb/ff +XClock*secondColor: rgba:cb/cb/cb/ff + +! Set depth to make transparency work. +URxvt*depth: 32 + +Sxiv.font: JetBrains Mono:pixelsize=23 diff --git a/xorg/.config/env b/xorg/.config/env new file mode 100644 index 0000000..0bb5a12 --- /dev/null +++ b/xorg/.config/env @@ -0,0 +1,31 @@ +#!/bin/bash + +### SCRIPTS +export PATH="$PATH:$HOME/.local/bin/:$HOME/.local/bin/personal/:$HOME/.local/bin/personal/bar/:$HOME/software/bin/" + +### DEFAULTS +export TERM="xterm" +export EDITOR="nvim" +export BROWSER="qutebrowser" +export TERMINAL="st" +export EMAIL="thunderbird" + +export GIT_SSH_COMMAND="ssh" + +### FLUTTER + +export PATH="$PATH:$HOME/software/flutter/bin:/opt/android-sdk/tools/bin/" +export CHROME_EXECUTABLE="$(which brave)" + +export JAVA_HOME="/usr/lib/jvm/java-8-openjdk/" +# export ANDROID_HOME="sdkmanager" + +### UI SCALE +# export GDK_DPI_SCALE="0.5" +export GDK_DPI_SCALE="1" + +### CLEANING +export LESSHISTFILE="-" +export ZDOTDIR="$HOME/.config/zsh" +export WGETRC="$HOME/.config/wget/wgetrc" + diff --git a/xorg/.config/mimeapps.list b/xorg/.config/mimeapps.list new file mode 100644 index 0000000..8abb510 --- /dev/null +++ b/xorg/.config/mimeapps.list @@ -0,0 +1,16 @@ +[Added Associations] +image/*=sxiv.desktop;org.qutebrowser.qutebrowser.desktop; +x-scheme-handler/mailto=userapp-Thunderbird-CLI8N1.desktop; +x-scheme-handler/mid=userapp-Thunderbird-CLI8N1.desktop; +application/pdf=org.pwmt.zathura-pdf-mupdf.desktop; + +[Default Applications] +image/png=sxiv.desktop +image/jpeg=sxiv.desktop +inode/directory=thunar.desktop +application/pdf=org.pwmt.zathura.desktop +x-scheme-handler/mailto=userapp-Thunderbird-CLI8N1.desktop +message/rfc822=userapp-Thunderbird-CLI8N1.desktop +x-scheme-handler/mid=userapp-Thunderbird-CLI8N1.desktop +x-scheme-handler/http=org.qutebrowser.qutebrowser.desktop +x-scheme-handler/https=org.qutebrowser.qutebrowser.desktop diff --git a/xorg/.config/wallpaper b/xorg/.config/wallpaper new file mode 100644 index 0000000..d118bcc Binary files /dev/null and b/xorg/.config/wallpaper differ diff --git a/xorg/.xinitrc b/xorg/.xinitrc new file mode 100755 index 0000000..b6a1168 --- /dev/null +++ b/xorg/.xinitrc @@ -0,0 +1,24 @@ +#!/bin/bash + +setxkbmap de +feh --bg-fill $HOME/.config/wallpaper + +# This was needed on my system with the non-lts kernel (some keys were mismatched) +# [[ -f ~/.Xmodmap ]] && xmodmap $HOME/.Xmodmap +[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources +[[ -f $HOME/.cache/wal/colors.Xresources ]] && xrdb -merge -I$HOME $HOME/.cache/wal/colors.Xresources + +[[ -f $HOME/.config/env ]] && source $HOME/.config/env + +updates check & + +sxhkd -c "$HOME/.config/sxhkd/mediarc" & +unclutter -idle 1 & +brightness load & +slstatus & +dunst & + +exec dwm + +wal -R + diff --git a/zathura/.config/zathura/zathurarc b/zathura/.config/zathura/zathurarc new file mode 100644 index 0000000..bbb6424 --- /dev/null +++ b/zathura/.config/zathura/zathurarc @@ -0,0 +1,22 @@ +set selection-clipboard "clipboard" + +set window-title-basename true +set window-title-page false + +set recolor true + +set default-bg "#1a1a1a" +set font "JetBrains Mono normal 18" +set highlight-color "#bbd2e0" +set highlight-active-color "#306b92" +set recolor-lightcolor "#1a1a1a" +set statusbar-bg "#1a1a1a" +set statusbar-fg "#bbd2e0" +set inputbar-bg "#1a1a1a" +set inputbar-fg "#bbd2e0" +set completion-fg "#bbd2e0" +set completion-bg "#1a1a1a" +set completion-group-fg "#bbd2e0" +set completion-group-bg "#306b92" +set completion-highlight-fg "#1a1a1a" +set completion-highlight-bg "#bbd2e0" -- cgit v1.2.3