update config

This commit is contained in:
2025-11-23 11:42:35 +01:00
parent fab7d2f157
commit 91df449304
73 changed files with 8450 additions and 338 deletions

14
.bash_profile Normal file
View File

@ -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

View File

@ -1,4 +1,8 @@
[window]
title = "Alacritty"
dynamic_title = false
[font]
normal = { family = "Iosevka Nerd Font", style = "Regular" }
size=14

Binary file not shown.

16
.config/dolphinrc Normal file
View File

@ -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

View File

@ -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

View File

@ -0,0 +1,7 @@
# Local configuration for emacs
BeginClient "emacs:*"
# Example:
# DefaultPunctuationMode "some"
EndClient

View File

@ -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 <https://www.gnu.org/licenses/>.
[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

View File

@ -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 <obert01@mistigri.org>
# 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 <https://www.gnu.org/licenses/>.

View File

@ -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 <listaddr1@gmx.net>
# Copyright (C) 2007-2008 Brailcom, o.p.s
# Copyright (C) 2007 Gilles Casse <gcasse@oralux.org>
# Copyright (C) 2011 Rui Batista <ruiandrebatista@gmail.com>
# Copyright (C) 2011-2016 Luke Yelavich <themuso@themuso.com>
#
# 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 <https://www.gnu.org/licenses/>.

View File

@ -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 <listaddr1@gmx.net>
# Copyright (C) 2007-2008 Brailcom, o.p.s
# Copyright (C) 2007 Gilles Casse <gcasse@oralux.org>
# Copyright (C) 2011 Rui Batista <ruiandrebatista@gmail.com>
# Copyright (C) 2011-2016 Luke Yelavich <themuso@themuso.com>
#
# 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 <https://www.gnu.org/licenses/>.

View File

@ -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 <listaddr1@gmx.net>
# Copyright (C) 2007-2008 Brailcom, o.p.s
# Copyright (C) 2007 Gilles Casse <gcasse@oralux.org>
# Copyright (C) 2011 Rui Batista <ruiandrebatista@gmail.com>
# Copyright (C) 2011 Luke Yelavich <themuso@themuso.com>
#
# 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 <https://www.gnu.org/licenses/>.

View File

@ -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 <gcasse@oralux.org>
#
# 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 <https://www.gnu.org/licenses/>.

View File

@ -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 <ruiandrebatista@gmail.com>
# Copyright (C) 2010 Andrei Kholodnyi <Andrei.Kholodnyi@gmail.com>
# Copyright (C) 2010 William Hubbs <w.d.hubbs@gmail.com>
# Copyright (C) 2010 Trevor Saunders <trev.saunders@gmail.com>
# Copyright (C) 2012 William Jon McCann <jmccann@redhat.com>
# Copyright (C) 2014 Rob Whyte <fudge@thefudge.net>
# Copyright (C) 2014-2016 Luke Yelavich <themuso@ubuntu.com>
# Copyright (C) 2014 Hussain Jasim <hussainmkj@gmail.com>
# Copyright (C) 2017 Colomban Wendling <cwendling@hypra.fr>
# Copyright (C) 2018 Raphaël POITEVIN <rpoitevin@hypra.fr>
# Copyright (C) 2018 Florian Steinhardt <no.known.email@example.com>
# Copyright (C) 2018-2024 Samuel Thibault <samuel.thibault@ens-lyon.org>
#
# 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 <https://www.gnu.org/licenses/>.

View File

@ -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 <ruiandrebatista@gmail.com>
# Copyright (C) 2010 Andrei Kholodnyi <Andrei.Kholodnyi@gmail.com>
# Copyright (C) 2010 William Hubbs <w.d.hubbs@gmail.com>
# Copyright (C) 2010 Trevor Saunders <trev.saunders@gmail.com>
# Copyright (C) 2012 William Jon McCann <jmccann@redhat.com>
# Copyright (C) 2014 Rob Whyte <fudge@thefudge.net>
# Copyright (C) 2014-2016 Luke Yelavich <themuso@ubuntu.com>
# Copyright (C) 2014 Hussain Jasim <hussainmkj@gmail.com>
# Copyright (C) 2017 Colomban Wendling <cwendling@hypra.fr>
# Copyright (C) 2018 Raphaël POITEVIN <rpoitevin@hypra.fr>
# Copyright (C) 2018 Florian Steinhardt <no.known.email@example.com>
# Copyright (C) 2018-2024 Samuel Thibault <samuel.thibault@ens-lyon.org>
#
# 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 <https://www.gnu.org/licenses/>.

View File

@ -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/*

View File

@ -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
#
@ -98,6 +126,8 @@ input "type:keyboard" {
exec_always {
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
}

View File

@ -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'"
}
]
}
}
}

566
.config/swaync/style.css Normal file
View File

@ -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);
}

View File

@ -8,5 +8,5 @@ window#osd {
}
window#osd #container {
margin: 10px;
margin: 20px;
}

View File

@ -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

View File

@ -0,0 +1,5 @@
56309
vlc
landam
2da9eac24dd04299a06ebbf50d627337
6baa7595-2b68-4a93-8e6e-d88913e837b5

3791
.config/vlc/vlcrc Normal file

File diff suppressed because it is too large Load Diff

211
.config/walker/config.toml Normal file
View File

@ -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" },
]

View File

@ -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;
}

21
.config/waybar/LICENSE Normal file
View File

@ -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.

130
.config/waybar/config.jsonc Normal file
View File

@ -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":
}

54
.config/waybar/install.sh Executable file
View File

@ -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

View File

@ -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":
}
}

View File

@ -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'"
}
}
}

View File

@ -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":
}
}

View File

@ -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": "<span alpha='100%'><b>{}</b></span>",
"days": "<span alpha='90%'>{}</span>",
// "weeks":
"weekdays": "<span alpha='80%'><i>{}</i></span>",
"today": "<span alpha='100%'><b><u>{}</u></b></span>"
}
},
"actions": {
"on-click": "mode"
// "on-click-middle":
// "on-click-right":
// "on-scroll-up":
// "on-scroll-down":
}
}
}

View File

@ -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":
}
}

View File

@ -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":
}
}

View File

@ -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
}
}

View File

@ -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":
}
}

View File

@ -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":
}
}

View File

@ -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":
}
}

View File

@ -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
}
}

View File

@ -0,0 +1,13 @@
{
"tray": {
"icon-size": 16,
// "show-passive-items":
// "smooth-scrolling-threshold":
"spacing": 12,
// "reverse-direction":
// "on-update":
// "expand":
// "icons":
"cursor": true
}
}

View File

@ -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":
}
}

View File

@ -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: <span text_transform='capitalize'>{status}</span>",
"tooltip-format-deactivated": "Keep Screen On: <span text_transform='capitalize'>{status}</span>",
"start-activated": false
// "timeout":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@ -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":
}
}

View File

@ -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":
}
}

View File

@ -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":
}
}

View File

@ -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":
}
}

View File

@ -0,0 +1,13 @@
{
"sway/window": {
"format": "{}",
"rewrite": {
"": "Desktop",
"kitty": "Terminal",
"Alacritty": "Terminal",
"zsh": "Terminal",
"~": "Terminal"
},
"swap-icon-label": false
}
}

View File

@ -0,0 +1,12 @@
{
"sway/windowcount": {
"format": "[{}]",
// "format-empty":
// "format-windowed":
// "format-fullscreen":
// "separate-outputs":
// "min-length":
// "max-length":
"swap-icon-label": false
}
}

View File

@ -0,0 +1,11 @@
{
"sway/workspaces": {
"format": "{icon}",
"disable-scroll": true,
"format-icons": {
"default": "",
"focused": ""
},
"cursor": true
}
}

View File

@ -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":
}
}

View File

@ -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 <sejjymvm@gmail.com>
# 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 <value> Increase brightness by <value>
down <value> Decrease brightness by <value>
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 "$@"

View File

@ -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 <sejjymvm@gmail.com>
# 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

View File

@ -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

View File

@ -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 <sejjymvm@gmail.com>
# 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

View File

@ -0,0 +1,49 @@
#!/usr/bin/env bash
#
# Display a power menu to perform system actions
#
# Requirements:
# - fzf
#
# Author: Jesse Mirabel <sejjymvm@gmail.com>
# 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

View File

@ -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 <sejjymvm@gmail.com>
# 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 "$@"

159
.config/waybar/scripts/volume.sh Executable file
View File

@ -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 <sejjymvm@gmail.com>
# 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 <value> Raise volume by <value>
lower <value> Lower volume by <value>
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 "$@"

12
.config/waybar/style.css Normal file
View File

@ -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";

Binary file not shown.

Binary file not shown.

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

57
.config/waybar/theme.css Normal file
View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

14
.gitignore vendored Normal file
View File

@ -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

View File

@ -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

24
.swaylock/configg Normal file
View File

@ -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