From fe577f85eee2f30ba0b721956fc174604b621cf7 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 9 Mar 2022 21:42:22 -0600 Subject: [PATCH] initial commit of new dotfiles repo --- .../etc/X11/xorg.conf.d/20-amdgpu.conf | 6 + .../etc/X11/xorg.conf.d/20-intel.conf | 5 + .../xorg.conf.d/50-mouse-acceleration.conf | 7 + .config/.sysconf/etc/mpd.conf | 415 +++++ .config/.sysconf/etc/nixos/configuration.nix | 155 ++ .../etc/nixos/hardware-configuration.nix | 32 + .../.sysconf/etc/nixos/sway-configuration.nix | 110 ++ .../.sysconf/etc/pacman.d/hooks/nvidia.hook | 15 + .config/.sysconf/etc/vconsole.conf | 2 + .../etc/wpa_supplicant/wpa_supplicant.conf | 10 + .../.sysconf/usr/share/xsessions/dwm.desktop | 5 + .config/Xresources | 214 +++ .config/alacritty/alacritty.yml | 529 +++++++ .config/alacritty/colors/base16-atlas.yml | 36 + .config/alacritty/colors/base16-dracula.yml | 36 + .../colors/base16-gruvbox-dark-soft-256.yml | 42 + .../colors/base16-gruvbox-dark-soft.yml | 36 + .config/alacritty/colors/dracula | 96 ++ .config/aliasrc | 56 + .config/bash/history | 1 + .config/bemenu/bemenu-colorgen.sh | 40 + .config/bemenu/bemenu_opts.sh | 3 + .config/bemenu/colors/base16-atlas | 16 + .config/cmus/autosave | 194 +++ .config/cmus/rc | 4 + .config/fontconfig/fonts.conf | 76 + .config/gammastep/config.ini | 69 + .config/gtk-2.0/gtkfilechooser.ini | 11 + .config/gtk-2.0/gtkrc-2.0 | 19 + .config/gtk-3.0/settings.ini | 16 + .config/inputrc | 1 + .config/kitty/kitty.conf | 1337 +++++++++++++++++ .config/lf/lf-icons.sh | 163 ++ .config/lf/lfrc | 128 ++ .config/lf/pv.sh | 37 + .config/luakit/userconf.lua | 56 + .config/mimeapps.list | 282 ++++ .config/moc/cache/moc_version_tag | 1 + .config/moc/cache/tags.db | Bin 0 -> 8192 bytes .config/moc/config | 690 +++++++++ .config/moc/equalizer | 2 + .config/moc/keymap | 188 +++ .config/moc/last_directory | 1 + .config/moc/playlist.m3u | 4 + .config/moc/softmixer | 4 + .config/moc/themes/transparent-background | 34 + .config/mpd/mpd.conf | 22 + .config/mpv/mpv.conf | 9 + .config/ncmpcpp/bindings | 479 ++++++ .config/ncmpcpp/config | 32 + .config/ncmpcpp/error.log | 0 .config/nvim/init.vim | 59 + .config/picom/grayscale.glsl | 10 + .config/picom/picom.conf | 419 ++++++ .config/picom/picom.conf.old | 90 ++ .config/redshift/redshift.conf | 24 + .config/river/hw_config | 6 + .config/river/init | 179 +++ .config/rsync-exclude.conf | 35 + .config/rsync-include.conf | 3 + .config/shortcutrc | 1 + .config/spectrwm/spectrwm.conf | 167 ++ .config/spectrwm/spectrwm_us.conf | 123 ++ .config/straw-viewer/straw-viewer.conf | 103 ++ .config/sway/colors/base16-atlas | 19 + .config/sway/colors/colorscheme-darkula | 16 + .config/sway/colors/colorscheme-default | 19 + .config/sway/colors/colorscheme-dracula | 16 + .config/sway/colors/colorscheme-dracula-mine | 19 + .../sway/colors/colorscheme-gruvbox-dark-soft | 16 + .config/sway/config | 298 ++++ .config/sxhkd/sxhkdrc | 33 + .config/sxhkd/sxhkdrc_bspwm | 122 ++ .config/user-dirs.dirs | 15 + .config/waybar/config | 166 ++ .config/waybar/dwlbar | 2 + .config/waybar/style.css | 255 ++++ .config/wget/wgetrc | 1 + .config/yambar/config.yml | 178 +++ .config/yambar/config.yml.bak | 175 +++ .config/zathura/zathurarc | 15 + .config/zsh/.zshrc | 92 ++ .gitignore | 23 + .local/LICENSE | 21 + .local/README.md | 157 ++ .local/TODO | 8 + .local/bin/chromium-wayland | 3 + .local/bin/jaxx | 3 + .local/bin/svlogtail | 54 + .local/bin/transadd | 65 + .local/bin/unrar | 30 + .local/init/init.sh | 33 + .local/init/startup | 5 + .local/init/wms/awesome.sh | 8 + .local/init/wms/bspwm.sh | 12 + .local/init/wms/dwm.sh | 13 + .local/init/wms/gnome.sh | 12 + .local/init/wms/river.sh | 36 + .local/init/wms/spectrwm.sh | 8 + .local/init/wms/startup.sh | 31 + .local/init/wms/xfce.sh | 13 + .local/installers/alpine-nas.sh | 128 ++ .local/installers/alpine_install.sh | 81 + .local/installers/artix-install.sh | 34 + .local/installers/artix/config.sh | 100 ++ .local/installers/artix/devel.sh | 17 + .local/installers/artix/gaming.sh | 30 + .local/installers/artix/pkgs/aur.txt | 14 + .local/installers/artix/pkgs/base.txt | 58 + .local/installers/artix/pkgs/user.txt | 25 + .local/installers/artix/pkgs/wm.txt | 14 + .local/installers/artix/repo-enable.sh | 66 + .local/installers/artix/runit-config.sh | 35 + .local/installers/artix/wireless.sh | 9 + .local/installers/install.sh | 11 + .local/installers/repos.txt | 2 + .local/installers/void-install.sh | 356 +++++ .local/installers/void.sh | 239 +++ .local/scripts/add-wifi.sh | 15 + .local/scripts/appimages.sh | 14 + .local/scripts/auto-shutdown.sh | 8 + .local/scripts/backup.sh | 21 + .local/scripts/bemenu-theme.sh | 30 + .local/scripts/browser.sh | 85 ++ .local/scripts/caffeine.sh | 17 + .local/scripts/days_since.sh | 23 + .local/scripts/dwl-tags.sh | 72 + .local/scripts/dwm-bar.sh | 164 ++ .local/scripts/encrypt.sh | 21 + .local/scripts/fix-wacom.sh | 2 + .local/scripts/fixscr.sh | 80 + .local/scripts/install.sh | 136 ++ .local/scripts/notify.sh | 43 + .local/scripts/pipewire.sh | 29 + .local/scripts/set-colors.sh | 39 + .local/scripts/set-wp.sh | 34 + .local/scripts/sleepytime.sh | 7 + .local/scripts/spectrwm-bar.sh | 46 + .local/scripts/ss.sh | 77 + .local/scripts/supdate.sh | 106 ++ .local/scripts/surfb | 39 + .local/scripts/sway-bar.sh | 146 ++ .local/scripts/toggle-comp.sh | 6 + .local/scripts/tordone | 8 + .local/scripts/trans-init | 23 + .local/scripts/update-crypto.sh | 18 + .local/scripts/update-hosts | 44 + .local/scripts/update-weather.sh | 16 + .local/scripts/volchange.sh | 44 + .local/scripts/website_dl.sh | 2 + .local/scripts/wp-load.sh | 2 + .profile | 92 ++ 152 files changed, 11665 insertions(+) create mode 100644 .config/.sysconf/etc/X11/xorg.conf.d/20-amdgpu.conf create mode 100644 .config/.sysconf/etc/X11/xorg.conf.d/20-intel.conf create mode 100644 .config/.sysconf/etc/X11/xorg.conf.d/50-mouse-acceleration.conf create mode 100644 .config/.sysconf/etc/mpd.conf create mode 100644 .config/.sysconf/etc/nixos/configuration.nix create mode 100644 .config/.sysconf/etc/nixos/hardware-configuration.nix create mode 100644 .config/.sysconf/etc/nixos/sway-configuration.nix create mode 100644 .config/.sysconf/etc/pacman.d/hooks/nvidia.hook create mode 100644 .config/.sysconf/etc/vconsole.conf create mode 100644 .config/.sysconf/etc/wpa_supplicant/wpa_supplicant.conf create mode 100644 .config/.sysconf/usr/share/xsessions/dwm.desktop create mode 100644 .config/Xresources create mode 100644 .config/alacritty/alacritty.yml create mode 100644 .config/alacritty/colors/base16-atlas.yml create mode 100644 .config/alacritty/colors/base16-dracula.yml create mode 100644 .config/alacritty/colors/base16-gruvbox-dark-soft-256.yml create mode 100644 .config/alacritty/colors/base16-gruvbox-dark-soft.yml create mode 100644 .config/alacritty/colors/dracula create mode 100644 .config/aliasrc create mode 100644 .config/bash/history create mode 100755 .config/bemenu/bemenu-colorgen.sh create mode 100644 .config/bemenu/bemenu_opts.sh create mode 100644 .config/bemenu/colors/base16-atlas create mode 100644 .config/cmus/autosave create mode 100644 .config/cmus/rc create mode 100644 .config/fontconfig/fonts.conf create mode 100644 .config/gammastep/config.ini create mode 100644 .config/gtk-2.0/gtkfilechooser.ini create mode 100644 .config/gtk-2.0/gtkrc-2.0 create mode 100644 .config/gtk-3.0/settings.ini create mode 100644 .config/inputrc create mode 100644 .config/kitty/kitty.conf create mode 100644 .config/lf/lf-icons.sh create mode 100644 .config/lf/lfrc create mode 100755 .config/lf/pv.sh create mode 100644 .config/luakit/userconf.lua create mode 100644 .config/mimeapps.list create mode 100644 .config/moc/cache/moc_version_tag create mode 100644 .config/moc/cache/tags.db create mode 100644 .config/moc/config create mode 100644 .config/moc/equalizer create mode 100644 .config/moc/keymap create mode 100644 .config/moc/last_directory create mode 100644 .config/moc/playlist.m3u create mode 100644 .config/moc/softmixer create mode 100644 .config/moc/themes/transparent-background create mode 100644 .config/mpd/mpd.conf create mode 100755 .config/mpv/mpv.conf create mode 100644 .config/ncmpcpp/bindings create mode 100644 .config/ncmpcpp/config create mode 100644 .config/ncmpcpp/error.log create mode 100644 .config/nvim/init.vim create mode 100644 .config/picom/grayscale.glsl create mode 100644 .config/picom/picom.conf create mode 100644 .config/picom/picom.conf.old create mode 100644 .config/redshift/redshift.conf create mode 100755 .config/river/hw_config create mode 100755 .config/river/init create mode 100644 .config/rsync-exclude.conf create mode 100644 .config/rsync-include.conf create mode 100644 .config/shortcutrc create mode 100644 .config/spectrwm/spectrwm.conf create mode 100644 .config/spectrwm/spectrwm_us.conf create mode 100644 .config/straw-viewer/straw-viewer.conf create mode 100644 .config/sway/colors/base16-atlas create mode 100644 .config/sway/colors/colorscheme-darkula create mode 100644 .config/sway/colors/colorscheme-default create mode 100644 .config/sway/colors/colorscheme-dracula create mode 100644 .config/sway/colors/colorscheme-dracula-mine create mode 100644 .config/sway/colors/colorscheme-gruvbox-dark-soft create mode 100644 .config/sway/config create mode 100644 .config/sxhkd/sxhkdrc create mode 100644 .config/sxhkd/sxhkdrc_bspwm create mode 100644 .config/user-dirs.dirs create mode 100644 .config/waybar/config create mode 100644 .config/waybar/dwlbar create mode 100644 .config/waybar/style.css create mode 100644 .config/wget/wgetrc create mode 100644 .config/yambar/config.yml create mode 100644 .config/yambar/config.yml.bak create mode 100644 .config/zathura/zathurarc create mode 100644 .config/zsh/.zshrc create mode 100644 .gitignore create mode 100644 .local/LICENSE create mode 100644 .local/README.md create mode 100644 .local/TODO create mode 100755 .local/bin/chromium-wayland create mode 100755 .local/bin/jaxx create mode 100755 .local/bin/svlogtail create mode 100755 .local/bin/transadd create mode 100755 .local/bin/unrar create mode 100755 .local/init/init.sh create mode 100644 .local/init/startup create mode 100755 .local/init/wms/awesome.sh create mode 100755 .local/init/wms/bspwm.sh create mode 100755 .local/init/wms/dwm.sh create mode 100755 .local/init/wms/gnome.sh create mode 100755 .local/init/wms/river.sh create mode 100755 .local/init/wms/spectrwm.sh create mode 100755 .local/init/wms/startup.sh create mode 100755 .local/init/wms/xfce.sh create mode 100644 .local/installers/alpine-nas.sh create mode 100644 .local/installers/alpine_install.sh create mode 100755 .local/installers/artix-install.sh create mode 100755 .local/installers/artix/config.sh create mode 100755 .local/installers/artix/devel.sh create mode 100755 .local/installers/artix/gaming.sh create mode 100644 .local/installers/artix/pkgs/aur.txt create mode 100644 .local/installers/artix/pkgs/base.txt create mode 100644 .local/installers/artix/pkgs/user.txt create mode 100644 .local/installers/artix/pkgs/wm.txt create mode 100755 .local/installers/artix/repo-enable.sh create mode 100755 .local/installers/artix/runit-config.sh create mode 100755 .local/installers/artix/wireless.sh create mode 100644 .local/installers/install.sh create mode 100644 .local/installers/repos.txt create mode 100755 .local/installers/void-install.sh create mode 100644 .local/installers/void.sh create mode 100755 .local/scripts/add-wifi.sh create mode 100755 .local/scripts/appimages.sh create mode 100755 .local/scripts/auto-shutdown.sh create mode 100755 .local/scripts/backup.sh create mode 100644 .local/scripts/bemenu-theme.sh create mode 100755 .local/scripts/browser.sh create mode 100755 .local/scripts/caffeine.sh create mode 100755 .local/scripts/days_since.sh create mode 100755 .local/scripts/dwl-tags.sh create mode 100755 .local/scripts/dwm-bar.sh create mode 100755 .local/scripts/encrypt.sh create mode 100755 .local/scripts/fix-wacom.sh create mode 100755 .local/scripts/fixscr.sh create mode 100755 .local/scripts/install.sh create mode 100755 .local/scripts/notify.sh create mode 100755 .local/scripts/pipewire.sh create mode 100755 .local/scripts/set-colors.sh create mode 100755 .local/scripts/set-wp.sh create mode 100755 .local/scripts/sleepytime.sh create mode 100755 .local/scripts/spectrwm-bar.sh create mode 100755 .local/scripts/ss.sh create mode 100755 .local/scripts/supdate.sh create mode 100755 .local/scripts/surfb create mode 100755 .local/scripts/sway-bar.sh create mode 100755 .local/scripts/toggle-comp.sh create mode 100755 .local/scripts/tordone create mode 100755 .local/scripts/trans-init create mode 100755 .local/scripts/update-crypto.sh create mode 100755 .local/scripts/update-hosts create mode 100755 .local/scripts/update-weather.sh create mode 100755 .local/scripts/volchange.sh create mode 100755 .local/scripts/website_dl.sh create mode 100755 .local/scripts/wp-load.sh create mode 100644 .profile diff --git a/.config/.sysconf/etc/X11/xorg.conf.d/20-amdgpu.conf b/.config/.sysconf/etc/X11/xorg.conf.d/20-amdgpu.conf new file mode 100644 index 0000000..398df07 --- /dev/null +++ b/.config/.sysconf/etc/X11/xorg.conf.d/20-amdgpu.conf @@ -0,0 +1,6 @@ +Section "Device" + Identifier "AMD" + Driver "amdgpu" + Option "TearFree" "true" + #BusID "PCI:02:0:0" +EndSection diff --git a/.config/.sysconf/etc/X11/xorg.conf.d/20-intel.conf b/.config/.sysconf/etc/X11/xorg.conf.d/20-intel.conf new file mode 100644 index 0000000..904352e --- /dev/null +++ b/.config/.sysconf/etc/X11/xorg.conf.d/20-intel.conf @@ -0,0 +1,5 @@ +Section "Device" + Identifier "Intel Graphics" + Driver "intel" + Option "TearFree" "true" +EndSection diff --git a/.config/.sysconf/etc/X11/xorg.conf.d/50-mouse-acceleration.conf b/.config/.sysconf/etc/X11/xorg.conf.d/50-mouse-acceleration.conf new file mode 100644 index 0000000..c46cc23 --- /dev/null +++ b/.config/.sysconf/etc/X11/xorg.conf.d/50-mouse-acceleration.conf @@ -0,0 +1,7 @@ +Section "InputClass" + Identifier "My Mouse" + MatchIsPointer "yes" + Option "AccelerationProfile" "-1" + Option "AccelerationScheme" "none" + Option "AccelSpeed" "-1" +EndSection diff --git a/.config/.sysconf/etc/mpd.conf b/.config/.sysconf/etc/mpd.conf new file mode 100644 index 0000000..f829dd9 --- /dev/null +++ b/.config/.sysconf/etc/mpd.conf @@ -0,0 +1,415 @@ +# An example configuration file for MPD. +# Read the user manual for documentation: http://www.musicpd.org/doc/user/ +# or /usr/share/doc/mpd/html/user.html + + +# Files and directories ####################################################### +# +# This setting controls the top directory which MPD will search to discover the +# available audio files and add them to the daemon's online database. This +# setting defaults to the XDG directory, otherwise the music directory will be +# be disabled and audio files will only be accepted over ipc socket (using +# file:// protocol) or streaming files over an accepted protocol. +# +music_directory "/home/alex/Music" #"/var/lib/mpd/music" +# +# This setting sets the MPD internal playlist directory. The purpose of this +# directory is storage for playlists created by MPD. The server will use +# playlist files not created by the server but only if they are in the MPD +# format. This setting defaults to playlist saving being disabled. +# +playlist_directory "/var/lib/mpd/playlists" +# +# This setting sets the location of the MPD database. This file is used to +# load the database at server start up and store the database while the +# server is not up. This setting defaults to disabled which will allow +# MPD to accept files over ipc socket (using file:// protocol) or streaming +# files over an accepted protocol. +# +db_file "/var/lib/mpd/tag_cache" +# +# These settings are the locations for the daemon log files for the daemon. +# These logs are great for troubleshooting, depending on your log_level +# settings. +# +# The special value "syslog" makes MPD use the local syslog daemon. This +# setting defaults to logging to syslog, or to journal if mpd was started as +# a systemd service. +# +log_file "/var/log/mpd/mpd.log" +# +# This setting sets the location of the file which stores the process ID +# for use of mpd --kill and some init scripts. This setting is disabled by +# default and the pid file will not be stored. +# +pid_file "/run/mpd/pid" +# +# This setting sets the location of the file which contains information about +# most variables to get MPD back into the same general shape it was in before +# it was brought down. This setting is disabled by default and the server +# state will be reset on server start up. +# +state_file "/var/lib/mpd/state" +# +# The location of the sticker database. This is a database which +# manages dynamic information attached to songs. +# +sticker_file "/var/lib/mpd/sticker.sql" +# +############################################################################### + + +# General music daemon options ################################################ +# +# This setting specifies the user that MPD will run as. MPD should never run as +# root and you may use this setting to make MPD change its user ID after +# initialization. This setting is disabled by default and MPD is run as the +# current user. +# +user "mpd" +# +# This setting specifies the group that MPD will run as. If not specified +# primary group of user specified with "user" setting will be used (if set). +# This is useful if MPD needs to be a member of group such as "audio" to +# have permission to use sound card. +# +#group "nogroup" +# +# This setting sets the address for the daemon to listen on. Careful attention +# should be paid if this is assigned to anything other then the default, any. +# This setting can deny access to control of the daemon. Choose any if you want +# to have mpd listen on every address. Not effective if systemd socket +# activation is in use. +# +# For network +bind_to_address "localhost" +# +# And for Unix Socket +#bind_to_address "/run/mpd/socket" +# +# This setting is the TCP port that is desired for the daemon to get assigned +# to. +# +#port "6600" +# +# This setting controls the type of information which is logged. Available +# setting arguments are "default", "secure" or "verbose". The "verbose" setting +# argument is recommended for troubleshooting, though can quickly stretch +# available resources on limited hardware storage. +# +#log_level "default" +# +# Setting "restore_paused" to "yes" puts MPD into pause mode instead +# of starting playback after startup. +# +#restore_paused "no" +# +# This setting enables MPD to create playlists in a format usable by other +# music players. +# +#save_absolute_paths_in_playlists "no" +# +# This setting defines a list of tag types that will be extracted during the +# audio file discovery process. The complete list of possible values can be +# found in the user manual. +#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" +# +# This example just enables the "comment" tag without disabling all +# the other supported tags: +#metadata_to_use "+comment" +# +# This setting enables automatic update of MPD's database when files in +# music_directory are changed. +# +#auto_update "yes" +# +# Limit the depth of the directories being watched, 0 means only watch +# the music directory itself. There is no limit by default. +# +#auto_update_depth "3" +# +############################################################################### + + +# Symbolic link behavior ###################################################### +# +# If this setting is set to "yes", MPD will discover audio files by following +# symbolic links outside of the configured music_directory. +# +#follow_outside_symlinks "yes" +# +# If this setting is set to "yes", MPD will discover audio files by following +# symbolic links inside of the configured music_directory. +# +#follow_inside_symlinks "yes" +# +############################################################################### + + +# Zeroconf / Avahi Service Discovery ########################################## +# +# If this setting is set to "yes", service information will be published with +# Zeroconf / Avahi. +# +#zeroconf_enabled "yes" +# +# The argument to this setting will be the Zeroconf / Avahi unique name for +# this MPD server on the network. %h will be replaced with the hostname. +# +#zeroconf_name "Music Player @ %h" +# +############################################################################### + + +# Permissions ################################################################# +# +# If this setting is set, MPD will require password authorization. The password +# setting can be specified multiple times for different password profiles. +# +#password "password@read,add,control,admin" +# +# This setting specifies the permissions a user has who has not yet logged in. +# +#default_permissions "read,add,control,admin" +# +############################################################################### + + +# Database ####################################################################### +# + +#database { +# plugin "proxy" +# host "other.mpd.host" +# port "6600" +#} + +# Input ####################################################################### +# + +input { + plugin "curl" +# proxy "proxy.isp.com:8080" +# proxy_user "user" +# proxy_password "password" +} + +# QOBUZ input plugin +input { + enabled "no" + plugin "qobuz" +# app_id "ID" +# app_secret "SECRET" +# username "USERNAME" +# password "PASSWORD" +# format_id "N" +} + +# TIDAL input plugin +input { + enabled "no" + plugin "tidal" +# token "TOKEN" +# username "USERNAME" +# password "PASSWORD" +# audioquality "Q" +} + +# Decoder ##################################################################### +# + +decoder { + plugin "hybrid_dsd" + enabled "no" +# gapless "no" +} + +# +############################################################################### + +# Audio Output ################################################################ +# +# MPD supports various audio output types, as well as playing through multiple +# audio outputs at the same time, through multiple audio_output settings +# blocks. Setting this block is optional, though the server will only attempt +# autodetection for one sound card. +# +# An example of an ALSA output: +# +audio_output { + type "alsa" + name "My ALSA Device" +# device "hw:0,0" # optional +# mixer_type "hardware" # optional +# mixer_device "default" # optional +# mixer_control "PCM" # optional +# mixer_index "0" # optional +} +# +# An example of an OSS output: +# +#audio_output { +# type "oss" +# name "My OSS Device" +# device "/dev/dsp" # optional +# mixer_type "hardware" # optional +# mixer_device "/dev/mixer" # optional +# mixer_control "PCM" # optional +#} +# +# An example of a shout output (for streaming to Icecast): +# +#audio_output { +# type "shout" +# encoder "vorbis" # optional +# name "My Shout Stream" +# host "localhost" +# port "8000" +# mount "/mpd.ogg" +# password "hackme" +# quality "5.0" +# bitrate "128" +# format "44100:16:1" +# protocol "icecast2" # optional +# user "source" # optional +# description "My Stream Description" # optional +# url "http://example.com" # optional +# genre "jazz" # optional +# public "no" # optional +# timeout "2" # optional +# mixer_type "software" # optional +#} +# +# An example of a recorder output: +# +#audio_output { +# type "recorder" +# name "My recorder" +# encoder "vorbis" # optional, vorbis or lame +# path "/var/lib/mpd/recorder/mpd.ogg" +## quality "5.0" # do not define if bitrate is defined +# bitrate "128" # do not define if quality is defined +# format "44100:16:1" +#} +# +# An example of a httpd output (built-in HTTP streaming server): +# +#audio_output { +# type "httpd" +# name "My HTTP Stream" +# encoder "vorbis" # optional, vorbis or lame +# port "8000" +# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 +# quality "5.0" # do not define if bitrate is defined +# bitrate "128" # do not define if quality is defined +# format "44100:16:1" +# max_clients "0" # optional 0=no limit +#} +# +# An example of a pulseaudio output (streaming to a remote pulseaudio server) +# Please see README.Debian if you want mpd to play through the pulseaudio +# daemon started as part of your graphical desktop session! +# +#audio_output { +# type "pulse" +# name "My Pulse Output" +# server "remote_server" # optional +# sink "remote_server_sink" # optional +#} +# +# An example of a winmm output (Windows multimedia API). +# +#audio_output { +# type "winmm" +# name "My WinMM output" +# device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +# or +# device "0" # optional +# mixer_type "hardware" # optional +#} +# +# An example of an openal output. +# +#audio_output { +# type "openal" +# name "My OpenAL output" +# device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +#} +# +## Example "pipe" output: +# +#audio_output { +# type "pipe" +# name "my pipe" +# command "aplay -f cd 2>/dev/null" +## Or if you're want to use AudioCompress +# command "AudioCompress -m | aplay -f cd 2>/dev/null" +## Or to send raw PCM stream through PCM: +# command "nc example.org 8765" +# format "44100:16:2" +#} +# +## An example of a null output (for no audio output): +# +#audio_output { +# type "null" +# name "My Null Output" +# mixer_type "none" # optional +#} +# +############################################################################### + + +# Normalization automatic volume adjustments ################################## +# +# This setting specifies the type of ReplayGain to use. This setting can have +# the argument "off", "album", "track" or "auto". "auto" is a special mode that +# chooses between "track" and "album" depending on the current state of +# random playback. If random playback is enabled then "track" mode is used. +# See for more details about ReplayGain. +# This setting is off by default. +# +#replaygain "album" +# +# This setting sets the pre-amp used for files that have ReplayGain tags. By +# default this setting is disabled. +# +#replaygain_preamp "0" +# +# This setting sets the pre-amp used for files that do NOT have ReplayGain tags. +# By default this setting is disabled. +# +#replaygain_missing_preamp "0" +# +# This setting enables or disables ReplayGain limiting. +# MPD calculates actual amplification based on the ReplayGain tags +# and replaygain_preamp / replaygain_missing_preamp setting. +# If replaygain_limit is enabled MPD will never amplify audio signal +# above its original level. If replaygain_limit is disabled such amplification +# might occur. By default this setting is enabled. +# +#replaygain_limit "yes" +# +# This setting enables on-the-fly normalization volume adjustment. This will +# result in the volume of all playing audio to be adjusted so the output has +# equal "loudness". This setting is disabled by default. +# +#volume_normalization "no" +# +############################################################################### + +# Character Encoding ########################################################## +# +# If file or directory names do not display correctly for your locale then you +# may need to modify this setting. +# +filesystem_charset "UTF-8" +# +############################################################################### + +audio_output { + type "fifo" + name "Visualizer feed" + path "/tmp/mpd.fifo" + format "44100:16:2" +} diff --git a/.config/.sysconf/etc/nixos/configuration.nix b/.config/.sysconf/etc/nixos/configuration.nix new file mode 100644 index 0000000..f01c864 --- /dev/null +++ b/.config/.sysconf/etc/nixos/configuration.nix @@ -0,0 +1,155 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). +# + +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + # ./sway-configuration.nix + ]; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "rias"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # The global useDHCP flag is deprecated, therefore explicitly set to false here. + # Per-interface useDHCP will be mandatory in the future, so this generated config + # replicates the default behaviour. + networking.useDHCP = false; + networking.interfaces.enp5s0.useDHCP = true; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + i18n = { + consoleFont = "Lat2-Terminus16"; + consoleKeyMap = "us"; + defaultLocale = "en_US.UTF-8"; + }; + + # Set your time zone. + time.timeZone = "America/Chicago"; + + # List packages installed in system profile. To search, run: + # $ nix search wget + + nixpkgs.config.allowUnfree = true; + + hardware.opengl.driSupport32Bit = true; + hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ libva ]; + hardware.pulseaudio.support32Bit = true; + + + fileSystems."/home/alex/HDDA" = + { device = "/dev/disk/by-uuid/b7d683d4-9337-433b-8d33-1035ef7dbcdf"; + fsType = "ext4"; + }; + + fileSystems."/media/Seagate_HDD/" = + { device = "/dev/disk/by-uuid/3ec3e778-2b12-469d-92be-95226c0cf759"; + fsType = "ext4"; + }; + + services.flatpak.enable = true; + + environment.systemPackages = with pkgs; [ + #System programs + wget file unzip unrar zsh + + #KDE + # redshift-plasma-applet redshift + #GNOME + gnome3.gnome-tweaks + + #Graphics + vulkan-loader + + + #CLI programs + vim htop radeontop + + #GUI programs + firefox palemoon transmission-gtk mcomix + + #Theming + gnome3.adwaita-icon-theme gnome3.defaultIconTheme + + #Gaming + wineFull lutris steam + + #Development + git go lua love_11 + mono dotnetPackages.MonoAddins + gcc python gnumake + + #needed to build wc-gammactl (maybe not all of this) + # meson ninja clang llvm + # libgcc + # gcc-unwrapped gnome3.glade gtk3 gtkmm3 cmake pkg-config wlroots + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { enable = true; enableSSHSupport = true; }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + networking.firewall.enable = false; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + sound.enable = true; + hardware.pulseaudio.enable = true; + + # Enable the X11 windowing system. +# services.xserver.enable = true; +# services.xserver.layout = "us"; + # services.xserver.xkbOptions = "eurosign:e"; + + # Enable touchpad support. + # services.xserver.libinput.enable = true; + + # Enable the KDE Desktop Environment. + #services.xserver.displayManager.sddm.enable = true; + #services.xserver.desktopManager.plasma5.enable = true; + + # Enable GNOME Desktop Environment +services.xserver.enable = true; +services.xserver.displayManager.gdm.enable = true; +services.xserver.desktopManager.gnome3.enable = true; +#services.dbus.packages = with pkgs; [ gnome2.GConf ]; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.alex = { + isNormalUser = true; + # shell = pkgs.zsh; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + }; + + # This value determines the NixOS release with which your system is to be + # compatible, in order to avoid breaking some software such as database + # servers. You should change this only after NixOS release notes say you + # should. + system.stateVersion = "19.09"; # Did you read the comment? + +} + diff --git a/.config/.sysconf/etc/nixos/hardware-configuration.nix b/.config/.sysconf/etc/nixos/hardware-configuration.nix new file mode 100644 index 0000000..f6195dc --- /dev/null +++ b/.config/.sysconf/etc/nixos/hardware-configuration.nix @@ -0,0 +1,32 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, ... }: + +{ + imports = + [ + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "usbhid" "uas" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/fc236860-d371-471d-9c46-14ace1e97ce6"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/FABC-F05B"; + fsType = "vfat"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/4245f271-aee0-404a-b419-19a36262060b"; } + ]; + + nix.maxJobs = lib.mkDefault 4; + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; +} diff --git a/.config/.sysconf/etc/nixos/sway-configuration.nix b/.config/.sysconf/etc/nixos/sway-configuration.nix new file mode 100644 index 0000000..a311dec --- /dev/null +++ b/.config/.sysconf/etc/nixos/sway-configuration.nix @@ -0,0 +1,110 @@ +# Adds Sway to NixOS +# copied from https://nixos.wiki/wiki/Sway + +{ config, pkgs, lib, ... }: { + + + programs.sway = { + enable = true; + extraPackages = with pkgs; [ + swaylock # lockscreen + swayidle + xwayland # for legacy apps + waybar # status bar + mako # notification daemon + kanshi # autorandr + ]; + }; + + + + #environment = { + # etc = { + # Put config files in /etc. Note that you also can put these in ~/.config, but then you can't manage them with NixOS anymore! + #"sway/config".source = ./dotfiles/sway/config; + #"xdg/waybar/config".source = ./dotfiles/waybar/config; + #"xdg/waybar/style.css".source = ./dotfiles/waybar/style.css; + # }; + #}; + + # Here we but a shell script into path, which lets us start sway.service (after importing the environment of the login shell). + environment.systemPackages = with pkgs; [ + pango + alacritty + bemenu + imv + mpv + cmus + zathura + pulsemixer + ffmpegthumbnailer + ( + pkgs.writeTextFile { + name = "startsway"; + destination = "/bin/startsway"; + executable = true; + text = '' + #! ${pkgs.bash}/bin/bash + + # first import environment variables from the login manager + systemctl --user import-environment + # then start the service + exec systemctl --user start sway.service + ''; + } + ) + ]; + + systemd.user.targets.sway-session = { + description = "Sway compositor session"; + documentation = [ "man:systemd.special(7)" ]; + bindsTo = [ "graphical-session.target" ]; + wants = [ "graphical-session-pre.target" ]; + after = [ "graphical-session-pre.target" ]; + }; + + systemd.user.services.sway = { + description = "Sway - Wayland window manager"; + documentation = [ "man:sway(5)" ]; + bindsTo = [ "graphical-session.target" ]; + wants = [ "graphical-session-pre.target" ]; + after = [ "graphical-session-pre.target" ]; + # We explicitly unset PATH here, as we want it to be set by + # systemctl --user import-environment in startsway + environment.PATH = lib.mkForce null; + serviceConfig = { + Type = "simple"; + ExecStart = '' + ${pkgs.dbus}/bin/dbus-run-session ${pkgs.sway}/bin/sway --debug + ''; + Restart = "on-failure"; + RestartSec = 1; + TimeoutStopSec = 10; + }; + }; + + +# services.redshift = { +# enable = true; + # Redshift with wayland support isn't present in nixos-19.09 atm. You have to cherry-pick the commit from https://github.com/NixOS/nixpkgs/pull/68285 to do that. +# package = pkgs.redshift; +# }; + + programs.waybar.enable = true; + + systemd.user.services.kanshi = { + description = "Kanshi output autoconfig "; + wantedBy = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + serviceConfig = { + # kanshi doesn't have an option to specifiy config file yet, so it looks + # at .config/kanshi/config + ExecStart = '' + ${pkgs.kanshi}/bin/kanshi + ''; + RestartSec = 5; + Restart = "always"; + }; + }; + +} diff --git a/.config/.sysconf/etc/pacman.d/hooks/nvidia.hook b/.config/.sysconf/etc/pacman.d/hooks/nvidia.hook new file mode 100644 index 0000000..d7c1cc8 --- /dev/null +++ b/.config/.sysconf/etc/pacman.d/hooks/nvidia.hook @@ -0,0 +1,15 @@ +[Trigger] +Operation=Install +Operation=Upgrade +Operation=Remove +Type=Package +Target=nvidia +Target=linux +# Change the linux part above and in the Exec line if a different kernel is used + +[Action] +Description=Update Nvidia module in initcpio +Depends=mkinitcpio +When=PostTransaction +NeedsTargets +Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P' diff --git a/.config/.sysconf/etc/vconsole.conf b/.config/.sysconf/etc/vconsole.conf new file mode 100644 index 0000000..e48c321 --- /dev/null +++ b/.config/.sysconf/etc/vconsole.conf @@ -0,0 +1,2 @@ +FONT=Lat2-Terminus16 +FONT_MAP=8859-2 diff --git a/.config/.sysconf/etc/wpa_supplicant/wpa_supplicant.conf b/.config/.sysconf/etc/wpa_supplicant/wpa_supplicant.conf new file mode 100644 index 0000000..7f44722 --- /dev/null +++ b/.config/.sysconf/etc/wpa_supplicant/wpa_supplicant.conf @@ -0,0 +1,10 @@ +# Giving configuration update rights to wpa_cli +ctrl_interface=/run/wpa_supplicant +ctrl_interface_group=wheel +update_config=1 + +# AP scanning +ap_scan=1 + +# ISO/IEC alpha2 country code in which the device is operating +country=US diff --git a/.config/.sysconf/usr/share/xsessions/dwm.desktop b/.config/.sysconf/usr/share/xsessions/dwm.desktop new file mode 100644 index 0000000..69ed9ed --- /dev/null +++ b/.config/.sysconf/usr/share/xsessions/dwm.desktop @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=XSession +Exec=dwm +TryExec=dwm +Name=Dwm diff --git a/.config/Xresources b/.config/Xresources new file mode 100644 index 0000000..b2b5a3e --- /dev/null +++ b/.config/Xresources @@ -0,0 +1,214 @@ +Xft.autohint: 1 +Xft.antialias: 1 +Xft.hinting: true +Xft.hintstyle: hintslight +Xft.rgba: rgb +Xft.lcdfilter: lcddefault +Xcursor.theme: Adwaita + +! urxvt +urxvt.font: xft:mono:size=10:antialias=true:hinting=true +urxvt.url-launcher: /usr/bin/xdg-open +urxvt.matcher.button: 1 +urxvt.matcher.pattern.0: \\b([a-zA-Z]+:\/\/\\w[\\w-.@:]*|www\\.\\w[\\w-]*\\.\\w[\\w-.]*)(\/[^"' ()]*)? +urxvt.scrollBar: false +urxvt.termName: xterm-256color +urxvt.saveLines: 10000 +urxvt.inheritPixmap: true +urxvt.shading: 20 +urxvt.clipboard.autocopy: true +urxvt.perl-ext-common: default,selection-to-clipboard,pasta,matcher,keyboard-select,resize-font,font +urxvt.keysym.M-u: perl:url-select:select_next +urxvt.transparent: true +urxvt.buffered: true +urxvt.jumpScroll: false +urxvt.scrollTtyKeypress: true +urxvt.scrollTtyOutput: false +urxvt.scrollWithBuffer: false +urxvt.scrollstyle: plain +urxvt.secondaryScroll: false +urxvt.xftAntialias: true +!urxvt.color4: RoyalBlue +urxvt.matcher.rend.0: Bold fg6 +urxvt.cursorBlink: false +urxvt.cursorColor: #5f8fff +urxvt.mapAlert: true +urxvt.pointerBlank: true +urxvt.resource: value +urxvt.iso14755: false +urxvt.iso14755_52: false + +!xterm font +XTerm.vt100.faceName: mono:size=10 + +!st settings +*.font: mono:pixelsize=13 +*.borderpx: 2 +*.tabspaces: 4 +!cursorColor STRING, &colorname[258] }, +!termname STRING, &termname }, +!shell STRING, &shell }, +*.xfps: 30 +!actionfps INTEGER, &actionfps }, +!blinktimeout INTEGER, &blinktimeout }, +*.bellvolume: 100 !INTEGER, &bellvolume }, +!cwscale FLOAT, &cwscale }, +!chscale FLOAT &chscale }, + +!dmenu settings +dmenu.font : mono:pixelsize=13 + + +/*** COLOR SETTINGS ***/ + +!global colors +#define WHITE #ffffff +#define BLACK #000000 + +/* include color theme. theme can be set using ~/scripts/set_colors.sh*/ +#include "./color" + +!if COLOR15 is not defined, there is an error in ~/.config/colors. default to nord +#ifndef COLOR15 + +#define COLOR0 #3B4252 +#define COLOR1 #BF616A +#define COLOR2 #A3BE8C +#define COLOR3 #EBCB8B +#define COLOR4 #81A1C1 +#define COLOR5 #B48EAD +#define COLOR6 #88C0D0 +#define COLOR7 #E5E9F0 +#define COLOR8 #4C566A +#define COLOR9 #BF616A +#define COLOR10 #A3BE8C +#define COLOR11 #EBCB8B +#define COLOR12 #81A1C1 +#define COLOR13 #B48EAD +#define COLOR14 #8FBCBB +#define COLOR15 #ECEFF4 + +#define FOREGROUND #D8DEE9 +#define BACKGROUND #2E3440 + +#define DWM_NBDR COLOR13 +#define DWM_NBG BACKGROUND +#define DWM_NFG COLOR6 +#define DWM_SBDR WHITE +#define DWM_SBG #434C5E +#define DWM_SFG COLOR13 + +#endif + +/* DWM colors + * dwm.normbordercolor: border not currently selected + * dwm.normbgcolor: bg of top bar, bg of not selected tags, bg of dmenu + * dwm.normfgclolor: ??? + * dwm.selbordercolor: active window border color, color of selected entry in dmenu + * dwm.selbgcolor: selected tag color, color of section of top bar displaying window title + * dwm.selfgcolor: color of window title text, color of current tag indicator, + */ + +!source dwm colors from color pallete if not defined +#ifndef DWM_NBDR + #define DWM_NBDR COLOR8 +#endif +#ifndef DWM_NBG + #define DWM_NBG COLOR0 +#endif +#ifndef DWM_NFG + #define DWM_NFG COLOR15 +#endif +#ifndef DWM_SBDR + #define DWM_SBDR COLOR15 +#endif +#ifndef DWM_SBG + #define DWM_SBG COLOR2 +#endif +#ifndef DWM_FBG + #define DWM_FBG COLOR15 +#endif + +!source dmenu colors from color pallette if not defined +#ifndef DMENU_NBG + #define DMENU_NBG COLOR0 +#endif +#ifndef DMENU_NFG + #define DMENU_NFG COLOR15 +#endif +#ifndef DMENU_SBG + #define DMENU_SBG COLOR1 +#endif +#ifndef DMENU_SFG + #define DMENU_SFG COLOR15 +#endif + + +! 6 11 14 +#define AAAA COLOR6 + +#ifndef DMENU_SHFG + #define DMENU_SHFG AAAA +#endif + +#ifndef DMENU_SHBG + #define DMENU_SHBG COLOR1 +#endif + +#ifndef DMENU_NHFG + #define DMENU_NHFG AAAA +#endif + +#ifndef DMENU_NHBG + #define DMENU_NHBG COLOR0 +#endif + + +!source colors for BG and FG if not defined +#ifndef BACKGROUND + #define BACKGROUND COLOR0 +#endif +#ifndef FOREGROUND + #define FOREGROUND COLOR15 +#endif + + + +!set dwm colors defined in included file above +dwm.normbordercolor: DWM_NBDR +dwm.normbgcolor: DWM_NBG +dwm.normfgclolor: DWM_NFG +dwm.selbordercolor: DWM_SBDR +dwm.selbgcolor: DWM_SBG +dwm.selfgcolor: DWM_SFG + +!set dmenu colors defined in included file above +dmenu.background : DMENU_NBG +dmenu.foreground : DMENU_NFG +dmenu.selbackground : DMENU_SBG +dmenu.selforeground : DMENU_SFG + +dmenu.selhighlightfg : DMENU_SHFG +dmenu.selhighlightbg : DMENU_SHBG +dmenu.normhighlightfg : DMENU_NHFG +dmenu.normhighlightbg : DMENU_NHBG + +/* ST/Xterm colors */ +*.color0: COLOR0 +*.color1: COLOR1 +*.color2: COLOR2 +*.color3: COLOR3 +*.color4: COLOR4 +*.color5: COLOR5 +*.color6: COLOR6 +*.color7: COLOR7 +*.color8: COLOR8 +*.color9: COLOR9 +*.color10: COLOR10 +*.color11: COLOR11 +*.color12: COLOR12 +*.color13: COLOR13 +*.color14: COLOR14 +*.color15: COLOR15 +*.background: BACKGROUND +*.foreground: FOREGROUND diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..14e910e --- /dev/null +++ b/.config/alacritty/alacritty.yml @@ -0,0 +1,529 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator. + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty itself. +env: + # TERM variable + # + # This value is used to set the `$TERM` environment variable for + # each instance of Alacritty. If it is not present, alacritty will + # check the local terminfo database and use `alacritty` if it is + # available, otherwise `xterm-256color` is used. + TERM: xterm-256color + +window: + # Window dimensions (changes require restart) + # + # Specified in number of columns/lines, not pixels. + # If both are `0`, this setting is ignored. + #dimensions: + # columns: 0 + # lines: 0 + + # Window position (changes require restart) + # + # Specified in number of pixels. + # If the position is not set, the window manager will handle the placement. + #position: + # x: 0 + # y: 0 + + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is scaled + # by DPI and the specified value is always added at both opposing sides. + padding: + x: 3 + y: 3 + + # Spread additional padding evenly around the terminal content. + #dynamic_padding: false + + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # + # Values for `decorations` (macOS only): + # - transparent: Title bar, transparent background and title bar buttons + # - buttonless: Title bar, transparent background, but no title bar buttons + decorations: none + + opacity: 0.98 + #opacity: 1 + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + #startup_mode: Windowed + + # Window title + #title: Alacritty + + # Window class (Linux/BSD only): + #class: + # Application instance name + #instance: Alacritty + # General application class + #general: Alacritty + + # GTK theme variant (Linux/BSD only) + # + # Override the variant of the GTK theme. Commonly supported values are `dark` and `light`. + # Set this to `None` to use the default theme variant. + #gtk_theme_variant: None + +#scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. + #history: 10000 + + # Number of lines the viewport will move for every line scrolled when + # scrollback is enabled (history > 0). + #multiplier: 3 + + # Scroll to the bottom when new text is written to the terminal. + #auto_scroll: false + +# Spaces per Tab (changes require restart) +# +# This setting defines the width of a tab in cells. +# +# Some applications, like Emacs, rely on knowing about the width of a tab. +# To prevent unexpected behavior in these applications, it's also required to +# change the `it` value in terminfo when altering this setting. +#tabspaces: 8 + +# Font configuration +font: + # Normal (roman) font face + normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + family: monospace + + # The `style` can be specified to pick a specific face. + style: Regular + + # Bold font face + #bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold + + # Italic font face + #italic: + # Font family + # + # If the italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Italic + + # Bold italic font face + #bold_italic: + # Font family + # + # If the bold italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold Italic + + # Point size + size: 10.0 + + # Offset is the extra space around each character. `offset.y` can be thought of + # as modifying the line spacing, and `offset.x` as modifying the letter spacing. + #offset: + # x: 0 + # y: 0 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increasing `x` moves the glyph to the right, + # increasing `y` moves the glyph upwards. + #glyph_offset: + # x: 0 + # y: 0 + + # Thin stroke font rendering (macOS only) + # + # Thin strokes are suitable for retina displays, but for non-retina screens + # it is recommended to set `use_thin_strokes` to `false` + # + # macOS >= 10.14.x: + # + # If the font quality on non-retina display looks bad then set + # `use_thin_strokes` to `true` and enable font smoothing by running the + # following command: + # `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO` + # + # This is a global setting and will require a log out or restart to take + # effect. + #use_thin_strokes: true + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: true +# Base16 Atlas - alacritty color config +# Alex Lende (https://ajlende.com) +colors: + # Default colors + primary: + background: '0x002635' + foreground: '0xa1a19a' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '0x002635' + cursor: '0xa1a19a' + + # Normal colors + normal: + black: '0x002635' + red: '0xff5a67' + green: '0x7fc06e' + yellow: '0xffcc1b' + blue: '0x5dd7b9' + magenta: '0x9a70a4' + cyan: '0x14747e' + white: '0xa1a19a' + + # Bright colors + bright: + black: '0x6c8b91' + red: '0xf08e48' + green: '0x00384d' + yellow: '0x517f8d' + blue: '0x869696' + magenta: '0xe6e6dc' + cyan: '0xc43060' + white: '0xfafaf8' + +draw_bold_text_with_bright_colors: false +# Visual Bell +# +# Any time the BEL code is received, Alacritty "rings" the visual bell. Once +# rung, the terminal background will be set to white and transition back to the +# default background color. You can control the rate of this transition by +# setting the `duration` property (represented in milliseconds). You can also +# configure the transition function by setting the `animation` property. +# +# Values for `animation`: +# - Ease +# - EaseOut +# - EaseOutSine +# - EaseOutQuad +# - EaseOutCubic +# - EaseOutQuart +# - EaseOutQuint +# - EaseOutExpo +# - EaseOutCirc +# - Linear +# +# Specifying a `duration` of `0` will disable the visual bell. +#visual_bell: +# animation: EaseOutExpo +# duration: 0 +# color: '0xffffff' + +# Background opacity +# +# Window opacity as a floating point number from `0.0` to `1.0`. +# The value `0.0` is completely transparent and `1.0` is opaque. + + +#selection: + #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + #save_to_clipboard: false + +# Allow terminal applications to change Alacritty's window title. +#dynamic_title: true + +#cursor: + # Cursor style + # + # Values for `style`: + # - ▇ Block + # - _ Underline + # - | Beam + #style: Block + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + #unfocused_hollow: true + +# Live config reload (changes require restart) +#live_config_reload: true + +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`. +# Entries in `shell.args` are passed unmodified as arguments to the shell. +# +# Default: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +#shell: +# program: /bin/bash +# args: +# - --login + +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +#working_directory: None + +# WinPTY backend (Windows only) +# +# Alacritty defaults to using the newer ConPTY backend if it is available, +# since it resolves a lot of bugs and is quite a bit faster. If it is not +# available, the the WinPTY backend will be used instead. +# +# Setting this option to `true` makes Alacritty use the legacy WinPTY backend, +# even if the ConPTY backend is available. +#winpty_backend: false + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +#debug: + # Display the time it takes to redraw each frame. + #render_timer: false + + # Keep the log file after quitting Alacritty. + #persistent_logging: false + + # Log level + # + # Values for `log_level`: + # - None + # - Error + # - Warn + # - Info + # - Debug + # - Trace + #log_level: Warn + + # Print all received window events. + #print_events: false + + # Record all characters and escape sequences as test data. + #ref_test: false + +#mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + #double_click: { threshold: 300 } + #triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + #hide_when_typing: false + + #url: + # URL launcher + # + # This program is executed when clicking on a text which is recognized as a URL. + # The URL is always added to the command as the last parameter. + # + # When set to `None`, URL launching will be disabled completely. + # + # Default: + # - (macOS) open + # - (Linux/BSD) xdg-open + # - (Windows) explorer + #launcher: + # program: xdg-open + # args: [] + + # URL modifiers + # + # These are the modifiers that need to be held down for opening URLs when clicking + # on them. The available modifiers are documented in the key binding section. + #modifiers: None + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings) +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Middle, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - Copy +# - Paste +# - PasteSelection +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# - Hide +# - Minimize +# - Quit +# - ToggleFullscreen +# - SpawnNewInstance +# - ClearLogNotice +# - ReceiveChar +# - None +# +# (macOS only): +# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Alt +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +#key_bindings: + # (Windows, Linux, and BSD only) + #- { key: V, mods: Control|Shift, action: Paste } + #- { key: C, mods: Control|Shift, action: Copy } + #- { key: Insert, mods: Shift, action: PasteSelection } + #- { key: Key0, mods: Control, action: ResetFontSize } + #- { key: Equals, mods: Control, action: IncreaseFontSize } + #- { key: Add, mods: Control, action: IncreaseFontSize } + #- { key: Subtract, mods: Control, action: DecreaseFontSize } + #- { key: Minus, mods: Control, action: DecreaseFontSize } + + # (Windows only) + #- { key: Return, mods: Alt, action: ToggleFullscreen } + + # (macOS only) + #- { key: Key0, mods: Command, action: ResetFontSize } + #- { key: Equals, mods: Command, action: IncreaseFontSize } + #- { key: Add, mods: Command, action: IncreaseFontSize } + #- { key: Minus, mods: Command, action: DecreaseFontSize } + #- { key: K, mods: Command, action: ClearHistory } + #- { key: K, mods: Command, chars: "\x0c" } + #- { key: V, mods: Command, action: Paste } + #- { key: C, mods: Command, action: Copy } + #- { key: H, mods: Command, action: Hide } + #- { key: M, mods: Command, action: Minimize } + #- { key: Q, mods: Command, action: Quit } + #- { key: W, mods: Command, action: Quit } + #- { key: F, mods: Command|Control, action: ToggleFullscreen } + + #- { key: Paste, action: Paste } + #- { key: Copy, action: Copy } + #- { key: L, mods: Control, action: ClearLogNotice } + #- { key: L, mods: Control, chars: "\x0c" } + #- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt } + #- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt } + #- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt } + #- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt } diff --git a/.config/alacritty/colors/base16-atlas.yml b/.config/alacritty/colors/base16-atlas.yml new file mode 100644 index 0000000..0d3a4ea --- /dev/null +++ b/.config/alacritty/colors/base16-atlas.yml @@ -0,0 +1,36 @@ +# Base16 Atlas - alacritty color config +# Alex Lende (https://ajlende.com) +colors: + # Default colors + primary: + background: '0x002635' + foreground: '0xa1a19a' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '0x002635' + cursor: '0xa1a19a' + + # Normal colors + normal: + black: '0x002635' + red: '0xff5a67' + green: '0x7fc06e' + yellow: '0xffcc1b' + blue: '0x5dd7b9' + magenta: '0x9a70a4' + cyan: '0x14747e' + white: '0xa1a19a' + + # Bright colors + bright: + black: '0x6c8b91' + red: '0xf08e48' + green: '0x00384d' + yellow: '0x517f8d' + blue: '0x869696' + magenta: '0xe6e6dc' + cyan: '0xc43060' + white: '0xfafaf8' + +draw_bold_text_with_bright_colors: false diff --git a/.config/alacritty/colors/base16-dracula.yml b/.config/alacritty/colors/base16-dracula.yml new file mode 100644 index 0000000..77dadfb --- /dev/null +++ b/.config/alacritty/colors/base16-dracula.yml @@ -0,0 +1,36 @@ +# Base16 Dracula - alacritty color config +# Mike Barkmin (http://github.com/mikebarkmin) based on Dracula Theme (http://github.com/dracula) +colors: + # Default colors + primary: + background: '0x282936' + foreground: '0xe9e9f4' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '0x282936' + cursor: '0xe9e9f4' + + # Normal colors + normal: + black: '0x282936' + red: '0xea51b2' + green: '0xebff87' + yellow: '0x00f769' + blue: '0x62d6e8' + magenta: '0xb45bcf' + cyan: '0xa1efe4' + white: '0xe9e9f4' + + # Bright colors + bright: + black: '0x626483' + red: '0xb45bcf' + green: '0x3a3c4e' + yellow: '0x4d4f68' + blue: '0x62d6e8' + magenta: '0xf1f2f8' + cyan: '0x00f769' + white: '0xf7f7fb' + +draw_bold_text_with_bright_colors: false diff --git a/.config/alacritty/colors/base16-gruvbox-dark-soft-256.yml b/.config/alacritty/colors/base16-gruvbox-dark-soft-256.yml new file mode 100644 index 0000000..b5dc272 --- /dev/null +++ b/.config/alacritty/colors/base16-gruvbox-dark-soft-256.yml @@ -0,0 +1,42 @@ +# Base16 Gruvbox dark, soft 256 - alacritty color config +# Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) +colors: + # Default colors + primary: + background: '0x32302f' + foreground: '0xd5c4a1' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '0x32302f' + cursor: '0xd5c4a1' + + # Normal colors + normal: + black: '0x32302f' + red: '0xfb4934' + green: '0xb8bb26' + yellow: '0xfabd2f' + blue: '0x83a598' + magenta: '0xd3869b' + cyan: '0x8ec07c' + white: '0xd5c4a1' + + # Bright colors + bright: + black: '0x665c54' + red: '0xfb4934' + green: '0xb8bb26' + yellow: '0xfabd2f' + blue: '0x83a598' + magenta: '0xd3869b' + cyan: '0x8ec07c' + white: '0xfbf1c7' + + indexed_colors: + - { index: 16, color: '0xfe8019' } + - { index: 17, color: '0xd65d0e' } + - { index: 18, color: '0x3c3836' } + - { index: 19, color: '0x504945' } + - { index: 20, color: '0xbdae93' } + - { index: 21, color: '0xebdbb2' } diff --git a/.config/alacritty/colors/base16-gruvbox-dark-soft.yml b/.config/alacritty/colors/base16-gruvbox-dark-soft.yml new file mode 100644 index 0000000..85f9d0d --- /dev/null +++ b/.config/alacritty/colors/base16-gruvbox-dark-soft.yml @@ -0,0 +1,36 @@ +# Base16 Gruvbox dark, soft - alacritty color config +# Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) +colors: + # Default colors + primary: + background: '0x32302f' + foreground: '0xd5c4a1' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '0x32302f' + cursor: '0xd5c4a1' + + # Normal colors + normal: + black: '0x32302f' + red: '0xfb4934' + green: '0xb8bb26' + yellow: '0xfabd2f' + blue: '0x83a598' + magenta: '0xd3869b' + cyan: '0x8ec07c' + white: '0xd5c4a1' + + # Bright colors + bright: + black: '0x665c54' + red: '0xfe8019' + green: '0x3c3836' + yellow: '0x504945' + blue: '0xbdae93' + magenta: '0xebdbb2' + cyan: '0xd65d0e' + white: '0xfbf1c7' + +draw_bold_text_with_bright_colors: false diff --git a/.config/alacritty/colors/dracula b/.config/alacritty/colors/dracula new file mode 100644 index 0000000..0c69ceb --- /dev/null +++ b/.config/alacritty/colors/dracula @@ -0,0 +1,96 @@ +colors: + # Default colors + primary: + background: '0x282a36' + foreground: '0xf8f8f2' + + # Bright and dim foreground colors + # + # The dimmed foreground color is calculated automatically if it is not present. + # If the bright foreground color is not set, or `draw_bold_text_with_bright_colors` + # is `false`, the normal foreground color will be used. + #dim_foreground: '0x9a9a9a' + #bright_foreground: '0xffffff' + + # Cursor colors + # + # Colors which should be used to draw the terminal cursor. If these are unset, + # the cursor color will be the inverse of the cell color. + #cursor: + # text: '0x000000' + # cursor: '0xffffff' + + # Selection colors + # + # Colors which should be used to draw the selection area. If selection + # background is unset, selection color will be the inverse of the cell colors. + # If only text is unset the cell text color will remain the same. + #selection: + # text: '0xeaeaea' + # background: '0x404040' + + # Normal colors + #normal: + # black: '0x000000' + # red: '0xd54e53' + # green: '0xb9ca4a' + # yellow: '0xe6c547' + # blue: '0x7aa6da' + # magenta: '0xc397d8' + # cyan: '0x70c0ba' + # white: '0xeaeaea' + + # Bright colors + #bright: + # black: '0x666666' + # red: '0xff3334' + # green: '0x9ec400' + # yellow: '0xe7c547' + # blue: '0x7aa6da' + # magenta: '0xb77ee0' + # cyan: '0x54ced6' + # white: '0xffffff' + +#dracula + normal: + black: '0x000000' + red: '0xff5555' + green: '0x50fa7b' + yellow: '0xf1fa8c' + blue: '0xbd93f9' + magenta: '0xff79c6' + cyan: '0x8be9fd' + white: '0xbbbbbb' + bright: + black: '0x44475a' + red: '0xff5555' + green: '0x50fa7b' + yellow: '0xf1fa8c' + blue: '0xbd93f9' + magenta: '0xff79c6' + cyan: '0x8be9fd' + white: '0xffffff' + + # Dim colors + # + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. + #dim: + # black: '0x000000' + # red: '0x8c3336' + # green: '0x7a8530' + # yellow: '0x97822e' + # blue: '0x506d8f' + # magenta: '0x80638e' + # cyan: '0x497e7a' + # white: '0x9a9a9a' + + # Indexed Colors + # + # The indexed colors include all colors from 16 to 256. + # When these are not set, they're filled with sensible defaults. + # + # Example: + # `- { index: 16, color: '0xff00ff' }` + # + #indexed_colors: [] diff --git a/.config/aliasrc b/.config/aliasrc new file mode 100644 index 0000000..a094b4a --- /dev/null +++ b/.config/aliasrc @@ -0,0 +1,56 @@ +#better commands +alias ls="ls -hN --color=auto --group-directories-first" +alias wget='wget --hsts-file ~/.config/wget/wget-hsts' + +#git +alias gs='git status | less' + +#xbps +alias xi='sudo xbps-install' +alias xq='xbps-query' +alias xr='sudo xbps-remove' + +alias vim='nvim' + +#alias setwp='wal -s -t -e -i ' + +#shortend commands +alias btc='bluetoothctl' + +#sfeed +alias sf='sfeed_curses ~/.local/share/sfeed/feeds/*' +alias sfu='sfeed_update ~/.config/sfeed/sfeedrc' +alias sfc='rm -r ~/.local/share/sfeed/feeds/*' +alias sfe='$EDITOR ~/.config/sfeed/sfeedrc' + + +#alias mocp='mocp -M ~/.config/moc/' #-T transparent-background' +#alias glrun='proot -r ~/.local/share/void-glibc -b /home/' +alias mpvyl='mpv --ytdl-format=18 ' + +#system power +alias poweroff='sudo poweroff' +alias reboot='sudo reboot' +alias shutdown='sudo shutdown' + +#programs +alias trc='tremc -c @nagato:9091' +alias pm='pulsemixer' + +#Youtube +alias yv='pipe-viewer --resolution=480p' +alias yd='youtube-dl' + +#dotfiles configuration alias +alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' + +note() { + NOTEFILE="$HOME/docs/notes" + if [ "$#" -lt 1 ]; then + cat "$NOTEFILE" + elif [ "$1" = "-e" ]; then + $EDITOR "$NOTEFILE" + else + echo "$@" >> "$NOTEFILE" + fi +} diff --git a/.config/bash/history b/.config/bash/history new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.config/bash/history @@ -0,0 +1 @@ + diff --git a/.config/bemenu/bemenu-colorgen.sh b/.config/bemenu/bemenu-colorgen.sh new file mode 100755 index 0000000..06df23a --- /dev/null +++ b/.config/bemenu/bemenu-colorgen.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +BEMENUOPTS_FILE="$HOME/.config/bemenu/bemenu_opts.sh" + +HEIGHT="22" #height in pixels to make the bemenu prompt + +! [ -f "$1" ] && echo "input base16 color file for first argument." && exit + +NB="" +NF="" +HB="" +HF="" +SB="" +SF="" +TB="" +TF="" +FB="" +FF="#ffffff" + +IFS=' +' + +COUNT=0 +for LINE in $(cat "$1") +do + case $COUNT in + 0) NB="$LINE" && HB="$LINE" && TB="$LINE" && FB="$LINE";; + 1) SB="$LINE";; + 6) HF="$LINE" && SF="$LINE";; + 10) NF="$LINE" && TF="$LINE";; + esac + + COUNT=$((COUNT + 1)) +done + +echo "bemenu colors updated." + +echo "#!/bin/sh" > "$BEMENUOPTS_FILE" +echo "#generated from: $1" >> "$BEMENUOPTS_FILE" +echo "export BEMENU_OPTS=\"-H $HEIGHT --nb $NB --nf $NF --hb $HB --hf $HF --sb $SB --sf $SF --tb $TB --tf $TF --fb $FB --ff $FF\"" >> "$BEMENUOPTS_FILE" diff --git a/.config/bemenu/bemenu_opts.sh b/.config/bemenu/bemenu_opts.sh new file mode 100644 index 0000000..8f06fd9 --- /dev/null +++ b/.config/bemenu/bemenu_opts.sh @@ -0,0 +1,3 @@ +#!/bin/sh +#generated from: colors/base16-atlas +export BEMENU_OPTS="-H 22 --nb #002635 --nf #ffcc1b --hb #002635 --hf #e6e6dc --sb #00384d --sf #e6e6dc --tb #002635 --tf #ffcc1b --fb #002635 --ff #ffffff" diff --git a/.config/bemenu/colors/base16-atlas b/.config/bemenu/colors/base16-atlas new file mode 100644 index 0000000..8ffb3a7 --- /dev/null +++ b/.config/bemenu/colors/base16-atlas @@ -0,0 +1,16 @@ +#002635 +#00384d +#517F8D +#6C8B91 +#869696 +#a1a19a +#e6e6dc +#fafaf8 +#ff5a67 +#f08e48 +#ffcc1b +#7fc06e +#14747e +#5dd7b9 +#9a70a4 +#c43060 diff --git a/.config/cmus/autosave b/.config/cmus/autosave new file mode 100644 index 0000000..5de5a74 --- /dev/null +++ b/.config/cmus/autosave @@ -0,0 +1,194 @@ +set aaa_mode=all +set altformat_current= %F +set altformat_playlist= %f%= %d +set altformat_title=%f +set altformat_trackwin= %f%= %d +set auto_expand_albums_follow=true +set auto_expand_albums_search=true +set auto_expand_albums_selcur=true +set auto_reshuffle=true +set buffer_seconds=10 +set color_cmdline_attr=default +set color_cmdline_bg=default +set color_cmdline_fg=default +set color_cur_sel_attr=default +set color_error=lightred +set color_info=lightyellow +set color_separator=blue +set color_statusline_attr=default +set color_statusline_bg=gray +set color_statusline_fg=black +set color_titleline_attr=default +set color_titleline_bg=blue +set color_titleline_fg=white +set color_trackwin_album_attr=bold +set color_trackwin_album_bg=default +set color_trackwin_album_fg=default +set color_win_attr=default +set color_win_bg=default +set color_win_cur=lightyellow +set color_win_cur_attr=default +set color_win_cur_sel_attr=default +set color_win_cur_sel_bg=blue +set color_win_cur_sel_fg=lightyellow +set color_win_dir=lightblue +set color_win_fg=default +set color_win_inactive_cur_sel_attr=default +set color_win_inactive_cur_sel_bg=gray +set color_win_inactive_cur_sel_fg=lightyellow +set color_win_inactive_sel_attr=default +set color_win_inactive_sel_bg=gray +set color_win_inactive_sel_fg=black +set color_win_sel_attr=default +set color_win_sel_bg=blue +set color_win_sel_fg=white +set color_win_title_attr=default +set color_win_title_bg=blue +set color_win_title_fg=white +set confirm_run=true +set continue=false +set device=/dev/cdrom +set display_artist_sort_name=false +set dsp.alsa.device=default +set follow=false +set format_current= %a - %l -%3n. %t%= %y +set format_playlist= %-21%a %3n. %t%= %y %d %{?X!=0?%3X ? } +set format_playlist_va= %-21%A %3n. %t (%a)%= %y %d %{?X!=0?%3X ? } +set format_statusline= %{status} %{?show_playback_position?%{position} %{?duration?/ %{duration} }?%{?duration?%{duration} }}- %{total} %{?bpm>0?at %{bpm} BPM }%{?volume>=0?vol: %{?lvolume!=rvolume?%{lvolume},%{rvolume} ?%{volume} }}%{?stream?buf: %{buffer} }%{?show_current_bitrate & bitrate>=0? %{bitrate} kbps }%=%{?repeat_current?repeat current?%{?play_library?%{playlist_mode} from %{?play_sorted?sorted }library?playlist}} | %1{continue}%1{follow}%1{repeat}%1{shuffle} +set format_title=%a - %l - %t (%y) +set format_trackwin=%3n. %t%= %y %d +set format_trackwin_album= %l %= %{albumduration} +set format_trackwin_va=%3n. %t (%a)%= %y %d +set format_treewin= %l +set format_treewin_artist=%a +set icecast_default_charset=ISO-8859-1 +set id3_default_charset=ISO-8859-1 +set input.cue.priority=50 +set input.ffmpeg.priority=30 +set input.mad.priority=55 +set input.vorbis.priority=50 +set input.wav.priority=50 +set lib_add_filter= +set lib_sort=albumartist date album discnumber tracknumber title filename play_count +set mixer.alsa.channel=Master +set mixer.alsa.device=default +set mouse=false +set mpris=false +set output_plugin=alsa +set passwd= +set pl_sort= +set play_library=true +set play_sorted=false +set repeat=false +set repeat_current=false +set replaygain=disabled +set replaygain_limit=true +set replaygain_preamp=0.000000 +set resume=false +set rewind_offset=5 +set scroll_offset=2 +set set_term_title=true +set show_all_tracks=true +set show_current_bitrate=false +set show_hidden=false +set show_playback_position=true +set show_remaining_time=false +set shuffle=false +set skip_track_info=false +set smart_artist_sort=true +set softvol=false +set softvol_state=0 0 +set start_view=tree +set status_display_program= +set time_show_leading_zero=true +set wrap_search=true +bind browser backspace browser-up +bind browser i toggle show_hidden +bind browser space win-activate +bind browser u win-update +bind common ! push shell +bind common + vol +10% +bind common , seek -1m +bind common - vol -10% +bind common . seek +1m +bind common / search-start +bind common 1 view tree +bind common 2 view sorted +bind common 3 view playlist +bind common 4 view queue +bind common 5 view browser +bind common 6 view filters +bind common 7 view settings +bind common = vol +10% +bind common ? search-b-start +bind common C toggle continue +bind common D win-remove +bind common E win-add-Q +bind common F push filter +bind common G win-bottom +bind common I echo {} +bind common L push live-filter +bind common M toggle play_library +bind common N search-prev +bind common P win-mv-before +bind common U win-update-cache +bind common [ vol +1% +0 +bind common ] vol +0 +1% +bind common ^B win-page-up +bind common ^C echo Type :quit to exit cmus. +bind common ^D win-half-page-down +bind common ^E win-scroll-down +bind common ^F win-page-down +bind common ^L refresh +bind common ^R toggle repeat_current +bind common ^U win-half-page-up +bind common ^Y win-scroll-up +bind common a win-add-l +bind common b player-next +bind common c win-mv-after +bind common delete win-remove +bind common down win-down +bind common e win-add-q +bind common end win-bottom +bind common enter win-activate +bind common f toggle follow +bind common g win-top +bind common h seek -5 +bind common home win-top +bind common i win-sel-cur +bind common j win-down +bind common k win-up +bind common l seek +5 +bind common left seek -5 +bind common m toggle aaa_mode +bind common mlb_click_selected win-activate +bind common mouse_scroll_down win-down +bind common mouse_scroll_up win-up +bind common n search-next +bind common o toggle play_sorted +bind common p player-pause +bind common page_down win-page-down +bind common page_up win-page-up +bind common q quit -i +bind common r toggle repeat +bind common right seek +5 +bind common s toggle shuffle +bind common space win-toggle +bind common t toggle show_remaining_time +bind common tab win-next +bind common u update-cache +bind common up win-up +bind common v player-stop +bind common x player-play +bind common y win-add-p +bind common z player-prev +bind common { vol -1% -0 +bind common } vol -0 -1% +fset 90s=date>=1990&date<2000 +fset classical=genre="Classical" +fset missing-tag=!stream&(artist=""|album=""|title=""|tracknumber=-1|date=-1) +fset mp3=filename="*.mp3" +fset ogg=filename="*.ogg" +fset ogg-or-mp3=ogg|mp3 +fset unheard=play_count=0 +factivate diff --git a/.config/cmus/rc b/.config/cmus/rc new file mode 100644 index 0000000..063574e --- /dev/null +++ b/.config/cmus/rc @@ -0,0 +1,4 @@ +set output_plugin=alsa +set dsp.alsa.device=default +set mixer.alsa.device=default +set mixer.alsa.channel=Master diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf new file mode 100644 index 0000000..3bef0ce --- /dev/null +++ b/.config/fontconfig/fonts.conf @@ -0,0 +1,76 @@ + + + + + + + Serif + Linux Libertine + + + sans-serif + Linux Biolinum + + + sans + Linux Biolinum + + + monospace + Mononoki Nerd Font + + + + + + Arial + + Linux Biolinum + + + + Helvetica + + Linux Biolinum + + + + Verdana + + Linux Biolinum + + + + Tahoma + + Linux Biolinum + + + + + Comic Sans MS + + Linux Biolinum + + + + Times New Roman + + Linux Libertine + + + + Times + + Linux Libertine + + + + Courier New + + Mononoki Nerd Font + + + + + diff --git a/.config/gammastep/config.ini b/.config/gammastep/config.ini new file mode 100644 index 0000000..cdae925 --- /dev/null +++ b/.config/gammastep/config.ini @@ -0,0 +1,69 @@ +; Global settings +[general] +; Set the day and night screen temperatures +temp-day=3600 +temp-night=3500 + +; Disable the smooth fade between temperatures when Redshift starts and stops. +; 0 will cause an immediate change between screen temperatures. +; 1 will gradually apply the new screen temperature over a couple of seconds. +fade=1 + +; Solar elevation thresholds. +; By default, Redshift will use the current elevation of the sun to determine +; whether it is daytime, night or in transition (dawn/dusk). When the sun is +; above the degrees specified with elevation-high it is considered daytime and +; below elevation-low it is considered night. +;elevation-high=3 +;elevation-low=-6 + +; Custom dawn/dusk intervals. +; Instead of using the solar elevation, the time intervals of dawn and dusk +; can be specified manually. The times must be specified as HH:MM in 24-hour +; format. +;dawn-time=6:00-7:45 +;dusk-time=18:35-20:15 + +; Set the screen brightness. Default is 1.0. +;brightness=0.9 +; It is also possible to use different settings for day and night +; since version 1.8. +;brightness-day=0.7 +;brightness-night=0.4 +; Set the screen gamma (for all colors, or each color channel +; individually) +gamma=1 +;gamma=0.8:0.7:0.8 +; This can also be set individually for day and night since +; version 1.10. +;gamma-day=0.8:0.7:0.8 +;gamma-night=0.6 + +; Set the location-provider: 'geoclue2', 'manual'. +; The location provider settings are in a different section. +location-provider=manual + +; Set the adjustment-method: 'randr', 'vidmode', 'drm', 'wayland'. +; 'randr' is the preferred X11 method, 'vidmode' is an older API +; that works in some cases when 'randr' does not. +; The adjustment method settings are in a different section. +adjustment-method=wayland + +; Configuration of the location-provider: +; type 'gammastep -l PROVIDER:help' to see the settings. +; ex: 'gammastep -l manual:help' +; Keep in mind that longitudes west of Greenwich (e.g. the Americas) +; are negative numbers. +[manual] +lat=32 +lon=-86 + +; Configuration of the adjustment-method +; type 'gammastep -m METHOD:help' to see the settings. +; ex: 'gammastep -m randr:help' +; In this example, randr is configured to adjust only screen 0. +; Note that the numbering starts from 0, so this is actually the first screen. +; If this option is not specified, Redshift will try to adjust _all_ screens. +[randr] +screen=0 + diff --git a/.config/gtk-2.0/gtkfilechooser.ini b/.config/gtk-2.0/gtkfilechooser.ini new file mode 100644 index 0000000..a112f7c --- /dev/null +++ b/.config/gtk-2.0/gtkfilechooser.ini @@ -0,0 +1,11 @@ +[Filechooser Settings] +LocationMode=path-bar +ShowHidden=true +ShowSizeColumn=true +GeometryX=512 +GeometryY=194 +GeometryWidth=792 +GeometryHeight=702 +SortColumn=name +SortOrder=ascending +StartupMode=recent diff --git a/.config/gtk-2.0/gtkrc-2.0 b/.config/gtk-2.0/gtkrc-2.0 new file mode 100644 index 0000000..a7c342d --- /dev/null +++ b/.config/gtk-2.0/gtkrc-2.0 @@ -0,0 +1,19 @@ +# DO NOT EDIT! This file will be overwritten by LXAppearance. +# Any customization should be done in ~/.gtkrc-2.0.mine instead. + +include "/home/alex/.gtkrc-2.0.mine" +gtk-theme-name="Nordic-standard-buttons" +gtk-icon-theme-name="Papirus" +gtk-font-name="Sans 10" +gtk-cursor-theme-name="Adwaita" +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle="hintfull" +gtk-xft-rgba="rgb" diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini new file mode 100644 index 0000000..3036f89 --- /dev/null +++ b/.config/gtk-3.0/settings.ini @@ -0,0 +1,16 @@ +[Settings] +gtk-theme-name=Nordic-standard-buttons +gtk-icon-theme-name=Papirus +gtk-font-name=Sans 10 +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintfull +gtk-xft-rgba=rgb +gtk-cursor-theme-name=Adwaita diff --git a/.config/inputrc b/.config/inputrc new file mode 100644 index 0000000..55e23de --- /dev/null +++ b/.config/inputrc @@ -0,0 +1 @@ +$include /etc/inputrc diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf new file mode 100644 index 0000000..66f8c9c --- /dev/null +++ b/.config/kitty/kitty.conf @@ -0,0 +1,1337 @@ +# vim:fileencoding=utf-8:ft=conf:foldmethod=marker + +#: Fonts {{{ + +#: kitty has very powerful font management. You can configure +#: individual font faces and even specify special fonts for particular +#: characters. + +font_family monospace +bold_font auto +italic_font auto +bold_italic_font auto + +#: You can specify different fonts for the bold/italic/bold-italic +#: variants. To get a full list of supported fonts use the `kitty +#: list-fonts` command. By default they are derived automatically, by +#: the OSes font system. Setting them manually is useful for font +#: families that have many weight variants like Book, Medium, Thick, +#: etc. For example:: + +#: font_family Operator Mono Book +#: bold_font Operator Mono Medium +#: italic_font Operator Mono Book Italic +#: bold_italic_font Operator Mono Medium Italic + +font_size 10.0 + +#: Font size (in pts) + +force_ltr no + +#: kitty does not support BIDI (bidirectional text), however, for RTL +#: scripts, words are automatically displayed in RTL. That is to say, +#: in an RTL script, the words "HELLO WORLD" display in kitty as +#: "WORLD HELLO", and if you try to select a substring of an RTL- +#: shaped string, you will get the character that would be there had +#: the the string been LTR. For example, assuming the Hebrew word +#: ירושלים, selecting the character that on the screen appears to be ם +#: actually writes into the selection buffer the character י. + +#: kitty's default behavior is useful in conjunction with a filter to +#: reverse the word order, however, if you wish to manipulate RTL +#: glyphs, it can be very challenging to work with, so this option is +#: provided to turn it off. Furthermore, this option can be used with +#: the command line program GNU FriBidi +#: to get BIDI +#: support, because it will force kitty to always treat the text as +#: LTR, which FriBidi expects for terminals. + +adjust_line_height 0 +adjust_column_width 0 + +#: Change the size of each character cell kitty renders. You can use +#: either numbers, which are interpreted as pixels or percentages +#: (number followed by %), which are interpreted as percentages of the +#: unmodified values. You can use negative pixels or percentages less +#: than 100% to reduce sizes (but this might cause rendering +#: artifacts). + +# symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols + +#: Map the specified unicode codepoints to a particular font. Useful +#: if you need special rendering for some symbols, such as for +#: Powerline. Avoids the need for patched fonts. Each unicode code +#: point is specified in the form U+. You +#: can specify multiple code points, separated by commas and ranges +#: separated by hyphens. symbol_map itself can be specified multiple +#: times. Syntax is:: + +#: symbol_map codepoints Font Family Name + +disable_ligatures never + +#: Choose how you want to handle multi-character ligatures. The +#: default is to always render them. You can tell kitty to not render +#: them when the cursor is over them by using cursor to make editing +#: easier, or have kitty never render them at all by using always, if +#: you don't like them. The ligature strategy can be set per-window +#: either using the kitty remote control facility or by defining +#: shortcuts for it in kitty.conf, for example:: + +#: map alt+1 disable_ligatures_in active always +#: map alt+2 disable_ligatures_in all never +#: map alt+3 disable_ligatures_in tab cursor + +#: Note that this refers to programming ligatures, typically +#: implemented using the calt OpenType feature. For disabling general +#: ligatures, use the font_features setting. + +font_features none + +#: Choose exactly which OpenType features to enable or disable. This +#: is useful as some fonts might have features worthwhile in a +#: terminal. For example, Fira Code Retina includes a discretionary +#: feature, zero, which in that font changes the appearance of the +#: zero (0), to make it more easily distinguishable from Ø. Fira Code +#: Retina also includes other discretionary features known as +#: Stylistic Sets which have the tags ss01 through ss20. + +#: Note that this code is indexed by PostScript name, and not the font +#: family. This allows you to define very precise feature settings; +#: e.g. you can disable a feature in the italic font but not in the +#: regular font. + +#: On Linux, these are read from the FontConfig database first and +#: then this, setting is applied, so they can be configured in a +#: single, central place. + +#: To get the PostScript name for a font, use kitty + list-fonts +#: --psnames: + +#: .. code-block:: sh + +#: $ kitty + list-fonts --psnames | grep Fira +#: Fira Code +#: Fira Code Bold (FiraCode-Bold) +#: Fira Code Light (FiraCode-Light) +#: Fira Code Medium (FiraCode-Medium) +#: Fira Code Regular (FiraCode-Regular) +#: Fira Code Retina (FiraCode-Retina) + +#: The part in brackets is the PostScript name. + +#: Enable alternate zero and oldstyle numerals:: + +#: font_features FiraCode-Retina +zero +onum + +#: Enable only alternate zero:: + +#: font_features FiraCode-Retina +zero + +#: Disable the normal ligatures, but keep the calt feature which (in +#: this font) breaks up monotony:: + +#: font_features TT2020StyleB-Regular -liga +calt + +#: In conjunction with force_ltr, you may want to disable Arabic +#: shaping entirely, and only look at their isolated forms if they +#: show up in a document. You can do this with e.g.:: + +#: font_features UnifontMedium +isol -medi -fina -init + +box_drawing_scale 0.001, 1, 1.5, 2 + +#: Change the sizes of the lines used for the box drawing unicode +#: characters These values are in pts. They will be scaled by the +#: monitor DPI to arrive at a pixel value. There must be four values +#: corresponding to thin, normal, thick, and very thick lines. + +#: }}} + +#: Cursor customization {{{ + +cursor #cccccc + +#: Default cursor color + +cursor_text_color #111111 + +#: Choose the color of text under the cursor. If you want it rendered +#: with the background color of the cell underneath instead, use the +#: special keyword: background + +cursor_shape block + +#: The cursor shape can be one of (block, beam, underline) + +cursor_beam_thickness 1.5 + +#: Defines the thickness of the beam cursor (in pts) + +cursor_underline_thickness 2.0 + +#: Defines the thickness of the underline cursor (in pts) + +cursor_blink_interval -1 + +#: The interval (in seconds) at which to blink the cursor. Set to zero +#: to disable blinking. Negative values mean use system default. Note +#: that numbers smaller than repaint_delay will be limited to +#: repaint_delay. + +cursor_stop_blinking_after 15.0 + +#: Stop blinking cursor after the specified number of seconds of +#: keyboard inactivity. Set to zero to never stop blinking. + +#: }}} + +#: Scrollback {{{ + +scrollback_lines 2000 + +#: Number of lines of history to keep in memory for scrolling back. +#: Memory is allocated on demand. Negative numbers are (effectively) +#: infinite scrollback. Note that using very large scrollback is not +#: recommended as it can slow down performance of the terminal and +#: also use large amounts of RAM. Instead, consider using +#: scrollback_pager_history_size. + +scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER + +#: Program with which to view scrollback in a new window. The +#: scrollback buffer is passed as STDIN to this program. If you change +#: it, make sure the program you use can handle ANSI escape sequences +#: for colors and text formatting. INPUT_LINE_NUMBER in the command +#: line above will be replaced by an integer representing which line +#: should be at the top of the screen. Similarly CURSOR_LINE and +#: CURSOR_COLUMN will be replaced by the current cursor position. + +scrollback_pager_history_size 0 + +#: Separate scrollback history size, used only for browsing the +#: scrollback buffer (in MB). This separate buffer is not available +#: for interactive scrolling but will be piped to the pager program +#: when viewing scrollback buffer in a separate window. The current +#: implementation stores the data in UTF-8, so approximatively 10000 +#: lines per megabyte at 100 chars per line, for pure ASCII text, +#: unformatted text. A value of zero or less disables this feature. +#: The maximum allowed size is 4GB. + +wheel_scroll_multiplier 5.0 + +#: Modify the amount scrolled by the mouse wheel. Note this is only +#: used for low precision scrolling devices, not for high precision +#: scrolling on platforms such as macOS and Wayland. Use negative +#: numbers to change scroll direction. + +touch_scroll_multiplier 1.0 + +#: Modify the amount scrolled by a touchpad. Note this is only used +#: for high precision scrolling devices on platforms such as macOS and +#: Wayland. Use negative numbers to change scroll direction. + +#: }}} + +#: Mouse {{{ + +mouse_hide_wait 3.0 + +#: Hide mouse cursor after the specified number of seconds of the +#: mouse not being used. Set to zero to disable mouse cursor hiding. +#: Set to a negative value to hide the mouse cursor immediately when +#: typing text. Disabled by default on macOS as getting it to work +#: robustly with the ever-changing sea of bugs that is Cocoa is too +#: much effort. + +url_color #0087bd +url_style curly + +#: The color and style for highlighting URLs on mouse-over. url_style +#: can be one of: none, single, double, curly + +open_url_modifiers kitty_mod + +#: The modifier keys to press when clicking with the mouse on URLs to +#: open the URL + +open_url_with default + +#: The program with which to open URLs that are clicked on. The +#: special value default means to use the operating system's default +#: URL handler. + +url_prefixes http https file ftp + +#: The set of URL prefixes to look for when detecting a URL under the +#: mouse cursor. + +detect_urls yes + +#: Detect URLs under the mouse. Detected URLs are highlighted with an +#: underline and the mouse cursor becomes a hand over them. Even if +#: this option is disabled, URLs are still clickable. + +copy_on_select no + +#: Copy to clipboard or a private buffer on select. With this set to +#: clipboard, simply selecting text with the mouse will cause the text +#: to be copied to clipboard. Useful on platforms such as macOS that +#: do not have the concept of primary selections. You can instead +#: specify a name such as a1 to copy to a private kitty buffer +#: instead. Map a shortcut with the paste_from_buffer action to paste +#: from this private buffer. For example:: + +#: map cmd+shift+v paste_from_buffer a1 + +#: Note that copying to the clipboard is a security risk, as all +#: programs, including websites open in your browser can read the +#: contents of the system clipboard. + +strip_trailing_spaces never + +#: Remove spaces at the end of lines when copying to clipboard. A +#: value of smart will do it when using normal selections, but not +#: rectangle selections. always will always do it. + +rectangle_select_modifiers ctrl+alt + +#: The modifiers to use rectangular selection (i.e. to select text in +#: a rectangular block with the mouse) + +terminal_select_modifiers shift + +#: The modifiers to override mouse selection even when a terminal +#: application has grabbed the mouse + +select_by_word_characters @-./_~?&=%+# + +#: Characters considered part of a word when double clicking. In +#: addition to these characters any character that is marked as an +#: alphanumeric character in the unicode database will be matched. + +click_interval -1.0 + +#: The interval between successive clicks to detect double/triple +#: clicks (in seconds). Negative numbers will use the system default +#: instead, if available, or fallback to 0.5. + +focus_follows_mouse no + +#: Set the active window to the window under the mouse when moving the +#: mouse around + +pointer_shape_when_grabbed arrow + +#: The shape of the mouse pointer when the program running in the +#: terminal grabs the mouse. Valid values are: arrow, beam and hand + +default_pointer_shape beam + +#: The default shape of the mouse pointer. Valid values are: arrow, +#: beam and hand + +pointer_shape_when_dragging beam + +#: The default shape of the mouse pointer when dragging across text. +#: Valid values are: arrow, beam and hand + +#: }}} + +#: Performance tuning {{{ + +repaint_delay 10 + +#: Delay (in milliseconds) between screen updates. Decreasing it, +#: increases frames-per-second (FPS) at the cost of more CPU usage. +#: The default value yields ~100 FPS which is more than sufficient for +#: most uses. Note that to actually achieve 100 FPS you have to either +#: set sync_to_monitor to no or use a monitor with a high refresh +#: rate. Also, to minimize latency when there is pending input to be +#: processed, repaint_delay is ignored. + +input_delay 3 + +#: Delay (in milliseconds) before input from the program running in +#: the terminal is processed. Note that decreasing it will increase +#: responsiveness, but also increase CPU usage and might cause flicker +#: in full screen programs that redraw the entire screen on each loop, +#: because kitty is so fast that partial screen updates will be drawn. + +sync_to_monitor yes + +#: Sync screen updates to the refresh rate of the monitor. This +#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) +#: when scrolling. However, it limits the rendering speed to the +#: refresh rate of your monitor. With a very high speed mouse/high +#: keyboard repeat rate, you may notice some slight input latency. If +#: so, set this to no. + +#: }}} + +#: Terminal bell {{{ + +enable_audio_bell yes + +#: Enable/disable the audio bell. Useful in environments that require +#: silence. + +visual_bell_duration 0.0 + +#: Visual bell duration. Flash the screen when a bell occurs for the +#: specified number of seconds. Set to zero to disable. + +window_alert_on_bell yes + +#: Request window attention on bell. Makes the dock icon bounce on +#: macOS or the taskbar flash on linux. + +bell_on_tab yes + +#: Show a bell symbol on the tab if a bell occurs in one of the +#: windows in the tab and the window is not the currently focused +#: window + +command_on_bell none + +#: Program to run when a bell occurs. + +#: }}} + +#: Window layout {{{ + +remember_window_size yes +initial_window_width 640 +initial_window_height 400 + +#: If enabled, the window size will be remembered so that new +#: instances of kitty will have the same size as the previous +#: instance. If disabled, the window will initially have size +#: configured by initial_window_width/height, in pixels. You can use a +#: suffix of "c" on the width/height values to have them interpreted +#: as number of cells instead of pixels. + +enabled_layouts * + +#: The enabled window layouts. A comma separated list of layout names. +#: The special value all means all layouts. The first listed layout +#: will be used as the startup layout. Default configuration is all +#: layouts in alphabetical order. For a list of available layouts, see +#: the https://sw.kovidgoyal.net/kitty/index.html#layouts. + +window_resize_step_cells 2 +window_resize_step_lines 2 + +#: The step size (in units of cell width/cell height) to use when +#: resizing windows. The cells value is used for horizontal resizing +#: and the lines value for vertical resizing. + +window_border_width 0.5pt + +#: The width of window borders. Can be either in pixels (px) or pts +#: (pt). Values in pts will be rounded to the nearest number of pixels +#: based on screen resolution. If not specified the unit is assumed to +#: be pts. Note that borders are displayed only when more than one +#: window is visible. They are meant to separate multiple windows. + +draw_minimal_borders yes + +#: Draw only the minimum borders needed. This means that only the +#: minimum needed borders for inactive windows are drawn. That is only +#: the borders that separate the inactive window from a neighbor. Note +#: that setting a non-zero window margin overrides this and causes all +#: borders to be drawn. + +window_margin_width 0 + +#: The window margin (in pts) (blank area outside the border). A +#: single value sets all four sides. Two values set the vertical and +#: horizontal sides. Three values set top, horizontal and bottom. Four +#: values set top, right, bottom and left. + +single_window_margin_width -1 + +#: The window margin (in pts) to use when only a single window is +#: visible. Negative values will cause the value of +#: window_margin_width to be used instead. A single value sets all +#: four sides. Two values set the vertical and horizontal sides. Three +#: values set top, horizontal and bottom. Four values set top, right, +#: bottom and left. + +window_padding_width 0 + +#: The window padding (in pts) (blank area between the text and the +#: window border). A single value sets all four sides. Two values set +#: the vertical and horizontal sides. Three values set top, horizontal +#: and bottom. Four values set top, right, bottom and left. + +placement_strategy center + +#: When the window size is not an exact multiple of the cell size, the +#: cell area of the terminal window will have some extra padding on +#: the sides. You can control how that padding is distributed with +#: this option. Using a value of center means the cell area will be +#: placed centrally. A value of top-left means the padding will be on +#: only the bottom and right edges. + +active_border_color #00ff00 + +#: The color for the border of the active window. Set this to none to +#: not draw borders around the active window. + +inactive_border_color #cccccc + +#: The color for the border of inactive windows + +bell_border_color #ff5a00 + +#: The color for the border of inactive windows in which a bell has +#: occurred + +inactive_text_alpha 1.0 + +#: Fade the text in inactive windows by the specified amount (a number +#: between zero and one, with zero being fully faded). + +hide_window_decorations no + +#: Hide the window decorations (title-bar and window borders) with +#: yes. On macOS, titlebar-only can be used to only hide the titlebar. +#: Whether this works and exactly what effect it has depends on the +#: window manager/operating system. + +resize_debounce_time 0.1 + +#: The time (in seconds) to wait before redrawing the screen when a +#: resize event is received. On platforms such as macOS, where the +#: operating system sends events corresponding to the start and end of +#: a resize, this number is ignored. + +resize_draw_strategy static + +#: Choose how kitty draws a window while a resize is in progress. A +#: value of static means draw the current window contents, mostly +#: unchanged. A value of scale means draw the current window contents +#: scaled. A value of blank means draw a blank window. A value of size +#: means show the window size in cells. + +resize_in_steps no + +#: Resize the OS window in steps as large as the cells, instead of +#: with the usual pixel accuracy. Combined with an +#: initial_window_width and initial_window_height in number of cells, +#: this option can be used to keep the margins as small as possible +#: when resizing the OS window. Note that this does not currently work +#: on Wayland. + +confirm_os_window_close 0 + +#: Ask for confirmation when closing an OS window or a tab that has at +#: least this number of kitty windows in it. A value of zero disables +#: confirmation. This confirmation also applies to requests to quit +#: the entire application (all OS windows, via the quit action). + +#: }}} + +#: Tab bar {{{ + +tab_bar_edge bottom + +#: Which edge to show the tab bar on, top or bottom + +tab_bar_margin_width 0.0 + +#: The margin to the left and right of the tab bar (in pts) + +tab_bar_style fade + +#: The tab bar style, can be one of: fade, separator, powerline, or +#: hidden. In the fade style, each tab's edges fade into the +#: background color, in the separator style, tabs are separated by a +#: configurable separator, and the powerline shows the tabs as a +#: continuous line. If you use the hidden style, you might want to +#: create a mapping for the select_tab action which presents you with +#: a list of tabs and allows for easy switching to a tab. + +tab_bar_min_tabs 2 + +#: The minimum number of tabs that must exist before the tab bar is +#: shown + +tab_switch_strategy previous + +#: The algorithm to use when switching to a tab when the current tab +#: is closed. The default of previous will switch to the last used +#: tab. A value of left will switch to the tab to the left of the +#: closed tab. A value of right will switch to the tab to the right of +#: the closed tab. A value of last will switch to the right-most tab. + +tab_fade 0.25 0.5 0.75 1 + +#: Control how each tab fades into the background when using fade for +#: the tab_bar_style. Each number is an alpha (between zero and one) +#: that controls how much the corresponding cell fades into the +#: background, with zero being no fade and one being full fade. You +#: can change the number of cells used by adding/removing entries to +#: this list. + +tab_separator " ┇" + +#: The separator between tabs in the tab bar when using separator as +#: the tab_bar_style. + +tab_activity_symbol none + +#: Some text or a unicode symbol to show on the tab if a window in the +#: tab that does not have focus has some activity. + +tab_title_template "{title}" + +#: A template to render the tab title. The default just renders the +#: title. If you wish to include the tab-index as well, use something +#: like: {index}: {title}. Useful if you have shortcuts mapped for +#: goto_tab N. In addition you can use {layout_name} for the current +#: layout name and {num_windows} for the number of windows in the tab. +#: Note that formatting is done by Python's string formatting +#: machinery, so you can use, for instance, {layout_name[:2].upper()} +#: to show only the first two letters of the layout name, upper-cased. +#: If you want to style the text, you can use styling directives, for +#: example: {fmt.fg.red}red{fmt.fg.default}normal{fmt.bg._00FF00}green +#: bg{fmt.bg.normal}. Similarly, for bold and italic: +#: {fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}. + +active_tab_title_template none + +#: Template to use for active tabs, if not specified falls back to +#: tab_title_template. + +active_tab_foreground #000 +active_tab_background #eee +active_tab_font_style bold-italic +inactive_tab_foreground #444 +inactive_tab_background #999 +inactive_tab_font_style normal + +#: Tab bar colors and styles + +tab_bar_background none + +#: Background color for the tab bar. Defaults to using the terminal +#: background color. + +#: }}} + +#: Color scheme {{{ + +foreground #e9e9f4 +background #282936 + +#: The foreground and background colors + +background_opacity 0.9 + +#: The opacity of the background. A number between 0 and 1, where 1 is +#: opaque and 0 is fully transparent. This will only work if +#: supported by the OS (for instance, when using a compositor under +#: X11). Note that it only sets the background color's opacity in +#: cells that have the same background color as the default terminal +#: background. This is so that things like the status bar in vim, +#: powerline prompts, etc. still look good. But it means that if you +#: use a color theme with a background color in your editor, it will +#: not be rendered as transparent. Instead you should change the +#: default background color in your kitty config and not use a +#: background color in the editor color scheme. Or use the escape +#: codes to set the terminals default colors in a shell script to +#: launch your editor. Be aware that using a value less than 1.0 is a +#: (possibly significant) performance hit. If you want to dynamically +#: change transparency of windows set dynamic_background_opacity to +#: yes (this is off by default as it has a performance cost) + +background_image none + +#: Path to a background image. Must be in PNG format. + +background_image_layout tiled + +#: Whether to tile or scale the background image. + +background_image_linear no + +#: When background image is scaled, whether linear interpolation +#: should be used. + +dynamic_background_opacity no + +#: Allow changing of the background_opacity dynamically, using either +#: keyboard shortcuts (increase_background_opacity and +#: decrease_background_opacity) or the remote control facility. + +background_tint 0.0 + +#: How much to tint the background image by the background color. The +#: tint is applied only under the text area, not margin/borders. Makes +#: it easier to read the text. Tinting is done using the current +#: background color for each window. This setting applies only if +#: background_opacity is set and transparent windows are supported or +#: background_image is set. + +dim_opacity 0.75 + +#: How much to dim text that has the DIM/FAINT attribute set. One +#: means no dimming and zero means fully dimmed (i.e. invisible). + +selection_foreground #000000 + +#: The foreground for text selected with the mouse. A value of none +#: means to leave the color unchanged. + +selection_background #fffacd + +#: The background for text selected with the mouse. + + +#: The 256 terminal colors. There are 8 basic colors, each color has a +#: dull and bright version, for the first 16 colors. You can set the +#: remaining 240 colors as color16 to color255. + +#color0 #000000 +#color8 #767676 + +#: black + +#color1 #cc0403 +#color9 #f2201f + +#: red + +#color2 #19cb00 +#color10 #23fd00 + +#: green + +#color3 #cecb00 +#color11 #fffd00 + +#: yellow + +#color4 #0d73cc +#color12 #1a8fff + +#: blue + +#color5 #cb1ed1 +#color13 #fd28ff + +#: magenta + +#color6 #0dcdcd +color14 #14ffff + +#: cyan + +#color7 #dddddd +#color15 #ffffff + +color0 #282936 +color1 #3a3c4e +color2 #F7CA88 +color3 #626483 +color4 #62d6e8 +color5 #e9e9f4 +color6 #f1f2f8 +color7 #f7f7fb +color8 #ea51b2 +color9 #b45bcf +color10 #00f769 +color11 #ebff87 +color12 #a1efe4 +color13 #62d6e8 +color14 #b45bcf +color15 #00f769 + +#define FOREGROUND COLOR5 +#define BACKGROUND COLOR0 + +#: white + +mark1_foreground black + +#: Color for marks of type 1 + +mark1_background #98d3cb + +#: Color for marks of type 1 (light steel blue) + +mark2_foreground black + +#: Color for marks of type 2 + +mark2_background #f2dcd3 + +#: Color for marks of type 1 (beige) + +mark3_foreground black + +#: Color for marks of type 3 + +mark3_background #f274bc + +#: Color for marks of type 1 (violet) + +#: }}} + +#: Advanced {{{ + +shell . + +#: The shell program to execute. The default value of . means to use +#: whatever shell is set as the default shell for the current user. +#: Note that on macOS if you change this, you might need to add +#: --login to ensure that the shell starts in interactive mode and +#: reads its startup rc files. + +editor . + +#: The console editor to use when editing the kitty config file or +#: similar tasks. A value of . means to use the environment variables +#: VISUAL and EDITOR in that order. Note that this environment +#: variable has to be set not just in your shell startup scripts but +#: system-wide, otherwise kitty will not see it. + +close_on_child_death no + +#: Close the window when the child process (shell) exits. If no (the +#: default), the terminal will remain open when the child exits as +#: long as there are still processes outputting to the terminal (for +#: example disowned or backgrounded processes). If yes, the window +#: will close as soon as the child process exits. Note that setting it +#: to yes means that any background processes still using the terminal +#: can fail silently because their stdout/stderr/stdin no longer work. + +allow_remote_control no + +#: Allow other programs to control kitty. If you turn this on other +#: programs can control all aspects of kitty, including sending text +#: to kitty windows, opening new windows, closing windows, reading the +#: content of windows, etc. Note that this even works over ssh +#: connections. You can chose to either allow any program running +#: within kitty to control it, with yes or only programs that connect +#: to the socket specified with the kitty --listen-on command line +#: option, if you use the value socket-only. The latter is useful if +#: you want to prevent programs running on a remote computer over ssh +#: from controlling kitty. + +listen_on none + +#: Tell kitty to listen to the specified unix/tcp socket for remote +#: control connections. Note that this will apply to all kitty +#: instances. It can be overridden by the kitty --listen-on command +#: line flag. This option accepts only UNIX sockets, such as +#: unix:${TEMP}/mykitty or (on Linux) unix:@mykitty. Environment +#: variables are expanded. If {kitty_pid} is present then it is +#: replaced by the PID of the kitty process, otherwise the PID of the +#: kitty process is appended to the value, with a hyphen. This option +#: is ignored unless you also set allow_remote_control to enable +#: remote control. See the help for kitty --listen-on for more +#: details. + +# env + +#: Specify environment variables to set in all child processes. Note +#: that environment variables are expanded recursively, so if you +#: use:: + +#: env MYVAR1=a +#: env MYVAR2=${MYVAR1}/${HOME}/b + +#: The value of MYVAR2 will be a//b. + +update_check_interval 24 + +#: Periodically check if an update to kitty is available. If an update +#: is found a system notification is displayed informing you of the +#: available update. The default is to check every 24 hrs, set to zero +#: to disable. + +startup_session none + +#: Path to a session file to use for all kitty instances. Can be +#: overridden by using the kitty --session command line option for +#: individual instances. See +#: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty +#: documentation for details. Note that relative paths are interpreted +#: with respect to the kitty config directory. Environment variables +#: in the path are expanded. + +clipboard_control write-clipboard write-primary + +#: Allow programs running in kitty to read and write from the +#: clipboard. You can control exactly which actions are allowed. The +#: set of possible actions is: write-clipboard read-clipboard write- +#: primary read-primary. You can additionally specify no-append to +#: disable kitty's protocol extension for clipboard concatenation. The +#: default is to allow writing to the clipboard and primary selection +#: with concatenation enabled. Note that enabling the read +#: functionality is a security risk as it means that any program, even +#: one running on a remote server via SSH can read your clipboard. + +allow_hyperlinks yes + +#: Process hyperlink (OSC 8) escape sequences. If disabled OSC 8 +#: escape sequences are ignored. Otherwise they become clickable +#: links, that you can click by holding down ctrl+shift and clicking +#: with the mouse. The special value of ``ask`` means that kitty will +#: ask before opening the link. + +term xterm-kitty + +#: The value of the TERM environment variable to set. Changing this +#: can break many terminal programs, only change it if you know what +#: you are doing, not because you read some advice on Stack Overflow +#: to change it. The TERM variable is used by various programs to get +#: information about the capabilities and behavior of the terminal. If +#: you change it, depending on what programs you run, and how +#: different the terminal you are changing it to is, various things +#: from key-presses, to colors, to various advanced features may not +#: work. + +#: }}} + +#: OS specific tweaks {{{ + +macos_titlebar_color system + +#: Change the color of the kitty window's titlebar on macOS. A value +#: of system means to use the default system color, a value of +#: background means to use the background color of the currently +#: active window and finally you can use an arbitrary color, such as +#: #12af59 or red. WARNING: This option works by using a hack, as +#: there is no proper Cocoa API for it. It sets the background color +#: of the entire window and makes the titlebar transparent. As such it +#: is incompatible with background_opacity. If you want to use both, +#: you are probably better off just hiding the titlebar with +#: hide_window_decorations. + +macos_option_as_alt no + +#: Use the option key as an alt key. With this set to no, kitty will +#: use the macOS native Option+Key = unicode character behavior. This +#: will break any Alt+key keyboard shortcuts in your terminal +#: programs, but you can use the macOS unicode input technique. You +#: can use the values: left, right, or both to use only the left, +#: right or both Option keys as Alt, instead. + +macos_hide_from_tasks no + +#: Hide the kitty window from running tasks (Option+Tab) on macOS. + +macos_quit_when_last_window_closed no + +#: Have kitty quit when all the top-level windows are closed. By +#: default, kitty will stay running, even with no open windows, as is +#: the expected behavior on macOS. + +macos_window_resizable yes + +#: Disable this if you want kitty top-level (OS) windows to not be +#: resizable on macOS. + +macos_thicken_font 0 + +#: Draw an extra border around the font with the given width, to +#: increase legibility at small font sizes. For example, a value of +#: 0.75 will result in rendering that looks similar to sub-pixel +#: antialiasing at common font sizes. + +macos_traditional_fullscreen no + +#: Use the traditional full-screen transition, that is faster, but +#: less pretty. + +macos_show_window_title_in all + +#: Show or hide the window title in the macOS window or menu-bar. A +#: value of window will show the title of the currently active window +#: at the top of the macOS window. A value of menubar will show the +#: title of the currently active window in the macOS menu-bar, making +#: use of otherwise wasted space. all will show the title everywhere +#: and none hides the title in the window and the menu-bar. + +macos_custom_beam_cursor no + +#: Enable/disable custom mouse cursor for macOS that is easier to see +#: on both light and dark backgrounds. WARNING: this might make your +#: mouse cursor invisible on dual GPU machines. + +linux_display_server auto + +#: Choose between Wayland and X11 backends. By default, an appropriate +#: backend based on the system state is chosen automatically. Set it +#: to x11 or wayland to force the choice. + +#: }}} + +#: Keyboard shortcuts {{{ + +#: Keys are identified simply by their lowercase unicode characters. +#: For example: ``a`` for the A key, ``[`` for the left square bracket +#: key, etc. For functional keys, such as ``Enter or Escape`` the +#: names are present at https://sw.kovidgoyal.net/kitty/keyboard- +#: protocol.html#functional-key-definitions. For a list of modifier +#: names, see: GLFW mods +#: + +#: On Linux you can also use XKB key names to bind keys that are not +#: supported by GLFW. See XKB keys +#: for a list of key names. The name to use is the part +#: after the XKB_KEY_ prefix. Note that you can only use an XKB key +#: name for keys that are not known as GLFW keys. + +#: Finally, you can use raw system key codes to map keys, again only +#: for keys that are not known as GLFW keys. To see the system key +#: code for a key, start kitty with the kitty --debug-keyboard option. +#: Then kitty will output some debug text for every key event. In that +#: text look for ``native_code`` the value of that becomes the key +#: name in the shortcut. For example: + +#: .. code-block:: none + +#: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' + +#: Here, the key name for the A key is 0x61 and you can use it with:: + +#: map ctrl+0x61 something + +#: to map ctrl+a to something. + +#: You can use the special action no_op to unmap a keyboard shortcut +#: that is assigned in the default configuration:: + +#: map kitty_mod+space no_op + +#: You can combine multiple actions to be triggered by a single +#: shortcut, using the syntax below:: + +#: map key combine action1 action2 action3 ... + +#: For example:: + +#: map kitty_mod+e combine : new_window : next_layout + +#: this will create a new window and switch to the next available +#: layout + +#: You can use multi-key shortcuts using the syntax shown below:: + +#: map key1>key2>key3 action + +#: For example:: + +#: map ctrl+f>2 set_font_size 20 + +kitty_mod ctrl+shift + +#: The value of kitty_mod is used as the modifier for all default +#: shortcuts, you can change it in your kitty.conf to change the +#: modifiers for all the default shortcuts. + +clear_all_shortcuts no + +#: You can have kitty remove all shortcut definition seen up to this +#: point. Useful, for instance, to remove the default shortcuts. + +# kitten_alias hints hints --hints-offset=0 + +#: You can create aliases for kitten names, this allows overriding the +#: defaults for kitten options and can also be used to shorten +#: repeated mappings of the same kitten with a specific group of +#: options. For example, the above alias changes the default value of +#: kitty +kitten hints --hints-offset to zero for all mappings, +#: including the builtin ones. + +#: Clipboard {{{ + +map kitty_mod+c copy_to_clipboard + +#: There is also a copy_or_interrupt action that can be optionally +#: mapped to Ctrl+c. It will copy only if there is a selection and +#: send an interrupt otherwise. Similarly, copy_and_clear_or_interrupt +#: will copy and clear the selection or send an interrupt if there is +#: no selection. + +map kitty_mod+v paste_from_clipboard +map kitty_mod+s paste_from_selection +map shift+insert paste_from_selection +map kitty_mod+o pass_selection_to_program + +#: You can also pass the contents of the current selection to any +#: program using pass_selection_to_program. By default, the system's +#: open program is used, but you can specify your own, the selection +#: will be passed as a command line argument to the program, for +#: example:: + +#: map kitty_mod+o pass_selection_to_program firefox + +#: You can pass the current selection to a terminal program running in +#: a new kitty window, by using the @selection placeholder:: + +#: map kitty_mod+y new_window less @selection + +#: }}} + +#: Scrolling {{{ + +map kitty_mod+up scroll_line_up +map kitty_mod+k scroll_line_up +map kitty_mod+down scroll_line_down +map kitty_mod+j scroll_line_down +map kitty_mod+page_up scroll_page_up +map kitty_mod+page_down scroll_page_down +map kitty_mod+home scroll_home +map kitty_mod+end scroll_end +map kitty_mod+h show_scrollback + +#: You can pipe the contents of the current screen + history buffer as +#: STDIN to an arbitrary program using the ``launch`` function. For +#: example, the following opens the scrollback buffer in less in an +#: overlay window:: + +#: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R + +#: For more details on piping screen and buffer contents to external +#: programs, see launch. + +#: }}} + +#: Window management {{{ + +map kitty_mod+enter new_window + +#: You can open a new window running an arbitrary program, for +#: example:: + +#: map kitty_mod+y launch mutt + +#: You can open a new window with the current working directory set to +#: the working directory of the current window using:: + +#: map ctrl+alt+enter launch --cwd=current + +#: You can open a new window that is allowed to control kitty via the +#: kitty remote control facility by prefixing the command line with @. +#: Any programs running in that window will be allowed to control +#: kitty. For example:: + +#: map ctrl+enter launch --allow-remote-control some_program + +#: You can open a new window next to the currently active window or as +#: the first window, with:: + +#: map ctrl+n launch --location=neighbor some_program +#: map ctrl+f launch --location=first some_program + +#: For more details, see launch. + +map kitty_mod+n new_os_window + +#: Works like new_window above, except that it opens a top level OS +#: kitty window. In particular you can use new_os_window_with_cwd to +#: open a window with the current working directory. + +map kitty_mod+w close_window +map kitty_mod+] next_window +map kitty_mod+[ previous_window +map kitty_mod+f move_window_forward +map kitty_mod+b move_window_backward +map kitty_mod+` move_window_to_top +map kitty_mod+r start_resizing_window +map kitty_mod+1 first_window +map kitty_mod+2 second_window +map kitty_mod+3 third_window +map kitty_mod+4 fourth_window +map kitty_mod+5 fifth_window +map kitty_mod+6 sixth_window +map kitty_mod+7 seventh_window +map kitty_mod+8 eighth_window +map kitty_mod+9 ninth_window +map kitty_mod+0 tenth_window +#: }}} + +#: Tab management {{{ + +map kitty_mod+right next_tab +map kitty_mod+left previous_tab +map kitty_mod+t new_tab +map kitty_mod+q close_tab +map kitty_mod+. move_tab_forward +map kitty_mod+, move_tab_backward +map kitty_mod+alt+t set_tab_title + +#: You can also create shortcuts to go to specific tabs, with 1 being +#: the first tab, 2 the second tab and -1 being the previously active +#: tab, and any number larger than the last tab being the last tab:: + +#: map ctrl+alt+1 goto_tab 1 +#: map ctrl+alt+2 goto_tab 2 + +#: Just as with new_window above, you can also pass the name of +#: arbitrary commands to run when using new_tab and use +#: new_tab_with_cwd. Finally, if you want the new tab to open next to +#: the current tab rather than at the end of the tabs list, use:: + +#: map ctrl+t new_tab !neighbor [optional cmd to run] +#: }}} + +#: Layout management {{{ + +map kitty_mod+l next_layout + +#: You can also create shortcuts to switch to specific layouts:: + +#: map ctrl+alt+t goto_layout tall +#: map ctrl+alt+s goto_layout stack + +#: Similarly, to switch back to the previous layout:: + +#: map ctrl+alt+p last_used_layout +#: }}} + +#: Font sizes {{{ + +#: You can change the font size for all top-level kitty OS windows at +#: a time or only the current one. + +map kitty_mod+equal change_font_size all +2.0 +map kitty_mod+plus change_font_size all +2.0 +map kitty_mod+kp_add change_font_size all +2.0 +map kitty_mod+minus change_font_size all -2.0 +map kitty_mod+kp_subtract change_font_size all -2.0 +map kitty_mod+backspace change_font_size all 0 + +#: To setup shortcuts for specific font sizes:: + +#: map kitty_mod+f6 change_font_size all 10.0 + +#: To setup shortcuts to change only the current OS window's font +#: size:: + +#: map kitty_mod+f6 change_font_size current 10.0 +#: }}} + +#: Select and act on visible text {{{ + +#: Use the hints kitten to select text and either pass it to an +#: external program or insert it into the terminal or copy it to the +#: clipboard. + +map kitty_mod+e kitten hints + +#: Open a currently visible URL using the keyboard. The program used +#: to open the URL is specified in open_url_with. + +map kitty_mod+p>f kitten hints --type path --program - + +#: Select a path/filename and insert it into the terminal. Useful, for +#: instance to run git commands on a filename output from a previous +#: git command. + +map kitty_mod+p>shift+f kitten hints --type path + +#: Select a path/filename and open it with the default open program. + +map kitty_mod+p>l kitten hints --type line --program - + +#: Select a line of text and insert it into the terminal. Use for the +#: output of things like: ls -1 + +map kitty_mod+p>w kitten hints --type word --program - + +#: Select words and insert into terminal. + +map kitty_mod+p>h kitten hints --type hash --program - + +#: Select something that looks like a hash and insert it into the +#: terminal. Useful with git, which uses sha1 hashes to identify +#: commits + +map kitty_mod+p>n kitten hints --type linenum + +#: Select something that looks like filename:linenum and open it in +#: vim at the specified line number. + +map kitty_mod+p>y kitten hints --type hyperlink + +#: Select a hyperlink (i.e. a URL that has been marked as such by the +#: terminal program, for example, by ls --hyperlink=auto). + + +#: The hints kitten has many more modes of operation that you can map +#: to different shortcuts. For a full description see kittens/hints. +#: }}} + +#: Miscellaneous {{{ + +map kitty_mod+f11 toggle_fullscreen +map kitty_mod+f10 toggle_maximized +map kitty_mod+u kitten unicode_input +map kitty_mod+f2 edit_config_file +map kitty_mod+escape kitty_shell window + +#: Open the kitty shell in a new window/tab/overlay/os_window to +#: control kitty using commands. + +map kitty_mod+a>m set_background_opacity +0.1 +map kitty_mod+a>l set_background_opacity -0.1 +map kitty_mod+a>1 set_background_opacity 1 +map kitty_mod+a>d set_background_opacity default +map kitty_mod+delete clear_terminal reset active + +#: You can create shortcuts to clear/reset the terminal. For example:: + +#: # Reset the terminal +#: map kitty_mod+f9 clear_terminal reset active +#: # Clear the terminal screen by erasing all contents +#: map kitty_mod+f10 clear_terminal clear active +#: # Clear the terminal scrollback by erasing it +#: map kitty_mod+f11 clear_terminal scrollback active +#: # Scroll the contents of the screen into the scrollback +#: map kitty_mod+f12 clear_terminal scroll active + +#: If you want to operate on all windows instead of just the current +#: one, use all instead of active. + +#: It is also possible to remap Ctrl+L to both scroll the current +#: screen contents into the scrollback buffer and clear the screen, +#: instead of just clearing the screen:: + +#: map ctrl+l combine : clear_terminal scroll active : send_text normal,application \x0c + + +#: You can tell kitty to send arbitrary (UTF-8) encoded text to the +#: client program when pressing specified shortcut keys. For example:: + +#: map ctrl+alt+a send_text all Special text + +#: This will send "Special text" when you press the ctrl+alt+a key +#: combination. The text to be sent is a python string literal so you +#: can use escapes like \x1b to send control codes or \u21fb to send +#: unicode characters (or you can just input the unicode characters +#: directly as UTF-8 text). The first argument to send_text is the +#: keyboard modes in which to activate the shortcut. The possible +#: values are normal or application or kitty or a comma separated +#: combination of them. The special keyword all means all modes. The +#: modes normal and application refer to the DECCKM cursor key mode +#: for terminals, and kitty refers to the special kitty extended +#: keyboard protocol. + +#: Another example, that outputs a word and then moves the cursor to +#: the start of the line (same as pressing the Home key):: + +#: map ctrl+alt+a send_text normal Word\x1b[H +#: map ctrl+alt+a send_text application Word\x1bOH + +#: }}} + +# }}} diff --git a/.config/lf/lf-icons.sh b/.config/lf/lf-icons.sh new file mode 100644 index 0000000..791383a --- /dev/null +++ b/.config/lf/lf-icons.sh @@ -0,0 +1,163 @@ +#!/bin/sh + +export LF_ICONS="\ +di=:\ +fi=:\ +ln=:\ +or=:\ +ex=:\ +*.c=:\ +*.cc=:\ +*.clj=:\ +*.coffee=:\ +*.cpp=:\ +*.css=:\ +*.d=:\ +*.dart=:\ +*.erl=:\ +*.exs=:\ +*.fs=:\ +*.go=:\ +*.gitignore=:\ +*.h=:\ +*.hh=:\ +*.hpp=:\ +*.hs=:\ +*.html=:\ +*.java=:\ +*.jl=:\ +*.js=:\ +*.json=:\ +*.lua=:\ +*.md=:\ +*.php=:\ +*.pl=:\ +*.pro=:\ +*.py=:\ +*.rb=:\ +*.rs=:\ +*.scala=:\ +*.ts=:\ +*.vim=:\ +*.cmd=:\ +*.ps1=:\ +*.sh=:\ +*.bash=:\ +*.zsh=:\ +*.fish=:\ +*.tar=:\ +*.tgz=:\ +*.arc=:\ +*.arj=:\ +*.taz=:\ +*.lha=:\ +*.lz4=:\ +*.lzh=:\ +*.lzma=:\ +*.tlz=:\ +*.txz=:\ +*.tzo=:\ +*.t7z=:\ +*.zip=:\ +*.z=:\ +*.dz=:\ +*.gz=:\ +*.lrz=:\ +*.lz=:\ +*.lzo=:\ +*.xz=:\ +*.zst=:\ +*.tzst=:\ +*.bz2=:\ +*.bz=:\ +*.tbz=:\ +*.tbz2=:\ +*.tz=:\ +*.deb=:\ +*.rpm=:\ +*.jar=:\ +*.war=:\ +*.ear=:\ +*.sar=:\ +*.rar=:\ +*.alz=:\ +*.ace=:\ +*.zoo=:\ +*.cpio=:\ +*.7z=:\ +*.rz=:\ +*.cab=:\ +*.wim=:\ +*.swm=:\ +*.dwm=:\ +*.esd=:\ +*.exe=🍷:\ +*.jpg=:\ +*.jpeg=:\ +*.mjpg=:\ +*.mjpeg=:\ +*.gif=:\ +*.bmp=:\ +*.pbm=:\ +*.pgm=:\ +*.ppm=:\ +*.tga=:\ +*.xbm=:\ +*.xpm=:\ +*.tif=:\ +*.tiff=:\ +*.png=:\ +*.svg=:\ +*.svgz=:\ +*.mng=:\ +*.pcx=:\ +*.mov=:\ +*.mpg=:\ +*.mpeg=:\ +*.m2v=:\ +*.mkv=:\ +*.webm=:\ +*.ogm=:\ +*.mp4=:\ +*.m4v=:\ +*.mp4v=:\ +*.vob=:\ +*.qt=:\ +*.nuv=:\ +*.wmv=:\ +*.asf=:\ +*.rm=:\ +*.rmvb=:\ +*.flc=:\ +*.avi=:\ +*.fli=:\ +*.flv=:\ +*.gl=:\ +*.dl=:\ +*.xcf=:\ +*.xwd=:\ +*.yuv=:\ +*.cgm=:\ +*.emf=:\ +*.ogv=:\ +*.ogx=:\ +*.aac=:\ +*.au=:\ +*.flac=:\ +*.m4a=:\ +*.mid=:\ +*.midi=:\ +*.mka=:\ +*.mp3=:\ +*.mpc=:\ +*.ogg=:\ +*.ra=:\ +*.wav=:\ +*.oga=:\ +*.opus=:\ +*.spx=:\ +*.xspf=:\ +*.pdf=:\ +*.nix=:\ + " + diff --git a/.config/lf/lfrc b/.config/lf/lfrc new file mode 100644 index 0000000..64d95ff --- /dev/null +++ b/.config/lf/lfrc @@ -0,0 +1,128 @@ +# interpreter for shell commands (needs to be POSIX compatible) +set shell sh + +set color256 true +set icons true +set ignorecase true +#set drawbox true + + +set previewer ~/.config/lf/pv.sh +map i $~/.config/lf/pv.sh $f | less -R + +# set '-eu' options for shell commands +# These options are used to have safer shell commands. Option '-e' is used to +# exit on error and option '-u' is used to give error for unset variables. +# Option '-f' disables pathname expansion which can be useful when $f, $fs, and +# $fx variables contain names with '*' or '?' characters. However, this option +# is used selectively within individual commands as it can be limiting at +# times. +set shellopts '-eu' + +# set internal field separator (IFS) to "\n" for shell commands +# This is useful to automatically split file names in $fs and $fx properly +# since default file separator used in these variables (i.e. 'filesep' option) +# is newline. You need to consider the values of these options and create your +# commands accordingly. +set ifs "\n" + +# leave some space at the top and the bottom of the screen +set scrolloff 10 + +# use enter for shell commands +map shell + +# execute current file (must be executable) +map x $$f +map X !$f + +# dedicated keys for file opener actions +map o &mimeo $f +map O $mimeopen --ask $f + +# define a custom 'open' command +# This command is called when current file is not a directory. You may want to +# use either file extensions and/or mime types here. Below uses an editor for +# text files and a file opener for the rest. +cmd open ${{ + case $(file --mime-type $f -b) in + text/*) $EDITOR $fx;; + audio/*) mpv --input-ipc-server=/tmp/mpvsoc$(date +%%s) $f ;; + application/pdf) setsid zathura $fx >/dev/null 2>&1 & ;; + application/zip) setsid unzip -l $f | less;; + application/rar) setsid unrar l $f | less;; + image/gif) setsid mpv $f --loop=inf ;; + image/jpeg) setsid imv $f ;; + image/png) setsid imv $f ;; + image/*) setsid imv $f ;; + video/*) setsid mpv $f ;; + application/json) $EDITOR $f;; + *) for f in $fx; do setsid $OPENER $f > /dev/null 2> /dev/null & done;; + esac +}} + +# define a custom 'rename' command without prompt for overwrite +# cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1 +# map r push :rename + +# make sure trash folder exists +%mkdir -p ~/.trash + +# move current file or selected files to trash folder +# (also see 'man mv' for backup/overwrite options) +cmd trash %set -f; mv $fx ~/.trash/ + +# define a custom 'delete' command +cmd delete ${{ + set -f + printf "$fx\n" + printf "delete?[y/n]" + read ans + [ $ans = "y" ] && rm -rf $fx +}} + +# use '' key for either 'trash' or 'delete' command + map trash +# map delete + +# extract the current file with the right command +# (xkcd link: https://xkcd.com/1168/) +cmd extract ${{ + set -f + DIR="$(basename "$f" | cut -f 1 -d '.')" + mkdir "$DIR" + case $f in + *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf "$f" --directory="$DIR";; + *.tar.gz|*.tgz) tar xzvf "$f" --directory="$DIR";; + *.tar.xz|*.txz) tar xJvf "$f" --directory="$DIR";; + *.zip) unzip "$f" -d "$DIR";; + *.rar) unrar x "$f" "$DIR";; + *.7z | *.crx) 7z x "$f" -o"$DIR";; + esac +}} + +cmd compress ${{ + set -f + NAME="$(basename "$fx")" + + if ! [ -d "$NAME" ]; then + NAME="$(basename "$PWD")" + mkdir "$NAME" + cp -r $fx "$NAME" + fi + + echo "enter compression type [tar.gz, zip, 7z(default)]: " + read TYPE + + case "$TYPE" in + tar.gz) tar czf "$NAME".tar.gz "$NAME";; + zip) zip -r "$NAME".zip "$NAME";; + *) 7z a "$NAME".7z "$NAME";; + esac + + ! [ -d "$fx" ] && rm -rf "$NAME" + +}} + +map c compress $fx +map C extract $f diff --git a/.config/lf/pv.sh b/.config/lf/pv.sh new file mode 100755 index 0000000..5f89860 --- /dev/null +++ b/.config/lf/pv.sh @@ -0,0 +1,37 @@ +#!/bin/sh +#if [ "$(echo "$TERM" | grep "kitty" )" ]; then +# IMG_CMD="kitty +kitten icat" +#IMG_CMD="jp2a" +# case "$1" in +# *.tar*) tar tf "$1";; +# *.zip) unzip -l "$1";; +# *.rar) unrar l "$1";; +# *.7z) 7z l "$1";; +# *.jpg | *.JPG | *.jpeg) $IMG_CMD "$1";; +# *.png | *.svg | *.gif) $IMG_CMD "$1";; +# *.mp4 | *.mkv | *.webm | *.avi | *.mpg | *.mpeg | *.ogv | *.flv | *.wmv | *.WMV) ffmpegthumbnailer -i "$1" -c jpeg -o - | $IMG_CMD -;; +# #*.jpg | *.JPG | *.jpeg) jp2a "$1" -b --width=$(($(tput cols)/2 - 10));; +# #*.png | *.svg | *.gif) convert "$1" jpg:- | jp2a - -b --width=$(($(tput cols)/2 - 10));; +# #*.mp4 | *.mkv | *.webm | *.avi | *.mpg | *.mpeg | *.ogv | *.flv | *.wmv | *.WMV) ffmpegthumbnailer -i "$1" -c jpeg -o - | jp2a - -b --width=$(($(tput cols)/2 - 10));; +# *.pdf) pdftotext "$1" -;; +# *) highlight -O ansi "$1" || cat "$1";; +# esac + +#else + case "$1" in + *.tar*) tar tf "$1";; + *.zip) unzip -l "$1";; + *.rar) unrar l "$1";; + *.7z) 7z l "$1";; + *.jpg | *.JPG | *.jpeg) viu -t "$1" -w $(($(tput cols)/2 - 10));; + *.png | *.svg | *.gif) viu -t "$1" -w $(($(tput cols)/2 - 10)) ;; + *.mp4 | *.mkv | *.webm | *.avi | *.mpg | *.mpeg | *.ogv | *.flv | *.wmv | *.WMV) ffmpegthumbnailer -i "$1" -c jpeg -o - | viu -t -;; + #*.jpg | *.JPG | *.jpeg) jp2a "$1" -b --width=$(($(tput cols)/2 - 10));; + #*.png | *.svg | *.gif) convert "$1" jpg:- | jp2a - -b --width=$(($(tput cols)/2 - 10));; + #*.mp4 | *.mkv | *.webm | *.avi | *.mpg | *.mpeg | *.ogv | *.flv | *.wmv | *.WMV) ffmpegthumbnailer -i "$1" -c jpeg -o - | jp2a - -b --width=$(($(tput cols)/2 - 10));; + *.pdf) pdftotext "$1" -;; + *) highlight -O ansi "$1" || cat "$1";; + esac + +#fi + diff --git a/.config/luakit/userconf.lua b/.config/luakit/userconf.lua new file mode 100644 index 0000000..f020228 --- /dev/null +++ b/.config/luakit/userconf.lua @@ -0,0 +1,56 @@ +local modes = require("modes") +local settings = require("settings") +local downloads = require("downloads") +local webview = require("webview") + +---set download dir, and stop prompt for download +downloads.default_dir = os.getenv("HOME") .. "/dl" +downloads.add_signal("download-location", function (uri, file) + luakit.spawn(string.format("notify-send 'Luakit' 'file downloaded to ~/dl/'")) + if not file or file == "" then + file = (string.match(uri, "/([^/]+)$") + or string.match(uri, "^%w+://(.+)") + or string.gsub(uri, "/", "_") + or "untitled") + end + return downloads.default_dir .. "/" .. file +end) + +---set how to handle various schemes (from luakit FAQ) +webview.add_signal("init", function (view) + view:add_signal("navigation-request", function (v, uri) +---open magnet links with transadd + if string.match(string.lower(uri), "^magnet:") then + luakit.spawn(string.format("%s %q", "transadd", uri)) + return false + end + --- Check URI and open program here + end) +end) + + +---set home page +settings.window.home_page = os.getenv("HOME") .. "/.config/startpage/index.html" + + +---open webpage in mpv with: ; + shift + m +local video_cmd_fmt = "mpv '%s' --loop" +modes.add_binds("ex-follow", { + { "m", "Hint all links and open the video behind that link externally with MPV.", + function (w) + w:set_mode("follow", { + prompt = "open with MPV", selector = "uri", evaluator = "uri", + func = function (uri) + assert(type(uri) == "string") + luakit.spawn(string.format(video_cmd_fmt, uri)) + w:notify("Launched MPV") + end + }) + end }, + { "M", "Open the video on the current page externally with MPV.", + function (w) + local uri = string.gsub(w.view.uri or "", " ", "%%20") + luakit.spawn(string.format(video_cmd_fmt, uri)) + w:notify("Launched MPV") + end }, +}) diff --git a/.config/mimeapps.list b/.config/mimeapps.list new file mode 100644 index 0000000..f4a1d2f --- /dev/null +++ b/.config/mimeapps.list @@ -0,0 +1,282 @@ +[Default Applications] +application/pdf=pdf.desktop; +image/gif=img.desktop; +image/jpeg=img.desktop; +image/png=img.desktop; +video/*=video.desktop; +text/plain=text.desktop; +text/x-shellscript=text.desktop; +x-scheme-handler/magnet=torrent.desktop; +application/x-bittorrent=torrent.desktop; +text/html=web.desktop +text/uri-list=web.desktop +text/x-uri=web.desktop +x-scheme-handler/about=web.desktop +x-scheme-handler/unknown=web.desktop +x-scheme-handler/tg=userapp-Telegram Desktop-QXV020.desktop +application/msword=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop +application/rtf=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop +application/vnd.ms-works=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop +application/vnd.oasis.opendocument.text=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop +application/vnd.oasis.opendocument.text-template=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop +application/vnd.openxmlformats-officedocument.wordprocessingml.document=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop +application/vnd.stardivision.writer=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop +application/vnd.wordperfect=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop +application/x-abiword=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop +audio/3gpp=deadbeef.desktop +audio/3gpp2=io.github.celluloid_player.Celluloid.desktop +audio/aac=deadbeef.desktop +audio/ac3=deadbeef.desktop +audio/amr=io.github.celluloid_player.Celluloid.desktop +audio/amr-wb=io.github.celluloid_player.Celluloid.desktop +audio/basic=io.github.celluloid_player.Celluloid.desktop +audio/dv=io.github.celluloid_player.Celluloid.desktop +audio/eac3=io.github.celluloid_player.Celluloid.desktop +audio/flac=deadbeef.desktop +audio/m4a=deadbeef.desktop +audio/midi=deadbeef.desktop +audio/mp1=io.github.celluloid_player.Celluloid.desktop +audio/mp2=io.github.celluloid_player.Celluloid.desktop +audio/mp3=deadbeef.desktop +audio/mp4=deadbeef.desktop +audio/mpeg=deadbeef.desktop +audio/mpegurl=io.github.celluloid_player.Celluloid.desktop +audio/mpg=deadbeef.desktop +audio/ogg=deadbeef.desktop +audio/opus=io.github.celluloid_player.Celluloid.desktop +audio/scpls=io.github.celluloid_player.Celluloid.desktop +audio/vnd.dolby.heaac.1=io.github.celluloid_player.Celluloid.desktop +audio/vnd.dolby.heaac.2=io.github.celluloid_player.Celluloid.desktop +audio/vnd.dolby.mlp=io.github.celluloid_player.Celluloid.desktop +audio/vnd.dts=io.github.celluloid_player.Celluloid.desktop +audio/vnd.dts.hd=io.github.celluloid_player.Celluloid.desktop +audio/vnd.rn-realaudio=io.github.celluloid_player.Celluloid.desktop +audio/wav=deadbeef.desktop +audio/webm=deadbeef.desktop +audio/x-aac=deadbeef.desktop +audio/x-aiff=deadbeef.desktop +audio/x-ape=io.github.celluloid_player.Celluloid.desktop +audio/x-flac=deadbeef.desktop +audio/x-gsm=io.github.celluloid_player.Celluloid.desktop +audio/x-it=deadbeef.desktop +audio/x-m4a=io.github.celluloid_player.Celluloid.desktop +audio/x-matroska=io.github.celluloid_player.Celluloid.desktop +audio/x-mod=deadbeef.desktop +audio/x-mp1=io.github.celluloid_player.Celluloid.desktop +audio/x-mp2=io.github.celluloid_player.Celluloid.desktop +audio/x-mp3=deadbeef.desktop +audio/x-mpeg=deadbeef.desktop +audio/x-mpegurl=deadbeef.desktop +audio/x-mpg=deadbeef.desktop +audio/x-ms-asf=deadbeef.desktop +audio/x-ms-wma=deadbeef.desktop +audio/x-musepack=io.github.celluloid_player.Celluloid.desktop +audio/x-pn-aiff=io.github.celluloid_player.Celluloid.desktop +audio/x-pn-au=io.github.celluloid_player.Celluloid.desktop +audio/x-pn-realaudio=io.github.celluloid_player.Celluloid.desktop +audio/x-pn-wav=io.github.celluloid_player.Celluloid.desktop +audio/x-real-audio=io.github.celluloid_player.Celluloid.desktop +audio/x-realaudio=io.github.celluloid_player.Celluloid.desktop +audio/x-s3m=deadbeef.desktop +audio/x-scpls=deadbeef.desktop +audio/x-shorten=io.github.celluloid_player.Celluloid.desktop +audio/x-speex=io.github.celluloid_player.Celluloid.desktop +audio/x-tta=io.github.celluloid_player.Celluloid.desktop +audio/x-vorbis=deadbeef.desktop +audio/x-vorbis+ogg=deadbeef.desktop +audio/x-wav=deadbeef.desktop +audio/x-wavpack=deadbeef.desktop +audio/x-xm=deadbeef.desktop +audio/mp4a-latm=deadbeef.desktop +audio/mpeg3=deadbeef.desktop +audio/vorbis=deadbeef.desktop +audio/wave=deadbeef.desktop +audio/x-mpeg-3=deadbeef.desktop +audio/x-ogg=deadbeef.desktop +audio/x-oggflac=deadbeef.desktop +audio/prs.sid=deadbeef.desktop +video/3gp=mpv.desktop +video/3gpp=mpv.desktop +video/3gpp2=mpv.desktop +video/avi=mpv.desktop +video/divx=mpv.desktop +video/dv=mpv.desktop +video/fli=mpv.desktop +video/flv=mpv.desktop +video/mkv=mpv.desktop +video/mp2t=mpv.desktop +video/mp4=mpv.desktop +video/mp4v-es=mpv.desktop +video/mpeg=mpv.desktop +video/msvideo=mpv.desktop +video/ogg=mpv.desktop +video/quicktime=mpv.desktop +video/vnd.divx=mpv.desktop +video/vnd.mpegurl=mpv.desktop +video/vnd.rn-realvideo=mpv.desktop +video/webm=mpv.desktop +video/x-avi=mpv.desktop +video/x-flc=mpv.desktop +video/x-flic=mpv.desktop +video/x-flv=mpv.desktop +video/x-m4v=mpv.desktop +video/x-matroska=mpv.desktop +video/x-mpeg2=mpv.desktop +video/x-mpeg3=mpv.desktop +video/x-ms-afs=mpv.desktop +video/x-ms-asf=mpv.desktop +video/x-ms-wmv=mpv.desktop +video/x-ms-wmx=mpv.desktop +video/x-ms-wvxvideo=mpv.desktop +video/x-msvideo=mpv.desktop +video/x-ogm=mpv.desktop +video/x-ogm+ogg=mpv.desktop +video/x-theora=mpv.desktop +video/x-theora+ogg=mpv.desktop +video/vivo=mpv.desktop +video/x-anim=mpv.desktop +video/x-fli=mpv.desktop +video/x-mng=mpv.desktop +video/x-mpeg=mpv.desktop +video/x-ms-asx=mpv.desktop +video/x-ms-wm=mpv.desktop +video/x-ms-wvx=mpv.desktop +video/x-nsv=mpv.desktop +text/x-arduino=arduino-arduinoide.desktop +x-scheme-handler/angr=angr.desktop + +[Added Associations] +image/jpeg=img.desktop; +image/png=img.desktop; +text/html=web.desktop; +inode/directory=lf.desktop +application/rss+xml=web.desktop; +x-scheme-handler/tg=userapp-Telegram Desktop-9CKHY0.desktop;userapp-Telegram Desktop-COMF30.desktop;userapp-Telegram Desktop-QXV020.desktop; +application/msword=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop; +application/rtf=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop; +application/vnd.ms-works=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop; +application/vnd.oasis.opendocument.text=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop; +application/vnd.oasis.opendocument.text-template=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop; +application/vnd.openxmlformats-officedocument.wordprocessingml.document=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop; +application/vnd.stardivision.writer=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop; +application/vnd.wordperfect=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop; +application/x-abiword=appimagekit_370d60f0f93e3e9486777fd6dfdb9d86-LibreOffice.desktop; +audio/x-vorbis+ogg=deadbeef.desktop;io.github.celluloid_player.Celluloid.desktop; +audio/3gpp=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/3gpp2=io.github.celluloid_player.Celluloid.desktop; +audio/aac=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/ac3=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/amr=io.github.celluloid_player.Celluloid.desktop; +audio/amr-wb=io.github.celluloid_player.Celluloid.desktop; +audio/basic=io.github.celluloid_player.Celluloid.desktop; +audio/dv=io.github.celluloid_player.Celluloid.desktop; +audio/eac3=io.github.celluloid_player.Celluloid.desktop; +audio/flac=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/m4a=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/midi=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/mp1=io.github.celluloid_player.Celluloid.desktop; +audio/mp2=io.github.celluloid_player.Celluloid.desktop; +audio/mp3=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/mp4=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/mpeg=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/mpegurl=io.github.celluloid_player.Celluloid.desktop; +audio/mpg=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/ogg=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/opus=io.github.celluloid_player.Celluloid.desktop; +audio/scpls=io.github.celluloid_player.Celluloid.desktop; +audio/vnd.dolby.heaac.1=io.github.celluloid_player.Celluloid.desktop; +audio/vnd.dolby.heaac.2=io.github.celluloid_player.Celluloid.desktop; +audio/vnd.dolby.mlp=io.github.celluloid_player.Celluloid.desktop; +audio/vnd.dts=io.github.celluloid_player.Celluloid.desktop; +audio/vnd.dts.hd=io.github.celluloid_player.Celluloid.desktop; +audio/vnd.rn-realaudio=io.github.celluloid_player.Celluloid.desktop; +audio/wav=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/webm=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-aac=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-aiff=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-ape=io.github.celluloid_player.Celluloid.desktop; +audio/x-flac=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-gsm=io.github.celluloid_player.Celluloid.desktop; +audio/x-it=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-m4a=io.github.celluloid_player.Celluloid.desktop; +audio/x-matroska=io.github.celluloid_player.Celluloid.desktop; +audio/x-mod=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-mp1=io.github.celluloid_player.Celluloid.desktop; +audio/x-mp2=io.github.celluloid_player.Celluloid.desktop; +audio/x-mp3=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-mpeg=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-mpegurl=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-mpg=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-ms-asf=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-ms-wma=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-musepack=io.github.celluloid_player.Celluloid.desktop; +audio/x-pn-aiff=io.github.celluloid_player.Celluloid.desktop; +audio/x-pn-au=io.github.celluloid_player.Celluloid.desktop; +audio/x-pn-realaudio=io.github.celluloid_player.Celluloid.desktop; +audio/x-pn-wav=io.github.celluloid_player.Celluloid.desktop; +audio/x-real-audio=io.github.celluloid_player.Celluloid.desktop; +audio/x-realaudio=io.github.celluloid_player.Celluloid.desktop; +audio/x-s3m=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-scpls=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-shorten=io.github.celluloid_player.Celluloid.desktop; +audio/x-speex=io.github.celluloid_player.Celluloid.desktop; +audio/x-tta=io.github.celluloid_player.Celluloid.desktop; +audio/x-vorbis=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-wav=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-wavpack=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-xm=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/mp4a-latm=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/mpeg3=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/vorbis=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/wave=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-mpeg-3=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-ogg=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/x-oggflac=io.github.celluloid_player.Celluloid.desktop;deadbeef.desktop; +audio/prs.sid=deadbeef.desktop; +video/3gp=mpv.desktop; +video/3gpp=mpv.desktop; +video/3gpp2=mpv.desktop; +video/avi=mpv.desktop; +video/divx=mpv.desktop; +video/dv=mpv.desktop; +video/fli=mpv.desktop; +video/flv=mpv.desktop; +video/mkv=mpv.desktop; +video/mp2t=mpv.desktop; +video/mp4=mpv.desktop; +video/mp4v-es=mpv.desktop; +video/mpeg=mpv.desktop; +video/msvideo=mpv.desktop; +video/ogg=mpv.desktop; +video/quicktime=mpv.desktop; +video/vnd.divx=mpv.desktop; +video/vnd.mpegurl=mpv.desktop; +video/vnd.rn-realvideo=mpv.desktop; +video/webm=mpv.desktop; +video/x-avi=mpv.desktop; +video/x-flc=mpv.desktop; +video/x-flic=mpv.desktop; +video/x-flv=mpv.desktop; +video/x-m4v=mpv.desktop; +video/x-matroska=mpv.desktop; +video/x-mpeg2=mpv.desktop; +video/x-mpeg3=mpv.desktop; +video/x-ms-afs=mpv.desktop; +video/x-ms-asf=mpv.desktop; +video/x-ms-wmv=mpv.desktop; +video/x-ms-wmx=mpv.desktop; +video/x-ms-wvxvideo=mpv.desktop; +video/x-msvideo=mpv.desktop; +video/x-ogm=mpv.desktop; +video/x-ogm+ogg=mpv.desktop; +video/x-theora=mpv.desktop; +video/x-theora+ogg=mpv.desktop; +video/vivo=mpv.desktop; +video/x-anim=mpv.desktop; +video/x-fli=mpv.desktop; +video/x-mng=mpv.desktop; +video/x-mpeg=mpv.desktop; +video/x-ms-asx=mpv.desktop; +video/x-ms-wm=mpv.desktop; +video/x-ms-wvx=mpv.desktop; +video/x-nsv=mpv.desktop; diff --git a/.config/moc/cache/moc_version_tag b/.config/moc/cache/moc_version_tag new file mode 100644 index 0000000..84eff89 --- /dev/null +++ b/.config/moc/cache/moc_version_tag @@ -0,0 +1 @@ +1 5 3 r2930 \ No newline at end of file diff --git a/.config/moc/cache/tags.db b/.config/moc/cache/tags.db new file mode 100644 index 0000000000000000000000000000000000000000..cb282eb6c4d127e31036cf872ade1e0dd86edd96 GIT binary patch literal 8192 zcmeI%Jxjwt7zgktVnIdPE^ZDt>d;;lggDls_(H3o*hMVY08=C1zrzCKC)td+UV zxw)roKRccb_y2Jd>_7kl5P$##AOHafKmY;|fWY4fl*qa(ZyuTEmoGQRKfUBN9nbUW z6ERu59e9!pEqmOPt`b}%t_rx9M9Se#;GHQgViouiuZz$P6JM|bTa!`Dc28JY>vT2~ zFJcROq9y!BEeKuZG!9iq`7Ks8T^0)~>q%X0+2^Y@yV#XYkJ79&_t%4r`N#M5ySygr uocX0Lf0Ol~Ek8qU1iHhjG8URuRj' option, then you will need to add 'screen.' to this list. +# Note that this is only a partial test; the value of the WINDOW environment +# variable must also be a number (which screen(1) sets). +#ScreenTerms = screen:screen-w:vt100 + +# Values of the TERM environment variable which are deemed to be xterms. If +# you are using MOC within screen(1) under an xterm, then add screen(1)'s +# TERM setting here as well to cause MOC to update the xterm's title. +#XTerms = xterm +#XTerms += xterm-colour:xterm-color +#XTerms += xterm-256colour:xterm-256color +#XTerms += rxvt:rxvt-unicode +#XTerms += rxvt-unicode-256colour:rxvt-unicode-256color +#XTerms += eterm + +# Theme file to use. This can be absolute path or relative to +# /usr/share/moc/themes/ (depends on installation prefix) or +# ~/.moc/themes/ . +# +# Example: Theme = laras_theme +# +Theme = transparent-background + +# The theme used when running on an xterm. +# +# Example: XTermTheme = transparent-background +# +#XTermTheme = + +# Should MOC try to autoload the default lyrics file for an audio? (The +# default lyrics file is a text file with the same file name as the audio +# file name with any trailing "extension" removed.) +#AutoLoadLyrics = yes + +# MOC directory (where pid file, socket and state files are stored). +# You can use ~ at the beginning. +#MOCDir = ~/.moc + +# Use mmap() to read files. mmap() is much slower on NFS. +#UseMMap = no + +# Use MIME to identify audio files. This can make for slower loading +# of playlists but is more accurate than using "extensions". +#UseMimeMagic = no + +# Assume this encoding for ID3 version 1/1.1 tags (MP3 files). Unlike +# ID3v2, UTF-8 is not used here and MOC can't guess how tags are encoded. +# Another solution is using librcc (see the next option). This option is +# ignored if UseRCC is set to 'yes'. +#ID3v1TagsEncoding = WINDOWS-1250 + +# Use librcc to fix ID3 version 1/1.1 tags encoding. +#UseRCC = yes + +# Use librcc to filenames and directory names encoding. +#UseRCCForFilesystem = yes + +# When this option is set the player assumes that if the encoding of +# ID3v2 is set to ISO-8859-1 then the ID3v1TagsEncoding is actually +# that and applies appropriate conversion. +#EnforceTagsEncoding = no + +# Enable the conversion of filenames from the local encoding to UTF-8. +#FileNamesIconv = no + +# Enable the conversion of the xterm title from UTF-8 to the local encoding. +#NonUTFXterm = no + +# Should MOC precache files to assist gapless playback? +#Precache = yes + +# Remember the playlist after exit? +#SavePlaylist = yes + +# When using more than one client (interface) at a time, do they share +# the playlist? +#SyncPlaylist = yes + +# Choose a keymap file (relative to '~/.moc/' or using an absolute path). +# An annotated example keymap file is included ('keymap.example'). +# +# Example: Keymap = my_keymap +# +#Keymap = + +# Use ASCII rather than graphic characters for drawing lines. This +# helps on some terminals. +#ASCIILines = no + +# FastDirs, these allow you to jump directly to a directory, the key +# bindings are in the keymap file. +# +# Examples: Fastdir1 = /mp3/rock +# Fastdir2 = /mp3/electronic +# Fastdir3 = /mp3/rap +# Fastdir4 = /mp3/etc +# +#Fastdir1 = +#Fastdir2 = +#Fastdir3 = +#Fastdir4 = +#Fastdir5 = +#Fastdir6 = +#Fastdir7 = +#Fastdir8 = +#Fastdir9 = +#Fastdir10 = + +# How fast to seek (in number of seconds per keystroke). The first +# option is for normal seek and the second for silent seek. +#SeekTime = 1 +#SilentSeekTime = 5 + +# PreferredDecoders allows you to specify which decoder should be used +# for any given audio format. It is a colon-separated list in which +# each entry is of the general form 'code(decoders)', where 'code' +# identifies the audio format and 'decoders' is a comma-separated list +# of decoders in order of preference. +# +# The audio format identifier may be either a filename extension or a +# MIME media type. If the latter, the format is 'type/subtype' (e.g., +# 'audio/flac'). Because different systems may give different MIME +# media types, any 'x-' prefix of the subtype is ignored both here and +# in the actual file MIME type (so all combinations of 'audio/flac' and +# 'audio/x-flac' match each other). +# +# For Internet streams the matching is done on MIME media type and on +# actual content. For files the matches are made on MIME media type +# (if the 'UseMimeMagic' option is set) and on filename extension. The +# MIME media type of a file is not determined until the first entry for +# MIME is encountered in the list. +# +# The matching is done in the order of appearance in the list with any +# entries added from the command line being matched before those listed +# here. Therefore, if you place all filename extension entries before +# all MIME entries you will speed up MOC's processing of directories +# (which could be significant for remote file systems). +# +# The decoder list may be empty, in which case no decoders will be used +# for files (and files with that audio format ignored) while Internet +# streams will be assessed on the actual content. Any decoder position +# may contain an asterisk, in which case any decoder not otherwise listed +# which can handle the audio format will be used. It is not an error to +# list the same decoder twice, but neither does it make sense to do so. +# +# If you have a mix of audio and non-audio files in your directories, you +# may wish to include entries at top of the list which ignore non-audio +# files by extension. +# +# In summary, the PreferredDecoders option provides fine control over the +# type of matching which is performed (filename extension, MIME media +# type and streamed media content) and which decoder(s) (if any) are used +# based on the option's list entries and their ordering. +# +# Examples: aac(aac,ffmpeg) first try FAAD2 for AACs then FFmpeg +# mp3() ignore MP3 files +# wav(*,sndfile) use sndfile for WAV as a last resort +# ogg(vorbis,*):flac(flac,*) try Xiph decoders first +# ogg():audio/ogg() ignore OGG files, and +# force Internet selection by content +# gz():html() ignore some non-audio files +# +# Any unspecified audio formats default to trying all decoders. +# Any unknown (or misspelt) drivers are ignored. +# All names are case insensitive. +# The default setting reflects the historical situation modified by +# the experience of users. +# +#PreferredDecoders = aac(aac,ffmpeg):m4a(ffmpeg) +#PreferredDecoders += mpc(musepack,*,ffmpeg):mpc8(musepack,*,ffmpeg) +#PreferredDecoders += sid(sidplay2):mus(sidplay2) +#PreferredDecoders += wav(sndfile,*,ffmpeg) +#PreferredDecoders += wv(wavpack,*,ffmpeg) +#PreferredDecoders += audio/aac(aac):audio/aacp(aac):audio/m4a(ffmpeg) +#PreferredDecoders += audio/wav(sndfile,*) + +# The following PreferredDecoders attempt to handle the ambiguity surrounding +# container types such as OGG for files. The first two entries will force +# a local file to the correct decoder (assuming the .ogg file contains Vorbis +# audio), while the MIME media types will cause Internet audio streams to +# be assessed on content (which may be either Vorbis or Speex). +# +#PreferredDecoders += ogg(vorbis,ffmpeg):oga(vorbis,ffmpeg):ogv(ffmpeg) +#PreferredDecoders += opus(ffmpeg) +#PreferredDecoders += spx(speex) +#PreferredDecoders += application/ogg(vorbis):audio/ogg(vorbis) + +# Which resampling method to use. There are a few methods of resampling +# sound supported by libresamplerate. The default is 'Linear') which is +# also the fastest. A better description can be found at: +# +# http://www.mega-nerd.com/libsamplerate/api_misc.html#Converters +# +# but briefly, the following methods are based on bandlimited interpolation +# and are higher quality, but also slower: +# +# SincBestQuality - really slow (I know you probably have an xx GHz +# processor, but it's still not enough to not see +# this in the top output :) The worst case +# Signal-to-Noise Ratio is 97dB. +# SincMediumQuality - much faster. +# SincFastest - the fastest bandlimited interpolation. +# +# And these are lower quality, but much faster methods: +# +# ZeroOrderHold - really poor quality, but it's really fast. +# Linear - a bit better and a bit slower. +# +#ResampleMethod = Linear + +# Always use this sample rate (in Hz) when opening the audio device (and +# resample the sound if necessary). When set to 0 the device is opened +# with the file's rate. +#ForceSampleRate = 0 + +# By default, even if the sound card reports that it can output 24bit samples +# MOC converts 24bit PCM to 16bit. Setting this option to 'yes' allows MOC +# to use 24bit output. (The MP3 decoder, for example, uses this format.) +# This is disabled by default because there were reports that it prevents +# MP3 files from playing on some soundcards. +#Allow24bitOutput = no + +# Use realtime priority for output buffer thread. This will prevent gaps +# while playing even with heavy load. The user who runs MOC must have +# permissions to set such a priority. This could be dangerous, because it +# is possible that a bug in MOC will freeze your computer. +#UseRealtimePriority = no + +# The number of audio files for which MOC will cache tags. When this limit +# is reached, file tags are discarded on a least recently used basis (with +# one second resolution). You can disable the cache by giving it a size of +# zero. Note that if you decrease the cache size below the number of items +# currently in the cache, the number will not decrease immediately (if at +# all). +#TagsCacheSize = 256 + +# Number items in the playlist. +#PlaylistNumbering = yes + +# Main window layouts can be configured. You can change the position and +# size of the menus (directory and playlist). You have three layouts and +# can switch between then using the 'l' key (standard mapping). By default, +# only two layouts are configured. +# +# The format is as follows: +# +# - Each layout is described as a list of menu entries. +# - Each menu entry is of the form: +# +# menu(position_x, position_y, width, height) +# +# where 'menu' is either 'directory' or 'playlist'. +# - The parameters define position and size of the menu. They can +# be absolute numbers (like 10) or a percentage of the screen size +# (like 45%). +# - 'width' and 'height' can have also value of 'FILL' which means +# fill the screen from the menu's position to the border. +# - Menus may overlap. +# +# You must describe at least one menu (default is to fill the whole window). +# There must be at least one layout (Layout1) defined; others can be empty. +# +# Example: Layout1 = playlist(50%,50%,50%,50%) +# Layout2 = "" +# Layout3 = "" +# +# Just one layout, the directory will occupy the whole +# screen, the playlist will have 1/4 of the screen size +# and be positioned at lower right corner. (Note that +# because the playlist will be hidden by the directory +# you will have to use the TAB key to make the playlist +# visible.) +# +# Example: Layout1 = playlist(0,0,100%,10):directory(0,10,100%,FILL) +# +# The screen is split into two parts: playlist at the top +# and the directory menu at the bottom. Playlist will +# occupy 10 lines and the directory menu the rest. +# +#Layout1 = directory(0,0,50%,100%):playlist(50%,0,FILL,100%) +#Layout2 = directory(0,0,100%,100%):playlist(0,0,100%,100%) +#Layout3 = "" + +# When the song changes, should the menu be scrolled so that the currently +# played file is visible? +#FollowPlayedFile = yes + +# What to do if the interface was started and the server is already playing +# something from the playlist? If CanStartInPlaylist is set to 'yes', the +# interface will switch to the playlist. When set to 'no' it will start +# from the last directory. +#CanStartInPlaylist = yes + +# Executing external commands (1 - 10) invoked with key commands (F1 - F10 +# by default). +# +# Some arguments are substituted before executing: +# +# %f - file path +# %i - title made from tags +# %S - start block mark (in seconds) +# %E - end block mark (in seconds) +# +# Data from tags can also be substituted: +# +# %t - title +# %a - album +# %r - artist +# %n - track +# %m - time of the file (in seconds) +# +# The parameters above apply to the currently selected file. If you change +# them to capital letters, they are taken from the file currently playing. +# +# Programs are run using execv(), not a shell, so you can't do things like +# redirecting the output to a file. The command string is split using blank +# characters as separators; the first element is the command to be executed +# and the rest are its parameters, so if you use "echo Playing: %I" we run +# program 'echo' (from $PATH) with 2 parameters: the string 'Playing:' and +# the title of the file currently playing. Even if the title contains +# spaces, it's still one parameter and it's safe if it contains `rm -rf /`. +# +# Examples: ExecCommand1 = "cp %f /mnt/usb_drive" +# ExecCommand2 = "/home/joe/now_playing %I" +# +#ExecCommand1 = +#ExecCommand2 = +#ExecCommand3 = +#ExecCommand4 = +#ExecCommand5 = +#ExecCommand6 = +#ExecCommand7 = +#ExecCommand8 = +#ExecCommand9 = +#ExecCommand10 = + +# Display the cursor in the line with the selected file. Some braille +# readers (the Handy Tech modular series ZMU 737, for example) use the +# cursor to focus and can make use of it to present the file line even +# when other fields are changing. +#UseCursorSelection = no + +# Set the terminal title when running under xterm. +#SetXtermTitle = yes + +# Set the terminal title when running under screen(1). If MOC can detect +# that it is running under screen(1), then it will set an appropriate +# title (see description of ScreenTerms above). However, if multiple +# levels of screen management are involved, detection might fail and this +# could cause a screen upset. In that situation you can use this option +# to force screen titles off. +#SetScreenTitle = yes + +# Display full paths instead of just file names in the playlist. +#PlaylistFullPaths = yes + +# The following setting describes how block markers are displayed in +# the play time progress bar. Its value is a string of exactly three +# characters. The first character is displayed in a position which +# corresponds to the time marked as the start of a block and the last +# character to the time marked as the end of the block. The middle +# character is displayed instead if both the start and the end of the block +# would fall in the same position (within the resolution of the interface). +# You can turn off the displaying of these block marker positions by using +# three space characters. +#BlockDecorators = "`\"'" + +# How long (in seconds) to leave a message displayed on the screen. +# Setting this to a high value allows you to scroll through the messages +# using the 'hide_message' key. Setting it to zero means you'll have to +# be quick to see any message at all. Any new messages will be queued up +# and displayed after the current message's linger time expires. +#MessageLingerTime = 3 + +# Does MOC display a prefix on delayed messages indicating +# the number of queued messages still to be displayed? +#PrefixQueuedMessages = yes + +# String to append to the queued message count if any +# error messages are still waiting to be displayed. +#ErrorMessagesQueued = "!" + +# Self-describing ModPlug options (with 'yes' or 'no' values). +#ModPlug_Oversampling = yes +#ModPlug_NoiseReduction = yes +#ModPlug_Reverb = no +#ModPlug_MegaBass = no +#ModPlug_Surround = no + +# ModPlug resampling mode. +# Valid values are: +# +# FIR - 8 tap fir filter (extremely high quality) +# SPLINE - Cubic spline interpolation (high quality) +# LINEAR - Linear interpolation (fast, good quality) +# NEAREST - No interpolation (very fast, extremely bad sound quality) +# +#ModPlug_ResamplingMode = FIR + +# Other self-describing ModPlug audio characteristic options. +# (Note that the 32 bit sample size seems to be buggy.) +#ModPlug_Channels = 2 # 1 or 2 channels +#ModPlug_Bits = 16 # 8, 16 or 32 bits +#ModPlug_Frequency = 44100 # 11025, 22050, 44100 or 48000 Hz +#ModPlug_ReverbDepth = 0 # 0 (quiet) to 100 (loud) +#ModPlug_ReverbDelay = 0 # Delay in ms (usually 40-200ms) +#ModPlug_BassAmount = 0 # 0 (quiet) to 100 (loud). +#ModPlug_BassRange = 10 # Cutoff in Hz (10-100). +#ModPlug_SurroundDepth = 0 # Surround level 0(quiet)-100(heavy). +#ModPlug_SurroundDelay = 0 # Surround delay in ms, usually 5-40ms. +#ModPlug_LoopCount = 0 # 0 (never), n (times) or -1 (forever) + +# Self-describing TiMidity audio characteristic options. +#TiMidity_Rate = 44100 # Between 8000 and 48000 +#TiMidity_Bits = 16 # 8 or 16 +#TiMidity_Channels = 2 # 1 or 2 +#TiMidity_Volume = 100 # 0 to 800 + +# You can setup a TiMidity-Config-File here. +# Leave it unset to use library defaults (/etc/timidity.cfg mostly). +# Setting it to 'yes' also uses the library defaults. +# Set it to 'no' if you don't have any configuration file. +# Otherwise set it to the name of a specific file. +#TiMidity_Config = + +# Self-describing SidPlay2 audio characteristic options. +#SidPlay2_DefaultSongLength = 180 # If not in database (in seconds) +#SidPlay2_MinimumSongLength = 0 # Play at least n (in seconds) +#SidPlay2_Frequency = 44100 # 4000 to 48000 +#SidPlay2_Bits = 16 # 8 or 16 +#SidPlay2_Optimisation = 0 # 0 (worst quality) to 2 (best quality) + +# Set path to a HVSC-compatible database (if not set, database is disabled). +#SidPlay2_Database = + +# SidPlay2 playback Mode: +# +# "M": Mono (best for many SIDs) +# "S": Stereo +# "L"/"R": Left / Right +# +#SidPlay2_PlayMode = "M" + +# Use start-song information from SID ('yes') or start at first song +# ('no'). Songs before the start-song won't be played. (Note that this +# option previously took the values 1 and 0; these are now deprecated +# in favour of 'yes' and 'no'.) +#SidPlay2_StartAtStart = yes + +# Play sub-tunes. (Note that this option previously took the values 1 +# and 0; these are now deprecated in favour of 'yes' and 'no'.) +#SidPlay2_PlaySubTunes = yes + +# Run the OnSongChange command when a new song starts playing. +# Specify the full path (i.e. no leading '~') of an executable to run. +# Arguments will be passed, and you can use the following escapes: +# +# %a artist +# %r album +# %f filename +# %t title +# %n track +# %d file duration in XX:YY form +# %D file duration, number of seconds +# +# No pipes/redirects can be used directly, but writing a shell script +# can do the job. +# +# Example: OnSongChange = "/home/jack/.moc/myscript %a %r" +# +#OnSongChange = + +# If RepeatSongChange is 'yes' then MOC will execute the command every time +# a song starts playing regardless of whether or not it is just repeating. +# Otherwise the command will only be executed when a different song is +# started. +#RepeatSongChange = no + +# Run the OnStop command (full path, no arguments) when MOC changes state +# to stopped (i.e., when user stopped playing or changes a song). +#OnStop = "/home/jack/.moc/myscript_on_stop" + +# This option determines which song to play after finishing all the songs +# in the queue. Setting this to 'yes' causes MOC to play the song which +# follows the song being played before queue playing started. If set to +# 'no', MOC will play the song following the last song in the queue if it +# is in the playlist. The default is 'yes' because this is the way other +# players usually behave. (Note that this option previously took the +# values 1 and 0; these are now deprecated in favour of 'yes' and 'no'.) +#QueueNextSongReturn = yes diff --git a/.config/moc/equalizer b/.config/moc/equalizer new file mode 100644 index 0000000..7efeafd --- /dev/null +++ b/.config/moc/equalizer @@ -0,0 +1,2 @@ +Active: 1 +Mixin: 0.250000 diff --git a/.config/moc/keymap b/.config/moc/keymap new file mode 100644 index 0000000..4fe0ad1 --- /dev/null +++ b/.config/moc/keymap @@ -0,0 +1,188 @@ +# This is the example keymap file for MOC. You can define your own key +# bindings for MOC commands by creating your own keymap file and setting +# the 'Keymap' option in ~/.moc/config. +# +# The format of this file is: +# +# - Lines beginning with # are comments. +# - Blank lines are ignored. +# - Every other line is expected to be in one of the formats: +# +# COMMAND = [KEY ...] +# COMMAND += KEY ... +# +# The KEY can be: +# +# - Just a char, like i, L, ", * +# - CTRL-KEY sequence: ^k (CTRL-k), ^4 +# - ALT-KEY (meta) sequence: M-j (ALT-j), M-/ +# - Special keys: DOWN, UP +# LEFT, RIGHT +# HOME, END +# BACKSPACE +# INS, DEL +# ENTER +# PAGE_UP, PAGE_DOWN +# SPACE, TAB +# KEYPAD_CENTER +# ESCAPE +# F1 - F12 +# +# Note that the use of a digit as a KEY is deprecated. +# +# Maximum number of KEYs for one COMMAND is 5. +# +# Omitting the KEY for a COMMAND will unbind all its default keys. They +# will also be automatically unbound when you bind new KEYs to it. Individual +# default KEYs will be automatically unbound when they are explicitly bound +# to some other COMMAND. +# +# Using the '+=' form will cause the KEYs to be appended to any existing +# (default or explicit) bindings for the COMMAND. Appending an existing +# default binding for the same COMMAND will cause MOC to think of that KEY +# as then being explicitly bound. +# +# Only one binding for any given COMMAND can appear in the keymap file. One +# exception to this is that if the default keys for a COMMAND are explicitly +# unbound then a subsequent binding may appear for it. A second exception +# is that multiple appending bindings may appear. +# +# Meta-key detection is sensitive to the ESCDELAY environment variable (see +# the manpage for ncurses(3)). In its absence, MOC resets the default +# delay to 25ms. If you need to emulate meta-key sequences using the ESC +# key, then you may need to set the value of ESCDELAY back to its ncurses +# default of 1000ms (but doing so will make the response to the ESC key +# sluggish). +# +# If MOC's keypresses are being filtered through some other program (in a +# GUI environment, for example) which also does meta-key detection, then +# MOC is at the mercy of the timings with which that program presents them. +# +# Default key configuration for MOC (and a list of all available commands): + +# MOC control keys: +quit_client = q +quit = Q + +# Menu and interface control keys: +go = ENTER +menu_down = DOWN +menu_up = UP +menu_page_down = PAGE_DOWN +menu_page_up = PAGE_UP +menu_first_item = HOME +menu_last_item = END +search_menu = g / +toggle_read_tags = f +toggle_show_time = ^t +toggle_show_format = ^f +toggle_menu = TAB +toggle_layout = l +toggle_hidden_files = H +next_search = ^g ^n +show_lyrics = L +theme_menu = T +help = h ? +refresh = ^r +reload = r + +# Audio playing and positioning keys: +seek_forward = RIGHT +seek_backward = LEFT +seek_forward_fast = ] +seek_backward_fast = [ +pause = p SPACE +stop = s +next = n +previous = b +toggle_shuffle = S +toggle_repeat = R +toggle_auto_next = X +toggle_mixer = x +go_url = o + +# Volume control keys: +volume_down_1 = < +volume_up_1 = > +volume_down_5 = , +volume_up_5 = . +volume_10 = M-1 +volume_20 = M-2 +volume_30 = M-3 +volume_40 = M-4 +volume_50 = M-5 +volume_60 = M-6 +volume_70 = M-7 +volume_80 = M-8 +volume_90 = M-9 + +# Directory navigation keys: defaults are Shift-number +# (i.e., 'shift 1' -> '!' -> 'Fastdir1'). +go_to_a_directory = i +go_to_music_directory = m +go_to_fast_dir1 = ! +go_to_fast_dir2 = @ +go_to_fast_dir3 = # +go_to_fast_dir4 = $ +go_to_fast_dir5 = % +go_to_fast_dir6 = ^ +go_to_fast_dir7 = & +go_to_fast_dir8 = * +go_to_fast_dir9 = ( +go_to_fast_dir10 = ) +go_to_playing_file = G +go_up = U + +# Playlist specific keys: +add_file = a +add_directory = A +plist_add_stream = ^u +delete_from_playlist = d +playlist_full_paths = P +plist_move_up = u +plist_move_down = j +save_playlist = V +remove_dead_entries = Y +clear_playlist = C + +# Queue manipulation keys: +enqueue_file = z +clear_queue = Z + +# User interaction control: +history_up = UP +history_down = DOWN +delete_to_start = ^u +delete_to_end = ^k +cancel = ^x ESCAPE +hide_message = M + +# Softmixer specific keys: +toggle_softmixer = w +toggle_make_mono = J + +# Equalizer specific keys: +toggle_equalizer = E +equalizer_refresh = e +equalizer_prev = K +equalizer_next = k + +# External commands: +mark_start = ' +mark_end = " +exec_command1 = F1 +exec_command2 = F2 +exec_command3 = F3 +exec_command4 = F4 +exec_command5 = F5 +exec_command6 = F6 +exec_command7 = F7 +exec_command8 = F8 +exec_command9 = F9 +exec_command10 = F10 + +# The following commands are available but not assigned to any keys by +# default: +# +# toggle_percent Switch on/off play progress bar time percentage +# diff --git a/.config/moc/last_directory b/.config/moc/last_directory new file mode 100644 index 0000000..e197c2f --- /dev/null +++ b/.config/moc/last_directory @@ -0,0 +1 @@ +/home/alex/media/audio/music/compilations \ No newline at end of file diff --git a/.config/moc/playlist.m3u b/.config/moc/playlist.m3u new file mode 100644 index 0000000..7c67240 --- /dev/null +++ b/.config/moc/playlist.m3u @@ -0,0 +1,4 @@ +#EXTM3U +#MOCSERIAL: 768 +#EXTINF:18965,/home/alex/media/audio/music/compilations/The Best Of Folk Metal Mix. Compilation 2.-wClxK8r_Sj0.webm +/home/alex/media/audio/music/compilations/The Best Of Folk Metal Mix. Compilation 2.-wClxK8r_Sj0.webm diff --git a/.config/moc/softmixer b/.config/moc/softmixer new file mode 100644 index 0000000..ae858e1 --- /dev/null +++ b/.config/moc/softmixer @@ -0,0 +1,4 @@ +Active: 0 +Amplification: 100 +Value: 100 +Mono: 0 diff --git a/.config/moc/themes/transparent-background b/.config/moc/themes/transparent-background new file mode 100644 index 0000000..a73ffa5 --- /dev/null +++ b/.config/moc/themes/transparent-background @@ -0,0 +1,34 @@ +# Transparent background theme by Marcin Michałowski + +background = default default +frame = white default +window_title = white default +directory = white default bold +selected_directory = white blue bold +playlist = white default bold +selected_playlist = white blue bold +file = white default +selected_file = white blue +marked_file = green default bold +marked_selected_file = green blue bold +info = blue default bold +status = white default +title = white default bold +state = white default bold +current_time = white default bold +time_left = white default bold +total_time = white default bold +time_total_frames = white default +sound_parameters = white default bold +legend = white default +disabled = blue default bold +enabled = white default bold +empty_mixer_bar = white default +filled_mixer_bar = black cyan +empty_time_bar = white default +filled_time_bar = black cyan +entry = white default +entry_title = black cyan +error = red default bold +message = green default bold +plist_time = white default bold diff --git a/.config/mpd/mpd.conf b/.config/mpd/mpd.conf new file mode 100644 index 0000000..efc11ff --- /dev/null +++ b/.config/mpd/mpd.conf @@ -0,0 +1,22 @@ +music_directory "~/media/audio" +playlist_directory "~/.config/mpd/playlists/" + +auto_update "yes" +bind_to_address "127.0.0.1" +restore_paused "yes" +max_output_buffer_size "16384" + +audio_output { + type "pulse" + name "pulse audio" + #device "pulse" + #mixer_type "hardware" +} + + +audio_output { + type "fifo" + name "Visualizer feed" + path "/tmp/mpd.fifo" + format "44100:16:2" +} diff --git a/.config/mpv/mpv.conf b/.config/mpv/mpv.conf new file mode 100755 index 0000000..4252327 --- /dev/null +++ b/.config/mpv/mpv.conf @@ -0,0 +1,9 @@ +hwdec=vaapi +alang=jpn +slang=eng + +[extension.gif] +loop-file=inf + +[extension.webm] +loop-file=inf diff --git a/.config/ncmpcpp/bindings b/.config/ncmpcpp/bindings new file mode 100644 index 0000000..d2cf224 --- /dev/null +++ b/.config/ncmpcpp/bindings @@ -0,0 +1,479 @@ +############################################################## +## This is the example bindings file. Copy it to ## +## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ## +## and set up your preferences ## +############################################################## +# +#def_key "mouse" +# mouse_event +# +#def_key "up" +# scroll_up +# +#def_key "shift-up" +# select_item +# scroll_up +# +#def_key "down" +# scroll_down +# +#def_key "shift-down" +# select_item +# scroll_down +# +#def_key "[" +# scroll_up_album +# +#def_key "]" +# scroll_down_album +# +#def_key "{" +# scroll_up_artist +# +#def_key "}" +# scroll_down_artist +# +#def_key "page_up" +# page_up +# +#def_key "page_down" +# page_down +# +#def_key "home" +# move_home +# +#def_key "end" +# move_end +# +#def_key "insert" +# select_item +# +#def_key "enter" +# enter_directory +# +#def_key "enter" +# toggle_output +# +#def_key "enter" +# run_action +# +#def_key "enter" +# play_item +# +#def_key "space" +# add_item_to_playlist +# +#def_key "space" +# toggle_lyrics_update_on_song_change +# +#def_key "space" +# toggle_visualization_type +# +#def_key "delete" +# delete_playlist_items +# +#def_key "delete" +# delete_browser_items +# +#def_key "delete" +# delete_stored_playlist +# +#def_key "right" +# next_column +# +#def_key "right" +# slave_screen +# +#def_key "right" +# volume_up +# +#def_key "+" +# volume_up +# +#def_key "left" +# previous_column +# +#def_key "left" +# master_screen +# +#def_key "left" +# volume_down +# +#def_key "-" +# volume_down +# +#def_key ":" +# execute_command +# +#def_key "tab" +# next_screen +# +#def_key "shift-tab" +# previous_screen +# +#def_key "f1" +# show_help +# +#def_key "1" +# show_playlist +# +#def_key "2" +# show_browser +# +#def_key "2" +# change_browse_mode +# +#def_key "3" +# show_search_engine +# +#def_key "3" +# reset_search_engine +# +#def_key "4" +# show_media_library +# +#def_key "4" +# toggle_media_library_columns_mode +# +#def_key "5" +# show_playlist_editor +# +#def_key "6" +# show_tag_editor +# +#def_key "7" +# show_outputs +# +#def_key "8" +# show_visualizer +# +#def_key "=" +# show_clock +# +#def_key "@" +# show_server_info +# +#def_key "s" +# stop +# +#def_key "p" +# pause +# +#def_key ">" +# next +# +#def_key "<" +# previous +# +#def_key "ctrl-h" +# jump_to_parent_directory +# +#def_key "ctrl-h" +# replay_song +# +#def_key "backspace" +# jump_to_parent_directory +# +#def_key "backspace" +# replay_song +# +def_key "f" + seek_forward +# +def_key "b" + seek_backward +# +#def_key "r" +# toggle_repeat +# +#def_key "z" +# toggle_random +# +#def_key "y" +# save_tag_changes +# +#def_key "y" +# start_searching +# +#def_key "y" +# toggle_single +# +#def_key "R" +# toggle_consume +# +#def_key "Y" +# toggle_replay_gain_mode +# +#def_key "T" +# toggle_add_mode +# +#def_key "|" +# toggle_mouse +# +#def_key "#" +# toggle_bitrate_visibility +# +#def_key "Z" +# shuffle +# +#def_key "x" +# toggle_crossfade +# +#def_key "X" +# set_crossfade +# +#def_key "u" +# update_database +# +#def_key "ctrl-s" +# sort_playlist +# +#def_key "ctrl-s" +# toggle_browser_sort_mode +# +#def_key "ctrl-s" +# toggle_media_library_sort_mode +# +#def_key "ctrl-r" +# reverse_playlist +# +#def_key "ctrl-f" +# apply_filter +# +#def_key "ctrl-_" +# select_found_items +# +#def_key "/" +# find +# +#def_key "/" +# find_item_forward +# +#def_key "?" +# find +# +#def_key "?" +# find_item_backward +# +#def_key "." +# next_found_item +# +#def_key "," +# previous_found_item +# +#def_key "w" +# toggle_find_mode +# +#def_key "e" +# edit_song +# +#def_key "e" +# edit_library_tag +# +#def_key "e" +# edit_library_album +# +#def_key "e" +# edit_directory_name +# +#def_key "e" +# edit_playlist_name +# +#def_key "e" +# edit_lyrics +# +#def_key "i" +# show_song_info +# +#def_key "I" +# show_artist_info +# +#def_key "g" +# jump_to_position_in_song +# +#def_key "l" +# show_lyrics +# +#def_key "ctrl-v" +# select_range +# +#def_key "v" +# reverse_selection +# +#def_key "V" +# remove_selection +# +#def_key "B" +# select_album +# +#def_key "a" +# add_selected_items +# +#def_key "c" +# clear_playlist +# +#def_key "c" +# clear_main_playlist +# +#def_key "C" +# crop_playlist +# +#def_key "C" +# crop_main_playlist +# +#def_key "m" +# move_sort_order_up +# +#def_key "m" +# move_selected_items_up +# +#def_key "n" +# move_sort_order_down +# +#def_key "n" +# move_selected_items_down +# +#def_key "M" +# move_selected_items_to +# +#def_key "A" +# add +# +#def_key "S" +# save_playlist +# +#def_key "o" +# jump_to_playing_song +# +#def_key "G" +# jump_to_browser +# +#def_key "G" +# jump_to_playlist_editor +# +#def_key "~" +# jump_to_media_library +# +#def_key "E" +# jump_to_tag_editor +# +#def_key "U" +# toggle_playing_song_centering +# +#def_key "P" +# toggle_display_mode +# +#def_key "\\" +# toggle_interface +# +#def_key "!" +# toggle_separators_between_albums +# +#def_key "L" +# toggle_lyrics_fetcher +# +#def_key "F" +# fetch_lyrics_in_background +# +#def_key "alt-l" +# toggle_fetching_lyrics_in_background +# +#def_key "ctrl-l" +# toggle_screen_lock +# +#def_key "`" +# toggle_library_tag_type +# +#def_key "`" +# refetch_lyrics +# +#def_key "`" +# add_random_items +# +#def_key "ctrl-p" +# set_selected_items_priority +# +#def_key "q" +# quit +# +# +#def_key "f" +# find +#def_key "f" +# find_item_forward + +def_key "+" + show_clock +def_key "=" + volume_up + +def_key "j" + scroll_down +def_key "k" + scroll_up + +def_key "ctrl-u" + page_up +#push_characters "kkkkkkkkkkkkkkk" +def_key "ctrl-d" + page_down +#push_characters "jjjjjjjjjjjjjjj" +def_key "u" + page_up +#push_characters "kkkkkkkkkkkkkkk" +def_key "d" + page_down +#push_characters "jjjjjjjjjjjjjjj" +def_key "h" + previous_column +def_key "l" + next_column + +def_key "." + show_lyrics + +def_key "n" + next_found_item +def_key "N" + previous_found_item + +# not used but bound +def_key "J" + move_sort_order_down +def_key "K" + move_sort_order_up +def_key "h" + jump_to_parent_directory +def_key "l" + enter_directory +def_key "l" + run_action +def_key "l" + play_item +def_key "m" + show_media_library +def_key "m" + toggle_media_library_columns_mode +def_key "t" + show_tag_editor +def_key "v" + show_visualizer +def_key "G" + move_end +def_key "g" + move_home +#jump_to_position_in_song +def_key "U" + update_database +def_key "s" + reset_search_engine +def_key "s" + show_search_engine +#def_key "f" +# show_browser +#def_key "f" +# change_browse_mode +def_key "x" + delete_playlist_items +def_key "P" + show_playlist diff --git a/.config/ncmpcpp/config b/.config/ncmpcpp/config new file mode 100644 index 0000000..f78ad71 --- /dev/null +++ b/.config/ncmpcpp/config @@ -0,0 +1,32 @@ +# vim: filetype=conf + +ncmpcpp_directory = "~/.config/ncmpcpp/" +lyrics_directory = "~/.local/share/lyrics/" +mpd_music_dir = "~/media/audio/" +message_delay_time = "1" +visualizer_type = "wave" +song_list_format = {$4%a - }{%t}|{$8%f$9}$R{$3(%l)$9} +song_status_format = $b{{$8"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$8%f} +song_library_format = {%n - }{%t}|{%f} +alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b +alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D} +current_item_prefix = $(cyan)$r$b +current_item_suffix = $/r$(end)$/b +current_item_inactive_column_prefix = $(magenta)$r +current_item_inactive_column_suffix = $/r$(end) +playlist_display_mode = columns +browser_display_mode = columns +progressbar_look = -> +media_library_primary_tag = album_artist +media_library_albums_split_by_date = no +startup_screen = "browser" +display_volume_level = no +ignore_leading_the = yes +external_editor = nvim +use_console_editor = yes +empty_tag_color = magenta +main_window_color = white +progressbar_color = black:b +progressbar_elapsed_color = blue:b +statusbar_color = red +statusbar_time_color = cyan:b diff --git a/.config/ncmpcpp/error.log b/.config/ncmpcpp/error.log new file mode 100644 index 0000000..e69de29 diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim new file mode 100644 index 0000000..3b89c7b --- /dev/null +++ b/.config/nvim/init.vim @@ -0,0 +1,59 @@ +if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) + silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs + \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + autocmd VimEnter * PlugInstall --sync | source $MYVIMRC +endif + + +call plug#begin('~/.local/share/nvim/plugged') + Plug 'vim-airline/vim-airline' + Plug 'vim-airline/vim-airline-themes' + + Plug 'tpope/vim-fugitive' + Plug 'dense-analysis/ale' + Plug 'chriskempson/base16-vim' +call plug#end() + +"enable ale completion +let g:ale_completion_enabled = 1 + +"airline setup + "let g:airline_extensions = [] + let g:airline#extensions#tabline#enabled = 1 + let g:airline#extensions#ale#enabled = 1 + let g:airline_powerline_fonts = 1 + let g:airline_theme='base16_atlas' + +"syntax numbers, wildmode + syntax on + set ruler + set number "relativenumber + set wildmode=longest,list,full + +"Tab Config + set expandtab "converts tabs to spaces + set shiftwidth=4 + set tabstop=4 + +"split navigation + nnoremap :if &modifiable && !&readonly && &modified :write :endif:bnext + nnoremap :if &modifiable && !&readonly && &modified :write :endif:bprevious + +"make vim use system clipboard by default. ONLY FOR NEOVIM + set clipboard+=unnamedplus + + let vim_markdown_preview_browser='librewolf' + let vim_markdown_preview_use_xdg_open=1 + +"enable unicode support if possible +if has("multi_byte") + if &termencoding == "" + let &termencoding = &encoding + endif + set encoding=utf-8 + setglobal fileencoding=utf-8 + " Uncomment to have 'bomb' on by default for new files. + " Note, this will not apply to the first, empty buffer created at Vim startup. + "setglobal bomb + set fileencodings=ucs-bom,utf-8,latin1 +endif diff --git a/.config/picom/grayscale.glsl b/.config/picom/grayscale.glsl new file mode 100644 index 0000000..2e69632 --- /dev/null +++ b/.config/picom/grayscale.glsl @@ -0,0 +1,10 @@ +uniform float opacity; +uniform bool invert_color; +uniform sampler2D tex; + +void main() { +vec4 c = texture2D(tex, gl_TexCoord[0].xy); +float y = dot(c.rgb, vec3(0.299, 0.587, 0.114)); +// y = 1.0 -y; +gl_FragColor = vec4(y, y, y, 1.0); +} diff --git a/.config/picom/picom.conf b/.config/picom/picom.conf new file mode 100644 index 0000000..7c82e60 --- /dev/null +++ b/.config/picom/picom.conf @@ -0,0 +1,419 @@ +################################# +# Shadows # +################################# + + +# Enabled client-side shadows on windows. Note desktop windows +# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, +# unless explicitly requested using the wintypes option. +# +# shadow = false +shadow = true; + +# The blur radius for shadows, in pixels. (defaults to 12) +# shadow-radius = 12 +shadow-radius = 7; + +# The opacity of shadows. (0.0 - 1.0, defaults to 0.75) +# shadow-opacity = .75 + +# The left offset for shadows, in pixels. (defaults to -15) +# shadow-offset-x = -15 +shadow-offset-x = -7; + +# The top offset for shadows, in pixels. (defaults to -15) +# shadow-offset-y = -15 +shadow-offset-y = -7; + +# Red color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-red = 0 + +# Green color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-green = 0 + +# Blue color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-blue = 0 + +# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue) +# shadow-color = "#000000" + +# Specify a list of conditions of windows that should have no shadow. +# +# examples: +# shadow-exclude = "n:e:Notification"; +# +# shadow-exclude = [] +shadow-exclude = [ + "name = 'Notification'", + "class_g = 'Conky'", + "class_g ?= 'Notify-osd'", + "class_g = 'Cairo-clock'", + "_GTK_FRAME_EXTENTS@:c" +]; + +# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window. +# clip-shadow-above = [] + +# Specify a X geometry that describes the region in which shadow should not +# be painted in, such as a dock window region. Use +# shadow-exclude-reg = "x10+0+0" +# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on. +# +# shadow-exclude-reg = "" + +# Crop shadow of a window fully on a particular Xinerama screen to the screen. +# xinerama-shadow-crop = false + + +################################# +# Fading # +################################# + + +# Fade windows in/out when opening/closing and when opacity changes, +# unless no-fading-openclose is used. +# fading = false +fading = true; + +# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028) +# fade-in-step = 0.028 +fade-in-step = 0.03; + +# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03) +# fade-out-step = 0.03 +fade-out-step = 0.03; + +# The time between steps in fade step, in milliseconds. (> 0, defaults to 10) +# fade-delta = 10 + +# Specify a list of conditions of windows that should not be faded. +# fade-exclude = [] + +# Do not fade on window open/close. +# no-fading-openclose = false + +# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc. +# no-fading-destroyed-argb = false + + +################################# +# Transparency / Opacity # +################################# + + +# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) +# inactive-opacity = 1 +inactive-opacity = 0.8; + +# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default) +# frame-opacity = 1.0 +frame-opacity = 0.7; + +# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows. +# inactive-opacity-override = true +inactive-opacity-override = false; + +# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0) +# active-opacity = 1.0 + +# Dim inactive windows. (0.0 - 1.0, defaults to 0.0) +# inactive-dim = 0.0 + +# Specify a list of conditions of windows that should never be considered focused. +# focus-exclude = [] +focus-exclude = [ "class_g = 'Cairo-clock'" ]; + +# Use fixed inactive dim value, instead of adjusting according to window opacity. +# inactive-dim-fixed = 1.0 + +# Specify a list of opacity rules, in the format `PERCENT:PATTERN`, +# like `50:name *= "Firefox"`. picom-trans is recommended over this. +# Note we don't make any guarantee about possible conflicts with other +# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows. +# example: +# opacity-rule = [ "80:class_g = 'URxvt'" ]; +# +# opacity-rule = [] + + +################################# +# Corners # +################################# + +# Sets the radius of rounded window corners. When > 0, the compositor will +# round the corners of windows. Does not interact well with +# `transparent-clipping`. +corner-radius = 0 + +# Exclude conditions for rounded corners. +rounded-corners-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'" +]; + + +################################# +# Background-Blurring # +################################# + + +# Parameters for background blurring, see the *BLUR* section for more information. +# blur-method = +# blur-size = 12 +# +# blur-deviation = false +# +# blur-strength = 5 + +# Blur background of semi-transparent / ARGB windows. +# Bad in performance, with driver-dependent behavior. +# The name of the switch may change without prior notifications. +# +# blur-background = false + +# Blur background of windows when the window frame is not opaque. +# Implies: +# blur-background +# Bad in performance, with driver-dependent behavior. The name may change. +# +# blur-background-frame = false + + +# Use fixed blur strength rather than adjusting according to window opacity. +# blur-background-fixed = false + + +# Specify the blur convolution kernel, with the following format: +# example: +# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; +# +# blur-kern = "" +blur-kern = "3x3box"; + + +# Exclude conditions for background blur. +# blur-background-exclude = [] +blur-background-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'", + "_GTK_FRAME_EXTENTS@:c" +]; + +################################# +# General Settings # +################################# + +# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. +# daemon = false + +# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`. +# `xrender` is the default one. +# + backend = "glx"; +#backend = "xrender"; + +# Enable/disable VSync. +# vsync = false +vsync = true; + +# Enable remote control via D-Bus. See the *D-BUS API* section below for more details. +# dbus = false + +# Try to detect WM windows (a non-override-redirect window with no +# child that has 'WM_STATE') and mark them as active. +# +# mark-wmwin-focused = false +mark-wmwin-focused = true; + +# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused. +# mark-ovredir-focused = false +mark-ovredir-focused = true; + +# Try to detect windows with rounded corners and don't consider them +# shaped windows. The accuracy is not very high, unfortunately. +# +# detect-rounded-corners = false +detect-rounded-corners = true; + +# Detect '_NET_WM_OPACITY' on client windows, useful for window managers +# not passing '_NET_WM_OPACITY' of client windows to frame windows. +# +# detect-client-opacity = false +detect-client-opacity = true; + +# Specify refresh rate of the screen. If not specified or 0, picom will +# try detecting this with X RandR extension. +# +# refresh-rate = 60 +refresh-rate = 0; + +# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, +# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, +# provided that the WM supports it. +# +# use-ewmh-active-win = false + +# Unredirect all windows if a full-screen opaque window is detected, +# to maximize performance for full-screen windows. Known to cause flickering +# when redirecting/unredirecting windows. +# +# unredir-if-possible = false + +# Delay before unredirecting the window, in milliseconds. Defaults to 0. +# unredir-if-possible-delay = 0 + +# Conditions of windows that shouldn't be considered full-screen for unredirecting screen. +# unredir-if-possible-exclude = [] + +# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows +# in the same group focused at the same time. +# +# detect-transient = false +detect-transient = true; + +# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same +# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if +# detect-transient is enabled, too. +# +# detect-client-leader = false +detect-client-leader = true; + +# Resize damaged region by a specific number of pixels. +# A positive value enlarges it while a negative one shrinks it. +# If the value is positive, those additional pixels will not be actually painted +# to screen, only used in blur calculation, and such. (Due to technical limitations, +# with use-damage, those pixels will still be incorrectly painted to screen.) +# Primarily used to fix the line corruption issues of blur, +# in which case you should use the blur radius value here +# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, +# with a 5x5 one you use `--resize-damage 2`, and so on). +# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. +# +# resize-damage = 1 + +# Specify a list of conditions of windows that should be painted with inverted color. +# Resource-hogging, and is not well tested. +# +# invert-color-include = [] + +# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. +# Might cause incorrect opacity when rendering transparent content (but never +# practically happened) and may not work with blur-background. +# My tests show a 15% performance boost. Recommended. +# +glx-no-stencil = true + +# GLX backend: Avoid rebinding pixmap on window damage. +# Probably could improve performance on rapid window content changes, +# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.). +# Recommended if it works. +# +#glx-no-rebind-pixmap = true + +# Disable the use of damage information. +# This cause the whole screen to be redrawn everytime, instead of the part of the screen +# has actually changed. Potentially degrades the performance, but might fix some artifacts. +# The opposing option is use-damage +# +# no-use-damage = false +use-damage = true; + +# Use X Sync fence to sync clients' draw calls, to make sure all draw +# calls are finished before picom starts drawing. Needed on nvidia-drivers +# with GLX backend for some users. +# +xrender-sync-fence = true + +# GLX backend: Use specified GLSL fragment shader for rendering window contents. +# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` +# in the source tree for examples. +# +# glx-fshader-win = "" + +# Force all windows to be painted with blending. Useful if you +# have a glx-fshader-win that could turn opaque pixels transparent. +# +# force-win-blend = false + +# Do not use EWMH to detect fullscreen windows. +# Reverts to checking if a window is fullscreen based only on its size and coordinates. +# +# no-ewmh-fullscreen = false + +# Dimming bright windows so their brightness doesn't exceed this set value. +# Brightness of a window is estimated by averaging all pixels in the window, +# so this could comes with a performance hit. +# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) +# +# max-brightness = 1.0 + +# Make transparent windows clip other windows like non-transparent windows do, +# instead of blending on top of them. +# +# transparent-clipping = false + +# Set the log level. Possible values are: +# "trace", "debug", "info", "warn", "error" +# in increasing level of importance. Case doesn't matter. +# If using the "TRACE" log level, it's better to log into a file +# using *--log-file*, since it can generate a huge stream of logs. +# +# log-level = "debug" +log-level = "warn"; + +# Set the log file. +# If *--log-file* is never specified, logs will be written to stderr. +# Otherwise, logs will to written to the given file, though some of the early +# logs might still be written to the stderr. +# When setting this option from the config file, it is recommended to use an absolute path. +# +# log-file = "/path/to/your/log/file" + +# Show all X errors (for debugging) +# show-all-xerrors = false + +# Write process ID to a file. +# write-pid-path = "/path/to/your/log/file" + +# Window type settings +# +# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: +# "unknown", "desktop", "dock", "toolbar", "menu", "utility", +# "splash", "dialog", "normal", "dropdown_menu", "popup_menu", +# "tooltip", "notification", "combo", and "dnd". +# +# Following per window-type options are available: :: +# +# fade, shadow::: +# Controls window-type-specific shadow and fade settings. +# +# opacity::: +# Controls default opacity of the window type. +# +# focus::: +# Controls whether the window of this type is to be always considered focused. +# (By default, all window types except "normal" and "dialog" has this on.) +# +# full-shadow::: +# Controls whether shadow is drawn under the parts of the window that you +# normally won't be able to see. Useful when the window has parts of it +# transparent, and you want shadows in those areas. +# +# clip-shadow-above::: +# Controls wether shadows that would have been drawn above the window should +# be clipped. Useful for dock windows that should have no shadow painted on top. +# +# redir-ignore::: +# Controls whether this type of windows should cause screen to become +# redirected again after been unredirected. If you have unredir-if-possible +# set, and doesn't want certain window to cause unnecessary screen redirection, +# you can set this to `true`. +# +wintypes: +{ + tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; }; + dock = { shadow = false; clip-shadow-above = true; } + dnd = { shadow = false; } + popup_menu = { opacity = 0.8; } + dropdown_menu = { opacity = 0.8; } +}; diff --git a/.config/picom/picom.conf.old b/.config/picom/picom.conf.old new file mode 100644 index 0000000..83ab6bb --- /dev/null +++ b/.config/picom/picom.conf.old @@ -0,0 +1,90 @@ +# Shadow +shadow = true; +shadow-radius = 7; +shadow-offset-x = -7; +shadow-offset-y = -7; +log-level = "warn"; +# log-file = "/path/to/your/log/file"; +# shadow-opacity = 0.7; +# shadow-red = 0.0; +# shadow-green = 0.0; +# shadow-blue = 0.0; +shadow-exclude = [ + "name = 'Notification'", + "class_g = 'Conky'", + "class_g ?= 'Notify-osd'", + "class_g = 'Cairo-clock'", + "_GTK_FRAME_EXTENTS@:c" +]; +# shadow-exclude = "n:e:Notification"; +# shadow-exclude-reg = "x10+0+0"; +# xinerama-shadow-crop = true; + +# Opacity +#uncomment for window transparency +menu-opacity = 0.8; +inactive-opacity = 0.8; +# active-opacity = 0.8; +frame-opacity = 0.7; +inactive-opacity-override = false; +# inactive-dim = 0.2; +# inactive-dim-fixed = true; +# blur-background = true; +# blur-background-frame = true; +blur-kern = "3x3box"; +# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; +# blur-background-fixed = true; +blur-background-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'", + "_GTK_FRAME_EXTENTS@:c" +]; +# opacity-rule = [ "80:class_g = 'URxvt'" ]; + +# max-brightness = 0.66 + +# Fading +fading = true; +# fade-delta = 30; +fade-in-step = 0.03; +fade-out-step = 0.03; +# no-fading-openclose = true; +# no-fading-destroyed-argb = true; +fade-exclude = [ ]; + +# Other +backend = "glx"; + + +mark-wmwin-focused = true; +mark-ovredir-focused = true; +# use-ewmh-active-win = true; +detect-rounded-corners = true; +detect-client-opacity = true; +refresh-rate = 0; +vsync = true; +# sw-opti = true; +# unredir-if-possible = true; +# unredir-if-possible-delay = 5000; +# unredir-if-possible-exclude = [ ]; +focus-exclude = [ "class_g = 'Cairo-clock'" ]; +detect-transient = true; +detect-client-leader = true; +invert-color-include = [ ]; +# resize-damage = 1; + +# GLX backend + glx-no-stencil = true; + glx-no-rebind-pixmap = true; + xrender-sync-fence = true; +use-damage = true; + +# Window type settings +wintypes: +{ + tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; }; + dock = { shadow = false; } + dnd = { shadow = false; } + popup_menu = { opacity = 0.8; } + dropdown_menu = { opacity = 0.8; } +}; diff --git a/.config/redshift/redshift.conf b/.config/redshift/redshift.conf new file mode 100644 index 0000000..dfb4ab5 --- /dev/null +++ b/.config/redshift/redshift.conf @@ -0,0 +1,24 @@ +; Global settings +[redshift] +temp-day=6500 +temp-night=2000 +transition=1 +;gamma=0.8:0.7:0.8 +gamma=1.000:1.000:1.000 +;location-provider=geoclue +location-provider=manual +adjustment-method=vidmode +;brightness=1.0:0.5 + +; The location provider and adjustment method settings +; are in their own sections. +; This is an example lat long for Portland, OR +[manual] +lat=34.73 +lon=-86.58 + +; In this example screen 1 is adjusted by vidmode. Note +; that the numbering starts from 0, so this is actually +; the second screen. +;[vidmode] +;screen=1 diff --git a/.config/river/hw_config b/.config/river/hw_config new file mode 100755 index 0000000..3598fd1 --- /dev/null +++ b/.config/river/hw_config @@ -0,0 +1,6 @@ +#!/bin/sh + +riverctl input 1133:49257:Logitech_USB_Laser_Mouse accel-profile flat + +wlr-randr --output HDMI-A-1 --pos 0,0 +wlr-randr --output DP-1 --pos 1920,0 diff --git a/.config/river/init b/.config/river/init new file mode 100755 index 0000000..3c8edfa --- /dev/null +++ b/.config/river/init @@ -0,0 +1,179 @@ +#!/bin/sh + +# This is the example configuration file for river. +# +# If you wish to edit this, you will probably want to copy it to +# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first. +# +# See the river(1), riverctl(1), and rivertile(1) man pages for complete +# documentation. + +# Use the "logo" key as the primary modifier +mod="Mod1" + +# Mod+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot) +riverctl map normal $mod+Shift Return spawn alacritty + +# Mod+P open bemenu +riverctl map normal $mod P spawn "bemenu-run -H 24" + +# Mod+Q to close the focused view +riverctl map normal $mod+Shift C close + +# Mod+E to exit river +riverctl map normal $mod+Shift Q exit + +# Mod+J and Mod+K to focus the next/previous view in the layout stack +#riverctl map normal $mod J focus-view next +#riverctl map normal $mod K focus-view previous + +# Mod+Shift+J and Mod+Shift+K to swap the focused view with the next/previous +# view in the layout stack +#riverctl map normal $mod+Shift J swap next +#riverctl map normal $mod+Shift K swap previous + +# Mod+Period and Mod+Comma to focus the next/previous output +riverctl map normal $mod Period focus-output next +riverctl map normal $mod Comma focus-output previous + +# Mod+Shift+{Period,Comma} to send the focused view to the next/previous output +riverctl map normal $mod+Shift Period send-to-output next +riverctl map normal $mod+Shift Comma send-to-output previous + +# Mod+Return to bump the focused view to the top of the layout stack +riverctl map normal $mod Return zoom + +# Mod+H and Mod+L to decrease/increase the main ratio of rivertile(1) +#riverctl map normal $mod H send-layout-cmd rivertile "main-ratio -0.05" +#riverctl map normal $mod L send-layout-cmd rivertile "main-ratio +0.05" + +# Mod+Shift+H and Mod+Shift+L to increment/decrement the main count of rivertile(1) +#riverctl map normal $mod+Shift H send-layout-cmd rivertile "main-count +1" +#riverctl map normal $mod+Shift L send-layout-cmd rivertile "main-count -1" + +riverctl map normal $mod + +# Mod+Alt+{H,J,K,L} to move views +#riverctl map normal $mod+Mod1 H move left 100 +#riverctl map normal $mod+Mod1 J move down 100 +#riverctl map normal $mod+Mod1 K move up 100 +#riverctl map normal $mod+Mod1 L move right 100 + +# Mod+Alt+Control+{H,J,K,L} to snap views to screen edges +#riverctl map normal $mod+Mod1+Control H snap left +#riverctl map normal $mod+Mod1+Control J snap down +#riverctl map normal $mod+Mod1+Control K snap up +#riverctl map normal $mod+Mod1+Control L snap right + +# Mod+Alt+Shif+{H,J,K,L} to resize views +#riverctl map normal $mod+Mod1+Shift H resize horizontal -100 +#riverctl map normal $mod+Mod1+Shift J resize vertical 100 +#riverctl map normal $mod+Mod1+Shift K resize vertical -100 +#riverctl map normal $mod+Mod1+Shift L resize horizontal 100 + +riverctl map normal $mod J focus-view next +riverctl map normal $mod K focus-view previous + + +# Mod + Left Mouse Button to move views +riverctl map-pointer normal $mod BTN_LEFT move-view + +# Mod + Right Mouse Button to resize views +riverctl map-pointer normal $mod BTN_RIGHT resize-view + +for i in $(seq 1 9) +do + tags=$((1 << ($i - 1))) + + # Mod+[1-9] to focus tag [0-8] + riverctl map normal $mod $i set-focused-tags $tags + + # Mod+Shift+[1-9] to tag focused view with tag [0-8] + riverctl map normal $mod+Shift $i set-view-tags $tags + + # Mod+Ctrl+[1-9] to toggle focus of tag [0-8] + riverctl map normal $mod+Control $i toggle-focused-tags $tags + + # Mod+Shift+Ctrl+[1-9] to toggle tag [0-8] of focused view + riverctl map normal $mod+Shift+Control $i toggle-view-tags $tags +done + +# Mod+0 to focus all tags +# Mod+Shift+0 to tag focused view with all tags +all_tags=$(((1 << 32) - 1)) +riverctl map normal $mod 0 set-focused-tags $all_tags +riverctl map normal $mod+Shift 0 set-view-tags $all_tags + +# Mod+f to toggle float +riverctl map normal $mod F toggle-float + +# Mod+Shift+F to toggle fullscreen +riverctl map normal $mod+Shift F toggle-fullscreen + +# Mod+{Up,Right,Down,Left} to change layout orientation +riverctl map normal $mod Up send-layout-cmd rivertile "main-location top" +riverctl map normal $mod Right send-layout-cmd rivertile "main-location right" +riverctl map normal $mod Down send-layout-cmd rivertile "main-location bottom" +riverctl map normal $mod Left send-layout-cmd rivertile "main-location left" + +# Declare a passthrough mode. This mode has only a single mapping to return to +# normal mode. This makes it useful for testing a nested wayland compositor +riverctl declare-mode passthrough + +# Mod+F11 to enter passthrough mode +riverctl map normal $mod F11 enter-mode passthrough + +# Mod+F11 to return to normal mode +riverctl map passthrough $mod F11 enter-mode normal + +# Various media key mapping examples for both normal and locked mode which do +# not have a modifier +for mode in normal locked +do + # Eject the optical drive + riverctl map $mode None XF86Eject spawn 'eject -T' + + # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer) + riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5' + riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5' + riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute' + + # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl) + riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause' + riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause' + riverctl map $mode None XF86AudioPrev spawn 'playerctl previous' + riverctl map $mode None XF86AudioNext spawn 'playerctl next' + + # Control screen backlight brighness with light (https://github.com/haikarainen/light) + riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5' + riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5' +done + +# Set background and border color +riverctl background-color 0x002b36 +riverctl border-color-focused 0x93a1a1 +riverctl border-color-unfocused 0x586e75 + +# Set repeat rate +riverctl set-repeat 50 300 + +# Make certain views start floating +riverctl float-filter-add app-id float +riverctl float-filter-add title "popup title with spaces" + +# Set app-ids and titles of views which should use client side decorations +riverctl csd-filter-add app-id "gedit" + +# Set and exec into the default layout generator, rivertile. +# River will send the process group of the init executable SIGTERM on exit. +riverctl default-layout rivertile + +riverctl xcursor-theme Adwaita + +#hardware config +sh ~/.config/river/hw_config + +#startup programs +sh ~/.local/inits/river.sh + +exec rivertile diff --git a/.config/rsync-exclude.conf b/.config/rsync-exclude.conf new file mode 100644 index 0000000..b10d0a8 --- /dev/null +++ b/.config/rsync-exclude.conf @@ -0,0 +1,35 @@ +HDDA +.cfg +.cache +.steam +.var +.pki +scripts +wallpapers +.ghc +.stack +.trash +.config +.local/share +.local/bin +.local/inits +.local/installers +.local/scripts +.local/src +.local/state +.local/README.md +.local/LICENSE +.local/TODO +.profile +.inputrc +.gtkrc-2.0 +.xinitrc +.zprofile +.Xauthority +.Xdefaults +.gpupg +.ICEauthority +.steampath +.steampid +.pulse-cookie + diff --git a/.config/rsync-include.conf b/.config/rsync-include.conf new file mode 100644 index 0000000..fc749a5 --- /dev/null +++ b/.config/rsync-include.conf @@ -0,0 +1,3 @@ +.config/chromium +.config/com.liberty.jaxx +.local/wallets diff --git a/.config/shortcutrc b/.config/shortcutrc new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.config/shortcutrc @@ -0,0 +1 @@ + diff --git a/.config/spectrwm/spectrwm.conf b/.config/spectrwm/spectrwm.conf new file mode 100644 index 0000000..ea165f4 --- /dev/null +++ b/.config/spectrwm/spectrwm.conf @@ -0,0 +1,167 @@ +# PLEASE READ THE MAN PAGE BEFORE EDITING THIS FILE! +# https://htmlpreview.github.io/?https://github.com/conformal/spectrwm/blob/master/spectrwm.html +# NOTE: all rgb color values in this file are in hex! see XQueryColor for examples + +workspace_limit = 9 +focus_mode = follow +focus_close = last +focus_close_wrap = 1 +focus_default = first +spawn_position = next +workspace_clamp = 0 + +warp_pointer = 1 + +# Window Decoration +border_width = 1 +#color_focus = rgb:bb/c5/ff +#color_focus_maximized = yellow +#color_unfocus = rgb:88/88/88 +#color_unfocus_maximized = rgb:88/88/00 +region_padding = 6 +tile_gap = 6 + +#Colors +color_focus = rgb:bb/c5/ff +color_focus_maximized = yellow +color_unfocus = rgb:88/88/88 +color_unfocus_maximized = rgb:88/88/00 + +bar_border[1] = rgb:28/2a/36 +bar_border_unfocus[1] = rgb:28/2a/36 +bar_color[1] = rgb:28/2a/36, rgb:00/80/80 +bar_color_selected[1] = rgb:00/80/80 +bar_font_color[1] = rgb:bb/c5/ff, rgb:e1/ac/ff, rgb:dd/ff/a7, rgb:ff/8b/92, rgb:ff/e5/85, rgb:89/dd/ff +bar_font_color_selected = black + + +# Bar Settings +bar_action = /home/alex/.local/scripts/spectrwm-bar.sh +bar_action_expand = 1 +bar_enabled = 1 +bar_border_width = 1 +#bar_border[1] = rgb:28/2a/36 +#bar_border_unfocus[1] = rgb:28/2a/36 +#bar_color[1] = rgb:28/2a/36, rgb:00/80/80 +#bar_color_selected[1] = rgb:00/80/80 +bar_delay = 5 +#bar_font_color[1] = rgb:bb/c5/ff, rgb:e1/ac/ff, rgb:dd/ff/a7, rgb:ff/8b/92, rgb:ff/e5/85, rgb:89/dd/ff +#bar_font_color_selected = black +bar_font = mono:size=10, symbola:size=10 +bar_justify = center +bar_format = +|L+1<+N:+I +S +F +W +|R+A+1<+@fg=5; %a %b %d [%R] + +workspace_indicator = listcurrent,listactive,markcurrent,printnames +bar_at_bottom = 0 +stack_enabled = 1 +clock_enabled = 1 +clock_format = %a %b %d %R %Z %Y +iconic_enabled = 0 +maximize_hide_bar = 0 +window_class_enabled = 1 +window_instance_enabled = 1 +window_name_enabled = 1 +verbose_layout = 1 +urgent_enabled = 1 +urgent_collapse = 0 + + +# PROGRAMS + +# Validated default programs: +program[lock] = slock +program[term] = alacritty +program[menu] = dmenu_run -nb $bar_color -nf $bar_font_color -sb $bar_border -sf $bar_color_selected -fn "mono:size=9" +program[search] = dmenu -nb $bar_color -nf $bar_font_color -sb $bar_border -sf $bar_color_selected -fn "mono:size=9" +# program[name_workspace] = dmenu $dmenu_bottom -p Workspace -fn $bar_font -nb $bar_color -nf $bar_font_color -sb $bar_color_selected -sf $bar_font_color_selected + +# To disable validation of the above, free the respective binding(s): +# bind[] = MOD+Shift+Delete # disable lock +# bind[] = MOD+Shift+Return # disable term +# bind[] = MOD+p # disable menu + +# Optional default programs that will only be validated if you override: +# program[screenshot_all] = screenshot.sh full # optional +# program[screenshot_wind] = screenshot.sh window # optional +# program[initscr] = initscreen.sh # optional + +# EXAMPLE: Define 'firefox' action and bind to key. +# program[firefox] = firefox http://spectrwm.org/ +# bind[firefox] = MOD+Shift+b + +# QUIRKS +# Default quirks, remove with: quirk[class:name] = NONE +# quirk[MPlayer:xv] = FLOAT + FULLSCREEN + FOCUSPREV +# quirk[OpenOffice.org 2.4:VCLSalFrame] = FLOAT +# quirk[OpenOffice.org 3.0:VCLSalFrame] = FLOAT +# quirk[OpenOffice.org 3.1:VCLSalFrame] = FLOAT +# quirk[Firefox-bin:firefox-bin] = TRANSSZ +# quirk[Firefox:Dialog] = FLOAT +# quirk[Gimp:gimp] = FLOAT + ANYWHERE +# quirk[XTerm:xterm] = XTERM_FONTADJ +# quirk[xine:Xine Window] = FLOAT + ANYWHERE +# quirk[Xitk:Xitk Combo] = FLOAT + ANYWHERE +# quirk[xine:xine Panel] = FLOAT + ANYWHERE +# quirk[Xitk:Xine Window] = FLOAT + ANYWHERE +# quirk[xine:xine Video Fullscreen Window] = FULLSCREEN + FLOAT +# quirk[pcb:pcb] = FLOAT + + + +# Region containment +# Distance window must be dragged/resized beyond the region edge before it is +# allowed outside the region. +# boundary_width = 50 + +# Remove window border when bar is disabled and there is only one window in workspace +# disable_border = 1 + +# Dialog box size ratio when using TRANSSZ quirk; 0.3 < dialog_ratio <= 1.0 +# dialog_ratio = 0.6 + +# Split a non-RandR dual head setup into one region per monitor +# (non-standard driver-based multihead is not seen by spectrwm) +# region = screen[1]:1280x1024+0+0 +# region = screen[1]:1280x1024+1280+0 + +# Launch applications in a workspace of choice +# autorun = ws[1]:xterm +# autorun = ws[2]:xombrero http://www.openbsd.org + +autorun = ws[1]:sxhkd +autorun = ws[1]:dunst +autorun = ws[1]:picom +autorun = ws[1]:redshift +autorun = ws[1]:mpd +autorun = ws[1]:wp-load.sh +autorun = ws[1]:devmon +autorun = ws[1]:xautolock -time 30 -locker slock + +autorun = ws[1]:pipewire +autorun = ws[1]:pipewire-pulse +autorun = ws[1]:pipewire-media-session + + +# Customize workspace layout at start +# layout = ws[1]:4:0:0:0:vertical +# layout = ws[2]:0:0:0:0:horizontal +# layout = ws[3]:0:0:0:0:fullscreen +# layout = ws[4]:4:0:0:0:vertical_flip +# layout = ws[5]:0:0:0:0:horizontal_flip + +# Set workspace name at start +# name = ws[1]:IRC +# name = ws[2]:Email +# name = ws[3]:Browse +# name = ws[10]:Music + +# Mod key, (Windows key is Mod4) (Apple key on OSX is Mod2) +modkey = Mod1 + +# This allows you to include pre-defined key bindings for your keyboard layout. +keyboard_mapping = ~/.config/spectrwm/spectrwm_us.conf + + + + + diff --git a/.config/spectrwm/spectrwm_us.conf b/.config/spectrwm/spectrwm_us.conf new file mode 100644 index 0000000..b467d8c --- /dev/null +++ b/.config/spectrwm/spectrwm_us.conf @@ -0,0 +1,123 @@ +# Key bindings for United States (us) keyboards +# unbind with: bind[] = +bind[bar_toggle] = MOD+b +bind[bar_toggle_ws] = MOD+Shift+b +bind[button2] = MOD+v +bind[cycle_layout] = MOD+space +bind[flip_layout] = MOD+Shift+backslash +bind[float_toggle] = MOD+t +bind[focus_main] = MOD+m +bind[focus_next] = MOD+j +bind[focus_next] = MOD+Tab +bind[focus_prev] = MOD+k +bind[focus_prev] = MOD+Shift+Tab +bind[focus_urgent] = MOD+u +bind[height_grow] = MOD+Shift+equal +bind[height_shrink] = MOD+Shift+minus +bind[iconify] = MOD+w +bind[initscr] = MOD+Shift+i +bind[lock] = MOD+Shift+Delete +bind[master_add] = MOD+comma +bind[master_del] = MOD+period +bind[master_grow] = MOD+l +bind[master_shrink] = MOD+h +bind[maximize_toggle] = MOD+e +bind[menu] = MOD+p +bind[move_down] = MOD+Shift+bracketright +bind[move_left] = MOD+bracketleft +bind[move_right] = MOD+bracketright +bind[move_up] = MOD+Shift+bracketleft +bind[mvrg_1] = MOD+Shift+KP_End +bind[mvrg_2] = MOD+Shift+KP_Down +bind[mvrg_3] = MOD+Shift+KP_Next +bind[mvrg_4] = MOD+Shift+KP_Left +bind[mvrg_5] = MOD+Shift+KP_Begin +bind[mvrg_6] = MOD+Shift+KP_Right +bind[mvrg_7] = MOD+Shift+KP_Home +bind[mvrg_8] = MOD+Shift+KP_Up +bind[mvrg_9] = MOD+Shift+KP_Prior +bind[mvws_1] = MOD+Shift+1 +bind[mvws_2] = MOD+Shift+2 +bind[mvws_3] = MOD+Shift+3 +bind[mvws_4] = MOD+Shift+4 +bind[mvws_5] = MOD+Shift+5 +bind[mvws_6] = MOD+Shift+6 +bind[mvws_7] = MOD+Shift+7 +bind[mvws_8] = MOD+Shift+8 +bind[mvws_9] = MOD+Shift+9 +bind[mvws_10] = MOD+Shift+0 +bind[mvws_11] = MOD+Shift+F1 +bind[mvws_12] = MOD+Shift+F2 +bind[mvws_13] = MOD+Shift+F3 +bind[mvws_14] = MOD+Shift+F4 +bind[mvws_15] = MOD+Shift+F5 +bind[mvws_16] = MOD+Shift+F6 +bind[mvws_17] = MOD+Shift+F7 +bind[mvws_18] = MOD+Shift+F8 +bind[mvws_19] = MOD+Shift+F9 +bind[mvws_20] = MOD+Shift+F10 +bind[mvws_21] = MOD+Shift+F11 +bind[mvws_22] = MOD+Shift+F12 +bind[name_workspace] = MOD+Shift+slash +bind[quit] = MOD+Shift+q +bind[raise_toggle] = MOD+Shift+r +bind[restart] = MOD+q +bind[rg_1] = MOD+KP_End +bind[rg_2] = MOD+KP_Down +bind[rg_3] = MOD+KP_Next +bind[rg_4] = MOD+KP_Left +bind[rg_5] = MOD+KP_Begin +bind[rg_6] = MOD+KP_Right +bind[rg_7] = MOD+KP_Home +bind[rg_8] = MOD+KP_Up +bind[rg_9] = MOD+KP_Prior +bind[rg_next] = MOD+Shift+Right +bind[rg_prev] = MOD+Shift+Left +bind[screenshot_all] = MOD+s +bind[screenshot_wind] = MOD+Shift+s +bind[search_win] = MOD+f +bind[search_workspace] = MOD+slash +bind[stack_dec] = MOD+Shift+period +bind[stack_inc] = MOD+Shift+comma +bind[stack_reset] = MOD+Shift+space +bind[swap_main] = MOD+Return +bind[swap_next] = MOD+Shift+j +bind[swap_prev] = MOD+Shift+k +bind[term] = MOD+Shift+Return +bind[uniconify] = MOD+Shift+w +bind[version] = MOD+Shift+v +bind[width_grow] = MOD+equal +bind[width_shrink] = MOD+minus +bind[wind_del] = MOD+c +bind[wind_kill] = MOD+Shift+c +bind[ws_1] = MOD+1 +bind[ws_2] = MOD+2 +bind[ws_3] = MOD+3 +bind[ws_4] = MOD+4 +bind[ws_5] = MOD+5 +bind[ws_6] = MOD+6 +bind[ws_7] = MOD+7 +bind[ws_8] = MOD+8 +bind[ws_9] = MOD+9 +bind[ws_10] = MOD+0 +bind[ws_11] = MOD+F1 +bind[ws_12] = MOD+F2 +bind[ws_13] = MOD+F3 +bind[ws_14] = MOD+F4 +bind[ws_15] = MOD+F5 +bind[ws_16] = MOD+F6 +bind[ws_17] = MOD+F7 +bind[ws_18] = MOD+F8 +bind[ws_19] = MOD+F9 +bind[ws_20] = MOD+F10 +bind[ws_21] = MOD+F11 +bind[ws_22] = MOD+F12 +bind[ws_next] = MOD+Right +bind[ws_next_all] = MOD+Up +bind[ws_next_move] = MOD+Shift+Up +bind[ws_prev] = MOD+Left +bind[ws_prev_all] = MOD+Down +bind[ws_prev_move] = MOD+Shift+Down +bind[ws_prior] = MOD+a + + diff --git a/.config/straw-viewer/straw-viewer.conf b/.config/straw-viewer/straw-viewer.conf new file mode 100644 index 0000000..8b2eb8b --- /dev/null +++ b/.config/straw-viewer/straw-viewer.conf @@ -0,0 +1,103 @@ +#!/usr/bin/perl + +# CLI Straw Viewer 0.1.1 - configuration file + +our $CONFIG = { + api_host => "https://invidio.us", + auto_captions => 0, + autoplay_mode => 0, + cache_dir => "$ENV{HOME}/.cache/straw-viewer", + colors => 1, + comments_order => "top", + confirm => 0, + convert_cmd => "ffmpeg -i *IN* *OUT*", + convert_to => undef, + cookie_file => undef, + copy_caption => 0, + custom_layout => 0, + custom_layout_format => [ + { align => "right", color => "bold", text => "*NO*.", width => 3 }, + { align => "left", color => "bold blue", text => "*TITLE*", width => "55%" }, + { align => "left", color => "yellow", text => "*AUTHOR*", width => "15%" }, + { align => "right", color => "green", text => "*AGE_SHORT*", width => 3 }, + { align => "right", color => "green", text => "*VIEWS_SHORT*", width => 5 }, + { align => "right", color => "blue", text => "*TIME*", width => 8 }, + ], + dash_mp4_audio => 1, + dash_segmented => 1, + dash_support => 1, + date => undef, + debug => 0, + download_and_play => 0, + download_with_wget => 0, + downloads_dir => "dl/", + env_proxy => 1, + fat32safe => 0, + ffmpeg_cmd => "/bin/ffmpeg", + fullscreen => 0, + get_captions => 1, + get_term_width => 1, + hfr => 1, + highlight_color => "bold", + highlight_watched => 1, + history => 0, + history_file => "$ENV{HOME}/.config/straw-viewer/cli-history.txt", + history_limit => 100000, + http_proxy => undef, + ignore_av1 => 0, + interactive => 1, + keep_original_video => 0, + maxResults => 20, + merge_into_mkv => 1, + merge_into_mkv_args => "-loglevel warning -c:s srt -c:v copy -c:a copy -disposition:s forced", + merge_with_captions => 1, + order => undef, + page => 1, + prefer_av1 => 0, + prefer_mp4 => 0, + region => undef, + remember_watched => 0, + remove_played_file => 0, + resolution => "best", + results_fixed_width => 0, + results_with_colors => 0, + results_with_details => 0, + show_video_info => 1, + skip_if_exists => 1, + skip_watched => 0, + srt_languages => ["en", "es"], + subscriptions_order => "relevance", + thousand_separator => ",", + timeout => undef, + user_agent => undef, + video_filename_format => "*FTITLE* - *ID*.*FORMAT*", + video_player_selected => "mpv", + video_players => { + mpv => { + arg => "--really-quiet --title=*TITLE* --no-ytdl", + audio => "--audio-file=*AUDIO*", + cmd => "/bin/mpv", + fs => "--fullscreen", + novideo => "--no-video", + srt => "--sub-file=*SUB*", + }, + vlc => { + arg => "--quiet --play-and-exit --no-video-title-show --input-title-format=*TITLE*", + audio => "--input-slave=*AUDIO*", + cmd => "vlc", + fs => "--fullscreen", + novideo => "--intf=dummy --novideo", + srt => "--sub-file=*SUB*", + }, + }, + videoCaption => undef, + videoDefinition => undef, + videoDimension => undef, + videoDuration => undef, + videoLicense => undef, + watched_file => "$ENV{HOME}/.config/straw-viewer/watched.txt", + wget_cmd => "/bin/wget", + youtube_video_url => "https://www.youtube.com/watch?v=%s", + ytdl => 1, + ytdl_cmd => "/bin/youtube-dl", +} diff --git a/.config/sway/colors/base16-atlas b/.config/sway/colors/base16-atlas new file mode 100644 index 0000000..acb448a --- /dev/null +++ b/.config/sway/colors/base16-atlas @@ -0,0 +1,19 @@ +## Base16 Atlas +# Author: Alex Lende (https://ajlende.com) + +set $base00 #002635 +set $base01 #00384d +set $base02 #517F8D +set $base03 #6C8B91 +set $base04 #869696 +set $base05 #a1a19a +set $base06 #e6e6dc +set $base07 #fafaf8 +set $base08 #ff5a67 +set $base09 #f08e48 +set $base0A #ffcc1b +set $base0B #7fc06e +set $base0C #14747e +set $base0D #5dd7b9 +set $base0E #9a70a4 +set $base0F #c43060 diff --git a/.config/sway/colors/colorscheme-darkula b/.config/sway/colors/colorscheme-darkula new file mode 100644 index 0000000..3e2ceb7 --- /dev/null +++ b/.config/sway/colors/colorscheme-darkula @@ -0,0 +1,16 @@ +set $base00 #2b2b2b +set $base01 #323232 +set $base02 #323232 +set $base03 #606366 +set $base04 #a4a3a3 +set $base05 #a9b7c6 +set $base06 #ffc66d +set $base07 #ffffff +set $base08 #4eade5 +set $base09 #689757 +set $base0A #bbb529 +set $base0B #6a8759 +set $base0C #629755 +set $base0D #9876aa +set $base0E #cc7832 +set $base0F #808080 diff --git a/.config/sway/colors/colorscheme-default b/.config/sway/colors/colorscheme-default new file mode 100644 index 0000000..1661264 --- /dev/null +++ b/.config/sway/colors/colorscheme-default @@ -0,0 +1,19 @@ +## Base16 Default Dark +# Author: Chris Kempson (http://chriskempson.com) + +set $base00 #181818 +set $base01 #282828 +set $base02 #383838 +set $base03 #585858 +set $base04 #b8b8b8 +set $base05 #d8d8d8 +set $base06 #e8e8e8 +set $base07 #f8f8f8 +set $base08 #ab4642 +set $base09 #dc9656 +set $base0A #f7ca88 +set $base0B #a1b56c +set $base0C #86c1b9 +set $base0D #7cafc2 +set $base0E #ba8baf +set $base0F #a16946 diff --git a/.config/sway/colors/colorscheme-dracula b/.config/sway/colors/colorscheme-dracula new file mode 100644 index 0000000..b853d1a --- /dev/null +++ b/.config/sway/colors/colorscheme-dracula @@ -0,0 +1,16 @@ +set $base00 #282936 +set $base01 #3a3c4e +set $base02 #4d4f68 +set $base03 #626483 +set $base04 #62d6e8 +set $base05 #e9e9f4 +set $base06 #f1f2f8 +set $base07 #f7f7fb +set $base08 #ea51b2 +set $base09 #b45bcf +set $base0A #00f769 +set $base0B #ebff87 +set $base0C #a1efe4 +set $base0D #62d6e8 +set $base0E #b45bcf +set $base0F #00f769 diff --git a/.config/sway/colors/colorscheme-dracula-mine b/.config/sway/colors/colorscheme-dracula-mine new file mode 100644 index 0000000..25c18e2 --- /dev/null +++ b/.config/sway/colors/colorscheme-dracula-mine @@ -0,0 +1,19 @@ +#dracula colorscheme for sway +#based on base16 (https://github.com/rkubosz/base16-sway) + +set $base00 #282936 +set $base01 #3a3c4e +set $base02 #F7CA88 +set $base03 #626483 +set $base04 #62d6e8 +set $base05 #e9e9f4 +set $base06 #f1f2f8 +set $base07 #f7f7fb +set $base08 #ea51b2 +set $base09 #b45bcf +set $base0A #00f769 +set $base0B #ebff87 +set $base0C #a1efe4 +set $base0D #62d6e8 +set $base0E #b45bcf +set $base0F #00f769 diff --git a/.config/sway/colors/colorscheme-gruvbox-dark-soft b/.config/sway/colors/colorscheme-gruvbox-dark-soft new file mode 100644 index 0000000..70ffcbd --- /dev/null +++ b/.config/sway/colors/colorscheme-gruvbox-dark-soft @@ -0,0 +1,16 @@ +set $base00 #32302f +set $base01 #3c3836 +set $base02 #504945 +set $base03 #665c54 +set $base04 #bdae93 +set $base05 #d5c4a1 +set $base06 #ebdbb2 +set $base07 #fbf1c7 +set $base08 #fb4934 +set $base09 #fe8019 +set $base0A #fabd2f +set $base0B #b8bb26 +set $base0C #8ec07c +set $base0D #83a598 +set $base0E #d3869b +set $base0F #d65d0e diff --git a/.config/sway/config b/.config/sway/config new file mode 100644 index 0000000..a1c16ad --- /dev/null +++ b/.config/sway/config @@ -0,0 +1,298 @@ +# Default config for sway +# +# Copy this to ~/.config/sway/config and edit it to your liking. +# +# Read `man 5 sway` for a complete reference. + +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod1 +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l +# Your preferred terminal emulator +set $term alacritty +# Your preferred application launcher +# Note: it's recommended that you pass the final command to sway +set $menu bemenu-run | xargs swaymsg exec -- + +### Output configuration +# +# Default wallpaper +#output * bg ~/.config/sway/backgrounds/Sway_Wallpaper_Blue_1920x1080.png fill +# +# Example configuration: +# +#output HDMI-A-1 resolution 1920x1080 position 1920,0 +#output HDMI-A-1 bg ~/.config/wall fill +#output DP-1 resolution 1920x1080 position 0,0 +#output DP-1 bg ~/.config/wall fill +output * bg ~/.config/wall fill +output VGA-1 disable + + +# +# You can get the names of your outputs by running: swaymsg -t get_outputs + +### Idle configuration +# +# Example configuration: +# + exec swayidle -w \ + timeout 900 'swaylock -f -c 000000' \ + timeout 1200 'swaymsg "output * dpms off"' \ + resume 'swaymsg "output * dpms on"' \ + before-sleep 'swaylock -f -c 000000' +# +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 300 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. + +#set transparency +set $opacity 0.9 +#for_window [class=".*"] opacity 1.0 +#for_window [app_id=".*"] opacity 1.0 + +#for_window [class='alacritty'] opacity $opacity +#for_window [class="bash"] opacity $opacity +#for_window [app_id="alacritty"] opacity $opacity + +#font pango:MesloLGS NF Regular 10 +font pango:mononoki Nerd Font Mono 10 + +### Input configuration +# +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + +xwayland enable + +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+Shift+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Reload the configuration file + bindsym $mod+Shift+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'exec "$HOME"/.local/init/init.sh -c' +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +# +# Workspaces: +# + # Switch to workspace + bindsym $mod+1 workspace 1 + bindsym $mod+2 workspace 2 + bindsym $mod+3 workspace 3 + bindsym $mod+4 workspace 4 + bindsym $mod+5 workspace 5 + bindsym $mod+6 workspace 6 + bindsym $mod+7 workspace 7 + bindsym $mod+8 workspace 8 + bindsym $mod+9 workspace 9 + bindsym $mod+0 workspace 10 + # Move focused container to workspace + bindsym $mod+Shift+1 move container to workspace 1 + bindsym $mod+Shift+2 move container to workspace 2 + bindsym $mod+Shift+3 move container to workspace 3 + bindsym $mod+Shift+4 move container to workspace 4 + bindsym $mod+Shift+5 move container to workspace 5 + bindsym $mod+Shift+6 move container to workspace 6 + bindsym $mod+Shift+7 move container to workspace 7 + bindsym $mod+Shift+8 move container to workspace 8 + bindsym $mod+Shift+9 move container to workspace 9 + bindsym $mod+Shift+0 move container to workspace 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +#custom keybinds +bindsym XF86AudioRaiseVolume exec volchange.sh -i 2 +bindsym XF86AudioLowerVolume exec volchange.sh -d 2 +bindsym XF86AudioMute exec volchange.sh --toggle-mute +bindsym $mod+p exec fixscr.sh --menu +bindsym $mod+o exec browser.sh +bindsym $mod+shift+s exec ss.sh -s + + + +#include ~/.config/sway/colors/base16-atlas +#include ~/.local/src/base16-sway/themes/base16-gruvbox-dark-medium.config +include ~/.local/src/base16-sway/themes/base16-atlas.config + +# +# Status Bar: +# +# Read `man 5 sway-bar` for more information about this section. +bar { + position top + + # When the status_command prints a new line to stdout, swaybar updates. + # The default just shows the current date and time. + #status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done + status_command sh $HOME/.local/scripts/sway-bar.sh -l + + colors { + background $base00 + separator $base01 + statusline $base04 + + # State Border BG Text + focused_workspace $base05 $base0D $base00 + active_workspace $base05 $base03 $base00 + inactive_workspace $base03 $base01 $base05 + urgent_workspace $base08 $base08 $base00 + binding_mode $base00 $base0A $base00 + } +} + + +# Basic color configuration using the Base16 variables for windows and borders. +# Property Name Border BG Text Indicator Child Border +client.focused $base05 $base0D $base00 $base0D $base0D +client.focused_inactive $base01 $base01 $base05 $base03 $base01 +client.unfocused $base01 $base00 $base05 $base01 $base01 +client.urgent $base08 $base08 $base00 $base08 $base08 +client.placeholder $base00 $base00 $base05 $base00 $base00 +client.background $base07 + +#GTK theme +set $gnome_schema "org.gnome.desktop.interface" +exec_always { + gsettings set $gnome_schema gtk-theme 'Nordic-standard-buttons' + gsettings set $gnome_schema icon-theme 'ePapirus-Dark' + gsettings set $gnome_schema cursor-theme 'Adwaita' + gsettings set $gnome_schema font-name 'Noto Sans' +} + + +#gaps +gaps inner 10 +gaps outer 10 + +#border +default_border pixel 2 + +#input config +input type:pointer accel_profile flat +input type:pointer pointer_accel -0.5 +seat seat0 xcursor_theme Adwaita 10 + +include /etc/sway/config.d/* + +exec ~/.local/init/init.sh -i + +#do any computer specific setup here, monitor configs, etc. +include ~/.init.sh + diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc new file mode 100644 index 0000000..4e2b2b5 --- /dev/null +++ b/.config/sxhkd/sxhkdrc @@ -0,0 +1,33 @@ +XF86AudioRaiseVolume + pulsemixer --change-volume +1 && pkill sleep -P "$(cat ~/.cache/statusbar_pid )" + #amixer sset Master 1%+ && pkill sleep -P "$(cat ~/.cache/statusbar_pid )" + +XF86AudioLowerVolume + pulsemixer --change-volume -1 && pkill sleep -P "$(cat ~/.cache/statusbar_pid )" + #amixer sset Master 1%- && pkill sleep -P "$(cat ~/.cache/statusbar_pid )" + +XF86AudioMute + pulsemixer --toggle-mute && pkill sleep -P "$(cat ~/.cache/statusbar_pid )" + #amixer sset Master toggle && pkill sleep -P "$(cat ~/.cache/statusbar_pid )" + +super + c + sh ~/.local/scripts/toggle-comp.sh + +super + o + browser.sh "$(xclip -o | cut -d '%' -f 1-)" + +super + m + st -e neomutt +super + shift + m + st -e mbsync -a + +super + s + scrot -s + +super + k + xkill + +super + shift + x + sudo poweroff +super + + shift + r + sudo reboot diff --git a/.config/sxhkd/sxhkdrc_bspwm b/.config/sxhkd/sxhkdrc_bspwm new file mode 100644 index 0000000..5c38628 --- /dev/null +++ b/.config/sxhkd/sxhkdrc_bspwm @@ -0,0 +1,122 @@ +#. sxhkdrc + +# wm independent hotkeys +# + +# terminal emulator +super + Return + st + +# program launcher +super + @space + dmenu_run + +# make sxhkd reload its configuration files: +super + Escape + pkill -USR1 -x sxhkd + +# +# bspwm hotkeys +# + +# quit/restart bspwm +super + alt + {q,r} + bspc {quit,wm -r} + +# close and kill +super + {_,shift + }w + bspc node -{c,k} + +# alternate between the tiled and monocle layout +super + m + bspc desktop -l next + +# send the newest marked node to the newest preselected node +super + y + bspc node newest.marked.local -n newest.!automatic.local + +# swap the current node and the biggest node +super + g + bspc node -s biggest + +# +# state/flags +# + +# set the window state +super + {t,shift + t,s,f} + bspc node -t {tiled,pseudo_tiled,floating,fullscreen} + +# set the node flags +super + ctrl + {m,x,y,z} + bspc node -g {marked,locked,sticky,private} + +# +# focus/swap +# + +# focus the node in the given direction +super + {_,shift + }{h,j,k,l} + bspc node -{f,s} {west,south,north,east} + +# focus the node for the given path jump +super + {p,b,comma,period} + bspc node -f @{parent,brother,first,second} + +# focus the next/previous node in the current desktop +super + {_,shift + }c + bspc node -f {next,prev}.local + +# focus the next/previous desktop in the current monitor +super + bracket{left,right} + bspc desktop -f {prev,next}.local + +# focus the last node/desktop +super + {grave,Tab} + bspc {node,desktop} -f last + +# focus the older or newer node in the focus history +super + {o,i} + bspc wm -h off; \ + bspc node {older,newer} -f; \ + bspc wm -h on + +# focus or send to the given desktop +super + {_,shift + }{1-9,0} + bspc {desktop -f,node -d} '^{1-9,10}' + +# +# preselect +# + +# preselect the direction +super + ctrl + {h,j,k,l} + bspc node -p {west,south,north,east} + +# preselect the ratio +super + ctrl + {1-9} + bspc node -o 0.{1-9} + +# cancel the preselection for the focused node +super + ctrl + space + bspc node -p cancel + +# cancel the preselection for the focused desktop +super + ctrl + shift + space + bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel + +# +# move/resize +# + +# expand a window by moving one of its side outward +super + alt + {h,j,k,l} + bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} + +# contract a window by moving one of its side inward +super + alt + shift + {h,j,k,l} + bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0} + +# move a floating window +super + {Left,Down,Up,Right} + bspc node -v {-20 0,0 20,0 -20,20 0} diff --git a/.config/user-dirs.dirs b/.config/user-dirs.dirs new file mode 100644 index 0000000..c2b86bd --- /dev/null +++ b/.config/user-dirs.dirs @@ -0,0 +1,15 @@ +# This file is written by xdg-user-dirs-update +# If you want to change or add directories, just edit the line you're +# interested in. All local changes will be retained on the next run. +# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped +# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an +# absolute path. No other format is supported. +# +XDG_DESKTOP_DIR="$HOME/.local/share/desktop" +XDG_DOWNLOAD_DIR="$HOME/dl" +XDG_DOCUMENTS_DIR="$HOME/docs" +XDG_MUSIC_DIR="$HOME/media/audio/music" +XDG_PICTURES_DIR="$HOME/media/img" +XDG_VIDEOS_DIR="$HOME/media/video" +XDG_TEMPLATES_DIR="$HOME/Templates" +XDG_PUBLICSHARE_DIR="$HOME/Public" diff --git a/.config/waybar/config b/.config/waybar/config new file mode 100644 index 0000000..ce0af35 --- /dev/null +++ b/.config/waybar/config @@ -0,0 +1,166 @@ +{ + // "layer": "top", // Waybar at top layer + // "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 24, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + // Choose the order of the modules + "modules-left": ["river/tags", "sway/mode", "custom/media"], + "modules-center": ["sway/window"], + "modules-right": ["mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "sway/language", "battery", "battery#bat2", "clock", "tray"], + // Modules configuration + // "sway/workspaces": { + // "disable-scroll": true, + // "all-outputs": true, + // "format": "{name}: {icon}", + // "format-icons": { + // "1": "", + // "2": "", + // "3": "", + // "4": "", + // "5": "", + // "urgent": "", + // "focused": "", + // "default": "" + // } + // }, + + "custom/dwlbar": { + "format": "{}", + "return-type": "json", + "max-length": 200, + "exec": "$HOME/.config/waybar/dwlbar 'HDMI-A-1'", + "escape": true + } + + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "sway/mode": { + "format": "{}" + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "unknown-tag": "N/A", + "interval": 2, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": " ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}" + }, + "cpu": { + "format": "{usage}% ", + "tooltip": false + }, + "memory": { + "format": "{}% " + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{temperatureC}°C {icon}", + "format-icons": ["", "", ""] + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["", ""] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ifname}: {ipaddr}/{cidr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{volume}% {icon} {format_source}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "spotify": "", + "default": "🎜" + }, + "escape": true, + "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + } +} + diff --git a/.config/waybar/dwlbar b/.config/waybar/dwlbar new file mode 100644 index 0000000..13f4793 --- /dev/null +++ b/.config/waybar/dwlbar @@ -0,0 +1,2 @@ +#!/bin/sh + diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..c0d4d9b --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,255 @@ +* { + border: none; + border-radius: 0; + /* `otf-font-awesome` is required to be installed for icons */ + font-family: Roboto, Helvetica, Arial, sans-serif; + font-size: 13px; + min-height: 0; +} + +window#waybar { + background-color: rgba(43, 48, 59, 0.5); + border-bottom: 3px solid rgba(100, 114, 125, 0.5); + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +/* +window#waybar.empty { + background-color: transparent; +} +window#waybar.solo { + background-color: #FFFFFF; +} +*/ + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: #ffffff; + /* Use box-shadow instead of border so the text isn't offset */ + box-shadow: inset 0 -3px transparent; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); + box-shadow: inset 0 -3px #ffffff; +} + +#workspaces button.focused { + background-color: #64727D; + box-shadow: inset 0 -3px #ffffff; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #64727D; + border-bottom: 3px solid #ffffff; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#mpd { + padding: 0 10px; + margin: 0 4px; + color: #ffffff; +} + +#window, +#workspaces { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#clock { + background-color: #64727D; +} + +#battery { + background-color: #ffffff; + color: #000000; +} + +#battery.charging, #battery.plugged { + color: #ffffff; + background-color: #26A65B; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +label:focus { + background-color: #000000; +} + +#cpu { + background-color: #2ecc71; + color: #000000; +} + +#memory { + background-color: #9b59b6; +} + +#disk { + background-color: #964B00; +} + +#backlight { + background-color: #90b1b1; +} + +#network { + background-color: #2980b9; +} + +#network.disconnected { + background-color: #f53c3c; +} + +#pulseaudio { + background-color: #f1c40f; + color: #000000; +} + +#pulseaudio.muted { + background-color: #90b1b1; + color: #2a5c45; +} + +#custom-media { + background-color: #66cc99; + color: #2a5c45; + min-width: 100px; +} + +#custom-media.custom-spotify { + background-color: #66cc99; +} + +#custom-media.custom-vlc { + background-color: #ffa000; +} + +#temperature { + background-color: #f0932b; +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#tray { + background-color: #2980b9; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #eb4d4b; +} + +#idle_inhibitor { + background-color: #2d3436; +} + +#idle_inhibitor.activated { + background-color: #ecf0f1; + color: #2d3436; +} + +#mpd { + background-color: #66cc99; + color: #2a5c45; +} + +#mpd.disconnected { + background-color: #f53c3c; +} + +#mpd.stopped { + background-color: #90b1b1; +} + +#mpd.paused { + background-color: #51a37a; +} + +#language { + background: #00b093; + color: #740864; + padding: 0 5px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state { + background: #97e1ad; + color: #000000; + padding: 0 0px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state > label { + padding: 0 5px; +} + +#keyboard-state > label.locked { + background: rgba(0, 0, 0, 0.2); +} diff --git a/.config/wget/wgetrc b/.config/wget/wgetrc new file mode 100644 index 0000000..4fd7999 --- /dev/null +++ b/.config/wget/wgetrc @@ -0,0 +1 @@ +hsts-file=~/.cache/wget-hsts diff --git a/.config/yambar/config.yml b/.config/yambar/config.yml new file mode 100644 index 0000000..13a6538 --- /dev/null +++ b/.config/yambar/config.yml @@ -0,0 +1,178 @@ +bar: + height: 26 + location: top + background: 000000ff + + right: + - clock: + content: + - string: {text: , font: "Font Awesome 5 Free:style=solid:size=12"} + - string: {text: "{date}", right-margin: 5} + - string: {text: , font: "Font Awesome 5 Free:style=solid:size=12"} + - string: {text: "{time}"} + + left: + - script: + path: /home/alex/.local/scripts/dwl-tags.sh + args: [1] + anchors: + - occupied: &occupied {foreground: 57bbf4ff} + - focused: &focused {foreground: fc65b0ff} + - default: &default {foreground: d2ccd6ff} + content: + - map: + margin: 4 + tag: tag_0_occupied + values: + true: + map: + tag: tag_0_focused + values: + true: {string: {text: "{tag_0}", <<: *focused}} + false: {string: {text: "{tag_0}", <<: *occupied}} + false: + map: + tag: tag_0_focused + values: + true: {string: {text: "{tag_0}", <<: *focused}} + false: {string: {text: "{tag_0}", <<: *default}} + - map: + margin: 4 + tag: tag_1_occupied + values: + true: + map: + tag: tag_1_focused + values: + true: {string: {text: "{tag_1}", <<: *focused}} + false: {string: {text: "{tag_1}", <<: *occupied}} + false: + map: + tag: tag_1_focused + values: + true: {string: {text: "{tag_1}", <<: *focused}} + false: {string: {text: "{tag_1}", <<: *default}} + + - map: + margin: 4 + tag: tag_2_occupied + values: + true: + map: + tag: tag_2_focused + values: + true: {string: {text: "{tag_2}", <<: *focused}} + false: {string: {text: "{tag_2}", <<: *occupied}} + false: + map: + tag: tag_2_focused + values: + true: {string: {text: "{tag_2}", <<: *focused}} + false: {string: {text: "{tag_2}", <<: *default}} + + - map: + margin: 4 + tag: tag_3_occupied + values: + true: + map: + tag: tag_3_focused + values: + true: {string: {text: "{tag_3}", <<: *focused}} + false: {string: {text: "{tag_3}", <<: *occupied}} + false: + map: + tag: tag_3_focused + values: + true: {string: {text: "{tag_3}", <<: *focused}} + false: {string: {text: "{tag_3}", <<: *default}} + + - map: + margin: 4 + tag: tag_4_occupied + values: + true: + map: + tag: tag_4_focused + values: + true: {string: {text: "{tag_4}", <<: *focused}} + false: {string: {text: "{tag_4}", <<: *occupied}} + false: + map: + tag: tag_4_focused + values: + true: {string: {text: "{tag_4}", <<: *focused}} + false: {string: {text: "{tag_4}", <<: *default}} + + - map: + margin: 4 + tag: tag_5_occupied + values: + true: + map: + tag: tag_5_focused + values: + true: {string: {text: "{tag_5}", <<: *focused}} + false: {string: {text: "{tag_5}", <<: *occupied}} + false: + map: + tag: tag_5_focused + values: + true: {string: {text: "{tag_5}", <<: *focused}} + false: {string: {text: "{tag_5}", <<: *default}} + + - map: + margin: 4 + tag: tag_6_occupied + values: + true: + map: + tag: tag_6_focused + values: + true: {string: {text: "{tag_6}", <<: *focused}} + false: {string: {text: "{tag_6}", <<: *occupied}} + false: + map: + tag: tag_6_focused + values: + true: {string: {text: "{tag_6}", <<: *focused}} + false: {string: {text: "{tag_6}", <<: *default}} + + - map: + margin: 4 + tag: tag_7_occupied + values: + true: + map: + tag: tag_7_focused + values: + true: {string: {text: "{tag_7}", <<: *focused}} + false: {string: {text: "{tag_7}", <<: *occupied}} + false: + map: + tag: tag_7_focused + values: + true: {string: {text: "{tag_7}", <<: *focused}} + false: {string: {text: "{tag_7}", <<: *default}} + + - map: + margin: 4 + tag: tag_8_occupied + values: + true: + map: + tag: tag_8_focused + values: + true: {string: {text: "{tag_8}", <<: *focused}} + false: {string: {text: "{tag_8}", <<: *occupied}} + false: + map: + tag: tag_8_focused + values: + true: {string: {text: "{tag_8}", <<: *focused}} + false: {string: {text: "{tag_8}", <<: *default}} + - list: + spacing: 3 + items: + - string: {text: "{layout}"} + - string: {text: "{title}"} diff --git a/.config/yambar/config.yml.bak b/.config/yambar/config.yml.bak new file mode 100644 index 0000000..7b93884 --- /dev/null +++ b/.config/yambar/config.yml.bak @@ -0,0 +1,175 @@ +bar: + height: 40 + location: top + font: mono:pixelsize=10 + spacing: 2 + margin: 0 + layer: bottom + foreground: eeeeeeff + background: 2E3440dd +right: + - script: + path: /home/alex/.local/scripts/dwl-tags.sh + args: [1] + anchors: + - occupied: &occupied {foreground: 57bbf4ff} + - focused: &focused {foreground: fc65b0ff} + - default: &default {foreground: d2ccd6ff} + content: + - map: + margin: 4 + tag: tag_0_occupied + values: + true: + map: + tag: tag_0_focused + values: + true: {string: {text: "{tag_0}", <<: *focused}} + false: {string: {text: "{tag_0}", <<: *occupied}} + false: + map: + tag: tag_0_focused + values: + true: {string: {text: "{tag_0}", <<: *focused}} + false: {string: {text: "{tag_0}", <<: *default}} + - map: + margin: 4 + tag: tag_1_occupied + values: + true: + map: + tag: tag_1_focused + values: + true: {string: {text: "{tag_1}", <<: *focused}} + false: {string: {text: "{tag_1}", <<: *occupied}} + false: + map: + tag: tag_1_focused + values: + true: {string: {text: "{tag_1}", <<: *focused}} + false: {string: {text: "{tag_1}", <<: *default}} + + - map: + margin: 4 + tag: tag_2_occupied + values: + true: + map: + tag: tag_2_focused + values: + true: {string: {text: "{tag_2}", <<: *focused}} + false: {string: {text: "{tag_2}", <<: *occupied}} + false: + map: + tag: tag_2_focused + values: + true: {string: {text: "{tag_2}", <<: *focused}} + false: {string: {text: "{tag_2}", <<: *default}} + + - map: + margin: 4 + tag: tag_3_occupied + values: + true: + map: + tag: tag_3_focused + values: + true: {string: {text: "{tag_3}", <<: *focused}} + false: {string: {text: "{tag_3}", <<: *occupied}} + false: + map: + tag: tag_3_focused + values: + true: {string: {text: "{tag_3}", <<: *focused}} + false: {string: {text: "{tag_3}", <<: *default}} + + - map: + margin: 4 + tag: tag_4_occupied + values: + true: + map: + tag: tag_4_focused + values: + true: {string: {text: "{tag_4}", <<: *focused}} + false: {string: {text: "{tag_4}", <<: *occupied}} + false: + map: + tag: tag_4_focused + values: + true: {string: {text: "{tag_4}", <<: *focused}} + false: {string: {text: "{tag_4}", <<: *default}} + + - map: + margin: 4 + tag: tag_5_occupied + values: + true: + map: + tag: tag_5_focused + values: + true: {string: {text: "{tag_5}", <<: *focused}} + false: {string: {text: "{tag_5}", <<: *occupied}} + false: + map: + tag: tag_5_focused + values: + true: {string: {text: "{tag_5}", <<: *focused}} + false: {string: {text: "{tag_5}", <<: *default}} + + - map: + margin: 4 + tag: tag_6_occupied + values: + true: + map: + tag: tag_6_focused + values: + true: {string: {text: "{tag_6}", <<: *focused}} + false: {string: {text: "{tag_6}", <<: *occupied}} + false: + map: + tag: tag_6_focused + values: + true: {string: {text: "{tag_6}", <<: *focused}} + false: {string: {text: "{tag_6}", <<: *default}} + + - map: + margin: 4 + tag: tag_7_occupied + values: + true: + map: + tag: tag_7_focused + values: + true: {string: {text: "{tag_7}", <<: *focused}} + false: {string: {text: "{tag_7}", <<: *occupied}} + false: + map: + tag: tag_7_focused + values: + true: {string: {text: "{tag_7}", <<: *focused}} + false: {string: {text: "{tag_7}", <<: *default}} + + - map: + margin: 4 + tag: tag_8_occupied + values: + true: + map: + tag: tag_8_focused + values: + true: {string: {text: "{tag_8}", <<: *focused}} + false: {string: {text: "{tag_8}", <<: *occupied}} + false: + map: + tag: tag_8_focused + values: + true: {string: {text: "{tag_8}", <<: *focused}} + false: {string: {text: "{tag_8}", <<: *default}} + - list: + spacing: 3 + items: + - string: {text: "{layout}"} + - string: {text: "{title}"} + diff --git a/.config/zathura/zathurarc b/.config/zathura/zathurarc new file mode 100644 index 0000000..ac55bc8 --- /dev/null +++ b/.config/zathura/zathurarc @@ -0,0 +1,15 @@ +set statusbar-h-padding 50 +set statusbar-v-padding 0 +set page-padding 10 + +map i recolor + +#KEYBINDINGS +#map shortcut_function +#map shortcut_function +# A - Alt +# C - Control +# S - Shift +#map zoom out +#map zoom in + diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc new file mode 100644 index 0000000..0b8d6b5 --- /dev/null +++ b/.config/zsh/.zshrc @@ -0,0 +1,92 @@ +# Luke's config for the Zoomer Shell + +# Enable colors and change prompt: +autoload -U colors && colors + +#PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$reset_color%}$%b " +PS1="%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~% %{$fg[yellow]%} -> " +# History in cache directory: +HISTSIZE=10000 +SAVEHIST=10000 +HISTFILE=~/.cache/zsh/history + +# Basic auto/tab complete: +autoload -U compinit +zstyle ':completion:*' menu select +zmodload zsh/complist +compinit +_comp_options+=(globdots) # Include hidden files. + +# vi mode +bindkey -v +export KEYTIMEOUT=1 + +# Use vim keys in tab complete menu: +bindkey -M menuselect 'h' vi-backward-char +bindkey -M menuselect 'k' vi-up-line-or-history +bindkey -M menuselect 'l' vi-forward-char +bindkey -M menuselect 'j' vi-down-line-or-history +bindkey -v '^?' backward-delete-char + +# Change cursor shape for different vi modes. +function zle-keymap-select { + if [[ ${KEYMAP} == vicmd ]] || + [[ $1 = 'block' ]]; then + echo -ne '\e[1 q' + elif [[ ${KEYMAP} == main ]] || + [[ ${KEYMAP} == viins ]] || + [[ ${KEYMAP} = '' ]] || + [[ $1 = 'beam' ]]; then + echo -ne '\e[5 q' + fi +} +zle -N zle-keymap-select +zle-line-init() { + zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere) + echo -ne "\e[5 q" +} +zle -N zle-line-init +echo -ne '\e[5 q' # Use beam shape cursor on startup. +preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt. + +# Use lf to switch directories and bind it to ctrl-o +lfcd () { + tmp="$(mktemp)" + lf -last-dir-path="$tmp" "$@" + if [ -f "$tmp" ]; then + dir="$(cat "$tmp")" + rm -f "$tmp" + [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir" + fi +} +bindkey -s '^o' 'lfcd\n' + +# Edit line in vim with ctrl-e: +autoload edit-command-line; zle -N edit-command-line +bindkey '^e' edit-command-line + +# Load aliases and shortcuts if existent. +[ -f "$HOME/.config/shortcutrc" ] && source "$HOME/.config/shortcutrc" +[ -f "$HOME/.config/aliasrc" ] && source "$HOME/.config/aliasrc" + +#my additions +unsetopt nomatch + + +#source haskell file if it exists +[ -f "$HOME/.ghcup/env" ] && source "$HOME/.ghcup/env" + +if ! [ -f $HOME/.local/share/zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]; then + mkdir -p $HOME/.local/share/zsh/ + git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $HOME/.local/share/zsh/zsh-syntax-highlighting +fi + +# prompt stuff +pfetch + +#if [ -f "/usr/bin/starship" ]; then +# eval "$(starship init zsh)" +#fi + +# Load zsh-syntax-highlighting; should be last. +source $HOME/.local/share/zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 2>/dev/null diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cb28dcc --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +.local/share/ +media/ +docs/ +dl/ +.cache/ +.mozilla/ +.trash/ +.dbus/ +.pki/ +devel/ +go/ +.cfg/ +.config/surf/ +.config/transmission-daemon/ +.config/pulse/ +.steam/ +.steampath +.steampid +.xinitrc +.zprofile +.config/color +.config/color.bak +.config/wall diff --git a/.local/LICENSE b/.local/LICENSE new file mode 100644 index 0000000..2b327fa --- /dev/null +++ b/.local/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Alex Hubbard + +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. diff --git a/.local/README.md b/.local/README.md new file mode 100644 index 0000000..43434c5 --- /dev/null +++ b/.local/README.md @@ -0,0 +1,157 @@ +# My Dotfiles + +This repo contains my config files for the programs I use in my linux setup, +as well as any scripts I write for those programs. + +Installers are located in ~/.local/installers/ to automate installation. +Currently available for Void Linux and Artix Linux. +in the future. + +## Overview + +### Applications used + +- Window Manager - dwm +- Terminal Emulator - st +- App Launcher - dmenu +- File Browser - lf + +## Installation + +Install git + +and then clone this repo + +`$ cd ~` + +`$ git clone --bare https://gitlab.com/ahub/dotfiles.git $HOME/.cfg` + +ensure the config alias is defined + +`alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'` + +then checkout contents of bare repository to populate your home directory. + +`config checkout` + +for more info read [this article](https://www.atlassian.com/git/tutorials/dotfiles) + + +finally run the install script in ~/.local/installers/ + +`bash ~/.local/installers/void-install.sh` + +## Post Install + +### Change Mirrors for Void +(NOTE: this is done for you in the void-install.sh script now.) +Default mirrors for void are located in Europe. Recommend changing them to a closer location. +A list of mirrors can be found at voidlinux.org/download at the bottom of the page. +Follow instructions on voids documentation at docs.voidlinux.org to change to desired mirror. + +### Mount Secondary Drives + +Modify /etc/fstab to add any secondary drives. Example entry can be seen below. Replace UUID value with UUID of the device you wish to mount, and the \ entry with the directory you wish to mount to. **Ensure the directory you are mounting to exists**. If the directory does not exist, the system will likely have issues booting. + +To see a list of devices and their UUIDs, run: `$ blkid`. Recommend using UUID instead of device files such as /dev/sda1 because drives may not always be mounted to the same /dev/ file. For more information read [the arch wiki entry](https://wiki.archlinux.org/index.php/Fstab). + +``` +# +UUID=b7d683d4-9337-433b-8d33-1035ef7dbcdf /home/user/HDD ext4 defaults 0 2 +``` + +To mount a NAS drive at boot: +``` +//IP_ADDRESS/storage/ /path/to/mount/dir/ cifs workgroup=WORKGROUP,users,auto,username=USERNAME,password=PASSWORD 0 0 +``` + +### Enable Apparmor +Add `apparmor=1` and `security=apparmor` to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub. + +Also edit /etc/default/apparmor and add line: + +`APPARMOR=complain` or `APPARMOR=enforce` + +Then generate grub config: + +`$ sudo grub-mkconfig -o /boot/grub/grub.cfg` + + + + +## Notes + +### wifi +ensure you enabled the wpa_supplicant service with: + +`$ sudo ln -s /etc/sv/wpa_supplicant /var/service` + +if you know the name of the network you wish to connect to: + + 1. change to root user: + `$ su` + + 2. run command: +`$ wpa_supplicant -B -i INTERFACE -c <(wpa_passphrase SSID PASSWORD)` + + INTERFACE = name of wifi interface, likey: wlp3s0 or wlan0 + + SSID = name of the network + + PASSWORD = the password of the network + + use command: + `$ ip link show` + + to get a list of network interfaces available + + + 3. If you can now connect to the internet then you can add this network to your config file so that your computer will automatically connect to it. to do this run: + +`sudo sh -c 'wpa_passphrase SSID PASSWORD >> /etc/wpa_supplicant/wpa_supplicant.conf'` + +Your wifi should now work at startup. It may take a moment to connect. this will need to be done for any wifi network you wish to connect to. + +### st +If you have weird issues with st such as a key writing multiple characters, backspace not working etc +try running the following in the st directory (~/devel/repos/st/ if using the installer): + +`$ tic -sx st.info` + +### add locales +uncomment locale(s) you wish to add in /etc/default/libc-locales then run: + +`$ sudo xbps-reconfigure -f glibc-locales` + +### set system fonts +modify alias tags within in ~/.config/fontconfig/fonts.conf + +``` + + FONT TYPE #serif, sans-serif,sans, monospace + NAME OF FONT TO SET TO #NotoSerif,NotoSans, Hack, etc. + +``` + +### modify visudo +To be able to use reboot, poweroff and shutdown without password(needed for sxhkd bindings to work): + +`$ sudo visudo` + +Add this line replacing user_name with your user name + +`user_name ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown` + +### fix low resolution in grub/tty +To get list of available resolutions press c in grub then type `vbeinfo` at the prompt + +Then add line to /etc/default/grub + +`GRUB_GFXPAYLOAD_LINUX=1920x1080x30` + +then generate grub config: + +`$ sudo grub-mkconfig -o /boot/grub/grub.cfg` + + + diff --git a/.local/TODO b/.local/TODO new file mode 100644 index 0000000..fa8a105 --- /dev/null +++ b/.local/TODO @@ -0,0 +1,8 @@ +*update README + +*artix-install.sh + -remove all remaining prompts + -configure grub during install + -create separate configuration script that is distro agnostic, expects specific set of packages + +*fix read/write permission issue during install. Caused issues when logging in with zsh. got errors that I didn't have write permissions on .profile diff --git a/.local/bin/chromium-wayland b/.local/bin/chromium-wayland new file mode 100755 index 0000000..4ed7436 --- /dev/null +++ b/.local/bin/chromium-wayland @@ -0,0 +1,3 @@ +#!/bin/sh +#chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@" +chromium --ozone-platform-hint=auto "$@" diff --git a/.local/bin/jaxx b/.local/bin/jaxx new file mode 100755 index 0000000..8c4ff94 --- /dev/null +++ b/.local/bin/jaxx @@ -0,0 +1,3 @@ +#!/bin/sh +unset GDK_BACKEND +$HOME/.local/appimages/Jaxx\ Liberty-* diff --git a/.local/bin/svlogtail b/.local/bin/svlogtail new file mode 100755 index 0000000..b6ebaeb --- /dev/null +++ b/.local/bin/svlogtail @@ -0,0 +1,54 @@ +#!/bin/sh + +#copied from: https://github.com/void-linux/socklog-void/blob/master/svlogtail + +usage () { + cat <<-'EOF' + svlogtail [-f] [LOG...] - show svlogd logs conveniently + Without arguments, show current logs of all services, uniquely. + With arguments, show all logs of mentioned services + + With -f, follow log output. + EOF +} + +globexist() { + [ -f "$1" ] +} + +IFS=' +' + +fflag=false +if [ "$1" = -f ]; then + shift + fflag=true +fi + +if [ $# = 0 ]; then + cat /var/log/socklog/*/current | sort -u + if $fflag; then + tail -Fq -n0 /var/log/socklog/*/current | uniq + fi +else + old= + cur= + for log; do + case "$log" in + -*) usage; exit 1;; + esac + if [ -d /var/log/socklog/$log ]; then + if globexist /var/log/socklog/$log/*.[us]; then + old="$old$IFS/var/log/socklog/$log/*.[us]" + fi + cur="$cur$IFS/var/log/socklog/$log/current" + else + echo "no logs for $log" 1>&2 + exit 1 + fi + done + cat $old $cur | sort + if $fflag; then + tail -Fq -n0 $cur + fi +fi diff --git a/.local/bin/transadd b/.local/bin/transadd new file mode 100755 index 0000000..9e0269f --- /dev/null +++ b/.local/bin/transadd @@ -0,0 +1,65 @@ +#!/usr/bin/env sh +# script copied from Luke Smith to add a torrent +# removed part of first line that uses i3blocks +# modifications to allow the user to select the download directory using lf +#modifications to interface with remote transmission server + +TRANSMISSION_REMOTE="nagato:9091" + +OPTS="default +lf_select +lf_last" + +DEST="remote +local" + +DEST_OPT="$(echo "$DEST" | bemenu -p "select destination machine: ")" + +if [ "$DEST_OPT" = "local" ]; then + pgrep -x transmission-da > /dev/null || (trans-init && notify-send "Starting transmission daemon..." && sleep 3) +fi + + +OPT="$(echo "$OPTS" | bemenu -p "download to:")" + +if [ "$OPT" = "lf_select" ]; then + if [ ! -f ~/.cache/lf/lastpath ]; then + mkdir -p ~/.cache/lf/ + touch ~/.cache/lf/lastpath + echo "~" > ~/.cache/lf/lastpath + fi + $TERMINAL -e lf -last-dir-path ~/.cache/lf/lastpath "$(cat ~/.cache/lf/lastpath)" + SEL="$(cat ~/.cache/lf/lastpath)" + +elif [ "$OPT" = "lf_last" ]; then + SEL="$(cat ~/.cache/lf/lastpath)" + +elif [ "$OPT" = "default" ]; then + SEL="" + +else + SEL="" + notify-send "ERROR" + exit + +fi + + +if [ "$TRANSMISSION_REMOTE" ]; then + SEL_REM="$(echo "$SEL" | sed 's/^\/media\/nagato/\/media\/storage/g')" +fi + + +if [ "$DEST_OPT" = "remote" ]; then + if [ "$SEL_REM" ]; then + transmission-remote $TRANSMISSION_REMOTE -a "$@" -w "$SEL_REM" && notify-send " Transmission-daemon" "Torrent added to $SEL" + else + transmission-remote $TRANSMISSION_REMOTE -a "$@" && notify-send " Transmission-daemon" "Torrent added." + fi +else + if [ -d "$SEL" ]; then + transmission-remote -a "$@" -w "$SEL" && notify-send " Transmission-daemon" "Torrent added to $SEL" + else + transmission-remote -a "$@" && notify-send " Transmission-daemon" "Torrent added." + fi +fi diff --git a/.local/bin/unrar b/.local/bin/unrar new file mode 100755 index 0000000..88ca30c --- /dev/null +++ b/.local/bin/unrar @@ -0,0 +1,30 @@ +#!/bin/sh +# script acts as a basic wrapper for 7z for extracting .rar files +# requires p7zip-rar , p7zip with rar archive support +# not everything is implemented just x and l flags +# $1 -> flag +# $2 -> archive file name ex: archive.rar +# $3 -> (optional) directory to extract to + + +if [ "$1" = "x" ]; then + if [ "$(echo "$2" | grep ".rar" )" ]; then + if [ -d "$3" ]; then + 7z x "$2" -o"$3" + else + 7z x "$2" + fi + fi + exit +fi + +if [ "$1" = "l" ]; then + 7z l "$2" + exit +fi + +echo "This is a script that serves as a wrapper for 7z to use unrar commands." +echo "" +echo "unrar x file.rar --> extracts file to current directory" +echo "unrar x file.rar /path/to/directory/ --> extracts file to specified directory" +echo "unrar l file.rar --> prints out contents of file to terminal" diff --git a/.local/init/init.sh b/.local/init/init.sh new file mode 100755 index 0000000..8dda05d --- /dev/null +++ b/.local/init/init.sh @@ -0,0 +1,33 @@ +#!/bin/sh +#default startup file is defined, redefinable by second argument +FILENAME="$HOME/.local/init/startup" +[ -f "$2" ] && FILENAME="$1" + +close() { + while read CMD + do + echo "killing: $CMD" + pkill $CMD + done < "$FILENAME" +} + +init() { + while read CMD + do + if [ -z "$(pgrep "$CMD")" ]; then + echo "starting: $CMD" + $CMD & + fi + done < "$FILENAME" + +} + + +if [ "$1" = "-i" ]; then + init +elif [ "$1" = "-c" ]; then + close + swaymsg exit +else + close +fi diff --git a/.local/init/startup b/.local/init/startup new file mode 100644 index 0000000..6df8f86 --- /dev/null +++ b/.local/init/startup @@ -0,0 +1,5 @@ +mako +gammastep +devmon +pipewire.sh +mpd diff --git a/.local/init/wms/awesome.sh b/.local/init/wms/awesome.sh new file mode 100755 index 0000000..518f8de --- /dev/null +++ b/.local/init/wms/awesome.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +xrdb ~/.config/Xresources + +#put any device specific initialization in ~/.init.sh +[ -f "$HOME"/.init.sh ] && sh "$HOME"/.init.sh + +exec dbus-launch --exit-with-session awesome diff --git a/.local/init/wms/bspwm.sh b/.local/init/wms/bspwm.sh new file mode 100755 index 0000000..c8eb3f2 --- /dev/null +++ b/.local/init/wms/bspwm.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh +xrdb ~/.config/.Xresources + +sxhkd -c ~/.config/sxhkd/sxhkdrc_bspwm & +dunst & +picom & +redshift & +sh ~/.fehbg & +devmon --mount-options "exec,nosuid,nodev,noatime" & +[ -z "$(pgrep scrond)" ] && scrond -f ~/.config/crontab & +[ -z "$(pgrep transmission)" ] && sh ~/.local/scripts/trans-init & +exec bspwm diff --git a/.local/init/wms/dwm.sh b/.local/init/wms/dwm.sh new file mode 100755 index 0000000..bfa9297 --- /dev/null +++ b/.local/init/wms/dwm.sh @@ -0,0 +1,13 @@ +#!/bin/sh +xrdb ~/.config/Xresources + +#put any device specific initialization in ~/init.sh +[ -f "$HOME"/.init.sh ] && sh "$HOME"/.init.sh + +#[ "$(pgrep pipewire)" ] && /usr/bin/pipewire & +#[ "$(pgrep pipewire-pulse)" ] && /usr/bin/pipewire-pulse & +#sleep 1 +#[ "$(pgrep pipewire-media-session)" ] && /usr/bin/pipewire-media-session & + +#gentoo wiki recommended this for logind +exec dbus-launch --exit-with-session dwm diff --git a/.local/init/wms/gnome.sh b/.local/init/wms/gnome.sh new file mode 100755 index 0000000..7f39ade --- /dev/null +++ b/.local/init/wms/gnome.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh +xrdb ~/.config/.Xresources + +sxhkd & +#dunst & +#compton & +#redshift & +#sh ~/.fehbg & +devmon --mount-options "exec,nosuid,nodev,noatime" & +#sh ~/.local/scripts/dwm-bar.sh -l & +scrond -f ~/.config/crontab & +exec gnome-session diff --git a/.local/init/wms/river.sh b/.local/init/wms/river.sh new file mode 100755 index 0000000..01645bb --- /dev/null +++ b/.local/init/wms/river.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +SERVICES=" +waybar +pipewire +pipewire-pulse +pipewire-media-session +wlsunset -t 3000 -l 34.0 -L -86.0 +devmon +mpd +mako +" + +echo "$SERVICES" | while read -r i +do + + if [ "$i" = "pipewire-media-session" ]; then + [ -z "$(pgrep "pipewire-media" )" ] && "$i" & + else + ! [ "$(pgrep "$i" )" ] && $i 2> /dev/null 1> /dev/null & + fi + + +done + +swaybg --image ~/.config/wall & + +swayidle -w \ + timeout 300 'swaylock -f -c 000000' \ + timeout 600 'swaymsg "output * dpms off"' \ + resume 'swaymsg "output * dpms on"' \ + before-sleep 'swaylock -f -c 000000' & + +# ! [ "$( pgrep sxhkd)" ] && sxhkd & + +#wait diff --git a/.local/init/wms/spectrwm.sh b/.local/init/wms/spectrwm.sh new file mode 100755 index 0000000..1900a4c --- /dev/null +++ b/.local/init/wms/spectrwm.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +xrdb ~/.config/Xresources + +#put any device specific initialization in ~/.init.sh +[ -f "$HOME"/.init.sh ] && sh "$HOME"/.init.sh + +exec dbus-launch --exit-with-session spectrwm diff --git a/.local/init/wms/startup.sh b/.local/init/wms/startup.sh new file mode 100755 index 0000000..09f70b8 --- /dev/null +++ b/.local/init/wms/startup.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env sh + +_shutdown() { + pkill sxhkd + pkill tiramisu + pkill picom + pkill redshift + pkill mpd + pkill devmon + kill sleep -P "$(cat ~/.cache/statusbar_pid )" + kill "$(cat ~/.cache/statusbar_pid )" +} + +startup() { + [ "$(pgrep redshift)" ] && _shutdown + + xrdb ~/.config/Xresources + sxhkd & + #dunst & + sh ~/.local/scripts/notify.sh & + #picom --backend glx --glx-fshader-win "$(cat ~/.config/picom/grayscale.glsl)" & #make entire display grayscale, comment out picom below if using + picom & + redshift & + mpd & + #xautolock -time 30 -locker slock & + xwallpaper --zoom ~/.config/wall & + devmon & + #[ -z "$(pgrep transmission)" ] && sh ~/.local/scripts/trans-init & + #[ -z "(pgrep scron)" ] && scrond -f ~/.config/crontab & +} + diff --git a/.local/init/wms/xfce.sh b/.local/init/wms/xfce.sh new file mode 100755 index 0000000..ca61acd --- /dev/null +++ b/.local/init/wms/xfce.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env sh +xrdb ~/.config/.Xresources + +sxhkd & +#dunst & +#picom & +redshift & +#sh ~/.fehbg & +devmon --mount-options "exec,nosuid,nodev,noatime" & +#sh ~/.local/scripts/dwm-bar.sh -l & +#scrond -f ~/.config/crontab & +#sh ~/.local/scripts/trans-init & +exec startxfce4 diff --git a/.local/installers/alpine-nas.sh b/.local/installers/alpine-nas.sh new file mode 100644 index 0000000..8d5f81a --- /dev/null +++ b/.local/installers/alpine-nas.sh @@ -0,0 +1,128 @@ +#!/bin/sh + +# go through normal rpi install. select "none" for disk, and select mmcblkp1 for storing configs +# run "lbu commit -d" after install to save changes. +# Then run this script + +echo "input username to add: " +read name + +if [ "$name" ]; then + adduser "$name" + adduser "$name" wheel +fi + +apk add doas + +sed -i 's/# permit/permit/g' /etc/doas.conf + + +#add /home/ to lbu +lbu include /home/ + + +#setup samba server + + #install needed packages + apk add samba + + #make share location + mkdir /media/storage/ + chmod 0777 /media/storage + + + doas mv /etc/samba/smb.conf /etc/samba/smb.conf.orig + + touch /etc/samba/smb.conf + + { + echo "[global]" + echo "workgroup = WORKGROUP" + echo "dos charset = cp850" + echo "unix charset = ISO-8859-1" + echo "force user = $name" # should this be removed? + + echo "[storage]" + echo "browseable = yes" + echo "writeable = yes" + echo "path = /media/storage" + } >> /etc/samba/smb.conf + +echo "Enter samba password for this user. (should be the same as user password entered earlier)" +smbpasswd -a "$name" + +rc-update add samba +rc-service samba start + +lbu include /var/lib/samba/ #add dir where samba user info is stored + +lbu commit -d + +echo "mount drives at /media/storage/ to be seen remotely" + +#transmission setup +echo "uncomment community repository in the file about to be opened in vi" +sleep 10 +vi /etc/apk/repositories + +#install transmission +apk add transmission-daemon transmission-daemon-openrc + +rc-update add transmission-daemon +rc-service transmission-daemon start #start transmission once to setup config file + +#TODO add way to modify transmission config automatically after this +#stop transmission +#sed find/replace for options below +#start transmission + +#add the hostname of the rpi to "rpc-host-whitelist" entry in file /var/lib/transmission/config/settings.json + +#add the ip address of your machine to "rpc-whitelist" entry in the same file so transmission will allow your computer to connect to it. + +#make sure transmission is stopped with "rc-service transmission-daemon stop" before changing file since the file is overwritten when transmission closes + +#change "download-dir" to a directory on the external HDD + +#make sure the drive has correct permissions to allow user transmission in group transmission to create new files/directories +# adduser alex transmission # adds user alex to group transmission +# chown -R alex:transmission /media/storage/Toshiba_HDD/ #makes entire drive mounted at /media/Toshiba_HDD owned by user alex in group transmission +# chmod -R 0777 /media/storage/Toshiba_HDD/ #recursively give correct read/write permissions on files in drive + +#you can connect to transmission daemon using tremc -c @nagato:9091 or by opening nagato:9091 in a browser + + +#setup ufw firewall + +apk add ufw + +ufw default deny incoming +ufw default allow outgoing +ufw allow https +ufw allow ssh + +ufw allow 56881:56889/tcp #enable transmission ports + + ufw allow 9091/tcp #allow transmission clients access + + ufw allow transmission + + ufw allow cifs + ufw allow nfs + +#may be needed for samba +#ufw allow 137:138/udp +#ufw allow 139/tcp +#ufw allow 445/tcp + +ufw enable +rc-update add ufw +rc-service ufw start + + +#add haveged for faster boot time +apk update +apk add haveged +rc-update add haveged boot +rc-service haveged start +lbu commit -d diff --git a/.local/installers/alpine_install.sh b/.local/installers/alpine_install.sh new file mode 100644 index 0000000..f96005c --- /dev/null +++ b/.local/installers/alpine_install.sh @@ -0,0 +1,81 @@ +sudo setup-xorg-base +sudo apk add neovim +sudo ln -s /usr/bin/nvim /usr/bin/vim +sudo apk add git make gcc g++ libx11-dev libxft-dev libxinerama-dev ncurses dbus-x11 adwaita-gtk2-theme adwaita-icon-theme ttf-dejavu +sudo apk add webkit2gtk-dev +sudo apk add ncurses-dev +sudo apk add sxhkd dunst picom redshift mpd mpc ncmpcpp xautolock feh udevil +sudo apk add xrandr xclip +sudo apk add xf86-video-intel +sudo apk add sxiv +sudo apk add zip unzip p7zip unrar +sudo apk add font-noto-cjk +sudo apk add lynx + +sudo apk add py3-pip clang +pip3 install --user pynvim + +sudo apk add transmission transmission-cli transmission-daemon + +sudo apk add chromium + +sudo apk add alsa-utils pulseaudio pulseaudio-blues pulseaudio-alsa alsa-plugins-pulse pulsemixer + +sudo apk add mpv youtube-dl + +sudo apk add man-db +sudo apk add docs + +sudo apk add zathura zathra-pdf-mupdf +sudo apk add libxrandr-dev +sudo apk add slock +sudo apk add exa + +sudo apk add wireless-tools +#sudo apk add wpa_supplicant wpa_supplicant-openrc +sudo apk add iwd iwd-openrc + +sudo rc-update add iwd boot +sudo apk add xdg-utils +sudo apk add file +sudo apk add highlight + +#add zathura-cb +sudo apk add libarchive libarchive-dev meson +sudo apk add zathura-dev + +git clone https://github.com/pwmt/zathura-cb.git ~/devel/repos/zathura-cb +cd ~/devel/repos/zathura-cb +mkdir build +cd build +meson .. +sudo meson install + +#install straw-viewer +sudo apk add perl-utils perl-module-build +sudo apk add perl-lwp-protocol-https perl-lwp-useragent-determined +perl ./Build.pl + + +git clone https://github.com/trizen/straw-viewer.git ~/devel/repos/straw-viewer +cd ~/devel/repos/straw-viewer +perl Build.pl +./Build.pl installdeps +sudo ./Build.pl install + +sudo ln -s /usr/bin/youtube-dl /bin/youtube-dl +sudo ln -s /usr/bin/mpv /bin/mpv + + +sudo apk add bluez pulseaudio-bluez +sudo rc-update add bluetooth +sudo rc-service bluetooth start + +#install viu +sudo apk add cargo +cargo install viu + +sudo apk add ffmpegthumbnailer + +#flatpak +sudo apk add xdg-desktop-portal xdg-desktop-portal-gtk xdg-user-dirs diff --git a/.local/installers/artix-install.sh b/.local/installers/artix-install.sh new file mode 100755 index 0000000..f305d37 --- /dev/null +++ b/.local/installers/artix-install.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +echo " install.sh" +echo " comment/uncomment sections to install desired programs." +echo " most scripts will assume repo-enable.sh has been run" +echo "" +echo " press return to begin installation. crtl + c to cancel" +read input + +##################################################################### +./artix/repo-enable.sh +./artix/config.sh +./artix/devel.sh +./artix/gaming.sh +./artix/runit-config.sh +./artix/wireless.sh + +sudo sh -c 'pacman -S - < artix/pkgs/base.txt' +sudo sh -c 'pacman -S - < artix/pkgs/user.txt' +sudo sh -c 'pacman -S - < artix/pkgs/wm.txt' +sudo sh -c 'yay -S - < artix/pkgs/aur.txt' + + +#uncomment appropriate line for cpu type +sudo pacman -S amd-ucode +#sudo pacman -S intel-ucode + +##################################################################### + +sudo mkinitcpio -P #rebuild kernel +sudo grub-mkconfig -o /boot/grub/grub.cfg #update grub + + +echo "installation finished." diff --git a/.local/installers/artix/config.sh b/.local/installers/artix/config.sh new file mode 100755 index 0000000..6a0c92d --- /dev/null +++ b/.local/installers/artix/config.sh @@ -0,0 +1,100 @@ +#!/bin/sh +mkdir ~/docs/ +mkdir ~/dl/ +mkdir ~/media/ +mkdir -p ~/.local/share/gnupg/ +mkdir -p ~/.config/mpd/playlists +mkdir -p ~/.local/share/desktop + +if [ "$UFW_CONFIG" ]; then + sudo ufw default deny incoming + sudo ufw default allow outgoing + sudo ufw allow http + sudo ufw allow https + #sudo ufw allow ssh + sudo ufw allow ntp + sudo ufw allow 67:68/tcp + sudo ufw allow 53 + + #allow torrent client traffic + sudo ufw allow 56881:56889/tcp + + #rules to allow steam + sudo ufw allow 27000:27036/udp + sudo ufw allow 27036:27037/tcp + sudo ufw allow 4380/udp + + sudo ufw enable +fi + + +#install zsh shell +chsh -s /bin/zsh "$USER" + +#setup .zprofile and zsh history file +cd ~ || return +ln -s ~/.profile ~/.zprofile +mkdir -p ~/.cache/zsh +touch ~/.cache/zsh/history + + +#replace sudo with doas +echo "installing doas, symlinking to sudo, and UNINSTALLING SUDO. sudo is uninstalled using doas so permissions should be setup right if you are able to uninstall. (y/N)" + +read input +if [ "$input" = "y" ]; then + echo "permit persist $USER as root" >> ~/.cache/doas.conf + sudo cp ~/.cache/doas.conf /etc/doas.conf + rm ~/.cache/doas.conf + doas pacman -R sudo && doas ln -s /bin/doas /bin/sudo #TODO ARCH SPECIFIC +fi + +#set limits for esync +sudo sh -c "echo '$USER hard nofile 524288' >> /etc/security/limits.conf" + +#set limits for monero +sudo sh -c "echo '$USER hard memlock 2048' >> /etc/security/limits.conf" +sudo sh -c "echo '$USER hard memlock 2048' >> /etc/security/limits.conf" + +sudo groupadd nogroup #needed to use slock + +### modify udevil config to add exec to mount options +#sudo sed -i 's/^allowed_options .*$/&, exec/g' /etc/udevil/udevil.conf + +### change dns to opendns for porn blocking +#sudo sh -c 'echo "static domain_name_servers=208.67.222.123 208.67.220.123" >> /etc/dhcpcd.conf' +### change dns to dns.watch, free speech dns +#sudo sh -c 'echo "static domain_name_servers=84.200.69.80 84.200.70.40 2001:1608:10:25::1c04:b12f 2001:1608:10:25::9249:d69b" >> /etc/dhcpcd.conf' + +#fix issue with arduino ide and tiling wms +sudo sh -c 'echo "export _JAVA_AWT_WM_NONREPARENTING=1" >> /etc/profile.d/jre.sh' + +#set console terminal font +sudo sh -c 'echo "FONT=Lat2-Terminus16" >> /etc/vconsole.conf' + +#set grub theme +sudo sed -i 's/#GRUB_COLOR_NORMAL/GRUB_COLOR_NORMAL/g' /etc/default/grub +sudo sed -i 's/#GRUB_COLOR_HIGHLIGHT/GRUB_COLOR_HIGHLIGHT/g' /etc/default/grub + +#symlink vim to neovim +sudo ln -s /bin/nvim /bin/vim + +#download collapse OS +mkdir -p "$HOME"/.local/src/ +cd "$HOME"/.local/src/ +wget http://collapseos.org/files/collapseos-latest.tar.gz +cd - + +#set wallpaper +ln -s ~/media/img/wallpapers/alena-aenami-eclipse-1k.jpg ~/.config/wall + +#link Xresources for xwayland +ln -s ~/.config/Xresources ~/.Xdefaults + +#set /tmp to tmpfs +sudo sh -c 'echo "tmpfs /tmp tmpfs rw,nodev,nosuid,size=2G 0 0" >> /etc/fstab' + + + +#install local git repos +sh ~/.local/scripts/install.sh add-repos ~/.local/installers/repos.txt diff --git a/.local/installers/artix/devel.sh b/.local/installers/artix/devel.sh new file mode 100755 index 0000000..d028270 --- /dev/null +++ b/.local/installers/artix/devel.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +echo "install Haskell? (y/N)?" +read -r input +if [ "$input" = 'y' ] || [ "$input" = 'Y' ]; then + sudo pacman -S --noconfirm ghc cabal-install stack +fi + +echo "install virt-manager?(y/N)" +read -r input +if [ "$input" = "y" ] || [ "$input" = "Y" ]; then + sudo pacman -S --noconfirm sudo pacman -S libvirt qemu virt-manager lxsession + sudo pacman -S --noconfirm gst-plugins-good libvirt-runit + + #TODO move this to runit_setup + sudo usermod -G libvirt -a "$USER" +fi diff --git a/.local/installers/artix/gaming.sh b/.local/installers/artix/gaming.sh new file mode 100755 index 0000000..48ab1a8 --- /dev/null +++ b/.local/installers/artix/gaming.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +help() { + echo " \$1 -> select the GPU type: --nvidia, --amd, or --intel." + echo " \$2 -> if -R, will uninstall gaming programs" +} + +[ "$1" = "--nvidia" ] && NVIDIA_GPU="TRUE" +[ "$1" = "--amd" ] && AMD_GPU="TRUE" +[ "$1" = "--intel" ] && INTEL_GPU="TRUE" + +CMD=" -S --noconfirm " + + +[ "$2" = "-R" ] && CMD=" -Rs " + + +[ -z "$(grep "^\[lib32" /etc/pacman.conf)" ] && [ -z "$NVIDIA_GPU" ] && [ -z "$AMD_GPU" ] && [ -z "$INTEL_GPU" ] && help && exit + + [ "$NVIDIA_GPU" ] && sudo pacman "$CMD" nvidia-utils lib32-nvidia-utils + [ "$AMD_GPU" ] && sudo pacman "$CMD" vulkan-radeon lib32-vulkan-radeon + [ "$INTEL_GPU" ] && sudo pacman "$CMD" vulkan-intel lib32-vulkan-intel + + sudo pacman "$CMD" vulkan-mesa-layers lib32-vulkan-mesa-layers + + sudo pacman "$CMD" wine-staging winetricks + sudo pacman "$CMD" giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils libpulse lib32-libpulse alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo libxcomposite lib32-libxcomposite libxinerama lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs vulkan-icd-loader lib32-vulkan-icd-loader cups samba dosbox + + sudo pacman "$CMD" gamemode lib32-gamemode + sudo pacman "$CMD" lutris steam diff --git a/.local/installers/artix/pkgs/aur.txt b/.local/installers/artix/pkgs/aur.txt new file mode 100644 index 0000000..61886e5 --- /dev/null +++ b/.local/installers/artix/pkgs/aur.txt @@ -0,0 +1,14 @@ +lf +mutt-wizard +htim +jmtpfs +pipe-viewer-git +deb2appimage +tremc-git +dashbinsh +kjv-apocrypha +pfetch +sysrq-enabler +aur/chromium-extension-web-store +aur/chromium-widevine +wlr-randr diff --git a/.local/installers/artix/pkgs/base.txt b/.local/installers/artix/pkgs/base.txt new file mode 100644 index 0000000..59337d3 --- /dev/null +++ b/.local/installers/artix/pkgs/base.txt @@ -0,0 +1,58 @@ +pipewire +pipewire-alsa +pipewire-pulse +pipewire-jack +gst-plugin-pipewire +wireplumber +wireplumber-docs +pulsemixer +pavucontrol +alsa-utils +pamixer +base-devel +pacman-contrib +man-db +freetype2 +apparmor +gst-libav +xdg-utils +xdg-user-dirs +gconf +fuse +python-urwid +btrfs-progs +reiserfsprogs +chrony +bluez +bluez-utils +ufw +wget +curl +zip +unzip +p7zip +dash +mesa +udevil +rsync +cronie +dhcpcd +wpa_supplicant +connman +connman-gtk +imagemagick +ffmpegthumbnailer +highlight +python-pdftotext +viu +python-pywal +noto-fonts +noto-fonts-emoji +noto-fonts-cjk +fakeroot +ufw-runit +cronie-runit +chrony-runit +dhcpcd-runit +connman-runit +socklog diff --git a/.local/installers/artix/pkgs/user.txt b/.local/installers/artix/pkgs/user.txt new file mode 100644 index 0000000..75db30a --- /dev/null +++ b/.local/installers/artix/pkgs/user.txt @@ -0,0 +1,25 @@ +zathura +zathura-cb +zathura-pdf-mupdf +zathura-djvu +youtube-dl +transmission-cli +termdown +neovim +mpd +ncmpcpp +mpc +mpv +opendoas +zsh +lynx +newsboat +python-pip +clang +lxappearance +qt5ct +librewolf +ffmpeg4.4 +ungoogled-chromium +ublock-origin +shellcheck diff --git a/.local/installers/artix/pkgs/wm.txt b/.local/installers/artix/pkgs/wm.txt new file mode 100644 index 0000000..9e2734e --- /dev/null +++ b/.local/installers/artix/pkgs/wm.txt @@ -0,0 +1,14 @@ +sway +swaybg +swayidle +swaylock +waybar +imv +alacritty +bemenu-wayland +gammastep +mako +wl-clipboard +grim +slurp +xorg-xwayland diff --git a/.local/installers/artix/repo-enable.sh b/.local/installers/artix/repo-enable.sh new file mode 100755 index 0000000..9b419fa --- /dev/null +++ b/.local/installers/artix/repo-enable.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +if [ -z "$(grep "^\[lib32" /etc/pacman.conf)" ]; then + echo "lib32 not enabled. Appending lines to /etc/pacman.conf" + sleep 1 + + #TODO lib32 is not found on fresh install, need to modify pacman.conf + sudo sh -c 'echo "[lib32]" >> /etc/pacman.conf' + sudo sh -c 'echo "Include = /etc/pacman.d/mirrorlist" >> /etc/pacman.conf' + sudo sh -c 'echo "" >> /etc/pacman.conf' + + sudo pacman -Sy + +fi + +if [ -z "$(grep "community" /etc/pacman.conf)" ]; then + + #add arch linux repos + sudo pacman -S --noconfirm artix-archlinux-support lib32-artix-archlinux-support + sudo pacman-key --populate archlinux + sudo pacman -Sy + + sudo sh -c 'echo "[community]" >> /etc/pacman.conf' + sudo sh -c 'echo "Include = /etc/pacman.d/mirrorlist-arch" >> /etc/pacman.conf' + sudo sh -c 'echo "" >> /etc/pacman.conf' +fi + +if [ -z "$(grep "extra" /etc/pacman.conf)" ]; then + sudo sh -c 'echo "[extra]" >> /etc/pacman.conf' + sudo sh -c 'echo "Include = /etc/pacman.d/mirrorlist-arch" >> /etc/pacman.conf' + sudo sh -c 'echo "" >> /etc/pacman.conf' +fi + +if [ -z "$(grep "multilib" /etc/pacman.conf)" ]; then + sudo sh -c 'echo "[multilib]" >> /etc/pacman.conf' + sudo sh -c 'echo "Include = /etc/pacman.d/mirrorlist-arch" >> /etc/pacman.conf' +fi + +if [ -z "$(grep "universe" /etc/pacman.conf)" ]; then + sudo sh -c 'echo "[universe]" >> /etc/pacman.conf' + sudo sh -c 'echo "Server = https://universe.artixlinux.org/\$arch" >> /etc/pacman.conf' + sudo sh -c 'echo "Server = https://mirror1.artixlinux.org/universe/\$arch" >> /etc/pacman.conf' + sudo sh -c 'echo "Server = https://mirror.pascalpuffke.de/artix-universe/\$arch" >> /etc/pacman.conf' + sudo sh -c 'echo "Server = https://artixlinux.qontinuum.space:4443/universe/os/" >> /etc/pacman.conf' + sudo sh -c 'echo "Server = https://mirror1.cl.netactuate.com/artix/universe/\$arch" >> /etc/pacman.conf' + sudo sh -c 'echo "" >> /etc/pacman.conf' +fi + +#install yay for aur support + mkdir -p ~/.local/src/ + git clone https://aur.archlinux.org/yay.git ~/.local/src/yay/ + cd ~/.local/src/yay || return + makepkg -si + +#add chaotic aur +#echo "enable chaotic-aur?(y/N)" +#read input +#if [ "$input" = "y" ]; then +# if [ -z "$(grep "chaotic-aur" /etc/pacman.conf)" ]; then +# sudo pacman-key --recv-key FBA220DFC880C036 --keyserver keyserver.ubuntu.com +# sudo pacman-key --lsign-key FBA220DFC880C036 +# sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst' +# sudo sh -c 'echo "[chaotic-aur]" >> /etc/pacman.conf' +# sudo sh -c 'echo "Include = /etc/pacman.d/chaotic-mirrorlist" >> /etc/pacman.conf' +# fi +#fi diff --git a/.local/installers/artix/runit-config.sh b/.local/installers/artix/runit-config.sh new file mode 100755 index 0000000..8087373 --- /dev/null +++ b/.local/installers/artix/runit-config.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +help() { + echo "runit-config.sh [OPTIONS]" + echo " --wireless -> setup wireless services" + echo " -virt-manager -> setup virt-manager services" + echo "" +} + +WIRELESS="" +VIRTMGR="" +for arg in "$@" +do + [ "$arg" = "--wireless" ] && WIRELESS="true" + [ "$arg" = "--virt-manager" ] && VIRTMGR="true" + [ "$arg" = "--help" ] && help && exit +done + + +sudo ln -s /etc/runit/sv/ufw /run/runit/service/ +sudo ln -s /etc/runit/sv/cronie /run/runit/service/ +sudo ln -s /etc/runit/sv/chrony /run/runit/service/ +sudo ln -s /etc/runit/sv/connmand /run/runit/service/ +sudo ln -s /etc/runit/sv/socklog /run/runit/service/ + +if [ "$WIRELESS" ]; then + sudo ln -s /etc/runit/sv/tlp /run/runit/service/ + sudo ln -s /etc/runit/sv/bluetoothd /run/runit/service/ +fi + +if [ "$VIRTMGR" ]; then + sudo ln -s /etc/runit/sv/libvirtd /run/runit/service + sudo ln -s /etc/runit/sv/virtlockd /run/runit/service + sudo ln -s /etc/runit/sv/virtlogd /run/runit/service +fi diff --git a/.local/installers/artix/wireless.sh b/.local/installers/artix/wireless.sh new file mode 100755 index 0000000..8f0a4d1 --- /dev/null +++ b/.local/installers/artix/wireless.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +#install packages +sudo pacman -S --noconfirm wpa_supplicant bluez tlp +sudo pacman -S --noconfirm wpa_supplicant-runit tlp-runit + +#start services +sudo ln -s /etc/runit/sv/tlp /run/runit/service/ +sudo ln -s /etc/runit/sv/bluetoothd /run/runit/service/ diff --git a/.local/installers/install.sh b/.local/installers/install.sh new file mode 100644 index 0000000..3181cb0 --- /dev/null +++ b/.local/installers/install.sh @@ -0,0 +1,11 @@ +#!/bin/sh +#TODO update this to work with new artix-install.sh + +. ~/.local/installers/void.sh + +core +extra +config +distro_specific_config + +sh ~/.local/installers/suckless-install.sh diff --git a/.local/installers/repos.txt b/.local/installers/repos.txt new file mode 100644 index 0000000..5bac35a --- /dev/null +++ b/.local/installers/repos.txt @@ -0,0 +1,2 @@ +https://github.com/aarowill/base16-alacritty.git +https://github.com/rkubosz/base16-sway.git diff --git a/.local/installers/void-install.sh b/.local/installers/void-install.sh new file mode 100755 index 0000000..d335ce4 --- /dev/null +++ b/.local/installers/void-install.sh @@ -0,0 +1,356 @@ +#!/usr/bin/env bash +### INSTALL PROGRAMS FROM REPOS ### + +#update +sudo xbps-install -Suv +sudo xbps-install -S wget curl + +#enable repos +#clear +echo "enable nonfree repo?(y/N)" +read NONFREE +if [ "$NONFREE" = "y" ]; then + sudo xbps-install -Sy void-repo-nonfree +fi + +clear +echo "enable multilib repo?(y/N)" +read MULTILIB +if [ "$MULTILIB" = "y" ]; then + sudo xbps-install -Sy void-repo-multilib +fi + +clear +echo "enable nonfree multilib repo?(y/N)" +read NFMULTILIB +if [ "$NFMULTILIB" == "y" ]; then + sudo xbps-install -Sy void-repo-multilib-nonfree +fi + + +#make directories +mkdir ~/docs/ +mkdir ~/dl/ +mkdir ~/media/ +mkdir -p ~/.local/share/gnupg/ +mkdir -p ~/.config/mpd/playlists +sudo mkdir -p /etc/X11/xorg.conf.d/ + + +### install system programs/libraries ### + +echo "install basic system utilities and libs I use(xorg, devel reqs for suckless, pulseaudio?(y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + +#install xorg +#sudo xbps-install -Sy xorg xterm +sudo xbps-install -Sy xorg-minimal xrdb xsetroot xterm xprop xrandr xclip xkill xautolock + +#sound programs +sudo xbps-install -Sy alsa-utils pulseaudio pulsemixer + +#install system tools +sudo xbps-install -Sy freetype apparmor elogind gst-libav xdg-utils GConf wget curl chrony bluez iwd #ConsoleKit2 + +["$NONFREE" = "y" ] && sudo xbps-install -Sy unrar + +sudo xbps-install -Sy sxiv xwallpaper udevil picom redshift ffmpegthumbnailer sxhkd dunst scron rsync +sudo xbps-install -Sy exa highlight words-en python3-pip #better ls, better text in lf, every english word + +# appimage needed this +sudo xbps-install -Sy dbus-glib #nss startup-notification + +#void stuff +sudo xbps-install -Sy outils void-release-keys #provides signify and void release .pub file to verify iso + +fi + + +#tlp for battery management +clear +echo "install tlp for better battery life?(y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + sudo xbps-install -Sy tlp + sudo ln -s /etc/sv/tlp /var/service +fi + +clear +echo "install and setup ufw firewall? (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then +#install and setup firewall +sudo xbps-install -Sy ufw +sudo ufw enable +sudo ln -s /etc/sv/ufw /var/service + +echo "use my defaults? (deny incoming, allow outgoing, add rules for steam and transmission ) (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then +sudo ufw default deny incoming +sudo ufw default allow outgoing +sudo ufw allow http +sudo ufw allow https +#sudo ufw allow ssh +sudo ufw allow ntp +sudo ufw allow 67:68/tcp +sudo ufw allow 53 + +#allow torrent client traffic +sudo ufw allow 56881:56889/tcp + +#rules to allow steam +sudo ufw allow 27000:27036/udp +sudo ufw allow 27036:27037/tcp +sudo ufw allow 4380/udp + +sudo ufw enable +fi + +fi + +#install nvidia-drivers +clear +echo "install nvidia proprietary drivers? (Y/n)" +read nvidiain + +if [ $nvidiain == 'y' ] || [ $nvidiain == 'Y' ]; then + + sudo xbps-install -Sy void-repo-nonfree void-repo-multilib void-repo-multilib-nonfree + sudo xbps-install -Sy xf86-video-nouveau nvidia nvidia-libs-32bit + sudo xbps-install vulkan-loader vulkan-loader-32bit +fi + + +clear +echo "setup amd graphics drivers?(y/N)" +read amdin + +if [ $amdin == 'y' ] || [ $amdin == 'Y' ]; then +#install amd libraries + sudo xbps-install -Sy xf86-video-amdgpu mesa-vulkan-radeon + sudo xbps-install -Sy radeontop + + sudo mkdir -p /etc/X11/xorg.conf.d/ + sudo ln -s ~/.config/.sysconf/etc/X11/xorg.conf.d/20-amdgpu.conf /etc/X11/xorg.conf.d/ + +fi + +clear +echo "setup intel graphics drivers?(y/N)" +read intelin + +if [ $intelin == 'y' ] || [ $intelin == 'Y' ]; then + sudo xbps-install -Sy xf86-video-intel mesa-dri intel-video-accel + sudo ln -s ~/.config/.sysconf/etc/X11/xorg.conf.d/20-intel.conf /etc/X11/xorg.conf.d + + #to fix issues running steam + #xi -S vulkan-loader vulkan-loader-32bit mesa-dri mesa-dri-32bit + +fi + +sudo xbps-install -Sy vulkan-loader + +[ "$MULTILIB" = "y" ] && sudo xbps-install -Sy vulkan-loader-32bit + +clear +echo "install flatpak and setup flathub?(y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then +#install flatpak and enable flathub +sudo xbps-install -Sy xdg-desktop-portal xdg-desktop-portal-gtk xdg-user-dirs xdg-user-dirs-gtk xdg-utils +sudo xbps-install -Sy flatpak +sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo +fi + +#enable usage statistics +clear +echo "enable usage statistics for Void Linux? (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + sudo xbps-install -Sy PopCorn + sudo ln -s /etc/sv/popcorn /var/service/ +fi + + +#install fish shell +clear +echo "install and use fish shell? (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + sudo xbps-install -Sy fish-shell + chsh -s /usr/bin/fish $USER +fi + +#install zsh shell +clear +echo "install and use zsh? (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + chsh -s /bin/zsh $USER + + + #setup .zprofile and zsh history file + cd ~ + ln -s ~/.profile ~/.zprofile + mkdir -p ~/.cache/zsh + touch ~/.cache/zsh/history + +fi + +###themes and fonts +#most themes are stored in my dotfiles repo +#sudo xbps-install -S nerd-fonts-otf +sudo xbps-install -S noto-fonts-ttf noto-fonts-ttf-extra noto-fonts-cjk font-awesome + + +### install user programs ### + +clear +echo "install my cli programs? (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + +#cli programs to isntall +sudo xbps-install -Sy neovim htop +#pulsemixer pamixer +sudo xbps-install -Sy mpv mpd ncmpcpp mpc #cmus cmus-ffmpeg cava #audio cava -> console audio visualizer for alsa +sudo xbps-install -Sy lf mtm #file browser terminal multiplexor +sudo xbps-install -Sy ImageMagick ffmpegthumbnailer viu #jp2a #for ascii image previews and video thumbnails in lf +sudo xbps-install -Sy zathura zathura-cb zathura-pdf-mupdf #pdfs manga +sudo xbps-install -Sy youtube-dl straw-viewer #download youtube videos +sudo xbps-install -Sy transmission tremc #transmission-remote-cli #torrents +sudo xbps-install -Sy pywal #generate themes from pictures +sudo xbps-install -Sy tealdeer ufetch termdown # misc utils +sudo xbps-install -Sy scrot sfeed sfeed_curses #newsboat +#sudo xbps-install -Sy trackma +#pip install random-username + +fi + +clear +echo "install my gui programs? (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + sudo xbps-install -Sy firefox +fi + +clear +echo "install virt-manager? (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + sudo xbps-install -S libvirt qemu virt-manager lxsession + sudo xbps-install -S gst-plugins-good1 # fixes audio issues + + sudo ln -s /etc/sv/libvirtd /var/service + sudo ln -s /etc/sv/virtlockd /var/service + sudo ln -s /etc/sv/virtlogd /var/service + + sudo usermod -G libvirt -a $USER + sudo usermod -G libvirt -a root +fi + + +clear +echo "install gaming programs(wine lutris steam)? (y/N)" +echo "this will enable nonfree repos" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + sudo xbps-install -Sy void-repo-nonfree void-repo-multilib void-repo-multilib-nonfree + sudo xbps-install -Sy mesa-dri-32bit + sudo xbps-install -Sy wine-32bit wine-gecko wine-mono winetricks protontricks libselinux + sudo xbps-install -Sy lutris steam + sudo xbps-install -Sy libdrm-32bit +fi + +#Haskell +#sudo xbps-install -Sy ghc cabal-install stack +#sudo ln -s /lib/libncurses.so.6.1 /lib/libtinfo.so.6 + +#my devel +#sudo xbps-install -Sy base-devel make gcc gdb + +#sudo xbps-install -Sy lua love luarocks + +#muttwizard +clear +echo "install muttwizard dependencies? (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + sudo xbps-install -Sy neomutt isync msmtp pass urlview lynx notmuch +fi + +### SYSTEM SETUP ### + +### setup services ### +sudo ln -s /etc/sv/dbus /var/service +#sudo ln -s /etc/sv/cgmanager /var/service/ +sudo ln -s /etc/sv/elogind /var/service/ +sudo ln -s /etc/sv/chronyd /var/service/ + +clear +echo "enable wifi with IWD? (use iwctl to setup network) (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + sudo ln -s /etc/sv/iwd /var/service/ +fi + +### set limits.conf for esync +sudo sh -c "echo '$USER hard nofile 524288' >> /etc/security/limits.conf" + + +### modify udevil config to add exec to mount options +sudo sed -i 's/^allowed_options .*$/&, exec/g' /etc/udevil/udevil.conf + +echo "create modified hosts file from someonewhocares.org and change DNS to OpenDNS Family Shield?\n do this at any time by running the ~/scripts/update-hosts script (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + cd ~/.local/scripts/ + ~/.local/scripts/update-hosts + + sudo echo "static domain_name_servers=84.200.69.80 84.200.70.40 2001:1608:10:25::1c04:b12f 2001:1608:10:25::9249:d69b" >> /etc/dhcpcd.conf #dns.watch +fi + + +echo "disable mouse acceleration? (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + sudo ln -s ~/.config/.sysconf/etc/X11/xorg.conf.d/50-mouse-acceleration.conf /etc/X11/xorg.conf.d/ +fi + +#Vim YouCompleteMe deps +sudo xbps-install -S python3-devel + +###suckless-install.sh dependancies +sudo xbps-install -S base-devel make libXft-devel libX11-devel libXinerama-devel patch ncurses-devel + + #surf dependencies +sudo xbps-install -S gtk+-devel webkit2gtk-devel gcr-devel + +sudo xbps-install -S cmake curlpp-devel #for tuitube + + #straw-viewer dependencies +#sudo xbps-install -S perl-Module-Build + +#yacy dependancies +sudo xbps-install -S openjdk8 apache-ant + + +echo "change mirror to alpha.us.voidlinux.org? (y/N)" +read input +if [ $input == 'y' ] || [ $input == 'Y' ]; then + sudo mkdir -p /etc/xbps.d + sudo cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/ + sudo sed -i 's|https://alpha.de.repo.voidlinux.org|https://alpha.us.repo.voidlinux.org|g' /etc/xbps.d/*-repository-*.conf + sudo xbps-install -S +fi + +#install xdeb +mkdir -p ~/devel/repos/ +git clone https://github.com/toluschr/xdeb.git ~/devel/repos +cd ~/devel/repos/xdeb +sudo cp ./xdeb /usr/local/bin + + +sh ~/.local/installers/suckless-install.sh diff --git a/.local/installers/void.sh b/.local/installers/void.sh new file mode 100644 index 0000000..378f0e8 --- /dev/null +++ b/.local/installers/void.sh @@ -0,0 +1,239 @@ +#!/bin/sh + +#core programs always needed +core() { + #Xorg + sudo xbps-install -Sy xorg-minimal xrdb xsetroot xterm xprop xrandr xclip xkill xautolock + + #sound + sudo xbps-install -Sy alsa-utils pulseaudio pulsemixer + + #libs/utils needed by programs used + sudo xbps-install -Sy freetype gst-libav xdg-utils GConf + + #needed for appimages to work + sudo xbps-install -Sy dbus-glib libatomic + + #system utils (provide basic functionality expected from an OS: wifi, bluetooth, etc) + sudo xbps-install -Sy chrony bluez iwd elogind scron ufw zsh + + #cli utilities (cli utilities I use indirectly through scripts etc, some things may not work if these are not installed) + sudo xbps-install -Sy curl rsync + + #archive utilities + sudo xbps-install -Sy zip unzip p7zip p7zip-rar zstd + + #background utilities (background utilities run at startup from .xinitrc + sudo xpbs-install -Sy xwallpaper udevil picom redshift sxhkd + + #suckless dependancies + sudo xbps-install -S base-devel make libXft-devel libX11-devel libXinerama-devel patch ncurses-devel + sudo xbps-install -S gtk+-devel webkit2gtk-devel gcr-devel #surf dependencies + + + #install graphics libraries for amd/intel + sudo xbps-install -Sy xf86-video-amdgpu mesa-vulkan-radeon + sudo xbps-install -Sy xf86-video-intel mesa-dri intel-video-accel + +} + +#extra programs that are usually used, but not necessary (theming, user programs, etc) +extra() { + #lf utilities, provide previews for more filetypes, better previews, etc. + sudo xbps-install -Sy ffmpegthumbnailer highlight viu #ImageMagick jp2a + + #fonts and theming + sudo xbps-install -Sy noto-fonts-ttf noto-fonts-ttf-extra noto-fonts-cjk font-awesome + sudo xbps-install -Sy pywal + + #user cli programs + sudo xbps-install -Sy neovim htop ncmpcpp lf youtube-dl straw-viewer tremc tealdeer termdown sfeed_curses + sudo xbps-install -Sy mpd transmission scrot sfeed + + #user gui programs + sudo xbps-install -Sy mpv firefox + sudo xbps-install -Sy zathura zathura-cb zathura-pdf-mupdf zathura-djvu zathura-ps + + #WINDOW MANAGERS + #spectrwm + echo "install spectrwm and associated programs? (y/N)" + read input + [ "$input" = "y" ] || [ "$input" = "Y" ] && sudo xbps-install -Sy spectrwm xlockmore dmenu alacritty + + #virt-manager programs + sudo xbps-install -Sy libvirt qemu virt-manager lxsession gst-plugins-good1 + + #mutt-wizard dependancies + sudo xbps-install -Sy neomutt isync msmtp pass urlview lynx notmuch + + clear + echo "install flatpak and setup flathub?(y/N)" + read input + if [ $input = 'y' ]; then + #install flatpak and enable flathub + sudo xbps-install -Sy xdg-desktop-portal xdg-desktop-portal-gtk xdg-user-dirs xdg-user-dirs-gtk xdg-utils + sudo xbps-install -Sy flatpak + sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + fi + +} + +nonfree() { + #enable non-free repos + sudo xbps-install -Sy void-repo-nonfree + sudo xbps-install -Sy void-repo-multilib + sudo xbps-install -Sy void-repo-multilib-nonfree + + + #install nvidia-drivers + clear + echo "install nvidia proprietary drivers? (Y/n)" + read nvidiain + if [ $nvidiain = 'y' ]; then + sudo xbps-install -Sy void-repo-nonfree void-repo-multilib void-repo-multilib-nonfree + sudo xbps-install -Sy xf86-video-nouveau nvidia nvidia-libs-32bit + sudo xbps-install vulkan-loader vulkan-loader-32bit + fi + + + + clear + echo "install gaming programs(wine lutris steam)? (y/N)" + echo "this will enable nonfree repos" + read input + if [ $input = 'y' ]; then + sudo xbps-install -Sy void-repo-nonfree void-repo-multilib void-repo-multilib-nonfree + sudo xbps-install -Sy mesa-dri-32bit + sudo xbps-install -Sy wine-32bit wine-gecko wine-mono winetricks protontricks libselinux + sudo xbps-install -Sy lutris steam + sudo xbps-install -Sy libdrm-32bit + fi + +} + +config() { + #make directories + mkdir ~/docs/ + mkdir ~/dl/ + mkdir ~/media/ + mkdir -p ~/.local/share/gnupg/ + mkdir -p ~/.config/pki/nssdb/ + mkdir -p ~/.local/share/pki/nssdb/ + sudo mkdir -p /etc/X11/xorg.conf.d/ + +#setup ufw with my default settings, allow steam and transmission through + sudo ufw default deny incoming + sudo ufw default allow outgoing + sudo ufw allow http + sudo ufw allow https + #sudo ufw allow ssh + sudo ufw allow ntp + sudo ufw allow 67:68/tcp + sudo ufw allow 53 + + #allow torrent client traffic + sudo ufw allow 56881:56889/tcp + + #rules to allow steam + sudo ufw allow 27000:27036/udp + sudo ufw allow 27036:27037/tcp + sudo ufw allow 4380/udp + + sudo ufw enable + + #change shell to zsh, setup .zprofile and zsh history file + cd ~ + ln -s ~/.profile ~/.zprofile + mkdir -p ~/.cache/zsh + touch ~/.cache/zsh/history + chsh -s /bin/zsh $USER + + #disable mouse acceleration + sudo ln -s ~/.config/.sysconf/etc/X11/xorg.conf.d/50-mouse-acceleration.conf /etc/X11/xorg.conf.d/ + + # modify udevil config to add exec to mount options TODO remove? + sudo sed -i 's/^allowed_options .*$/&, exec/g' /etc/udevil/udevil.conf + + # set limits.conf for esync + sudo sh -c "echo '$USER hard nofile 524288' >> /etc/security/limits.conf" + + #setup virt-manager + sudo usermod -G libvirt -a $USER + #sudo usermod -G libvirt -a root #may not be needed + + #set ~/.config/color + sh ~/.local/scripts/set-colors.sh ~/.config/colors/dracula + + +} + +distro_specific_config() { + + sudo xbps-install -Sy outils void-release-keys #provides way to verify install iso + + #enable usage statistics + clear + echo "enable usage statistics for Void Linux? (y/N)" + read input + if [ $input = 'y' ]; then + sudo xbps-install -Sy PopCorn + sudo ln -s /etc/sv/popcorn /var/service/ + fi + + + echo "change mirror to alpha.us.voidlinux.org? (y/N)" + read input + if [ $input = 'y' ]; then + sudo mkdir -p /etc/xbps.d + sudo cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/ + sudo sed -i 's|https://alpha.de.repo.voidlinux.org|https://alpha.us.repo.voidlinux.org|g' /etc/xbps.d/*-repository-*.conf + sudo xbps-install -S + fi + + mkdir -p ~/devel/repos/ + git clone https://github.com/toluschr/xdeb.git ~/devel/repos/xdeb + cd ~/devel/repos/xdeb + sudo cp ./xdeb /usr/local/bin + + + clear + echo "enable wifi with IWD? (use iwctl to setup network) (y/N)" + read input + if [ $input = 'y' ]; then + sudo ln -s /etc/sv/iwd /var/service/ + fi + + #enable virt-manager services + sudo ln -s /etc/sv/libvirtd /var/service + sudo ln -s /etc/sv/virtlockd /var/service + sudo ln -s /etc/sv/virtlogd /var/service + + #enable services + sudo ln -s /etc/sv/dbus /var/service + #sudo ln -s /etc/sv/cgmanager /var/service/ + sudo ln -s /etc/sv/elogind /var/service/ + sudo ln -s /etc/sv/chronyd /var/service/ + +} + +#tools I use for personal programming projects +devel() { + #Haskell + #sudo xbps-install -Sy ghc cabal-install stack + sudo xbps-install -Sy gmp-devel ncurses-libtinfo-libs + + #install ghcup and cabal + curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh + + #install stack + curl -sSL https://get.haskellstack.org/ | sh + + #C/C++ + sudo xbps-install -Sy base-devel gcc gdb + + #Lisp + #sudo xbps-install -Sy clisp + + + +} diff --git a/.local/scripts/add-wifi.sh b/.local/scripts/add-wifi.sh new file mode 100755 index 0000000..e6857a5 --- /dev/null +++ b/.local/scripts/add-wifi.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +if [ "$#" = "2" ]; then +SSID="$1" +PASSWORD="$2" + +sudo sh -c "wpa_passphrase $SSID $PASSWORD >> /etc/wpa_supplicant/wpa_supplicant.conf" + +sudo sv restart dhcpcd +else + echo "$1 = wifi network name (SSID)" + echo "$2 = wifi password" +fi + + diff --git a/.local/scripts/appimages.sh b/.local/scripts/appimages.sh new file mode 100755 index 0000000..63eba2b --- /dev/null +++ b/.local/scripts/appimages.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env sh + +AIDIR="$HOME/.local/appimages" + +if [ $1 ]; then + AIDIR="$1" +fi + +sel=$(ls "$AIDIR" | dmenu -l 5 -p "select AppImage") + +if [ $sel ]; then + sh -c $AIDIR/$sel +fi + diff --git a/.local/scripts/auto-shutdown.sh b/.local/scripts/auto-shutdown.sh new file mode 100755 index 0000000..e27cdb7 --- /dev/null +++ b/.local/scripts/auto-shutdown.sh @@ -0,0 +1,8 @@ +#!/bin/sh +notify-send "auto-shutdown.sh" "System will power off in 30 minutes." +sleep 1500 +notify-send "auto-shutdown.sh" "System will power off in 5 minutes." +sleep 290 +notify-send "auto-shutdown.sh" "Powering off now." +sleep 10 +sudo poweroff diff --git a/.local/scripts/backup.sh b/.local/scripts/backup.sh new file mode 100755 index 0000000..e497b61 --- /dev/null +++ b/.local/scripts/backup.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env sh +BACKUP_LOC="/media/SEAGATE/HOME_BACKUP/" +DIR="$HOME/" +EXCLUDE_CONF="$HOME/.config/rsync-exclude.conf" +INCLUDE_CONF="$HOME/.config/rsync-include.conf" + +EXCL_INCL="--exclude-from=$EXCLUDE_CONF --include-from=$INCLUDE_CONF" + +if [ "$1" = "-r" ]; then + notify-send "backup.sh" "restoring from backup" + rsync -ru $EXCL_INCL "$BACKUP_LOC" "$DIR" +else + + notify-send "backup.sh" "performing backup" + if [ -d $BACKUP_LOC ]; then + rsync -arP --delete $EXCL_INCL "$DIR" "$BACKUP_LOC" + else + notify-send "backup.sh" "backup location not found" + fi + +fi diff --git a/.local/scripts/bemenu-theme.sh b/.local/scripts/bemenu-theme.sh new file mode 100644 index 0000000..977d880 --- /dev/null +++ b/.local/scripts/bemenu-theme.sh @@ -0,0 +1,30 @@ +#!/bin/sh + + + COLOR0="#282936" + COLOR1="#3a3c4e" + COLOR2="#F7CA88" + COLOR3="#626483" + COLOR4="#62d6e8" + COLOR5="#e9e9f4" + COLOR6="#f1f2f8" + COLOR7="#f7f7fb" + COLOR8="#ea51b2" + COLOR9="#b45bcf" +COLOR10="#00f769" +COLOR11="#ebff87" +COLOR12="#a1efe4" +COLOR13="#62d6e8" +COLOR14="#b45bcf" +COLOR15="#00f769" + +WHITE="#ffffff" +BLACK="#000000" + + +BEMENU_OPTS="--nb $COLOR0 --nf $COLOR15 --hb $COLOR0 --hf $COLOR6 --sb $COLOR1 --sf $COLOR6 --tb $COLOR0 --tf $COLOR15 --fb $COLOR0 --ff $WHITE" + +mkdir .config/bemenu/ + +echo "#!/bin/sh" > ~/.config/bemenu/bemenu_opts.sh +echo "export BEMENU_OPTS=\"$BEMENU_OPTS\"" >> ~/.config/bemenu/bemenu_opts.sh diff --git a/.local/scripts/browser.sh b/.local/scripts/browser.sh new file mode 100755 index 0000000..a3b6625 --- /dev/null +++ b/.local/scripts/browser.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env sh + +#if [ -z "$(pgrep librewolf)" ]; then +# WBROWSER=surf +#else +# WBROWSER=chromium-wayland +WBROWSER=librewolf +#fi + + +#OPTS="       Torrent ) +OPTS="Web +Video +YT +Audio +Youtube-dl audio +File +RSS +Torrent" + +rss() { + #sed -i '$d' ~/.config/sfeed/sfeedrc + #FEED_NAME="$(echo "" | bemenu -p "Feed Name: ")" + #echo "feed \"$FEED_NAME\" \"$1\"" >> ~/.config/sfeed/sfeedrc + #echo "}" >> ~/.config/sfeed/sfeedrc + echo "$1" >> ~/.config/newsboat/urls +} + + +ydl() { + OPT="default +select" + + SEL="$( echo "$OPT" | bemenu)" + + LOC="$HOME/media/audio/" + + if [ "$SEL" = "select" ]; then + if [ ! -f ~/.cache/lf/lastpath ]; then + mkdir -p ~/.cache/lf/ + touch ~/.cache/lf/lastpath + echo "~" > ~/.cache/lf/lastpath + fi + $TERMINAL -e lf -last-dir-path ~/.cache/lf/lastpath "$(cat ~/.cache/lf/lastpath)" + LOC="$(cat ~/.cache/lf/lastpath)" + fi + + cd "$LOC" + youtube-dl "$1" -f 140 + sleep 5 + +} + + + +sel() { + SEL="$( echo "$OPTS" | bemenu)" + + [ "$SEL" = "Web" ] && $WBROWSER "$1" && exit + + [ "$SEL" = "Video" ] && mpv "$1" && exit + + [ "$SEL" = "YT" ] && mpv --ytdl-format=18 "$1" && exit + + [ "$SEL" = "Audio" ] && $TERMINAL -e mpv "$1" && exit + + [ "$SEL" = "Youtube-dl audio" ] && ydl "$1" && exit + + [ "$SEL" = "File" ] && cd "$XDG_DOWNLOAD_DIR" && curl -O -L "$1" && exit + + [ "$SEL" = "RSS" ] && rss "$1" && exit + + [ "$SEL" = "Torrent" ] && transadd "$1" && exit + +#$WBROWSER "$1" +} + +if [ -z "$1" ]; then + #$WBROWSER #URL="$( xclip -o | sed 's/$//g')" && sel "$URL" && exit + #$WBROWSER #URL="$(wl-paste)" && sel "$URL" && exit + sel "$(wl-paste)" +else + #echo "$1" >> ~/.cache/log/browsersh.log + sel "$1" +fi diff --git a/.local/scripts/caffeine.sh b/.local/scripts/caffeine.sh new file mode 100755 index 0000000..7991d12 --- /dev/null +++ b/.local/scripts/caffeine.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +if [ "$1" = "on" ]; then + notify-send "caffeine.sh" 'Screen timeout is disabled.' + xset -dpms + xset s off + + pkill xautolock +else + notify-send "caffeine.sh" "Screen timeout is enabled." + xset +dpms + xset s on + + if [ -z "$(pgrep xautolock)" ]; then + xautolock -time 30 -locker slock & + fi +fi diff --git a/.local/scripts/days_since.sh b/.local/scripts/days_since.sh new file mode 100755 index 0000000..b5ed38e --- /dev/null +++ b/.local/scripts/days_since.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +help() { + echo "\$1 -> file to update or compare against" + echo "\$2 -> -u -> update file given by \$1" +} + +! [ -f "$1" ] && touch "$1" + +#Command for ~/.cache/last_fap +if [ "$2" = "-u" ]; then + echo $(date "+%y%m%d %H") >> "$1" +else + + LAST="$( awk 'END{print $1}' < "$1" )" + HOUR="$( awk 'END{print $2}' < "$1" )"".0" + HOUR_NOW="$(date +%H)"".0" + + DAYS=$(( (($(date --date="$(date +%y%m%d)" +%s) - $(date --date="$LAST" +%s) ))/(60*60*24) )) + RET=$(bc <<< "scale=2; $DAYS + (($HOUR_NOW - $HOUR)/24.0)") + + echo "$RET" +fi diff --git a/.local/scripts/dwl-tags.sh b/.local/scripts/dwl-tags.sh new file mode 100755 index 0000000..c5c9391 --- /dev/null +++ b/.local/scripts/dwl-tags.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# Variables + declare output title layout activetags selectedtags + declare -a tags name + readonly fname="$HOME"/.cache/dwltags + + + _cycle() { + tags=( "1" "2" "3" "4" "5" "6" "7" "8" "9" ) + + # Name of tag (optional) + # If there is no name, number are used + # + # Example: + # name=( "" "" "" "Media" ) + # -> return "" "" "" "Media" 5 6 7 8 9) + name=() + + for tag in "${!tags[@]}"; do + mask=$((1</dev/null; then + printf -- '%s\n' "${tag_name}_${tag}_focused|bool|true" + printf -- '%s\n' "title|string|${title}" + else + printf '%s\n' "${tag_name}_${tag}_focused|bool|false" + fi + + if (( "${activetags}" & mask )) 2>/dev/null; then + printf -- '%s\n' "${tag_name}_${tag}_occupied|bool|true" + else + printf -- '%s\n' "${tag_name}_${tag}_occupied|bool|false" + fi + done + + printf -- '%s\n' "layout|string|${layout}" + printf -- '%s\n' "" + + } + + # Call the function here so the tags are displayed at dwl launch + _cycle + + while true; do + + [[ ! -f "${fname}" ]] && printf -- '%s\n' \ + "You need to redirect dwl stdout to ~/.cache/dwltags" >&2 + + inotifywait -qq --event modify "${fname}" + + # Get info from the file + output="$(tail -n4 "${fname}")" + title="$(echo "${output}" | grep title | cut -d ' ' -f 3- )" + #selmon="$(echo "${output}" | grep 'selmon')" + layout="$(echo "${output}" | grep layout | cut -d ' ' -f 3- )" + + # Get the tag bit mask as a decimal + activetags="$(echo "${output}" | grep tags | awk '{print $3}')" + selectedtags="$(echo "${output}" | grep tags | awk '{print $4}')" + + _cycle + + done + + unset -v output title layout activetags selectedtags + unset -v tags name diff --git a/.local/scripts/dwm-bar.sh b/.local/scripts/dwm-bar.sh new file mode 100755 index 0000000..5dd1bb8 --- /dev/null +++ b/.local/scripts/dwm-bar.sh @@ -0,0 +1,164 @@ +#!/bin/sh +#========================================================================= +# This script is used to set the status bar for dwm, or +# other wms that use xsetroot for a status bar. +# +# by default this script will only run once, to run in +# a loop give it the -l flag: ./dwm-bar.sh -l +# +# Requires: pulsemixer, xbps (for sys_updates) +# +# ddate -> creates a date string +# audio -> creates a string representing the state of pulseaudio +# netup -> creates a string for the current network interface and status +# weather -> reads file written by ~/scripts/update-weather.sh to set the weather +# +# update -> calls all the above functions into xsetroot to set status bar +# +# https://gitlab.com/ahub/dotfiles +#======================================================================== + +MAIL_DIR="$HOME/.local/share/mail" + +SEP=" | " + +ddate () { + printf " %s\n" "$(date "+%b %d, %Y ( %I:%M )")" #(%a) +} + + +audio () { + #icon="$(pulsemixer --get-volume | cut -d ' ' -f 1) 🔊" + #[ $(pulsemixer --get-mute) = "1" ] && icon="🔇" + + volstat="$(amixer get Master)" + if [ -n "$(echo "$volstat" | grep "\[off\]")" ]; then + icon="🔇" + else + icon="$(echo "$volstat" | grep -o "\[[0-9]\+%\]" | sed 's/[^0-9]*//g' | sed -n 1p -) 🔊" + fi + + printf "%s\n" "$icon" +} + +nofap_counter() { + DAYS="$(zsh ~/.local/scripts/days_since.sh ~/.cache/last_fap)" + printf "🍆💦💦 $DAYS" +} + +rss() { + rss_cnt=$(sfeed_plain ~/.local/share/sfeed/feeds/* | grep -c "^N" ) + printf "%s \n" "$rss_cnt" +} + +mail() { + #MAIL_DIR="$HOME/.local/share/mail/main/INBOX/new" + #COUNT="$(ls "$MAIL_DIR" | wc -l)" + + COUNT=0 + for MBOX in $(ls "$MAIL_DIR") + do + TMP_DIR="$MAIL_DIR""/$MBOX""/INBOX/new" + COUNT=$((COUNT+$(ls "$TMP_DIR" | wc -l))) + + done + + + icon="$COUNT 📧" + + printf "%s\n" "$icon" + +} + +netup() { + icon="❗" + for iface in $(ls -1 /sys/class/net | sed '/^lo/d') + do + if [ $(cat /sys/class/net/"$iface"/operstate | grep up) ] ; then + if [ "$(echo "$iface" | grep w)" ]; then + icon=" " + # "📡" + else + icon="" #"🌐" + fi + elif [ -z "$icon" ]; then + icon="❗" + fi + done + + printf "%s\n" "$icon" +} + +weather() { + if ! [ -f ~/.cache/wttr ]; then + sh ~/.local/scripts/update-weather.sh + fi + icon="$(cat ~/.cache/wttr)" + + printf "%s\n" "$icon" +} + +#sysupdates() { +# upcnt=$(xbps-install -un | wc -l) +# icon="" +# +# if [ $upcnt -eq 0 ]; then +# icon="" +# else +# icon="$upcnt  " +# fi +# +# printf "%s\n" "$icon" +#} + + +cputemp() { + icon="$(cat /sys/class/thermal/thermal_zone0/temp | sed 's/\(.\)..$/.\1°C/')" + + printf "%s\n" "$icon" +} + +battery() { + status="$(cat /sys/class/power_supply/BAT0/status)" + charge="$(cat /sys/class/power_supply/BAT0/capacity)" + icon="" + if [ "$status" = "Discharging" ]; then + icon="${charge}% 🔋" + elif [ -z "$status" ]; then + icon="🔌" + else + icon="${charge}% 🔌" + fi + + printf "%s\n" "$icon" +} + +crypto() { + icon="$(cat ~/.cache/rate)" + printf "%s\n" "$icon" +} +#transmission() { +#} + +update() { + xsetroot -name " $(crypto)$SEP$(cputemp)$SEP$(battery)$SEP$(netup)$SEP$(audio)$SEP$(rss)$SEP$(weather)$SEP$(ddate) " +} + + +#trap 'exit' 2 +#trap 'exit' 15 +#trap 'exit' 9 +if [ "$1" ] && [ "$1" = "-l" ]; then + echo "$$" > ~/.cache/statusbar_pid + + sh ~/.local/scripts/update-crypto.sh -i & + sh ~/.local/scripts/update-weather.sh -i & + + while true + do + update + sleep 60 + done +else + update +fi diff --git a/.local/scripts/encrypt.sh b/.local/scripts/encrypt.sh new file mode 100755 index 0000000..b13dbf0 --- /dev/null +++ b/.local/scripts/encrypt.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +if [ "$1" = "-e" ];then + + if [ "$2" ]; then + tar -cvzf - "$2" | gpg -c > "$2".tar.gz.gpg + fi + +elif [ "$1" = "-d" ];then + + + if [ "$2" ]; then + gpg -d "$2" | tar -xvzf - + fi + +else + echo " $1 : -e, encrypt $2" + echo " -d, decrypt $2" + echo " $2 : directory or file to encrypt/decrypt" + +fi diff --git a/.local/scripts/fix-wacom.sh b/.local/scripts/fix-wacom.sh new file mode 100755 index 0000000..3e705a2 --- /dev/null +++ b/.local/scripts/fix-wacom.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env sh +xsetwacom set 9 MapToOutput 1920x1080+0+0 diff --git a/.local/scripts/fixscr.sh b/.local/scripts/fixscr.sh new file mode 100755 index 0000000..b1f49ee --- /dev/null +++ b/.local/scripts/fixscr.sh @@ -0,0 +1,80 @@ +#!/bin/sh + +RES="1920x1080" +MON="VGA-1" +LAPTOP="LVDS-1" + + +list_mons() { + wlr-randr | grep -v "^ " | awk '{print $1}' +} + +get_mon() { + echo "$(list_mons)" | bemenu -p "Select monitor: " +} + +#$1 -> monitor to get resolutions of +get_res() { + if [ -z "$1" ]; then + echo "$RES" + else + echo "$(wlr-randr | sed '1,/VGA-1/d' | sed '1,/[0-9]/d' | awk '{print $1}')" | bemenu + fi +} + +laptop_only() { + wlr-randr --output VGA-1 --off #TODO only needed because my thinkpad has an issue, remove when no longer needed + wlr-randr --output "$LAPTOP" --on +} + +#$1 -> monitor +#$2 -> resolution +monitor_only() { + MON="$1" + RES="$2" + + echo "$MON $RES" >> fixscrsh.log + + [ -z "$1" ] && MON="$(get_mon)" + [ -z "$2" ] && RES="$(get_res "$MON")" + + wlr-randr --output "$LAPTOP" --off + wlr-randr --output "$MON" --on --mode "$RES" +} + +span() { + MONS="$(list_mons)" + for i in $MONS + do + wlr-randr --output "$i" --on + done +} + +menu() { +OPTS="laptop_only\nmonitor_only\nmirror\nspan\nquit" + + SEL="$(echo "$OPTS" | bemenu)" + + [ "$SEL" = "laptop_only" ] && laptop_only + [ "$SEL" = "monitor_only" ] && monitor_only + [ "$SEL" = "span" ] && span +} + +help() { + echo "Usage: ./fixscr.sh" + echo " --menu => show bemenu prompts to select monitor configuration" + echo " --laptop-only => enable only laptop" + echo " --monitor-only [MONITOR] [RESOLUTION] => enable only external monitor" + echo " --help => show this help prompt" +} + +[ "$2" ] && MON="$2" +[ "$3" ] && RES="$3" + +if [ "$1" = "--menu" ]; then + menu +else + [ "$1" = "--monitor-only" ] && monitor_only "$MON" "$RES" + [ "$1" = "--laptop-only" ] && laptop_only + [ -z "$1" ] && help +fi diff --git a/.local/scripts/install.sh b/.local/scripts/install.sh new file mode 100755 index 0000000..77720d6 --- /dev/null +++ b/.local/scripts/install.sh @@ -0,0 +1,136 @@ +#!/bin/sh +###SUCKLESS INSTALL### + +INSTALL_DIR="/home/alex/.local/src" + +clone() { + cd "$INSTALL_DIR" || return + if [ "$( echo "$1" | grep -v "^#")" ]; then + git clone "$1" + fi +} + +add_repos() { + mkdir -p $INSTALL_DIR + + if [ -p /dev/stdin ]; then + while IFS= read -r line; do + clone "$line" + done + else + FN="$1" + ! [ -f "$FN" ] && FN= + cat "$1" | + while read -r line; do + clone "$line" + done + fi + + do_all install +} + +update() { + cd "$INSTALL_DIR"/"$1" || return + git pull origin master + #install "$1" +} + +list() { + ls -l "$INSTALL_DIR" | grep -v "total" | rev | cut -d ' ' -f 1 | rev +} + +do_all() { + for i in $(list) + do + $1 "$i" + done +} + +uninstall() { + cd "$INSTALL_DIR"/"$1" || return + case "$1" in + tiramisu*) + sudo rm /usr/local/bin/tiramisu + ;; + pfetch*) + sudo rm /usr/local/bin/pfetch + ;; + yacy_search_server*) + echo "ADD UNINSTALL FUNCTIONALITY FOR THIS REPO" + ;; + pipe-viewer* | straw-viewer*) + sudo ./Build uninstall #TODO test if this actually works + ;; + mcomix3) + rm "$INSTALL_DIR"/bin/mcomix + rm -rf "$INSTALL_DIR"/share/mcomix/ + rm /usr/share/applications/mcomix.desktop + ;; + *) + sudo make uninstall + ;; + esac +} + +install() { + cd "$INSTALL_DIR"/"$1" || return + case "$1" in + tiramisu*) + make + sudo cp tiramisu /usr/local/bin/ + ;; + pfetch*) + sudo cp pfetch /usr/local/bin/ + ;; + yacy_search_server*) + ant clean all dist + ;; + pipe-viewer* | straw-viewer*) + perl Build.PL + sudo ./Build installdeps + sudo ./Build install + ;; + mcomix3) + DEST_DIR="/usr/local" + mkdir -p "$DEST_DIR"/bin + mkdir -p "$DEST_DIR"/share + + sudo python3 installer.py --srcdir=mcomix --target="$DEST_DIR"/share + sudo ln -s "$DEST_DIR"/share/mcomix/mcomixstarter.py "$DEST_DIR"/bin/mcomix + sudo cp ./mime/mcomix.desktop /usr/share/applications/ + ;; + + tremc) + sudo sh -c 'export DESTDIR="/usr/local" && make install' + ;; + *) + sudo make install + ;; + esac +} + +help() { + echo "add-repos -> add collection of git repos to dir, from list of repos in file specified by \$2" + echo "add-repo -> add one specific repo to be handled by this script specified by \$2" + echo "list -> list all currently tracked repos" + echo "upgrade -> install all repos currently being tracked" + echo "install -> install specified program, should be name of repo seen from output of list" + echo "uninstall -> uninstall specified program, should be name of repo seen from output of list" + echo "update -> pull all repos currently being tracked" + echo "clean -> runs uninstall command on all repos currently being tracked" +} + + +case "$1" in + add-repos) add_repos "$2";; #add collection of git repos to dir, from list of repos in file specified by $2 + add-repo) clone "$2";; #add one specific repo to be handled by this script specified by $2 + list*) list;; #list all currently tracked repos + upgrade) do_all install;; #install all repos currently being tracked to the system + install*) install "$2";; #install specified program, should be name of repo seen from output of "list" + uninstall*) uninstall "$2";; #uninstall specified program, should be name of repo seen from output of "list" + update*) do_all update;; + clean*) do_all uninstall;; #runs uninstall command on all repos currently being tracked + *) help;; + + +esac diff --git a/.local/scripts/notify.sh b/.local/scripts/notify.sh new file mode 100755 index 0000000..b566832 --- /dev/null +++ b/.local/scripts/notify.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +#run at startup in background to get notifications +# put it in .xinitrc as: +# sh -c 'tiramisu | notify.sh' & +# or +# sh ~/.local/scripts/notify.sh & +# +# requires tiramisu and herbe to work. +# https://github.com/Sweets/tiramisu +# https://github.com/dudik/herbe +# +# if input is piped into this script it will source that. +# if the script is run by itself, it will run tiramisu on its own + + +handle() { + case "$line" in + summary*) SUMMARY="$(echo "$line" | cut -f 2 -d ' ' )";; + body*) + BODY="$(echo "$line" | cut -f 2 -d ' ' )" + herbe "$SUMMARY" "$BODY" + ;; + esac +} + +#had issues running this from .xinitrc, putting in a 1 second sleep fixed it +sleep 1 + +SUMMARY="" +BODY="" + +# Check to see if a pipe exists on stdin. +if [ -p /dev/stdin ]; then + while IFS= read -r line; do + handle "$line" + done +else + tiramisu | + while read -r line; do + handle "$line" + done +fi diff --git a/.local/scripts/pipewire.sh b/.local/scripts/pipewire.sh new file mode 100755 index 0000000..4ab80b4 --- /dev/null +++ b/.local/scripts/pipewire.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +#programs to run to initialize pipewire, separated by spaces +PROGS="pipewire pipewire-pulse wireplumber" + +#program to check to see if script is already running, should be one of the above programs +CHK_PROG="wireplumber" + +trap 'kill' 2 +trap 'kill' 15 + +kill() { + for PRG in $PROGS + do + pkill -KILL "$PRG" + sleep 1 + done +} + +if [ -z "$(pgrep $CHK_PROG)" ]; then + + for PRG in $PROGS + do + "$PRG" & + sleep 1 + done + + wait +fi diff --git a/.local/scripts/set-colors.sh b/.local/scripts/set-colors.sh new file mode 100755 index 0000000..48582b9 --- /dev/null +++ b/.local/scripts/set-colors.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env sh + +FN="$HOME/.config/color" +VFN="$HOME/.config/nvim/colors/color.vim" +COLORSDIR="$HOME/.config/colors" + +if [ -z "$1" ]; then + SEL="$(echo "$(ls ~/.config/colors)\n PYWAL" | dmenu)" + [ -z "$SEL" ] && notify-send "set_colors.sh" "Colors not set" && exit + [ "$SEL" = " PYWAL" ] && FILENAME="$HOME/.cache/wal/colors" || FILENAME="$COLORSDIR/$SEL" +else + [ -f "$1" ] && FILENAME="$1" +fi + +mv "$FN" "$FN.bak" +rm "$VFN" +ENDCOLS="FALSE" +#wal -s -t -e -i "$1" + +{ echo "/* color theme set by scripts/set_colors.sh */" + echo "" + echo "generated from: $FILENAME" + echo "" + echo "!terminal colors" +} >> "$FN" + +COUNT=0 +while read -r line; do + [ -z "$line" ] && echo "broke while loop" && ENDCOLS="TRUE" + + if [ "$ENDCOLS" = "TRUE" ]; then + echo "$line" >> "$FN" + else + echo "#define COLOR$COUNT $line" >> "$FN" + COUNT=$((COUNT + 1)) + fi +done < "$FILENAME" + +notify-send "set_colors.sh" "Colors set to $FILENAME" diff --git a/.local/scripts/set-wp.sh b/.local/scripts/set-wp.sh new file mode 100755 index 0000000..8b44f14 --- /dev/null +++ b/.local/scripts/set-wp.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env sh +#sets a random wallpaper using feh from the ~/wallpapers directory + +setwp() { + #wal -n -s -t -e -i "$1" + rm ~/.config/wall + #rm ~/.fehbg + cp "$1" "$HOME/.config/wall" + #convert "$1" -set colorspace Gray -separate -average ~/.config/wall + #xwallpaper --zoom "$HOME/.config/wall" + #feh --bg-scale $HOME/.config/wall +} + + +#TODO convert this to be usable in wayland/sway +#[ "$1" = "-r" ] && WALLP=$(find -L ~/wallpapers/ -iname "*.*" -print | shuf -n 1) && feh --bg-scale "$WALLP" && exit + +#if [ -d "$1" ]; then +# case $1 in +# /*) sel="$(sxiv -o "$1" | sed '$!d')" ;; +# *) sel="$PWD/$(sxiv "$1" -o | sed '$!d')" ;; +# esac +# [ -f "$sel" ] && setwp "$sel" +# +#elif [ -f "$1" ]; then +# #setwp "$PWD/$1" + setwp "$1" +#fi + +if [ -f "$1" ]; then +# #setwp "$PWD/$1" + setwp "$1" +fi + diff --git a/.local/scripts/sleepytime.sh b/.local/scripts/sleepytime.sh new file mode 100755 index 0000000..4d04b7d --- /dev/null +++ b/.local/scripts/sleepytime.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +LOC="$HOME/media/videos/sleeping" +VID="ARTILLERY_ASMR.mp4" +#VID="nofap_music_01.mp4" + +mpv "$LOC"/"$VID" --loop=inf diff --git a/.local/scripts/spectrwm-bar.sh b/.local/scripts/spectrwm-bar.sh new file mode 100755 index 0000000..65268e5 --- /dev/null +++ b/.local/scripts/spectrwm-bar.sh @@ -0,0 +1,46 @@ +#!/bin/sh +# baraction.sh for spectrwm status bar + +## DISK +hdd() { + hdd="$(df -h | grep "/$" | awk '{print $1, $3, $5}')" + echo "$hdd" +} + +## RAM +mem() { + mem=`free | awk '/Mem/ {printf "%dM/%dM\n", $3 / 1024.0, $2 / 1024.0 }'` + echo "$mem" +} + +## CPU +cpu() { + read cpu a b c previdle rest < /proc/stat + prevtotal=$((a+b+c+previdle)) + sleep 0.5 + read cpu a b c idle rest < /proc/stat + total=$((a+b+c+idle)) + cpu=$((100*( (total-prevtotal) - (idle-previdle) ) / (total-prevtotal) )) + echo "CPU: $cpu%" +} + +## VOLUME +vol() { + vol=$(amixer get Master | awk -F'[][]' 'END{ print $4":"$2 }' | sed 's/on://g') + #vol="$(pulsemixer --get-volume | awk '{print $1}')" + + echo "VOL: $vol" +} + +SLEEP_SEC=15 +#loops forever outputting a line every SLEEP_SEC secs +echo "$$" > ~/.cache/statusbar_pid + +# It seems that we are limited to how many characters can be displayed via +# the baraction script output. And the the markup tags count in that limit. +# So I would love to add more functions to this script but it makes the +# echo output too long to display correctly. +while :; do + echo "+@fg=1; +@fn=1;💻+@fn=0; $(cpu) +@fg=0; | +@fg=2; +@fn=1;💾+@fn=0; $(mem) +@fg=0; | +@fg=3; +@fn=1;💿+@fn=0; $(hdd) +@fg=0; | +@fg=4; +@fn=1;🔈+@fn=0; $(vol) +@fg=0; |" + sleep $SLEEP_SEC +done diff --git a/.local/scripts/ss.sh b/.local/scripts/ss.sh new file mode 100755 index 0000000..acfe389 --- /dev/null +++ b/.local/scripts/ss.sh @@ -0,0 +1,77 @@ +#!/bin/sh +#Script wrapper for using grim for screenshots in sway +#commands taken from grim's github README, commands saved below for reference +#requires that sway, grim, jq, and imagemagick are installed + +#for all functions: +# $1 -> filename for output, will be set to - if -clip flag is set +# $2 -> program to pipe grim output to, defaults to cat, is set to wl-copy if -clip is set +# $3 -> seconds to wait before taking screenshot + +ss_all() { + sleep "$3" + grim "$1" | "$2" +} + +ss_mon() { + sleep "$3" + grim -o "$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name')" "$1" | "$2" +} + +ss_win() { + sleep "$3" + grim -g "$(swaymsg -t get_tree | jq -j '.. | select(.type?) | select(.focused).rect | "\(.x),\(.y) \(.width)x\(.height)"')" "$1" | "$2" +} + +ss_sel() { + grim -g "$(slurp && sleep "$3")" "$1" | "$2" +} + +ss_color_pick() { + grim -g "$(slurp -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]' txt:- | "$2" +} + +help() { + echo "ss.sh [OPTIONS]" + echo " -a -> take screenshot of entire display" + echo " -m -> take screenshot of current monitor" + echo " -w -> take screenshot of currently active window" + echo " -s -> take screenshot of selection" + echo " -o FILENAME -> override filename output with given string FILENAME" + echo " --color-picker -> get the current color value of a selected pixel, prints data to stdout" + echo " --clip -> copy image to clipboard instead of writing to file" + echo " --secs SECS -> wait SECS seconds before taking screenshot" + echo " --help -> print this help message" + echo "" +} + +CMD="help" + +FN=$(date +'%s_grim.png') + +SECS="0" + +FN_FLAG="" +SL_FLAG="" + +PIPE_CMD="cat" + +for ARG in "$@" +do + [ "$ARG" = "-a" ] && CMD="ss_all" + [ "$ARG" = "-m" ] && CMD="ss_mon" + [ "$ARG" = "-w" ] && CMD="ss_win" + [ "$ARG" = "-s" ] && CMD="ss_sel" + [ "$ARG" = "--color-picker" ] && CMD="ss_color_pick" + [ "$ARG" = "--clip" ] && FN="-" && PIPE_CMD="wl-copy" + [ "$ARG" = "--help" ] && CMD="help" + + [ "$FN_FLAG" = "1" ] && FN_FLAG="" && FN="$ARG" #turn off FN_FLAG and set FN to argument after -o + [ "$ARG" = "-o" ] && FN_FLAG="1" #flag next argument to be file name + + [ "$SL_FLAG" = "1" ] && SL_FLAG="" && SECS="$ARG" #turn off SL_FLAG and set SECS to argument after -secs + [ "$ARG" = "-secs" ] && SL_FLAG="1" #flag next argument to be SECS + +done + +$CMD "$FN" "$PIPE_CMD" "$SECS" diff --git a/.local/scripts/supdate.sh b/.local/scripts/supdate.sh new file mode 100755 index 0000000..be1ee11 --- /dev/null +++ b/.local/scripts/supdate.sh @@ -0,0 +1,106 @@ +#!/bin/sh +# +# this script will pull updates from the suckless.org website and merge them into +# your local repository. +# +# suckless.org is assumed to be the upstream url, +# if a different url is desired, modify the UPSTREAM_URL variable accordingly + +# This script assumes all suckless repos are in the ~/.local/src/ directory. +# If your repos are in a different location, update the REPO_LOC variable accordingly +# +# These variables can either be modified in the script below directly, +# or defined before calling this script, ex: +# +# export REPO_LOC="https://github.com" +# sh supdate.sh -a dwm +# +# ARGUMENTS USED: +# $1 -> -p = pull updates, -m = merge updates, -a = add upstream branch +# $2 -> name of program to update, one of: dwm, st, dmenu, surf +# + +# HOW TO USE: +# +# dwm is used as an example here, replace "dwm" with any other suckless program name as needed. +# Make sure the name is as it appears in the git url. +# +# On the first time using this script, add a branch to hold the upstream repo for this repository +# +# sh supdate.sh -a dwm +# +# You should first pull any updates to the repository with: +# +# sh supdate.sh -p dwm +# +# That will create a temp branch with master merged with upstream updates. +# Fix any merge conflicts and commit to the temporary updates branch created above. +# Then run merge those updates to master with: +# +# sh supdate.sh -m dwm +# +########################################################################################## + +[ -z "$REPO_LOC" ] && REPO_LOC="$HOME/.local/src" +[ -z "$UPSTREAM_URL" ] && UPSTREAM_URL="https://git.suckless.org" + +pull_updates() { + + if ! [ "$1" = "" ]; then + + cd "$REPO_LOC"/"$1" || return + + git checkout upstream + git remote add upstream "$UPSTREAM_URL"/"$1" + git pull upstream master:upstream + git checkout -b updates + git merge master + + echo "Fix any merge errors here and commit them to branch \"updates\" " + echo "Once that is done, run this script with the -m flag to merge these updates to master." + else + echo "provide name of the program to update, one of: dwm, st, dmenu, surf" + fi +} + +merge_updates() { + + if ! [ "$1" = "" ]; then + + cd "$REPO_LOC"/"$1" || return + + git checkout master + git merge updates + git branch -d updates + + sudo make clean install + fi +} + +add_upstream_branch() { + if ! [ "$1" = "" ]; then + + cd "$REPO_LOC"/"$1" || return + + git checkout -b upstream + git remote add upstream "$UPSTREAM_URL"/"$1" + git fetch --all + git reset --hard upstream/master + fi +} + +help() { + echo "\$1 -> -p = pull updates, -m = merge updates" + echo "\$2 -> name of program to update, one of: dwm, st, dmenu, surf" +} + +if [ "$#" = "2" ]; then + case "$1" in + -p) pull_updates "$2";; + -m) merge_updates "$2";; + -a) add_upstream_branch "$2";; + *) help;; + esac +else + help +fi diff --git a/.local/scripts/surfb b/.local/scripts/surfb new file mode 100755 index 0000000..c81c478 --- /dev/null +++ b/.local/scripts/surfb @@ -0,0 +1,39 @@ +#!/usr/bin/env sh +#======================================================= +#adds bookmark functionality to surf using dmenu +# +# A file in $startdir will be seen as a collection of websites. +# A directory in $startdir is then a collection of those files. +# This script can navigate through directories created in $startdir. +# Press esc to go back a directory. esc at $startdir will close the +# dmenu prompt. +# +# https://github.com/A-Hub/dotfiles +#======================================================= +startdir=$HOME/.local/bmarks +dir=$startdir + +list() +{ + sel=$(ls $dir | dmenu -p "select directory") + if [ ! $sel ]; then + if [ "$dir" != "$startdir" ]; then + dir="$(dirname $dir)" + list + fi + else + if [ -d $dir/$sel ]; then + dir=$dir/$sel + list + else + site=$(cat $dir/$sel | dmenu -l 10 -p "select site") + if [ ! $site ]; then + list + else + $BROWSER $site + fi + fi + fi +} + +list diff --git a/.local/scripts/sway-bar.sh b/.local/scripts/sway-bar.sh new file mode 100755 index 0000000..9a4d557 --- /dev/null +++ b/.local/scripts/sway-bar.sh @@ -0,0 +1,146 @@ +#!/bin/sh +#========================================================================= +# This script is used to set the status bar for dwm, or +# other wms that use xsetroot for a status bar. +# +# by default this script will only run once, to run in +# a loop give it the -l flag: ./dwm-bar.sh -l +# +# Requires: pulsemixer, xbps (for sys_updates) +# +# ddate -> creates a date string +# audio -> creates a string representing the state of pulseaudio +# netup -> creates a string for the current network interface and status +# weather -> reads file written by ~/scripts/update-weather.sh to set the weather +# +# update -> calls all the above functions into xsetroot to set status bar +# +# https://gitlab.com/ahub/dotfiles +#======================================================================== + +MAIL_DIR="$HOME/.local/share/mail" + +SEP=" | " + +ddate () { + printf " %s\n" "$(date "+%b %d, %Y ( %I:%M )")" #(%a) +} + + +audio () { + #volstat="$(amixer get Master)" + # if [ -n "$(echo "$volstat" | grep "\[off\]")" ]; then + # icon="🔇" + # else + # icon="$(echo "$volstat" | grep -o "\[[0-9]\+%\]" | sed 's/[^0-9]*//g' | sed -n 1p -) 🔊" + # fi + + icon="$(pamixer --get-volume) 🔊" + [ "$(pamixer --get-mute)" = "true" ] && icon="🔇" + + printf "%s\n" "$icon" +} + +rss() { + #rss_cnt=$(sfeed_plain ~/.local/share/sfeed/feeds/* | grep -c "^N" ) + rss_cnt="$(newsboat -x print-unread | awk '{print $1}')" + printf "%s \n" "$rss_cnt" +} + +mail() { + #MAIL_DIR="$HOME/.local/share/mail/main/INBOX/new" + #COUNT="$(ls "$MAIL_DIR" | wc -l)" + + COUNT=0 + for MBOX in $(ls "$MAIL_DIR") + do + TMP_DIR="$MAIL_DIR""/$MBOX""/INBOX/new" + COUNT=$((COUNT+$(ls "$TMP_DIR" | wc -l))) + + done + + + icon="$COUNT 📧" + + printf "%s\n" "$icon" + +} + +netup() { + icon="❗" + for iface in $(ls -1 /sys/class/net | sed '/^lo/d') + do + if [ $(cat /sys/class/net/"$iface"/operstate | grep up) ] ; then + if [ "$(echo "$iface" | grep w)" ]; then + icon=" " + else + icon="" + fi + elif [ -z "$icon" ]; then + icon="❗" + fi + done + + printf "%s\n" "$icon" +} + +weather() { + if ! [ -f ~/.cache/wttr ]; then + sh ~/.local/scripts/update-weather.sh + fi + icon="$(cat ~/.cache/wttr)" + + printf "%s\n" "$icon" +} + +cputemp() { + icon="$(cat /sys/class/thermal/thermal_zone0/temp | sed 's/\(.\)..$/.\1°C/')" + + printf "%s\n" "$icon" +} + +battery() { + BATT_DIR="/sys/class/power_supply/BAT0" + if [ -d "$BATT_DIR" ]; then + status="$(cat "$BATT_DIR"/status)" + charge="$(cat "$BATT_DIR"/capacity)" + fi + icon="" + if [ "$status" = "Discharging" ]; then + icon="${charge}% 🔋" + elif [ -z "$status" ]; then + icon="🔌" + else + icon="${charge}% 🔌" + fi + + printf "%s\n" "$icon" +} + +crypto() { + icon="$(cat ~/.cache/rate)" + printf "%s\n" "$icon" +} + +update() { + echo " $(crypto)$SEP$(cputemp)$SEP$(battery)$SEP$(netup)$SEP$(audio)$SEP$(rss)$SEP$(weather)$SEP$(ddate) " +} + + +#trap 'exit' 2 +#trap 'exit' 15 +#trap 'exit' 9 +if [ "$1" ] && [ "$1" = "-l" ]; then + echo "$$" > ~/.cache/statusbar_pid + + #sh ~/.local/scripts/update-crypto.sh -i & + #sh ~/.local/scripts/update-weather.sh -i & + + while true + do + update + sleep 60 + done +else + update +fi diff --git a/.local/scripts/toggle-comp.sh b/.local/scripts/toggle-comp.sh new file mode 100755 index 0000000..a0df435 --- /dev/null +++ b/.local/scripts/toggle-comp.sh @@ -0,0 +1,6 @@ +#!/bin/sh +if [ "$(pgrep picom)" ];then + pkill picom +else + picom & +fi diff --git a/.local/scripts/tordone b/.local/scripts/tordone new file mode 100755 index 0000000..59724fe --- /dev/null +++ b/.local/scripts/tordone @@ -0,0 +1,8 @@ +#!/usr/bin/env sh +# * TR_APP_VERSION +# * TR_TIME_LOCALTIME +# * TR_TORRENT_DIR +# * TR_TORRENT_HASH +# * TR_TORRENT_ID +# * TR_TORRENT_NAME +notify-send "✔️ Transmission-daemon" "$TR_TORRENT_NAME download complete." diff --git a/.local/scripts/trans-init b/.local/scripts/trans-init new file mode 100755 index 0000000..303ad4d --- /dev/null +++ b/.local/scripts/trans-init @@ -0,0 +1,23 @@ +#!/usr/bin/env sh + +#sleep 30 +[ ! -d ~/.cache/transmission ] && mkdir -p ~/.cache/transmission + +while [ ! -f ~/.cache/transmission/bt_blocklists.gz ]; do + sleep 10 + cd ~/.cache/transmission/ + #curl -O -L https://github.com/sahsu/transmission-blocklist/releases/download/1.0.0/blocklist.gz + #curl -O -L https://github.com/sahsu/transmission-blocklist/releases/latest/download/blocklist.gz + curl -O -L https://github.com/Naunter/BT_BlockLists/raw/master/bt_blocklists.gz +done + +gunzip ~/.cache/transmission/bt_blocklists.gz +rm ~/.cache/transmission/bt_blocklists.gz + +if [ -f ~/.config/transmission-daemon/blocklists/bt_blocklists ]; then + rm ~/.config/transmission-daemon/blocklists/* +fi + +mv ~/.cache/transmission/bt_blocklists ~/.config/transmission-daemon/blocklists/ + +[ -z "$(pgrep transmission)" ] && transmission-daemon & diff --git a/.local/scripts/update-crypto.sh b/.local/scripts/update-crypto.sh new file mode 100755 index 0000000..18f3931 --- /dev/null +++ b/.local/scripts/update-crypto.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env sh + +get() { + val="$(curl --connect-timeout 30 "rate.sx/1$1" | sed 's/\(\.[0-9][0-9]\).*$/\1/g')" + + printf "%s: %s\n" "$1" "$val" +} + +[ "$1" = "-i" ] && sleep 10 + + +UPDATE="$(get 'LINK') $(get 'XMR')" + +if [ $(echo $UPDATE | wc -m) -le 30 ]; then + echo "$UPDATE" > ~/.cache/rate +else + echo "❗" > ~/.cache/rate +fi diff --git a/.local/scripts/update-hosts b/.local/scripts/update-hosts new file mode 100755 index 0000000..1f48ee6 --- /dev/null +++ b/.local/scripts/update-hosts @@ -0,0 +1,44 @@ +#!/usr/bin/env sh +#=================== +#TODO: +# + currently making /etc/hosts a symlink to a user owned file to allow script to run w/o sudo, possible security issue. +# +#FLAGS: +# if $1 is -u then update files from internet +# +# ================== + +update() { + mkdir -p ~/.local/share/update_hosts + cd ~/.local/share/update_hosts + + if [ ! -f "./.hosts.orig" ]; then + cp /etc/hosts ./.hosts.orig + fi + + if [ "$1" = "-u" ]; then + + rm ./.swc_hosts + #get someonewhocares.org hosts file + curl https://someonewhocares.org/hosts/hosts -o ./.swc_hosts + + fi + + curl https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/porn/hosts -o ./.sb_hosts + + [ -f "~/.config/blocklist" ] && sed 's/^/127.0.0.1 /g' ~/.config/blocklist > ./blocklist + + if [ -f "./blocklist" ]; then + cat ./.hosts.orig ./.swc_hosts ./.sb_hosts ./blocklist > ./hosts + else + cat ./.hosts.orig ./.swc_hosts ./.sb_hosts > ./hosts + fi + + #cat ./.hosts.orig ./.swc_hosts > ./hosts + + #sudo mv ./hosts /etc/ + [ "$1" = "-u" ] && sudo rm /etc/hosts && sudo ln -s $HOME/.local/share/update_hosts/hosts /etc/ && exit +} + + +update "$1" diff --git a/.local/scripts/update-weather.sh b/.local/scripts/update-weather.sh new file mode 100755 index 0000000..73af7b0 --- /dev/null +++ b/.local/scripts/update-weather.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env sh + +[ "$1" = "-i" ] && sleep 10 + +#UPDATE="$(curl --connect-timeout 30 "wttr.in/Huntsville+Alabama?format=1")" # > ~/.cache/wttr +UPDATE="$(curl --connect-timeout 30 "wttr.in/?format=1")" # > ~/.cache/wttr + +echo $UPDATE | wc -m + +if [ $(echo $UPDATE | wc -m) -le 30 ]; then + echo "$UPDATE" > ~/.cache/wttr + +else + echo "❗" > ~/.cache/wttr + +fi diff --git a/.local/scripts/volchange.sh b/.local/scripts/volchange.sh new file mode 100755 index 0000000..542ad1b --- /dev/null +++ b/.local/scripts/volchange.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +PERC="5" + +refbar() { + pkill sleep -P "$(cat ~/.cache/statusbar_pid )" +} + +inc() { + [ "$1" ] && PERC="$1" + #pulsemixer --change-volume +"$1" && refbar + #amixer sset Master 1%+ && refbar + pamixer -i "$PERC" && refbar +} + +dec() { + [ "$1" ] && PERC="$1" + #pulsemixer --change-volume -"$1" && refbar + #amixer sset Master 1%- && refbar + pamixer -d "$PERC" && refbar +} + +mute() { + #pulsemixer --toggle-mute && refbar + #amixer sset Master toggle && refbar + pamixer -t && refbar + +} + +help() { + echo "-i N -> increment volume by N amount" + echo "-d N -> decrement volume by N amount" + echo "--toggle-mute -> toggle mute sound" +} + +if [ "$1" = "-i" ]; then + inc "$2" +elif [ "$1" = "-d" ]; then + dec "$2" +elif [ "$1" = "--toggle-mute" ]; then + mute +else + help +fi diff --git a/.local/scripts/website_dl.sh b/.local/scripts/website_dl.sh new file mode 100755 index 0000000..681cc22 --- /dev/null +++ b/.local/scripts/website_dl.sh @@ -0,0 +1,2 @@ +#!/bin/sh +wget --mirror --convert-links --adjust-extension --page-requisites --no-parent "$1" diff --git a/.local/scripts/wp-load.sh b/.local/scripts/wp-load.sh new file mode 100755 index 0000000..604f374 --- /dev/null +++ b/.local/scripts/wp-load.sh @@ -0,0 +1,2 @@ +#!/bin/sh +xwallpaper --zoom ~/.config/wall diff --git a/.profile b/.profile new file mode 100644 index 0000000..5878e8b --- /dev/null +++ b/.profile @@ -0,0 +1,92 @@ +#!/usr/bin/env sh + +# Get the aliases and functions +#[ -f $HOME/.bashrc ] && . $HOME/.bashrc + +#Wayland config +BEMENU_CONF="$HOME/.config/bemenu/bemenu_opts.sh" +[ -f "$BEMENU_CONF" ] && . "$BEMENU_CONF" +#End wayland config + + +#export PF_ASCII="artix" #set ascii art for pfetch +# OFF by default: shell editor wm de palette +export PF_INFO="ascii title os kernel uptime pkgs memory shell wm" + +export XCURSOR_THEME=Adwaita + +#make librewolf use wayland +export GDK_BACKEND=wayland +export MOZ_ENABLE_WAYLAND=1 + +#remove things from $HOME +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_CONFIG_DIRS="$HOME/.config" +export XDG_DATA_HOME="$HOME/.local/share" +export XDG_CACHE_HOME="$HOME/.cache" +export XDG_DOCUMENTS_DIR="$HOME/docs" +export XDG_DOWNLOAD_DIR="$HOME/dl" +export XDG_MUSIC_DIR="$HOME/media/audio/music" +export XDG_PICTURES_DIR="$HOME/media/img" +export XDG_VIDEOS_DIR="$HOME/media/video" +export HISTFILE="$XDG_DATA_HOME"/bash/history +#XDG_DESKTOP_DIR="$HOME/Desktop" +#XDG_PUBLICSHARE_DIR="$HOME/Public" +#XDG_TEMPLATES_DIR="$HOME/Templates" + +export ZDOTDIR="$HOME/.config/zsh" +export NOTMUCH_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/notmuch-config" +export GTK2_RC_FILES="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-2.0/gtkrc-2.0" +export WGETRC="${XDG_CONFIG_HOME:-$HOME/.config}/wget/wgetrc" +export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/inputrc" +#export ALSA_CONFIG_PATH="$XDG_CONFIG_HOME/alsa/asoundrc" +export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default" +export STACK_ROOT="$XDG_DATA_HOME"/stack +export PASSWORD_STORE_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/password-store" +export GNUPGHOME="$XDG_DATA_HOME/gnupg" +export CARGO_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/cargo" +export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go" +export ANSIBLE_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/ansible/ansible.cfg" + +#other settings +#export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme. must have qt5-styleplugins installed +export QT_QPA_PLATFORMTHEME="qt5ct" #have QT use qt5ct theme + +export LESSHISTFILE=/dev/null + +#get colored man pages +export LESS_TERMCAP_mb=$'\e[1;32m' +export LESS_TERMCAP_md=$'\e[1;32m' +export LESS_TERMCAP_me=$'\e[0m' +export LESS_TERMCAP_se=$'\e[0m' +export LESS_TERMCAP_so=$'\e[01;33m' +export LESS_TERMCAP_ue=$'\e[0m' +export LESS_TERMCAP_us=$'\e[1;4;31m' + +export MANPAGER=less + +#set preferred programs +export EDITOR=vim +export VISUAL=vim +export BROWSER=browser.sh +export TERMINAL=alacritty + +#sfeed vars +export SFEED_PLUMBER="$BROWSER" +export SFEED_URL_FILE="$HOME/.local/share/sfeed/read" + +#lf icons +. "$HOME"/.config/lf/lf-icons.sh + +# Add ~/.local/bin/ ~/.local/scripts/ and to PATH + export PATH="$HOME/.local/bin:$PATH" + export PATH="$HOME/.local/appimages:$PATH" + export PATH="$HOME/.local/scripts:$PATH" + #export PATH=$GOPATH/bin:$PATH + +export MANPATH="$MANPATH:/usr/local/man/" + +#fix arduino ide issues +export AWT_TOOLKIT=MToolkit + +[ "$(tty)" = /dev/tty1 ] && exec dbus-launch sway