@@ -118,7 +118,7 @@ fi | |||||
set -o vi | set -o vi | ||||
#Directory changes | #Directory changes | ||||
alias cdn='cd $HOME/Notes/; vim "+CtrlP"' | |||||
alias cdn='vim ~/Notes/text "+cd ~/Notes/text" "+enew" "+CtrlP"' | |||||
alias cdd='cd $HOME/Downloads/' | alias cdd='cd $HOME/Downloads/' | ||||
alias cdo='cd $HOME/Source/' | alias cdo='cd $HOME/Source/' | ||||
alias cdc='cd $HOME/.config/' | alias cdc='cd $HOME/.config/' | ||||
@@ -144,6 +144,8 @@ alias update='sudo apt-get update; sudo apt-get upgrade;' | |||||
alias rn='ranger' | alias rn='ranger' | ||||
alias nnn='nnn -xE' | alias nnn='nnn -xE' | ||||
alias util-dropdown="st -c 'DROPDOWN_TERM' -e 'tmux' &" | alias util-dropdown="st -c 'DROPDOWN_TERM' -e 'tmux' &" | ||||
alias do-xbind='xbindkeys -f "$XDG_CONFIG_HOME"/xbindkeys/config' | |||||
alias get-rndnum='head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8' | |||||
#Programming | #Programming | ||||
@@ -212,7 +214,7 @@ clean () { | |||||
echo "Clean complete" | echo "Clean complete" | ||||
} | } | ||||
wall(){ | |||||
firewall(){ | |||||
if [ "$#" -gt "1" ] | if [ "$#" -gt "1" ] | ||||
then | then | ||||
echo "Too many arguments. There are $#." | echo "Too many arguments. There are $#." | ||||
@@ -0,0 +1,431 @@ | |||||
[global] | |||||
### Display ### | |||||
# Which monitor should the notifications be displayed on. | |||||
monitor = 0 | |||||
# Display notification on focused monitor. Possible modes are: | |||||
# mouse: follow mouse pointer | |||||
# keyboard: follow window with keyboard focus | |||||
# none: don't follow anything | |||||
# | |||||
# "keyboard" needs a window manager that exports the | |||||
# _NET_ACTIVE_WINDOW property. | |||||
# This should be the case for almost all modern window managers. | |||||
# | |||||
# If this option is set to mouse or keyboard, the monitor option | |||||
# will be ignored. | |||||
follow = mouse | |||||
# The geometry of the window: | |||||
# [{width}]x{height}[+/-{x}+/-{y}] | |||||
# The geometry of the message window. | |||||
# The height is measured in number of notifications everything else | |||||
# in pixels. If the width is omitted but the height is given | |||||
# ("-geometry x2"), the message window expands over the whole screen | |||||
# (dmenu-like). If width is 0, the window expands to the longest | |||||
# message displayed. A positive x is measured from the left, a | |||||
# negative from the right side of the screen. Y is measured from | |||||
# the top and down respectively. | |||||
# The width can be negative. In this case the actual width is the | |||||
# screen width minus the width defined in within the geometry option. | |||||
geometry = "300x5-30+20" | |||||
# Show how many messages are currently hidden (because of geometry). | |||||
indicate_hidden = yes | |||||
# Shrink window if it's smaller than the width. Will be ignored if | |||||
# width is 0. | |||||
shrink = no | |||||
# The transparency of the window. Range: [0; 100]. | |||||
# This option will only work if a compositing window manager is | |||||
# present (e.g. xcompmgr, compiz, etc.). | |||||
transparency = 0 | |||||
# The height of the entire notification. If the height is smaller | |||||
# than the font height and padding combined, it will be raised | |||||
# to the font height and padding. | |||||
notification_height = 0 | |||||
# Draw a line of "separator_height" pixel height between two | |||||
# notifications. | |||||
# Set to 0 to disable. | |||||
separator_height = 2 | |||||
# Padding between text and separator. | |||||
padding = 8 | |||||
# Horizontal padding. | |||||
horizontal_padding = 8 | |||||
# Defines width in pixels of frame around the notification window. | |||||
# Set to 0 to disable. | |||||
frame_width = 3 | |||||
# Defines color of the frame around the notification window. | |||||
frame_color = "#aaaaaa" | |||||
# Define a color for the separator. | |||||
# possible values are: | |||||
# * auto: dunst tries to find a color fitting to the background; | |||||
# * foreground: use the same color as the foreground; | |||||
# * frame: use the same color as the frame; | |||||
# * anything else will be interpreted as a X color. | |||||
separator_color = frame | |||||
# Sort messages by urgency. | |||||
sort = yes | |||||
# Don't remove messages, if the user is idle (no mouse or keyboard input) | |||||
# for longer than idle_threshold seconds. | |||||
# Set to 0 to disable. | |||||
# A client can set the 'transient' hint to bypass this. See the rules | |||||
# section for how to disable this if necessary | |||||
idle_threshold = 120 | |||||
### Text ### | |||||
font = Monospace 8 | |||||
# The spacing between lines. If the height is smaller than the | |||||
# font height, it will get raised to the font height. | |||||
line_height = 0 | |||||
# Possible values are: | |||||
# full: Allow a small subset of html markup in notifications: | |||||
# <b>bold</b> | |||||
# <i>italic</i> | |||||
# <s>strikethrough</s> | |||||
# <u>underline</u> | |||||
# | |||||
# For a complete reference see | |||||
# <https://developer.gnome.org/pango/stable/pango-Markup.html>. | |||||
# | |||||
# strip: This setting is provided for compatibility with some broken | |||||
# clients that send markup even though it's not enabled on the | |||||
# server. Dunst will try to strip the markup but the parsing is | |||||
# simplistic so using this option outside of matching rules for | |||||
# specific applications *IS GREATLY DISCOURAGED*. | |||||
# | |||||
# no: Disable markup parsing, incoming notifications will be treated as | |||||
# plain text. Dunst will not advertise that it has the body-markup | |||||
# capability if this is set as a global setting. | |||||
# | |||||
# It's important to note that markup inside the format option will be parsed | |||||
# regardless of what this is set to. | |||||
markup = full | |||||
# The format of the message. Possible variables are: | |||||
# %a appname | |||||
# %s summary | |||||
# %b body | |||||
# %i iconname (including its path) | |||||
# %I iconname (without its path) | |||||
# %p progress value if set ([ 0%] to [100%]) or nothing | |||||
# %n progress value if set without any extra characters | |||||
# %% Literal % | |||||
# Markup is allowed | |||||
format = "<b>%s</b>\n%b" | |||||
# Alignment of message text. | |||||
# Possible values are "left", "center" and "right". | |||||
alignment = left | |||||
# Vertical alignment of message text and icon. | |||||
# Possible values are "top", "center" and "bottom". | |||||
vertical_alignment = center | |||||
# Show age of message if message is older than show_age_threshold | |||||
# seconds. | |||||
# Set to -1 to disable. | |||||
show_age_threshold = 60 | |||||
# Split notifications into multiple lines if they don't fit into | |||||
# geometry. | |||||
word_wrap = yes | |||||
# When word_wrap is set to no, specify where to make an ellipsis in long lines. | |||||
# Possible values are "start", "middle" and "end". | |||||
ellipsize = middle | |||||
# Ignore newlines '\n' in notifications. | |||||
ignore_newline = no | |||||
# Stack together notifications with the same content | |||||
stack_duplicates = true | |||||
# Hide the count of stacked notifications with the same content | |||||
hide_duplicate_count = false | |||||
# Display indicators for URLs (U) and actions (A). | |||||
show_indicators = yes | |||||
### Icons ### | |||||
# Align icons left/right/off | |||||
icon_position = left | |||||
# Scale small icons up to this size, set to 0 to disable. Helpful | |||||
# for e.g. small files or high-dpi screens. In case of conflict, | |||||
# max_icon_size takes precedence over this. | |||||
min_icon_size = 0 | |||||
# Scale larger icons down to this size, set to 0 to disable | |||||
max_icon_size = 32 | |||||
# Paths to default icons. | |||||
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ | |||||
### History ### | |||||
# Should a notification popped up from history be sticky or timeout | |||||
# as if it would normally do. | |||||
sticky_history = yes | |||||
# Maximum amount of notifications kept in history | |||||
history_length = 20 | |||||
### Misc/Advanced ### | |||||
# dmenu path. | |||||
dmenu = /usr/bin/dmenu -p dunst: | |||||
# Browser for opening urls in context menu. | |||||
browser = /usr/bin/sensible-browser | |||||
# Always run rule-defined scripts, even if the notification is suppressed | |||||
always_run_script = true | |||||
# Define the title of the windows spawned by dunst | |||||
title = Dunst | |||||
# Define the class of the windows spawned by dunst | |||||
class = Dunst | |||||
# Print a notification on startup. | |||||
# This is mainly for error detection, since dbus (re-)starts dunst | |||||
# automatically after a crash. | |||||
startup_notification = false | |||||
# Manage dunst's desire for talking | |||||
# Can be one of the following values: | |||||
# crit: Critical features. Dunst aborts | |||||
# warn: Only non-fatal warnings | |||||
# mesg: Important Messages | |||||
# info: all unimportant stuff | |||||
# debug: all less than unimportant stuff | |||||
verbosity = mesg | |||||
# Define the corner radius of the notification window | |||||
# in pixel size. If the radius is 0, you have no rounded | |||||
# corners. | |||||
# The radius will be automatically lowered if it exceeds half of the | |||||
# notification height to avoid clipping text and/or icons. | |||||
corner_radius = 0 | |||||
# Ignore the dbus closeNotification message. | |||||
# Useful to enforce the timeout set by dunst configuration. Without this | |||||
# parameter, an application may close the notification sent before the | |||||
# user defined timeout. | |||||
ignore_dbusclose = false | |||||
### Legacy | |||||
# Use the Xinerama extension instead of RandR for multi-monitor support. | |||||
# This setting is provided for compatibility with older nVidia drivers that | |||||
# do not support RandR and using it on systems that support RandR is highly | |||||
# discouraged. | |||||
# | |||||
# By enabling this setting dunst will not be able to detect when a monitor | |||||
# is connected or disconnected which might break follow mode if the screen | |||||
# layout changes. | |||||
force_xinerama = false | |||||
### mouse | |||||
# Defines list of actions for each mouse event | |||||
# Possible values are: | |||||
# * none: Don't do anything. | |||||
# * do_action: If the notification has exactly one action, or one is marked as default, | |||||
# invoke it. If there are multiple and no default, open the context menu. | |||||
# * close_current: Close current notification. | |||||
# * close_all: Close all notifications. | |||||
# These values can be strung together for each mouse event, and | |||||
# will be executed in sequence. | |||||
mouse_left_click = close_current | |||||
mouse_middle_click = do_action, close_current | |||||
mouse_right_click = close_all | |||||
# Experimental features that may or may not work correctly. Do not expect them | |||||
# to have a consistent behaviour across releases. | |||||
[experimental] | |||||
# Calculate the dpi to use on a per-monitor basis. | |||||
# If this setting is enabled the Xft.dpi value will be ignored and instead | |||||
# dunst will attempt to calculate an appropriate dpi value for each monitor | |||||
# using the resolution and physical size. This might be useful in setups | |||||
# where there are multiple screens with very different dpi values. | |||||
per_monitor_dpi = false | |||||
[shortcuts] | |||||
# Shortcuts are specified as [modifier+][modifier+]...key | |||||
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", | |||||
# "mod3" and "mod4" (windows-key). | |||||
# Xev might be helpful to find names for keys. | |||||
# Close notification. | |||||
close = ctrl+space | |||||
# Close all notifications. | |||||
close_all = ctrl+shift+space | |||||
# Redisplay last message(s). | |||||
# On the US keyboard layout "grave" is normally above TAB and left | |||||
# of "1". Make sure this key actually exists on your keyboard layout, | |||||
# e.g. check output of 'xmodmap -pke' | |||||
history = ctrl+grave | |||||
# Context menu. | |||||
context = ctrl+shift+period | |||||
[urgency_low] | |||||
# IMPORTANT: colors have to be defined in quotation marks. | |||||
# Otherwise the "#" and following would be interpreted as a comment. | |||||
background = "#222222" | |||||
foreground = "#888888" | |||||
timeout = 10 | |||||
# Icon for notifications with low urgency, uncomment to enable | |||||
#icon = /path/to/icon | |||||
[urgency_normal] | |||||
background = "#285577" | |||||
foreground = "#ffffff" | |||||
timeout = 10 | |||||
# Icon for notifications with normal urgency, uncomment to enable | |||||
#icon = /path/to/icon | |||||
[urgency_critical] | |||||
background = "#900000" | |||||
foreground = "#ffffff" | |||||
frame_color = "#ff0000" | |||||
timeout = 0 | |||||
# Icon for notifications with critical urgency, uncomment to enable | |||||
#icon = /path/to/icon | |||||
# Every section that isn't one of the above is interpreted as a rules to | |||||
# override settings for certain messages. | |||||
# | |||||
# Messages can be matched by | |||||
# appname (discouraged, see desktop_entry) | |||||
# body | |||||
# category | |||||
# desktop_entry | |||||
# icon | |||||
# match_transient | |||||
# msg_urgency | |||||
# stack_tag | |||||
# summary | |||||
# | |||||
# and you can override the | |||||
# background | |||||
# foreground | |||||
# format | |||||
# frame_color | |||||
# fullscreen | |||||
# new_icon | |||||
# set_stack_tag | |||||
# set_transient | |||||
# timeout | |||||
# urgency | |||||
# | |||||
# Shell-like globbing will get expanded. | |||||
# | |||||
# Instead of the appname filter, it's recommended to use the desktop_entry filter. | |||||
# GLib based applications export their desktop-entry name. In comparison to the appname, | |||||
# the desktop-entry won't get localized. | |||||
# | |||||
# SCRIPTING | |||||
# You can specify a script that gets run when the rule matches by | |||||
# setting the "script" option. | |||||
# The script will be called as follows: | |||||
# script appname summary body icon urgency | |||||
# where urgency can be "LOW", "NORMAL" or "CRITICAL". | |||||
# | |||||
# NOTE: if you don't want a notification to be displayed, set the format | |||||
# to "". | |||||
# NOTE: It might be helpful to run dunst -print in a terminal in order | |||||
# to find fitting options for rules. | |||||
# Disable the transient hint so that idle_threshold cannot be bypassed from the | |||||
# client | |||||
#[transient_disable] | |||||
# match_transient = yes | |||||
# set_transient = no | |||||
# | |||||
# Make the handling of transient notifications more strict by making them not | |||||
# be placed in history. | |||||
#[transient_history_ignore] | |||||
# match_transient = yes | |||||
# history_ignore = yes | |||||
# fullscreen values | |||||
# show: show the notifications, regardless if there is a fullscreen window opened | |||||
# delay: displays the new notification, if there is no fullscreen window active | |||||
# If the notification is already drawn, it won't get undrawn. | |||||
# pushback: same as delay, but when switching into fullscreen, the notification will get | |||||
# withdrawn from screen again and will get delayed like a new notification | |||||
#[fullscreen_delay_everything] | |||||
# fullscreen = delay | |||||
#[fullscreen_show_critical] | |||||
# msg_urgency = critical | |||||
# fullscreen = show | |||||
#[espeak] | |||||
# summary = "*" | |||||
# script = dunst_espeak.sh | |||||
#[script-test] | |||||
# summary = "*script*" | |||||
# script = dunst_test.sh | |||||
#[ignore] | |||||
# # This notification will not be displayed | |||||
# summary = "foobar" | |||||
# format = "" | |||||
#[history-ignore] | |||||
# # This notification will not be saved in history | |||||
# summary = "foobar" | |||||
# history_ignore = yes | |||||
#[skip-display] | |||||
# # This notification will not be displayed, but will be included in the history | |||||
# summary = "foobar" | |||||
# skip_display = yes | |||||
#[signed_on] | |||||
# appname = Pidgin | |||||
# summary = "*signed on*" | |||||
# urgency = low | |||||
# | |||||
#[signed_off] | |||||
# appname = Pidgin | |||||
# summary = *signed off* | |||||
# urgency = low | |||||
# | |||||
#[says] | |||||
# appname = Pidgin | |||||
# summary = *says* | |||||
# urgency = critical | |||||
# | |||||
#[twitter] | |||||
# appname = Pidgin | |||||
# summary = *twitter.com* | |||||
# urgency = normal | |||||
# | |||||
#[stack-volumes] | |||||
# appname = "some_volume_notifiers" | |||||
# set_stack_tag = "volume" | |||||
# | |||||
# vim: ft=cfg |
@@ -0,0 +1,408 @@ | |||||
# An example configuration file for MPD. | |||||
# Read the user manual for documentation: http://www.musicpd.org/doc/user/ | |||||
# or /usr/share/doc/mpd/html/user.html | |||||
# Files and directories ####################################################### | |||||
# | |||||
# This setting controls the top directory which MPD will search to discover the | |||||
# available audio files and add them to the daemon's online database. This | |||||
# setting defaults to the XDG directory, otherwise the music directory will be | |||||
# be disabled and audio files will only be accepted over ipc socket (using | |||||
# file:// protocol) or streaming files over an accepted protocol. | |||||
# | |||||
music_directory "/home/immanuel/Music" | |||||
# | |||||
# This setting sets the MPD internal playlist directory. The purpose of this | |||||
# directory is storage for playlists created by MPD. The server will use | |||||
# playlist files not created by the server but only if they are in the MPD | |||||
# format. This setting defaults to playlist saving being disabled. | |||||
# | |||||
playlist_directory "/var/lib/mpd/playlists" | |||||
# | |||||
# This setting sets the location of the MPD database. This file is used to | |||||
# load the database at server start up and store the database while the | |||||
# server is not up. This setting defaults to disabled which will allow | |||||
# MPD to accept files over ipc socket (using file:// protocol) or streaming | |||||
# files over an accepted protocol. | |||||
# | |||||
db_file "/var/lib/mpd/tag_cache" | |||||
# | |||||
# These settings are the locations for the daemon log files for the daemon. | |||||
# These logs are great for troubleshooting, depending on your log_level | |||||
# settings. | |||||
# | |||||
# The special value "syslog" makes MPD use the local syslog daemon. This | |||||
# setting defaults to logging to syslog, or to journal if mpd was started as | |||||
# a systemd service. | |||||
# | |||||
log_file "/var/log/mpd/mpd.log" | |||||
# | |||||
# This setting sets the location of the file which stores the process ID | |||||
# for use of mpd --kill and some init scripts. This setting is disabled by | |||||
# default and the pid file will not be stored. | |||||
# | |||||
pid_file "/run/mpd/pid" | |||||
# | |||||
# This setting sets the location of the file which contains information about | |||||
# most variables to get MPD back into the same general shape it was in before | |||||
# it was brought down. This setting is disabled by default and the server | |||||
# state will be reset on server start up. | |||||
# | |||||
state_file "/var/lib/mpd/state" | |||||
# | |||||
# The location of the sticker database. This is a database which | |||||
# manages dynamic information attached to songs. | |||||
# | |||||
sticker_file "/var/lib/mpd/sticker.sql" | |||||
# | |||||
############################################################################### | |||||
# General music daemon options ################################################ | |||||
# | |||||
# This setting specifies the user that MPD will run as. MPD should never run as | |||||
# root and you may use this setting to make MPD change its user ID after | |||||
# initialization. This setting is disabled by default and MPD is run as the | |||||
# current user. | |||||
# | |||||
user "mpd" | |||||
# | |||||
# This setting specifies the group that MPD will run as. If not specified | |||||
# primary group of user specified with "user" setting will be used (if set). | |||||
# This is useful if MPD needs to be a member of group such as "audio" to | |||||
# have permission to use sound card. | |||||
# | |||||
#group "nogroup" | |||||
# | |||||
# This setting sets the address for the daemon to listen on. Careful attention | |||||
# should be paid if this is assigned to anything other then the default, any. | |||||
# This setting can deny access to control of the daemon. Choose any if you want | |||||
# to have mpd listen on every address. Not effective if systemd socket | |||||
# activation is in use. | |||||
# | |||||
# For network | |||||
bind_to_address "localhost" | |||||
# | |||||
# And for Unix Socket | |||||
#bind_to_address "/run/mpd/socket" | |||||
# | |||||
# This setting is the TCP port that is desired for the daemon to get assigned | |||||
# to. | |||||
# | |||||
port "6602" | |||||
# | |||||
# This setting controls the type of information which is logged. Available | |||||
# setting arguments are "default", "secure" or "verbose". The "verbose" setting | |||||
# argument is recommended for troubleshooting, though can quickly stretch | |||||
# available resources on limited hardware storage. | |||||
# | |||||
#log_level "default" | |||||
# | |||||
# Setting "restore_paused" to "yes" puts MPD into pause mode instead | |||||
# of starting playback after startup. | |||||
# | |||||
#restore_paused "no" | |||||
# | |||||
# This setting enables MPD to create playlists in a format usable by other | |||||
# music players. | |||||
# | |||||
#save_absolute_paths_in_playlists "no" | |||||
# | |||||
# This setting defines a list of tag types that will be extracted during the | |||||
# audio file discovery process. The complete list of possible values can be | |||||
# found in the user manual. | |||||
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" | |||||
# | |||||
# This example just enables the "comment" tag without disabling all | |||||
# the other supported tags: | |||||
#metadata_to_use "+comment" | |||||
# | |||||
# This setting enables automatic update of MPD's database when files in | |||||
# music_directory are changed. | |||||
# | |||||
#auto_update "yes" | |||||
# | |||||
# Limit the depth of the directories being watched, 0 means only watch | |||||
# the music directory itself. There is no limit by default. | |||||
# | |||||
#auto_update_depth "3" | |||||
# | |||||
############################################################################### | |||||
# Symbolic link behavior ###################################################### | |||||
# | |||||
# If this setting is set to "yes", MPD will discover audio files by following | |||||
# symbolic links outside of the configured music_directory. | |||||
# | |||||
#follow_outside_symlinks "yes" | |||||
# | |||||
# If this setting is set to "yes", MPD will discover audio files by following | |||||
# symbolic links inside of the configured music_directory. | |||||
# | |||||
#follow_inside_symlinks "yes" | |||||
# | |||||
############################################################################### | |||||
# Zeroconf / Avahi Service Discovery ########################################## | |||||
# | |||||
# If this setting is set to "yes", service information will be published with | |||||
# Zeroconf / Avahi. | |||||
# | |||||
#zeroconf_enabled "yes" | |||||
# | |||||
# The argument to this setting will be the Zeroconf / Avahi unique name for | |||||
# this MPD server on the network. %h will be replaced with the hostname. | |||||
# | |||||
#zeroconf_name "Music Player @ %h" | |||||
# | |||||
############################################################################### | |||||
# Permissions ################################################################# | |||||
# | |||||
# If this setting is set, MPD will require password authorization. The password | |||||
# setting can be specified multiple times for different password profiles. | |||||
# | |||||
#password "password@read,add,control,admin" | |||||
# | |||||
# This setting specifies the permissions a user has who has not yet logged in. | |||||
# | |||||
#default_permissions "read,add,control,admin" | |||||
# | |||||
############################################################################### | |||||
# Database ####################################################################### | |||||
# | |||||
#database { | |||||
# plugin "proxy" | |||||
# host "other.mpd.host" | |||||
# port "6600" | |||||
#} | |||||
# Input ####################################################################### | |||||
# | |||||
input { | |||||
plugin "curl" | |||||
# proxy "proxy.isp.com:8080" | |||||
# proxy_user "user" | |||||
# proxy_password "password" | |||||
} | |||||
# QOBUZ input plugin | |||||
input { | |||||
enabled "no" | |||||
plugin "qobuz" | |||||
# app_id "ID" | |||||
# app_secret "SECRET" | |||||
# username "USERNAME" | |||||
# password "PASSWORD" | |||||
# format_id "N" | |||||
} | |||||
# TIDAL input plugin | |||||
input { | |||||
enabled "no" | |||||
plugin "tidal" | |||||
# token "TOKEN" | |||||
# username "USERNAME" | |||||
# password "PASSWORD" | |||||
# audioquality "Q" | |||||
} | |||||
# Decoder ##################################################################### | |||||
# | |||||
decoder { | |||||
plugin "hybrid_dsd" | |||||
enabled "no" | |||||
# gapless "no" | |||||
} | |||||
# | |||||
############################################################################### | |||||
# Audio Output ################################################################ | |||||
# | |||||
# MPD supports various audio output types, as well as playing through multiple | |||||
# audio outputs at the same time, through multiple audio_output settings | |||||
# blocks. Setting this block is optional, though the server will only attempt | |||||
# autodetection for one sound card. | |||||
# | |||||
# An example of an ALSA output: | |||||
# | |||||
audio_output { | |||||
type "alsa" | |||||
name "My ALSA Device" | |||||
# device "hw:0,0" # optional | |||||
# mixer_type "hardware" # optional | |||||
# mixer_device "default" # optional | |||||
# mixer_control "PCM" # optional | |||||
# mixer_index "0" # optional | |||||
} | |||||
# | |||||
# An example of an OSS output: | |||||
# | |||||
#audio_output { | |||||
# type "oss" | |||||
# name "My OSS Device" | |||||
# device "/dev/dsp" # optional | |||||
# mixer_type "hardware" # optional | |||||
# mixer_device "/dev/mixer" # optional | |||||
# mixer_control "PCM" # optional | |||||
#} | |||||
# | |||||
# An example of a shout output (for streaming to Icecast): | |||||
# | |||||
#audio_output { | |||||
# type "shout" | |||||
# encoder "vorbis" # optional | |||||
# name "My Shout Stream" | |||||
# host "localhost" | |||||
# port "8000" | |||||
# mount "/mpd.ogg" | |||||
# password "hackme" | |||||
# quality "5.0" | |||||
# bitrate "128" | |||||
# format "44100:16:1" | |||||
# protocol "icecast2" # optional | |||||
# user "source" # optional | |||||
# description "My Stream Description" # optional | |||||
# url "http://example.com" # optional | |||||
# genre "jazz" # optional | |||||
# public "no" # optional | |||||
# timeout "2" # optional | |||||
# mixer_type "software" # optional | |||||
#} | |||||
# | |||||
# An example of a recorder output: | |||||
# | |||||
#audio_output { | |||||
# type "recorder" | |||||
# name "My recorder" | |||||
# encoder "vorbis" # optional, vorbis or lame | |||||
# path "/var/lib/mpd/recorder/mpd.ogg" | |||||
## quality "5.0" # do not define if bitrate is defined | |||||
# bitrate "128" # do not define if quality is defined | |||||
# format "44100:16:1" | |||||
#} | |||||
# | |||||
# An example of a httpd output (built-in HTTP streaming server): | |||||
# | |||||
#audio_output { | |||||
# type "httpd" | |||||
# name "My HTTP Stream" | |||||
# encoder "vorbis" # optional, vorbis or lame | |||||
# port "8000" | |||||
# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 | |||||
# quality "5.0" # do not define if bitrate is defined | |||||
# bitrate "128" # do not define if quality is defined | |||||
# format "44100:16:1" | |||||
# max_clients "0" # optional 0=no limit | |||||
#} | |||||
# | |||||
# An example of a pulseaudio output (streaming to a remote pulseaudio server) | |||||
# Please see README.Debian if you want mpd to play through the pulseaudio | |||||
# daemon started as part of your graphical desktop session! | |||||
# | |||||
#audio_output { | |||||
# type "pulse" | |||||
# name "My Pulse Output" | |||||
# server "remote_server" # optional | |||||
# sink "remote_server_sink" # optional | |||||
#} | |||||
# | |||||
# An example of a winmm output (Windows multimedia API). | |||||
# | |||||
#audio_output { | |||||
# type "winmm" | |||||
# name "My WinMM output" | |||||
# device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional | |||||
# or | |||||
# device "0" # optional | |||||
# mixer_type "hardware" # optional | |||||
#} | |||||
# | |||||
# An example of an openal output. | |||||
# | |||||
#audio_output { | |||||
# type "openal" | |||||
# name "My OpenAL output" | |||||
# device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional | |||||
#} | |||||
# | |||||
## Example "pipe" output: | |||||
# | |||||
#audio_output { | |||||
# type "pipe" | |||||
# name "my pipe" | |||||
# command "aplay -f cd 2>/dev/null" | |||||
## Or if you're want to use AudioCompress | |||||
# command "AudioCompress -m | aplay -f cd 2>/dev/null" | |||||
## Or to send raw PCM stream through PCM: | |||||
# command "nc example.org 8765" | |||||
# format "44100:16:2" | |||||
#} | |||||
# | |||||
## An example of a null output (for no audio output): | |||||
# | |||||
#audio_output { | |||||
# type "null" | |||||
# name "My Null Output" | |||||
# mixer_type "none" # optional | |||||
#} | |||||
# | |||||
############################################################################### | |||||
# Normalization automatic volume adjustments ################################## | |||||
# | |||||
# This setting specifies the type of ReplayGain to use. This setting can have | |||||
# the argument "off", "album", "track" or "auto". "auto" is a special mode that | |||||
# chooses between "track" and "album" depending on the current state of | |||||
# random playback. If random playback is enabled then "track" mode is used. | |||||
# See <http://www.replaygain.org> for more details about ReplayGain. | |||||
# This setting is off by default. | |||||
# | |||||
#replaygain "album" | |||||
# | |||||
# This setting sets the pre-amp used for files that have ReplayGain tags. By | |||||
# default this setting is disabled. | |||||
# | |||||
#replaygain_preamp "0" | |||||
# | |||||
# This setting sets the pre-amp used for files that do NOT have ReplayGain tags. | |||||
# By default this setting is disabled. | |||||
# | |||||
#replaygain_missing_preamp "0" | |||||
# | |||||
# This setting enables or disables ReplayGain limiting. | |||||
# MPD calculates actual amplification based on the ReplayGain tags | |||||
# and replaygain_preamp / replaygain_missing_preamp setting. | |||||
# If replaygain_limit is enabled MPD will never amplify audio signal | |||||
# above its original level. If replaygain_limit is disabled such amplification | |||||
# might occur. By default this setting is enabled. | |||||
# | |||||
#replaygain_limit "yes" | |||||
# | |||||
# This setting enables on-the-fly normalization volume adjustment. This will | |||||
# result in the volume of all playing audio to be adjusted so the output has | |||||
# equal "loudness". This setting is disabled by default. | |||||
# | |||||
#volume_normalization "no" | |||||
# | |||||
############################################################################### | |||||
# Character Encoding ########################################################## | |||||
# | |||||
# If file or directory names do not display correctly for your locale then you | |||||
# may need to modify this setting. | |||||
# | |||||
filesystem_charset "UTF-8" | |||||
# | |||||
############################################################################### |
@@ -0,0 +1,590 @@ | |||||
############################################################## | |||||
## This is the example bindings file. Copy it to ## | |||||
## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ## | |||||
## and set up your preferences ## | |||||
############################################################## | |||||
## | |||||
##### General rules ##### | |||||
## | |||||
## 1) Because each action has runtime checks whether it's | |||||
## ok to run it, a few actions can be bound to one key. | |||||
## Actions will be bound in order given in configuration | |||||
## file. When a key is pressed, first action in order | |||||
## will test itself whether it's possible to run it. If | |||||
## test succeeds, action is executed and other actions | |||||
## bound to this key are ignored. If it doesn't, next | |||||
## action in order tests itself etc. | |||||
## | |||||
## 2) It's possible to bind more that one action at once | |||||
## to a key. It can be done using the following syntax: | |||||
## | |||||
## def_key "key" | |||||
## action1 | |||||
## action2 | |||||
## ... | |||||
## | |||||
## This creates a chain of actions. When such chain is | |||||
## executed, each action in chain is run until the end of | |||||
## chain is reached or one of its actions fails to execute | |||||
## due to its requirements not being met. If multiple actions | |||||
## and/or chains are bound to the same key, they will be | |||||
## consecutively run until one of them gets fully executed. | |||||
## | |||||
## 3) When ncmpcpp starts, bindings configuration file is | |||||
## parsed and then ncmpcpp provides "missing pieces" | |||||
## of default keybindings. If you want to disable some | |||||
## bindings, there is a special action called 'dummy' | |||||
## for that purpose. Eg. if you want to disable ability | |||||
## to crop playlists, you need to put the following | |||||
## into configuration file: | |||||
## | |||||
## def_key "C" | |||||
## dummy | |||||
## | |||||
## After that ncmpcpp will not bind any default action | |||||
## to this key. | |||||
## | |||||
## 4) To let you write simple macros, the following special | |||||
## actions are provided: | |||||
## | |||||
## - push_character "character" - pushes given special | |||||
## character into input queue, so it will be immediately | |||||
## picked by ncmpcpp upon next call to readKey function. | |||||
## Accepted values: mouse, up, down, page_up, page_down, | |||||
## home, end, space, enter, insert, delete, left, right, | |||||
## tab, ctrl-a, ctrl-b, ..., ctrl-z, ctrl-[, ctrl-\\, | |||||
## ctrl-], ctrl-^, ctrl-_, f1, f2, ..., f12, backspace. | |||||
## In addition, most of these names can be prefixed with | |||||
## alt-/ctrl-/shift- to be recognized with the appropriate | |||||
## modifier key(s). | |||||
## | |||||
## - push_characters "string" - pushes given string into | |||||
## input queue. | |||||
## | |||||
## - require_runnable "action" - checks whether given action | |||||
## is runnable and fails if it isn't. This is especially | |||||
## useful when mixed with previous two functions. Consider | |||||
## the following macro definition: | |||||
## | |||||
## def_key "key" | |||||
## push_characters "custom_filter" | |||||
## apply_filter | |||||
## | |||||
## If apply_filter can't be currently run, we end up with | |||||
## sequence of characters in input queue which will be | |||||
## treated just as we typed them. This may lead to unexpected | |||||
## results (in this case 'c' will most likely clear current | |||||
## playlist, 'u' will trigger database update, 's' will stop | |||||
## playback etc.). To prevent such thing from happening, we | |||||
## need to change above definition to this one: | |||||
## | |||||
## def_key "key" | |||||
## require_runnable "apply_filter" | |||||
## push_characters "custom_filter" | |||||
## apply_filter | |||||
## | |||||
## Here, first we test whether apply_filter can be actually run | |||||
## before we stuff characters into input queue, so if condition | |||||
## is not met, whole chain is aborted and we're fine. | |||||
## | |||||
## - require_screen "screen" - checks whether given screen is | |||||
## currently active. accepted values: browser, clock, help, | |||||
## media_library, outputs, playlist, playlist_editor, | |||||
## search_engine, tag_editor, visualizer, last_fm, lyrics, | |||||
## selected_items_adder, server_info, song_info, | |||||
## sort_playlist_dialog, tiny_tag_editor. | |||||
## | |||||
## - run_external_command "command" - runs given command using | |||||
## system() function. | |||||
## | |||||
## 5) In addition to binding to a key, you can also bind actions | |||||
## or chains of actions to a command. If it comes to commands, | |||||
## syntax is very similar to defining keys. Here goes example | |||||
## definition of a command: | |||||
## | |||||
## def_command "quit" [deferred] | |||||
## stop | |||||
## quit | |||||
## | |||||
## If you execute the above command (which can be done by | |||||
## invoking action execute_command, typing 'quit' and pressing | |||||
## enter), ncmpcpp will stop the player and then quit. Note the | |||||
## presence of word 'deferred' enclosed in square brackets. It | |||||
## tells ncmpcpp to wait for confirmation (ie. pressing enter) | |||||
## after you typed quit. Instead of 'deferred', 'immediate' | |||||
## could be used. Then ncmpcpp will not wait for confirmation | |||||
## (enter) and will execute the command the moment it sees it. | |||||
## | |||||
## Note: while command chains are executed, internal environment | |||||
## update (which includes current window refresh and mpd status | |||||
## update) is not performed for performance reasons. However, it | |||||
## may be desirable to do so in some situration. Therefore it's | |||||
## possible to invoke by hand by performing 'update enviroment' | |||||
## action. | |||||
## | |||||
## Note: There is a difference between: | |||||
## | |||||
## def_key "key" | |||||
## action1 | |||||
## | |||||
## def_key "key" | |||||
## action2 | |||||
## | |||||
## and | |||||
## | |||||
## def_key "key" | |||||
## action1 | |||||
## action2 | |||||
## | |||||
## First one binds two single actions to the same key whilst | |||||
## second one defines a chain of actions. The behavior of | |||||
## these two is different and is described in (1) and (2). | |||||
## | |||||
## Note: Function def_key accepts non-ascii characters. | |||||
## | |||||
##### List of unbound actions ##### | |||||
## | |||||
## The following actions are not bound to any key/command: | |||||
## | |||||
## - set_volume | |||||
## | |||||
# | |||||
#def_key "mouse" | |||||
# mouse_event | |||||
# | |||||
#def_key "up" | |||||
# scroll_up | |||||
# | |||||
#def_key "shift-up" | |||||
# select_item | |||||
# scroll_up | |||||
# | |||||
#def_key "down" | |||||
# scroll_down | |||||
# | |||||
#def_key "shift-down" | |||||
# select_item | |||||
# scroll_down | |||||
# | |||||
#def_key "[" | |||||
# scroll_up_album | |||||
# | |||||
#def_key "]" | |||||
# scroll_down_album | |||||
# | |||||
#def_key "{" | |||||
# scroll_up_artist | |||||
# | |||||
#def_key "}" | |||||
# scroll_down_artist | |||||
# | |||||
#def_key "page_up" | |||||
# page_up | |||||
# | |||||
#def_key "page_down" | |||||
# page_down | |||||
# | |||||
#def_key "home" | |||||
# move_home | |||||
# | |||||
#def_key "end" | |||||
# move_end | |||||
# | |||||
#def_key "insert" | |||||
# select_item | |||||
# | |||||
#def_key "enter" | |||||
# enter_directory | |||||
# | |||||
#def_key "enter" | |||||
# toggle_output | |||||
# | |||||
#def_key "enter" | |||||
# run_action | |||||
# | |||||
#def_key "enter" | |||||
# play_item | |||||
# | |||||
#def_key "space" | |||||
# add_item_to_playlist | |||||
# | |||||
#def_key "space" | |||||
# toggle_lyrics_update_on_song_change | |||||
# | |||||
#def_key "space" | |||||
# toggle_visualization_type | |||||
# | |||||
#def_key "delete" | |||||
# delete_playlist_items | |||||
# | |||||
#def_key "delete" | |||||
# delete_browser_items | |||||
# | |||||
#def_key "delete" | |||||
# delete_stored_playlist | |||||
# | |||||
#def_key "right" | |||||
# next_column | |||||
# | |||||
#def_key "right" | |||||
# slave_screen | |||||
# | |||||
#def_key "right" | |||||
# volume_up | |||||
# | |||||
#def_key "+" | |||||
# volume_up | |||||
# | |||||
#def_key "left" | |||||
# previous_column | |||||
# | |||||
#def_key "left" | |||||
# master_screen | |||||
# | |||||
#def_key "left" | |||||
# volume_down | |||||
# | |||||
#def_key "-" | |||||
# volume_down | |||||
# | |||||
#def_key ":" | |||||
# execute_command | |||||
# | |||||
#def_key "tab" | |||||
# next_screen | |||||
# | |||||
#def_key "shift-tab" | |||||
# previous_screen | |||||
# | |||||
#def_key "f1" | |||||
# show_help | |||||
# | |||||
#def_key "1" | |||||
# show_playlist | |||||
# | |||||
#def_key "2" | |||||
# show_browser | |||||
# | |||||
#def_key "2" | |||||
# change_browse_mode | |||||
# | |||||
#def_key "3" | |||||
# show_search_engine | |||||
# | |||||
#def_key "3" | |||||
# reset_search_engine | |||||
# | |||||
#def_key "4" | |||||
# show_media_library | |||||
# | |||||
#def_key "4" | |||||
# toggle_media_library_columns_mode | |||||
# | |||||
#def_key "5" | |||||
# show_playlist_editor | |||||
# | |||||
#def_key "6" | |||||
# show_tag_editor | |||||
# | |||||
#def_key "7" | |||||
# show_outputs | |||||
# | |||||
#def_key "8" | |||||
# show_visualizer | |||||
# | |||||
#def_key "=" | |||||
# show_clock | |||||
# | |||||
#def_key "@" | |||||
# show_server_info | |||||
# | |||||
#def_key "s" | |||||
# stop | |||||
# | |||||
#def_key "p" | |||||
# pause | |||||
# | |||||
#def_key ">" | |||||
# next | |||||
# | |||||
#def_key "<" | |||||
# previous | |||||
# | |||||
#def_key "ctrl-h" | |||||
# jump_to_parent_directory | |||||
# | |||||
#def_key "ctrl-h" | |||||
# replay_song | |||||
# | |||||
#def_key "backspace" | |||||
# jump_to_parent_directory | |||||
# | |||||
#def_key "backspace" | |||||
# replay_song | |||||
# | |||||
#def_key "f" | |||||
# seek_forward | |||||
# | |||||
#def_key "b" | |||||
# seek_backward | |||||
# | |||||
#def_key "r" | |||||
# toggle_repeat | |||||
# | |||||
#def_key "z" | |||||
# toggle_random | |||||
# | |||||
#def_key "y" | |||||
# save_tag_changes | |||||
# | |||||
#def_key "y" | |||||
# start_searching | |||||
# | |||||
#def_key "y" | |||||
# toggle_single | |||||
# | |||||
#def_key "R" | |||||
# toggle_consume | |||||
# | |||||
#def_key "Y" | |||||
# toggle_replay_gain_mode | |||||
# | |||||
#def_key "T" | |||||
# toggle_add_mode | |||||
# | |||||
#def_key "|" | |||||
# toggle_mouse | |||||
# | |||||
#def_key "#" | |||||
# toggle_bitrate_visibility | |||||
# | |||||
#def_key "Z" | |||||
# shuffle | |||||
# | |||||
#def_key "x" | |||||
# toggle_crossfade | |||||
# | |||||
#def_key "X" | |||||
# set_crossfade | |||||
# | |||||
#def_key "u" | |||||
# update_database | |||||
# | |||||
#def_key "ctrl-s" | |||||
# sort_playlist | |||||
# | |||||
#def_key "ctrl-s" | |||||
# toggle_browser_sort_mode | |||||
# | |||||
#def_key "ctrl-s" | |||||
# toggle_media_library_sort_mode | |||||
# | |||||
#def_key "ctrl-r" | |||||
# reverse_playlist | |||||
# | |||||
#def_key "ctrl-f" | |||||
# apply_filter | |||||
# | |||||
#def_key "ctrl-_" | |||||
# select_found_items | |||||
# | |||||
#def_key "/" | |||||
# find | |||||
# | |||||
#def_key "/" | |||||
# find_item_forward | |||||
# | |||||
#def_key "?" | |||||
# find | |||||
# | |||||
#def_key "?" | |||||
# find_item_backward | |||||
# | |||||
#def_key "." | |||||
# next_found_item | |||||
# | |||||
#def_key "," | |||||
# previous_found_item | |||||
# | |||||
#def_key "w" | |||||
# toggle_find_mode | |||||
# | |||||
#def_key "e" | |||||
# edit_song | |||||
# | |||||
#def_key "e" | |||||
# edit_library_tag | |||||
# | |||||
#def_key "e" | |||||
# edit_library_album | |||||
# | |||||
#def_key "e" | |||||
# edit_directory_name | |||||
# | |||||
#def_key "e" | |||||
# edit_playlist_name | |||||
# | |||||
#def_key "e" | |||||
# edit_lyrics | |||||
# | |||||
#def_key "i" | |||||
# show_song_info | |||||
# | |||||
#def_key "I" | |||||
# show_artist_info | |||||
# | |||||
#def_key "g" | |||||
# jump_to_position_in_song | |||||
# | |||||
#def_key "l" | |||||
# show_lyrics | |||||
# | |||||
#def_key "ctrl-v" | |||||
# select_range | |||||
# | |||||
#def_key "v" | |||||
# reverse_selection | |||||
# | |||||
#def_key "V" | |||||
# remove_selection | |||||
# | |||||
#def_key "B" | |||||
# select_album | |||||
# | |||||
#def_key "a" | |||||
# add_selected_items | |||||
# | |||||
#def_key "c" | |||||
# clear_playlist | |||||
# | |||||
#def_key "c" | |||||
# clear_main_playlist | |||||
# | |||||
#def_key "C" | |||||
# crop_playlist | |||||
# | |||||
#def_key "C" | |||||
# crop_main_playlist | |||||
# | |||||
#def_key "m" | |||||
# move_sort_order_up | |||||
# | |||||
#def_key "m" | |||||
# move_selected_items_up | |||||
# | |||||
#def_key "n" | |||||
# move_sort_order_down | |||||
# | |||||
#def_key "n" | |||||
# move_selected_items_down | |||||
# | |||||
#def_key "M" | |||||
# move_selected_items_to | |||||
# | |||||
#def_key "A" | |||||
# add | |||||
# | |||||
#def_key "S" | |||||
# save_playlist | |||||
# | |||||
#def_key "o" | |||||
# jump_to_playing_song | |||||
# | |||||
#def_key "G" | |||||
# jump_to_browser | |||||
# | |||||
#def_key "G" | |||||
# jump_to_playlist_editor | |||||
# | |||||
#def_key "~" | |||||
# jump_to_media_library | |||||
# | |||||
#def_key "E" | |||||
# jump_to_tag_editor | |||||
# | |||||
#def_key "U" | |||||
# toggle_playing_song_centering | |||||
# | |||||
#def_key "P" | |||||
# toggle_display_mode | |||||
# | |||||
#def_key "\\" | |||||
# toggle_interface | |||||
# | |||||
#def_key "!" | |||||
# toggle_separators_between_albums | |||||
# | |||||
#def_key "L" | |||||
# toggle_lyrics_fetcher | |||||
# | |||||
#def_key "F" | |||||
# fetch_lyrics_in_background | |||||
# | |||||
#def_key "alt-l" | |||||
# toggle_fetching_lyrics_in_background | |||||
# | |||||
#def_key "ctrl-l" | |||||
# toggle_screen_lock | |||||
# | |||||
#def_key "`" | |||||
# toggle_library_tag_type | |||||
# | |||||
#def_key "`" | |||||
# refetch_lyrics | |||||
# | |||||
#def_key "`" | |||||
# add_random_items | |||||
# | |||||
#def_key "ctrl-p" | |||||
# set_selected_items_priority | |||||
# | |||||
#def_key "q" | |||||
# quit | |||||
# | |||||
def_key "ctrl-d" | |||||
delete_playlist_items | |||||
def_key "tab" | |||||
next_screen | |||||
def_key "shift-tab" | |||||
previous_screen | |||||
def_key "l" | |||||
next_column | |||||
def_key "l" | |||||
slave_screen | |||||
def_key "l" | |||||
volume_up | |||||
def_key "+" | |||||
volume_up | |||||
def_key "h" | |||||
previous_column | |||||
def_key "h" | |||||
master_screen | |||||
def_key "h" | |||||
volume_down | |||||
def_key "n" | |||||
next_found_item | |||||
def_key "N" | |||||
previous_found_item | |||||
def_key "J" | |||||
move_sort_order_down | |||||
def_key "K" | |||||
move_sort_order_up | |||||
def_key "j" | |||||
scroll_down | |||||
def_key "k" | |||||
scroll_up |
@@ -0,0 +1,6 @@ | |||||
visualizer_fifo_path = "/tmp/mpd.fifo" | |||||
visualizer_output_name = "visualizer_fifo" | |||||
visualizer_sync_interval = "30" | |||||
visualizer_in_stereo = "yes" | |||||
visualizer_type = "spectrum" | |||||
visualizer_look = "+|" |
@@ -1,15 +0,0 @@ | |||||
# Increase volume | |||||
"pactl set-sink-volume @DEFAULT_SINK@ +2000" | |||||
XF86AudioRaiseVolume | |||||
# Decrease volume | |||||
"pactl set-sink-volume @DEFAULT_SINK@ -2000" | |||||
XF86AudioLowerVolume | |||||
# Mute volume | |||||
"pactl set-sink-mute @DEFAULT_SINK@ toggle" | |||||
XF86AudioMute | |||||
# Mute microphone | |||||
"pactl set-source-mute @DEFAULT_SOURCE@ toggle" | |||||
XF86AudioMicMute |
@@ -1,15 +1,21 @@ | |||||
# Increase volume | # Increase volume | ||||
"pactl set-sink-volume @DEFAULT_SINK@ +2000" | "pactl set-sink-volume @DEFAULT_SINK@ +2000" | ||||
XF86AudioRaiseVolume | |||||
Mod4 + F12 | |||||
# Decrease volume | # Decrease volume | ||||
"pactl set-sink-volume @DEFAULT_SINK@ -2000" | "pactl set-sink-volume @DEFAULT_SINK@ -2000" | ||||
XF86AudioLowerVolume | |||||
Mod4 + F12 | |||||
# Mute volume | # Mute volume | ||||
"pactl set-sink-mute @DEFAULT_SINK@ toggle" | "pactl set-sink-mute @DEFAULT_SINK@ toggle" | ||||
XF86AudioMute | |||||
Mod4 + F10 | |||||
# Mute microphone | # Mute microphone | ||||
"pactl set-source-mute @DEFAULT_SOURCE@ toggle" | "pactl set-source-mute @DEFAULT_SOURCE@ toggle" | ||||
XF86AudioMicMute | |||||
Mod4 + F9 | |||||
"app-launch" | |||||
Mod4 + g | |||||
"do-action" | |||||
Mod4 + e |