GKSHOP
GKSPHONE V2Configuration

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

GoalHow
Remove completelyDelete 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 GKSPHONEAutomatic — 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

PropertyDescription
idUnique app ID (used in dock, install, routes)
nameDefault display name
labelLangsLocalized names
descriptionApp Store description
iconIcon path
colorApp icon gradient
routeApp route path
isDefaulttrue = pre-installed on first setup
isRemovabletrue = shows in App Store, can uninstall
requiresPhonetrue = requires GKSPHONE running
requiredJobJob array — MDT apps, police/EMS only
versionShown 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.

On this page