Skip to content

Commit 198c2db

Browse files
author
CIS Guru
committed
v1.0.0-documentation and build
1 parent 8319aac commit 198c2db

4 files changed

Lines changed: 304 additions & 1 deletion

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[Desktop Entry]
2+
Name=Aquiis Property Management
3+
Comment=Multi-tenant property management system for small landlords
4+
Exec=AquiisPropertyManagement.AppImage
5+
Icon=aquiis
6+
Type=Application
7+
Categories=Office;Finance;
8+
Terminal=false
9+
StartupWMClass=Aquiis Property Management
10+
X-AppImage-Version=1.0.0
11+
X-AppImage-Name=Aquiis Property Management
12+
X-AppImage-Arch=x86_64
13+
Keywords=property;management;landlord;rental;lease;tenant;invoice;
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
#!/bin/bash
2+
#
3+
# Aquiis Startup Performance Diagnostic Tool
4+
# Profiles AppImage startup to identify bottlenecks
5+
#
6+
7+
RED='\033[0;31m'
8+
GREEN='\033[0;32m'
9+
YELLOW='\033[1;33m'
10+
BLUE='\033[0;34m'
11+
NC='\033[0m'
12+
13+
APPIMAGE="${1:-$HOME/Applications/AquiisPropertyManagement-1.0.0.AppImage}"
14+
15+
if [ ! -f "$APPIMAGE" ]; then
16+
echo -e "${RED}Error: AppImage not found at: $APPIMAGE${NC}"
17+
echo "Usage: $0 [path-to-appimage]"
18+
exit 1
19+
fi
20+
21+
echo -e "${BLUE}Aquiis Startup Performance Diagnostic${NC}"
22+
echo "=========================================="
23+
echo ""
24+
echo "AppImage: $(basename "$APPIMAGE")"
25+
echo "Size: $(du -h "$APPIMAGE" | cut -f1)"
26+
echo ""
27+
28+
# Test 1: AppImage Mount Time
29+
echo -e "${YELLOW}Test 1: AppImage FUSE Mount Time${NC}"
30+
START=$(date +%s.%N)
31+
"$APPIMAGE" --appimage-help > /dev/null 2>&1
32+
END=$(date +%s.%N)
33+
MOUNT_TIME=$(echo "$END - $START" | bc)
34+
echo " Mount time: ${MOUNT_TIME}s"
35+
echo ""
36+
37+
# Test 2: .NET Runtime Initialization
38+
echo -e "${YELLOW}Test 2: .NET Runtime Startup${NC}"
39+
echo " Starting AppImage with timestamps..."
40+
START=$(date +%s.%N)
41+
42+
# Launch AppImage and capture its PID
43+
"$APPIMAGE" > /tmp/aquiis-startup.log 2>&1 &
44+
APPIMAGE_PID=$!
45+
46+
# Monitor for process start
47+
DOTNET_PID=""
48+
ELAPSED=0
49+
while [ -z "$DOTNET_PID" ] && [ $ELAPSED -lt 60 ]; do
50+
sleep 0.5
51+
DOTNET_PID=$(pgrep -P $APPIMAGE_PID | head -1)
52+
ELAPSED=$((ELAPSED + 1))
53+
done
54+
55+
if [ -n "$DOTNET_PID" ]; then
56+
DOTNET_START=$(date +%s.%N)
57+
DOTNET_LAUNCH=$(echo "$DOTNET_START - $START" | bc)
58+
echo " .NET process spawned: ${DOTNET_LAUNCH}s"
59+
60+
# Wait for Kestrel to start (check for port 8888)
61+
KESTREL_READY=0
62+
KESTREL_ELAPSED=0
63+
while [ $KESTREL_READY -eq 0 ] && [ $KESTREL_ELAPSED -lt 120 ]; do
64+
if netstat -tunl 2>/dev/null | grep -q ":8888 " || ss -tunl 2>/dev/null | grep -q ":8888 "; then
65+
KESTREL_READY=1
66+
KESTREL_END=$(date +%s.%N)
67+
KESTREL_TIME=$(echo "$KESTREL_END - $DOTNET_START" | bc)
68+
echo " Kestrel listening on port 8888: ${KESTREL_TIME}s"
69+
fi
70+
sleep 0.5
71+
KESTREL_ELAPSED=$((KESTREL_ELAPSED + 1))
72+
done
73+
74+
if [ $KESTREL_READY -eq 0 ]; then
75+
echo " ${RED}Warning: Kestrel did not start within 60s${NC}"
76+
fi
77+
78+
# Wait for Electron window
79+
ELECTRON_PID=""
80+
ELECTRON_ELAPSED=0
81+
while [ -z "$ELECTRON_PID" ] && [ $ELECTRON_ELAPSED -lt 120 ]; do
82+
ELECTRON_PID=$(pgrep -f "electron.*aquiis" | head -1)
83+
if [ -z "$ELECTRON_PID" ]; then
84+
sleep 0.5
85+
ELECTRON_ELAPSED=$((ELECTRON_ELAPSED + 1))
86+
fi
87+
done
88+
89+
if [ -n "$ELECTRON_PID" ]; then
90+
ELECTRON_END=$(date +%s.%N)
91+
ELECTRON_TIME=$(echo "$ELECTRON_END - $START" | bc)
92+
echo " Electron window opened: ${ELECTRON_TIME}s"
93+
fi
94+
95+
# Total startup time
96+
TOTAL_END=$(date +%s.%N)
97+
TOTAL_TIME=$(echo "$TOTAL_END - $START" | bc)
98+
99+
echo ""
100+
echo -e "${GREEN}Startup Timeline:${NC}"
101+
echo " 1. AppImage mount: ${MOUNT_TIME}s"
102+
echo " 2. .NET launch: ${DOTNET_LAUNCH}s"
103+
echo " 3. Kestrel ready: ${KESTREL_TIME}s (at ${KESTREL_END}s total)"
104+
echo " 4. Window open: ${ELECTRON_TIME}s"
105+
echo ""
106+
echo -e "${BLUE}Total startup: ${TOTAL_TIME}s${NC}"
107+
108+
# Kill the test instance
109+
echo ""
110+
echo -e "${YELLOW}Stopping test instance...${NC}"
111+
kill $APPIMAGE_PID 2>/dev/null
112+
sleep 2
113+
pkill -9 -f "Aquiis" 2>/dev/null
114+
else
115+
echo " ${RED}Error: .NET process did not start${NC}"
116+
kill $APPIMAGE_PID 2>/dev/null
117+
fi
118+
119+
echo ""
120+
echo -e "${YELLOW}Test 3: System Information${NC}"
121+
echo " CPU: $(grep "model name" /proc/cpuinfo | head -1 | cut -d: -f2 | xargs)"
122+
echo " RAM: $(free -h | awk '/^Mem:/ {print $2}')"
123+
echo " Disk (AppImage): $(df -h "$APPIMAGE" | tail -1 | awk '{print $1 " (" $4 " free)"}')"
124+
echo " Disk (Config): $(df -h ~/.config/Aquiis 2>/dev/null | tail -1 | awk '{print $1 " (" $4 " free)")' || echo "Not initialized"}"
125+
126+
echo ""
127+
echo -e "${YELLOW}Test 4: Database Check${NC}"
128+
if [ -f ~/.config/Aquiis/Data/app_v1.0.0.db ]; then
129+
DB_SIZE=$(du -h ~/.config/Aquiis/Data/app_v1.0.0.db | cut -f1)
130+
echo " Database size: $DB_SIZE"
131+
echo " Database location: ~/.config/Aquiis/Data/app_v1.0.0.db"
132+
else
133+
echo " Database: Not initialized (first run will be slower)"
134+
fi
135+
136+
echo ""
137+
echo -e "${YELLOW}Test 5: AppImage Properties${NC}"
138+
"$APPIMAGE" --appimage-version 2>/dev/null || echo " AppImage runtime: Type 2"
139+
echo " Compression: $(file "$APPIMAGE" | grep -o "gzip\|xz\|zstd" || echo "unknown")"
140+
141+
echo ""
142+
echo -e "${GREEN}Diagnostic complete!${NC}"
143+
echo ""
144+
echo "If startup is still slow (>20s), check:"
145+
echo " 1. Antivirus/security software scanning AppImage"
146+
echo " 2. Slow disk (HDD vs SSD)"
147+
echo " 3. Check /tmp/aquiis-startup.log for .NET errors"
148+
echo " 4. Try: export ELECTRON_NO_ASAR=1 (before running)"
149+
echo ""
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
#!/bin/bash
2+
#
3+
# Aquiis Desktop Integration Installer
4+
# Automatically creates desktop entry for Aquiis Property Management AppImage
5+
#
6+
# Usage: ./install-desktop-integration.sh /path/to/AquiisPropertyManagement.AppImage
7+
#
8+
9+
set -e
10+
11+
# Colors for output
12+
RED='\033[0;31m'
13+
GREEN='\033[0;32m'
14+
YELLOW='\033[1;33m'
15+
NC='\033[0m' # No Color
16+
17+
# Check if AppImage path provided
18+
if [ $# -eq 0 ]; then
19+
echo -e "${RED}Error: No AppImage path provided${NC}"
20+
echo "Usage: $0 /path/to/AquiisPropertyManagement.AppImage"
21+
exit 1
22+
fi
23+
24+
APPIMAGE_PATH="$1"
25+
26+
# Check if AppImage exists
27+
if [ ! -f "$APPIMAGE_PATH" ]; then
28+
echo -e "${RED}Error: AppImage not found at: $APPIMAGE_PATH${NC}"
29+
exit 1
30+
fi
31+
32+
# Get absolute path
33+
APPIMAGE_PATH="$(readlink -f "$APPIMAGE_PATH")"
34+
APPIMAGE_DIR="$(dirname "$APPIMAGE_PATH")"
35+
APPIMAGE_NAME="$(basename "$APPIMAGE_PATH")"
36+
37+
echo -e "${GREEN}Aquiis Desktop Integration Installer${NC}"
38+
echo "========================================"
39+
echo ""
40+
echo "AppImage: $APPIMAGE_NAME"
41+
echo "Location: $APPIMAGE_DIR"
42+
echo ""
43+
44+
# Create Applications directory
45+
mkdir -p ~/Applications
46+
47+
# Move AppImage to ~/Applications/ if not already there
48+
if [[ "$APPIMAGE_DIR" != "$HOME/Applications" ]]; then
49+
echo "Moving AppImage to ~/Applications/..."
50+
mv "$APPIMAGE_PATH" ~/Applications/
51+
APPIMAGE_PATH="$HOME/Applications/$APPIMAGE_NAME"
52+
APPIMAGE_DIR="$HOME/Applications"
53+
echo -e "${GREEN}✓ Moved to: $APPIMAGE_PATH${NC}"
54+
else
55+
echo "✓ AppImage already in ~/Applications/"
56+
fi
57+
58+
echo ""
59+
60+
# Create directories
61+
mkdir -p ~/.local/share/applications
62+
mkdir -p ~/.local/share/icons/hicolor/512x512/apps
63+
64+
# Check if icon exists in same directory
65+
ICON_PATH="${APPIMAGE_DIR}/aquiis-icon.png"
66+
if [ ! -f "$ICON_PATH" ]; then
67+
# Try to find icon.png in same directory
68+
ICON_PATH="${APPIMAGE_DIR}/icon.png"
69+
70+
if [ ! -f "$ICON_PATH" ]; then
71+
echo -e "${YELLOW}Warning: Icon file not found. Using generic AppImage icon.${NC}"
72+
ICON_PATH="application-x-executable"
73+
else
74+
# Copy icon to system location
75+
cp "$ICON_PATH" ~/.local/share/icons/hicolor/512x512/apps/aquiis.png
76+
ICON_PATH="aquiis"
77+
echo "✓ Copied icon to system icons directory"
78+
fi
79+
else
80+
# Copy icon to system location
81+
cp "$ICON_PATH" ~/.local/share/icons/hicolor/512x512/apps/aquiis.png
82+
ICON_PATH="aquiis"
83+
echo "✓ Copied icon to system icons directory"
84+
fi
85+
86+
# Create desktop entry
87+
cat > ~/.local/share/applications/aquiis.desktop << EOF
88+
[Desktop Entry]
89+
Name=Aquiis Property Management
90+
Comment=Multi-tenant property management system for small landlords
91+
Exec=${APPIMAGE_PATH}
92+
Icon=${ICON_PATH}
93+
Type=Application
94+
Categories=Office;Finance;
95+
Terminal=false
96+
StartupWMClass=Aquiis Property Management
97+
X-AppImage-Version=1.0.0
98+
Keywords=property;management;landlord;rental;lease;tenant;invoice;
99+
EOF
100+
101+
echo "✓ Created desktop entry"
102+
103+
# Make desktop file executable
104+
chmod +x ~/.local/share/applications/aquiis.desktop
105+
echo "✓ Made desktop entry executable"
106+
107+
# Update desktop database
108+
if command -v update-desktop-database &> /dev/null; then
109+
update-desktop-database ~/.local/share/applications/
110+
echo "✓ Updated desktop database"
111+
else
112+
echo -e "${YELLOW}Warning: update-desktop-database not found. You may need to log out and back in.${NC}"
113+
fi
114+
115+
# Update icon cache
116+
if command -v gtk-update-icon-cache &> /dev/null; then
117+
gtk-update-icon-cache ~/.local/share/icons/hicolor/ 2>/dev/null || true
118+
echo "✓ Updated icon cache"
119+
fi
120+
121+
echo ""
122+
echo -e "${GREEN}Installation complete!${NC}"
123+
echo ""
124+
echo "AppImage location: $APPIMAGE_PATH"
125+
echo "Aquiis Property Management should now appear in your application launcher."
126+
echo "You can search for 'Aquiis' or find it in Office/Finance categories."
127+
echo ""
128+
echo "To uninstall desktop integration:"
129+
echo " rm ~/.local/share/applications/aquiis.desktop"
130+
echo " rm ~/.local/share/icons/hicolor/512x512/apps/aquiis.png"
131+
echo " update-desktop-database ~/.local/share/applications/"
132+
echo ""
133+
echo "To completely remove Aquiis:"
134+
echo " rm $APPIMAGE_PATH"
135+
echo ""

4-Aquiis.SimpleStart/electron.manifest.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
"splashscreen": {
44
"imageFile": "wwwroot/assets/splash.png"
55
},
6+
"electronCLIFlags": [
7+
"--no-sandbox",
8+
"--disable-gpu-sandbox",
9+
"--enable-features=VaapiVideoDecoder",
10+
"--disable-dev-shm-usage"
11+
],
612
"name": "aquiis-property-management",
713
"description": "Desktop property management application for landlords managing up to 9 residential properties",
814
"author": "Aquiis",
@@ -14,7 +20,7 @@
1420
"productName": "AquiisPropertyManagement",
1521
"copyright": "Copyright © 2026",
1622
"buildVersion": "1.0.0",
17-
"compression": "maximum",
23+
"compression": "normal",
1824
"directories": {
1925
"output": "../../../bin/Desktop"
2026
},

0 commit comments

Comments
 (0)