Xfce 多卷通知

Xfce 多卷通知

我的问题类似于问题(不完全相同),我确实尝试了那里的答案,但它们没有解决问题。基本上,当我通过键盘快捷键更改音量时,我会收到多个通知,如下所示:

在此处输入图片描述

我没有安装 xfce4-volumed,通知完全来自面板中的 pulseaudio 插件。如果我删除插件并安装 xfce4-volumed,也会出现同样的情况,但通知样式会有所不同(扬声器较小)。我发现的唯一解决方法是从 puldeaudio 插件属性禁用通知,但这并不理想。任何帮助都值得感激。我正在运行安装了 xfce 的 Ubuntu 18.04(不是 xubuntu)。

答案1

解决方案并不明显。我给出两个版本。

方法 1:notify-osd

简单的解决方法,但有一些限制(例如,通知在被点击后不会消失)。在终端中运行以下命令即可:

sudo apt-get autoremove xfce4-notifyd
sudo apt-get install notify-osd

然后将notify-osd设置为在启动时运行。完成了。

方法 2:Dunst

有点棘手,但值得。运行以下命令:

sudo apt-get install libdbus-1-dev libx11-dev libxinerama-dev libxrandr-dev libxss-dev libglib2.0-dev libpango1.0-dev libgtk-3-dev libxdg-basedir-dev
git clone https://github.com/dunst-project/dunst.git
cd dunst
make
sudo make install

它应该已经可以工作了,但是它很丑陋。现在创建一个~/.config/dunst名为 dunstrc 的文件并粘贴以下内容:

    [global]
    font = Arial 11 #Monospace 10

    # allow a small subset of html markup:
    # <b>bold</b>
    # <i>italic</i>
    # <s>strikethrough<s/>
    # <u>underline</u>
    #
    # for a complete reference see http://developer.gnome.org/pango/stable/PangoMarkupFormat.html
    # If markup is not allowed, those tags will be stripped out of the message.
    allow_markup = yes

    #show_indicators=true
    icon_position=left
    icon_folders = "/usr/share/icons/gnome/48x48/status/:/usr/share/icons/gnome/48x48/devices/"
    max_icon_size=40
    shrink=yes

    # 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
    # Markup is allowed
    format = "<b>%s</b>\n%b"
#"<b>%a:</b> %s\n%b"

    # Sort messages by urgency
    sort = yes

    # Show how many messages are currently hidden (because of geometry)
    indicate_hidden = yes

    # alignment of message text.
    # Possible values are "left", "center" and "right"
    alignment = left

    # The frequency with wich text that is longer than the notification
    # window allows bounces back and forth.
    # This option conflicts with 'word_wrap'.
    # Set to 0 to disable
    bounce_freq = 0

    # show age of message if message is older than show_age_threshold seconds.
    # set to -1 to disable
    show_age_threshold = 120

    # split notifications into multiple lines if they don't fit into geometry
    word_wrap = yes

    # ignore newlines '\n' in notifications
    ignore_newline = no


    # the geometry of the window
    # geometry [{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 respectevly.
    # 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 = "450x5-30+20"

    # The transparency of the window. range: [0; 100]
    # This option will only work if a compositing windowmanager is present (e.g. xcompmgr, compiz, etc..)
    transparency = 20

    # 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.
    idle_threshold = 60

    # 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 windowmanager that exports the _NET_ACTIVE_WINDOW property.
    # This should be the case for almost all modern windowmanagers.
    #
    # If this option is set to mouse or keyboard, the monitor option will be
    # ignored.
    follow = mouse

    # should a notification popped up from history be sticky or
    # timeout as if it would normally do.
    sticky_history = yes

    # The height of a single line. If the height is smaller than the font height,
    # it will get raised to the font height.
    # This adds empty space above and under the text.
    line_height = 0

    # Draw a line of 'separatpr_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

    # 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

    # print a notification on startup
    # This is mainly for error detection, since dbus (re-)starts dunst
    # automatically after a crash.
    startup_notification = false

    # dmenu path
    dmenu = /usr/bin/dmenu -p dunst:

    # browser for opening urls in context menu
    browser = /usr/bin/firefox -new-tab

[frame]
    width = 15
    color = "#071019"#"#000000"

[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 = mod4+m

    # close all notifications
    close_all = mod4+shift+m

    # redisplay last message(s)
    history = mod4+n

    # context menu
    context = mod4+shift+i

[urgency_low]
    # IMPORTANT: colors have to be defined in quotation marks.
    # Otherwise the '#' and following  would be interpreted as a comment.
    background = "#071019"
    foreground = "#FFFFFF"
    timeout = 10

[urgency_normal]
    background = "#071019"
    foreground = "#FFFFFF"
    timeout = 10

[urgency_critical]
    background = "#071019"
    foreground = "#FFFFFF"
    timeout = 0


# 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', 'summary', 'body' or 'icon'
# and you can override the 'timeout', 'urgency', 'foreground', 'background'
# and 'format'.
# Shell-like globbing will get expanded.
#
# 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.

#[espeak]
#    summary = "*"
#    script = dunst_espeak.sh

#[script-test]
#    summary = "*script*"
#    script = dunst_test.sh

#[ignore]
## This notification will not be displayed
#    summary = "foobar"
#    format = ""

[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
    format  = "%s "%b""

[music]
    appname = Amarok
    summary = "Now playing"
    urgency = low

#[twitter]
#    appname = Pidgin
#    summary = *twitter.com*
#    urgency = normal
#

现在将 dunst 设置为在启动时运行,您现在应该有一个 100% 正常运行的通知系统。您可以进一步调整它,以便在更改音量时显示一个图标,但这需要编写脚本或删除 pulsaudio 以使用 alsa

答案2

尝试编辑/usr/share/dbus-1/session.conf以禁止窃听,然后重新启动会话。

-    <allow send_destination="*" eavesdrop="true"/>
+    <allow send_destination="*" eavesdrop="false"/>
     <!-- Allow everything to be received -->
-    <allow eavesdrop="true"/>
+    <allow eavesdrop="false"/>

这是我如何在 Debian 上解决类似问题

答案3

最简单、最好的解决方案之一是转到通知插件属性的属性并关闭应用程序中的 xfce 卷守护程序。要显示音量指示,请转到脉冲音频插件属性并打开显示通知音量。

相关内容