mirror of
https://github.com/lone-cloud/gerbil
synced 2026-06-03 19:54:44 -07:00
better app name matching for GNOME resources on linux, better app name display in OSX, auto hide menu bar for new html windows
This commit is contained in:
parent
f117c14869
commit
a21857dfb6
4 changed files with 128 additions and 128 deletions
243
.github/workflows/aur-release.yml
vendored
243
.github/workflows/aur-release.yml
vendored
|
|
@ -176,131 +176,136 @@ jobs:
|
||||||
- name: Generate PKGBUILD
|
- name: Generate PKGBUILD
|
||||||
run: |
|
run: |
|
||||||
cat > PKGBUILD << 'EOF'
|
cat > PKGBUILD << 'EOF'
|
||||||
# Maintainer: ${{ steps.release_info.outputs.author_name }} <${{ steps.release_info.outputs.author_email }}>
|
# Maintainer: ${{ steps.release_info.outputs.author_name }} <${{ steps.release_info.outputs.author_email }}>
|
||||||
pkgname=gerbil
|
pkgname=gerbil
|
||||||
pkgver=${{ steps.release_info.outputs.version }}
|
pkgver=${{ steps.release_info.outputs.version }}
|
||||||
pkgrel=${{ inputs.pkgrel || '1' }}
|
pkgrel=${{ inputs.pkgrel || '1' }}
|
||||||
pkgdesc="Run Large Language Models locally"
|
pkgdesc="Run Large Language Models locally"
|
||||||
arch=('x86_64')
|
arch=('x86_64')
|
||||||
url="https://github.com/lone-cloud/gerbil"
|
url="https://github.com/lone-cloud/gerbil"
|
||||||
license=('AGPL-3.0-or-later')
|
license=('AGPL-3.0-or-later')
|
||||||
depends=('gtk3' 'nss')
|
depends=('gtk3' 'nss')
|
||||||
optdepends=('alsa-lib: Audio support for sound effects'
|
optdepends=('alsa-lib: Audio support for sound effects'
|
||||||
'libxss: Screen saver detection support')
|
'libxss: Screen saver detection support')
|
||||||
provides=('gerbil')
|
provides=('gerbil')
|
||||||
conflicts=('gerbil-git')
|
conflicts=('gerbil-git')
|
||||||
source=("gerbil-${pkgver}.AppImage::${{ steps.release_info.outputs.appimage_url }}"
|
source=("gerbil-${pkgver}.AppImage::${{ steps.release_info.outputs.appimage_url }}"
|
||||||
"gerbil.desktop::https://github.com/lone-cloud/gerbil/releases/download/${{ steps.release_info.outputs.tag }}/gerbil.desktop"
|
"gerbil.desktop::https://github.com/lone-cloud/gerbil/releases/download/${{ steps.release_info.outputs.tag }}/gerbil.desktop"
|
||||||
"LICENSE::https://github.com/lone-cloud/gerbil/releases/download/${{ steps.release_info.outputs.tag }}/LICENSE")
|
"LICENSE::https://github.com/lone-cloud/gerbil/releases/download/${{ steps.release_info.outputs.tag }}/LICENSE")
|
||||||
sha256sums=('${{ steps.sha_calc.outputs.sha256_appimage }}'
|
sha256sums=('${{ steps.sha_calc.outputs.sha256_appimage }}'
|
||||||
'${{ steps.sha_calc.outputs.sha256_desktop }}'
|
'${{ steps.sha_calc.outputs.sha256_desktop }}'
|
||||||
'${{ steps.sha_calc.outputs.sha256_license }}')
|
'${{ steps.sha_calc.outputs.sha256_license }}')
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
chmod +x "gerbil-${pkgver}.AppImage"
|
chmod +x "gerbil-${pkgver}.AppImage"
|
||||||
"./gerbil-${pkgver}.AppImage" --appimage-extract
|
"./gerbil-${pkgver}.AppImage" --appimage-extract
|
||||||
}
|
}
|
||||||
|
|
||||||
package() {
|
package() {
|
||||||
# Install the application
|
# Install the application
|
||||||
install -dm755 "${pkgdir}/opt/gerbil"
|
install -dm755 "${pkgdir}/opt/gerbil"
|
||||||
cp -r squashfs-root/* "${pkgdir}/opt/gerbil/"
|
cp -r squashfs-root/* "${pkgdir}/opt/gerbil/"
|
||||||
|
|
||||||
# Fix permissions on extracted files
|
|
||||||
chmod -R 755 "${pkgdir}/opt/gerbil/"
|
|
||||||
|
|
||||||
# Create executable wrapper
|
|
||||||
install -dm755 "${pkgdir}/usr/bin"
|
|
||||||
cat > "${pkgdir}/usr/bin/gerbil" << 'WRAPPER'
|
|
||||||
#!/bin/bash
|
|
||||||
exec "/opt/gerbil/Gerbil" "$@"
|
|
||||||
WRAPPER
|
|
||||||
chmod +x "${pkgdir}/usr/bin/gerbil"
|
|
||||||
|
|
||||||
# Install desktop file and license
|
|
||||||
install -dm755 "${pkgdir}/usr/share/applications"
|
|
||||||
install -dm755 "${pkgdir}/usr/share/licenses/gerbil"
|
|
||||||
cp "${srcdir}/gerbil.desktop" "${pkgdir}/usr/share/applications/"
|
|
||||||
cp "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/gerbil/"
|
|
||||||
|
|
||||||
# Install icon to hicolor theme directory and pixmaps as fallback
|
|
||||||
install -dm755 "${pkgdir}/usr/share/icons/hicolor/512x512/apps"
|
|
||||||
install -dm755 "${pkgdir}/usr/share/pixmaps"
|
|
||||||
|
|
||||||
if [ -f "${pkgdir}/opt/gerbil/usr/share/icons/hicolor/512x512/apps/Gerbil.png" ]; then
|
# Rename main binary to lowercase for consistency
|
||||||
cp "${pkgdir}/opt/gerbil/usr/share/icons/hicolor/512x512/apps/Gerbil.png" "${pkgdir}/usr/share/icons/hicolor/512x512/apps/gerbil.png"
|
if [ -f "${pkgdir}/opt/gerbil/Gerbil" ]; then
|
||||||
cp "${pkgdir}/opt/gerbil/usr/share/icons/hicolor/512x512/apps/Gerbil.png" "${pkgdir}/usr/share/pixmaps/gerbil.png"
|
mv "${pkgdir}/opt/gerbil/Gerbil" "${pkgdir}/opt/gerbil/gerbil"
|
||||||
else
|
fi
|
||||||
echo "Warning: Could not find Gerbil.png in expected locations"
|
|
||||||
find "${pkgdir}/opt/gerbil" -name "*erbil*.png" -type f | head -1 | while read icon_file; do
|
|
||||||
if [ -n "$icon_file" ]; then
|
|
||||||
echo "Found icon at: $icon_file"
|
|
||||||
cp "$icon_file" "${pkgdir}/usr/share/icons/hicolor/512x512/apps/gerbil.png"
|
|
||||||
cp "$icon_file" "${pkgdir}/usr/share/pixmaps/gerbil.png"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install shell completions
|
|
||||||
install -dm755 "${pkgdir}/usr/share/bash-completion/completions"
|
|
||||||
install -dm755 "${pkgdir}/usr/share/zsh/site-functions"
|
|
||||||
|
|
||||||
# Bash completion
|
|
||||||
cat > "${pkgdir}/usr/share/bash-completion/completions/gerbil" << 'BASH_COMP'
|
|
||||||
_gerbil() {
|
|
||||||
local cur prev opts
|
|
||||||
COMPREPLY=()
|
|
||||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
||||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
||||||
opts="--version --cli"
|
|
||||||
|
|
||||||
case "${prev}" in
|
# Fix permissions on extracted files
|
||||||
--cli)
|
chmod -R 755 "${pkgdir}/opt/gerbil/"
|
||||||
# Don't complete after --cli, let user type kobold args
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
complete -F _gerbil gerbil
|
|
||||||
BASH_COMP
|
|
||||||
|
|
||||||
# Zsh completion
|
|
||||||
cat > "${pkgdir}/usr/share/zsh/site-functions/_gerbil" << 'ZSH_COMP'
|
|
||||||
#compdef gerbil
|
|
||||||
|
|
||||||
_gerbil() {
|
# Create executable wrapper
|
||||||
local context state line
|
install -dm755 "${pkgdir}/usr/bin"
|
||||||
|
cat > "${pkgdir}/usr/bin/gerbil" << 'WRAPPER'
|
||||||
_arguments -C \
|
#!/bin/bash
|
||||||
'1: :->command' \
|
exec "/opt/gerbil/gerbil" "$@"
|
||||||
'*: :->args' && return 0
|
WRAPPER
|
||||||
|
chmod +x "${pkgdir}/usr/bin/gerbil"
|
||||||
case $state in
|
|
||||||
command)
|
|
||||||
local commands=(
|
|
||||||
'--version:Show version information'
|
|
||||||
'--cli:Run in CLI mode (pass remaining args to kobold binary)'
|
|
||||||
)
|
|
||||||
_describe 'commands' commands
|
|
||||||
;;
|
|
||||||
args)
|
|
||||||
case ${words[2]} in
|
|
||||||
--cli)
|
|
||||||
# Don't complete after --cli, let user type kobold args
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
_gerbil "$@"
|
# Install desktop file and license
|
||||||
ZSH_COMP
|
install -dm755 "${pkgdir}/usr/share/applications"
|
||||||
}
|
install -dm755 "${pkgdir}/usr/share/licenses/gerbil"
|
||||||
EOF
|
cp "${srcdir}/gerbil.desktop" "${pkgdir}/usr/share/applications/"
|
||||||
|
cp "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/gerbil/"
|
||||||
|
|
||||||
|
# Install icon to hicolor theme directory and pixmaps as fallback
|
||||||
|
install -dm755 "${pkgdir}/usr/share/icons/hicolor/512x512/apps"
|
||||||
|
install -dm755 "${pkgdir}/usr/share/pixmaps"
|
||||||
|
|
||||||
|
if [ -f "${pkgdir}/opt/gerbil/usr/share/icons/hicolor/512x512/apps/Gerbil.png" ]; then
|
||||||
|
cp "${pkgdir}/opt/gerbil/usr/share/icons/hicolor/512x512/apps/Gerbil.png" "${pkgdir}/usr/share/icons/hicolor/512x512/apps/gerbil.png"
|
||||||
|
cp "${pkgdir}/opt/gerbil/usr/share/icons/hicolor/512x512/apps/Gerbil.png" "${pkgdir}/usr/share/pixmaps/gerbil.png"
|
||||||
|
else
|
||||||
|
echo "Warning: Could not find Gerbil.png in expected locations"
|
||||||
|
find "${pkgdir}/opt/gerbil" -name "*erbil*.png" -type f | head -1 | while read icon_file; do
|
||||||
|
if [ -n "$icon_file" ]; then
|
||||||
|
echo "Found icon at: $icon_file"
|
||||||
|
cp "$icon_file" "${pkgdir}/usr/share/icons/hicolor/512x512/apps/gerbil.png"
|
||||||
|
cp "$icon_file" "${pkgdir}/usr/share/pixmaps/gerbil.png"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install shell completions
|
||||||
|
install -dm755 "${pkgdir}/usr/share/bash-completion/completions"
|
||||||
|
install -dm755 "${pkgdir}/usr/share/zsh/site-functions"
|
||||||
|
|
||||||
|
# Bash completion
|
||||||
|
cat > "${pkgdir}/usr/share/bash-completion/completions/gerbil" << 'BASH_COMP'
|
||||||
|
_gerbil() {
|
||||||
|
local cur prev opts
|
||||||
|
COMPREPLY=()
|
||||||
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||||
|
opts="--version --cli"
|
||||||
|
|
||||||
|
case "${prev}" in
|
||||||
|
--cli)
|
||||||
|
# Don't complete after --cli, let user type kobold args
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
complete -F _gerbil gerbil
|
||||||
|
BASH_COMP
|
||||||
|
|
||||||
|
# Zsh completion
|
||||||
|
cat > "${pkgdir}/usr/share/zsh/site-functions/_gerbil" << 'ZSH_COMP'
|
||||||
|
#compdef gerbil
|
||||||
|
|
||||||
|
_gerbil() {
|
||||||
|
local context state line
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
'1: :->command' \
|
||||||
|
'*: :->args' && return 0
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
command)
|
||||||
|
local commands=(
|
||||||
|
'--version:Show version information'
|
||||||
|
'--cli:Run in CLI mode (pass remaining args to kobold binary)'
|
||||||
|
)
|
||||||
|
_describe 'commands' commands
|
||||||
|
;;
|
||||||
|
args)
|
||||||
|
case ${words[2]} in
|
||||||
|
--cli)
|
||||||
|
# Don't complete after --cli, let user type kobold args
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_gerbil "$@"
|
||||||
|
ZSH_COMP
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
- name: Create .SRCINFO
|
- name: Create .SRCINFO
|
||||||
run: |
|
run: |
|
||||||
|
|
|
||||||
10
package.json
10
package.json
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "gerbil",
|
"name": "gerbil",
|
||||||
"productName": "Gerbil",
|
"productName": "Gerbil",
|
||||||
"version": "1.5.3",
|
"version": "1.5.4",
|
||||||
"description": "Run Large Language Models locally",
|
"description": "Run Large Language Models locally",
|
||||||
"main": "out/main/index.js",
|
"main": "out/main/index.js",
|
||||||
"homepage": "./",
|
"homepage": "./",
|
||||||
|
|
@ -165,14 +165,6 @@
|
||||||
"compression": "store",
|
"compression": "store",
|
||||||
"category": "Utility",
|
"category": "Utility",
|
||||||
"icon": "src/assets/icon.png",
|
"icon": "src/assets/icon.png",
|
||||||
"desktop": {
|
|
||||||
"entry": {
|
|
||||||
"Name": "Gerbil",
|
|
||||||
"Comment": "Run Large Language Models locally",
|
|
||||||
"Categories": "Utility;",
|
|
||||||
"StartupWMClass": "Gerbil"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"extraFiles": [
|
"extraFiles": [
|
||||||
{
|
{
|
||||||
"from": "assets/gerbil.desktop",
|
"from": "assets/gerbil.desktop",
|
||||||
|
|
|
||||||
|
|
@ -16,11 +16,13 @@ import { stopFrontend as stopOpenWebUI } from '@/main/modules/openwebui';
|
||||||
import { stopFrontend as stopComfyUI } from '@/main/modules/comfyui';
|
import { stopFrontend as stopComfyUI } from '@/main/modules/comfyui';
|
||||||
import { setupIPCHandlers } from '@/main/ipc';
|
import { setupIPCHandlers } from '@/main/ipc';
|
||||||
import { ensureDir } from '@/utils/node/fs';
|
import { ensureDir } from '@/utils/node/fs';
|
||||||
|
import { PRODUCT_NAME } from '@/constants';
|
||||||
|
|
||||||
export async function initializeApp() {
|
export async function initializeApp() {
|
||||||
const installDir = getInstallDir();
|
const installDir = getInstallDir();
|
||||||
|
|
||||||
await app.whenReady();
|
await app.whenReady();
|
||||||
|
app.setName(PRODUCT_NAME);
|
||||||
await initializeConfig();
|
await initializeConfig();
|
||||||
await ensureDir(installDir);
|
await ensureDir(installDir);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -142,6 +142,7 @@ export function createMainWindow() {
|
||||||
: join(__dirname, '../../assets/icon.png'),
|
: join(__dirname, '../../assets/icon.png'),
|
||||||
title: PRODUCT_NAME,
|
title: PRODUCT_NAME,
|
||||||
backgroundColor: getBackgroundColor(),
|
backgroundColor: getBackgroundColor(),
|
||||||
|
autoHideMenuBar: true,
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue