Skip to content

Commit

Permalink
Experiment with JetBrains Projector
Browse files Browse the repository at this point in the history
  • Loading branch information
rednoah committed Jun 18, 2024
1 parent c4f4892 commit 7f2d40e
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 52 deletions.
19 changes: 8 additions & 11 deletions Dockerfile.projector
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
FROM rednoah/filebot
FROM rednoah/filebot:beta

LABEL maintainer="Reinhard Pointner <[email protected]>"


RUN set -eux \
&& curl -fsSL -o projector-server.zip https://github.com/JetBrains/projector-server/releases/download/v1.8.1/projector-server-v1.8.1.zip \
&& unzip projector-server.zip -d /opt \
&& mv -v /opt/projector-server-1.8.1 /opt/projector-server \
&& rm -rvf projector-server.zip

RUN set -eux \
&& ( [ $(uname -m) = 'aarch64' ] && curl -fsSL -o jbr.tar.gz https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-17.0.11-linux-aarch64-b1207.24.tar.gz ) || ( [ $(uname -m) = 'x86_64' ] && curl -fsSL -o jbr.tar.gz https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-17.0.11-linux-x64-b1207.24.tar.gz ) \
&& mkdir -p /opt/jbr \
&& tar -xvzf jbr.tar.gz --strip-components 1 -C /opt/jbr \
&& rm -rv jbr.tar.gz
## ** install projector
&& curl -fsSL -o /tmp/projector-server.zip https://github.com/JetBrains/projector-server/releases/download/v1.8.1/projector-server-v1.8.1.zip \
&& unzip /tmp/projector-server.zip -d /opt \
&& mv -v /opt/projector-server-* /opt/projector-server \
&& rm -rvf /opt/projector-server/lib/slf4j-* /opt/projector-server/bin /tmp/projector-server.zip \
## ** apply custom application configuration
&& sed -i 's|-jar "$FILEBOT_HOME/jar/filebot.jar"|-classpath "/opt/projector-server/lib/*:/usr/share/filebot/jar/*" -Djdk.attach.allowAttachSelf=true -Dorg.jetbrains.projector.server.enable=true -Dorg.jetbrains.projector.server.classToLaunch=net.filebot.Main org.jetbrains.projector.server.ProjectorLauncher|g; s|-XX:+DisableAttachMechanism|-Dnet.filebot.glass.effect=none -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN --add-opens=java.desktop/sun.font=ALL-UNNAMED --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/sun.java2d=ALL-UNNAMED --add-opens=java.desktop/java.awt.peer=ALL-UNNAMED --add-opens=java.desktop/sun.awt.image=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.image=ALL-UNNAMED|g' /usr/bin/filebot


# install custom launcher scripts
Expand Down
2 changes: 1 addition & 1 deletion makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ filebot-xpra:

filebot-projector:
docker build --rm -t filebot-projector -f Dockerfile.projector .
docker run -it -v data:/data -p 8887:8887 filebot-projector --mode Episodes
docker run -it -v data:/data -p 8887:8887 filebot-projector

filebot-alpine:
docker build --rm -t filebot-alpine -f Dockerfile.alpine .
Expand Down
41 changes: 1 addition & 40 deletions projector/opt/filebot-projector/start
Original file line number Diff line number Diff line change
@@ -1,41 +1,2 @@
#!/bin/sh
FILEBOT_HOME="/usr/share/filebot"


# sanity check
if [ -z "$HOME" ]; then
echo '$HOME must be set'
exit 1
fi

if [ "$EUID" = "0" ]; then
echo "$0 must NOT run as root"
fi


# select application data folder
APP_DATA="$HOME"

# select libjnidispatch.system.so from $(uname -m)-linux-gnu folder
LIBRARY_PATH=$(echo /usr/lib/*-linux-gnu*/jni | tr ' ' ':')


# use JetBrains JRE 17
JAVA_HOME="/opt/jbr"


"$JAVA_HOME/bin/java" -Duser.home="$HOME" -Dapplication.deployment=docker --add-modules ALL-MODULE-PATH -Djna.boot.library.name=jnidispatch.system -Dnet.filebot.archive.extractor=ShellExecutables --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.function=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.nio.file.attribute=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.time.chrono=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/sun.nio.fs=ALL-UNNAMED --add-opens=java.logging/java.util.logging=ALL-UNNAMED --add-opens=java.desktop/sun.awt=ALL-UNNAMED --add-opens=java.desktop/sun.swing=ALL-UNNAMED --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED -Djna.boot.library.path="$LIBRARY_PATH" -Djna.library.path="$LIBRARY_PATH" -Djava.library.path="$LIBRARY_PATH" -Dapplication.dir="$APP_DATA" -Dapplication.cache="$APP_DATA/cache" -Djava.io.tmpdir="$APP_DATA/tmp" -Dfile.encoding="UTF-8" -Dsun.jnu.encoding="UTF-8" -Dawt.useSystemAAFontSettings=on -Dprism.order=sw -DuseGVFS=true -Dnet.filebot.gio.GVFS="$XDG_RUNTIME_DIR/gvfs" $JVM_OPTS $JAVA_OPTS $FILEBOT_OPTS \
-classpath "/opt/projector-server/lib/*:/usr/share/filebot/jar/*" \
--add-opens=java.desktop/sun.font=ALL-UNNAMED \
--add-opens=java.desktop/java.awt=ALL-UNNAMED \
--add-opens=java.desktop/sun.java2d=ALL-UNNAMED \
--add-opens=java.desktop/java.awt.peer=ALL-UNNAMED \
--add-opens=java.desktop/sun.awt.image=ALL-UNNAMED \
--add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED \
--add-opens=java.desktop/java.awt.image=ALL-UNNAMED \
-Djdk.attach.allowAttachSelf \
-Dorg.jetbrains.projector.server.enable=true \
-Dorg.jetbrains.projector.server.classToLaunch=net.filebot.Main \
-Dnet.filebot.UserFiles.fileChooser=Swing \
org.jetbrains.projector.server.ProjectorLauncher \
"$@"
filebot "$@" | egrep -v 'IdeState|isIdeAttached|ProjectorBatchTransformer|InjectorAgent|IDE'

0 comments on commit 7f2d40e

Please sign in to comment.