firefox-apps
Comparison of chromium-based browsers and firefox
- list windows:
wmctrl -l
- list windows properties:
xprop -name <WIN_NAME> [PROP]
second instance of chrome ignores --class
- bing: chrome wm_class new instance
- https://superuser.com/questions/1457060/how-can-you-start-two-chrome-windows-with-different-wm-class-attributes
- https://issues.chromium.org/issues/40172351
- 目前看来最好的方法:--user-data-dir
- firefox类似,用不同的profile
- https://superuser.com/questions/1457060/how-can-you-start-two-chrome-windows-with-different-wm-class-attributes
https://superuser.com/questions/1770285/custom-firefox-profiles-with-different-wm-class-and-icons
set WM_CLASS
- https://stackoverflow.com/questions/36650865/set-wm-class-with-wnck-xprop-or-something-else 能正常设置kitty的WM_CLASS,但是为什么chrome不行?
所以选择firefox!
{ config, ... }: {
imports = [
./module.nix
];
firefox-apps = [{
name = "ms-todo";
url = "https://to-do.live.com/";
desktopEntryExtras = {
name = "Microsoft To Do";
};
keybinding = "<Alt>t";
}{
name = "ms-calendar"; # avoid singleton xdotool conflicts with system calendar
url = "https://outlook.live.com/calendar";
desktopEntryExtras = {
name = "Microsoft Calendar";
genericName = "outlook calendar mail";
};
keybinding = "<Alt>m";
}{
name = "webweixin";
url = "https://wx.qq.com";
desktopEntryExtras = {
name = "网页微信";
genericName = "weixin";
};
}{
name = "my_cheatsheet_html";
url = "${config.home.homeDirectory}/Documents/Tech/my_cheatsheet.html";
keybinding = "<Alt>space";
desktopEntryExtras = {
name = "Cheatsheet HTML";
genericName = "cheatsheet";
icon = builtins.toFile "cheatsheet.svg" ''
<svg width="64" height="64" xmlns="http://www.w3.org/2000/svg">
<rect width="100%" height="100%" rx="20%" ry="20%" fill="#666666"/>
<text x="50%" y="50%" text-anchor="middle" dominant-baseline="middle" font-size="18" font-weight="bold" fill="#F5F5F5">
<tspan x="50%" dy="-0.6em">CS</tspan>
<tspan x="50%" dy="1.2em">html</tspan>
</text>
</svg>
'';
};
}{
name = "bing_dict";
url = "https://cn.bing.com/dict";
keybinding = "<Alt>b";
desktopEntryExtras = {
name = "Bing Dict";
genericName = "dictionary";
};
}{
name = "riyucidian";
url = "https://dict.hjenglish.com/jp";
keybinding = "<Alt>j";
desktopEntryExtras = {
name = "日语词典";
};
}{
name = "devdocs";
url = "https://devdocs.io";
desktopEntryExtras = {
name = "DevDocs";
};
}(let
metacubexd = builtins.fetchTarball "https://github.com/MetaCubeX/metacubexd/archive/gh-pages.zip";
in {
name = "clash";
url = "${metacubexd}/index.html";
desktopEntryExtras = {
icon = "${metacubexd}/pwa-192x192.png";
};
}){
name = "ai";
url = "https://web.chatboxai.app";
desktopEntryExtras = {
name = "AI Chatbox";
};
}{
name = "deepseek";
url = "https://chat.deepseek.com";
keybinding = "<Alt>a";
desktopEntryExtras = {
name = "DeepSeek";
};
}{
name = "doubao";
url = "https://www.doubao.com/chat";
keybinding = "<Alt>d";
desktopEntryExtras = {
name = "豆包";
};
}{
name = "spotify";
url = "https://open.spotify.com/search";
desktopEntryExtras = {
name = "Spotify (Search)";
};
}];
}