You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Userscript/Tampermonkey操纵匿名函数参数修改Mastodon通知音?

修改Mastodon网页实例默认通知音效的方案

需求可行性

完全可行,不管是自己托管的实例还是使用公共实例,都有对应的实现方法。


实现方法

1. 自己托管实例:修改源码重新部署

如果你是自己搭建的Mastodon,直接改源码是最彻底的方式:

  • 找到源码路径 mastodon/app/javascript/mastodon/middleware/sounds.js
  • 修改 soundCache 里的音效路径,比如把 /sounds/boop.ogg 和 /sounds/boop.mp3 改成你自己的音效路径(比如 /sounds/my-notify.ogg)
  • 把你的自定义音效文件(需同时准备ogg和mp3格式,保证不同浏览器兼容性)放到项目的 public/sounds/ 目录下
  • 运行编译命令:RAILS_ENV=production bundle exec rails assets:precompile
  • 重启Mastodon服务,修改即可生效

2. 公共实例:浏览器端修改(无需源码权限)

临时修改(刷新页面后失效)

打开浏览器F12开发者工具,切换到「控制台」标签,运行以下代码(替换成你的音效链接):

// 创建自定义音效对象
const customSound = new Audio('你的自定义音效URL');
// 替换全局音效缓存
for (const key in window) {
  if (typeof window[key] === 'object' && window[key].boop) {
    window[key].boop = customSound;
    break;
  }
}
// 兜底:覆盖Audio播放逻辑
const originalPlay = Audio.prototype.play;
Audio.prototype.play = function() {
  if (this.src.includes('/sounds/boop.')) {
    this.src = '你的自定义音效URL';
  }
  return originalPlay.call(this);
};

持久化修改(刷新页面仍生效)

用油猴脚本(Tampermonkey/Greasemonkey)实现,新建脚本后粘贴以下内容:

// ==UserScript==
// @name         Mastodon自定义通知音效
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  替换Mastodon网页版默认通知音效
// @match        https://你的实例域名/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // 替换成你的自定义音效链接
    const CUSTOM_SOUND = '你的音效URL';

    // 拦截音效创建逻辑
    const originalCreate = window.createAudio || function(sources) {
        const audio = new Audio();
        sources.forEach(s => audio.src = s.src);
        return audio;
    };
    window.createAudio = function(sources) {
        const isDefaultBoop = sources.some(s => s.src.includes('/sounds/boop.'));
        if (isDefaultBoop) {
            const audio = new Audio(CUSTOM_SOUND);
            return audio;
        }
        return originalCreate(sources);
    };

    // 替换已缓存的音效
    setTimeout(() => {
        for (const key in window) {
            if (window[key]?.boop) {
                window[key].boop.src = CUSTOM_SOUND;
                break;
            }
        }
    }, 1000);
})();

修改脚本里的 @match 为你使用的实例域名,CUSTOM_SOUND 替换成你的音效链接,保存启用即可。


替代方案

  • 浏览器扩展替换音效:安装专门的音效替换扩展(比如Sound Replacer),添加规则将Mastodon的默认音效路径替换为你自定义的音效。
  • 改用系统通知音效:在Mastodon设置里关闭网页通知音效,开启系统通知,然后修改操作系统的默认通知音效,这样收到通知时会用系统自定义的音效。

内容的提问来源于stack exchange,提问作者Aoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:45:30