diff --git a/.docker/microsoft-edge/Dockerfile b/.docker/microsoft-edge/Dockerfile new file mode 100644 index 0000000..102542c --- /dev/null +++ b/.docker/microsoft-edge/Dockerfile @@ -0,0 +1,24 @@ +ARG BASE_IMAGE=m1k1o/neko:base +FROM $BASE_IMAGE + +ARG API_URL="https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/" + +# +# install microsoft edge +RUN set -eux; apt-get update; \ + # + # fetch latest release + SRC_URL="${API_URL}$(wget -O - "${API_URL}" 2>/dev/null | sed -n 's/.*href="\([^"]*\).*/\1/p' | tail -1)"; \ + wget -O /tmp/microsoft-edge.deb "${SRC_URL}"; \ + apt-get install -y --no-install-recommends openbox /tmp/microsoft-edge.deb; \ + # + # clean up + apt-get clean -y; \ + rm -rf /var/lib/apt/lists/* /var/cache/apt/* + +# +# copy configuation files +COPY supervisord.conf /etc/neko/supervisord/microsoft-edge.conf +COPY --chown=neko preferences.json /home/neko/.config/microsoft-edge/Default/Preferences +COPY policies.json /etc/opt/edge/policies/managed/policies.json +COPY openbox.xml /etc/neko/openbox.xml diff --git a/.docker/microsoft-edge/openbox.xml b/.docker/microsoft-edge/openbox.xml new file mode 100644 index 0000000..4163a13 --- /dev/null +++ b/.docker/microsoft-edge/openbox.xml @@ -0,0 +1,763 @@ + + + + + + + + 10 + 20 + + + + + + no + true + yes + normal + + + + + yes + + no + + yes + + no + + 200 + + no + + + + + Smart + +
yes
+ + Primary + + 1 + +
+ + + Clearlooks + NLIMC + + yes + yes + + sans + 8 + + bold + + normal + + + + sans + 8 + + bold + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + bold + + normal + + + + sans + 9 + + bold + + normal + + + + + + + 1 + 1 + + + + 875 + + + + + yes + Nonpixel + + Center + + + + + 10 + + 10 + + + + + + + 0 + 0 + 0 + 0 + + + + TopLeft + + 0 + 0 + no + Above + + Vertical + + no + 300 + + 300 + + Middle + + + + + C-g + + + + leftno + + + rightno + + + upno + + + downno + + + leftno + + + rightno + + + upno + + + downno + + + 1 + + + 2 + + + 3 + + + 4 + + + + + + + + + + + + + + + + + + + + scrot -s + + + + + + + + + + + + + + + + + + + + + + + + yesyes + + + + + + + + + + + + right + + + + + left + + + + + up + + + + + down + + + + + + + + true + Konqueror + + kfmclient openProfile filemanagement + + + + + scrot + + + + + 1 + + 500 + + 400 + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + + + next + + + previous + + + next + + + previous + + + next + + + + + + + + + + + + + + no + + + + + + + + + + + yes + + + + + + + + + + + + + + + + + + + + + + + + + + + top + + + + + + left + + + + + + right + + + + + + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vertical + + + horizontal + + + + + + + + + + + + + + + + + previous + + + next + + + + previous + + + next + + + previous + + + next + + + + + + + + + + + + + + + + + + + + previous + + + next + + + previous + + + next + + + + + + + + + + + menu.xml + 200 + + no + + 100 + + 400 + + yes + + yes + + + + + + + +
diff --git a/.docker/microsoft-edge/policies.json b/.docker/microsoft-edge/policies.json new file mode 100644 index 0000000..d86c939 --- /dev/null +++ b/.docker/microsoft-edge/policies.json @@ -0,0 +1,38 @@ +{ + "HomepageLocation": "", + "AutoFillEnabled": false, + "AutofillAddressEnabled": false, + "AutofillCreditCardEnabled": false, + "BrowserSignin": 0, + "DefaultNotificationsSetting": 2, + "DeveloperToolsAvailability": 2, + "EditBookmarksEnabled": false, + "FullscreenAllowed": true, + "IncognitoModeAvailability": 1, + "SyncDisabled": true, + "AutoplayAllowed": true, + "BrowserAddPersonEnabled": false, + "BrowserGuestModeEnabled": false, + "DefaultPopupsSetting": 2, + "DownloadRestrictions": 3, + "VideoCaptureAllowed": true, + "AllowFileSelectionDialogs": false, + "PromptForDownloadLocation": false, + "BookmarkBarEnabled": false, + "PasswordManagerEnabled": false, + "URLBlacklist": [ + "file://*", + "edge://policy" + ], + "ExtensionInstallForcelist": [ + "cjpalhdlnbpafiamejdnhcphjbkeiagm;https://clients2.google.com/service/update2/crx", + "fjoaledfpmneenckfbpdfhkmimnjocfa;https://clients2.google.com/service/update2/crx" + ], + "ExtensionInstallWhitelist": [ + "cjpalhdlnbpafiamejdnhcphjbkeiagm", + "fjoaledfpmneenckfbpdfhkmimnjocfa" + ], + "ExtensionInstallBlacklist": [ + "*" + ] +} diff --git a/.docker/microsoft-edge/preferences.json b/.docker/microsoft-edge/preferences.json new file mode 100644 index 0000000..31cd367 --- /dev/null +++ b/.docker/microsoft-edge/preferences.json @@ -0,0 +1,110 @@ +{ + "homepage": "http://www.google.com", + "homepage_is_newtabpage": false, + "first_run_tabs": [ + "https://www.google.com/_/chrome/newtab?ie=UTF-8" + ], + "custom_links": { + "initialized": true, + "list": [ + { + "title": "YouTube", + "url": "https://www.youtube.com/" + }, + { + "title": "Netflix", + "url": "https://netflix.com" + }, + { + "title": "Hulu", + "url": "https://www.hulu.com/" + }, + { + "title": "9Anime", + "url": "https://9anime.to/" + }, + { + "title": "Crunchy Roll", + "url": "https://www.crunchyroll.com/" + }, + { + "title": "Funimation", + "url": "https://www.funimation.com/" + }, + { + "title": "Disney+", + "url": "https://www.disneyplus.com/" + }, + { + "title": "HBO Now", + "url": "https://play.hbonow.com/" + }, + { + "title": "Amazon Video", + "url": "https://www.amazon.com/Amazon-Video/b?node=2858778011" + }, + { + "title": "VRV", + "url": "https://vrv.co/" + }, + { + "title": "Twitch", + "url": "https://www.twitch.tv/" + }, + { + "title": "Mixer", + "url": "https://mixer.com/" + } + ] + }, + "browser": { + "custom_chrome_frame": false, + "show_home_button": true, + "window_placement": { + "maximized": true + } + }, + "bookmark_bar": { + "show_on_all_tabs": false + }, + "sync_promo": { + "show_on_first_run_allowed": false + }, + "distribution": { + "import_bookmarks_from_file": "bookmarks.html", + "import_bookmarks": true, + "import_history": true, + "import_home_page": true, + "import_search_engine": true, + "ping_delay": 60, + "do_not_create_desktop_shortcut": true, + "do_not_create_quick_launch_shortcut": true, + "do_not_create_taskbar_shortcut": true, + "do_not_launch_chrome": true, + "do_not_register_for_update_launch": true, + "make_chrome_default": true, + "make_chrome_default_for_user": true, + "system_level": false, + "verbose_logging": false + }, + "profile": { + "avatar_index": 19, + "default_content_setting_values": { + "clipboard": 2, + "cookies": 4, + "geolocation": 2, + "media_stream_camera": 2, + "media_stream_mic": 2, + "midi_sysex": 2, + "payment_handler": 2, + "usb_guard": 2 + }, + "name": "neko", + "using_default_avatar": false, + "using_default_name": false, + "using_gaia_avatar": false + }, + "signin": { + "allowed": false + } +} diff --git a/.docker/microsoft-edge/supervisord.conf b/.docker/microsoft-edge/supervisord.conf new file mode 100644 index 0000000..33226b4 --- /dev/null +++ b/.docker/microsoft-edge/supervisord.conf @@ -0,0 +1,22 @@ +[program:microsoft-edge] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/bin/microsoft-edge --window-position=0,0 --display=%(ENV_DISPLAY)s --user-data-dir=/home/neko/.config/microsoft-edge --no-first-run --start-maximized --bwsi --force-dark-mode --disable-file-system --disable-gpu --disable-software-rasterizer --disable-dev-shm-usage +stopsignal=INT +autorestart=true +priority=800 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/microsoft-edge.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true + +[program:openbox] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/bin/openbox --config-file /etc/neko/openbox.xml +autorestart=true +priority=300 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/openbox.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f5ac539..8999874 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,7 @@ jobs: needs: [ build-base ] strategy: matrix: - tags: [ firefox, chromium, google-chrome, ungoogled-chromium, brave, tor-browser, vncviewer, vlc, xfce ] + tags: [ firefox, chromium, google-chrome, ungoogled-chromium, microsoft-edge, brave, tor-browser, vncviewer, vlc, xfce ] env: DOCKER_TAG: ${{ matrix.tags }} steps: diff --git a/docs/changelog.md b/docs/changelog.md index a3e65c3..e851e3f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,9 @@ ## master branch +### New Features +- Added `m1k1o/neko:microsoft-edge` tag. + ### Misc - Automatic WebRTC SDP negotiation using onnegotiationneeded handlers. This allows adding/removing track on demand in a session. - Added UDP and TCP mux for WebRTC connection. It should handle multiple peers. diff --git a/docs/getting-started/README.md b/docs/getting-started/README.md index 4b8659b..fbe01d6 100644 --- a/docs/getting-started/README.md +++ b/docs/getting-started/README.md @@ -5,6 +5,7 @@ Use the following docker images: - `m1k1o/neko:chromium` - for Chromium (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)). - `m1k1o/neko:google-chrome` - for Google Chrome (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)). - `m1k1o/neko:ungoogled-chromium` - for [Ungoogled Chromium](https://github.com/Eloston/ungoogled-chromium) (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)) (by @whalehub). +- `m1k1o/neko:microsoft-edge` - for Microsoft Edge (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)). - `m1k1o/neko:brave` - for [Brave Browser](https://brave.com) (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)). - `m1k1o/neko:tor-browser` - for Tor Browser. - `m1k1o/neko:vncviewer` - for simple VNC viewer (specify `NEKO_VNC_URL` to your VNC target).