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