Apps
Configure tablet apps in gks-tablet/config/config.json.
Renaming apps
Use labelLangs for per-language names:
"labelLangs": {
"en": "Police MDT",
"tr": "Polis MDT"
}Fallback: name field if a locale is missing.
Removing / hiding apps
| Goal | How |
|---|---|
| Remove completely | Delete the app object from the apps array |
| Don't pre-install on setup | "isDefault": false |
| Hide from App Store, and prevent uninstall | "isRemovable": false — the two are the same flag |
| Hide without GKSPHONE | Automatic — apps with "requiresPhone": true are hidden when phone is off |
| Job-only apps | "requiredJob": ["police", "lspd"] — only visible for matching jobs |
App Store rule: Only apps with isRemovable: true appear in the App Store.
Default dock (bottom bar)
Set up to 4 apps in the dock:
"dock": {
"maxApps": 4,
"defaultApps": ["camera", "settings", "appstore", "gallery"]
}Use app id values, not display names.
Change icons
Replace the PNG in gks-tablet/html/dist/img/icons/, keeping the filename — or point icon at a new file:
"icon": "/img/icons/settings.png"html/dist/ is the built interface the server actually serves. html/public/ is the Vite source folder and is only used when the UI is rebuilt — editing it alone changes nothing in game.
Key properties
| Property | Description |
|---|---|
id | Unique app ID (used in dock, install, routes) |
name | Default display name |
labelLangs | Localized names |
description | App Store description |
icon | Icon path |
color | App icon gradient |
route | App route path |
isDefault | true = pre-installed on first setup |
isRemovable | true = shows in App Store, can uninstall |
requiresPhone | true = requires GKSPHONE running |
requiredJob | Job array — MDT apps, police/EMS only |
version | Shown in the App Store listing |
Example
{
"id": "gps",
"name": "GPS",
"labelLangs": { "en": "GPS", "tr": "GPS" },
"description": "Navigate and find locations",
"icon": "/img/icons/gps.png",
"color": "linear-gradient(135deg, #11998e 0%, #38ef7d 100%)",
"route": "/gps",
"isDefault": false,
"isRemovable": true
}Hide GPS from new players: set "isDefault": false and don't install it. Remove from server entirely: delete this block from apps.
MDT job lists
Police/EMS job names must match config/config.lua:
Config.Jobs = {
Police = { 'police', 'lspd', 'bcso', ... },
Ambulance = { 'ambulance', 'ems', 'hospital', ... }
}requiredJob in config.json should use lowercase job names from these lists.

