IN2JBH5MRX5RB4ZZG2WSDUJWSXCX6AZLP5O77763HX5KKPXAW4WQC Host blackstaffHostName blackstaffPort 22User jleechpeHost git.blackstaffHostName blackstaffPort 22User gitHost ssh.pijul.comHostName ssh.pijul.comPort 22User jleechpeAddKeysToAgent yes
return {automatically_reload_config = true,enable_scroll_bar = true,exit_behavior = "Close",ssh_domains = {{name = "blackstaff",remote_address = "192.168.4.99",username = "jleechpe",}},unix_domains = {{name = "unix",connect_automatically = false,no_serve_automatically = false,},},}
[qt]customfont=falsecustomicontheme=falsecustomlocale=falsecustompalette=falsecustomstylesheet=falsecustomwidgetstyle=falsefont="Sans Serif,9,-1,5,50,0,0,0,0,0"icontheme=hicoloriconthemepath=locale=en_USpalette=@Variant(\0\0\0\x44\x1\x1\xff\xff\0\0\0\0\0\0\0\0\x1\x1\xff\xff\xef\xef\xef\xef\xef\xef\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xcb\x4\xcb\x4\xcb\x4\0\0\x1\x1\xff\xff\x9f\xf4\x9f\xf4\x9f\xf4\0\0\x1\x1\xff\xff\xb8\x90\xb8\x90\xb8\x90\0\0\x1\x1\xff\xff\0\0\0\0\0\0\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\0\0\0\0\0\0\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xef\xef\xef\xef\xef\xef\0\0\x1\x1\xff\xffv{v{v{\0\0\x1\x1\xff\xff\x30\x30\x8c\x8c\xc6\xc6\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\0\0\0\0\xff\xff\0\0\x1\x1\xff\xff\xff\xff\0\0\xff\xff\0\0\x1\x1\xff\xff\xf7\xf7\xf7\xf7\xf7\xf7\0\0\x1\x1\xff\xff\xbe\xbe\xbe\xbe\xbe\xbe\0\0\x1\x1\xff\xff\xef\xef\xef\xef\xef\xef\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xcb\x4\xcb\x4\xcb\x4\0\0\x1\x1\xff\xff\xbe\xbe\xbe\xbe\xbe\xbe\0\0\x1\x1\xff\xff\xb8\x90\xb8\x90\xb8\x90\0\0\x1\x1\xff\xff\xbe\xbe\xbe\xbe\xbe\xbe\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xbe\xbe\xbe\xbe\xbe\xbe\0\0\x1\x1\xff\xff\xef\xef\xef\xef\xef\xef\0\0\x1\x1\xff\xff\xef\xef\xef\xef\xef\xef\0\0\x1\x1\xff\xff\xb1\xb8\xb1\xb8\xb1\xb8\0\0\x1\x1\xff\xff\x91\x91\x91\x91\x91\x91\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\0\0\0\0\xff\xff\0\0\x1\x1\xff\xff\xff\xff\0\0\xff\xff\0\0\x1\x1\xff\xff\xf7\xf7\xf7\xf7\xf7\xf7\0\0\x1\x1\xff\xff\0\0\0\0\0\0\0\0\x1\x1\xff\xff\xef\xef\xef\xef\xef\xef\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xcb\x4\xcb\x4\xcb\x4\0\0\x1\x1\xff\xff\x9f\xf4\x9f\xf4\x9f\xf4\0\0\x1\x1\xff\xff\xb8\x90\xb8\x90\xb8\x90\0\0\x1\x1\xff\xff\0\0\0\0\0\0\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\0\0\0\0\0\0\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xef\xef\xef\xef\xef\xef\0\0\x1\x1\xff\xffv{v{v{\0\0\x1\x1\xff\xff\x30\x30\x8c\x8c\xc6\xc6\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\0\0\0\0\xff\xff\0\0\x1\x1\xff\xff\xff\xff\0\0\xff\xff\0\0\x1\x1\xff\xff\xf7\xf7\xf7\xf7\xf7\xf7\0\0)plugindir=stylesheetpath=trpath=widgetstyle=fusion[startup]considerForReconnect=trueconsiderLauncherForReconnect=falseshowButton=trueshowLauncherButton=falsesyncthingArgs="-no-browser -no-restart -logflags=3"syncthingAutostart=falsesyncthingPath=syncthingsyncthingUnit=syncthing.servicesystemUnit=falsetools\Inotify\args=tools\Inotify\autostart=falsetools\Inotify\path=useLibSyncthing=false[tray]brightTextColors=falseconnections\1\apiKey=@ByteArray(mDPDddN43xejPGiziNk4gRAV55Ya7dqL)connections\1\authEnabled=falseconnections\1\autoConnect=falseconnections\1\devStatsPollInterval=60000connections\1\errorsPollInterval=30000connections\1\httpsCertPath=connections\1\label=Primary instanceconnections\1\password=connections\1\reconnectInterval=0connections\1\statusComputionFlags=11connections\1\syncthingUrl=http://127.0.0.1:8384connections\1\trafficPollInterval=5000connections\1\userName=connections\size=1dbusNotifications=truedistinguishTrayIcons=falseframeStyle=16ignoreInavailabilityAfterStart=15notifyOnDisconnect=truenotifyOnErrors=truenotifyOnLauncherErrors=truenotifyOnLocalSyncComplete=falsenotifyOnNewDeviceConnects=falsenotifyOnNewDirectoryShared=truenotifyOnRemoteSyncComplete=falsepositioning\assumedIconPos=@Point(0 0)positioning\useCursorPos=trueshowSyncthingNotifications=trueshowTraffic=truestatusIcons="#ff26b6db,#ff0882c8,#ffffffff;#ffdb3c26,#ffc80828,#ffffffff;#ffc9ce3b,#ffebb83b,#ffffffff;#ff2d9d69,#ff2d9d69,#ffffffff;#ff26b6db,#ff0882c8,#ffffffff;#ff26b6db,#ff0882c8,#ffffffff;#ffa9a9a9,#ff58656c,#ffffffff;#ffa9a9a9,#ff58656c,#ffffffff"statusIconsRenderSize=@Size(32 32)tabPos=1trayIcons="#ff26b6db,#ff0882c8,#ffffffff;#ffdb3c26,#ffc80828,#ffffffff;#ffc9ce3b,#ffebb83b,#ffffffff;#ff2d9d69,#ff2d9d69,#ffffffff;#ff26b6db,#ff0882c8,#ffffffff;#ff26b6db,#ff0882c8,#ffffffff;#ffa9a9a9,#ff58656c,#ffffffff;#ffa9a9a9,#ff58656c,#ffffffff"trayIconsRenderSize=@Size(32 32)trayMenuSize=@Size(450 400)[webview]disabled=falsegeometry=@ByteArray()keepRunning=truezoomFactor=1
configuration {theme: "/home/jleechpe/.local/share/rofi/themes/oxide.rasi";}
import osimport socketimport subprocessimport reimport asynciofrom libqtile.config import Key, Screen, Group, Drag, Click, Matchfrom libqtile.command import lazyfrom libqtile import layout, bar, widget, hook, qtile, extensionfrom libqtile.log_utils import loggertry:from typing import List # noqa: F401except ImportError:passdef mpris_playpause():qtile.cmd_spawn(["playerctl", "--player=spotify", "play-pause"])def mpris_nexttrack():qtile.cmd_spawn(["playerctl", "--player=spotify", "next"])def mpris_prevtrack():qtile.cmd_spawn(["playerctl", "--player=spotify", "previous"])@hook.subscribe.startup_oncedef autostart():logger.info("Running autostart")home = os.path.expanduser("~/.config/qtile/autostart.sh")subprocess.call([home])@lazy.functiondef window_to_prev_group(qtile):if qtile.currentWindow is not None:i = qtile.groups.index(qtile.currentGroup)qtile.currentWindow.togroup(qtile.groups[i - 1].name)@lazy.functiondef window_to_next_group(qtile):if qtile.currentWindow is not None:i = qtile.groups.index(qtile.currentGroup)qtile.currentWindow.togroup(qtile.groups[i + 1].name)GREY = "#444444"DARK_GREY = "#333333"BLUE = "#007fcf"DARK_BLUE = "#005083"ORANGE = "#dd6600"DARK_ORANGE = "#582c00"mod = "mod4"hostname = socket.gethostname()homedir = os.getenv("HOME")keys = [Key([mod], "Return", lazy.spawn("wezterm")),# Switch window focus to other pane(s) of stackKey([mod], "space", lazy.layout.next()),# Swap panes of split stackKey([mod, "shift"], "space", lazy.layout.rotate()),# Toggle between split and unsplit sides of stack.# Split = all windows displayed# Unsplit = 1 window displayed, like Max layout, but still with# multiple stack panesKey([mod, "shift"], "Return", lazy.layout.toggle_split()),# Toggle between different layouts as defined belowKey([mod], "Tab", lazy.next_layout()),Key([mod], "w", lazy.window.kill()),Key([mod, "control"], "r", lazy.restart()),Key([mod, "control"], "q", lazy.shutdown()),Key([mod], "r", lazy.spawncmd()),Key([mod], "p", lazy.spawn("rofi -show drun")),Key([mod, "shift"], "p", lazy.spawn("rofi-pass")),Key(["mod1", "control"], "l", lazy.spawn("slock")),Key([mod, "shift"],"w",lazy.spawn("sh -c 'feh --randomize --bg-scale {:s}/.config/qtile/wallpapers/*/*'".format(homedir)),),Key([mod, "control"],"m",lazy.run_extension(extension.CommandSet(commands={"play/pause": "playerctl play-pause","next": "playerctl next","previous": "playerctl previous",},)),),Key(["shift"], "Print", lazy.spawn("flameshot gui")),Key([mod], "Print", lazy.spawn("flameshot launcher")),Key([], "Print", lazy.spawn("flameshot full -c")),Key(["control"], "Print", lazy.spawn("flameshot screen -c")),# Window controlsKey([mod], "h", lazy.layout.left()), # Switch between windows in current stack paneKey([mod], "j", lazy.layout.up()), # Switch between windows in current stack paneKey([mod], "k", lazy.layout.down()), # Switch between windows in current stack paneKey([mod], "l", lazy.layout.right() # Switch between windows in current stack pane),Key([mod, "shift"],"k",lazy.layout.shuffle_down(), # Move windows down in current stack),Key([mod, "shift"],"j",lazy.layout.shuffle_up(), # Move windows up in current stack),Key([mod, "shift"],"l",lazy.layout.grow(), # Grow size of current window (XmonadTall)lazy.layout.increase_nmaster(), # Increase number in master pane (Tile)),Key([mod, "shift"],"h",lazy.layout.shrink(), # Shrink size of current window (XmonadTall)lazy.layout.decrease_nmaster(), # Decrease number in master pane (Tile)),Key([mod, "shift"],"Left", # Move window to workspace to the leftwindow_to_prev_group,),Key([mod, "shift"],"Right", # Move window to workspace to the rightwindow_to_next_group,),Key([mod],"n",lazy.layout.normalize(), # Restore all windows to default size ratios),Key([mod],"m",lazy.layout.maximize(), # Toggle a window between minimum and maximum sizes),Key([mod, "shift"], "f", lazy.window.toggle_fullscreen()),Key([mod, "shift"], "KP_Enter", lazy.window.toggle_floating()), # Toggle floatingKey([mod, "shift"],"space",lazy.layout.rotate(), # Swap panes of split stack (Stack)lazy.layout.flip(), # Switch which side main pane occupies (XmonadTall)),# Stack controlsKey([mod],"space",lazy.layout.next(), # Switch window focus to other pane(s) of stack),Key([mod, "control"],"Return",lazy.layout.toggle_split(), # Toggle between split and unsplit sides of stack),# Laptop keysKey([], "XF86AudioMute", lazy.spawn("pulseaudio-ctl mute")),Key([], "XF86AudioLowerVolume", lazy.spawn("pulseaudio-ctl up")),Key([], "XF86AudioRaiseVolume", lazy.spawn("pulseaudio-ctl up")),Key([], "XF86MonBrightnessUp", lazy.spawn("light -A 10")),Key([], "XF86MonBrightnessDown", lazy.spawn("light -U 10")),Key([], "XF86KbdBrightnessUp", lazy.spawn("light -k -A 10")),Key([], "XF86KbdBrightnessDown", lazy.spawn("light -k -U 10")),]groups = [Group(i) for i in "123456789"]groups.append(Group(name="m",label="Media",matches=[Match(wm_class=["spotify", "Spotify"]),Match(wm_class="Spotify"),Match(title=re.compile(".*Spotify.*")),],persist=False,init=False,exclusive=True,))for i in groups:keys.extend([# mod1 + letter of group = switch to groupKey([mod], i.name, lazy.group[i.name].toscreen()),# mod1 + shift + letter of group = switch to & move focused window to groupKey([mod, "shift"], i.name, lazy.window.togroup(i.name)),])@hook.subscribe.client_newasync def move_spotify(client):await asyncio.sleep(0.01)if re.compile("^Spotify(?: Premium)?$").search(client.name):qtile.cmd_addgroup("m", label="Media")client.togroup("m")layout_theme = {"border_width": 2,"margin": 10,"border_focus": "007fcf","border_normal": "1D2330",}border_args = {"border_width": 2}layouts = [layout.Max(**layout_theme),layout.MonadTall(**layout_theme),layout.MonadWide(**layout_theme),layout.Bsp(**layout_theme),layout.TreeTab(font="Ubuntu",fontsize=10,sections=["FIRST", "SECOND"],section_fontsize=11,bg_color="141414",active_bg="90C435",active_fg="000000",inactive_bg="384323",inactive_fg="a0a0a0",padding_y=5,section_top=10,panel_width=320,**layout_theme),# layout.Stack(stacks=2, **layout_theme),# layout.Columns(**layout_theme),# layout.RatioTile(**layout_theme),# layout.VerticalTile(**layout_theme),# layout.Tile(shift_windows=True, **layout_theme),# layout.Matrix(**layout_theme),# layout.Zoomy(**layout_theme),layout.Floating(**layout_theme),]widget_defaults = dict(font="Terminus (TTF)", fontsize=14, padding=0, background=BLUE)extension_defaults = widget_defaults.copy()prompt = "{0}@{1}: ".format(os.environ["USER"], hostname)screen_defs = [{"width": 2560,"height": 1440,"x": 1080,},{"width": 2560,"height": 1440,"x": 3640,},{"width": 1080,"height": 19200,"x": 0,},]screens = []for screen in screen_defs:screens.append(Screen(top=bar.Bar([widget.Prompt(prompt=prompt, background=BLUE),widget.TextBox(text=" ",fontsize=45,padding=-8,foreground=DARK_BLUE,background=BLUE,),widget.CurrentLayoutIcon(background=BLUE),widget.TextBox(text=" ",fontsize=45,padding=-8,foreground=BLUE,background=DARK_BLUE,),widget.GroupBox(urgent_border=DARK_BLUE,disable_drag=True,highlight_method="block",this_screen_border=DARK_BLUE,other_screen_border=DARK_ORANGE,this_current_screen_border=BLUE,other_current_screen_border=ORANGE,background=DARK_BLUE,),widget.TextBox(text=" ",fontsize=45,padding=-8,foreground=DARK_BLUE,background=BLUE,),widget.TaskList(markup=True,markup_focused='<span background="#005083" foreground="#aaffaa">{}</span>',background=BLUE,border=DARK_BLUE,urgent_border=DARK_BLUE,),widget.TextBox(text=" ",fontsize=45,padding=-8,foreground=DARK_GREY,background=BLUE,),widget.Mpris2(name="spotify",objname="org.mpris.MediaPlayer2.spotify",display_metadata=["xesam:title", "xesam:artist"],scroll_chars=None,stop_pause_text="",background=DARK_GREY,mouse_callbacks={"Button1": mpris_playpause,"Button4": mpris_nexttrack,"Button5": mpris_prevtrack,},),widget.Volume(background=DARK_GREY,foreground=ORANGE,cardid="1",mute_command="pactl set-sink-mute 8 toggle",volume_app="/usr/bin/pavucontrol",),widget.TextBox(text=" ",fontsize=45,padding=-8,foreground=DARK_BLUE,background=DARK_GREY,),widget.Systray(background=DARK_BLUE),widget.TextBox(text=" ",fontsize=45,padding=-8,foreground=BLUE,background=DARK_BLUE,),widget.TextBox(text=" ⌚", foreground=BLUE, fontsize=18, background=BLUE),widget.Clock(format="%Y-%m-%d %a %H:%M:%S", background=BLUE),widget.TextBox(text=" ",fontsize=45,padding=-8,foreground=DARK_BLUE,background=BLUE,),widget.CurrentLayout(background=DARK_BLUE),],18,),width=screen["width"],height=screen["height"],x=screen["x"],y=0,))# Drag floating layouts.mouse = [Drag([mod],"Button1",lazy.window.set_position_floating(),start=lazy.window.get_position(),),Drag([mod], "Button3", lazy.window.set_size_floating(), start=lazy.window.get_size()),Click([mod], "Button2", lazy.window.bring_to_front()),]dgroups_key_binder = Nonedgroups_app_rules = [] # type: Listmain = Nonefollow_mouse_focus = Truebring_front_click = Falsecursor_warp = Falsefloating_layout = layout.Floating(float_rules=[Match(wm_class="Steam", title=re.compile("Friends List|Install - .*|.* - Steam")),Match(wm_class="confirm"),Match(wm_class="dialog"),Match(wm_class="download"),Match(wm_class="error"),Match(wm_class="file_progress"),Match(wm_class="notification"),Match(wm_class="splash"),Match(wm_class="toolbar"),Match(wm_class="confirmreset"), # gitkMatch(wm_class="makebranch"), # gitkMatch(wm_class="maketag"), # gitkMatch(title="branchdialog"), # gitkMatch(title="pinentry"), # GPG key password entryMatch(wm_class="ssh-askpass"), # ssh-askpass,],**layout_theme)auto_fullscreen = Truefocus_on_window_activation = "smart"reconfigure_screens = True# XXX: Gasp! We're lying here. In fact, nobody really uses or cares about this# string besides java UI toolkits; you can see several discussions on the# mailing lists, github issues, and other WM documentation that suggest setting# this string if your java app doesn't work correctly. We may as well just lie# and say that we're a working one by default.## We choose LG3D to maximize irony: it is a 3D non-reparenting WM written in# java that happens to be on java's whitelist.wmname = "Qtile"
autoclip: falseautoimport: truecliptimeout: 45exportkeys: truenocolor: falsenopager: falsenotifications: trueparsing: truepath: /home/jleechpe/.password-storesafecontent: true{{ if .includes.jlptech -}}mounts:jlptech: /home/jleechpe/.jlptech-store{{- end }}
[author]name = "{{ .user.username }}"full_name = "{{ .user.fullname }}"email = "{{ .user.email }}"
defaultsauth ontls ontls_starttls offtls_trust_file /etc/ssl/certs/ca-certificates.crtlogfile ~/.cache/msmtp.log# JLPaccount JLPtls_starttls offhost mail.leechpepin.comport 465from jonathan@leechpepin.comuser jonathan@leechpepin.compasswordeval "pass show email/jonathan@leechpepin.com"{{ if .includes.jlptech -}}# JLP Tech Consultingaccount Consultinghost mail.consultjlp.comport 465tls_starttls offfrom jlp@consultjlp.comuser jlp@consultjlp.compasswordeval "pass show jlptech/email/jlp@consultjlp.com"{{- end }}
SSH_AGENT_PID=""SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh"
EDITOR="/usr/bin/emacsclient -c"VISUAL="/usr/bin/emacsclient -c"
# Ensure pacmatic uses powerpillpacman_program="/usr/bin/powerpill"
[global]### Display #### Which monitor should the notifications be displayed on.monitor = 1# 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"# Turn on the progess barprogress_bar = true# Set the progress bar height. This includes the frame, so make sure# it's at least twice as big as the frame width.progress_bar_height = 10# Set the frame width of the progress barprogress_bar_frame_width = 1# Set the minimum width for the progress barprogress_bar_min_width = 150# Set the maximum width for the progress barprogress_bar_max_width = 300# 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# Padding between text and icon.text_icon_padding = 0# 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 necessaryidle_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 allowedformat = "<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 contentstack_duplicates = true# Hide the count of stacked notifications with the same contenthide_duplicate_count = false# Display indicators for URLs (U) and actions (A).show_indicators = yes### Icons #### Align icons left/right/officon_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 disablemax_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 historyhistory_length = 20### Misc/Advanced #### dmenu path.dmenu = /usr/bin/dmenu -p dunst:# Browser for opening urls in context menu.browser = /usr/bin/firefox -new-tab# Always run rule-defined scripts, even if the notification is suppressedalways_run_script = true# Define the title of the windows spawned by dunsttitle = Dunst# Define the class of the windows spawned by dunstclass = 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 stuffverbosity = 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### Wayland #### These settings are Wayland-specific. They have no effect when using X11# Uncomment this if you want to let notications appear under fullscreen# applications (default: overlay)# layer = top# Set this to true to use X11 output on Wayland.force_xwayland = 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_currentmouse_middle_click = do_action, close_currentmouse_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# The internal keyboard shortcut support in dunst is now considered deprecated# and should be replaced by dunstctl calls. You can use the configuration of your# WM or DE to bind these to shortcuts of your choice.# Check the dunstctl manual page for more info.[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. Equivalent dunstctl command:# dunstctl close# close = ctrl+space# Close all notifications. Equivalent dunstctl command:# dunstctl close-all# close_all = ctrl+shift+space# Redisplay last message(s). Equivalent dunstctl command:# dunstctl history-pop# history = ctrl+grave# Context menu. Equivalent dunstctl command:# dunstctl context# 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