diff --git a/.bash_profile b/.bash_profile
new file mode 100644
index 0000000..d8b17bb
--- /dev/null
+++ b/.bash_profile
@@ -0,0 +1,14 @@
+
+[[ -f ~/.bashrc ]] && . ~/.bashrc
+
+# Bash Profile
+
+export GTK_THEME="Adwaita:dark"
+
+mkdir -p $HOME/.config/environment.d
+echo $PATH >$HOME/.config/environment.d/path.conf
+
+if [ -z "$WAYLAND_DISPLAY" ] && [ -n "$XDG_VTNR" ] && [ "$XDG_VTNR" -eq 1 ] ; then
+ exec sway
+fi
+
diff --git a/.config/alacritty/alacritty.toml b/.config/alacritty/alacritty.toml
index c4cf9ec..bffbc74 100644
--- a/.config/alacritty/alacritty.toml
+++ b/.config/alacritty/alacritty.toml
@@ -1,4 +1,8 @@
+[window]
+title = "Alacritty"
+dynamic_title = false
+
[font]
normal = { family = "Iosevka Nerd Font", style = "Regular" }
size=14
diff --git a/.config/dconf/user b/.config/dconf/user
deleted file mode 100644
index 4275509..0000000
Binary files a/.config/dconf/user and /dev/null differ
diff --git a/.config/dolphinrc b/.config/dolphinrc
new file mode 100644
index 0000000..b033767
--- /dev/null
+++ b/.config/dolphinrc
@@ -0,0 +1,16 @@
+[General]
+Version=202
+ViewPropsTimestamp=2025,11,16,18,10,13.619
+
+[IconsMode]
+PreviewSize=112
+
+[KFileDialog Settings]
+Places Icons Auto-resize=false
+Places Icons Static Size=22
+
+[MainWindow]
+MenuBar=Disabled
+
+[PreviewSettings]
+Plugins=appimagethumbnail,audiothumbnail,glycin-heif,comicbookthumbnail,cursorthumbnail,djvuthumbnail,ebookthumbnail,exrthumbnail,directorythumbnail,heif,imagethumbnail,glycin-image-rs,jpegthumbnail,glycin-jxl,kraorathumbnail,windowsexethumbnail,windowsimagethumbnail,opendocumentthumbnail,mypaint-ora,glycin-svg,svgthumbnail,ffmpegthumbs
diff --git a/.config/environment.d/path.conf b/.config/environment.d/path.conf
index 0927afd..14b0670 100644
--- a/.config/environment.d/path.conf
+++ b/.config/environment.d/path.conf
@@ -1 +1 @@
-/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/landam/.local/kitty.app/bin/:/home/landam/.local/ayugram.app/bin/:/home/landam/.local/bin:/home/landam/opt/weylus:/home/landam/.local/kitty.app/bin/:/home/landam/.local/ayugram.app/bin/:/home/landam/.local/bin:/home/landam/opt/weylus
+/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/local/bin/:/home/landam/.local/kitty.app/bin/:/home/landam/.local/ayugram.app/bin/:/home/landam/.local/bin:/home/landam/opt/weylus
diff --git a/.config/speech-dispatcher/clients/emacs.conf b/.config/speech-dispatcher/clients/emacs.conf
new file mode 100644
index 0000000..846c681
--- /dev/null
+++ b/.config/speech-dispatcher/clients/emacs.conf
@@ -0,0 +1,7 @@
+# Local configuration for emacs
+
+BeginClient "emacs:*"
+# Example:
+# DefaultPunctuationMode "some"
+EndClient
+
diff --git a/.config/speech-dispatcher/desktop/speechd.desktop b/.config/speech-dispatcher/desktop/speechd.desktop
new file mode 100644
index 0000000..b98cd1b
--- /dev/null
+++ b/.config/speech-dispatcher/desktop/speechd.desktop
@@ -0,0 +1,46 @@
+# Copyright (C) 2008 Brailcom, o.p.s
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+[Desktop Entry]
+Type=Application
+Encoding=UTF-8
+Version=1.0
+Name[de]=Speech Dispatcher
+Name[eo]=Speech Dispatcher
+Name[fr]=Speech Dispatcher
+Name[hu]=Speech Dispatcher
+Name[ka]=საუბრის დისპეტჩერი
+Name[nb_NO]=Speech Dispatcher
+Name[pt]=Speech Dispatcher
+Name[pt_BR]=Speech Dispatcher
+Name[ru]=Speech Dispatcher
+Name[sv]=Speech Dispatcher
+Name[tr]=Speech Dispatcher
+Name=Speech Dispatcher
+Comment[de]=Schnittstelle zu den Text-zu-Sprache-Diensten
+Comment[eo]=Interfaco al parolsintezaj servoj
+Comment[fr]=Interface avec des services de synthèse vocale
+Comment[hu]=Interfész a szövegfelolvasó szolgáltatásokhoz
+Comment[nb_NO]=Grensesnitt for talesyntese-tjenester
+Comment[pt]=Interface para serviços de texto para fala
+Comment[pt_BR]=Interface para serviços de texto para fala
+Comment[ru]=Интерфейс для сервисов преобразования текста в речь
+Comment[sv]=Gränssnitt till text-till-tal-tjänster
+Comment[tr]=Metinden konuşma hizmetleri için arayüz
+Comment=Interface to Text to Speech services
+TryExec=speech-dispatcher
+Exec=speech-dispatcher
+X-GNOME-Autostart-enabled=true
+X-GNOME-Autostart-Phase=Initialization
diff --git a/.config/speech-dispatcher/modules/cicero.conf b/.config/speech-dispatcher/modules/cicero.conf
new file mode 100644
index 0000000..36d0301
--- /dev/null
+++ b/.config/speech-dispatcher/modules/cicero.conf
@@ -0,0 +1,45 @@
+# Debug turns debugging on or off
+# See speechd.conf for information where debugging information is stored
+
+# Debug 0
+
+# -- CICERO EXECUTABLE AND LOG --
+
+# CiceroExecutable indicates path to the cicero executable (the file called
+# tts_brltty_es.py in the original distribution of the 0.7 version). You can
+# create a symbolic link # ln -s your-path/tts_brltty_es.py /usr/bin/cicero or
+# probably better in /usr/local/bin/cicero and modify the below option
+# accordingly.
+
+#CiceroExecutable "/usr/bin/cicero"
+
+# CiceroExecutableLog is the path where logging information of the
+# original Cicero synthesizer (CiceroExecutable) should be stored.
+# This should not be confused with the logging of this module/driver
+# specified in speechd.conf.
+
+#CiceroExecutableLog "/var/log/speech-dispatcher/cicero-executable.log"
+
+# -- AUDIO OUTPUT --
+
+# Cicero does its own audio output which can't
+# be influenced from this place. Please see Cicero
+# documentation
+
+# -- DEBUGGING AND LOGGING --
+
+# Copyright (C) 2006 Olivier BERT
+# Copyright (C) 2006 Brailcom, o.p.s
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more details (file
+# COPYING in the root directory).
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
diff --git a/.config/speech-dispatcher/modules/espeak-ng-mbrola.conf b/.config/speech-dispatcher/modules/espeak-ng-mbrola.conf
new file mode 100644
index 0000000..f2c323c
--- /dev/null
+++ b/.config/speech-dispatcher/modules/espeak-ng-mbrola.conf
@@ -0,0 +1,73 @@
+# Debugging
+Debug 0
+
+
+# -- SOUND ICONS --
+
+# Espeak does not currently support playing sound icons
+# (audio files that are played by name when an application requests
+# a sound icon). If you have installed the free(b)soft sound-icons
+# package, this is the directory where will they be found. If not
+# blank, the espeak Output Module will play them if it finds a
+# file whose name matches the sound icon name. If blank, or no
+# matching file is found, the name of the sound icon will be spoken.
+
+EspeakSoundIconFolder "/usr/share/sounds/sound-icons/"
+
+# Volume at which sound icons are played.
+
+EspeakSoundIconVolume 0
+
+# -- Punctuation --
+
+# Characters to be spoken when punctuation setting is "some"
+# Encoding is UTF-8.
+EspeakPunctuationList "@+_"
+EspeakCapitalPitchRise 0
+
+# -- Rate control --
+# The following options are in words per minute
+#the same as the -s parameter for the -s option in espeak command line tool.
+
+# Minimum rate (-100 in speech-dispatcher)
+EspeakMinRate 80
+
+# Normal rate (0 in speech-dispatcher)
+EspeakNormalRate 170
+
+# Maximum rate (100 in speech-dispatcher)
+EspeakMaxRate 449
+
+# -- Internal parameters --
+
+# Number of ms of audio returned by the espeak callback function.
+EspeakAudioChunkSize 300
+
+# Maximum number of samples to buffer in playback queue.
+EspeakAudioQueueMaxSize 441000
+
+# Whether to enable speech indexing
+EspeakIndexing 1
+
+
+# This makes the speak-ng-mbrola module only show mbrola voices, don't change it
+EspeakMbrola 1
+
+# Copyright (C) 2007 Lukas Loehrer
+# Copyright (C) 2007-2008 Brailcom, o.p.s
+# Copyright (C) 2007 Gilles Casse
+# Copyright (C) 2011 Rui Batista
+# Copyright (C) 2011-2016 Luke Yelavich
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more details (file
+# COPYING in the root directory).
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
diff --git a/.config/speech-dispatcher/modules/espeak-ng.conf b/.config/speech-dispatcher/modules/espeak-ng.conf
new file mode 100644
index 0000000..9677bc9
--- /dev/null
+++ b/.config/speech-dispatcher/modules/espeak-ng.conf
@@ -0,0 +1,73 @@
+# Debugging
+Debug 0
+
+
+# -- SOUND ICONS --
+
+# Espeak does not currently support playing sound icons
+# (audio files that are played by name when an application requests
+# a sound icon). If you have installed the free(b)soft sound-icons
+# package, this is the directory where will they be found. If not
+# blank, the espeak Output Module will play them if it finds a
+# file whose name matches the sound icon name. If blank, or no
+# matching file is found, the name of the sound icon will be spoken.
+
+EspeakSoundIconFolder "/usr/share/sounds/sound-icons/"
+
+# Volume at which sound icons are played.
+
+EspeakSoundIconVolume 0
+
+# -- Punctuation --
+
+# Characters to be spoken when punctuation setting is "some"
+# Encoding is UTF-8.
+EspeakPunctuationList "@+_"
+EspeakCapitalPitchRise 0
+
+# -- Rate control --
+# The following options are in words per minute
+#the same as the -s parameter for the -s option in espeak command line tool.
+
+# Minimum rate (-100 in speech-dispatcher)
+EspeakMinRate 80
+
+# Normal rate (0 in speech-dispatcher)
+EspeakNormalRate 170
+
+# Maximum rate (100 in speech-dispatcher)
+EspeakMaxRate 449
+
+# -- Internal parameters --
+
+# Number of ms of audio returned by the espeak callback function.
+EspeakAudioChunkSize 300
+
+# Maximum number of samples to buffer in playback queue.
+EspeakAudioQueueMaxSize 441000
+
+# Whether to enable speech indexing
+EspeakIndexing 1
+
+
+# This makes the speak-ng module only show non-mbrola voices, don't change it
+EspeakMbrola 0
+
+# Copyright (C) 2007 Lukas Loehrer
+# Copyright (C) 2007-2008 Brailcom, o.p.s
+# Copyright (C) 2007 Gilles Casse
+# Copyright (C) 2011 Rui Batista
+# Copyright (C) 2011-2016 Luke Yelavich
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more details (file
+# COPYING in the root directory).
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
diff --git a/.config/speech-dispatcher/modules/espeak.conf b/.config/speech-dispatcher/modules/espeak.conf
new file mode 100644
index 0000000..cbd453b
--- /dev/null
+++ b/.config/speech-dispatcher/modules/espeak.conf
@@ -0,0 +1,70 @@
+# Debugging
+Debug 0
+
+
+# -- SOUND ICONS --
+
+# Espeak does not currently support playing sound icons
+# (audio files that are played by name when an application requests
+# a sound icon). If you have installed the free(b)soft sound-icons
+# package, this is the directory where will they be found. If not
+# blank, the espeak Output Module will play them if it finds a
+# file whose name matches the sound icon name. If blank, or no
+# matching file is found, the name of the sound icon will be spoken.
+
+EspeakSoundIconFolder "/usr/share/sounds/sound-icons/"
+
+# Volume at which sound icons are played.
+
+EspeakSoundIconVolume 0
+
+# -- Punctuation --
+
+# Characters to be spoken when punctuation setting is "some"
+# Encoding is UTF-8.
+EspeakPunctuationList "@+_"
+EspeakCapitalPitchRise 0
+
+# -- Rate control --
+# The following options are in words per minute
+#the same as the -s parameter for the -s option in espeak command line tool.
+
+# Minimum rate (-100 in speech-dispatcher)
+EspeakMinRate 80
+
+# Normal rate (0 in speech-dispatcher)
+EspeakNormalRate 170
+
+# Maximum rate (100 in speech-dispatcher)
+EspeakMaxRate 449
+
+# -- Internal parameters --
+
+# Number of ms of audio returned by the espeak callback function.
+EspeakAudioChunkSize 300
+
+# Maximum number of samples to buffer in playback queue.
+EspeakAudioQueueMaxSize 441000
+
+# Whether to enable speech indexing
+EspeakIndexing 1
+
+
+# Copyright (C) 2007 Lukas Loehrer
+# Copyright (C) 2007-2008 Brailcom, o.p.s
+# Copyright (C) 2007 Gilles Casse
+# Copyright (C) 2011 Rui Batista
+# Copyright (C) 2011 Luke Yelavich
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more details (file
+# COPYING in the root directory).
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
diff --git a/.config/speech-dispatcher/modules/festival.conf b/.config/speech-dispatcher/modules/festival.conf
new file mode 100644
index 0000000..cae8cb8
--- /dev/null
+++ b/.config/speech-dispatcher/modules/festival.conf
@@ -0,0 +1,93 @@
+# -- DEBUGGING --
+
+# Debug turns debugging on or off
+# See speechd.conf for information where debugging information is stored
+Debug 0
+
+
+# -- FESTIVAL SERVER SETTINGS --
+
+# Address where the Festival server runs (you have to
+# have a Festival server running, please see documentation).
+
+#FestivalServerHost "localhost"
+#FestivalServerPort 1314
+
+
+# -- CACHING --
+
+# Festival output module supports a caching mechanism for
+# repeated events like characters, keys and sound icons
+# that saves the wavefiles retrieved from the synthesizer
+# and uses them next time an identical request is issued.
+# This way, the synthesis is much more responsive when
+# you type in keys, you spell some word by going over it
+# with cursor keys, sound icons are faster and so on.
+# If you wish to enable this caching mechanism, turn
+# FestivalCacheOn to 1, or switch it off by 0.
+
+# FestivalCacheOn 1
+
+# How large should the memory assigned to output module for
+# cache should be. Festival will never overcome this limit.
+# If there are more messages to save, the ones that are least
+# accessed will be removed from the cache. So if you set this
+# parameter too low, the module will often have to synthesize
+# your request (which takes time) instead of just retrieving
+# it from the cache, but you will save system resources. If you
+# set it higher, it might make the module more responsive.
+# The value is given in kilobytes, default is 10 megabytes.
+
+# FestivalCacheMaxKBytes 10240
+
+# Normally, the cache pool is common for all voices, rates and
+# pitches. This means that when for example the key 'r' gets cached,
+# you change the voice and request the key 'r' again, it will be
+# retrieved from the cache and you will hear the old 'r' instead of a
+# new one. By default, it only switches between languages. In most
+# cases, this isn't a problem for characters, keys and sound icons and
+# it saves system resources. But if you want to keep separate caches
+# for different voices (and even rates and pitches), please set the
+# corresponding parameters to 1. (0 means don't distinguish).
+
+# FestivalCacheDistinguishVoices 0
+# FestivalCacheDistinguishRate 0
+# FestivalCacheDistinguishPitch 0
+
+# -- FESTIVAL PERFORMANCE --
+
+# Switching FestivalReopenSocket to 1 will make the module close the
+# connection to Festival each time the currently synthesized wavefile
+# is no longer needed to finish and new text is waiting. This may improve
+# Festival responsivity on slower machines, but might cause a more network
+# traffic. Currently, the option is set to 0 by default, because there
+# is a network problem in Festival socket communication layer that introduces
+# unnecessary delays that affect the performance heavily in this mode.
+# Unless your Festival is patched against this bug, switching this on
+# is not recommended.
+
+# FestivalReopenSocket 0
+
+
+# If FestivalDebugSaveOutput is set to 1, it writes the produced sound tracks
+# to /tmp/debug-festival-*.snd before it says them. You can later browse them
+# for debugging purposes. They are numbered in order starting from 0.
+
+# FestivalDebugSaveOutput 0
+
+
+# Copyright (C) 2003-2008 Brailcom, o.p.s
+# Copyright (C) 2007 Gilles Casse
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more details (file
+# COPYING in the root directory).
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
diff --git a/.config/speech-dispatcher/speechd.conf b/.config/speech-dispatcher/speechd.conf
new file mode 100644
index 0000000..ad43322
--- /dev/null
+++ b/.config/speech-dispatcher/speechd.conf
@@ -0,0 +1,359 @@
+
+ # Global configuration for Speech Dispatcher
+ # ==========================================
+
+ # -----SYSTEM OPTIONS-----
+
+ # CommunicationMethod specifies the method to be used by Speech Dispatcher to communicate with
+ # its clients. Two basic methods are "unix_socket" and "inet_socket".
+ #
+ # unix_socket -- communication over Unix sockets represented by a file in the
+ # filesystem (see SocketPath below). This method works only locally, but is
+ # preferred for standard session setup, where every user runs his own instance of Speech
+ # Dispatcher to get voice feedback on his own computer.
+ #
+ # inet_socket -- alternatively, you can start Speech Dispatcher on
+ # a TCP port and connect to it via hostname/port. This allows for a more
+ # flexible setup, where you can use Speech Dispatcher over network
+ # from different machines. See also the Port and LocalhostAccessOnly
+ # configuration variables.
+ #
+ # CommunicationMethod "unix_socket"
+
+ # SocketPath is either "default" or a full path to the filesystem
+ # where the driving Unix socket file should be created in case the
+ # CommunicationMethod is set to "unix_socket". The default is
+ # $XDG_RUNTIME_DIR/speech-dispatcher/speechd.sock where $XDG_RUNTIME_DIR
+ # is the directory specified by the XDG Base Directory Specification.
+ # Do not change this unless you have a reason and know what you are doing.
+
+ # SocketPath "default"
+
+ # The Port on which Speech Dispatcher should be available to clients if the "inet_socket"
+ # communication method is used.
+
+ # Port 6560
+
+ # By default, if "inet_socket" communication method is used, the specified port is opened only
+ # for connections coming from localhost. If LocalhostAccessOnly is set to 0 it disables this
+ # access control. It means that the port will be accessible from all computers on the
+ # network. If you turn off this option, please make sure you set up some system rules on what
+ # computers are and are not allowed to access the Speech Dispatcher port.
+
+ # LocalhostAccessOnly 1
+
+ # By default, Speech Dispatcher is configured to shut itself down after a period of
+ # time if no clients are connected. The timeout value is in seconds, and is started when
+ # the last client disconnects. A value of 0 disables the timeout.
+
+ # Timeout 5
+
+ # -----LOGGING CONFIGURATION-----
+
+ # The LogLevel is a number between 0 and 5 specifying the
+ # verbosity of information to the logfile or screen
+ # 0 means nothing, 5 means everything (not recommended).
+
+ LogLevel 3
+
+ # The LogDir specifies where the Speech Dispatcher logs reside
+ # Specify "stdout" for standard console output
+ # or a custom log directory path. 'default' means
+ # the logs are written to the default destination (e.g. a preconfigured
+ # system directory or the home directory if .speech-dispatcher is present)
+ # DO NOT COMMENT OUT THIS OPTION, leave as "default" for standard logging
+
+ LogDir "default"
+ #LogDir "/var/log/speech-dispatcher/"
+ #LogDir "stdout"
+
+ # The CustomLogFile allows logging all messages # regardless of
+ # priority, to the given destination.
+ #CustomLogFile "protocol" "/var/log/speech-dispatcher/speech-dispatcher-protocol.log"
+
+ # ----- VOICE PARAMETERS -----
+
+ # The DefaultRate controls how fast the synthesizer is going to speak.
+ # The value must be between -100 (slowest) and +100 (fastest), default
+ # is 0.
+
+ DefaultRate 0
+
+ # The DefaultPitch controls the pitch of the synthesized voice. The
+ # value must be between -100 (lowest) and +100 (highest), default is
+ # 0.
+
+ DefaultPitch 0
+
+ # The DefaultPitchRange controls the pitch range of the synthesized voice. The
+ # value must be between -100 (lowest) and +100 (highest), default is
+ # 0.
+
+ DefaultPitchRange 0
+
+ # The DefaultVolume controls the default volume of the voice. It is
+ # a value between -100 (softly) and +100 (loudly). Currently, +100
+ # maps to the default volume of the synthesizer.
+
+ DefaultVolume 100
+
+ # The DefaultVoiceType controls which voice type should be used by default.
+ # Voice types are symbolic names which map to particular voices provided by
+ # the synthesizer according to the output module configuration.
+ # Please see the synthesizer-specific configuration
+ # in etc/speech-dispatcher/modules/ to see which voices are assigned to
+ # different symbolic names. The following symbolic names are
+ # currently supported: MALE1, MALE2, MALE3, FEMALE1, FEMALE2, FEMALE3,
+ # CHILD_MALE, CHILD_FEMALE
+
+ # DefaultVoiceType "MALE1"
+
+ # The Default language with which to speak
+ # Note that the spd-say client in particular always sets the language to its
+ # current locale language, so this particular client will never pick this
+ # configuration.
+
+ DefaultLanguage en-US
+
+
+ # ----- MESSAGE DISPATCHING CONTROL -----
+
+ # The DefaultClientName specifies the name of a client who didn't
+ # introduce himself at the beginning of an SSIP session.
+
+ # DefaultClientName "unknown:unknown:unknown"
+
+ # The Default Priority. Use with caution, normally this shouldn't be
+ # changed globally (at this place)
+
+ # DefaultPriority "text"
+
+ # The DefaultPauseContext specifies by how many index marks a speech
+ # cursor should return when resuming after a pause. This is roughly
+ # equivalent to the number of sentences before the place of the
+ # execution of pause that will be repeated.
+
+ # DefaultPauseContext 0
+
+ # -----SPELLING/PUNCTUATION/CAPITAL LETTERS CONFIGURATION-----
+
+ # The DefaultPunctuationMode sets the way dots, comas, exclamation
+ # marks, question marks etc. are interpreted. none: they are ignored
+ # some: some of them are sent to synthesis (see
+ # DefaultPunctuationSome) all: all punctuation marks are sent to
+ # synthesis
+
+ # DefaultPunctuationMode "none"
+
+ # Level of punctuation for which symbol pre-processing should be performed by
+ # the server rather than by the module.
+ #
+ # This is completely independent of what punctuation level is actually asked, it
+ # controls to which extent the server should do the punctuation work to insert
+ # the appropriate words or if the output module is responsible for doing it.
+ #
+ # Setting this to "no" disables pre-processing completely and leaves all
+ # punctuation preprocessing to the output module. Setting this to
+ # "none" enables only the server rules which are always enabled whatever
+ # the punctuation level. Setting this to "all" enables all server rules for
+ # punctuation. Setting this to "char" enables all server rules, including
+ # rules for spelling spaces. Of course, which rules actually take effect depends
+ # on the requested punctuation level.
+
+ SymbolsPreproc "char"
+
+ # Which preprocessing files should be loaded, and in which order
+ #
+ # This is done first for the most specific localization, then lesser specific
+ # localization, etc. I.e. for the fr_FR language for instance, fr-fr files are
+ # loaded first, then fr files, then en files.
+
+ SymbolsPreprocFile "gender-neutral.dic"
+ SymbolsPreprocFile "font-variants.dic"
+ SymbolsPreprocFile "symbols.dic"
+ SymbolsPreprocFile "emojis.dic"
+ SymbolsPreprocFile "orca.dic"
+ SymbolsPreprocFile "orca-chars.dic"
+
+ # The DefaultCapLetRecognition: if set to "spell", capital letters
+ # should be spelled (e.g. "capital b"), if set to "icon",
+ # capital letters are indicated by inserting a special sound
+ # before them but they should be read normally, it set to "none"
+ # capital letters are not recognized (by default)
+
+ # DefaultCapLetRecognition "none"
+
+ # The DefaultSpelling: if set to On, all messages will be spelt
+ # unless set otherwise (this is usually not something you want to do.)
+
+ # DefaultSpelling Off
+
+ # ----- AUDIO CONFIGURATION -----------
+
+ # -- AUDIO OUTPUT --
+
+ # Chooses between the possible sound output systems:
+ # "pulse" - PulseAudio
+ # "alsa" - Advanced Linux Sound System
+ # "oss" - Open Sound System
+ # "pipewire" - the new low-latency sound server, for near realtime speech performance
+ # "nas" - Network Audio System
+ # "libao" - A cross platform audio library
+ #
+ # Pipe Wire is the newest audio output method in this configuration, but not the default one.
+ # However, if it works in your deployment, it is recommended because of the
+ # latency related advantages it has over pulseaudio and others, however enabling
+ # it should be done with precaution, because it isn't tested to work in all
+ # configurations supported by speech dispatcher.
+ # For now, enabling this is at the discression of the users and packagers of
+ # speech dispatcher. However, because we want to eventually make this the default
+ # for everyone, trying it in your deployments, if non-critical, is recommended
+ #
+ # OSS, Pulse Audio and ALSA are only provided for compatibility with
+ # architectures that do not include Pipe Wire.
+ #
+ # NAS provides network transparency, but is not very well tested.
+ #
+ # libao is a cross platform library with plugins for different sound systems
+ # and provides alternative output for Pulse Audio and ALSA as well as for other
+ # backends.
+
+ AudioOutputMethod pulse,alsa
+
+ # -- Pulse Audio parameters --
+
+ # Pulse audio device name or "default" for the default pulse device
+
+ #AudioPulseDevice "default"
+
+ # Latency requested from pulseaudio, in ms. Smaller values make speech
+ # interruption snappier, but also uses more CPU time thus battery.
+ # 10ms latency is considered in HCI (Human-computer Interaction) as real-time.
+
+ #AudioPulseMinLength 10
+
+ # -- ALSA parameters --
+
+ # Audio device for ALSA output
+
+ #AudioALSADevice "default"
+
+ # -- OSS parameters --
+
+ # Audio device for OSS output
+
+ #AudioOSSDevice "/dev/dsp"
+
+ # -- NAS parameters --
+
+ # Route to the Network Audio System server when NAS
+ # is chosen for the audio output. Note that NAS
+ # server doesn't need to run on your machine,
+ # you can use it also over network (for instance
+ # when working on remote machines).
+
+ #AudioNASServer "tcp/localhost:5450"
+
+
+
+ # -----OUTPUT MODULES CONFIGURATION-----
+
+ # Each AddModule line loads an output module.
+ # Syntax: AddModule "name" "binary" "configuration" "logfile"
+ # - name is the name under which you can access this module
+ # - binary is the path to the binary executable of this module,
+ # either relative (to libexec/speech-dispatcher-modules/
+ # or ~/.local/libexec/speech-dispatcher-modules) or absolute
+ # - configuration is the path to the config file of this module,
+ # either relative (to etc/speech-dispatcher/modules/
+ # or ~/.config/speech-dispatcher) or absolute
+
+ #AddModule "espeak" "sd_espeak" "espeak.conf"
+ #AddModule "espeak-ng" "sd_espeak-ng" "espeak-ng.conf"
+ #AddModule "festival" "sd_festival" "festival.conf"
+ #AddModule "flite" "sd_flite" "flite.conf"
+ #AddModule "ivona" "sd_ivona" "ivona.conf"
+ #AddModule "pico" "sd_pico" "pico.conf"
+ #AddModule "espeak-ng-mbrola" "sd_espeak-ng-mbrola" "espeak-ng-mbrola.conf"
+ #AddModule "espeak-ng-mbrola-generic" "sd_generic" "espeak-ng-mbrola-generic.conf"
+ #AddModule "espeak-mbrola-generic" "sd_generic" "espeak-mbrola-generic.conf"
+ #AddModule "swift-generic" "sd_generic" "swift-generic.conf"
+ #AddModule "epos-generic" "sd_generic" "epos-generic.conf"
+ #AddModule "dtk-generic" "sd_generic" "dtk-generic.conf"
+ #AddModule "ibmtts" "sd_ibmtts" "ibmtts.conf"
+ #AddModule "cicero" "sd_cicero" "cicero.conf"
+ #AddModule "kali" "sd_kali" "kali.conf"
+ #AddModule "mary-generic" "sd_generic" "mary-generic.conf"
+ #AddModule "baratinoo" "sd_baratinoo" "baratinoo.conf"
+ #AddModule "rhvoice" "sd_rhvoice" "rhvoice.conf"
+ #AddModule "voxin" "sd_voxin" "voxin.conf"
+ # AddModule "piper-tts-generic" "sd_generic" "piper-tts-generic.conf"
+
+ # The output module testing doesn't actually connect to anything. It
+ # outputs the requested commands to standard output and reads
+ # responses from stdandard input. This way, Speech Dispatcher's
+ # communication with output modules can be tested easily.
+
+ # AddModule "testing"
+
+ # The DefaultModule selects which output module is the default. You
+ # must use one of the names of the modules loaded with AddModule.
+
+ DefaultModule "espeak-ng"
+
+ # The LanguageDefaultModule selects which output modules are preferred
+ # for specified languages.
+
+ #LanguageDefaultModule "en" "espeak"
+ #LanguageDefaultModule "cs" "festival"
+ #LanguageDefaultModule "es" "festival"
+
+ # -----CLIENT SPECIFIC CONFIGURATION-----
+
+ # Here you can include the files with client-specific configuration
+ # for different types of clients. They must contain one or more sections with
+ # this structure:
+ # BeginClient "emacs:*"
+ # DefaultPunctuationMode "some"
+ # ...and/or some other settings
+ # EndClient
+ # The parameter of BeginClient tells Speech Dispatcher which clients
+ # it should apply the settings to (it does glob-style matching, you can use
+ # * to match any number of characters and ? to match one character)
+
+ # There are some sample client settings
+
+ Include "clients/*.conf"
+
+ # The DisableAutoSpawn option will disable the autospawn mechanism.
+ # Thus the server will not start automatically on requests from the clients
+ # DisableAutoSpawn
+
+
+ # Copyright (C) 2001-2009 Brailcom, o.p.s
+ # Copyright (C) 2009 Rui Batista
+ # Copyright (C) 2010 Andrei Kholodnyi
+ # Copyright (C) 2010 William Hubbs
+ # Copyright (C) 2010 Trevor Saunders
+ # Copyright (C) 2012 William Jon McCann
+ # Copyright (C) 2014 Rob Whyte
+ # Copyright (C) 2014-2016 Luke Yelavich
+ # Copyright (C) 2014 Hussain Jasim
+ # Copyright (C) 2017 Colomban Wendling
+ # Copyright (C) 2018 Raphaël POITEVIN
+ # Copyright (C) 2018 Florian Steinhardt
+ # Copyright (C) 2018-2024 Samuel Thibault
+ #
+ # This program is free software; you can redistribute it and/or modify it under
+ # the terms of the GNU General Public License as published by the Free Software
+ # Foundation; either version 2 of the License, or (at your option) any later
+ # version.
+ #
+ # This program is distributed in the hope that it will be useful, but WITHOUT ANY
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ # PARTICULAR PURPOSE. See the GNU General Public License for more details (file
+ # COPYING in the root directory).
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program. If not, see .
+
diff --git a/.config/speech-dispatcher/speechd.conf.bak b/.config/speech-dispatcher/speechd.conf.bak
new file mode 100644
index 0000000..7f0bbae
--- /dev/null
+++ b/.config/speech-dispatcher/speechd.conf.bak
@@ -0,0 +1,357 @@
+
+# Global configuration for Speech Dispatcher
+# ==========================================
+
+# -----SYSTEM OPTIONS-----
+
+# CommunicationMethod specifies the method to be used by Speech Dispatcher to communicate with
+# its clients. Two basic methods are "unix_socket" and "inet_socket".
+#
+# unix_socket -- communication over Unix sockets represented by a file in the
+# filesystem (see SocketPath below). This method works only locally, but is
+# preferred for standard session setup, where every user runs his own instance of Speech
+# Dispatcher to get voice feedback on his own computer.
+#
+# inet_socket -- alternatively, you can start Speech Dispatcher on
+# a TCP port and connect to it via hostname/port. This allows for a more
+# flexible setup, where you can use Speech Dispatcher over network
+# from different machines. See also the Port and LocalhostAccessOnly
+# configuration variables.
+#
+# CommunicationMethod "unix_socket"
+
+# SocketPath is either "default" or a full path to the filesystem
+# where the driving Unix socket file should be created in case the
+# CommunicationMethod is set to "unix_socket". The default is
+# $XDG_RUNTIME_DIR/speech-dispatcher/speechd.sock where $XDG_RUNTIME_DIR
+# is the directory specified by the XDG Base Directory Specification.
+# Do not change this unless you have a reason and know what you are doing.
+
+# SocketPath "default"
+
+# The Port on which Speech Dispatcher should be available to clients if the "inet_socket"
+# communication method is used.
+
+# Port 6560
+
+# By default, if "inet_socket" communication method is used, the specified port is opened only
+# for connections coming from localhost. If LocalhostAccessOnly is set to 0 it disables this
+# access control. It means that the port will be accessible from all computers on the
+# network. If you turn off this option, please make sure you set up some system rules on what
+# computers are and are not allowed to access the Speech Dispatcher port.
+
+# LocalhostAccessOnly 1
+
+# By default, Speech Dispatcher is configured to shut itself down after a period of
+# time if no clients are connected. The timeout value is in seconds, and is started when
+# the last client disconnects. A value of 0 disables the timeout.
+
+# Timeout 5
+
+# -----LOGGING CONFIGURATION-----
+
+# The LogLevel is a number between 0 and 5 specifying the
+# verbosity of information to the logfile or screen
+# 0 means nothing, 5 means everything (not recommended).
+
+LogLevel 3
+
+# The LogDir specifies where the Speech Dispatcher logs reside
+# Specify "stdout" for standard console output
+# or a custom log directory path. 'default' means
+# the logs are written to the default destination (e.g. a preconfigured
+# system directory or the home directory if .speech-dispatcher is present)
+# DO NOT COMMENT OUT THIS OPTION, leave as "default" for standard logging
+
+LogDir "default"
+#LogDir "/var/log/speech-dispatcher/"
+#LogDir "stdout"
+
+# The CustomLogFile allows logging all messages # regardless of
+# priority, to the given destination.
+#CustomLogFile "protocol" "/var/log/speech-dispatcher/speech-dispatcher-protocol.log"
+
+# ----- VOICE PARAMETERS -----
+
+# The DefaultRate controls how fast the synthesizer is going to speak.
+# The value must be between -100 (slowest) and +100 (fastest), default
+# is 0.
+
+# DefaultRate 0
+
+# The DefaultPitch controls the pitch of the synthesized voice. The
+# value must be between -100 (lowest) and +100 (highest), default is
+# 0.
+
+# DefaultPitch 0
+
+# The DefaultPitchRange controls the pitch range of the synthesized voice. The
+# value must be between -100 (lowest) and +100 (highest), default is
+# 0.
+
+# DefaultPitchRange 0
+
+# The DefaultVolume controls the default volume of the voice. It is
+# a value between -100 (softly) and +100 (loudly). Currently, +100
+# maps to the default volume of the synthesizer.
+
+DefaultVolume 100
+
+# The DefaultVoiceType controls which voice type should be used by default.
+# Voice types are symbolic names which map to particular voices provided by
+# the synthesizer according to the output module configuration.
+# Please see the synthesizer-specific configuration
+# in etc/speech-dispatcher/modules/ to see which voices are assigned to
+# different symbolic names. The following symbolic names are
+# currently supported: MALE1, MALE2, MALE3, FEMALE1, FEMALE2, FEMALE3,
+# CHILD_MALE, CHILD_FEMALE
+
+# DefaultVoiceType "MALE1"
+
+# The Default language with which to speak
+# Note that the spd-say client in particular always sets the language to its
+# current locale language, so this particular client will never pick this
+# configuration.
+
+# DefaultLanguage "en-US"
+
+
+# ----- MESSAGE DISPATCHING CONTROL -----
+
+# The DefaultClientName specifies the name of a client who didn't
+# introduce himself at the beginning of an SSIP session.
+
+# DefaultClientName "unknown:unknown:unknown"
+
+# The Default Priority. Use with caution, normally this shouldn't be
+# changed globally (at this place)
+
+# DefaultPriority "text"
+
+# The DefaultPauseContext specifies by how many index marks a speech
+# cursor should return when resuming after a pause. This is roughly
+# equivalent to the number of sentences before the place of the
+# execution of pause that will be repeated.
+
+# DefaultPauseContext 0
+
+# -----SPELLING/PUNCTUATION/CAPITAL LETTERS CONFIGURATION-----
+
+# The DefaultPunctuationMode sets the way dots, comas, exclamation
+# marks, question marks etc. are interpreted. none: they are ignored
+# some: some of them are sent to synthesis (see
+# DefaultPunctuationSome) all: all punctuation marks are sent to
+# synthesis
+
+# DefaultPunctuationMode "none"
+
+# Level of punctuation for which symbol pre-processing should be performed by
+# the server rather than by the module.
+#
+# This is completely independent of what punctuation level is actually asked, it
+# controls to which extent the server should do the punctuation work to insert
+# the appropriate words or if the output module is responsible for doing it.
+#
+# Setting this to "no" disables pre-processing completely and leaves all
+# punctuation preprocessing to the output module. Setting this to
+# "none" enables only the server rules which are always enabled whatever
+# the punctuation level. Setting this to "all" enables all server rules for
+# punctuation. Setting this to "char" enables all server rules, including
+# rules for spelling spaces. Of course, which rules actually take effect depends
+# on the requested punctuation level.
+
+SymbolsPreproc "char"
+
+# Which preprocessing files should be loaded, and in which order
+#
+# This is done first for the most specific localization, then lesser specific
+# localization, etc. I.e. for the fr_FR language for instance, fr-fr files are
+# loaded first, then fr files, then en files.
+
+SymbolsPreprocFile "gender-neutral.dic"
+SymbolsPreprocFile "font-variants.dic"
+SymbolsPreprocFile "symbols.dic"
+SymbolsPreprocFile "emojis.dic"
+SymbolsPreprocFile "orca.dic"
+SymbolsPreprocFile "orca-chars.dic"
+
+# The DefaultCapLetRecognition: if set to "spell", capital letters
+# should be spelled (e.g. "capital b"), if set to "icon",
+# capital letters are indicated by inserting a special sound
+# before them but they should be read normally, it set to "none"
+# capital letters are not recognized (by default)
+
+# DefaultCapLetRecognition "none"
+
+# The DefaultSpelling: if set to On, all messages will be spelt
+# unless set otherwise (this is usually not something you want to do.)
+
+# DefaultSpelling Off
+
+# ----- AUDIO CONFIGURATION -----------
+
+# -- AUDIO OUTPUT --
+
+# Chooses between the possible sound output systems:
+# "pulse" - PulseAudio
+# "alsa" - Advanced Linux Sound System
+# "oss" - Open Sound System
+# "pipewire" - the new low-latency sound server, for near realtime speech performance
+# "nas" - Network Audio System
+# "libao" - A cross platform audio library
+#
+# Pipe Wire is the newest audio output method in this configuration, but not the default one.
+# However, if it works in your deployment, it is recommended because of the
+# latency related advantages it has over pulseaudio and others, however enabling
+# it should be done with precaution, because it isn't tested to work in all
+# configurations supported by speech dispatcher.
+# For now, enabling this is at the discression of the users and packagers of
+# speech dispatcher. However, because we want to eventually make this the default
+# for everyone, trying it in your deployments, if non-critical, is recommended
+#
+# OSS, Pulse Audio and ALSA are only provided for compatibility with
+# architectures that do not include Pipe Wire.
+#
+# NAS provides network transparency, but is not very well tested.
+#
+# libao is a cross platform library with plugins for different sound systems
+# and provides alternative output for Pulse Audio and ALSA as well as for other
+# backends.
+
+# AudioOutputMethod "pipewire"
+
+# -- Pulse Audio parameters --
+
+# Pulse audio device name or "default" for the default pulse device
+
+#AudioPulseDevice "default"
+
+# Latency requested from pulseaudio, in ms. Smaller values make speech
+# interruption snappier, but also uses more CPU time thus battery.
+# 10ms latency is considered in HCI (Human-computer Interaction) as real-time.
+
+#AudioPulseMinLength 10
+
+# -- ALSA parameters --
+
+# Audio device for ALSA output
+
+#AudioALSADevice "default"
+
+# -- OSS parameters --
+
+# Audio device for OSS output
+
+#AudioOSSDevice "/dev/dsp"
+
+# -- NAS parameters --
+
+# Route to the Network Audio System server when NAS
+# is chosen for the audio output. Note that NAS
+# server doesn't need to run on your machine,
+# you can use it also over network (for instance
+# when working on remote machines).
+
+#AudioNASServer "tcp/localhost:5450"
+
+
+
+# -----OUTPUT MODULES CONFIGURATION-----
+
+# Each AddModule line loads an output module.
+# Syntax: AddModule "name" "binary" "configuration" "logfile"
+# - name is the name under which you can access this module
+# - binary is the path to the binary executable of this module,
+# either relative (to libexec/speech-dispatcher-modules/
+# or ~/.local/libexec/speech-dispatcher-modules) or absolute
+# - configuration is the path to the config file of this module,
+# either relative (to etc/speech-dispatcher/modules/
+# or ~/.config/speech-dispatcher) or absolute
+
+#AddModule "espeak" "sd_espeak" "espeak.conf"
+#AddModule "espeak-ng" "sd_espeak-ng" "espeak-ng.conf"
+#AddModule "festival" "sd_festival" "festival.conf"
+#AddModule "flite" "sd_flite" "flite.conf"
+#AddModule "ivona" "sd_ivona" "ivona.conf"
+#AddModule "pico" "sd_pico" "pico.conf"
+#AddModule "espeak-ng-mbrola" "sd_espeak-ng-mbrola" "espeak-ng-mbrola.conf"
+#AddModule "espeak-ng-mbrola-generic" "sd_generic" "espeak-ng-mbrola-generic.conf"
+#AddModule "espeak-mbrola-generic" "sd_generic" "espeak-mbrola-generic.conf"
+#AddModule "swift-generic" "sd_generic" "swift-generic.conf"
+#AddModule "epos-generic" "sd_generic" "epos-generic.conf"
+#AddModule "dtk-generic" "sd_generic" "dtk-generic.conf"
+#AddModule "ibmtts" "sd_ibmtts" "ibmtts.conf"
+#AddModule "cicero" "sd_cicero" "cicero.conf"
+#AddModule "kali" "sd_kali" "kali.conf"
+#AddModule "mary-generic" "sd_generic" "mary-generic.conf"
+#AddModule "baratinoo" "sd_baratinoo" "baratinoo.conf"
+#AddModule "rhvoice" "sd_rhvoice" "rhvoice.conf"
+#AddModule "voxin" "sd_voxin" "voxin.conf"
+
+# The output module testing doesn't actually connect to anything. It
+# outputs the requested commands to standard output and reads
+# responses from stdandard input. This way, Speech Dispatcher's
+# communication with output modules can be tested easily.
+
+# AddModule "testing"
+
+# The DefaultModule selects which output module is the default. You
+# must use one of the names of the modules loaded with AddModule.
+
+# DefaultModule espeak-ng
+
+# The LanguageDefaultModule selects which output modules are preferred
+# for specified languages.
+
+#LanguageDefaultModule "en" "espeak"
+#LanguageDefaultModule "cs" "festival"
+#LanguageDefaultModule "es" "festival"
+
+# -----CLIENT SPECIFIC CONFIGURATION-----
+
+# Here you can include the files with client-specific configuration
+# for different types of clients. They must contain one or more sections with
+# this structure:
+# BeginClient "emacs:*"
+# DefaultPunctuationMode "some"
+# ...and/or some other settings
+# EndClient
+# The parameter of BeginClient tells Speech Dispatcher which clients
+# it should apply the settings to (it does glob-style matching, you can use
+# * to match any number of characters and ? to match one character)
+
+# There are some sample client settings
+
+Include "clients/*.conf"
+
+# The DisableAutoSpawn option will disable the autospawn mechanism.
+# Thus the server will not start automatically on requests from the clients
+# DisableAutoSpawn
+
+
+# Copyright (C) 2001-2009 Brailcom, o.p.s
+# Copyright (C) 2009 Rui Batista
+# Copyright (C) 2010 Andrei Kholodnyi
+# Copyright (C) 2010 William Hubbs
+# Copyright (C) 2010 Trevor Saunders
+# Copyright (C) 2012 William Jon McCann
+# Copyright (C) 2014 Rob Whyte
+# Copyright (C) 2014-2016 Luke Yelavich
+# Copyright (C) 2014 Hussain Jasim
+# Copyright (C) 2017 Colomban Wendling
+# Copyright (C) 2018 Raphaël POITEVIN
+# Copyright (C) 2018 Florian Steinhardt
+# Copyright (C) 2018-2024 Samuel Thibault
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more details (file
+# COPYING in the root directory).
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
diff --git a/.config/sway/#config# b/.config/sway/#config#
deleted file mode 100644
index c415a25..0000000
--- a/.config/sway/#config#
+++ /dev/null
@@ -1,269 +0,0 @@
-# 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 Mod4
-# 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
-set $menu wmenu-run
-
-include /etc/sway/config-vars.d/*
-
-client.focused "#2c2c2c" "#212121" "#fefefe" "#ffffff" "#2c2c2c"
-
-### Output configuration
-#
-# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
-# This is commented in Debian, because the Sway wallpaper files are in a separate
-# package `sway-backgrounds`. Installing this package drops a config file to
-# /etc/sway/config.d/
-# output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
-#
-# Example configuration:
-#
-# output HDMI-A-1 resolution 1920x1080 position 1920,0
-#
-# You can get the names of your outputs by running: swaymsg -t get_outputs
-
-output DP-2 mode 2560x1440@165.001Hz
-
-### Idle configuration
-#
-# Example configuration:
-#
-# exec swayidle -w \
-# timeout 300 'swaylock -f -c 000000' \
-# timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power 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.
-
-exec swayosd-server
-
-### 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
-
-output * bg /home/landam/Pictures/wallpaper/dark_waves.jpg fill
-
-input type:touchpad {
- dwt enabled
- tap enabled
- natural_scroll enabled
- middle_emulation enabled
-}
-
-# Set keyboard layouts
-input "type:keyboard" {
- xkb_layout us,ru
- xkb_options grp:alt_shift_toggle
-}
-
-# input "2:14:SynPS/2_Synaptics_TouchPad" {
-# dwt enabled
-# tap enabled
-# natural_scroll enabled
-# middle_emulation enabled
-# }
-
-
-### 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
-
- # Color Picker
- bindsym $mod+c exec grim -g "$(slurp -p)" -t ppm - | convert - -format "%[pixel:p{0,0}]" txt:- | tail -n 1 | cut -d " " -f 4 | wl-copy
-
- # 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' 'swaymsg exit'
-#
-# 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 number 1
- bindsym $mod+2 workspace number 2
- bindsym $mod+3 workspace number 3
- bindsym $mod+4 workspace number 4
- bindsym $mod+5 workspace number 5
- bindsym $mod+6 workspace number 6
- bindsym $mod+7 workspace number 7
- bindsym $mod+8 workspace number 8
- bindsym $mod+9 workspace number 9
- bindsym $mod+0 workspace number 10
- # Move focused container to workspace
- bindsym $mod+Shift+1 move container to workspace number 1
- bindsym $mod+Shift+2 move container to workspace number 2
- bindsym $mod+Shift+3 move container to workspace number 3
- bindsym $mod+Shift+4 move container to workspace number 4
- bindsym $mod+Shift+5 move container to workspace number 5
- bindsym $mod+Shift+6 move container to workspace number 6
- bindsym $mod+Shift+7 move container to workspace number 7
- bindsym $mod+Shift+8 move container to workspace number 8
- bindsym $mod+Shift+9 move container to workspace number 9
- bindsym $mod+Shift+0 move container to workspace number 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"
-#
-# Utilities:
-#
- # Special keys to adjust volume via PulseAudio
- bindsym --locked XF86AudioMute exec amixer set Master toggle && swayosd-client --output-volume mute-toggle
- bindsym --locked XF86AudioLowerVolume exec amixer set Master 5%- && swayosd-client --output-volume lower
- bindsym --locked XF86AudioRaiseVolume exec amixer set Master 5%+ && swayosd-client --output-volume raise
- bindsym --locked XF86AudioMicMute exec amixer set Capture toggle && swayosd-client --input-volume mute-toggle
- bindsym --locked XF86AudioPlay exec playerctl play-pause
- bindsym --locked XF86AudioNext exec playerctl next
- bindsym --locked XF86AudioPrev exec playerctl previous
- bindsym --locked XF86AudioStop exec playerctl stop
- # Special keys to adjust brightness via brightnessctl
- bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- && swayosd-client --brightness lower
- bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ && swayosd-client --brightness raise
- # Special key to take a screenshot with grim
- bindsym Print exec grim
-
-#
-# Status Bar:
-#
-# Read `man 5 sway-bar` for more information about this section.
-bar {
- position bottom
-
- status_command $HOME/.local/bin/swaystatus
- # status_command ~/dev/probe/swaystatus/swaystatus
-
- colors {
- statusline #ffffff
- background #181818
- inactive_workspace #32323200 #32323200 #5c5c5c
- }
-}
-
-include /etc/sway/config.d/*
diff --git a/.config/sway/config b/.config/sway/config
index 7b7eb84..7ce7aa4 100644
--- a/.config/sway/config
+++ b/.config/sway/config
@@ -16,19 +16,31 @@ set $right l
# Your preferred terminal emulator
set $term alacritty
# Your preferred application launcher
-set $menu wmenu-run
-
-set $gtk_theme Adwaita:dark
-set $icon_theme Papirus-Dark
-
-# Also for apps launched outside GSettings
-# setenv GTK_THEME $gtk_theme
+set $menu walker
include /etc/sway/config-vars.d/*
include /etc/sway/config.d/*
+font pango:AdwaitaSans Regular 10
+
+default_border none
+
+# for_window [tiling] border none
+for_window [floating] border normal
+
+for_window [app_id="dev.benz.walker"] border none
+for_window [app_id="dev.benz.walker"] floating enable
+
+for_window [app_id="discord"] border none
+
+for_window [window_role="pop-up"] floating enable
+for_window [window_role="About"] floating enable
+
client.focused "#2c2c2c" "#212121" "#fefefe" "#ffffff" "#2c2c2c"
+gaps inner 5
+gaps outer 1
+
### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
@@ -43,7 +55,15 @@ client.focused "#2c2c2c" "#212121" "#fefefe" "#ffffff" "#2c2c2c"
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
-output DP-2 mode 2560x1440@165.001Hz
+output DP-2 {
+ mode 2560x1440@60Hz
+ position 1920 0
+}
+
+output eDP-2 {
+ mode 1920x1080@165.010Hz
+ position 0 0
+}
### Idle configuration
#
@@ -58,7 +78,15 @@ output DP-2 mode 2560x1440@165.001Hz
# 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.
+exec systemctl --user import-environment
+exec systemctl --user start xdg-desktop-portal
+exec systemctl --user start xdg-desktop-portal-wlr
+
exec swayosd-server
+exec wl-paste -t text --watch clipman store --no-persist
+exec elephant
+exec walker --gapplication-service
+exec swaync
### Input configuration
#
@@ -97,7 +125,9 @@ input "type:keyboard" {
# }
exec_always {
- export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"
+ export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"
+ export __GL_SYNC_TO_VBLANK=1
+ export __GL_SYNC_DISPLAY_DEVICE="DP-2"
}
### Key bindings
@@ -128,6 +158,10 @@ exec_always {
# 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' 'swaymsg exit'
+
+# Notifications
+ bindsym $mod+Shift+n exec swaync-client -t -sw
+
#
# Moving around:
#
@@ -244,10 +278,12 @@ bindsym $mod+r mode "resize"
# Utilities:
#
# Special keys to adjust volume via PulseAudio
- bindsym --locked XF86AudioMute exec amixer set Master toggle && swayosd-client --output-volume mute-toggle
+ # bindsym --locked XF86AudioMute exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && swayosd-client --output-volume mute-toggle
+ bindsym --locked XF86AudioMute exec swayosd-client --output-volume mute-toggle
bindsym --locked XF86AudioLowerVolume exec amixer set Master 5%- && swayosd-client --output-volume lower
bindsym --locked XF86AudioRaiseVolume exec amixer set Master 5%+ && swayosd-client --output-volume raise
- bindsym --locked XF86AudioMicMute exec amixer set Capture toggle && swayosd-client --input-volume mute-toggle
+ bindsym --locked XF86AudioMicMute exec swayosd-client --input-volume mute-toggle
+ # bindsym --locked XF86AudioMicMute exec amixer set Capture toggle && swayosd-client --input-volume mute-toggle
bindsym --locked XF86AudioPlay exec playerctl play-pause
bindsym --locked XF86AudioNext exec playerctl next
bindsym --locked XF86AudioPrev exec playerctl previous
@@ -258,20 +294,7 @@ bindsym $mod+r mode "resize"
# Special key to take a screenshot with grim
bindsym Print exec grim
-#
-# Status Bar:
-#
-# Read `man 5 sway-bar` for more information about this section.
bar {
- position bottom
-
- status_command $HOME/.local/bin/swaystatus
- # status_command ~/dev/probe/swaystatus/swaystatus
-
- colors {
- statusline #ffffff
- background #181818
- inactive_workspace #32323200 #32323200 #5c5c5c
- }
+ swaybar_command waybar
}
diff --git a/.config/swaync/config.json b/.config/swaync/config.json
new file mode 100644
index 0000000..d7502ae
--- /dev/null
+++ b/.config/swaync/config.json
@@ -0,0 +1,81 @@
+{
+ "$schema": "/etc/xdg/swaync/configSchema.json",
+ "ignore-gtk-theme": true,
+ "positionX": "right",
+ "positionY": "top",
+ "layer": "overlay",
+ "control-center-layer": "top",
+ "layer-shell": true,
+ "layer-shell-cover-screen": true,
+ "cssPriority": "user",
+ "control-center-margin-top": 20,
+ "control-center-margin-bottom": 0,
+ "control-center-margin-right": 0,
+ "control-center-margin-left": 0,
+ "notification-2fa-action": true,
+ "notification-inline-replies": false,
+ "notification-body-image-height": 100,
+ "notification-body-image-width": 200,
+ "timeout": 6,
+ "timeout-low": 3,
+ "timeout-critical": 0,
+ "fit-to-screen": true,
+ "relative-timestamps": true,
+ "control-center-width": 500,
+ "control-center-height": 600,
+ "notification-window-width": 500,
+ "keyboard-shortcuts": true,
+ "notification-grouping": true,
+ "image-visibility": "when-available",
+ "transition-time": 200,
+ "hide-on-clear": false,
+ "hide-on-action": true,
+ "text-empty": "No Notifications",
+ "script-fail-notify": true,
+ "widgets": [
+ "inhibitors",
+ "title",
+ "dnd",
+ "notifications"
+ ],
+ "widget-config": {
+ "notifications": {
+ "vexpand": true
+ },
+ "inhibitors": {
+ "text": "Inhibitors",
+ "button-text": "Clear All",
+ "clear-all-button": true
+ },
+ "title": {
+ "text": "Notifications",
+ "clear-all-button": true,
+ "button-text": "Clear All"
+ },
+ "dnd": {
+ "text": "Do Not Disturb"
+ },
+ "label": {
+ "max-lines": 5,
+ "text": "Label Text"
+ },
+ "mpris": {
+ "blacklist": [],
+ "autohide": false,
+ "show-album-art": "always",
+ "loop-carousel": false
+ },
+ "buttons-grid": {
+ "buttons-per-row": 7,
+ "actions": [
+ {
+ "label": "直",
+ "type": "toggle",
+ "active": true,
+ "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && nmcli radio wifi on || nmcli radio wifi off'",
+ "update-command": "sh -c '[[ $(nmcli radio wifi) == \"enabled\" ]] && echo true || echo false'"
+ }
+ ]
+ }
+ }
+}
diff --git a/.config/swaync/style.css b/.config/swaync/style.css
new file mode 100644
index 0000000..4de3b20
--- /dev/null
+++ b/.config/swaync/style.css
@@ -0,0 +1,566 @@
+:root {
+ --cc-bg: rgba(46, 46, 46, 0.7);
+ --noti-border-color: rgba(200, 200, 200, 0.15);
+ --noti-bg: 14, 14, 14;
+ --noti-bg-alpha: 0.7;
+ --noti-bg-darker: rgb(10, 10, 10);
+ --noti-bg-hover: rgb(15, 15, 15);
+ --noti-bg-focus: rgba(33, 33, 33, 0.8);
+ --noti-close-bg: rgb(52, 52, 52);
+ --noti-close-bg-hover: rgb(75, 75, 75);
+ --text-color: rgb(245, 245, 245);
+ --text-color-disabled: rgb(120, 120, 120);
+ --bg-selected: rgb(0, 128, 255);
+ --notification-icon-size: 64px;
+ --notification-app-icon-size: calc(var(--notification-icon-size) / 3);
+ --notification-group-icon-size: 32px;
+ --border: 1px solid var(--noti-border-color);
+ --border-radius: 12px;
+ --notification-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3),
+ 0 1px 3px 1px rgba(0, 0, 0, 0.7), 0 2px 6px 2px rgba(0, 0, 0, 0.3);
+ --font-size-body: 15px;
+ --font-size-summary: 16px;
+ /* Deprecated variables (because of their typos). Keeeping them around for backwards compatibility. */
+ --hover-tranistion: background 0.15s ease-in-out;
+ --group-collapse-tranistion: opacity 400ms ease-in-out;
+ --hover-transition: var(--hover-tranistion);
+ --group-collapse-transition: var(--group-collapse-tranistion);
+}
+
+/* Fallback for older CSS themes */
+/* Fallback for older CSS themes */
+@define-color cc-bg rgba(46, 46, 46, 0.7);
+@define-color noti-border-color rgba(255, 255, 255, 0.15);
+@define-color noti-bg rgba(48, 48, 48, 0.8);
+@define-color noti-bg-opaque rgb(48, 48, 48);
+@define-color noti-bg-darker rgb(38, 38, 38);
+@define-color noti-bg-hover rgb(56, 56, 56);
+@define-color noti-bg-hover-opaque rgb(56, 56, 56);
+@define-color noti-bg-focus rgba(68, 68, 68, 0.6);
+@define-color noti-close-bg rgba(255, 255, 255, 0.1);
+@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
+@define-color text-color rgb(255, 255, 255);
+@define-color text-color-disabled rgb(150, 150, 150);
+@define-color bg-selected rgb(0, 128, 255);
+notificationwindow, blankwindow, blankwindow {
+ background: transparent;
+}
+
+.close-button {
+ /* The notification Close Button */
+ background: var(--noti-close-bg);
+ color: var(--text-color);
+ text-shadow: none;
+ padding: 0;
+ border-radius: 100%;
+ margin-top: 8px;
+ margin-right: 8px;
+ box-shadow: none;
+ border: none;
+ min-width: 24px;
+ min-height: 24px;
+}
+
+.close-button:hover {
+ box-shadow: none;
+ background: var(--noti-close-bg-hover);
+ transition: var(--hover-tranistion);
+ border: none;
+}
+
+.notification-row {
+ background: none;
+ outline: none;
+}
+
+.notification-row:focus {
+ background: var(--noti-bg-focus);
+}
+
+.notification-row .notification-background {
+ padding: 6px 12px;
+}
+
+.notification-row .notification-background .notification {
+ /* The actual notification */
+ border-radius: var(--border-radius);
+ border: var(--border);
+ padding: 0;
+ transition: var(--hover-tranistion);
+ background: rgba(var(--noti-bg), var(--noti-bg-alpha));
+}
+
+.notification-row .notification-background .notification.low {
+ /* Low Priority Notification */
+}
+
+.notification-row .notification-background .notification.normal {
+ /* Normal Priority Notification */
+}
+
+.notification-row .notification-background .notification.critical {
+ /* Critical Priority Notification */
+}
+
+.notification-row .notification-background .notification .notification-default-action {
+ /* The large action that also displays the notification summary and body */
+ padding: 4px;
+ margin: 0;
+ box-shadow: none;
+ background: transparent;
+ border: none;
+ color: var(--text-color);
+ transition: var(--hover-tranistion);
+ border-radius: var(--border-radius);
+}
+
+.notification-row .notification-background .notification .notification-default-action:hover {
+ -gtk-icon-filter: none;
+ background: var(--noti-bg-hover);
+}
+
+.notification-row .notification-background .notification .notification-default-action:not(:only-child) {
+ /* When alternative actions are visible */
+ border-bottom-left-radius: 0px;
+ border-bottom-right-radius: 0px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content {
+ background: transparent;
+ border-radius: var(--border-radius);
+ padding: 0;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .image {
+ /* Notification Primary Image */
+ -gtk-icon-filter: none;
+ -gtk-icon-size: var(--notification-icon-size);
+ border-radius: 100px;
+ /* Size in px */
+ margin: 4px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .app-icon {
+ /* Notification app icon (only visible when the primary image is set) */
+ -gtk-icon-filter: none;
+ -gtk-icon-size: var(--notification-app-icon-size);
+ -gtk-icon-shadow: 0 1px 4px black;
+ margin: 6px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .text-box label {
+ /* Fixes base GTK 4 CSS setting a filter of opacity 50% for some odd reason */
+ filter: none;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .summary {
+ /* Notification summary/title */
+ font-size: var(--font-size-summary);
+ font-weight: bold;
+ background: transparent;
+ color: var(--text-color);
+ text-shadow: none;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .time {
+ /* Notification time-ago */
+ font-size: var(--font-size-summary);
+ font-weight: bold;
+ background: transparent;
+ color: var(--text-color);
+ text-shadow: none;
+ margin-right: 30px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .body {
+ /* Notification body */
+ font-size: var(--font-size-body);
+ font-weight: normal;
+ background: transparent;
+ color: var(--text-color);
+ text-shadow: none;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content progressbar {
+ /* The optional notification progress bar */
+ margin-top: 4px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .body-image {
+ /* The "extra" optional bottom notification image */
+ margin-top: 4px;
+ background-color: white;
+ -gtk-icon-filter: none;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply {
+ /* The inline reply section */
+ margin-top: 4px;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-entry {
+ background: var(--noti-bg-darker);
+ color: var(--text-color);
+ caret-color: var(--text-color);
+ border: var(--border);
+ border-radius: var(--border-radius);
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button {
+ margin-left: 4px;
+ background: rgba(var(--noti-bg), var(--noti-bg-alpha));
+ border: var(--border);
+ border-radius: var(--border-radius);
+ color: var(--text-color);
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:disabled {
+ background: initial;
+ color: var(--text-color-disabled);
+ border: var(--border);
+ border-color: transparent;
+}
+
+.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:hover {
+ background: var(--noti-bg-hover);
+}
+
+.notification-row .notification-background .notification .notification-alt-actions {
+ background: none;
+ border-bottom-left-radius: var(--border-radius);
+ border-bottom-right-radius: var(--border-radius);
+ padding: 4px;
+}
+
+.notification-row .notification-background .notification .notification-action {
+ /* The alternative actions below the default action */
+ margin: 4px;
+ padding: 0;
+}
+
+.notification-row .notification-background .notification .notification-action > button {
+ background: rgba(40, 40, 40, 1.0);
+ border-radius: var(--border-radius);
+ color: var(--text-color);
+}
+
+.notification-row .notification-background .notification .notification-action > button:hover {
+ background: rgba(45, 45, 45, 1.0);
+}
+
+.notification-group {
+ /* Styling only for Grouped Notifications */
+ transition: opacity 200ms ease-in-out;
+ /* The groups close button */
+}
+
+.notification-group:focus {
+ background: var(--noti-bg-focus);
+}
+
+.notification-group.low {
+ /* Low Priority Group */
+}
+
+.notification-group.normal {
+ /* Low Priority Group */
+}
+
+.notification-group.critical {
+ /* Low Priority Group */
+}
+
+.notification-group .notification-group-close-button .close-button {
+ margin: 12px 20px;
+}
+
+.notification-group .notification-group-buttons, .notification-group .notification-group-headers {
+ margin: 0 16px;
+ color: var(--text-color);
+}
+
+.notification-group .notification-group-headers {
+ /* Notification Group Headers */
+}
+
+.notification-group .notification-group-headers .notification-group-icon {
+ color: var(--text-color);
+ -gtk-icon-size: var(--notification-group-icon-size);
+}
+
+.notification-group .notification-group-headers .notification-group-header {
+ color: var(--text-color);
+}
+
+.notification-group .notification-group-buttons {
+ /* Notification Group Buttons */
+}
+
+.notification-group.collapsed {
+ /* When another group is expanded, lower the opacity of the collapsed ones */
+}
+
+.notification-group.collapsed.not-expanded {
+ opacity: 0.4;
+}
+
+.notification-group.collapsed .notification-row .notification {
+ background-color: rgba(var(--noti-bg), 1);
+}
+
+.notification-group.collapsed .notification-row:not(:last-child) {
+ /* Top notification in stack */
+ /* Set lower stacked notifications opacity to 0 */
+}
+
+.notification-group.collapsed .notification-row:not(:last-child) .notification-action,
+.notification-group.collapsed .notification-row:not(:last-child) .notification-default-action {
+ opacity: 0;
+}
+
+.notification-group.collapsed:hover .notification-row:not(:only-child) .notification {
+ background-color: var(--noti-bg-hover);
+}
+
+.control-center {
+ /* The Control Center which contains the old notifications + widgets */
+ background: var(--cc-bg);
+ color: var(--text-color);
+ border-radius: var(--border-radius);
+}
+
+.control-center .control-center-list-placeholder {
+ /* The placeholder when there are no notifications */
+ opacity: 0.5;
+}
+
+.control-center .control-center-list {
+ /* List of notifications */
+ background: transparent;
+}
+
+.control-center .control-center-list .notification {
+ box-shadow: var(--notification-shadow);
+}
+
+.control-center .control-center-list .notification .notification-default-action,
+.control-center .control-center-list .notification .notification-action {
+ transition: var(--group-collapse-tranistion), var(--hover-tranistion);
+}
+
+.control-center .control-center-list .notification .notification-default-action:hover,
+.control-center .control-center-list .notification .notification-action:hover {
+ background-color: var(--noti-bg-hover);
+}
+
+.blank-window {
+ /* Window behind control center and on all other monitors */
+ background: transparent;
+}
+
+.floating-notifications {
+ background: transparent;
+}
+
+.floating-notifications .notification {
+ box-shadow: none;
+}
+
+/*** Widgets ***/
+.widget {
+ margin: 8px;
+ padding: 8px;
+ border-radius: var(--border-radius);
+}
+
+/* Title widget */
+.widget-title > label {
+ margin-right: 8px;
+ font-size: 1.5rem;
+}
+
+.widget-title > button {
+ margin-left: 8px;
+ border-radius: var(--border-radius);
+}
+
+/* DND widget */
+.widget-dnd label {
+ color: var(--text-color);
+ margin-right: 8px;
+ font-size: 1.1rem;
+}
+
+.widget-dnd switch {
+ border-radius: var(--border-radius);
+ margin-left: 8px;
+}
+
+.widget-dnd switch slider {
+ border-radius: var(--border-radius);
+}
+
+/* Label widget */
+.widget-label > label {
+ font-size: 1.1rem;
+}
+
+/* Mpris widget */
+:root {
+ --mpris-album-art-overlay: rgba(0, 0, 0, 0.55);
+ --mpris-button-hover: rgba(0, 0, 0, 0.5);
+ --mpris-album-art-icon-size: 96px;
+ --mpris-album-art-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75);
+}
+
+.widget-mpris {
+ padding: 0;
+ /* The parent to all players */
+}
+
+.widget-mpris .widget-mpris-player {
+ margin: 16px 20px;
+ border-radius: var(--border-radius);
+ box-shadow: var(--mpris-album-art-shadow);
+}
+
+.widget-mpris .widget-mpris-player .mpris-background {
+ filter: blur(10px);
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay {
+ padding: 16px;
+ background-color: var(--mpris-album-art-overlay);
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay button:hover {
+ /* The media player buttons (play, pause, next, etc...) */
+ background: var(--noti-bg-hover);
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art {
+ border-radius: var(--border-radius);
+ box-shadow: var(--mpris-album-art-shadow);
+ -gtk-icon-size: var(--mpris-album-art-icon-size);
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-title {
+ font-weight: bold;
+ font-size: 1.25rem;
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-subtitle {
+ font-size: 1.1rem;
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay > box > button {
+ /* Change player control buttons */
+}
+
+.widget-mpris .widget-mpris-player .mpris-overlay > box > button:hover {
+ background-color: var(--mpris-button-hover);
+}
+
+.widget-mpris > box > button {
+ /* Change player side buttons */
+}
+
+.widget-mpris > box > button:disabled {
+ /* Change player side buttons insensitive */
+}
+
+/* Buttons widget */
+.widget-buttons-grid flowboxchild > button {
+ border-radius: var(--border-radius);
+}
+
+.widget-buttons-grid flowboxchild > button.toggle:checked {
+ /* style given to the active toggle button */
+}
+
+/* Menubar widget */
+.widget-menubar {
+ /* The revealer buttons */
+ /* .AnyName { Name defined in config after #
+ background-color: rgba(var(--noti-bg), 1.0);
+ padding: 8px;
+ margin: 8px;
+ border-radius: 12px;
+ }
+
+ .AnyName>button {
+ background: transparent;
+ border: none;
+ }
+
+ .AnyName>button:hover {
+ background-color: var(--noti-bg-hover);
+ } */
+}
+
+.widget-menubar > .menu-button-bar {
+ /* The left button container */
+ /* The right button container */
+ /* The left and right button container */
+}
+
+.widget-menubar > .menu-button-bar > .start {
+ margin-left: 8px;
+}
+
+.widget-menubar > .menu-button-bar > .end {
+ margin-right: 8px;
+}
+
+.widget-menubar > .menu-button-bar > .widget-menubar-container button {
+ border-radius: var(--border-radius);
+ margin: 0 4px;
+}
+
+.widget-menubar > revealer * {
+ margin-top: 8px;
+}
+
+.widget-menubar > revealer * button {
+ border-radius: var(--border-radius);
+ margin: 8px;
+ margin-top: 0;
+}
+
+.widget-menubar > revealer * button:last-child {
+ margin-bottom: 0;
+}
+
+/* Volume widget */
+:root {
+ --widget-volume-row-icon-size: 24px;
+}
+
+/* Each row app icon */
+.widget-volume row image {
+ -gtk-icon-size: var(--widget-volume-row-icon-size);
+}
+
+.per-app-volume {
+ background-color: var(--noti-bg-alt);
+ margin: 8px;
+ margin-bottom: 0;
+ border-radius: var(--border-radius);
+}
+
+/* Slider widget */
+.widget-slider label {
+ font-size: inherit;
+}
+
+/* Backlight widget */
+/* Inhibitors widget */
+.widget-inhibitors > label {
+ margin-right: 8px;
+ font-size: 1.5rem;
+}
+
+.widget-inhibitors > button {
+ margin-left: 8px;
+ border-radius: var(--border-radius);
+}
diff --git a/.config/swayosd/style.css b/.config/swayosd/style.css
index d2df229..3704246 100644
--- a/.config/swayosd/style.css
+++ b/.config/swayosd/style.css
@@ -8,5 +8,5 @@ window#osd {
}
window#osd #container {
- margin: 10px;
+ margin: 20px;
}
diff --git a/.config/vlc/vlc-qt-interface.conf b/.config/vlc/vlc-qt-interface.conf
new file mode 100644
index 0000000..7436c72
--- /dev/null
+++ b/.config/vlc/vlc-qt-interface.conf
@@ -0,0 +1,3 @@
+[RecentsMRL]
+list=file:///home/landam/Music/ssstik.io_%40a.k.ra.mm_1757102939464.m4a, file:///home/landam/Music/ssstik.io_%40nabi.buttaev_1753408679405.m4a, file:///home/landam/Music/ssstik.io_%40salfisqw_1737072979657.m4a, file:///home/landam/Music/ssstik.io_%40avaiz.edits_1748283778286.m4a, file:///home/landam/Music/ssstik.io_%40sawt_al_haqq4_1746050024916.m4a, file:///home/landam/Music/ssstik.io_%40taw.lll_1746050083106.m4a, file:///home/landam/Music/ssstik.io_%40darc_334_1740344650776.m4a, file:///home/landam/Music/ssstik.io_%40gutoppa4_1741435261383.m4a, file:///home/landam/Music/ssstik.io_%40muratuly.asar_1742344425512.m4a, file:///home/landam/Music/ssstik.io_%40abubinyamin_1745936707909.m4a, file:///home/landam/Music/ssstik.io_%40tawhid_mslmmkk_1740225442027.m4a, file:///home/landam/Music/ssstik.io_%40walmuwahid_1733254572263.m4a, file:///home/landam/Music/ssstik.io_%40shah1d.774_1738025693798.m4a, file:///home/landam/Music/ssstik.io_%40a.k.ra.mm_1757103075631.m4a, file:///home/landam/Music/d7e4b9ae67bf94c739e134bcb3a4b1fc.m4a, file:///home/landam/Music/ssstik.io_%40noor.shad0w_1757103124035.m4a, file:///home/landam/Music/ssstik.io_%40far7ola_1746388338823.m4a, file:///home/landam/Music/ssstik.io_%40akhi.sb_1757102994079.m4a, file:///home/landam/Music/ssstik.io_%40sawt_al_haqq4_1746050175087.m4a, file:///home/landam/Music/ssstik.io_%40hmdxd_8_1739511337773.m4a, file:///home/landam/Music/ssstik.io_%40shah1d.774_1737591257327.m4a, file:///home/landam/Music/ssstik.io_%4033.ahmadd_1733520475170.m4a, file:///home/landam/Music/ssstik.io_%401binyamin__1748209778860.m4a, file:///home/landam/Music/ssstik.io_%40deenspecialist_1749586122566.m4a, file:///home/landam/Music/ssstik.io_%40islam_s96_1750630378886.m4a, file:///home/landam/Music/ssstik.io_%40umar_sildinskiy.l_1746049752177.m4a, file:///home/landam/Music/ssstik.io_%40leemmsss_1738025668602.m4a, file:///home/landam/Music/ssstik.io_%40musafir.701_1746739963080.m4a, file:///home/landam/Music/ssstik.io_1740008226324.m4a, file:///home/landam/Music/Screen_Recording_20240923_001428_TikTok.m4a
+times=-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
diff --git a/.config/vlc/vlc-qt-interface.conf.lock b/.config/vlc/vlc-qt-interface.conf.lock
new file mode 100644
index 0000000..c8893c9
--- /dev/null
+++ b/.config/vlc/vlc-qt-interface.conf.lock
@@ -0,0 +1,5 @@
+56309
+vlc
+landam
+2da9eac24dd04299a06ebbf50d627337
+6baa7595-2b68-4a93-8e6e-d88913e837b5
diff --git a/.config/vlc/vlcrc b/.config/vlc/vlcrc
new file mode 100644
index 0000000..4c7b52c
--- /dev/null
+++ b/.config/vlc/vlcrc
@@ -0,0 +1,3791 @@
+###
+### vlc 3.0.21
+###
+
+###
+### lines beginning with a '#' character are comments
+###
+
+[h26x] # H264 video demuxer
+
+# Frames per Second (float)
+#h264-fps=0.000000
+
+# Frames per Second (float)
+#hevc-fps=0.000000
+
+[ps] # MPEG-PS demuxer
+
+# Trust MPEG timestamps (boolean)
+#ps-trust-timestamps=1
+
+[mjpeg] # M-JPEG camera demuxer
+
+# Frames per Second (float)
+#mjpeg-fps=0.000000
+
+[demuxdump] # File dumper
+
+# Dump module (string)
+#demuxdump-access=file
+
+# Dump filename (string)
+#demuxdump-file=stream-demux.dump
+
+# Append to existing file (boolean)
+#demuxdump-append=0
+
+[rawaud] # Raw audio demuxer
+
+# Audio channels (integer)
+#rawaud-channels=2
+
+# Audio samplerate (Hz) (integer)
+#rawaud-samplerate=48000
+
+# FOURCC code of raw input format (string)
+#rawaud-fourcc=s16l
+
+# Forces the audio language (string)
+#rawaud-lang=eng
+
+[subtitle] # Text subtitle parser
+
+# Frames per Second (float)
+#sub-fps=0.000000
+
+# Subtitle delay (integer)
+#sub-delay=0
+
+# Subtitle format (string)
+#sub-type=auto
+
+# Subtitle description (string)
+#sub-description=
+
+[playlist] # Playlist
+
+# Skip ads (boolean)
+#playlist-skip-ads=1
+
+# Show shoutcast adult content (boolean)
+#shoutcast-show-adult=0
+
+[es] # MPEG-I/II/4 / A52 / DTS / MLP audio
+
+# Frames per Second (float)
+#es-fps=25.000000
+
+[rawvid] # Raw video demuxer
+
+# Frames per Second (string)
+#rawvid-fps=
+
+# Width (integer)
+#rawvid-width=0
+
+# Height (integer)
+#rawvid-height=0
+
+# Force chroma (Use carefully) (string)
+#rawvid-chroma=
+
+# Aspect ratio (string)
+#rawvid-aspect-ratio=
+
+[avi] # AVI demuxer
+
+# Force interleaved method (boolean)
+#avi-interleaved=0
+
+# Force index creation (integer)
+#avi-index=0
+
+[vc1] # VC1 video demuxer
+
+# Frames per Second (float)
+#vc1-fps=25.000000
+
+[rawdv] # DV (Digital Video) demuxer
+
+# Hurry up (boolean)
+#rawdv-hurry-up=0
+
+[diracsys] # Dirac video demuxer
+
+# Value to adjust dts by (integer)
+#dirac-dts-offset=0
+
+[adaptive] # Unified adaptive streaming for DASH/HLS
+
+# Adaptive Logic (string)
+#adaptive-logic=
+
+# Maximum device width (integer)
+#adaptive-maxwidth=0
+
+# Maximum device height (integer)
+#adaptive-maxheight=0
+
+# Fixed Bandwidth in KiB/s (integer)
+#adaptive-bw=250
+
+# Use regular HTTP modules (boolean)
+#adaptive-use-access=0
+
+# Live Playback delay (ms) (integer)
+#adaptive-livedelay=15000
+
+# Max buffering (ms) (integer)
+#adaptive-maxbuffer=30000
+
+# Low latency (integer)
+#adaptive-lowlatency=-1
+
+[avformat] # Avformat demuxer
+
+# Format name (string)
+#avformat-format=
+
+# Advanced options (string)
+#avformat-options=
+
+# Avformat mux (string)
+#sout-avformat-mux=
+
+# Advanced options (string)
+#sout-avformat-options=
+
+# Reset timestamps (boolean)
+#sout-avformat-reset-ts=1
+
+[image] # Image demuxer
+
+# ES ID (integer)
+#image-id=-1
+
+# Group (integer)
+#image-group=0
+
+# Decode (boolean)
+#image-decode=1
+
+# Forced chroma (string)
+#image-chroma=
+
+# Duration in seconds (float)
+#image-duration=10.000000
+
+# Frame rate (string)
+#image-fps=10/1
+
+# Real-time (boolean)
+#image-realtime=0
+
+[mp4] # MP4 stream demuxer
+
+# M4A audio only (boolean)
+#mp4-m4a-audioonly=0
+
+[prefetch] # Stream prefetch filter
+
+# Buffer size (integer)
+#prefetch-buffer-size=16384
+
+# Read size (integer)
+#prefetch-read-size=16777216
+
+# Seek threshold (integer)
+#prefetch-seek-threshold=16384
+
+[swscale] # Video scaling filter
+
+# Scaling mode (integer)
+#swscale-mode=2
+
+[afile] # File audio output
+
+# Output file (string)
+#audiofile-file=audiofile.wav
+
+# Output format (string)
+#audiofile-format=s16
+
+# Number of output channels (integer)
+#audiofile-channels=0
+
+# Add WAVE header (boolean)
+#audiofile-wav=1
+
+[amem] # Audio memory output
+
+# Sample format (string)
+#amem-format=S16N
+
+# Sample rate (integer)
+#amem-rate=44100
+
+# Channels count (integer)
+#amem-channels=2
+
+[alsa] # ALSA audio output
+
+# Audio output device (string)
+#alsa-audio-device=default
+
+# Audio output channels (integer)
+#alsa-audio-channels=6
+
+# Software gain (float)
+#alsa-gain=1.000000
+
+[folder] # Folder meta data
+
+# Album art filename (string)
+#album-art-filename=
+
+[oldrc] # Remote control interface
+
+# Show stream position (boolean)
+#rc-show-pos=0
+
+# Fake TTY (boolean)
+#rc-fake-tty=0
+
+# UNIX socket command input (string)
+#rc-unix=
+
+# TCP command input (string)
+#rc-host=
+
+[motion] # motion control interface
+
+[gestures] # Mouse gestures control interface
+
+# Motion threshold (10-100) (integer)
+#gestures-threshold=30
+
+# Trigger button (string)
+#gestures-button=left
+
+[netsync] # Network synchronization
+
+# Network master clock (boolean)
+#netsync-master=0
+
+# Master server IP address (string)
+#netsync-master-ip=
+
+# UDP timeout (in ms) (integer)
+#netsync-timeout=500
+
+[podcast] # Podcasts
+
+# Podcast URLs list (string)
+#podcast-urls=
+
+[sap] # Network streams (SAP)
+
+# SAP multicast address (string)
+#sap-addr=
+
+# SAP timeout (seconds) (integer)
+#sap-timeout=1800
+
+# Try to parse the announce (boolean)
+#sap-parse=1
+
+# SAP Strict mode (boolean)
+#sap-strict=0
+
+[rtsp] # Legacy RTSP VoD server
+
+# MUX for RAW RTSP transport (string)
+#rtsp-raw-mux=ts
+
+# Maximum number of connections (integer)
+#rtsp-throttle-users=0
+
+# Sets the timeout option in the RTSP session string (integer)
+#rtsp-session-timeout=5
+
+[audioscrobbler] # Submission of played songs to last.fm
+
+# Username (string)
+#lastfm-username=
+
+# Password (string)
+#lastfm-password=
+
+# Scrobbler URL (string)
+#scrobbler-url=post.audioscrobbler.com
+
+[logger] # File logging
+
+[gnutls] # GNU TLS transport layer security
+
+# Use system trust database (boolean)
+#gnutls-system-trust=1
+
+# Trust directory (string)
+#gnutls-dir-trust=
+
+# TLS cipher priorities (string)
+#gnutls-priorities=NORMAL
+
+[access_output_shout] # IceCAST output
+
+# Stream name (string)
+#sout-shout-name=VLC media player - Live stream
+
+# Stream description (string)
+#sout-shout-description=Live stream from VLC media player
+
+# Stream MP3 (boolean)
+#sout-shout-mp3=0
+
+# Genre description (string)
+#sout-shout-genre=Alternative
+
+# URL description (string)
+#sout-shout-url=http://www.videolan.org/vlc
+
+# Bitrate (string)
+#sout-shout-bitrate=
+
+# Samplerate (string)
+#sout-shout-samplerate=
+
+# Number of channels (string)
+#sout-shout-channels=
+
+# Ogg Vorbis Quality (string)
+#sout-shout-quality=
+
+# Stream public (boolean)
+#sout-shout-public=0
+
+[access_output_rist] # RIST stream output
+
+# RIST target packet size (bytes) (integer)
+#sout-rist-packet-size=1328
+
+# RIST data output caching size (ms) (integer)
+#sout-rist-caching=50
+
+# RIST retry-buffer queue size (ms) (integer)
+#sout-rist-buffer-size=0
+
+# SSRC used in RTP output (default is random, i.e. 0) (integer)
+#sout-rist-ssrc=0
+
+# Stream name (string)
+#sout-rist-stream-name=
+
+[file] # File stream output
+
+# Overwrite existing file (boolean)
+#sout-file-overwrite=1
+
+# Append to file (boolean)
+#sout-file-append=0
+
+# Format time and date (boolean)
+#sout-file-format=0
+
+# Synchronous writing (boolean)
+#sout-file-sync=0
+
+[udp] # UDP stream output
+
+# Caching value (ms) (integer)
+#sout-udp-caching=300
+
+# Group packets (integer)
+#sout-udp-group=1
+
+[http] # HTTP stream output
+
+# Username (string)
+#sout-http-user=
+
+# Password (string)
+#sout-http-pwd=
+
+# Mime (string)
+#sout-http-mime=
+
+# Metacube (boolean)
+#sout-http-metacube=0
+
+[display] # Display stream output
+
+# Enable audio (boolean)
+#sout-display-audio=1
+
+# Enable video (boolean)
+#sout-display-video=1
+
+# Delay (ms) (integer)
+#sout-display-delay=100
+
+[stats] # Writes statistic info about stream
+
+# Output file (string)
+#sout-stats-output=
+
+# Prefix to show on output line (string)
+#sout-stats-prefix=stats
+
+[smem] # Stream output to memory buffer
+
+# Time Synchronized output (boolean)
+#sout-smem-time-sync=1
+
+[stream_out_standard] # Standard stream output
+
+# Output access method (string)
+#sout-standard-access=
+
+# Output muxer (string)
+#sout-standard-mux=
+
+# Output destination (string)
+#sout-standard-dst=
+
+# Address to bind to (helper setting for dst) (string)
+#sout-standard-bind=
+
+# Filename for stream (helper setting for dst) (string)
+#sout-standard-path=
+
+# SAP announcing (boolean)
+#sout-standard-sap=0
+
+# Session name (string)
+#sout-standard-name=
+
+# Session description (string)
+#sout-standard-description=
+
+# Session URL (string)
+#sout-standard-url=
+
+# Session email (string)
+#sout-standard-email=
+
+[setid] # Change the id of an elementary stream
+
+# Elementary Stream ID (integer)
+#sout-setid-id=0
+
+# New ES ID (integer)
+#sout-setid-new-id=0
+
+# Elementary Stream ID (integer)
+#sout-setlang-id=0
+
+# Language (string)
+#sout-setlang-lang=eng
+
+[bridge] # Bridge stream output
+
+# ID (integer)
+#sout-bridge-out-id=0
+
+# Destination bridge-in name (string)
+#sout-bridge-out-in-name=default
+
+# Delay (integer)
+#sout-bridge-in-delay=0
+
+# ID Offset (integer)
+#sout-bridge-in-id-offset=8192
+
+# Name of current instance (string)
+#sout-bridge-in-name=default
+
+# Fallback to placeholder stream when out of data (boolean)
+#sout-bridge-in-placeholder=0
+
+# Placeholder delay (integer)
+#sout-bridge-in-placeholder-delay=200
+
+# Wait for I frame before toggling placeholder (boolean)
+#sout-bridge-in-placeholder-switch-on-iframe=1
+
+[stream_out_rtp] # RTP stream output
+
+# Destination (string)
+#sout-rtp-dst=
+
+# SDP (string)
+#sout-rtp-sdp=
+
+# Muxer (string)
+#sout-rtp-mux=
+
+# SAP announcing (boolean)
+#sout-rtp-sap=0
+
+# Session name (string)
+#sout-rtp-name=
+
+# Session category (string)
+#sout-rtp-cat=
+
+# Session description (string)
+#sout-rtp-description=
+
+# Session URL (string)
+#sout-rtp-url=
+
+# Session email (string)
+#sout-rtp-email=
+
+# Transport protocol (string)
+#sout-rtp-proto=udp
+
+# Port (integer)
+#sout-rtp-port=5004
+
+# Audio port (integer)
+#sout-rtp-port-audio=0
+
+# Video port (integer)
+#sout-rtp-port-video=0
+
+# Hop limit (TTL) (integer)
+#sout-rtp-ttl=-1
+
+# RTP/RTCP multiplexing (boolean)
+#sout-rtp-rtcp-mux=0
+
+# Caching value (ms) (integer)
+#sout-rtp-caching=300
+
+# MP4A LATM (boolean)
+#sout-rtp-mp4a-latm=0
+
+# RTSP session timeout (s) (integer)
+#rtsp-timeout=60
+
+# Username (string)
+#sout-rtsp-user=
+
+# Password (string)
+#sout-rtsp-pwd=
+
+[record] # Record stream output
+
+# Destination prefix (string)
+#sout-record-dst-prefix=
+
+[es] # Elementary stream output
+
+# Output access method (string)
+#sout-es-access=
+
+# Output muxer (string)
+#sout-es-mux=
+
+# Output URL (string)
+#sout-es-dst=
+
+# Audio output access method (string)
+#sout-es-access-audio=
+
+# Audio output muxer (string)
+#sout-es-mux-audio=
+
+# Audio output URL (string)
+#sout-es-dst-audio=
+
+# Video output access method (string)
+#sout-es-access-video=
+
+# Video output muxer (string)
+#sout-es-mux-video=
+
+# Video output URL (string)
+#sout-es-dst-video=
+
+[stream_out_transcode] # Transcode stream output
+
+# Video encoder (string)
+#sout-transcode-venc=
+
+# Destination video codec (string)
+#sout-transcode-vcodec=
+
+# Video bitrate (integer)
+#sout-transcode-vb=0
+
+# Video scaling (float)
+#sout-transcode-scale=0.000000
+
+# Video frame-rate (string)
+#sout-transcode-fps=
+
+# Deinterlace video (boolean)
+#sout-transcode-deinterlace=0
+
+# Deinterlace module (string)
+#sout-transcode-deinterlace-module=deinterlace
+
+# Video width (integer)
+#sout-transcode-width=0
+
+# Video height (integer)
+#sout-transcode-height=0
+
+# Maximum video width (integer)
+#sout-transcode-maxwidth=0
+
+# Maximum video height (integer)
+#sout-transcode-maxheight=0
+
+# Video filter (string)
+#sout-transcode-vfilter=
+
+# Audio encoder (string)
+#sout-transcode-aenc=
+
+# Destination audio codec (string)
+#sout-transcode-acodec=
+
+# Audio bitrate (integer)
+#sout-transcode-ab=96
+
+# Audio language (string)
+#sout-transcode-alang=
+
+# Audio channels (integer)
+#sout-transcode-channels=0
+
+# Audio sample rate (integer)
+#sout-transcode-samplerate=0
+
+# Audio filter (string)
+#sout-transcode-afilter=
+
+# Subtitle encoder (string)
+#sout-transcode-senc=
+
+# Destination subtitle codec (string)
+#sout-transcode-scodec=
+
+# Destination subtitle codec (boolean)
+#sout-transcode-soverlay=0
+
+# Overlays (string)
+#sout-transcode-sfilter=
+
+# Number of threads (integer)
+#sout-transcode-threads=0
+
+# Picture pool size (integer)
+#sout-transcode-pool-size=10
+
+# High priority (boolean)
+#sout-transcode-high-priority=0
+
+[delay] # Delay a stream
+
+# Elementary Stream ID (integer)
+#sout-delay-id=0
+
+# Delay of the ES (ms) (integer)
+#sout-delay-delay=0
+
+[mosaic_bridge] # Mosaic bridge stream output
+
+# ID (string)
+#sout-mosaic-bridge-id=Id
+
+# Video width (integer)
+#sout-mosaic-bridge-width=0
+
+# Video height (integer)
+#sout-mosaic-bridge-height=0
+
+# Sample aspect ratio (string)
+#sout-mosaic-bridge-sar=1:1
+
+# Image chroma (string)
+#sout-mosaic-bridge-chroma=
+
+# Video filter (string)
+#sout-mosaic-bridge-vfilter=
+
+# Transparency (integer)
+#sout-mosaic-bridge-alpha=255
+
+# X offset (integer)
+#sout-mosaic-bridge-x=-1
+
+# Y offset (integer)
+#sout-mosaic-bridge-y=-1
+
+[remap] # Audio channel remapper
+
+# Left (integer)
+#aout-remap-channel-left=0
+
+# Center (integer)
+#aout-remap-channel-center=1
+
+# Right (integer)
+#aout-remap-channel-right=2
+
+# Rear left (integer)
+#aout-remap-channel-rearleft=3
+
+# Rear center (integer)
+#aout-remap-channel-rearcenter=4
+
+# Rear right (integer)
+#aout-remap-channel-rearright=5
+
+# Side left (integer)
+#aout-remap-channel-middleleft=6
+
+# Side right (integer)
+#aout-remap-channel-middleright=7
+
+# Low-frequency effects (integer)
+#aout-remap-channel-lfe=8
+
+# Normalize channels (boolean)
+#aout-remap-normalize=1
+
+[spatializer] # Audio Spatializer
+
+# Room size (float)
+#spatializer-roomsize=0.850000
+
+# Room width (float)
+#spatializer-width=1.000000
+
+# Wet (float)
+#spatializer-wet=0.400000
+
+# Dry (float)
+#spatializer-dry=0.500000
+
+# Damp (float)
+#spatializer-damp=0.500000
+
+[chorus_flanger] # Sound Delay
+
+# Delay time (float)
+#delay-time=20.000000
+
+# Sweep Depth (float)
+#sweep-depth=6.000000
+
+# Sweep Rate (float)
+#sweep-rate=6.000000
+
+# Feedback gain (float)
+#feedback-gain=0.500000
+
+# Wet mix (float)
+#wet-mix=0.400000
+
+# Dry Mix (float)
+#dry-mix=0.400000
+
+[audiobargraph_a] # Audio part of the BarGraph function
+
+# Defines if BarGraph information should be sent (integer)
+#audiobargraph_a-bargraph=1
+
+# Sends the barGraph information every n audio packets (integer)
+#audiobargraph_a-bargraph_repetition=4
+
+# Defines if silence alarm information should be sent (integer)
+#audiobargraph_a-silence=1
+
+# Time window to use in ms (integer)
+#audiobargraph_a-time_window=5000
+
+# Minimum Audio level to raise the alarm (float)
+#audiobargraph_a-alarm_threshold=0.020000
+
+# Time between two alarm messages in ms (integer)
+#audiobargraph_a-repetition_time=2000
+
+[scaletempo] # Audio tempo scaler synched with rate
+
+# Stride Length (integer)
+#scaletempo-stride=30
+
+# Overlap Length (float)
+#scaletempo-overlap=0.200000
+
+# Search Length (integer)
+#scaletempo-search=14
+
+[normvol] # Volume normalizer
+
+# Number of audio buffers (integer)
+#norm-buff-size=20
+
+# Maximal volume level (float)
+#norm-max-level=2.000000
+
+[gain] # Gain control filter
+
+# Gain multiplier (float)
+#gain-value=1.000000
+
+[compressor] # Dynamic range compressor
+
+# RMS/peak (float)
+#compressor-rms-peak=0.200000
+
+# Attack time (float)
+#compressor-attack=25.000000
+
+# Release time (float)
+#compressor-release=100.000000
+
+# Threshold level (float)
+#compressor-threshold=-11.000000
+
+# Ratio (float)
+#compressor-ratio=4.000000
+
+# Knee radius (float)
+#compressor-knee=5.000000
+
+# Makeup gain (float)
+#compressor-makeup-gain=7.000000
+
+[mono] # Stereo to mono downmixer
+
+# Use downmix algorithm (boolean)
+#sout-mono-downmix=1
+
+# Select channel to keep (integer)
+#sout-mono-channel=-1
+
+[stereo_widen] # Simple stereo widening effect
+
+# Delay time (float)
+#stereowiden-delay=20.000000
+
+# Feedback gain (float)
+#stereowiden-feedback=0.300000
+
+# Crossfeed (float)
+#stereowiden-crossfeed=0.300000
+
+# Dry mix (float)
+#stereowiden-dry-mix=0.800000
+
+[equalizer] # Equalizer with 10 bands
+
+# Equalizer preset (string)
+#equalizer-preset=flat
+
+# Bands gain (string)
+#equalizer-bands=
+
+# Two pass (boolean)
+#equalizer-2pass=0
+
+# Use VLC frequency bands (boolean)
+#equalizer-vlcfreqs=1
+
+# Global gain (float)
+#equalizer-preamp=12.000000
+
+[param_eq] # Parametric Equalizer
+
+# Low freq (Hz) (float)
+#param-eq-lowf=100.000000
+
+# Low freq gain (dB) (float)
+#param-eq-lowgain=0.000000
+
+# High freq (Hz) (float)
+#param-eq-highf=10000.000000
+
+# High freq gain (dB) (float)
+#param-eq-highgain=0.000000
+
+# Freq 1 (Hz) (float)
+#param-eq-f1=300.000000
+
+# Freq 1 gain (dB) (float)
+#param-eq-gain1=0.000000
+
+# Freq 1 Q (float)
+#param-eq-q1=3.000000
+
+# Freq 2 (Hz) (float)
+#param-eq-f2=1000.000000
+
+# Freq 2 gain (dB) (float)
+#param-eq-gain2=0.000000
+
+# Freq 2 Q (float)
+#param-eq-q2=3.000000
+
+# Freq 3 (Hz) (float)
+#param-eq-f3=3000.000000
+
+# Freq 3 gain (dB) (float)
+#param-eq-gain3=0.000000
+
+# Freq 3 Q (float)
+#param-eq-q3=3.000000
+
+[headphone] # Headphone virtual spatialization effect
+
+# Characteristic dimension (integer)
+#headphone-dim=10
+
+# Compensate delay (boolean)
+#headphone-compensate=0
+
+# No decoding of Dolby Surround (boolean)
+#headphone-dolby=0
+
+[scaletempo_pitch] # Pitch Shifter
+
+# Stride Length (integer)
+#scaletempo-stride=30
+
+# Overlap Length (float)
+#scaletempo-overlap=0.200000
+
+# Search Length (integer)
+#scaletempo-search=14
+
+# Pitch Shift (float)
+#pitch-shift=0.000000
+
+[speex_resampler] # Speex resampler
+
+# Resampling quality (integer)
+#speex-resampler-quality=4
+
+[avcodec] # FFmpeg audio/video decoder
+
+# Direct rendering (boolean)
+#avcodec-dr=1
+
+# Show corrupted frames (boolean)
+#avcodec-corrupted=1
+
+# Error resilience (integer)
+#avcodec-error-resilience=1
+
+# Workaround bugs (integer)
+#avcodec-workaround-bugs=1
+
+# Hurry up (boolean)
+#avcodec-hurry-up=1
+
+# Skip frame (default=0) (integer)
+#avcodec-skip-frame=0
+
+# Skip idct (default=0) (integer)
+#avcodec-skip-idct=0
+
+# Allow speed tricks (boolean)
+#avcodec-fast=0
+
+# Skip the loop filter for H.264 decoding (integer)
+#avcodec-skiploopfilter=0
+
+# Debug mask (integer)
+#avcodec-debug=0
+
+# Codec name (string)
+#avcodec-codec=
+
+# Hardware decoding (string)
+#avcodec-hw=any
+
+# Threads (integer)
+#avcodec-threads=0
+
+# Advanced options (string)
+#avcodec-options=
+
+# Codec name (string)
+#sout-avcodec-codec=
+
+# Quality level (string)
+#sout-avcodec-hq=rd
+
+# Ratio of key frames (integer)
+#sout-avcodec-keyint=0
+
+# Ratio of B frames (integer)
+#sout-avcodec-bframes=0
+
+# Hurry up (boolean)
+#sout-avcodec-hurry-up=0
+
+# Interlaced encoding (boolean)
+#sout-avcodec-interlace=0
+
+# Interlaced motion estimation (boolean)
+#sout-avcodec-interlace-me=1
+
+# Video bitrate tolerance (integer)
+#sout-avcodec-vt=0
+
+# Pre-motion estimation (boolean)
+#sout-avcodec-pre-me=0
+
+# Rate control buffer size (integer)
+#sout-avcodec-rc-buffer-size=0
+
+# Rate control buffer aggressiveness (float)
+#sout-avcodec-rc-buffer-aggressivity=1.000000
+
+# I quantization factor (float)
+#sout-avcodec-i-quant-factor=0.000000
+
+# Noise reduction (integer)
+#sout-avcodec-noise-reduction=0
+
+# MPEG4 quantization matrix (boolean)
+#sout-avcodec-mpeg4-matrix=0
+
+# Minimum video quantizer scale (integer)
+#sout-avcodec-qmin=0
+
+# Maximum video quantizer scale (integer)
+#sout-avcodec-qmax=0
+
+# Trellis quantization (boolean)
+#sout-avcodec-trellis=0
+
+# Fixed quantizer scale (float)
+#sout-avcodec-qscale=3.000000
+
+# Strict standard compliance (integer)
+#sout-avcodec-strict=0
+
+# Luminance masking (float)
+#sout-avcodec-lumi-masking=0.000000
+
+# Darkness masking (float)
+#sout-avcodec-dark-masking=0.000000
+
+# Motion masking (float)
+#sout-avcodec-p-masking=0.000000
+
+# Border masking (float)
+#sout-avcodec-border-masking=0.000000
+
+# Luminance elimination (integer)
+#sout-avcodec-luma-elim-threshold=0
+
+# Chrominance elimination (integer)
+#sout-avcodec-chroma-elim-threshold=0
+
+# Specify AAC audio profile to use (string)
+#sout-avcodec-aac-profile=low
+
+# Advanced options (string)
+#sout-avcodec-options=
+
+[spudec] # DVD subtitles decoder
+
+# Disable DVD subtitle transparency (boolean)
+#dvdsub-transparency=0
+
+[ttml] # TTML subtitles decoder
+
+# Subtitle justification (integer)
+#ttml-align=0
+
+[a52] # ATSC A/52 (AC-3) audio decoder
+
+# A/52 dynamic range compression (boolean)
+#a52-dynrng=1
+
+[dvbsub] # DVB subtitles decoder
+
+# Subpicture position (integer)
+#dvbsub-position=8
+
+# Decoding X coordinate (integer)
+#dvbsub-x=-1
+
+# Decoding Y coordinate (integer)
+#dvbsub-y=-1
+
+# Encoding X coordinate (integer)
+#sout-dvbsub-x=-1
+
+# Encoding Y coordinate (integer)
+#sout-dvbsub-y=-1
+
+[telx] # Teletext subtitles decoder
+
+# Override page (integer)
+#telx-override-page=-1
+
+# Ignore subtitle flag (boolean)
+#telx-ignore-subtitle-flag=0
+
+# Workaround for France (boolean)
+#telx-french-workaround=0
+
+[jpeg] # JPEG image decoder
+
+# Quality level (integer)
+#sout-jpeg-quality=95
+
+[theora] # Theora video decoder
+
+# Post processing quality (integer)
+#theora-postproc=-1
+
+# Encoding quality (integer)
+#sout-theora-quality=2
+
+[dav1d] # Dav1d video decoder
+
+# Frames Threads (integer)
+#dav1d-thread-frames=0
+
+[ddummy] # Dummy decoder
+
+# Save raw codec data (boolean)
+#dummy-save-es=0
+
+[twolame] # Libtwolame audio encoder
+
+# Encoding quality (float)
+#sout-twolame-quality=0.000000
+
+# Stereo mode (integer)
+#sout-twolame-mode=0
+
+# VBR mode (boolean)
+#sout-twolame-vbr=0
+
+# Psycho-acoustic model (integer)
+#sout-twolame-psy=3
+
+[svcdsub] # Philips OGT (SVCD subtitle) decoder
+
+[cc] # Closed Captions decoder
+
+# Opacity (boolean)
+#cc-opaque=1
+
+[speex] # Speex audio decoder
+
+# Mode (integer)
+#sout-speex-mode=0
+
+# Encoding complexity (integer)
+#sout-speex-complexity=3
+
+# CBR encoding (boolean)
+#sout-speex-cbr=0
+
+# Encoding quality (float)
+#sout-speex-quality=8.000000
+
+# Maximal bitrate (integer)
+#sout-speex-max-bitrate=0
+
+# Voice activity detection (boolean)
+#sout-speex-vad=1
+
+# Discontinuous Transmission (boolean)
+#sout-speex-dtx=0
+
+[subsusf] # USF subtitles decoder
+
+# Formatted Subtitles (boolean)
+#subsdec-formatted=1
+
+[vpx] # WebM video decoder
+
+# Quality mode (integer)
+#sout-vpx-quality-mode=1000000
+
+[vorbis] # Vorbis audio decoder
+
+# Encoding quality (integer)
+#sout-vorbis-quality=0
+
+# Maximum encoding bitrate (integer)
+#sout-vorbis-max-bitrate=0
+
+# Minimum encoding bitrate (integer)
+#sout-vorbis-min-bitrate=0
+
+# CBR encoding (boolean)
+#sout-vorbis-cbr=0
+
+[subsdec] # Text subtitle decoder
+
+# Subtitle justification (integer)
+#subsdec-align=-1
+
+# Subtitle text encoding (string)
+#subsdec-encoding=
+
+# UTF-8 subtitle autodetection (boolean)
+#subsdec-autodetect-utf8=1
+
+[panoramix] # Panoramix: wall with overlap video filter
+
+# Number of columns (integer)
+#panoramix-cols=-1
+
+# Number of rows (integer)
+#panoramix-rows=-1
+
+# length of the overlapping area (in %) (integer)
+#panoramix-bz-length=100
+
+# height of the overlapping area (in %) (integer)
+#panoramix-bz-height=100
+
+# Attenuation (boolean)
+#panoramix-attenuate=1
+
+# Attenuation, begin (in %) (integer)
+#panoramix-bz-begin=0
+
+# Attenuation, middle (in %) (integer)
+#panoramix-bz-middle=50
+
+# Attenuation, end (in %) (integer)
+#panoramix-bz-end=100
+
+# middle position (in %) (integer)
+#panoramix-bz-middle-pos=50
+
+# Gamma (Red) correction (float)
+#panoramix-bz-gamma-red=1.000000
+
+# Gamma (Green) correction (float)
+#panoramix-bz-gamma-green=1.000000
+
+# Gamma (Blue) correction (float)
+#panoramix-bz-gamma-blue=1.000000
+
+# Black Crush for Red (integer)
+#panoramix-bz-blackcrush-red=140
+
+# Black Crush for Green (integer)
+#panoramix-bz-blackcrush-green=140
+
+# Black Crush for Blue (integer)
+#panoramix-bz-blackcrush-blue=140
+
+# White Crush for Red (integer)
+#panoramix-bz-whitecrush-red=200
+
+# White Crush for Green (integer)
+#panoramix-bz-whitecrush-green=200
+
+# White Crush for Blue (integer)
+#panoramix-bz-whitecrush-blue=200
+
+# Black Level for Red (integer)
+#panoramix-bz-blacklevel-red=150
+
+# Black Level for Green (integer)
+#panoramix-bz-blacklevel-green=150
+
+# Black Level for Blue (integer)
+#panoramix-bz-blacklevel-blue=150
+
+# White Level for Red (integer)
+#panoramix-bz-whitelevel-red=0
+
+# White Level for Green (integer)
+#panoramix-bz-whitelevel-green=0
+
+# White Level for Blue (integer)
+#panoramix-bz-whitelevel-blue=0
+
+# Active windows (string)
+#panoramix-active=
+
+[wall] # Wall video filter
+
+# Number of columns (integer)
+#wall-cols=3
+
+# Number of rows (integer)
+#wall-rows=3
+
+# Active windows (string)
+#wall-active=
+
+# Element aspect ratio (string)
+#wall-element-aspect=16:9
+
+[clone] # Clone video filter
+
+# Number of clones (integer)
+#clone-count=2
+
+# Video output modules (string)
+#clone-vout-list=
+
+[qt] # Qt interface
+
+# Start in minimal view (without menus) (boolean)
+#qt-minimal-view=0
+
+# Systray icon (boolean)
+#qt-system-tray=1
+
+# Show notification popup on track change (integer)
+#qt-notification=1
+
+# Start VLC with only a systray icon (boolean)
+#qt-start-minimized=0
+
+# Pause the video playback when minimized (boolean)
+#qt-pause-minimized=0
+
+# Windows opacity between 0.1 and 1 (float)
+#qt-opacity=1.000000
+
+# Fullscreen controller opacity between 0.1 and 1 (float)
+#qt-fs-opacity=0.800000
+
+# Resize interface to the native video size (boolean)
+#qt-video-autoresize=1
+
+# Show playing item name in window title (boolean)
+#qt-name-in-title=1
+
+# Show a controller in fullscreen mode (boolean)
+#qt-fs-controller=1
+
+# Save the recently played items in the menu (boolean)
+#qt-recentplay=1
+
+# List of words separated by | to filter (string)
+#qt-recentplay-filter=
+
+# Continue playback? (integer)
+#qt-continue=1
+
+# Embed the file browser in open dialog (boolean)
+#qt-embedded-open=0
+
+# Show advanced preferences over simple ones (boolean)
+#qt-advanced-pref=0
+
+# Show unimportant error and warnings dialogs (boolean)
+#qt-error-dialogs=1
+
+# Define the colors of the volume slider (string)
+#qt-slider-colours=153;210;153;20;210;20;255;199;15;245;39;29
+
+# Ask for network policy at start (boolean)
+qt-privacy-ask=0
+
+# Define which screen fullscreen goes (integer)
+#qt-fullscreen-screennumber=-1
+
+# Load extensions on startup (boolean)
+#qt-autoload-extensions=1
+
+# Display background cone or art (boolean)
+#qt-bgcone=1
+
+# Expanding background cone or art (boolean)
+#qt-bgcone-expands=0
+
+# Allow automatic icon changes (boolean)
+#qt-icon-change=1
+
+# Maximum Volume displayed (integer)
+#qt-max-volume=125
+
+# Fullscreen controller mouse sensitivity (integer)
+#qt-fs-sensitivity=3
+
+# When to raise the interface (integer)
+#qt-auto-raise=1
+
+[file] # Secrets are stored on a file without any encryption
+
+# ? (string)
+#keystore-file=
+
+[asf] # ASF muxer
+
+# Title (string)
+#sout-asf-title=
+
+# Author (string)
+#sout-asf-author=
+
+# Copyright (string)
+#sout-asf-copyright=
+
+# Comment (string)
+#sout-asf-comment=
+
+# Rating (string)
+#sout-asf-rating=
+
+# Packet Size (integer)
+#sout-asf-packet-size=4096
+
+# Bitrate override (integer)
+#sout-asf-bitrate-override=0
+
+[mux_ogg] # Ogg/OGM muxer
+
+# Index interval (integer)
+#sout-ogg-indexintvl=1000
+
+# Index size ratio (float)
+#sout-ogg-indexratio=1.000000
+
+[avi] # AVI muxer
+
+# Artist (string)
+#sout-avi-artist=
+
+# Date (string)
+#sout-avi-date=
+
+# Genre (string)
+#sout-avi-genre=
+
+# Copyright (string)
+#sout-avi-copyright=
+
+# Comment (string)
+#sout-avi-comment=
+
+# Name (string)
+#sout-avi-name=
+
+# Subject (string)
+#sout-avi-subject=
+
+# Encoder (string)
+#sout-avi-encoder=VLC Media Player - 3.0.21 Vetinari
+
+# Keywords (string)
+#sout-avi-keywords=
+
+[mp4] # MP4/MOV muxer
+
+# Create "Fast Start" files (boolean)
+#sout-mp4-faststart=1
+
+[ps] # PS muxer
+
+# DTS delay (ms) (integer)
+#sout-ps-dts-delay=200
+
+# PES maximum size (integer)
+#sout-ps-pes-max-size=65500
+
+[vdpau_chroma] # VDPAU surface conversions
+
+# Deinterlace (integer)
+#vdpau-deinterlace=1
+
+# Inverse telecine (boolean)
+#vdpau-ivtc=0
+
+# Deinterlace chroma skip (boolean)
+#vdpau-chroma-skip=0
+
+# Noise reduction level (float)
+#vdpau-noise-reduction=0.000000
+
+# Scaling quality (integer)
+#vdpau-scaling=0
+
+[yuv] # YUV video output
+
+# device, fifo or filename (string)
+#yuv-file=stream.yuv
+
+# Chroma used (string)
+#yuv-chroma=
+
+# Add a YUV4MPEG2 header (boolean)
+#yuv-yuv4mpeg2=0
+
+[xcb_xv] # XVideo output (XCB)
+
+# XVideo adaptor number (integer)
+#xvideo-adaptor=-1
+
+# XVideo format id (integer)
+#xvideo-format-id=0
+
+[wl_shell] # Wayland shell surface
+
+# Wayland display (string)
+#wl-display=
+
+[vmem] # Video memory output
+
+# Width (integer)
+#vmem-width=320
+
+# Height (integer)
+#vmem-height=200
+
+# Pitch (integer)
+#vmem-pitch=640
+
+# Chroma (string)
+#vmem-chroma=RV16
+
+[vdummy] # Dummy video output
+
+# Dummy image chroma format (string)
+#dummy-chroma=
+
+[xdg_shell] # XDG shell surface
+
+# Wayland display (string)
+#wl-display=
+
+[flaschen] # Flaschen-Taschen video output
+
+# Flaschen-Taschen display address (string)
+#flaschen-display=
+
+# Width (integer)
+#flaschen-width=25
+
+# Height (integer)
+#flaschen-height=20
+
+[gl] # OpenGL video output
+
+# OpenGL extension (string)
+#gl=
+
+# Open GL/GLES hardware converter (string)
+#glconv=
+
+[xcb_window] # X11 video window (XCB)
+
+# X11 display (string)
+#x11-display=
+
+[xcb_x11] # X11 video output (XCB)
+
+[fb] # GNU/Linux framebuffer video output
+
+# Framebuffer device (string)
+#fbdev=/dev/fb0
+
+# Run fb on current tty (boolean)
+#fb-tty=1
+
+# Image format (default RGB) (string)
+#fb-chroma=
+
+# Framebuffer resolution to use (integer)
+#fb-mode=4
+
+# Framebuffer uses hw acceleration (boolean)
+#fb-hw-accel=1
+
+[deinterlace] # Deinterlacing video filter
+
+# Streaming deinterlace mode (string)
+#sout-deinterlace-mode=blend
+
+# Phosphor chroma mode for 4:2:0 input (integer)
+#sout-deinterlace-phosphor-chroma=2
+
+# Phosphor old field dimmer strength (integer)
+#sout-deinterlace-phosphor-dimmer=2
+
+[colorthres] # Color threshold filter
+
+# Color (integer)
+#colorthres-color=16711680
+
+# Saturation threshold (integer)
+#colorthres-saturationthres=20
+
+# Similarity threshold (integer)
+#colorthres-similaritythres=15
+
+[fps] # FPS conversion video filter
+
+# Frame rate (string)
+#fps-fps=
+
+[scene] # Scene video filter
+
+# Image format (string)
+#scene-format=png
+
+# Image width (integer)
+#scene-width=-1
+
+# Image height (integer)
+#scene-height=-1
+
+# Filename prefix (string)
+#scene-prefix=scene
+
+# Directory path prefix (string)
+#scene-path=
+
+# Always write to the same file (boolean)
+#scene-replace=0
+
+# Recording ratio (integer)
+#scene-ratio=50
+
+[transform] # Video transformation filter
+
+# Transform type (string)
+#transform-type=90
+
+[sepia] # Sepia video filter
+
+# Sepia intensity (integer)
+#sepia-intensity=120
+
+[motionblur] # Motion blur filter
+
+# Blur factor (1-127) (integer)
+#blur-factor=80
+
+[grain] # Grain video filter
+
+# Variance (float)
+#grain-variance=2.000000
+
+# Minimal period (integer)
+#grain-period-min=1
+
+# Maximal period (integer)
+#grain-period-max=48
+
+[mirror] # Mirror video filter
+
+# Mirror orientation (integer)
+#mirror-split=0
+
+# Direction (integer)
+#mirror-direction=0
+
+[ball] # Ball video filter
+
+# Ball color (string)
+#ball-color=red
+
+# Ball speed (integer)
+#ball-speed=4
+
+# Ball size (integer)
+#ball-size=10
+
+# Gradient threshold (integer)
+#ball-gradient-threshold=40
+
+# Edge visible (boolean)
+#ball-edge-visible=1
+
+[canvas] # Canvas video filter
+
+# Output width (integer)
+#canvas-width=0
+
+# Output height (integer)
+#canvas-height=0
+
+# Output picture aspect ratio (string)
+#canvas-aspect=
+
+# Pad video (boolean)
+#canvas-padd=1
+
+[puzzle] # Puzzle interactive game video filter
+
+# Number of puzzle rows (integer)
+#puzzle-rows=4
+
+# Number of puzzle columns (integer)
+#puzzle-cols=4
+
+# Border (integer)
+#puzzle-border=3
+
+# Small preview (boolean)
+#puzzle-preview=0
+
+# Small preview size (integer)
+#puzzle-preview-size=15
+
+# Piece edge shape size (integer)
+#puzzle-shape-size=90
+
+# Auto shuffle (integer)
+#puzzle-auto-shuffle=0
+
+# Auto solve (integer)
+#puzzle-auto-solve=0
+
+# Rotation (integer)
+#puzzle-rotation=0
+
+# Game mode (integer)
+#puzzle-mode=0
+
+[rotate] # Rotate video filter
+
+# Angle in degrees (float)
+#rotate-angle=30.000000
+
+# Use motion sensors (boolean)
+#rotate-use-motion=0
+
+[postproc] # Video post processing filter
+
+# Post processing quality (integer)
+#postproc-q=6
+
+# FFmpeg post processing filter chains (string)
+#postproc-name=default
+
+[gaussianblur] # Gaussian blur video filter
+
+# Gaussian's std deviation (float)
+#gaussianblur-sigma=2.000000
+
+[blendbench] # Blending benchmark filter
+
+# Number of time to blend (integer)
+#blendbench-loops=1000
+
+# Alpha of the blended image (integer)
+#blendbench-alpha=128
+
+# Image to be blended onto (string)
+#blendbench-base-image=
+
+# Chroma for the base image (string)
+#blendbench-base-chroma=I420
+
+# Image which will be blended (string)
+#blendbench-blend-image=
+
+# Chroma for the blend image (string)
+#blendbench-blend-chroma=YUVA
+
+[hqdn3d] # High Quality 3D Denoiser filter
+
+# Spatial luma strength (0-254) (float)
+#hqdn3d-luma-spat=4.000000
+
+# Spatial chroma strength (0-254) (float)
+#hqdn3d-chroma-spat=3.000000
+
+# Temporal luma strength (0-254) (float)
+#hqdn3d-luma-temp=6.000000
+
+# Temporal chroma strength (0-254) (float)
+#hqdn3d-chroma-temp=4.500000
+
+[gradient] # Gradient video filter
+
+# Distort mode (string)
+#gradient-mode=gradient
+
+# Gradient image type (integer)
+#gradient-type=0
+
+# Apply cartoon effect (boolean)
+#gradient-cartoon=1
+
+[alphamask] # Alpha mask video filter
+
+# Transparency mask (string)
+#alphamask-mask=
+
+[gradfun] # Gradfun video filter
+
+# Radius (integer)
+#gradfun-radius=16
+
+# Strength (float)
+#gradfun-strength=1.200000
+
+[adjust] # Image properties filter
+
+# Image contrast (0-2) (float)
+#contrast=1.000000
+
+# Image brightness (0-2) (float)
+#brightness=1.000000
+
+# Image hue (-180..180) (float)
+#hue=0.000000
+
+# Image saturation (0-3) (float)
+#saturation=1.000000
+
+# Image gamma (0-10) (float)
+#gamma=1.000000
+
+# Brightness threshold (boolean)
+#brightness-threshold=0
+
+[croppadd] # Video cropping filter
+
+# Pixels to crop from top (integer)
+#croppadd-croptop=0
+
+# Pixels to crop from bottom (integer)
+#croppadd-cropbottom=0
+
+# Pixels to crop from left (integer)
+#croppadd-cropleft=0
+
+# Pixels to crop from right (integer)
+#croppadd-cropright=0
+
+# Pixels to padd to top (integer)
+#croppadd-paddtop=0
+
+# Pixels to padd to bottom (integer)
+#croppadd-paddbottom=0
+
+# Pixels to padd to left (integer)
+#croppadd-paddleft=0
+
+# Pixels to padd to right (integer)
+#croppadd-paddright=0
+
+[posterize] # Posterize video filter
+
+# Posterize level (integer)
+#posterize-level=6
+
+[sharpen] # Sharpen video filter
+
+# Sharpen strength (0-2) (float)
+#sharpen-sigma=0.050000
+
+[bluescreen] # Bluescreen video filter
+
+# Bluescreen U value (integer)
+#bluescreen-u=120
+
+# Bluescreen V value (integer)
+#bluescreen-v=90
+
+# Bluescreen U tolerance (integer)
+#bluescreen-ut=17
+
+# Bluescreen V tolerance (integer)
+#bluescreen-vt=17
+
+[erase] # Erase video filter
+
+# Image mask (string)
+#erase-mask=
+
+# X coordinate (integer)
+#erase-x=0
+
+# Y coordinate (integer)
+#erase-y=0
+
+[extract] # Extract RGB component video filter
+
+# RGB component to extract (integer)
+#extract-component=16711680
+
+[anaglyph] # Convert 3D picture to anaglyph image video filter
+
+# Color scheme (string)
+#anaglyph-scheme=red-cyan
+
+[antiflicker] # antiflicker video filter
+
+# Window size (integer)
+#antiflicker-window-size=10
+
+# Softening value (integer)
+#antiflicker-softening-size=10
+
+[vaapi_filters] # Video Accelerated API filters
+
+# Denoise strength (0-2) (float)
+#denoise-sigma=1.000000
+
+[lua] # Lua interpreter
+
+# Lua interface (string)
+#lua-intf=dummy
+
+# Lua interface configuration (string)
+#lua-config=
+
+# Password (string)
+#http-password=
+
+# Source directory (string)
+#http-src=
+
+# Directory index (boolean)
+#http-index=0
+
+# TCP command input (string)
+#rc-host=
+
+# CLI input (string)
+#cli-host=
+
+# Host (string)
+#telnet-host=localhost
+
+# Port (integer)
+#telnet-port=4212
+
+# Password (string)
+#telnet-password=
+
+[ftp] # FTP input
+
+# Username (string)
+#ftp-user=
+
+# Password (string)
+#ftp-pwd=
+
+# FTP account (string)
+#ftp-account=anonymous
+
+[timecode] # Time code subpicture elementary stream generator
+
+# Frame rate (string)
+#timecode-fps=25/1
+
+[access_mms] # Microsoft Media Server (MMS) input
+
+# TCP/UDP timeout (ms) (integer)
+#mms-timeout=5000
+
+# Force selection of all streams (boolean)
+#mms-all=0
+
+# Maximum bitrate (integer)
+#mms-maxbitrate=0
+
+[concat] # Concatenated inputs
+
+# Inputs list (string)
+#concat-list=
+
+[udp] # UDP input
+
+# UDP Source timeout (sec) (integer)
+#udp-timeout=-1
+
+[http] # HTTP input
+
+# Auto re-connect (boolean)
+#http-reconnect=0
+
+[shm] # Shared memory framebuffer
+
+# Frame rate (float)
+#shm-fps=10.000000
+
+# Frame buffer depth (integer)
+#shm-depth=0
+
+# Frame buffer width (integer)
+#shm-width=800
+
+# Frame buffer height (integer)
+#shm-height=480
+
+[avio] # libavformat AVIO access
+
+# Advanced options (string)
+#avio-options=
+
+# Advanced options (string)
+#sout-avio-options=
+
+[imem] # Memory input
+
+# ID (integer)
+#imem-id=-1
+
+# Group (integer)
+#imem-group=0
+
+# Category (integer)
+#imem-cat=0
+
+# Codec (string)
+#imem-codec=
+
+# Language (string)
+#imem-language=
+
+# Sample rate (integer)
+#imem-samplerate=0
+
+# Channels count (integer)
+#imem-channels=0
+
+# Width (integer)
+#imem-width=0
+
+# Height (integer)
+#imem-height=0
+
+# Display aspect ratio (string)
+#imem-dar=
+
+# Frame rate (string)
+#imem-fps=
+
+# Size (integer)
+#imem-size=0
+
+[access_alsa] # ALSA audio capture
+
+# Stereo (boolean)
+#alsa-stereo=1
+
+# Sample rate (integer)
+#alsa-samplerate=48000
+
+[filesystem] # File input
+
+# List special files (boolean)
+#list-special-files=0
+
+[access] # HTTPS input
+
+# Cookies forwarding (boolean)
+#http-forward-cookies=1
+
+# User agent (string)
+#http-user-agent=
+
+[rtp] # Real-Time Protocol (RTP) input
+
+# RTCP (local) port (integer)
+#rtcp-port=0
+
+# Maximum RTP sources (integer)
+#rtp-max-src=1
+
+# RTP source timeout (sec) (integer)
+#rtp-timeout=5
+
+# Maximum RTP sequence number dropout (integer)
+#rtp-max-dropout=3000
+
+# Maximum RTP sequence number misordering (integer)
+#rtp-max-misorder=100
+
+# RTP payload format assumed for dynamic payloads (string)
+#rtp-dynamic-pt=
+
+[satip] # SAT>IP Receiver Plugin
+
+# Receive buffer (integer)
+#satip-buffer=4194304
+
+# Request multicast stream (boolean)
+#satip-multicast=0
+
+# Host (string)
+#satip-host=
+
+[rist] # RIST input
+
+# RIST maximum packet size (bytes) (integer)
+#packet-size=1472
+
+# RIST demux/decode maximum jitter (default is 5ms) (integer)
+#maximum-jitter=5
+
+# RIST latency (ms) (integer)
+#latency=1000
+
+# RIST nack retry interval (ms) (integer)
+#retry-interval=132
+
+# RIST reorder buffer (ms) (integer)
+#reorder-buffer=70
+
+# RIST maximum retry count (integer)
+#max-retries=10
+
+# RIST nack type, 0 = range, 1 = bitmask. Default is range (integer)
+#nack-type=0
+
+# Disable NACK output packets (boolean)
+#disable-nacks=0
+
+# Do not check for a valid rtcp message from the encoder (boolean)
+#mcast-blind-nacks=0
+
+[vdr] # VDR recordings
+
+# Chapter offset in ms (integer)
+#vdr-chapter-offset=0
+
+# Frame rate (float)
+#vdr-fps=25.000000
+
+[dtv] # Digital Television and Radio
+
+# DVB adapter (integer)
+#dvb-adapter=0
+
+# DVB device (integer)
+#dvb-device=0
+
+# Do not demultiplex (boolean)
+#dvb-budget-mode=0
+
+# Frequency (Hz) (integer)
+#dvb-frequency=0
+
+# Spectrum inversion (integer)
+#dvb-inversion=-1
+
+# Bandwidth (MHz) (integer)
+#dvb-bandwidth=0
+
+# Transmission mode (integer)
+#dvb-transmission=0
+
+# Guard interval (string)
+#dvb-guard=
+
+# High-priority code rate (string)
+#dvb-code-rate-hp=
+
+# Low-priority code rate (string)
+#dvb-code-rate-lp=
+
+# Hierarchy mode (integer)
+#dvb-hierarchy=-1
+
+# DVB-T2 Physical Layer Pipe (integer)
+#dvb-plp-id=0
+
+# Layer A modulation (string)
+#dvb-a-modulation=
+
+# Layer A code rate (string)
+#dvb-a-fec=
+
+# Layer A segments count (integer)
+#dvb-a-count=0
+
+# Layer A time interleaving (integer)
+#dvb-a-interleaving=0
+
+# Layer B modulation (string)
+#dvb-b-modulation=
+
+# Layer B code rate (string)
+#dvb-b-fec=
+
+# Layer B segments count (integer)
+#dvb-b-count=0
+
+# Layer B time interleaving (integer)
+#dvb-b-interleaving=0
+
+# Layer C modulation (string)
+#dvb-c-modulation=
+
+# Layer C code rate (string)
+#dvb-c-fec=
+
+# Layer C segments count (integer)
+#dvb-c-count=0
+
+# Layer C time interleaving (integer)
+#dvb-c-interleaving=0
+
+# Modulation / Constellation (string)
+#dvb-modulation=
+
+# Symbol rate (bauds) (integer)
+#dvb-srate=0
+
+# FEC code rate (string)
+#dvb-fec=
+
+# Stream identifier (integer)
+#dvb-stream=0
+
+# Pilot (integer)
+#dvb-pilot=-1
+
+# Roll-off factor (integer)
+#dvb-rolloff=-1
+
+# Transport stream ID (integer)
+#dvb-ts-id=0
+
+# Polarization (Voltage) (string)
+#dvb-polarization=
+
+# (integer)
+#dvb-voltage=13
+
+# High LNB voltage (boolean)
+#dvb-high-voltage=0
+
+# Local oscillator low frequency (kHz) (integer)
+#dvb-lnb-low=0
+
+# Local oscillator high frequency (kHz) (integer)
+#dvb-lnb-high=0
+
+# Universal LNB switch frequency (kHz) (integer)
+#dvb-lnb-switch=11700000
+
+# DiSEqC LNB number (integer)
+#dvb-satno=0
+
+# Uncommitted DiSEqC LNB number (integer)
+#dvb-uncommitted=0
+
+# Continuous 22kHz tone (integer)
+#dvb-tone=-1
+
+[file] # File logger
+
+# Log to file (boolean)
+#file-logging=0
+
+# Log filename (string)
+#logfile=
+
+# Log format (string)
+#logmode=text
+
+# Verbosity (integer)
+#log-verbose=-1
+
+[syslog] # System logger (syslog)
+
+# System log (syslog) (boolean)
+#syslog=0
+
+# Debug messages (boolean)
+#syslog-debug=0
+
+# Identity (string)
+#syslog-ident=vlc
+
+# Facility (string)
+#syslog-facility=user
+
+[console] # Console logger
+
+[mpegvideo] # MPEG-I/II video packetizer
+
+# Sync on Intra Frame (boolean)
+#packetizer-mpegvideo-sync-iframe=0
+
+[subsdelay] # Subtitle delay
+
+# Delay calculation mode (integer)
+#subsdelay-mode=1
+
+# Calculation factor (float)
+#subsdelay-factor=2.000000
+
+# Maximum overlapping subtitles (integer)
+#subsdelay-overlap=3
+
+# Minimum alpha value (integer)
+#subsdelay-min-alpha=70
+
+# Interval between two disappearances (integer)
+#subsdelay-min-stops=1000
+
+# Interval between appearance and disappearance (integer)
+#subsdelay-min-start-stop=1000
+
+# Interval between disappearance and appearance (integer)
+#subsdelay-min-stop-start=1000
+
+[audiobargraph_v] # Audio Bar Graph Video sub source
+
+# X coordinate (integer)
+#audiobargraph_v-x=0
+
+# Y coordinate (integer)
+#audiobargraph_v-y=0
+
+# Transparency of the bargraph (integer)
+#audiobargraph_v-transparency=255
+
+# Bargraph position (integer)
+#audiobargraph_v-position=-1
+
+# Bar width in pixel (integer)
+#audiobargraph_v-barWidth=10
+
+# Bar Height in pixel (integer)
+#audiobargraph_v-barHeight=400
+
+[dynamicoverlay] # Dynamic video overlay
+
+# Input FIFO (string)
+#overlay-input=
+
+# Output FIFO (string)
+#overlay-output=
+
+[marq] # Marquee display
+
+# Text (string)
+#marq-marquee=VLC
+
+# Text file (string)
+#marq-file=
+
+# X offset (integer)
+#marq-x=0
+
+# Y offset (integer)
+#marq-y=0
+
+# Marquee position (integer)
+#marq-position=-1
+
+# Opacity (integer)
+#marq-opacity=255
+
+# Color (integer)
+#marq-color=16777215
+
+# Font size, pixels (integer)
+#marq-size=0
+
+# Timeout (integer)
+#marq-timeout=0
+
+# Refresh period in ms (integer)
+#marq-refresh=1000
+
+[mosaic] # Mosaic video sub source
+
+# Transparency (integer)
+#mosaic-alpha=255
+
+# Height (integer)
+#mosaic-height=100
+
+# Width (integer)
+#mosaic-width=100
+
+# Mosaic alignment (integer)
+#mosaic-align=5
+
+# Top left corner X coordinate (integer)
+#mosaic-xoffset=0
+
+# Top left corner Y coordinate (integer)
+#mosaic-yoffset=0
+
+# Border width (integer)
+#mosaic-borderw=0
+
+# Border height (integer)
+#mosaic-borderh=0
+
+# Positioning method (integer)
+#mosaic-position=0
+
+# Number of rows (integer)
+#mosaic-rows=2
+
+# Number of columns (integer)
+#mosaic-cols=2
+
+# Keep aspect ratio (boolean)
+#mosaic-keep-aspect-ratio=0
+
+# Keep original size (boolean)
+#mosaic-keep-picture=0
+
+# Elements order (string)
+#mosaic-order=
+
+# Offsets in order (string)
+#mosaic-offsets=
+
+# Delay (integer)
+#mosaic-delay=0
+
+[rss] # RSS and Atom feed display
+
+# Feed URLs (string)
+#rss-urls=
+
+# X offset (integer)
+#rss-x=0
+
+# Y offset (integer)
+#rss-y=0
+
+# Text position (integer)
+#rss-position=-1
+
+# Opacity (integer)
+#rss-opacity=255
+
+# Color (integer)
+#rss-color=16777215
+
+# Font size, pixels (integer)
+#rss-size=0
+
+# Speed of feeds (integer)
+#rss-speed=100000
+
+# Max length (integer)
+#rss-length=60
+
+# Refresh time (integer)
+#rss-ttl=1800
+
+# Feed images (boolean)
+#rss-images=1
+
+# Title display mode (integer)
+#rss-title=-1
+
+[logo] # Logo sub source
+
+# Logo filenames (string)
+#logo-file=
+
+# X coordinate (integer)
+#logo-x=-1
+
+# Y coordinate (integer)
+#logo-y=-1
+
+# Logo individual image time in ms (integer)
+#logo-delay=1000
+
+# Logo animation # of loops (integer)
+#logo-repeat=-1
+
+# Opacity of the logo (integer)
+#logo-opacity=255
+
+# Logo position (integer)
+#logo-position=-1
+
+[core] # core program
+
+# Enable audio (boolean)
+#audio=1
+
+# Audio gain (float)
+#gain=1.000000
+
+# Audio output volume step (float)
+#volume-step=12.800000
+
+# Remember the audio volume (boolean)
+#volume-save=1
+
+# Force S/PDIF support (boolean)
+#spdif=0
+
+# Force detection of Dolby Surround (integer)
+#force-dolby-surround=0
+
+# Stereo audio output mode (integer)
+#stereo-mode=0
+
+# Audio desynchronization compensation (integer)
+#audio-desync=0
+
+# Replay gain mode (string)
+#audio-replay-gain-mode=none
+
+# Replay preamp (float)
+#audio-replay-gain-preamp=0.000000
+
+# Default replay gain (float)
+#audio-replay-gain-default=-7.000000
+
+# Peak protection (boolean)
+#audio-replay-gain-peak-protection=1
+
+# Enable time stretching audio (boolean)
+#audio-time-stretch=1
+
+# Audio output module (string)
+#aout=
+
+# Media role (string)
+#role=video
+
+# Audio filters (string)
+#audio-filter=
+
+# Audio visualizations (string)
+#audio-visual=none
+
+# Audio resampler (string)
+#audio-resampler=
+
+# Enable video (boolean)
+#video=1
+
+# Grayscale video output (boolean)
+#grayscale=0
+
+# Fullscreen video output (boolean)
+#fullscreen=0
+
+# Embedded video (boolean)
+#embedded-video=1
+
+# (boolean)
+#xlib=1
+
+# Drop late frames (boolean)
+#drop-late-frames=1
+
+# Skip frames (boolean)
+#skip-frames=1
+
+# Quiet synchro (boolean)
+#quiet-synchro=0
+
+# Key press events (boolean)
+#keyboard-events=1
+
+# Mouse events (boolean)
+#mouse-events=1
+
+# Always on top (boolean)
+#video-on-top=0
+
+# Enable wallpaper mode (boolean)
+#video-wallpaper=0
+
+# Disable screensaver (boolean)
+#disable-screensaver=1
+
+# Show media title on video (boolean)
+#video-title-show=1
+
+# Show video title for x milliseconds (integer)
+#video-title-timeout=5000
+
+# Position of video title (integer)
+#video-title-position=8
+
+# Hide cursor and fullscreen controller after x milliseconds (integer)
+#mouse-hide-timeout=1000
+
+# Video snapshot directory (or filename) (string)
+#snapshot-path=
+
+# Video snapshot file prefix (string)
+#snapshot-prefix=vlcsnap-
+
+# Video snapshot format (string)
+#snapshot-format=png
+
+# Display video snapshot preview (boolean)
+#snapshot-preview=1
+
+# Use sequential numbers instead of timestamps (boolean)
+#snapshot-sequential=0
+
+# Video snapshot width (integer)
+#snapshot-width=-1
+
+# Video snapshot height (integer)
+#snapshot-height=-1
+
+# Video width (integer)
+#width=-1
+
+# Video height (integer)
+#height=-1
+
+# Video X coordinate (integer)
+#video-x=0
+
+# Video Y coordinate (integer)
+#video-y=0
+
+# Video cropping (string)
+#crop=
+
+# Custom crop ratios list (string)
+#custom-crop-ratios=
+
+# Source aspect ratio (string)
+#aspect-ratio=
+
+# Video Auto Scaling (boolean)
+#autoscale=1
+
+# Monitor pixel aspect ratio (string)
+#monitor-par=
+
+# Custom aspect ratios list (string)
+#custom-aspect-ratios=
+
+# Fix HDTV height (boolean)
+#hdtv-fix=1
+
+# Window decorations (boolean)
+#video-deco=1
+
+# Video title (string)
+#video-title=
+
+# Video alignment (integer)
+#align=0
+
+# Zoom video (float)
+#zoom=1.000000
+
+# Deinterlace (integer)
+#deinterlace=-1
+
+# Deinterlace mode (string)
+#deinterlace-mode=auto
+
+# Video output module (string)
+#vout=
+
+# Video filter module (string)
+#video-filter=
+
+# Video splitter module (string)
+#video-splitter=
+
+# Enable sub-pictures (boolean)
+#spu=1
+
+# On Screen Display (boolean)
+#osd=1
+
+# Text rendering module (string)
+#text-renderer=
+
+# Use subtitle file (string)
+#sub-file=
+
+# Autodetect subtitle files (boolean)
+#sub-autodetect-file=1
+
+# Subtitle autodetection fuzziness (integer)
+#sub-autodetect-fuzzy=3
+
+# Subtitle autodetection paths (string)
+#sub-autodetect-path=./Subtitles, ./subtitles, ./Subs, ./subs
+
+# Force subtitle position (integer)
+#sub-margin=0
+
+# Subpictures source module (string)
+#sub-source=
+
+# Subpictures filter module (string)
+#sub-filter=
+
+# Program (integer)
+#program=0
+
+# Programs (string)
+#programs=
+
+# Audio track (integer)
+#audio-track=-1
+
+# Subtitle track (integer)
+#sub-track=-1
+
+# Audio language (string)
+#audio-language=
+
+# Subtitle language (string)
+#sub-language=
+
+# Menu language (string)
+#menu-language=
+
+# Audio track ID (integer)
+#audio-track-id=-1
+
+# Subtitle track ID (integer)
+#sub-track-id=-1
+
+# Preferred Closed Captions decoder (integer)
+#captions=608
+
+# Preferred video resolution (integer)
+#preferred-resolution=-1
+
+# Input repetitions (integer)
+#input-repeat=0
+
+# Start time (float)
+#start-time=0.000000
+
+# Stop time (float)
+#stop-time=0.000000
+
+# Run time (float)
+#run-time=0.000000
+
+# Fast seek (boolean)
+#input-fast-seek=0
+
+# Playback speed (float)
+#rate=1.000000
+
+# Input list (string)
+#input-list=
+
+# Input slave (experimental) (string)
+#input-slave=
+
+# Bookmarks list for a stream (string)
+#bookmarks=
+
+# DVD device (string)
+#dvd=/dev/sr0
+
+# VCD device (string)
+#vcd=/dev/sr0
+
+# MTU of the network interface (integer)
+#mtu=1400
+
+# TCP connection timeout (integer)
+#ipv4-timeout=5000
+
+# HTTP server address (string)
+#http-host=
+
+# HTTP server port (integer)
+#http-port=8080
+
+# HTTPS server port (integer)
+#https-port=8443
+
+# RTSP server address (string)
+#rtsp-host=
+
+# RTSP server port (integer)
+#rtsp-port=554
+
+# HTTP/TLS server certificate (string)
+#http-cert=
+
+# HTTP/TLS server private key (string)
+#http-key=
+
+# SOCKS server (string)
+#socks=
+
+# SOCKS user name (string)
+#socks-user=
+
+# SOCKS password (string)
+#socks-pwd=
+
+# Title metadata (string)
+#meta-title=
+
+# Author metadata (string)
+#meta-author=
+
+# Artist metadata (string)
+#meta-artist=
+
+# Genre metadata (string)
+#meta-genre=
+
+# Copyright metadata (string)
+#meta-copyright=
+
+# Description metadata (string)
+#meta-description=
+
+# Date metadata (string)
+#meta-date=
+
+# URL metadata (string)
+#meta-url=
+
+# File caching (ms) (integer)
+#file-caching=1000
+
+# Live capture caching (ms) (integer)
+#live-caching=300
+
+# Disc caching (ms) (integer)
+#disc-caching=300
+
+# Network caching (ms) (integer)
+#network-caching=1000
+
+# Clock reference average counter (integer)
+#cr-average=40
+
+# Clock synchronisation (integer)
+#clock-synchro=-1
+
+# Clock jitter (integer)
+#clock-jitter=5000
+
+# Network synchronisation (boolean)
+#network-synchronisation=0
+
+# Record directory (string)
+#input-record-path=
+
+# Prefer native stream recording (boolean)
+#input-record-native=1
+
+# Timeshift directory (string)
+#input-timeshift-path=
+
+# Timeshift granularity (integer)
+#input-timeshift-granularity=-1
+
+# Change title according to current media (string)
+#input-title-format=$Z
+
+# Disable all lua plugins (boolean)
+#lua=1
+
+# Preferred decoders list (string)
+#codec=
+
+# Preferred encoders list (string)
+#encoder=
+
+# Access module (string)
+#access=
+
+# Demux module (string)
+#demux=any
+
+# Stream filter module (string)
+#stream-filter=
+
+# Demux filter module (string)
+#demux-filter=
+
+# Default stream output chain (string)
+#sout=
+
+# Display while streaming (boolean)
+#sout-display=0
+
+# Keep stream output open (boolean)
+#sout-keep=0
+
+# Enable streaming of all ES (boolean)
+#sout-all=1
+
+# Enable audio stream output (boolean)
+#sout-audio=1
+
+# Enable video stream output (boolean)
+#sout-video=1
+
+# Enable SPU stream output (boolean)
+#sout-spu=1
+
+# Stream output muxer caching (ms) (integer)
+#sout-mux-caching=1500
+
+# VLM configuration file (string)
+#vlm-conf=
+
+# SAP announcement interval (integer)
+#sap-interval=5
+
+# Mux module (string)
+#mux=
+
+# Access output module (string)
+#access_output=
+
+# Hop limit (TTL) (integer)
+#ttl=-1
+
+# Multicast output interface (string)
+#miface=
+
+# DiffServ Code Point (integer)
+#dscp=0
+
+# Preferred packetizer list (string)
+#packetizer=
+
+# VoD server module (string)
+#vod-server=
+
+# Use a plugins cache (boolean)
+#plugins-cache=1
+
+# Scan for new plugins (boolean)
+#plugins-scan=1
+
+# Preferred keystore list (string)
+#keystore=
+
+# Allow real-time priority (boolean)
+#rt-priority=0
+
+# Adjust VLC priority (integer)
+#rt-offset=0
+
+# Play files randomly forever (boolean)
+#random=0
+
+# Repeat all (boolean)
+#loop=0
+
+# Repeat current item (boolean)
+#repeat=0
+
+# Play and exit (boolean)
+#play-and-exit=0
+
+# Play and stop (boolean)
+#play-and-stop=0
+
+# Play and pause (boolean)
+#play-and-pause=0
+
+# Start paused (boolean)
+#start-paused=0
+
+# Auto start (boolean)
+#playlist-autostart=1
+
+# Pause on audio communication (boolean)
+#playlist-cork=1
+
+# Allow only one running instance (boolean)
+#one-instance=0
+
+# Use only one instance when started from file manager (boolean)
+#one-instance-when-started-from-file=1
+
+# Enqueue items into playlist in one instance mode (boolean)
+#playlist-enqueue=0
+
+# Expose media player via D-Bus (boolean)
+#dbus=0
+
+# Use media library (boolean)
+#media-library=0
+
+# Display playlist tree (boolean)
+#playlist-tree=0
+
+# Default stream (string)
+#open=
+
+# Automatically preparse items (boolean)
+#auto-preparse=1
+
+# Preparsing timeout (integer)
+#preparse-timeout=5000
+
+# Allow metadata network access (boolean)
+#metadata-network-access=0
+
+# Subdirectory behavior (string)
+#recursive=collapse
+
+# Ignored extensions (string)
+#ignore-filetypes=m3u,db,nfo,ini,jpg,jpeg,ljpg,gif,png,pgm,pgmyuv,pbm,pam,tga,bmp,pnm,xpm,xcf,pcx,tif,tiff,lbm,sfv,txt,sub,idx,srt,cue,ssa
+
+# Show hidden files (boolean)
+#show-hiddenfiles=0
+
+# Services discovery modules (string)
+#services-discovery=
+
+# Run as daemon process (boolean)
+#daemon=0
+
+# Write process id to file (string)
+#pidfile=
+
+# Show advanced options (boolean)
+#advanced=0
+
+# Interface interaction (boolean)
+#interact=1
+
+# Locally collect statistics (boolean)
+#stats=1
+
+# Interface module (string)
+#intf=
+
+# Extra interface modules (string)
+#extraintf=
+
+# Control interfaces (string)
+#control=
+
+# Mouse wheel vertical axis control (integer)
+#hotkeys-y-wheel-mode=0
+
+# Mouse wheel horizontal axis control (integer)
+#hotkeys-x-wheel-mode=2
+
+# Fullscreen (string)
+#global-key-toggle-fullscreen=
+
+# Fullscreen (string)
+#key-toggle-fullscreen=f
+
+# Exit fullscreen (string)
+#global-key-leave-fullscreen=
+
+# Exit fullscreen (string)
+#key-leave-fullscreen=Esc
+
+# Play/Pause (string)
+#global-key-play-pause=
+
+# Play/Pause (string)
+#key-play-pause=Space Media Play Pause
+
+# Pause only (string)
+#global-key-pause=
+
+# Pause only (string)
+#key-pause=Browser Stop
+
+# Play only (string)
+#global-key-play=
+
+# Play only (string)
+#key-play=Browser Refresh
+
+# Faster (string)
+#global-key-faster=
+
+# Faster (string)
+#key-faster=+
+
+# Slower (string)
+#global-key-slower=
+
+# Slower (string)
+#key-slower=-
+
+# Normal rate (string)
+#global-key-rate-normal=
+
+# Normal rate (string)
+#key-rate-normal==
+
+# Faster (fine) (string)
+#global-key-rate-faster-fine=
+
+# Faster (fine) (string)
+#key-rate-faster-fine=]
+
+# Slower (fine) (string)
+#global-key-rate-slower-fine=
+
+# Slower (fine) (string)
+#key-rate-slower-fine=[
+
+# Next (string)
+#global-key-next=
+
+# Next (string)
+#key-next=n Media Next Track
+
+# Previous (string)
+#global-key-prev=
+
+# Previous (string)
+#key-prev=p Media Prev Track
+
+# Stop (string)
+#global-key-stop=
+
+# Stop (string)
+#key-stop=s Media Stop
+
+# Position (string)
+#global-key-position=
+
+# Position (string)
+#key-position=t
+
+# Very short backwards jump (string)
+#global-key-jump-extrashort=
+
+# Very short backwards jump (string)
+#key-jump-extrashort=Shift+Left
+
+# Very short forward jump (string)
+#global-key-jump+extrashort=
+
+# Very short forward jump (string)
+#key-jump+extrashort=Shift+Right
+
+# Short backwards jump (string)
+#global-key-jump-short=
+
+# Short backwards jump (string)
+#key-jump-short=Alt+Left
+
+# Short forward jump (string)
+#global-key-jump+short=
+
+# Short forward jump (string)
+#key-jump+short=Alt+Right
+
+# Medium backwards jump (string)
+#global-key-jump-medium=
+
+# Medium backwards jump (string)
+#key-jump-medium=Ctrl+Left
+
+# Medium forward jump (string)
+#global-key-jump+medium=
+
+# Medium forward jump (string)
+#key-jump+medium=Ctrl+Right
+
+# Long backwards jump (string)
+#global-key-jump-long=
+
+# Long backwards jump (string)
+#key-jump-long=Ctrl+Alt+Left
+
+# Long forward jump (string)
+#global-key-jump+long=
+
+# Long forward jump (string)
+#key-jump+long=Ctrl+Alt+Right
+
+# Next frame (string)
+#global-key-frame-next=
+
+# Next frame (string)
+#key-frame-next=e Browser Next
+
+# Activate (string)
+#global-key-nav-activate=
+
+# Activate (string)
+#key-nav-activate=Enter
+
+# Navigate up (string)
+#global-key-nav-up=
+
+# Navigate up (string)
+#key-nav-up=Up
+
+# Navigate down (string)
+#global-key-nav-down=
+
+# Navigate down (string)
+#key-nav-down=Down
+
+# Navigate left (string)
+#global-key-nav-left=
+
+# Navigate left (string)
+#key-nav-left=Left
+
+# Navigate right (string)
+#global-key-nav-right=
+
+# Navigate right (string)
+#key-nav-right=Right
+
+# Go to the DVD menu (string)
+#global-key-disc-menu=
+
+# Go to the DVD menu (string)
+#key-disc-menu=Shift+m
+
+# Select previous DVD title (string)
+#global-key-title-prev=
+
+# Select previous DVD title (string)
+#key-title-prev=Shift+o
+
+# Select next DVD title (string)
+#global-key-title-next=
+
+# Select next DVD title (string)
+#key-title-next=Shift+b
+
+# Select prev DVD chapter (string)
+#global-key-chapter-prev=
+
+# Select prev DVD chapter (string)
+#key-chapter-prev=Shift+p
+
+# Select next DVD chapter (string)
+#global-key-chapter-next=
+
+# Select next DVD chapter (string)
+#key-chapter-next=Shift+n
+
+# Quit (string)
+#global-key-quit=
+
+# Quit (string)
+#key-quit=Ctrl+q
+
+# Volume up (string)
+#global-key-vol-up=
+
+# Volume up (string)
+#key-vol-up=Ctrl+Up Volume Up
+
+# Volume down (string)
+#global-key-vol-down=
+
+# Volume down (string)
+#key-vol-down=Ctrl+Down Volume Down
+
+# Mute (string)
+#global-key-vol-mute=
+
+# Mute (string)
+#key-vol-mute=m Volume Mute
+
+# Subtitle delay up (string)
+#global-key-subdelay-up=
+
+# Subtitle delay up (string)
+#key-subdelay-up=h
+
+# Subtitle delay down (string)
+#global-key-subdelay-down=
+
+# Subtitle delay down (string)
+#key-subdelay-down=g
+
+# Subtitle sync / bookmark audio timestamp (string)
+#global-key-subsync-markaudio=
+
+# Subtitle sync / bookmark audio timestamp (string)
+#key-subsync-markaudio=Shift+h
+
+# Subtitle sync / bookmark subtitle timestamp (string)
+#global-key-subsync-marksub=
+
+# Subtitle sync / bookmark subtitle timestamp (string)
+#key-subsync-marksub=Shift+j
+
+# Subtitle sync / synchronize audio & subtitle timestamps (string)
+#global-key-subsync-apply=
+
+# Subtitle sync / synchronize audio & subtitle timestamps (string)
+#key-subsync-apply=Shift+k
+
+# Subtitle sync / reset audio & subtitle synchronization (string)
+#global-key-subsync-reset=
+
+# Subtitle sync / reset audio & subtitle synchronization (string)
+#key-subsync-reset=Ctrl+Shift+k
+
+# Subtitle position up (string)
+#global-key-subpos-up=
+
+# Subtitle position up (string)
+#key-subpos-up=
+
+# Subtitle position down (string)
+#global-key-subpos-down=
+
+# Subtitle position down (string)
+#key-subpos-down=
+
+# Audio delay up (string)
+#global-key-audiodelay-up=
+
+# Audio delay up (string)
+#key-audiodelay-up=k
+
+# Audio delay down (string)
+#global-key-audiodelay-down=
+
+# Audio delay down (string)
+#key-audiodelay-down=j
+
+# Cycle audio track (string)
+#global-key-audio-track=
+
+# Cycle audio track (string)
+#key-audio-track=b
+
+# Cycle through audio devices (string)
+#global-key-audiodevice-cycle=
+
+# Cycle through audio devices (string)
+#key-audiodevice-cycle=Shift+a
+
+# Cycle subtitle track in reverse order (string)
+#global-key-subtitle-revtrack=
+
+# Cycle subtitle track in reverse order (string)
+#key-subtitle-revtrack=Alt+v
+
+# Cycle subtitle track (string)
+#global-key-subtitle-track=
+
+# Cycle subtitle track (string)
+#key-subtitle-track=v
+
+# Toggle subtitles (string)
+#global-key-subtitle-toggle=
+
+# Toggle subtitles (string)
+#key-subtitle-toggle=Shift+v
+
+# Cycle next program Service ID (string)
+#global-key-program-sid-next=
+
+# Cycle next program Service ID (string)
+#key-program-sid-next=x
+
+# Cycle previous program Service ID (string)
+#global-key-program-sid-prev=
+
+# Cycle previous program Service ID (string)
+#key-program-sid-prev=Shift+x
+
+# Cycle source aspect ratio (string)
+#global-key-aspect-ratio=
+
+# Cycle source aspect ratio (string)
+#key-aspect-ratio=a
+
+# Cycle video crop (string)
+#global-key-crop=
+
+# Cycle video crop (string)
+#key-crop=c
+
+# Toggle autoscaling (string)
+#global-key-toggle-autoscale=
+
+# Toggle autoscaling (string)
+#key-toggle-autoscale=o
+
+# Increase scale factor (string)
+#global-key-incr-scalefactor=
+
+# Increase scale factor (string)
+#key-incr-scalefactor=Alt+o
+
+# Decrease scale factor (string)
+#global-key-decr-scalefactor=
+
+# Decrease scale factor (string)
+#key-decr-scalefactor=Alt+Shift+o
+
+# Toggle deinterlacing (string)
+#global-key-deinterlace=
+
+# Toggle deinterlacing (string)
+#key-deinterlace=d
+
+# Cycle deinterlace modes (string)
+#global-key-deinterlace-mode=
+
+# Cycle deinterlace modes (string)
+#key-deinterlace-mode=Shift+d
+
+# Show controller in fullscreen (string)
+#global-key-intf-show=
+
+# Show controller in fullscreen (string)
+#key-intf-show=i
+
+# Boss key (string)
+#global-key-intf-boss=
+
+# Boss key (string)
+#key-intf-boss=
+
+# Context menu (string)
+#global-key-intf-popup-menu=
+
+# Context menu (string)
+#key-intf-popup-menu=Menu
+
+# Take video snapshot (string)
+#global-key-snapshot=
+
+# Take video snapshot (string)
+#key-snapshot=Shift+s
+
+# Record (string)
+#global-key-record=
+
+# Record (string)
+#key-record=Shift+r
+
+# Zoom (string)
+#global-key-zoom=
+
+# Zoom (string)
+#key-zoom=z
+
+# Un-Zoom (string)
+#global-key-unzoom=
+
+# Un-Zoom (string)
+#key-unzoom=Shift+z
+
+# Toggle wallpaper mode in video output (string)
+#global-key-wallpaper=
+
+# Toggle wallpaper mode in video output (string)
+#key-wallpaper=w
+
+# Crop one pixel from the top of the video (string)
+#global-key-crop-top=
+
+# Crop one pixel from the top of the video (string)
+#key-crop-top=Alt+r
+
+# Uncrop one pixel from the top of the video (string)
+#global-key-uncrop-top=
+
+# Uncrop one pixel from the top of the video (string)
+#key-uncrop-top=Alt+Shift+r
+
+# Crop one pixel from the left of the video (string)
+#global-key-crop-left=
+
+# Crop one pixel from the left of the video (string)
+#key-crop-left=Alt+d
+
+# Uncrop one pixel from the left of the video (string)
+#global-key-uncrop-left=
+
+# Uncrop one pixel from the left of the video (string)
+#key-uncrop-left=Alt+Shift+d
+
+# Crop one pixel from the bottom of the video (string)
+#global-key-crop-bottom=
+
+# Crop one pixel from the bottom of the video (string)
+#key-crop-bottom=Alt+c
+
+# Uncrop one pixel from the bottom of the video (string)
+#global-key-uncrop-bottom=
+
+# Uncrop one pixel from the bottom of the video (string)
+#key-uncrop-bottom=Alt+Shift+c
+
+# Crop one pixel from the right of the video (string)
+#global-key-crop-right=
+
+# Crop one pixel from the right of the video (string)
+#key-crop-right=Alt+f
+
+# Uncrop one pixel from the right of the video (string)
+#global-key-uncrop-right=
+
+# Uncrop one pixel from the right of the video (string)
+#key-uncrop-right=Alt+Shift+f
+
+# Random (string)
+#global-key-random=
+
+# Random (string)
+#key-random=r
+
+# Normal/Loop/Repeat (string)
+#global-key-loop=
+
+# Normal/Loop/Repeat (string)
+#key-loop=l
+
+# Shrink the viewpoint field of view (360°) (string)
+#global-key-viewpoint-fov-in=
+
+# Shrink the viewpoint field of view (360°) (string)
+#key-viewpoint-fov-in=Page Up
+
+# Expand the viewpoint field of view (360°) (string)
+#global-key-viewpoint-fov-out=
+
+# Expand the viewpoint field of view (360°) (string)
+#key-viewpoint-fov-out=Page Down
+
+# Roll the viewpoint clockwise (360°) (string)
+#global-key-viewpoint-roll-clock=
+
+# Roll the viewpoint clockwise (360°) (string)
+#key-viewpoint-roll-clock=
+
+# Roll the viewpoint anti-clockwise (360°) (string)
+#global-key-viewpoint-roll-anticlock=
+
+# Roll the viewpoint anti-clockwise (360°) (string)
+#key-viewpoint-roll-anticlock=
+
+# 1:4 Quarter (string)
+#global-key-zoom-quarter=
+
+# 1:4 Quarter (string)
+#key-zoom-quarter=Alt+1
+
+# 1:2 Half (string)
+#global-key-zoom-half=
+
+# 1:2 Half (string)
+#key-zoom-half=Alt+2
+
+# 1:1 Original (string)
+#global-key-zoom-original=
+
+# 1:1 Original (string)
+#key-zoom-original=Alt+3
+
+# 2:1 Double (string)
+#global-key-zoom-double=
+
+# 2:1 Double (string)
+#key-zoom-double=Alt+4
+
+# Very short jump length (integer)
+#extrashort-jump-size=3
+
+# Short jump length (integer)
+#short-jump-size=10
+
+# Medium jump length (integer)
+#medium-jump-size=60
+
+# Long jump length (integer)
+#long-jump-size=300
+
+# Set playlist bookmark 1 (string)
+#global-key-set-bookmark1=
+
+# Set playlist bookmark 1 (string)
+#key-set-bookmark1=Ctrl+F1
+
+# Set playlist bookmark 2 (string)
+#global-key-set-bookmark2=
+
+# Set playlist bookmark 2 (string)
+#key-set-bookmark2=Ctrl+F2
+
+# Set playlist bookmark 3 (string)
+#global-key-set-bookmark3=
+
+# Set playlist bookmark 3 (string)
+#key-set-bookmark3=Ctrl+F3
+
+# Set playlist bookmark 4 (string)
+#global-key-set-bookmark4=
+
+# Set playlist bookmark 4 (string)
+#key-set-bookmark4=Ctrl+F4
+
+# Set playlist bookmark 5 (string)
+#global-key-set-bookmark5=
+
+# Set playlist bookmark 5 (string)
+#key-set-bookmark5=Ctrl+F5
+
+# Set playlist bookmark 6 (string)
+#global-key-set-bookmark6=
+
+# Set playlist bookmark 6 (string)
+#key-set-bookmark6=Ctrl+F6
+
+# Set playlist bookmark 7 (string)
+#global-key-set-bookmark7=
+
+# Set playlist bookmark 7 (string)
+#key-set-bookmark7=Ctrl+F7
+
+# Set playlist bookmark 8 (string)
+#global-key-set-bookmark8=
+
+# Set playlist bookmark 8 (string)
+#key-set-bookmark8=Ctrl+F8
+
+# Set playlist bookmark 9 (string)
+#global-key-set-bookmark9=
+
+# Set playlist bookmark 9 (string)
+#key-set-bookmark9=Ctrl+F9
+
+# Set playlist bookmark 10 (string)
+#global-key-set-bookmark10=
+
+# Set playlist bookmark 10 (string)
+#key-set-bookmark10=Ctrl+F10
+
+# Play playlist bookmark 1 (string)
+#global-key-play-bookmark1=
+
+# Play playlist bookmark 1 (string)
+#key-play-bookmark1=F1
+
+# Play playlist bookmark 2 (string)
+#global-key-play-bookmark2=
+
+# Play playlist bookmark 2 (string)
+#key-play-bookmark2=F2
+
+# Play playlist bookmark 3 (string)
+#global-key-play-bookmark3=
+
+# Play playlist bookmark 3 (string)
+#key-play-bookmark3=F3
+
+# Play playlist bookmark 4 (string)
+#global-key-play-bookmark4=
+
+# Play playlist bookmark 4 (string)
+#key-play-bookmark4=F4
+
+# Play playlist bookmark 5 (string)
+#global-key-play-bookmark5=
+
+# Play playlist bookmark 5 (string)
+#key-play-bookmark5=F5
+
+# Play playlist bookmark 6 (string)
+#global-key-play-bookmark6=
+
+# Play playlist bookmark 6 (string)
+#key-play-bookmark6=F6
+
+# Play playlist bookmark 7 (string)
+#global-key-play-bookmark7=
+
+# Play playlist bookmark 7 (string)
+#key-play-bookmark7=F7
+
+# Play playlist bookmark 8 (string)
+#global-key-play-bookmark8=
+
+# Play playlist bookmark 8 (string)
+#key-play-bookmark8=F8
+
+# Play playlist bookmark 9 (string)
+#global-key-play-bookmark9=
+
+# Play playlist bookmark 9 (string)
+#key-play-bookmark9=F9
+
+# Play playlist bookmark 10 (string)
+#global-key-play-bookmark10=
+
+# Play playlist bookmark 10 (string)
+#key-play-bookmark10=F10
+
+# Clear the playlist (string)
+#global-key-clear-playlist=
+
+# Clear the playlist (string)
+#key-clear-playlist=Ctrl+w
+
+# Reset subtitles text scale (string)
+#global-key-subtitle-text-scale-normal=
+
+# Reset subtitles text scale (string)
+#key-subtitle-text-scale-normal=Ctrl+0
+
+# Scale down subtitles text (string)
+#global-key-subtitle-text-scale-up=
+
+# Scale down subtitles text (string)
+#key-subtitle-text-scale-up=Ctrl+Mouse Wheel Up
+
+# Scale up subtitles text (string)
+#global-key-subtitle-text-scale-down=
+
+# Scale up subtitles text (string)
+#key-subtitle-text-scale-down=Ctrl+Mouse Wheel Down
+
+# Playlist bookmark 1 (string)
+#bookmark1=
+
+# Playlist bookmark 2 (string)
+#bookmark2=
+
+# Playlist bookmark 3 (string)
+#bookmark3=
+
+# Playlist bookmark 4 (string)
+#bookmark4=
+
+# Playlist bookmark 5 (string)
+#bookmark5=
+
+# Playlist bookmark 6 (string)
+#bookmark6=
+
+# Playlist bookmark 7 (string)
+#bookmark7=
+
+# Playlist bookmark 8 (string)
+#bookmark8=
+
+# Playlist bookmark 9 (string)
+#bookmark9=
+
+# Playlist bookmark 10 (string)
+#bookmark10=
+
diff --git a/.config/walker/config.toml b/.config/walker/config.toml
new file mode 100644
index 0000000..40ccb00
--- /dev/null
+++ b/.config/walker/config.toml
@@ -0,0 +1,211 @@
+force_keyboard_focus = true # forces keyboard forcus to stay in Walker
+close_when_open = true # close walker when invoking while already opened
+click_to_close = true # closes walker if clicking outside of the main content area
+selection_wrap = false # wrap list if at bottom or top
+global_argument_delimiter = "#" # query: firefox#https://benz.dev => part after delimiter will be ignored when querying. this should be the same as in the elephant config
+exact_search_prefix = "'" # disable fuzzy searching
+theme = "dark" # theme to use
+disable_mouse = false # disable mouse (on input and list only)
+debug = false # enables debug printing for some stuff, f.e. keybinds
+page_jump_items = 10 # number of items to skip with Page Up/Down
+hide_quick_activation = false # globally hide the quick activation buttons
+resume_last_query = false # open walker with the last query in place
+
+[shell]
+anchor_top = true
+anchor_bottom = true
+anchor_left = true
+anchor_right = true
+
+[placeholders]
+"default" = { input = "Search", list = "No Results" } # placeholders for input and empty list, key is the providers name, so f.e. "desktopapplications" or "menus:other"
+
+[keybinds]
+close = ["Escape"]
+next = ["Down"]
+previous = ["Up"]
+toggle_exact = ["ctrl e"]
+resume_last_query = ["ctrl r"]
+quick_activate = ["F1", "F2", "F3", "F4"]
+page_down = ["Page_Down"]
+page_up = ["Page_Up"]
+
+[providers]
+default = [
+ "desktopapplications",
+ "calc",
+ "runner",
+ "websearch",
+] # providers to be queried by default
+empty = ["desktopapplications"] # providers to be queried when query is empty
+ignore_preview = [] # providers that should not show previews
+max_results = 50 # global max results
+
+[providers.argument_delimiter] # define the argument delimiter per provider
+runner = " "
+
+[providers.sets] # define your own defaults/empty sets of providers
+[providers.max_results_provider] # define max results per provider in here
+
+[[providers.prefixes]]
+prefix = ";"
+provider = "providerlist"
+
+[[providers.prefixes]]
+prefix = ">"
+provider = "runner"
+
+[[providers.prefixes]]
+prefix = "/"
+provider = "files"
+
+[[providers.prefixes]]
+prefix = "."
+provider = "symbols"
+
+[[providers.prefixes]]
+prefix = "!"
+provider = "todo"
+
+[[providers.prefixes]]
+prefix = "%"
+provider = "bookmarks"
+
+[[providers.prefixes]]
+prefix = "="
+provider = "calc"
+
+[[providers.prefixes]]
+prefix = "@"
+provider = "websearch"
+
+[[providers.prefixes]]
+prefix = ":"
+provider = "clipboard"
+
+[[providers.prefixes]]
+prefix = "$"
+provider = "windows"
+
+[providers.clipboard]
+time_format = "%d.%m. - %H:%M" # format for the clipboard item date
+
+[providers.actions] # This will be MERGED/OVEWRITTEN with what the user specifies
+fallback = [
+ { action = "menus:open", label = "open", after = "Nothing" },
+ { action = "menus:default", label = "run", after = "Close" },
+ { action = "menus:parent", label = "back", bind = "Escape", after = "Nothing" },
+ { action = "erase_history", label = "clear hist", bind = "ctrl h", after = "AsyncReload" },
+]
+
+dmenu = [{ action = "select", default = true, bind = "Return" }]
+
+providerlist = [
+ { action = "activate", default = true, bind = "Return", after = "ClearReload" },
+]
+
+bluetooth = [
+ { action = "find", bind = "ctrl f", after = "AsyncClearReload" },
+ { action = "remove", bind = "ctrl d", after = "AsyncReload" },
+ { action = "trust", bind = "ctrl t", after = "AsyncReload" },
+ { action = "untrust", bind = "ctrl t", after = "AsyncReload" },
+ { action = "pair", bind = "Return", after = "AsyncReload" },
+ { action = "connect", default = true, bind = "Return", after = "AsyncReload" },
+ { action = "disconnect", default = true, bind = "Return", after = "AsyncReload" },
+]
+
+archlinuxpkgs = [
+ { action = "install", bind = "Return", default = true },
+ { action = "remove", bind = "Return" },
+ { action = "show_all", label = "show all", bind = "ctrl i", after = "AsyncClearReload" },
+ { action = "refresh", label = "refresh", bind = "ctrl r", after = "AsyncReload" },
+ { action = "visit_url", label = "open URL", bind = "ctrl o" },
+ { action = "show_installed", label = "show installed", bind = "ctrl i", after = "AsyncClearReload" },
+]
+
+calc = [
+ { action = "copy", default = true, bind = "Return" },
+ { action = "delete", bind = "ctrl d", after = "AsyncReload" },
+ { action = "save", bind = "ctrl s", after = "AsyncClearReload" },
+]
+
+websearch = [{ action = "search", default = true, bind = "Return" }]
+
+desktopapplications = [
+ { action = "start", default = true, bind = "Return" },
+ { action = "start:keep", label = "open+next", bind = "shift Return", after = "KeepOpen" },
+ { action = "new_instance", label = "new instance", bind = "ctrl Return" },
+ { action = "new_instance:keep", label = "new+next", bind = "ctrl alt Return", after = "KeepOpen" },
+ { action = "pin", bind = "ctrl p", after = "AsyncReload" },
+ { action = "unpin", bind = "ctrl p", after = "AsyncReload" },
+ { action = "pinup", bind = "ctrl n", after = "AsyncReload" },
+ { action = "pindown", bind = "ctrl m", after = "AsyncReload" },
+]
+
+files = [
+ { action = "open", default = true, bind = "Return" },
+ { action = "opendir", label = "open dir", bind = "ctrl Return" },
+ { action = "copypath", label = "copy path", bind = "ctrl shift c" },
+ { action = "copyfile", label = "copy file", bind = "ctrl c" },
+]
+
+1password = [
+ { action = "copy_password", label = "copy password", default = true, bind = "Return" },
+ { action = "copy_username", label = "copy username", bind = "shift Return" },
+ { action = "copy_2fa", label = "copy 2fa", bind = "ctrl Return" },
+]
+
+todo = [
+ { action = "save", default = true, bind = "Return", after = "AsyncClearReload" },
+ { action = "save_next", label = "save & new", bind = "shift Return", after = "AsyncClearReload" },
+ { action = "delete", bind = "ctrl d", after = "AsyncClearReload" },
+ { action = "active", default = true, bind = "Return", after = "Nothing" },
+ { action = "inactive", default = true, bind = "Return", after = "Nothing" },
+ { action = "done", bind = "ctrl f", after = "Nothing" },
+ { action = "change_category", bind = "ctrl y", label = "change category", after = "Nothing" },
+ { action = "clear", bind = "ctrl x", after = "AsyncClearReload" },
+ { action = "create", bind = "ctrl a", after = "AsyncClearReload" },
+ { action = "search", bind = "ctrl a", after = "AsyncClearReload" },
+]
+
+runner = [
+ { action = "run", default = true, bind = "Return" },
+ { action = "runterminal", label = "run in terminal", bind = "shift Return" },
+]
+
+symbols = [
+ { action = "run_cmd", label = "select", default = true, bind = "Return" },
+]
+
+unicode = [
+ { action = "run_cmd", label = "select", default = true, bind = "Return" },
+]
+
+nirisessions = [
+ { action = "start", label = "start", default = true, bind = "Return" },
+ { action = "start_new", label = "start blank", bind = "ctrl Return" },
+]
+
+clipboard = [
+ { action = "copy", default = true, bind = "Return" },
+ { action = "remove", bind = "ctrl d", after = "AsyncClearReload" },
+ { action = "remove_all", label = "clear", bind = "ctrl shift d", after = "AsyncClearReload" },
+ { action = "show_images_only", label = "only images", bind = "ctrl i", after = "AsyncClearReload" },
+ { action = "show_text_only", label = "only text", bind = "ctrl i", after = "AsyncClearReload" },
+ { action = "show_combined", label = "show all", bind = "ctrl i", after = "AsyncClearReload" },
+ { action = "pause", bind = "ctrl p" },
+ { action = "unpause", bind = "ctrl p" },
+ { action = "edit", bind = "ctrl o" },
+]
+
+bookmarks = [
+ { action = "save", bind = "Return", after = "AsyncClearReload" },
+ { action = "open", default = true, bind = "Return" },
+ { action = "delete", bind = "ctrl d", after = "AsyncClearReload" },
+ { action = "change_category", label = "Change category", bind = "ctrl y", after = "Nothing" },
+ { action = "change_browser", label = "Change browser", bind = "ctrl b", after = "Nothing" },
+ { action = "import", label = "Import", bind = "ctrl i", after = "AsyncClearReload" },
+ { action = "create", bind = "ctrl a", after = "AsyncClearReload" },
+ { action = "search", bind = "ctrl a", after = "AsyncClearReload" },
+]
+
diff --git a/.config/walker/themes/dark/style.css b/.config/walker/themes/dark/style.css
new file mode 100644
index 0000000..8f6f616
--- /dev/null
+++ b/.config/walker/themes/dark/style.css
@@ -0,0 +1,150 @@
+@define-color window_bg_color #171717; /* Main dark background */
+@define-color accent_bg_color #2A2A2A; /* Subtle dark-accent (replaces blue) */
+@define-color theme_fg_color #E0E0E0; /* Light grey text */
+@define-color error_bg_color #9A2B2B; /* Darker, muted red */
+@define-color error_fg_color #F2DADA; /* Softer error fg */
+
+* {
+ all: unset;
+}
+
+.normal-icons {
+ -gtk-icon-size: 16px;
+}
+
+.large-icons {
+ -gtk-icon-size: 32px;
+}
+
+scrollbar {
+ opacity: 0;
+}
+
+.box-wrapper {
+ box-shadow:
+ 0 19px 38px rgba(0, 0, 0, 0.3),
+ 0 15px 12px rgba(0, 0, 0, 0.22);
+ background: @window_bg_color;
+ padding: 20px;
+ border-radius: 20px;
+ border: 1px solid darker(@accent_bg_color);
+}
+
+.preview-box,
+.elephant-hint,
+.placeholder {
+ color: @theme_fg_color;
+}
+
+.search-container {
+ border-radius: 10px;
+}
+
+.input placeholder {
+ opacity: 0.5;
+}
+
+.input selection {
+ background: lighter(@accent_bg_color);
+}
+
+.input {
+ caret-color: @theme_fg_color;
+ background: #1f1f1f; /* slightly lighter than main bg for contrast */
+ padding: 10px;
+ color: @theme_fg_color;
+}
+
+.list {
+ color: @theme_fg_color;
+}
+
+.item-box {
+ border-radius: 10px;
+ padding: 10px;
+}
+
+.item-quick-activation {
+ background: alpha(@accent_bg_color, 0.25);
+ border-radius: 5px;
+ padding: 10px;
+}
+
+child:hover .item-box,
+child:selected .item-box {
+ background: alpha(@accent_bg_color, 0.35);
+}
+
+.item-subtext {
+ font-size: 12px;
+ opacity: 0.5;
+}
+
+.providerlist .item-subtext {
+ font-size: unset;
+ opacity: 0.75;
+}
+
+.item-image-text {
+ font-size: 28px;
+}
+
+.preview {
+ border: 1px solid alpha(@accent_bg_color, 0.35);
+ border-radius: 10px;
+ color: @theme_fg_color;
+}
+
+.calc .item-text {
+ font-size: 24px;
+}
+
+.symbols .item-image {
+ font-size: 24px;
+}
+
+.todo.done .item-text-box {
+ opacity: 0.25;
+}
+
+.todo.urgent {
+ font-size: 24px;
+}
+
+.todo.active {
+ font-weight: bold;
+}
+
+.bluetooth.disconnected {
+ opacity: 0.5;
+}
+
+.preview .large-icons {
+ -gtk-icon-size: 64px;
+}
+
+.keybinds-wrapper {
+ border-top: 1px solid @accent_bg_color;
+ font-size: 12px;
+ opacity: 0.5;
+ color: @theme_fg_color;
+}
+
+.keybind-bind {
+ font-weight: bold;
+ text-transform: lowercase;
+}
+
+.error {
+ padding: 10px;
+ background: @error_bg_color;
+ color: @error_fg_color;
+}
+
+:not(.calc).current {
+ font-style: italic;
+}
+
+.preview-content.archlinuxpkgs {
+ font-family: monospace;
+}
diff --git a/.config/waybar/LICENSE b/.config/waybar/LICENSE
new file mode 100644
index 0000000..355f2ba
--- /dev/null
+++ b/.config/waybar/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Jesse Mirabel
+
+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/.config/waybar/config.jsonc b/.config/waybar/config.jsonc
new file mode 100644
index 0000000..532b469
--- /dev/null
+++ b/.config/waybar/config.jsonc
@@ -0,0 +1,130 @@
+{
+ /*------------------------------------------------------------
+ regression: wildcard includes are broken after v0.14.0
+ - https://github.com/Alexays/Waybar/issues/4354
+ - https://github.com/sejjy/mechabar/issues/31
+ ------------------------------------------------------------*/
+ /*
+ "include": [
+ "~/.config/waybar/modules/*.jsonc",
+ "~/.config/waybar/modules/custom/*.jsonc",
+ "~/.config/waybar/modules/hyprland/*.jsonc"
+
+ // modules that are not included by default:
+ // "~/.config/waybar/modules/extras/*.jsonc"
+ ],
+ */
+
+ "include": [
+ // modules-left
+ "~/.config/waybar/modules/custom/user.jsonc",
+ "~/.config/waybar/modules/sway/workspaces.jsonc",
+ "~/.config/waybar/modules/sway/window.jsonc",
+
+ // modules-center
+ "~/.config/waybar/modules/sway/windowcount.jsonc",
+ // "~/.config/waybar/modules/temperature.jsonc",
+ "~/.config/waybar/modules/memory.jsonc",
+ "~/.config/waybar/modules/cpu.jsonc",
+ "~/.config/waybar/modules/custom/distro.jsonc",
+ "~/.config/waybar/modules/idle_inhibitor.jsonc",
+ "~/.config/waybar/modules/clock.jsonc",
+ "~/.config/waybar/modules/network.jsonc",
+ "~/.config/waybar/modules/bluetooth.jsonc",
+ "~/.config/waybar/modules/custom/system_update.jsonc",
+
+ // modules-right
+ "~/.config/waybar/modules/mpris.jsonc",
+ "~/.config/waybar/modules/pulseaudio.jsonc",
+ "~/.config/waybar/modules/backlight.jsonc",
+ "~/.config/waybar/modules/battery.jsonc",
+ "~/.config/waybar/modules/custom/power_menu.jsonc",
+
+ "~/.config/waybar/modules/custom/dividers.jsonc"
+
+ // modules that are not included by default:
+ // "~/.config/waybar/modules/extras/taskbar.jsonc",
+ // "~/.config/waybar/modules/extras/tray.jsonc",
+ // "~/.config/waybar/modules/extras/wireplumber.jsonc"
+ ],
+
+ /*------------
+ layout
+ ------------*/
+
+ "modules-left": [
+ "group/user",
+ "custom/left_div#1",
+ "sway/workspaces",
+ "custom/right_div#1",
+ "sway/window"
+ ],
+ "modules-center": [
+ "sway/windowcount",
+ "custom/left_div#2",
+ // "temperature",
+ "custom/left_div#3",
+ "memory",
+ "custom/left_div#4",
+ "cpu",
+ "custom/left_inv#1",
+ "custom/left_div#5",
+ "custom/distro",
+ "custom/right_div#2",
+ "custom/right_inv#1",
+ "idle_inhibitor",
+ "clock#time",
+ "custom/right_div#3",
+ "clock#date",
+ "custom/right_div#4",
+ "network",
+ "bluetooth",
+ "custom/system_update",
+ "custom/right_div#5"
+ ],
+ "modules-right": [
+ "tray",
+ "mpris",
+ "sway/language",
+ "custom/left_div#6",
+ "group/pulseaudio",
+ "custom/left_div#7",
+ "backlight",
+ "custom/left_div#8",
+ "battery",
+ "custom/left_inv#2",
+ "custom/power_menu"
+ ],
+
+ /*-------------
+ options
+ -------------*/
+
+ // "expand-center":
+ // "expand-left":
+ // "expand-right":
+ "layer": "top",
+ // "output":
+ // "position":
+ "height": 0,
+ "width": 0,
+ "margin": 0,
+ // "margin-top":
+ // "margin-left":
+ // "margin-bottom":
+ // "margin-right":
+ // "no-center":
+ "spacing": 0,
+ // "name":
+ "mode": "dock",
+ // "start_hidden":
+ // "modifier-reset":
+ // "exclusive":
+ // "fixed-center":
+ // "passthrough":
+ // "ipc":
+ // "id":
+ "reload_style_on_change": true
+ // "on-sigusr1":
+ // "on-sigusr2":
+}
diff --git a/.config/waybar/install.sh b/.config/waybar/install.sh
new file mode 100755
index 0000000..70a5095
--- /dev/null
+++ b/.config/waybar/install.sh
@@ -0,0 +1,54 @@
+#!/usr/bin/env bash
+
+RED='\033[1;31m'
+GRN='\033[1;32m'
+BLU='\033[1;34m'
+RST='\033[0m'
+
+DEPS=(
+ bluez
+ bluez-utils # bluetoothctl
+ brightnessctl
+ fzf
+ networkmanager # nmcli
+ pacman-contrib # checkupdates
+ pipewire-pulse
+ ttf-0xproto-nerd
+)
+
+main() {
+ printf '%bInstalling dependencies...%b\n' "$BLU" "$RST"
+
+ local package
+ local errors=0
+ for package in "${DEPS[@]}"; do
+ if pacman -Qi "$package" > /dev/null; then
+ printf '[%b/%b] %s\n' "$GRN" "$RST" "$package"
+ else
+ printf '[ ] %s...\n' "$package"
+
+ if sudo pacman -S --noconfirm "$package"; then
+ printf '[%b+%b] %s\n' "$GRN" "$RST" "$package"
+ else
+ printf '[%bx%b] %s\n' "$RED" "$RST" "$package"
+ ((errors++))
+ fi
+ fi
+ done
+
+ printf '\n%bMaking scripts executable...%b\n' "$BLU" "$RST"
+ chmod -v +x ~/.config/waybar/scripts/*.sh
+
+ pkill waybar
+ waybar &> /dev/null &
+ disown
+
+ if ((errors > 0)); then
+ printf '\nInstallation completed with %b%d errors%b\n' \
+ "$RED" "$errors" "$RST"
+ else
+ printf '\n%bInstallation complete!%b\n' "$GRN" "$RST"
+ fi
+}
+
+main
diff --git a/.config/waybar/modules/backlight.jsonc b/.config/waybar/modules/backlight.jsonc
new file mode 100644
index 0000000..d5b53fc
--- /dev/null
+++ b/.config/waybar/modules/backlight.jsonc
@@ -0,0 +1,32 @@
+{
+ "backlight": {
+ // "interval":
+ "format": "{icon} {percent}%",
+ "format-icons": [
+ "", "", "", "", "", "", "", "", ""
+ ],
+ "min-length": 7,
+ "max-length": 7,
+ // "align":
+ // "justify":
+ // "rotate":
+ // "states":
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ "on-scroll-up": "~/.config/waybar/scripts/backlight.sh up",
+ "on-scroll-down": "~/.config/waybar/scripts/backlight.sh down",
+ // "smooth-scrolling-threshold":
+ // "reverse-scrolling":
+ // "reverse-mouse-scrolling":
+ // "scroll-step":
+ // "min-brightness":
+ "tooltip": false
+ // "tooltip-format":
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/battery.jsonc b/.config/waybar/modules/battery.jsonc
new file mode 100644
index 0000000..1df2f70
--- /dev/null
+++ b/.config/waybar/modules/battery.jsonc
@@ -0,0 +1,45 @@
+{
+ "battery": {
+ // "bat":
+ // "adapter":
+ // "design-capacity":
+ // "full-at":
+ // "interval":
+ "states": {
+ "warning": 20,
+ "critical": 10
+ },
+ "format": "{icon} {capacity}%",
+ "format-time": "{H} hr {M} min",
+ "format-icons": [
+ "", "", "", "", "", "", "", "", "", ""
+ ],
+ "format-charging": " {capacity}%",
+ "min-length": 7,
+ "max-length": 7,
+ // "align":
+ // "justify":
+ // "rotate":
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format": "Discharging: {time}",
+ "tooltip-format-charging": "Charging: {time}",
+ // "weighted-average":
+ // "bat-compatibility":
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ "events": {
+ "on-discharging-warning": "notify-send 'Battery Low (20%)' -i 'battery-020'",
+ "on-discharging-critical": "notify-send 'Battery Critical (10%)' -u critical -i 'battery-010'",
+ "on-charging-100": "notify-send 'Battery Full (100%)' -i 'battery-100-charged'"
+ }
+ }
+}
diff --git a/.config/waybar/modules/bluetooth.jsonc b/.config/waybar/modules/bluetooth.jsonc
new file mode 100644
index 0000000..3113870
--- /dev/null
+++ b/.config/waybar/modules/bluetooth.jsonc
@@ -0,0 +1,38 @@
+{
+ "bluetooth": {
+ // "controller":
+ // "format-device-preference":
+ "format": "",
+ "format-disabled": "",
+ "format-off": "",
+ "format-on": "",
+ "format-connected": "",
+ // "format-connected-battery":
+ // "format-no-controller":
+ // "format-icons":
+ // "rotate":
+ "min-length": 2,
+ "max-length": 2,
+ // "align":
+ // "justify":
+ "on-click": "kitty -e ~/.config/waybar/scripts/bluetooth.sh",
+ // "on-click-middle":
+ "on-click-right": "bluetoothctl power off && notify-send 'Bluetooth Off' -i 'network-bluetooth-inactive' -r 1925",
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format": "Device Addr: {device_address}",
+ "tooltip-format-disabled": "Bluetooth Disabled",
+ "tooltip-format-off": "Bluetooth Off",
+ "tooltip-format-on": "Bluetooth Disconnected",
+ "tooltip-format-connected": "Device: {device_alias}",
+ "tooltip-format-enumerate-connected": "Device: {device_alias}",
+ "tooltip-format-connected-battery": "Device: {device_alias}\nBattery: {device_battery_percentage}%",
+ "tooltip-format-enumerate-connected-battery": "Device: {device_alias}\nBattery: {device_battery_percentage}%"
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/clock.jsonc b/.config/waybar/modules/clock.jsonc
new file mode 100644
index 0000000..13c7edf
--- /dev/null
+++ b/.config/waybar/modules/clock.jsonc
@@ -0,0 +1,71 @@
+{
+ "clock#time": {
+ // "interval":
+ "format": "{:%H:%M}",
+ // "timezone":
+ // "timezones":
+ // "locale":
+ "min-length": 5,
+ "max-length": 5,
+ // "rotate": 0,
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format": "Standard Time: {:%I:%M %p}"
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ },
+
+ /*--------------
+ calendar
+ --------------*/
+
+ "clock#date": {
+ // "interval":
+ "format": " {:%m-%d}",
+ // "timezone":
+ // "timezones":
+ // "locale":
+ "min-length": 8,
+ "max-length": 8,
+ // "rotate":
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format": "{calendar}",
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 6,
+ // "week-pos":
+ // "on-scroll":
+ "format": {
+ "months": "{}",
+ "days": "{}",
+ // "weeks":
+ "weekdays": "{}",
+ "today": "{}"
+ }
+ },
+ "actions": {
+ "on-click": "mode"
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ }
+ }
+}
diff --git a/.config/waybar/modules/cpu.jsonc b/.config/waybar/modules/cpu.jsonc
new file mode 100644
index 0000000..67ac8a5
--- /dev/null
+++ b/.config/waybar/modules/cpu.jsonc
@@ -0,0 +1,27 @@
+{
+ "cpu": {
+ "interval": 10,
+ "format": " {usage}%",
+ "format-warning": " {usage}%",
+ "format-critical": " {usage}%",
+ // "format-icons":
+ "min-length": 7,
+ "max-length": 7,
+ // "align":
+ // "justify":
+ // "rotate":
+ "states": {
+ "warning": 75,
+ "critical": 90
+ },
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ "tooltip": false
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/custom/distro.jsonc b/.config/waybar/modules/custom/distro.jsonc
new file mode 100644
index 0000000..62c86ea
--- /dev/null
+++ b/.config/waybar/modules/custom/distro.jsonc
@@ -0,0 +1,33 @@
+{
+ "custom/distro": {
+ // "exec":
+ // "exec-if":
+ // "exec-on-event":
+ // "hide-empty-text":
+ // "return-type":
+ // "interval":
+ // "restart-interval":
+ // "signal":
+ "format": "",
+ // "format-icons":
+ // "rotate":
+ // "min-length":
+ // "max-length":
+ // "align":
+ // "justify":
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ "tooltip": false
+ // "tooltip-format":
+ // "escape":
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/custom/dividers.jsonc b/.config/waybar/modules/custom/dividers.jsonc
new file mode 100644
index 0000000..b1944a0
--- /dev/null
+++ b/.config/waybar/modules/custom/dividers.jsonc
@@ -0,0 +1,79 @@
+{
+ /*-------------------
+ left dividers
+ -------------------*/
+
+ "custom/left_div#1": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/left_div#2": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/left_div#3": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/left_div#4": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/left_div#5": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/left_div#6": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/left_div#7": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/left_div#8": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // inverse
+ "custom/left_inv#1": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/left_inv#2": {
+ "format": "",
+ "tooltip": false
+ },
+
+ /*--------------------
+ right dividers
+ --------------------*/
+
+ "custom/right_div#1": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/right_div#2": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/right_div#3": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/right_div#4": {
+ "format": "",
+ "tooltip": false
+ },
+ "custom/right_div#5": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // inverse
+ "custom/right_inv#1": {
+ "format": "",
+ "tooltip": false
+ }
+}
diff --git a/.config/waybar/modules/custom/power_menu.jsonc b/.config/waybar/modules/custom/power_menu.jsonc
new file mode 100644
index 0000000..c438735
--- /dev/null
+++ b/.config/waybar/modules/custom/power_menu.jsonc
@@ -0,0 +1,33 @@
+{
+ "custom/power_menu": {
+ // "exec":
+ // "exec-if":
+ // "exec-on-event":
+ // "hide-empty-text":
+ // "return-type":
+ // "interval":
+ // "restart-interval":
+ // "signal":
+ "format": "",
+ // "format-icons":
+ // "rotate":
+ // "min-length":
+ // "max-length":
+ // "align":
+ // "justify":
+ "on-click": "kitty -e ~/.config/waybar/scripts/power-menu.sh",
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format": "Power Menu"
+ // "escape":
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/custom/system_update.jsonc b/.config/waybar/modules/custom/system_update.jsonc
new file mode 100644
index 0000000..b3106cf
--- /dev/null
+++ b/.config/waybar/modules/custom/system_update.jsonc
@@ -0,0 +1,33 @@
+{
+ "custom/system_update": {
+ "exec": "~/.config/waybar/scripts/system-update.sh module",
+ // "exec-if":
+ // "exec-on-event":
+ // "hide-empty-text":
+ "return-type": "json",
+ "interval": 3600,
+ // "restart-interval":
+ "signal": 1,
+ "format": "{}",
+ // "format-icons":
+ // "rotate":
+ // "align":
+ // "justify":
+ "min-length": 2,
+ "max-length": 2,
+ "on-click": "kitty -e ~/.config/waybar/scripts/system-update.sh"
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ // "tooltip-format":
+ // "escape":
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/custom/user.jsonc b/.config/waybar/modules/custom/user.jsonc
new file mode 100644
index 0000000..9046dfe
--- /dev/null
+++ b/.config/waybar/modules/custom/user.jsonc
@@ -0,0 +1,83 @@
+{
+ "group/user": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/trigger",
+ "custom/user"
+ ],
+ "drawer": {
+ // "transition-duration":
+ // "transition-left-to-right":
+ // "children-class":
+ // "click-to-reveal":
+ }
+ },
+
+ "custom/trigger": {
+ // "exec":
+ // "exec-if":
+ // "exec-on-event":
+ // "hide-empty-text":
+ // "return-type":
+ // "interval":
+ // "restart-interval":
+ // "signal":
+ "format": "",
+ // "format-icons":
+ // "rotate":
+ "min-length": 4,
+ "max-length": 4,
+ // "align":
+ // "justify":
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ "tooltip": false
+ // "tooltip-format":
+ // "escape":
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ },
+
+ /*--------------
+ username
+ --------------*/
+
+ "custom/user": {
+ "exec": "id -un",
+ // "exec-if":
+ // "exec-on-event":
+ // "hide-empty-text":
+ // "return-type":
+ // "interval":
+ // "restart-interval":
+ // "signal":
+ "format": "{}",
+ // "format-icons":
+ // "rotate":
+ // "min-length":
+ // "max-length":
+ // "align":
+ // "justify":
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ "tooltip": false
+ // "tooltip-format":
+ // "escape":
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/extras/taskbar.jsonc b/.config/waybar/modules/extras/taskbar.jsonc
new file mode 100644
index 0000000..245ca32
--- /dev/null
+++ b/.config/waybar/modules/extras/taskbar.jsonc
@@ -0,0 +1,21 @@
+{
+ "wlr/taskbar": {
+ // "all-outputs":
+ // "format":
+ // "icon-theme":
+ // "icon-size":
+ // "markup":
+ // "tooltip":
+ // "tooltip-format":
+ // "active-first":
+ // "sort-by-app-id":
+ "on-click": "activate",
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ "ignore-list": [ "kitty" ],
+ // "app_ids-mapping":
+ // "rewrite":
+ "cursor": true
+ }
+}
diff --git a/.config/waybar/modules/extras/tray.jsonc b/.config/waybar/modules/extras/tray.jsonc
new file mode 100644
index 0000000..c576fdb
--- /dev/null
+++ b/.config/waybar/modules/extras/tray.jsonc
@@ -0,0 +1,13 @@
+{
+ "tray": {
+ "icon-size": 16,
+ // "show-passive-items":
+ // "smooth-scrolling-threshold":
+ "spacing": 12,
+ // "reverse-direction":
+ // "on-update":
+ // "expand":
+ // "icons":
+ "cursor": true
+ }
+}
diff --git a/.config/waybar/modules/extras/wireplumber.jsonc b/.config/waybar/modules/extras/wireplumber.jsonc
new file mode 100644
index 0000000..7bfc14e
--- /dev/null
+++ b/.config/waybar/modules/extras/wireplumber.jsonc
@@ -0,0 +1,82 @@
+{
+ "group/wireplumber": {
+ "orientation": "horizontal",
+ "modules": [
+ "wireplumber#output",
+ "wireplumber#input"
+ ],
+ "drawer": {
+ // "transition-duration":
+ "transition-left-to-right": false
+ // "children-class":
+ // "click-to-reveal":
+ }
+ },
+
+ /*-------------------
+ output device
+ -------------------*/
+
+ "wireplumber#output": {
+ "format": "{icon} {volume}%",
+ "format-muted": " {volume}%",
+ // "format-source":
+ // "format-source-muted":
+ "format-icons": [
+ "", "", ""
+ ],
+ // "rotate":
+ // "states":
+ "min-length": 7,
+ "max-length": 7,
+ // "align":
+ // "justify":
+ // "scroll-step":
+ "on-click": "~/.config/waybar/scripts/volume.sh output mute",
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ "on-scroll-up": "~/.config/waybar/scripts/volume.sh output raise",
+ "on-scroll-down": "~/.config/waybar/scripts/volume.sh output lower",
+ // "tooltip":
+ "tooltip-format": "Device: {node_name}",
+ // "max-volume":
+ // "reverse-scrolling":
+ "node-type": "Audio/Sink"
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ },
+
+ /*----------------
+ microphone
+ ----------------*/
+
+ "wireplumber#input": {
+ "format": " {volume}%",
+ "format-muted": " {volume}%",
+ // "format-source":
+ // "format-source-muted":
+ // "rotate":
+ // "states":
+ "min-length": 7,
+ "max-length": 7,
+ // "align":
+ // "justify":
+ // "scroll-step":
+ "on-click": "~/.config/waybar/scripts/volume.sh input mute",
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ "on-scroll-up": "~/.config/waybar/scripts/volume.sh input raise",
+ "on-scroll-down": "~/.config/waybar/scripts/volume.sh input lower",
+ // "tooltip":
+ "tooltip-format": "Device: {node_name}",
+ // "max-volume":
+ // "reverse-scrolling":
+ "node-type": "Audio/Source"
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ }
+}
diff --git a/.config/waybar/modules/idle_inhibitor.jsonc b/.config/waybar/modules/idle_inhibitor.jsonc
new file mode 100644
index 0000000..36f3186
--- /dev/null
+++ b/.config/waybar/modules/idle_inhibitor.jsonc
@@ -0,0 +1,30 @@
+{
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ },
+ // "rotate":
+ "min-length": 3,
+ "max-length": 3,
+ // "align":
+ // "justify":
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format-activated": "Keep Screen On: {status}",
+ "tooltip-format-deactivated": "Keep Screen On: {status}",
+ "start-activated": false
+ // "timeout":
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/memory.jsonc b/.config/waybar/modules/memory.jsonc
new file mode 100644
index 0000000..e9d6ab8
--- /dev/null
+++ b/.config/waybar/modules/memory.jsonc
@@ -0,0 +1,31 @@
+{
+ "memory": {
+ "interval": 10,
+ "format": " {percentage}%",
+ "format-warning": " {percentage}%",
+ "format-critical": " {percentage}%",
+ // "format-icons":
+ // "rotate":
+ "states": {
+ "warning": 75,
+ "critical": 90
+ },
+ "min-length": 7,
+ "max-length": 7,
+ // "align":
+ // "justify":
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format": "Memory Used: {used:0.1f} GB / {total:0.1f} GB"
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/mpris.jsonc b/.config/waybar/modules/mpris.jsonc
new file mode 100644
index 0000000..51218b4
--- /dev/null
+++ b/.config/waybar/modules/mpris.jsonc
@@ -0,0 +1,36 @@
+{
+ "mpris": {
+ // "player":
+ // "ignored-players":
+ // "interval":
+ "format": "{player_icon} {title} - {artist}",
+ "format-paused": "{status_icon} {title} - {artist}",
+ "tooltip-format": "Playing: {title} - {artist}",
+ "tooltip-format-paused": "Paused: {title} - {artist}",
+ // "enable-tooltip-len-limits":
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ "player-icons": {
+ "default": ""
+ },
+ "status-icons": {
+ "paused": ""
+ },
+ // "artist-len":
+ // "album-len":
+ // "title-len":
+ // "dynamic-len":
+ // "dynamic-order":
+ // "dynamic-separator":
+ // "dynamic-importance-order":
+ // "truncate-hours":
+ // "ellipsis":
+ // "rotate":
+ // "min-length":
+ "max-length": 1000
+ // "align":
+ // "justify":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/network.jsonc b/.config/waybar/modules/network.jsonc
new file mode 100644
index 0000000..5095e90
--- /dev/null
+++ b/.config/waybar/modules/network.jsonc
@@ -0,0 +1,40 @@
+{
+ "network": {
+ // "interface":
+ // "rfkill":
+ "interval": 10,
+ // "family":
+ "format": "",
+ "format-ethernet": "",
+ "format-wifi": "{icon}",
+ // "format-linked":
+ "format-disconnected": "",
+ "format-disabled": "",
+ // "format-alt":
+ "format-icons": [
+ "", "", "", ""
+ ],
+ // "rotate":
+ "min-length": 2,
+ "max-length": 2,
+ // "align":
+ // "justify":
+ "on-click": "kitty -e ~/.config/waybar/scripts/network.sh",
+ // "on-click-middle":
+ "on-click-right": "nmcli radio wifi off && notify-send 'Wi-Fi Disabled' -i 'network-wireless-off' -r 1125",
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format": "Gateway: {gwaddr}",
+ "tooltip-format-ethernet": "Interface: {ifname}",
+ "tooltip-format-wifi": "Network: {essid}\nIP Addr: {ipaddr}/{cidr}\nStrength: {signalStrength}%\nFrequency: {frequency} GHz",
+ "tooltip-format-disconnected": "Wi-Fi Disconnected",
+ "tooltip-format-disabled": "Wi-Fi Disabled"
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/pulseaudio.jsonc b/.config/waybar/modules/pulseaudio.jsonc
new file mode 100644
index 0000000..b32c9e2
--- /dev/null
+++ b/.config/waybar/modules/pulseaudio.jsonc
@@ -0,0 +1,96 @@
+{
+ "group/pulseaudio": {
+ "orientation": "horizontal",
+ "modules": [
+ "pulseaudio#output",
+ "pulseaudio#input"
+ ],
+ "drawer": {
+ // "transition-duration":
+ "transition-left-to-right": false
+ // "children-class":
+ // "click-to-reveal":
+ }
+ },
+
+ /*-------------------
+ output device
+ -------------------*/
+
+ "pulseaudio#output": {
+ "format": "{icon} {volume}%",
+ // "format-bluetooth":
+ "format-muted": "{icon} {volume}%",
+ // "format-source":
+ // "format-source-muted":
+ "format-icons": {
+ "default": [ "", "", "" ],
+ "default-muted": "",
+ "headphone": "",
+ "headphone-muted": "",
+ "headset": "",
+ "headset-muted": ""
+ },
+ // "rotate":
+ // "states":
+ "min-length": 7,
+ "max-length": 7,
+ // "align":
+ // "justify":
+ // "scroll-step":
+ "on-click": "~/.config/waybar/scripts/volume.sh output mute",
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ "on-scroll-up": "~/.config/waybar/scripts/volume.sh output raise",
+ "on-scroll-down": "~/.config/waybar/scripts/volume.sh output lower",
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format": "Output Device: {desc}"
+ // "max-volume":
+ // "ignored-sinks":
+ // "reverse-scrolling":
+ // "reverse-mouse-scrolling":
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ },
+
+ /*----------------
+ microphone
+ ----------------*/
+
+ "pulseaudio#input": {
+ "format": "{format_source}",
+ // "format-bluetooth":
+ // "format-muted":
+ "format-source": " {volume}%",
+ "format-source-muted": " {volume}%",
+ // "format-icons":
+ // "rotate":
+ // "states":
+ "min-length": 7,
+ "max-length": 7,
+ // "align":
+ // "justify":
+ // "scroll-step":
+ "on-click": "~/.config/waybar/scripts/volume.sh input mute",
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ "on-scroll-up": "~/.config/waybar/scripts/volume.sh input raise",
+ "on-scroll-down": "~/.config/waybar/scripts/volume.sh input lower",
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format": "Input Device: {desc}"
+ // "max-volume":
+ // "ignored-sinks":
+ // "reverse-scrolling":
+ // "reverse-mouse-scrolling":
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/modules/sway/window.jsonc b/.config/waybar/modules/sway/window.jsonc
new file mode 100644
index 0000000..be63023
--- /dev/null
+++ b/.config/waybar/modules/sway/window.jsonc
@@ -0,0 +1,13 @@
+{
+ "sway/window": {
+ "format": "{}",
+ "rewrite": {
+ "": "Desktop",
+ "kitty": "Terminal",
+ "Alacritty": "Terminal",
+ "zsh": "Terminal",
+ "~": "Terminal"
+ },
+ "swap-icon-label": false
+ }
+}
diff --git a/.config/waybar/modules/sway/windowcount.jsonc b/.config/waybar/modules/sway/windowcount.jsonc
new file mode 100644
index 0000000..6cdf14b
--- /dev/null
+++ b/.config/waybar/modules/sway/windowcount.jsonc
@@ -0,0 +1,12 @@
+{
+ "sway/windowcount": {
+ "format": "[{}]",
+ // "format-empty":
+ // "format-windowed":
+ // "format-fullscreen":
+ // "separate-outputs":
+ // "min-length":
+ // "max-length":
+ "swap-icon-label": false
+ }
+}
diff --git a/.config/waybar/modules/sway/workspaces.jsonc b/.config/waybar/modules/sway/workspaces.jsonc
new file mode 100644
index 0000000..65e3dc0
--- /dev/null
+++ b/.config/waybar/modules/sway/workspaces.jsonc
@@ -0,0 +1,11 @@
+{
+ "sway/workspaces": {
+ "format": "{icon}",
+ "disable-scroll": true,
+ "format-icons": {
+ "default": "",
+ "focused": ""
+ },
+ "cursor": true
+ }
+}
diff --git a/.config/waybar/modules/temperature.jsonc b/.config/waybar/modules/temperature.jsonc
new file mode 100644
index 0000000..78b3707
--- /dev/null
+++ b/.config/waybar/modules/temperature.jsonc
@@ -0,0 +1,35 @@
+{
+ "temperature": {
+ "thermal-zone": 1,
+ // "hwmon-path":
+ // "hwmon-path-abs":
+ // "input-filename":
+ // "warning-threshold":
+ "critical-threshold": 90,
+ "interval": 10,
+ // "format-warning":
+ "format-critical": " {temperatureC}°C",
+ "format": "{icon} {temperatureC}°C",
+ "format-icons": [
+ "", "", ""
+ ],
+ // "rotate":
+ "min-length": 8,
+ "max-length": 8,
+ // "align":
+ // "justify":
+ // "on-click":
+ // "on-click-middle":
+ // "on-click-right":
+ // "on-update":
+ // "on-scroll-up":
+ // "on-scroll-down":
+ // "smooth-scrolling-threshold":
+ // "tooltip":
+ "tooltip-format": "Temp in Fahrenheit: {temperatureF}°F"
+ // "menu":
+ // "menu-file":
+ // "menu-actions":
+ // "expand":
+ }
+}
diff --git a/.config/waybar/scripts/backlight.sh b/.config/waybar/scripts/backlight.sh
new file mode 100755
index 0000000..bba254a
--- /dev/null
+++ b/.config/waybar/scripts/backlight.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+#
+# Adjust screen brightness and send a notification with the current level
+#
+# Requirements:
+# - brightnessctl
+# - notify-send (libnotify)
+#
+# Author: Jesse Mirabel
+# Created: August 28, 2025
+# License: MIT
+
+VALUE=1
+
+print-usage() {
+ local script=${0##*/}
+
+ cat <<- EOF
+ USAGE: $script [OPTIONS]
+
+ Adjust screen brightness and send a notification with the current level
+
+ OPTIONS:
+ up Increase brightness by
+ down Decrease brightness by
+ Default value: $VALUE
+
+ EXAMPLES:
+ Increase brightness:
+ $ $script up
+
+ Decrease brightness by 5:
+ $ $script down 5
+ EOF
+
+ exit 1
+}
+
+set-brightness() {
+ local op
+ case $action in
+ 'up') op='+' ;;
+ 'down') op='-' ;;
+ esac
+
+ brightnessctl -n set "${value}%${op}" &> /dev/null
+
+ local level
+ level=$(brightnessctl -m | awk -F ',' '{print $4}')
+
+ notify-send "Brightness: $level" -h int:value:"$level" -i 'contrast' -r 2825
+}
+
+main() {
+ action=$1
+ value=${2:-$VALUE}
+
+ ! ((value > 0)) && print-usage
+
+ case $action in
+ 'up' | 'down') set-brightness ;;
+ *) print-usage ;;
+ esac
+}
+
+main "$@"
diff --git a/.config/waybar/scripts/bluetooth.sh b/.config/waybar/scripts/bluetooth.sh
new file mode 100755
index 0000000..5037204
--- /dev/null
+++ b/.config/waybar/scripts/bluetooth.sh
@@ -0,0 +1,120 @@
+#!/usr/bin/env bash
+#
+# Scan, select, pair, and connect to Bluetooth devices
+#
+# Requirements:
+# - bluetoothctl (bluez-utils)
+# - fzf
+# - notify-send (libnotify)
+#
+# Author: Jesse Mirabel
+# Created: August 19, 2025
+# License: MIT
+
+RED='\033[1;31m'
+RST='\033[0m'
+
+TIMEOUT=10
+
+get-device-list() {
+ bluetoothctl --timeout $TIMEOUT scan on > /dev/null &
+
+ local i num
+ for ((i = 1; i <= TIMEOUT; i++)); do
+ printf '\rScanning for devices... (%d/%d)' $i $TIMEOUT
+ printf '\n%bPress [q] to stop%b\n\n' "$RED" "$RST"
+
+ num=$(bluetoothctl devices | grep -c Device)
+
+ printf '\rDevices: %s' "$num"
+ printf '\033[3A' # move cursor up 3 lines
+
+ read -rs -n 1 -t 1
+ [[ $REPLY == [Qq] ]] && break
+ done
+
+ printf '\n%bScanning stopped.%b\n\n' "$RED" "$RST"
+
+ list=$(bluetoothctl devices | grep Device | cut -d ' ' -f 2-)
+
+ if [[ -z $list ]]; then
+ notify-send 'Bluetooth' 'No devices found' -i 'package-broken'
+ return 1
+ fi
+}
+
+select-device() {
+ local header
+ header=$(printf '%-17s %s' 'Address' 'Name')
+
+ # shellcheck disable=SC1090
+ . ~/.config/waybar/scripts/fzf-colors.sh 2> /dev/null
+
+ local opts=(
+ --border=sharp
+ --border-label=' Bluetooth Devices '
+ --ghost='Search'
+ --header="$header"
+ --height=~100%
+ --highlight-line
+ --info=inline-right
+ --pointer=
+ --reverse
+ "${COLORS[@]}"
+ )
+
+ address=$(fzf "${opts[@]}" <<< "$list" | awk '{print $1}')
+
+ [[ -z $address ]] && return 1
+
+ local connected
+ connected=$(bluetoothctl info "$address" | grep Connected |
+ awk '{print $2}')
+
+ if [[ $connected == 'yes' ]]; then
+ notify-send 'Bluetooth' 'Already connected to this device' \
+ -i 'package-install'
+ return 1
+ fi
+}
+
+pair-and-connect() {
+ local paired
+ paired=$(bluetoothctl info "$address" | grep Paired | awk '{print $2}')
+
+ if [[ $paired == 'no' ]]; then
+ printf 'Pairing...'
+
+ if ! timeout $TIMEOUT bluetoothctl pair "$address" > /dev/null; then
+ notify-send 'Bluetooth' 'Failed to pair' -i 'package-purge'
+ return 1
+ fi
+ fi
+
+ printf '\nConnecting...'
+
+ if timeout $TIMEOUT bluetoothctl connect "$address" > /dev/null; then
+ notify-send 'Bluetooth' 'Successfully connected' -i 'package-install'
+ else
+ notify-send 'Bluetooth' 'Failed to connect' -i 'package-purge'
+ fi
+}
+
+main() {
+ local status
+ status=$(bluetoothctl show | grep PowerState | awk '{print $2}')
+
+ if [[ $status == 'off' ]]; then
+ bluetoothctl power on > /dev/null
+ notify-send 'Bluetooth On' -i 'network-bluetooth-activated' -r 1925
+ fi
+
+ tput civis # make cursor invisible
+ get-device-list || exit 1
+ tput cnorm # make cursor visible
+
+ select-device || exit 1
+ pair-and-connect || exit 1
+}
+
+main
diff --git a/.config/waybar/scripts/fzf-colors.sh b/.config/waybar/scripts/fzf-colors.sh
new file mode 100755
index 0000000..ae577ba
--- /dev/null
+++ b/.config/waybar/scripts/fzf-colors.sh
@@ -0,0 +1,82 @@
+#!/usr/bin/env bash
+#
+# NOTE:
+# The names, maps, and COLORS arrays are all parallel:
+# - names[i]: the color name as defined in theme.css
+# - maps[i]: variable to store the hex value
+# - COLORS: color config passed to fzf
+#
+# Add themes by defining the names array in def-colors().
+
+FILE="$XDG_CONFIG_HOME/waybar/theme.css"
+
+def-colors() {
+ local theme
+ theme=$(sed 1q "$FILE")
+
+ declare -ga names
+
+ # Add themes here:
+ if [[ $theme == *"catppuccin"* ]]; then
+ names=(
+ 'surface0' 'base' 'rosewater'
+ 'red' 'text' 'red'
+ 'mauve' 'rosewater' 'lavender'
+ 'text' 'mauve' 'red'
+ 'surface1' 'overlay0' 'text'
+ )
+ fi
+}
+
+get-hex() {
+ local defs
+ defs=$(sed -n '3,28p' "$FILE")
+
+ local n hex
+ declare -gA colors
+
+ for n in "${names[@]}"; do
+ read -r _ _ hex < <(grep " $n " <<< "$defs")
+ hex=${hex%;}
+
+ colors[$n]=$hex
+ done
+}
+
+map-colors() {
+ local -a maps=(
+ '_cur_bg' '_bg' '_spinner'
+ '_hl' '_fg' '_header'
+ '_info' '_pointer' '_marker'
+ '_cur_fg' '_prompt' '_cur_hl'
+ '_sel_bg' '_border' '_label'
+ )
+
+ local n
+ local i=0
+
+ for n in "${names[@]}"; do
+ declare -g "${maps[i]}"="${colors[$n]}"
+ ((i++))
+ done
+}
+
+main() {
+ def-colors
+ get-hex
+ map-colors
+
+ # shellcheck disable=SC2154
+ # These variables are defined dynamically
+ declare -ga COLORS=(
+ "--color= bg+:$_cur_bg, bg:$_bg, spinner:$_spinner"
+ "--color= hl:$_hl, fg:$_fg, header:$_header"
+ "--color= info:$_info, pointer:$_pointer, marker:$_marker"
+ "--color= fg+:$_cur_fg, prompt:$_prompt, hl+:$_cur_hl"
+ "--color=selected-bg:$_sel_bg, border:$_border, label:$_label"
+ )
+
+ export COLORS
+}
+
+main
diff --git a/.config/waybar/scripts/network.sh b/.config/waybar/scripts/network.sh
new file mode 100755
index 0000000..db34eec
--- /dev/null
+++ b/.config/waybar/scripts/network.sh
@@ -0,0 +1,99 @@
+#!/usr/bin/env bash
+#
+# Scan, select, and connect to Wi-Fi networks
+#
+# Requirements:
+# - nmcli (networkmanager)
+# - fzf
+# - notify-send (libnotify)
+#
+# Author: Jesse Mirabel
+# Created: August 11, 2025
+# License: MIT
+
+RED='\033[1;31m'
+RST='\033[0m'
+
+TIMEOUT=5
+
+get-network-list() {
+ nmcli device wifi rescan 2> /dev/null
+
+ local i
+ for ((i = 1; i <= TIMEOUT; i++)); do
+ printf '\rScanning for networks... (%d/%d)' $i $TIMEOUT
+ printf '\033[1A' # move cursor up 1 line
+
+ list=$(timeout 1 nmcli device wifi list)
+ networks=$(tail -n +2 <<< "$list" | awk '$2 != "--"')
+
+ [[ -n $networks ]] && break
+ done
+
+ printf '\n%bScanning stopped.%b\n\n' "$RED" "$RST"
+
+ if [[ -z $networks ]]; then
+ notify-send 'Wi-Fi' 'No networks found' -i 'package-broken'
+ return 1
+ fi
+}
+
+select-network() {
+ local header
+ header=$(head -n 1 <<< "$list")
+
+ # shellcheck disable=SC1090
+ . ~/.config/waybar/scripts/fzf-colors.sh 2> /dev/null
+
+ local opts=(
+ --border=sharp
+ --border-label=' Wi-Fi Networks '
+ --ghost='Search'
+ --header="$header"
+ --height=~100%
+ --highlight-line
+ --info=inline-right
+ --pointer=
+ --reverse
+ "${COLORS[@]}"
+ )
+
+ bssid=$(fzf "${opts[@]}" <<< "$networks" | awk '{print $1}')
+
+ if [[ -z $bssid ]]; then
+ return 1
+ elif [[ $bssid == '*' ]]; then
+ notify-send 'Wi-Fi' 'Already connected to this network' \
+ -i 'package-install'
+ return 1
+ fi
+}
+
+connect-to-network() {
+ printf 'Connecting...\n'
+
+ if nmcli --ask device wifi connect "$bssid"; then
+ notify-send 'Wi-Fi' 'Successfully connected' -i 'package-install'
+ else
+ notify-send 'Wi-Fi' 'Failed to connect' -i 'package-purge'
+ fi
+}
+
+main() {
+ local status
+ status=$(nmcli radio wifi)
+
+ if [[ $status == 'disabled' ]]; then
+ nmcli radio wifi on
+ notify-send 'Wi-Fi Enabled' -i 'network-wireless-on' -r 1125
+ fi
+
+ tput civis # make cursor invisible
+ get-network-list || exit 1
+ tput cnorm # make cursor visible
+
+ select-network || exit 1
+ connect-to-network
+}
+
+main
diff --git a/.config/waybar/scripts/power-menu.sh b/.config/waybar/scripts/power-menu.sh
new file mode 100755
index 0000000..b1430fd
--- /dev/null
+++ b/.config/waybar/scripts/power-menu.sh
@@ -0,0 +1,49 @@
+#!/usr/bin/env bash
+#
+# Display a power menu to perform system actions
+#
+# Requirements:
+# - fzf
+#
+# Author: Jesse Mirabel
+# Created: August 19, 2025
+# License: MIT
+
+LIST=(
+ 'Lock'
+ 'Shutdown'
+ 'Reboot'
+ 'Logout'
+ 'Hibernate'
+ 'Suspend'
+)
+
+main() {
+ # shellcheck disable=SC1090
+ . ~/.config/waybar/scripts/fzf-colors.sh 2> /dev/null
+
+ local opts=(
+ --border=sharp
+ --border-label=' Power Menu '
+ --height=~100%
+ --highlight-line
+ --no-input
+ --pointer=
+ --reverse
+ "${COLORS[@]}"
+ )
+
+ local selected
+ selected=$(printf '%s\n' "${LIST[@]}" | fzf "${opts[@]}")
+
+ case $selected in
+ 'Lock') loginctl lock-session ;;
+ 'Shutdown') systemctl poweroff ;;
+ 'Reboot') systemctl reboot ;;
+ 'Logout') loginctl terminate-session "$XDG_SESSION_ID" ;;
+ 'Hibernate') systemctl hibernate ;;
+ 'Suspend') systemctl suspend ;;
+ esac
+}
+
+main
diff --git a/.config/waybar/scripts/system-update.sh b/.config/waybar/scripts/system-update.sh
new file mode 100755
index 0000000..35c4cf9
--- /dev/null
+++ b/.config/waybar/scripts/system-update.sh
@@ -0,0 +1,82 @@
+#!/usr/bin/env bash
+#
+# Check for available updates and optionally upgrade packages on Arch Linux.
+#
+# Requirements:
+# - checkupdates (pacman-contrib)
+# - notify-send (libnotify)
+# - optional: an AUR helper (aura, paru, pikaur, trizen, yay)
+#
+# Author: Jesse Mirabel
+# Created: August 16, 2025
+# License: MIT
+
+GRN='\033[1;32m'
+BLU='\033[1;34m'
+RST='\033[0m'
+
+TIMEOUT=5
+
+check-updates() {
+ repo=$(timeout $TIMEOUT checkupdates 2> /dev/null | wc -l)
+
+ if [[ -n $helper ]]; then
+ aur=$(timeout $TIMEOUT "$helper" -Quaq 2> /dev/null | wc -l)
+ fi
+}
+
+update-packages() {
+ printf '\n%bUpdating pacman packages...%b\n' "$BLU" "$RST"
+ sudo pacman -Syu
+
+ printf '\n%bUpdating AUR packages...%b\n' "$BLU" "$RST"
+ "$helper" -Syu
+
+ # use signal to update the module
+ pkill -RTMIN+1 waybar
+
+ notify-send 'Update Complete' -i 'package-install'
+ printf '\n%bUpdate Complete!%b\n' "$GRN" "$RST"
+ read -rs -n 1 -p 'Press any key to exit...'
+}
+
+display-module() {
+ local tooltip="Official: $repo"
+
+ if [[ -n $helper ]]; then
+ tooltip+="\nAUR($helper): $aur"
+ fi
+
+ local total=$((repo + aur))
+
+ if ((total == 0)); then
+ echo "{ \"text\": \"\", \"tooltip\": \"No updates available\" }"
+ else
+ echo "{ \"text\": \"\", \"tooltip\": \"$tooltip\" }"
+ fi
+}
+
+main() {
+ local arg=$1
+ local helpers=(aura paru pikaur trizen yay)
+ local bin
+
+ bin=$(command -v "${helpers[@]}" | head -n 1)
+ helper=${bin##*/}
+ repo=0
+ aur=0
+
+ case $arg in
+ 'module')
+ check-updates
+ display-module
+ ;;
+ *)
+ printf '%bChecking for updates...%b' "$BLU" "$RST"
+ check-updates
+ update-packages
+ ;;
+ esac
+}
+
+main "$@"
diff --git a/.config/waybar/scripts/volume.sh b/.config/waybar/scripts/volume.sh
new file mode 100755
index 0000000..7105acf
--- /dev/null
+++ b/.config/waybar/scripts/volume.sh
@@ -0,0 +1,159 @@
+#!/usr/bin/env bash
+#
+# Adjust default device volume and send a notification with the current level
+#
+# Requirements:
+# - pactl (libpulse)
+# - notify-send (libnotify)
+#
+# Author: Jesse Mirabel
+# Created: September 07, 2025
+# License: MIT
+
+VALUE=1
+MIN=0
+MAX=100
+ID=2425
+
+print-usage() {
+ local script=${0##*/}
+
+ cat <<- EOF
+ USAGE: $script [OPTIONS]
+
+ Adjust default device volume and send a notification with the current level
+
+ OPTIONS:
+ input Set device as '@DEFAULT_SOURCE@'
+ output Set device as '@DEFAULT_SINK@'
+
+ mute Toggle device mute
+
+ raise Raise volume by
+ lower Lower volume by
+ Default value: $VALUE
+
+ EXAMPLES:
+ Toggle microphone mute:
+ $ $script input mute
+
+ Raise speaker volume:
+ $ $script output raise
+
+ Lower speaker volume by 5:
+ $ $script output lower 5
+ EOF
+
+ exit 1
+}
+
+check-muted() {
+ local muted
+ muted=$(pactl "get-$dev_mute" "$dev" | awk '{print $2}')
+
+ local state
+ case $muted in
+ 'yes') state='Muted' ;;
+ 'no') state='Unmuted' ;;
+ esac
+
+ echo "$state"
+}
+
+get-volume() {
+ local vol
+ vol=$(pactl "get-$dev_vol" "$dev" | awk '{print $5}' | tr -d '%')
+
+ echo "$vol"
+}
+
+get-icon() {
+ local state vol
+ state=$(check-muted)
+ vol=$(get-volume)
+
+ local icon
+ local new_vol=${1:-$vol}
+
+ if [[ $state == 'Muted' ]]; then
+ icon="$dev_icon-muted"
+ else
+ if ((new_vol < ((MAX * 33) / 100))); then
+ icon="$dev_icon-low"
+ elif ((new_vol < ((MAX * 66) / 100))); then
+ icon="$dev_icon-medium"
+ else
+ icon="$dev_icon-high"
+ fi
+ fi
+
+ echo "$icon"
+}
+
+toggle-mute() {
+ pactl "set-$dev_mute" "$dev" toggle
+
+ local state icon
+ state=$(check-muted)
+ icon=$(get-icon)
+
+ notify-send "$title: $state" -i "$icon" -r $ID
+}
+
+set-volume() {
+ local vol
+ vol=$(get-volume)
+
+ local new_vol
+ case $action in
+ 'raise')
+ new_vol=$((vol + value))
+ ((new_vol > MAX)) && new_vol=$MAX
+ ;;
+ 'lower')
+ new_vol=$((vol - value))
+ ((new_vol < MIN)) && new_vol=$MIN
+ ;;
+ esac
+
+ pactl "set-$dev_vol" "$dev" "${new_vol}%"
+
+ local icon
+ icon=$(get-icon "$new_vol")
+
+ notify-send "$title: ${new_vol}%" -h int:value:$new_vol -i "$icon" -r $ID
+}
+
+main() {
+ device=$1
+ action=$2
+ value=${3:-$VALUE}
+
+ ! ((value > 0)) && print-usage
+
+ case $device in
+ 'input')
+ dev='@DEFAULT_SOURCE@'
+ dev_mute='source-mute'
+ dev_vol='source-volume'
+ dev_icon='mic-volume'
+ title='Microphone'
+ ;;
+ 'output')
+ dev='@DEFAULT_SINK@'
+ dev_mute='sink-mute'
+ dev_vol='sink-volume'
+ dev_icon='audio-volume'
+ title='Volume'
+ ;;
+ *) print-usage ;;
+ esac
+
+ case $action in
+ 'mute') toggle-mute ;;
+ 'raise' | 'lower') set-volume ;;
+ *) print-usage ;;
+ esac
+}
+
+main "$@"
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 0000000..d988247
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,12 @@
+/* ignore GTK theme */
+* {
+ all: initial;
+}
+
+@import "theme.css";
+@import "styles/fonts.css";
+@import "styles/global.css";
+@import "styles/modules-center.css";
+@import "styles/modules-left.css";
+@import "styles/modules-right.css";
+@import "styles/states.css";
diff --git a/.config/waybar/styles/.fonts.css.swp b/.config/waybar/styles/.fonts.css.swp
new file mode 100644
index 0000000..76416d3
Binary files /dev/null and b/.config/waybar/styles/.fonts.css.swp differ
diff --git a/.config/waybar/styles/.modules-left.css.swp b/.config/waybar/styles/.modules-left.css.swp
new file mode 100644
index 0000000..3b2c508
Binary files /dev/null and b/.config/waybar/styles/.modules-left.css.swp differ
diff --git a/.config/waybar/styles/fonts.css b/.config/waybar/styles/fonts.css
new file mode 100644
index 0000000..4798c52
--- /dev/null
+++ b/.config/waybar/styles/fonts.css
@@ -0,0 +1,29 @@
+* {
+ font-family: "Ubuntu Nerd Font", "0xProto Nerd Font", sans-serif;
+ /* font-family: "Inter"; */
+ font-weight: bold;
+ font-size: 16px;
+}
+
+#custom-user,
+#window label,
+#mpris,
+tooltip label {
+ font-weight: normal;
+}
+
+#workspaces button.active label,
+#custom-distro {
+ font-size: 22px;
+}
+
+#custom-power_menu {
+ font-size: 19px;
+}
+
+#custom-left_div,
+#custom-left_inv,
+#custom-right_div,
+#custom-right_inv {
+ font-size: 22px;
+}
diff --git a/.config/waybar/styles/global.css b/.config/waybar/styles/global.css
new file mode 100644
index 0000000..477fccc
--- /dev/null
+++ b/.config/waybar/styles/global.css
@@ -0,0 +1,38 @@
+* {
+ color: @main-fg;
+}
+
+#waybar {
+ background-color: @outline;
+}
+#waybar > box {
+ margin: 0px;
+ background-color: @main-bg;
+}
+
+button {
+ border-radius: 16px;
+ min-width: 16px;
+ padding: 0 10px;
+}
+button:hover {
+ background-color: @hover-bg;
+ color: @hover-fg;
+}
+
+tooltip {
+ border: 2px solid @main-br;
+ border-radius: 10px;
+ background-color: @main-bg;
+}
+tooltip > box {
+ padding: 0 6px;
+}
+
+.module,
+#custom-left_div,
+#custom-left_inv,
+#custom-right_div,
+#custom-right_inv {
+ margin-bottom: -1px;
+}
diff --git a/.config/waybar/styles/modules-center.css b/.config/waybar/styles/modules-center.css
new file mode 100644
index 0000000..8647310
--- /dev/null
+++ b/.config/waybar/styles/modules-center.css
@@ -0,0 +1,119 @@
+/*------------------
+ window count
+------------------*/
+
+#windowcount {
+ margin-right: 12px;
+}
+#windowcount label {
+ color: @hover-fg;
+}
+
+/*-----------------
+ temperature
+-----------------*/
+
+#custom-left_div.2 {
+ color: @temperature;
+}
+#temperature {
+ background-color: @temperature;
+}
+
+/*------------
+ memory
+------------*/
+
+#custom-left_div.3 {
+ background-color: @temperature;
+ color: @memory;
+}
+#memory {
+ background-color: @memory;
+}
+
+/*---------
+ cpu
+---------*/
+
+#custom-left_div.4 {
+ background-color: @memory;
+ color: @cpu;
+}
+#cpu {
+ background-color: @cpu;
+}
+#custom-left_inv.1 {
+ color: @cpu;
+}
+
+/*-----------------
+ distro icon
+-----------------*/
+
+#custom-left_div.5,
+#custom-right_div.2 {
+ color: @accent;
+}
+#custom-distro {
+ padding: 0 10px 0 5px;
+ background-color: @accent;
+ color: @main-bg;
+}
+
+/*--------------------
+ idle inhibitor
+--------------------*/
+
+#custom-right_inv.1 {
+ color: @time;
+}
+#idle_inhibitor {
+ background-color: @time;
+}
+
+/*----------
+ time
+----------*/
+
+#clock.time {
+ padding-right: 6px;
+ background-color: @time;
+}
+#custom-right_div.3 {
+ background-color: @date;
+ color: @time;
+}
+
+/*----------
+ date
+----------*/
+
+#clock.date {
+ padding-left: 6px;
+ background-color: @date;
+}
+#custom-right_div.4 {
+ background-color: @tray;
+ color: @date;
+}
+
+/*-----------------
+ system tray
+-----------------*/
+
+#network {
+ background-color: @tray;
+ padding: 0 6px 0 4px;
+}
+#bluetooth {
+ background-color: @tray;
+ padding: 0 5px;
+}
+#custom-system_update {
+ background-color: @tray;
+ padding: 0 8px 0 2px;
+}
+#custom-right_div.5 {
+ color: @tray;
+}
diff --git a/.config/waybar/styles/modules-left.css b/.config/waybar/styles/modules-left.css
new file mode 100644
index 0000000..5ae9073
--- /dev/null
+++ b/.config/waybar/styles/modules-left.css
@@ -0,0 +1,38 @@
+/*--------------
+ username
+--------------*/
+
+#custom-user {
+ padding-right: 12px;
+}
+
+/*----------------
+ workspaces
+----------------*/
+
+#custom-left_div.1,
+#custom-right_div.1 {
+ color: @workspaces;
+}
+#workspaces {
+ padding: 0 1px;
+ background-color: @workspaces;
+}
+
+#workspaces button {
+ /*content: "c";*/
+}
+
+/*------------------
+ window title
+------------------*/
+
+#window {
+ margin-left: 12px;
+ margin-top: 3px;
+}
+
+#window label {
+ font-size: 14px;
+ color: #888;
+}
diff --git a/.config/waybar/styles/modules-right.css b/.config/waybar/styles/modules-right.css
new file mode 100644
index 0000000..50f2598
--- /dev/null
+++ b/.config/waybar/styles/modules-right.css
@@ -0,0 +1,59 @@
+/*----------------
+ media info
+----------------*/
+
+#mpris {
+ padding: 0 12px;
+}
+
+/*------------
+ volume
+------------*/
+
+#custom-left_div.6 {
+ color: @volume;
+}
+#pulseaudio,
+#wireplumber {
+ background-color: @volume;
+}
+
+/*----------------
+ brightness
+----------------*/
+
+#custom-left_div.7 {
+ background-color: @volume;
+ color: @backlight;
+}
+#backlight {
+ background-color: @backlight;
+}
+
+/*-------------
+ battery
+-------------*/
+
+#custom-left_div.8 {
+ background-color: @backlight;
+ color: @battery;
+}
+#battery {
+ background-color: @battery;
+}
+#custom-left_inv.2 {
+ color: @battery;
+}
+
+/*----------------
+ power menu
+----------------*/
+
+#custom-power_menu {
+ border-radius: 16px;
+ padding: 0 19px 0 16px;
+ color: @accent;
+}
+#custom-power_menu:hover {
+ background-color: @hover-bg;
+}
diff --git a/.config/waybar/styles/states.css b/.config/waybar/styles/states.css
new file mode 100644
index 0000000..a1c52f8
--- /dev/null
+++ b/.config/waybar/styles/states.css
@@ -0,0 +1,37 @@
+#custom-trigger:hover,
+#idle_inhibitor:hover,
+#clock.date:hover,
+#network:hover,
+#bluetooth:hover,
+#custom-system_update:hover,
+#mpris:hover,
+#pulseaudio:hover,
+#wireplumber:hover {
+ color: @hover-fg;
+}
+
+/* inactive state */
+#idle_inhibitor.deactivated,
+#mpris.paused,
+#pulseaudio.output.muted,
+#pulseaudio.input.source-muted,
+#wireplumber.muted {
+ color: @hover-fg;
+}
+
+#memory.warning,
+#cpu.warning,
+#battery.warning {
+ color: @warning;
+}
+
+#temperature.critical,
+#memory.critical,
+#cpu.critical,
+#battery.critical {
+ color: @critical;
+}
+
+#battery.charging {
+ color: @charging;
+}
diff --git a/.config/waybar/theme.css b/.config/waybar/theme.css
new file mode 100644
index 0000000..eeb8d25
--- /dev/null
+++ b/.config/waybar/theme.css
@@ -0,0 +1,57 @@
+/* catppuccin-mocha (modified to black-like palette) */
+
+@define-color rosewater #e8d8d4;
+@define-color flamingo #d9c4c4;
+@define-color pink #e0bed0;
+@define-color mauve #b8a0d8;
+@define-color red #d07a95;
+@define-color maroon #c18c97;
+@define-color peach #d9a277;
+@define-color yellow #d8c896;
+@define-color green #90c18d;
+@define-color teal #82c1b7;
+@define-color sky #7abac9;
+@define-color sapphire #6aa9c4;
+@define-color blue #3a3a3a; /* replaced blue with dark grey */
+@define-color lavender #5a5a5a; /* darker lavender */
+@define-color text #d0d0d0;
+@define-color subtext1 #b0b0b0;
+@define-color subtext0 #9a9a9a;
+@define-color overlay2 #858585;
+@define-color overlay1 #707070;
+@define-color overlay0 #5c5c5c;
+@define-color surface2 #4a4a4a;
+@define-color surface1 #3a3a3a;
+@define-color surface0 #2a2a2a;
+@define-color base #1a1a1a;
+@define-color mantle #121212;
+@define-color crust #0E0E0E;
+
+/* main colors */
+
+@define-color accent @lavender;
+@define-color main-br @subtext0;
+@define-color main-bg @crust; /* now #0E0E0E */
+@define-color main-fg @text;
+@define-color hover-bg @base;
+@define-color hover-fg alpha(@main-fg, 0.75);
+@define-color outline shade(@main-bg, 0.5);
+
+/* module colors */
+
+@define-color workspaces @mantle;
+@define-color temperature @mantle;
+@define-color memory @base;
+@define-color cpu @surface0;
+@define-color time @surface0;
+@define-color date @base;
+@define-color tray @mantle;
+@define-color volume @mantle;
+@define-color backlight @base;
+@define-color battery @surface0;
+
+/* state colors */
+
+@define-color warning @yellow;
+@define-color critical @red;
+@define-color charging @green;
diff --git a/.config/waybar/themes/catppuccin-frappe.css b/.config/waybar/themes/catppuccin-frappe.css
new file mode 100644
index 0000000..d83c7bd
--- /dev/null
+++ b/.config/waybar/themes/catppuccin-frappe.css
@@ -0,0 +1,63 @@
+/* catppuccin-frappe */
+
+@define-color rosewater #f2d5cf;
+@define-color flamingo #eebebe;
+@define-color pink #f4b8e4;
+@define-color mauve #ca9ee6;
+@define-color red #e78284;
+@define-color maroon #ea999c;
+@define-color peach #ef9f76;
+@define-color yellow #e5c890;
+@define-color green #a6d189;
+@define-color teal #81c8be;
+@define-color sky #99d1db;
+@define-color sapphire #85c1dc;
+@define-color blue #8caaee;
+@define-color lavender #babbf1;
+@define-color text #c6d0f5;
+@define-color subtext1 #b5bfe2;
+@define-color subtext0 #a5adce;
+@define-color overlay2 #949cbb;
+@define-color overlay1 #838ba7;
+@define-color overlay0 #737994;
+@define-color surface2 #626880;
+@define-color surface1 #51576d;
+@define-color surface0 #414559;
+@define-color base #303446;
+@define-color mantle #292c3c;
+@define-color crust #232634;
+
+/*
+ br - border
+ bg - background
+ fg - foreground
+*/
+
+/* main colors */
+
+@define-color accent @lavender;
+@define-color main-br @subtext0;
+@define-color main-bg @crust;
+@define-color main-fg @text;
+@define-color hover-bg @base;
+@define-color hover-fg alpha(@main-fg, 0.75);
+@define-color outline shade(@main-bg, 0.5);
+
+/* module colors */
+
+@define-color workspaces @mantle;
+@define-color temperature @mantle;
+@define-color memory @base;
+@define-color cpu @surface0;
+@define-color time @surface0;
+@define-color date @base;
+@define-color tray @mantle;
+@define-color volume @mantle;
+@define-color backlight @base;
+@define-color battery @surface0;
+
+/* state colors */
+
+@define-color warning @yellow;
+@define-color critical @red;
+@define-color charging @green;
diff --git a/.config/waybar/themes/catppuccin-latte.css b/.config/waybar/themes/catppuccin-latte.css
new file mode 100644
index 0000000..fa1aaf8
--- /dev/null
+++ b/.config/waybar/themes/catppuccin-latte.css
@@ -0,0 +1,63 @@
+/* catppuccin-latte */
+
+@define-color rosewater #dc8a78;
+@define-color flamingo #dd7878;
+@define-color pink #ea76cb;
+@define-color mauve #8839ef;
+@define-color red #d20f39;
+@define-color maroon #e64553;
+@define-color peach #fe640b;
+@define-color yellow #df8e1d;
+@define-color green #40a02b;
+@define-color teal #179299;
+@define-color sky #04a5e5;
+@define-color sapphire #209fb5;
+@define-color blue #1e66f5;
+@define-color lavender #7287fd;
+@define-color text #4c4f69;
+@define-color subtext1 #5c5f77;
+@define-color subtext0 #6c6f85;
+@define-color overlay2 #7c7f93;
+@define-color overlay1 #8c8fa1;
+@define-color overlay0 #9ca0b0;
+@define-color surface2 #acb0be;
+@define-color surface1 #bcc0cc;
+@define-color surface0 #ccd0da;
+@define-color base #eff1f5;
+@define-color mantle #e6e9ef;
+@define-color crust #dce0e8;
+
+/*
+ br - border
+ bg - background
+ fg - foreground
+*/
+
+/* main colors */
+
+@define-color accent @lavender;
+@define-color main-br @subtext0;
+@define-color main-bg @crust;
+@define-color main-fg @text;
+@define-color hover-bg @base;
+@define-color hover-fg alpha(@main-fg, 0.75);
+@define-color outline shade(@main-bg, 0.5);
+
+/* module colors */
+
+@define-color workspaces @mantle;
+@define-color temperature @mantle;
+@define-color memory @base;
+@define-color cpu @surface0;
+@define-color time @surface0;
+@define-color date @base;
+@define-color tray @mantle;
+@define-color volume @mantle;
+@define-color backlight @base;
+@define-color battery @surface0;
+
+/* state colors */
+
+@define-color warning @yellow;
+@define-color critical @red;
+@define-color charging @green;
diff --git a/.config/waybar/themes/catppuccin-macchiato.css b/.config/waybar/themes/catppuccin-macchiato.css
new file mode 100644
index 0000000..97b3be9
--- /dev/null
+++ b/.config/waybar/themes/catppuccin-macchiato.css
@@ -0,0 +1,63 @@
+/* catppuccin-macchiato */
+
+@define-color rosewater #f4dbd6;
+@define-color flamingo #f0c6c6;
+@define-color pink #f5bde6;
+@define-color mauve #c6a0f6;
+@define-color red #ed8796;
+@define-color maroon #ee99a0;
+@define-color peach #f5a97f;
+@define-color yellow #eed49f;
+@define-color green #a6da95;
+@define-color teal #8bd5ca;
+@define-color sky #91d7e3;
+@define-color sapphire #7dc4e4;
+@define-color blue #8aadf4;
+@define-color lavender #b7bdf8;
+@define-color text #cad3f5;
+@define-color subtext1 #b8c0e0;
+@define-color subtext0 #a5adcb;
+@define-color overlay2 #939ab7;
+@define-color overlay1 #8087a2;
+@define-color overlay0 #6e738d;
+@define-color surface2 #5b6078;
+@define-color surface1 #494d64;
+@define-color surface0 #363a4f;
+@define-color base #24273a;
+@define-color mantle #1e2030;
+@define-color crust #181926;
+
+/*
+ br - border
+ bg - background
+ fg - foreground
+*/
+
+/* main colors */
+
+@define-color accent @lavender;
+@define-color main-br @subtext0;
+@define-color main-bg @crust;
+@define-color main-fg @text;
+@define-color hover-bg @base;
+@define-color hover-fg alpha(@main-fg, 0.75);
+@define-color outline shade(@main-bg, 0.5);
+
+/* module colors */
+
+@define-color workspaces @mantle;
+@define-color temperature @mantle;
+@define-color memory @base;
+@define-color cpu @surface0;
+@define-color time @surface0;
+@define-color date @base;
+@define-color tray @mantle;
+@define-color volume @mantle;
+@define-color backlight @base;
+@define-color battery @surface0;
+
+/* state colors */
+
+@define-color warning @yellow;
+@define-color critical @red;
+@define-color charging @green;
diff --git a/.config/waybar/themes/catppuccin-mocha.css b/.config/waybar/themes/catppuccin-mocha.css
new file mode 100644
index 0000000..68f2927
--- /dev/null
+++ b/.config/waybar/themes/catppuccin-mocha.css
@@ -0,0 +1,63 @@
+/* catppuccin-mocha */
+
+@define-color rosewater #f5e0dc;
+@define-color flamingo #f2cdcd;
+@define-color pink #f5c2e7;
+@define-color mauve #cba6f7;
+@define-color red #f38ba8;
+@define-color maroon #eba0ac;
+@define-color peach #fab387;
+@define-color yellow #f9e2af;
+@define-color green #a6e3a1;
+@define-color teal #94e2d5;
+@define-color sky #89dceb;
+@define-color sapphire #74c7ec;
+@define-color blue #89b4fa;
+@define-color lavender #b4befe;
+@define-color text #cdd6f4;
+@define-color subtext1 #bac2de;
+@define-color subtext0 #a6adc8;
+@define-color overlay2 #9399b2;
+@define-color overlay1 #7f849c;
+@define-color overlay0 #6c7086;
+@define-color surface2 #585b70;
+@define-color surface1 #45475a;
+@define-color surface0 #313244;
+@define-color base #1e1e2e;
+@define-color mantle #181825;
+@define-color crust #11111b;
+
+/*
+ br - border
+ bg - background
+ fg - foreground
+*/
+
+/* main colors */
+
+@define-color accent @lavender;
+@define-color main-br @subtext0;
+@define-color main-bg @crust;
+@define-color main-fg @text;
+@define-color hover-bg @base;
+@define-color hover-fg alpha(@main-fg, 0.75);
+@define-color outline shade(@main-bg, 0.5);
+
+/* module colors */
+
+@define-color workspaces @mantle;
+@define-color temperature @mantle;
+@define-color memory @base;
+@define-color cpu @surface0;
+@define-color time @surface0;
+@define-color date @base;
+@define-color tray @mantle;
+@define-color volume @mantle;
+@define-color backlight @base;
+@define-color battery @surface0;
+
+/* state colors */
+
+@define-color warning @yellow;
+@define-color critical @red;
+@define-color charging @green;
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0aadc05
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+.config/Code/
+.config/systemd/
+.config/session/
+.config/pulse/
+.config/pavucontrol.ini
+.config/obsidian/
+.config/ktrashrc
+.config/kiorc
+.config/kdeglobals
+.config/go/
+.config/dconf/user
+.config/bluetuith/bluetuith.conf
+.config/QtProject.conf
+.gitignore.swp
diff --git a/.swaylock/config b/.swaylock/config
index 40289a2..4ef375a 100644
--- a/.swaylock/config
+++ b/.swaylock/config
@@ -1,42 +1 @@
-# swaylock.conf
-
-image = /home/landam/Pictures/wallpaper/macos-blue-waves.jpg
-
-# General
-indicator-idle-visible = true
-indicator-radius = 120
-indicator-thickness = 10
-
-# Background
-color = 181818
-
-# Inside of the indicator (input ring)
-inside-color = f8f9fa
-inside-clear-color = f8f9fa
-inside-ver-color = 88c0d0
-inside-wrong-color = ebcb8b
-
-# Line (border of indicator)
-line-color = 2e3440
-line-clear-color = 88c0d0
-line-ver-color = 88c0d0
-line-wrong-color = ebcb8b
-
-# Ring (outer circle)
-ring-color = d8dee9
-ring-clear-color = 88c0d0
-ring-ver-color = 88c0d0
-ring-wrong-color = ebcb8b
-
-# Separator (between line & ring)
-separator-color = 2e3440
-
-# Text
-text-color = 2e3440
-text-clear-color = 88c0d0
-text-ver-color = 88c0d0
-text-wrong-color = ebcb8b
-
-# Indicator background (behind the circle)
-key-hl-color = 88c0d0
-bs-hl-color = ebcb8b
+image = /home/landam/Pictures/wallpaper/green-plants.jpg
diff --git a/.swaylock/configg b/.swaylock/configg
new file mode 100644
index 0000000..f15c9a4
--- /dev/null
+++ b/.swaylock/configg
@@ -0,0 +1,24 @@
+image = /home/landam/Pictures/wallpaper/green-plants.jpg
+indicator-idle-visible = true
+indicator-radius = 120
+indicator-thickness = 10
+color = 181818
+inside-color = f8f9fa
+inside-clear-color = f8f9fa
+inside-ver-color = 88c0d0
+inside-wrong-color = ebcb8b
+line-color = 2e3440
+line-clear-color = 88c0d0
+line-ver-color = 88c0d0
+line-wrong-color = ebcb8b
+ring-color = d8dee9
+ring-clear-color = 88c0d0
+ring-ver-color = 88c0d0
+ring-wrong-color = ebcb8b
+separator-color = 2e3440
+text-color = 2e3440
+text-clear-color = 88c0d0
+text-ver-color = 88c0d0
+text-wrong-color = ebcb8b
+key-hl-color = 88c0d0
+bs-hl-color = ebcb8b