-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathsnapcraft.yaml
More file actions
94 lines (83 loc) · 2.95 KB
/
snapcraft.yaml
File metadata and controls
94 lines (83 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
name: bossterm
base: core22
version: '1.0.0'
summary: Modern terminal emulator built with Kotlin/Compose Desktop
description: |
BossTerm is a feature-rich terminal emulator with:
- Multiple tabs with Ctrl+T/W/Tab shortcuts
- Search with Ctrl+F (case-sensitive, regex support)
- Hyperlink detection (URLs, file paths, emails)
- Full emoji and Unicode support (including skin tones, ZWJ sequences)
- Copy-on-select and middle-click paste
- IME support for CJK input
- Command completion notifications
- Mouse reporting for vim, tmux, htop, etc.
grade: stable
confinement: classic
apps:
bossterm:
command: bin/bossterm
desktop: usr/share/applications/bossterm.desktop
environment:
JAVA_HOME: $SNAP/usr/lib/jvm/java-17-openjdk-$CRAFT_ARCH_BUILD_FOR
PATH: $JAVA_HOME/bin:$PATH
parts:
bossterm:
plugin: nil
source: .
build-snaps:
- gradle
build-packages:
- openjdk-17-jdk
- wget
stage-packages:
- openjdk-17-jre
- libxrender1
- libxtst6
- libxi6
- libxrandr2
- libfreetype6
- libfontconfig1
- libgl1
- libx11-6
override-build: |
# Build the uber JAR using Gradle (from build-snap, no network download)
gradle :bossterm-app:packageUberJarForCurrentOS --no-daemon
# Find and copy the JAR (path varies based on build location)
mkdir -p $CRAFT_PART_INSTALL/lib
JAR_FILE=$(find . -name "BossTerm*.jar" -path "*compose/jars*" -type f 2>/dev/null | head -1)
if [ -z "$JAR_FILE" ]; then
JAR_FILE=$(find . -name "*.jar" -path "*compose/jars*" -type f 2>/dev/null | head -1)
fi
cp "$JAR_FILE" $CRAFT_PART_INSTALL/lib/bossterm.jar
# Create launcher script
mkdir -p $CRAFT_PART_INSTALL/bin
cat > $CRAFT_PART_INSTALL/bin/bossterm << 'LAUNCHER'
#!/bin/bash
SNAP_DIR="$(dirname "$(dirname "$(readlink -f "$0")")")"
# Find Java
if [ -d "$SNAP_DIR/usr/lib/jvm" ]; then
JAVA_HOME="$(find "$SNAP_DIR/usr/lib/jvm" -maxdepth 1 -type d -name "java-17-openjdk-*" | head -1)"
fi
if [ -z "$JAVA_HOME" ] || [ ! -x "$JAVA_HOME/bin/java" ]; then
echo "Error: Java not found in snap"
exit 1
fi
JAR_FILE="$SNAP_DIR/lib/bossterm.jar"
exec "$JAVA_HOME/bin/java" \
-Xmx2G \
--add-opens java.desktop/sun.awt=ALL-UNNAMED \
--add-opens java.desktop/sun.awt.X11=ALL-UNNAMED \
--add-opens java.desktop/java.awt=ALL-UNNAMED \
--add-opens java.desktop/java.awt.peer=ALL-UNNAMED \
-jar "$JAR_FILE" "$@"
LAUNCHER
chmod +x $CRAFT_PART_INSTALL/bin/bossterm
# Copy desktop entry and icon
mkdir -p $CRAFT_PART_INSTALL/usr/share/applications
mkdir -p $CRAFT_PART_INSTALL/meta/gui
cp snap/gui/bossterm.desktop $CRAFT_PART_INSTALL/usr/share/applications/
cp snap/gui/bossterm.png $CRAFT_PART_INSTALL/meta/gui/icon.png
layout:
/usr/share/fonts:
bind: $SNAP/usr/share/fonts