Migrate web apps to nix setup

Create dedicated xdg desktopEntries to start web apps.
Use chromium where necessary, e.g. due to audio / video experiences.

Start web apps with dedicated Firefox profiles.
Configure those profiles to hide any UI to have an actual app feeling.
This commit is contained in:
Daniel Siepmann 2022-03-11 09:50:34 +01:00
parent a0b6cf5ec9
commit 4919105362
Signed by: Daniel Siepmann
GPG key ID: 33D6629915560EF4
5 changed files with 71 additions and 26 deletions

View file

@ -142,15 +142,47 @@
"borg/exclude".source = ./home/files/borg-exclude;
};
xdg.desktopEntries.networkmanager-dmenu = {
type = "Application";
exec = "${pkgs.networkmanager_dmenu}/bin/networkmanager_dmenu";
name = "Networkmanager dmenu";
comment = "Networkmanaging using dmenu";
genericName = "Networkmanager Setting";
categories = [
"Network"
];
xdg.desktopEntries = {
networkmanager-dmenu = {
type = "Application";
exec = "${pkgs.networkmanager_dmenu}/bin/networkmanager_dmenu";
name = "Networkmanager dmenu";
comment = "Networkmanaging using dmenu";
genericName = "Networkmanager Setting";
categories = [
"Network"
];
};
slack-typo3 = {
name = "Slack TYPO3";
type = "Application";
exec = "${pkgs.chromium}/bin/chromium-browser --class=\"chat\" --new-window --app=https://app.slack.com/client/T024TUMLZ/unreads";
};
slack-codappix = {
name = "Slack Codappix";
type = "Application";
exec = "${pkgs.chromium}/bin/chromium-browser --class=\"chat\" --new-window --app=https://app.slack.com/client/T2DPNS55W/unreads";
};
slack-sac = {
name = "Slack SAC";
type = "Application";
exec = "${pkgs.chromium}/bin/chromium-browser --class=\"chat\" --new-window --app=https://app.slack.com/client/T3FANTPL5/unreads";
};
microsoft-teams = {
name = "Microsoft Teams";
type = "Application";
exec = "${pkgs.chromium}/bin/chromium-browser --class=\"chat\" --new-window --user-agent=\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36\" --new-window --app=https://teams.microsoft.com/";
};
toggl = {
name = "Toggl Time Tracking";
type = "Application";
exec = "${pkgs.firefox}/bin/firefox --class=\"time-tracking\" --new-instance -P toggl https://track.toggl.com/timer";
};
mailhog-ui = {
name = "Mailhog";
type = "Application";
exec = "${pkgs.firefox}/bin/firefox --class=\"mailhog\" --new-instance -P mailhog https://mailhog.localhost";
};
};
services.dunst = import ./home/services/dunst.nix;

View file

@ -110,22 +110,12 @@ for_window [window_type="dialog"] sticky enable
# As well as keepass, in order to make it easier usable side by side
for_window [class="KeePassXC"] sticky enable floating enable
assign [class="^node-debugger$"] 1
assign [class="^toggl$"] 2:💶
assign [class="^time-tracking$"] 2:💶
assign [class="^mailhog$"] 2:💶
assign [class="^sentry$"] 2:💶
assign [class="^Firefox$"] 2:💶
assign [class="^Slack$"] 3:💬
assign [class="^slack-.*"] 3:💬
assign [class="^whatsapp$"] 3:💬
assign [class="^chat$"] 3:💬
assign [class="^Signal$"] 3:💬
assign [class="^teams-.*"] 3:💬
assign [class="^mattermost-.*$"] 3:💬
assign [class="^mattermost$"] 3:💬
assign [class="^Mattermost$"] 3:💬
assign [class="^jitsi-.*$"] 3:💬
assign [class="^Thunderbird$"] 4:✉️
@ -135,9 +125,6 @@ assign [class="^Pavucontrol$"] 5:🎵
assign [class="^Audacity$"] 5:🎵
assign [class="^gplay-music$"] 5:🎵
# TODO: Use some more specific, to only fetch testing instances?
assign [class="^Chromium-browser$"] 8
# switch to workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2:💶

View file

@ -4,6 +4,7 @@
enable = true;
# https://rycee.gitlab.io/home-manager/options.html#opt-programs.firefox.profiles
# https://github.com/pyllyukko/user.js
profiles = {
default = {
@ -41,6 +42,8 @@
"browser.urlbar.suggest.openpage" = false;
"browser.urlbar.timesBeforeHidingSuggestionsHint" = 0;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.anchor_color" = "#77dfd8";
"browser.visited_color" = "#c8a0d1";
"browser.display.background_color" = "#2e3436";
@ -155,5 +158,23 @@
};
userContent = pkgs.lib.fileContents ./firefox/userContent.css;
};
toggl = {
name = "toggl";
id = 1;
isDefault = false;
userChrome = pkgs.lib.fileContents ./firefox/kioskLikeUserChrome.css;
settings = {
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
};
mailhog = {
name = "mailhog";
id = 2;
isDefault = false;
userChrome = pkgs.lib.fileContents ./firefox/kioskLikeUserChrome.css;
settings = {
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
};
};
}

View file

@ -0,0 +1,7 @@
/*
* Important: use "visibility: collapse" instead of "display: none".
* I do not know why, but display: none will hide the whole content of the frame.
*/
#navigator-toolbox-background {
visibility: collapse !important;
}

View file

@ -89,8 +89,6 @@ Todos
* Right now I've installed gnupg2, gnupg, gpg on ubuntu
* Migrate ungoogled chromium
* Migrate home manager to use flake for better rollback support if update breaks something.
* Maybe PR upstream: `./home/modules/programs/languagetool.nix`.