├── README.md └── config.json /README.md: -------------------------------------------------------------------------------- 1 | # HorizonXI-Linux-Installation 2 | A step by step guide to installing HorizonXI, the private FFXI server, on linux/steamdeck using Steam. **Not Windows on steamdeck.** 3 | 4 | **Please please please read each step carefully and do things in the correct order.** 5 | 6 | Recommended to use a keyboard plugged in on Steamdeck! Otherwise you will have to use STEAM+X buttons to use a virtual keyboard on screen and it's not fun. 7 | 8 | **Please read each step carefully.** If you are on Steamdeck you will need do the extra steps as stated. If you are on a normal linux distro you can ignore the steamdeck steps/comments. 9 | 10 | ----- 11 | ----- 12 | 13 | Software to be aware of; 14 | 15 | **KDE** - This guide assumes you're using the KDE desktop environment, as opposed to Gnome or other DEs. The guide will be pretty much identical on all desktop environments but for some reason KDE devs gave stupid names to some of the default applications as seen below. 16 | 17 | **Konsole** - This is a terminal (commandline) software for typing in commands, this is already installed. You'll be copy/pasting commands in here but remember that copy/pasting in konsole is ctrl+shift + c, and ctrl+shift + v, where everywhere else copy/paste is just ctrl+c and ctrl+v. if this is annoying you can use a mouse and right click in the konsole window and copy/paste that way, or even use the copy and paste buttons in the top right corner of the Konsole. 18 | 19 | **Discover** - This is just an app store, it's already installed, think of it like windows' store app. 20 | 21 | **ProtonUp-qt** - This needs to be installed, go to the discover app and search for it, install it. This software just allows you to add proton-ge to steam (a community version of proton, the compatibility software that lets you run windows software on linux, dont worry if this sounds confusing you don't need to know much about it). 22 | 23 | **Kate** - Already installed, this is the notepad of your linux desktop. 24 | 25 | **Dolphin** - This is just the folder/file explorer like on windows, it has a name for some reason and that name is dolphin. 26 | 27 | **Steam** - If you're on Steamdeck you will obviously have this, if you're on other distros it may not be installed by default and you can find it in the discover store or whatever app store your distro has. 28 | 29 | ----- 30 | ----- 31 | 32 | 1. If you're on steamdeck you will need to set a memorable sudo password (admin password) if you haven't already. If you're on a normal linux desktop distro you can probably skip this as it's likely already been done (though it doesn't hurt to do it if you're unsure). Open the konsole and type `passwd` then type in a password as prompted then press enter. Heads up; when typing in the password in the Konsole it may look like you aren't typing at all, this is a security feature of the terminal, you're still inputting the password but it just doesn't visibly show. 33 | 34 | 2. Open the Konsole, copy/paste then run this command; 35 | 36 | ``` 37 | rm -f $HOME/Downloads/HorizonXI-Launcher-1.3.1.Setup.exe; 38 | wget -P $HOME//Downloads https://github.com/HorizonFFXI/HorizonXI-Launcher-Binaries/releases/download/v1.3.1/HorizonXI-Launcher-1.3.1.Setup.exe && 39 | mkdir -p $HOME/horizon-xi; 40 | cp "$HOME/Downloads/HorizonXI-Launcher-1.3.1.Setup.exe" $HOME/horizon-xi/installer.exe && 41 | cd $HOME/horizon-xi && 42 | 7z x -y installer.exe && 43 | 7z x -y HorizonXI_Launcher-1.3.1-full.nupkg 44 | ``` 45 | 46 | 3. Open the ProtonQT-Up app you got earlier from the discover store and add version "GE-Proton-42" (this will require you to restart the steam application for it to take effect once you've added this proton version). if you didn't get the app already it's fine just grab it now; 47 | 48 | ![image](https://github.com/user-attachments/assets/8a334f84-4bf2-49cd-9035-7525123d5b31) 49 | 50 | 51 | 4. Open the steam application and, in Library, in the bottom left corner should be a button to add a non-steam game, click the button and click browse and find the launcher (this should be located in `~/horizon-xi/lib/net45/HorizonXI-Launcher.exe` where '~/' is the user's home directory. Unless it's a steamdeck install where the user will be "deck" this directory will differ on each machine.). if you can't see it, you may need to change the filter from ".desktop" at the bottom to "all application types" like in my screenshot here; 52 | 53 | ![image](https://github.com/user-attachments/assets/8c3a6b04-ca3b-46f3-827b-96186317ffd5) 54 | 55 | 5. Now that you've added the horizonxi launcher to steam, find it in your library in steam and right click>properties, then go to the compatibility tab and choose GE-proton 7-42 (same version you downloaded earlier); 56 | 57 | ![image](https://github.com/user-attachments/assets/0cdda30b-a029-4619-8ecb-2cda61bba616) 58 | 59 | 6. Hit play to launch Horizon from steam. when you have the launcher open you can signup/signin and begin downloading/installing the game! Once it's done, enjoy the game! 60 | 61 | ----- 62 | 63 | **If you're on Steamdeck, there is an extra step to make the controls work. You only need to do this once, not every time you update the launcher**; 64 | 65 | 7. In desktop mode, open the Konsole, copy/paste then run this command; 66 | 67 | ``` 68 | rm -f $HOME/Downloads/config.json; 69 | wget -P $HOME/Downloads https://raw.githubusercontent.com/MattyGWS/HorizonXI-Linux-Installation/main/config.json && 70 | config_dir=$(find $HOME/.local/share/Steam/steamapps/compatdata/ -path "*/HorizonXI-Launcher/config.json" -exec dirname {} \;) 71 | find $HOME/.local/share/Steam/steamapps/compatdata/ -path "*/HorizonXI-Launcher/config.json" -exec rm -f {} \; 72 | if [ -n "$config_dir" ]; then 73 | cp $HOME/Downloads/config.json "$config_dir" 74 | fi 75 | ``` 76 | 77 | 8. Go back into gamemode on the steamdeck, launch horizonxi launcher like any other game, hit play and you're done! (note that for me at least, on my steamdeck when i open the horizonxi launcher the mouse input from the touchpad doesn't seem to work so i have to press play by actually using the touch screen) 78 | 79 | ----- 80 | 81 | 9. Updating the launcher! 82 | 83 | Open the Konsole, copy/paste then run this command; 84 | 85 | ``` 86 | rm -f $HOME/Downloads/HorizonXI-Launcher-1.3.1.Setup.exe; 87 | wget -P $HOME//Downloads https://github.com/HorizonFFXI/HorizonXI-Launcher-Binaries/releases/download/v1.3.1/HorizonXI-Launcher-1.3.1.Setup.exe && 88 | mkdir -p $HOME/horizon-xi; 89 | cp "$HOME/Downloads/HorizonXI-Launcher-1.3.1.Setup.exe" $HOME/horizon-xi/installer.exe && 90 | cd $HOME/horizon-xi && 91 | 7z x -y installer.exe && 92 | 7z x -y HorizonXI_Launcher-1.3.1-full.nupkg 93 | ``` 94 | 95 | That's it, now you have updated the launcher. Nothing else to do! 96 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "addons": { 3 | "allmaps": { 4 | "id": "1", 5 | "name": "allmaps", 6 | "description": "Enables the ability to see every map via /map without needing the key items. Also works for viewing map waypoints.", 7 | "author": "atom0s", 8 | "enabled": true 9 | }, 10 | "aspect": { 11 | "id": "2", 12 | "name": "aspect", 13 | "description": "Simple addon to better handle the aspect ratio of the game. Allows for non-standard ratios not available via the in-game configuration.", 14 | "author": "atom0s", 15 | "enabled": true 16 | }, 17 | "cfhblock": { 18 | "id": "4", 19 | "name": "cfhblock", 20 | "description": "Blocks any and all forms of calling for help to prevent accidents. This addon blocks the call for help packet from ever being sent.", 21 | "author": "atom0s", 22 | "enabled": false 23 | }, 24 | "ChangeCall": { 25 | "id": "5", 26 | "name": "ChangeCall", 27 | "description": "Allows users to override all incoming calls with a new one instead.", 28 | "author": "atom0s", 29 | "enabled": false 30 | }, 31 | "chatmon": { 32 | "id": "7", 33 | "name": "chatmon", 34 | "description": "Plays sounds as a reaction to certain events in chat. (And some other helpful events.)", 35 | "author": "atom0s", 36 | "enabled": false 37 | }, 38 | "Checker": { 39 | "id": "8", 40 | "name": "Checker", 41 | "description": "Overrides the response displayed when checking a monster for its difficulty. Colorizes the message based on the type (easy prey, tough, etc.). Also includes displaying monsters levels (including NMs). \n For NM levels to show, you must widescan first!", 42 | "author": "atom0s & Lolwutt", 43 | "enabled": true 44 | }, 45 | "clock": { 46 | "id": "9", 47 | "name": "clock", 48 | "description": "Allows the player to display various times on screen..", 49 | "author": "atom0s", 50 | "enabled": false 51 | }, 52 | "config": { 53 | "id": "10", 54 | "name": "config", 55 | "description": "Enables slash commands to force-set game settings directly.", 56 | "author": "atom0s", 57 | "enabled": false 58 | }, 59 | "craftmon": { 60 | "id": "11", 61 | "name": "craftmon", 62 | "description": "Craftmon is an addon that is able to display the players craft result immediately after starting the synth. It will print out a colored message based on the result. (Normal Quality, High-Quality, or Break)", 63 | "author": "atom0s", 64 | "enabled": false 65 | }, 66 | "distance": { 67 | "id": "12", 68 | "name": "distance", 69 | "description": "Displays the distance between you and your target.", 70 | "author": "atom0s", 71 | "enabled": true 72 | }, 73 | "drawdistance": { 74 | "id": "13", 75 | "name": "drawdistance", 76 | "description": "Allows the player to alter the rendering distances of the game via slash commands.", 77 | "author": "atom0s", 78 | "enabled": false 79 | }, 80 | "enternity": { 81 | "id": "14", 82 | "name": "enternity", 83 | "description": "Removes the need to press enter during cutscenes and other dialog.", 84 | "author": "Hypnotoad", 85 | "enabled": false 86 | }, 87 | "equipmon": { 88 | "id": "15", 89 | "name": "equipmon", 90 | "description": "Displays the players equipment onscreen at all times.", 91 | "author": "atom0s", 92 | "enabled": false 93 | }, 94 | "filterless": { 95 | "id": "16", 96 | "name": "filterless", 97 | "description": "Removes the bad language chat filter by force. (Useful for private servers as the client settings are not properly saved.)", 98 | "author": "atom0s", 99 | "enabled": false 100 | }, 101 | "filters": { 102 | "id": "17", 103 | "name": "filters", 104 | "description": "Allows players to save and load chat filter settings with ease.", 105 | "author": "atom0s", 106 | "enabled": false 107 | }, 108 | "fps": { 109 | "id": "18", 110 | "name": "fps", 111 | "description": "Displays and manipulates the games framerate handling.", 112 | "author": "atom0s", 113 | "enabled": false 114 | }, 115 | "hideconsole": { 116 | "id": "19", 117 | "name": "hideconsole", 118 | "description": "Hides the boot loader used for private servers.", 119 | "author": "atom0s", 120 | "enabled": true 121 | }, 122 | "IME": { 123 | "id": "21", 124 | "name": "IME", 125 | "description": "IME is an addon that enables the Japanese IME toolbar on any language client. This allows you to type in Japanese regardless of what language your client is set to.", 126 | "author": "atom0s", 127 | "enabled": false 128 | }, 129 | "ImGui Style": { 130 | "id": "22", 131 | "name": "ImGui Style", 132 | "description": "Allows players to customize the overall UI system theme.", 133 | "author": "atom0s", 134 | "enabled": false 135 | }, 136 | "instantah": { 137 | "id": "23", 138 | "name": "instantah", 139 | "description": "Get the results from your auction house purchase attempts instantly. No more delay waiting to find out if you won an item or not!", 140 | "author": "atom0s", 141 | "enabled": true 142 | }, 143 | "links": { 144 | "id": "24", 145 | "name": "links", 146 | "description": "A small addon to capture and display links in a UI window that allows you to easily open them via the click of a button.", 147 | "author": "atom0s", 148 | "enabled": false 149 | }, 150 | "Logs": { 151 | "id": "25", 152 | "name": "Logs", 153 | "description": "Creates log files of all incoming text to the players game client. Log files are named per-character and date they are written to for ease of management.", 154 | "author": "atom0s", 155 | "enabled": false 156 | }, 157 | "luashitacast": { 158 | "id": "26", 159 | "name": "luashitacast", 160 | "description": "A lua-based equipment swapping system for Ashita", 161 | "author": "Thorny", 162 | "enabled": false 163 | }, 164 | "macrofix": { 165 | "id": "27", 166 | "name": "macrofix", 167 | "description": "An addon that alters how the macro bars show in game. Removes the delay and instead shows the bars immediately. (Original application and full credit goes to Sorien. Converted to an Ashita addon by atom0s.)", 168 | "author": "atom0s", 169 | "enabled": true 170 | }, 171 | "petinfo": { 172 | "id": "28", 173 | "name": "petinfo", 174 | "description": "Displays information about the players pet in a simple UI window.", 175 | "author": "atom0s", 176 | "enabled": false 177 | }, 178 | "recast": { 179 | "id": "29", 180 | "name": "recast", 181 | "description": "Displays the players ability and spell recast information.", 182 | "author": "atom0s", 183 | "enabled": false 184 | }, 185 | "sexchange": { 186 | "id": "30", 187 | "name": "sexchange", 188 | "description": "Allows players to change their race and hair style easily via packets.", 189 | "author": "atom0s", 190 | "enabled": false 191 | }, 192 | "singlerace": { 193 | "id": "31", 194 | "name": "singlerace", 195 | "description": "A simple addon to force all other players to a specific race.", 196 | "author": "atom0s", 197 | "enabled": false 198 | }, 199 | "stfu": { 200 | "id": "34", 201 | "name": "stfu", 202 | "description": "Stfu is an addon that blocks annoying system messages that can often times spam the chat log. It will also convert 's to (call) instead to remove annoying macros.", 203 | "author": "atom0s", 204 | "enabled": false 205 | }, 206 | "timers": { 207 | "id": "35", 208 | "name": "timers", 209 | "description": "Displays the duration of spells and abilities you've used", 210 | "author": "The Mystic", 211 | "enabled": false 212 | }, 213 | "timestamp": { 214 | "id": "36", 215 | "name": "timestamp", 216 | "description": "Adds a timestamp to chat messages.", 217 | "author": "atom0s", 218 | "enabled": false 219 | }, 220 | "tparty": { 221 | "id": "37", 222 | "name": "tparty", 223 | "description": "Displays party member TP amounts and target health percent.", 224 | "author": "atom0s", 225 | "enabled": true 226 | }, 227 | "HXUI": { 228 | "id": "38", 229 | "name": "HXUI", 230 | "description": "A massive UI overhaul for almost every UI element on your screen.", 231 | "author": "HXUI Team", 232 | "enabled": false 233 | }, 234 | "MobDB": { 235 | "id": "39", 236 | "name": "MobDB", 237 | "description": "Displays detailed monster information on-screen.", 238 | "author": "Thorny", 239 | "enabled": false 240 | }, 241 | "NoLock": { 242 | "id": "41", 243 | "name": "NoLock", 244 | "description": "Allows you to engage/disengage without animation lock from effects such as spells being cast on you or mob TP moves.", 245 | "author": "WinterSolstice8", 246 | "enabled": true 247 | }, 248 | "TargetLines": { 249 | "id": "40", 250 | "name": "TargetLines", 251 | "description": "FFXII style combat lines for FFXI.", 252 | "author": "Jyouya", 253 | "enabled": false 254 | } 255 | }, 256 | "plugins": { 257 | "HardwareMouse": { 258 | "id": "1", 259 | "name": "HardwareMouse", 260 | "description": "Force-enables a hardware mouse cursor for the game client. (Useful for those using proxies such as dgVoodoo 2 that mess up the cursor.)", 261 | "author": "atom0s", 262 | "enabled": true 263 | }, 264 | "LegacyAC": { 265 | "id": "2", 266 | "name": "LegacyAC", 267 | "description": "Older version of Ashitacast ported from Av3 using XML", 268 | "author": "Thorny", 269 | "enabled": false 270 | }, 271 | "Minimap": { 272 | "id": "3", 273 | "name": "Minimap", 274 | "description": "Displays a minimap of the current area on-screen. Includes various configurations to customize the minimap and its features.", 275 | "author": "atom0s", 276 | "enabled": false 277 | }, 278 | "Nameplate": { 279 | "id": "4", 280 | "name": "Nameplate", 281 | "description": "Corrects rendering issues in the nameplate.", 282 | "author": "Velyn", 283 | "enabled": true 284 | }, 285 | "PacketFlow": { 286 | "id": "5", 287 | "name": "PacketFlow", 288 | "description": "Sends update requests the to server at a higher rate.", 289 | "author": "Thorny", 290 | "enabled": true 291 | }, 292 | "Shorthand": { 293 | "id": "6", 294 | "name": "Shorthand", 295 | "description": "A plugin to allow more flexible typed commands.", 296 | "author": "ThornyFFXI", 297 | "enabled": false 298 | }, 299 | "Toon": { 300 | "id": "7", 301 | "name": "Toon", 302 | "description": "Adds toon shading to the game.", 303 | "author": "atom0s", 304 | "enabled": false 305 | } 306 | }, 307 | "registrySettings": { 308 | "0000": { 309 | "name": "Mip Mapping", 310 | "key": "0000", 311 | "value": 2 312 | }, 313 | "0001": { 314 | "name": "Window Width", 315 | "key": "0001", 316 | "value": 1280 317 | }, 318 | "0002": { 319 | "name": "Window Height", 320 | "key": "0002", 321 | "value": 800 322 | }, 323 | "0003": { 324 | "name": "Background Width", 325 | "key": "0003", 326 | "value": 1280 327 | }, 328 | "0004": { 329 | "name": "Background Height", 330 | "key": "0004", 331 | "value": 800 332 | }, 333 | "0005": { 334 | "name": "Unknown/Unused", 335 | "key": "0005", 336 | "value": -1 337 | }, 338 | "0006": { 339 | "name": "Unknown/Unused", 340 | "key": "0006", 341 | "value": -1 342 | }, 343 | "0007": { 344 | "name": "Sound Enabled", 345 | "key": "0007", 346 | "value": 1 347 | }, 348 | "0008": { 349 | "name": "Unknown/Unused", 350 | "key": "0008", 351 | "value": -1 352 | }, 353 | "0009": { 354 | "name": "Unknown/Unused", 355 | "key": "0009", 356 | "value": -1 357 | }, 358 | "0010": { 359 | "name": "Unknown/Unused", 360 | "key": "0010", 361 | "value": -1 362 | }, 363 | "0011": { 364 | "name": "Environment Animations", 365 | "key": "0011", 366 | "value": 2 367 | }, 368 | "0012": { 369 | "name": "Unknown/Unused", 370 | "key": "0012", 371 | "value": -1 372 | }, 373 | "0013": { 374 | "name": "Unknown/Unused", 375 | "key": "0013", 376 | "value": -1 377 | }, 378 | "0014": { 379 | "name": "Unknown/Unused", 380 | "key": "0014", 381 | "value": -1 382 | }, 383 | "0015": { 384 | "name": "Unknown/Unused", 385 | "key": "0015", 386 | "value": -1 387 | }, 388 | "0016": { 389 | "name": "Unknown/Unused", 390 | "key": "0016", 391 | "value": -1 392 | }, 393 | "0017": { 394 | "name": "Bump Mapping", 395 | "key": "0017", 396 | "value": 0 397 | }, 398 | "0018": { 399 | "name": "Texture Compression", 400 | "key": "0018", 401 | "value": 0 402 | }, 403 | "0019": { 404 | "name": "Map Compression", 405 | "key": "0019", 406 | "value": 1 407 | }, 408 | "0020": { 409 | "name": "Unknown/Unused", 410 | "key": "0020", 411 | "value": 1 412 | }, 413 | "0021": { 414 | "name": "Hardware Mouse", 415 | "key": "0021", 416 | "value": 1 417 | }, 418 | "0022": { 419 | "name": "Show Opening Movie", 420 | "key": "0022", 421 | "value": 0 422 | }, 423 | "0023": { 424 | "name": "Simplified Character Creation Visuals", 425 | "key": "0023", 426 | "value": 0 427 | }, 428 | "0024": { 429 | "name": "Unknown/Unused", 430 | "key": "0024", 431 | "value": 0 432 | }, 433 | "0025": { 434 | "name": "Unknown/Unused", 435 | "key": "0025", 436 | "value": -1 437 | }, 438 | "0026": { 439 | "name": "Unknown/Unused", 440 | "key": "0026", 441 | "value": -1 442 | }, 443 | "0027": { 444 | "name": "Unknown/Unused", 445 | "key": "0027", 446 | "value": -1 447 | }, 448 | "0028": { 449 | "name": "Gamma Base", 450 | "key": "0028", 451 | "value": 0 452 | }, 453 | "0029": { 454 | "name": "Maximum Number Of Sounds", 455 | "key": "0029", 456 | "value": 12 457 | }, 458 | "0030": { 459 | "name": "Enable 3D LCD Mode", 460 | "key": "0030", 461 | "value": 0 462 | }, 463 | "0031": { 464 | "name": "Unknown/Unused", 465 | "key": "0031", 466 | "value": 1002740646 467 | }, 468 | "0032": { 469 | "name": "Unknown/Unused", 470 | "key": "0032", 471 | "value": 0 472 | }, 473 | "0033": { 474 | "name": "Unknown/Unused", 475 | "key": "0033", 476 | "value": 0 477 | }, 478 | "0034": { 479 | "name": "Window Mode", 480 | "key": "0034", 481 | "value": 2 482 | }, 483 | "0035": { 484 | "name": "Sound Always On (Play In Background)", 485 | "key": "0035", 486 | "value": 1 487 | }, 488 | "0036": { 489 | "name": "Font Compression", 490 | "key": "0036", 491 | "value": 1 492 | }, 493 | "0037": { 494 | "name": "Menu Width", 495 | "key": "0037", 496 | "value": 1280 497 | }, 498 | "0038": { 499 | "name": "Menu Height", 500 | "key": "0038", 501 | "value": 800 502 | }, 503 | "0039": { 504 | "name": "IME Mode", 505 | "key": "0039", 506 | "value": 1 507 | }, 508 | "0040": { 509 | "name": "Graphics Stabilization", 510 | "key": "0040", 511 | "value": 0 512 | }, 513 | "0041": { 514 | "name": "Enable Beta UI", 515 | "key": "0041", 516 | "value": 0 517 | }, 518 | "0042": { 519 | "name": "Default Game Screenshot Path", 520 | "key": "0042", 521 | "value": "C:\\Program Files (x86)\\SquareEnix\\FINAL FANTASY XI" 522 | }, 523 | "0043": { 524 | "name": "Take Screenshot In Screen Resolution", 525 | "key": "0043", 526 | "value": 0 527 | }, 528 | "0044": { 529 | "name": "Maintain Window Aspect Ratio", 530 | "key": "0044", 531 | "value": 1 532 | }, 533 | "0045": { 534 | "name": "Unknown/Unused", 535 | "key": "0045", 536 | "value": 0 537 | }, 538 | "padmode000": { 539 | "name": "Gamepad Settings Controls", 540 | "key": "padmode000", 541 | "value": [ 542 | 1, 543 | 1, 544 | 0, 545 | 0, 546 | 1, 547 | 1 548 | ] 549 | }, 550 | "padsin000": { 551 | "name": "Button Mappings", 552 | "key": "padsin000", 553 | "value": [ 554 | 8, 555 | 9, 556 | 13, 557 | 12, 558 | 10, 559 | 0, 560 | 1, 561 | 3, 562 | 2, 563 | 15, 564 | -1, 565 | -1, 566 | 14, 567 | -33, 568 | -33, 569 | 32, 570 | 32, 571 | -36, 572 | -36, 573 | 35, 574 | 35, 575 | 6, 576 | 7, 577 | 5, 578 | 4, 579 | 11, 580 | -1 581 | ] 582 | } 583 | }, 584 | "customSettings": { 585 | "3": { 586 | "id": "3", 587 | "name": "Console Key", 588 | "description": "Key used for opening the client's console.", 589 | "author": "None", 590 | "value": "Insert" 591 | }, 592 | "4": { 593 | "id": "4", 594 | "name": "Launcher Music Volume", 595 | "description": "Toggle the launcher music.", 596 | "author": "Chary", 597 | "value": 0 598 | }, 599 | "6": { 600 | "id": "6", 601 | "name": "Enable seeding installer", 602 | "description": "Help us by uploading the game install to other players. (Your download comes from other players too!)", 603 | "author": "Flam", 604 | "value": true 605 | }, 606 | "7": { 607 | "id": "7", 608 | "name": "Throttle installation upload speed (KB/s)", 609 | "description": "Throttle your max upload speed to help us spread the installer to other players.", 610 | "author": "Flam", 611 | "value": 1000 612 | }, 613 | "8": { 614 | "id": "8", 615 | "name": "Ashita and POL Language", 616 | "description": "Contains configuration settings used to determine which language data is used for defaults.", 617 | "author": "atom0s", 618 | "value": 2 619 | } 620 | }, 621 | "pivotSettings": { 622 | "horizonmusic": { 623 | "dirname": "horizonmusic", 624 | "name": "Horizon XI Music", 625 | "description": "Custom music for FFXI by members of the HorizonXI team.", 626 | "author": "HorizonXI", 627 | "enabled": true 628 | }, 629 | "horizonoverrides": { 630 | "dirname": "horizonoverrides", 631 | "name": "Horizonoverrides", 632 | "description": "", 633 | "author": "", 634 | "enabled": true 635 | }, 636 | "xiview": { 637 | "dirname": "xiview", 638 | "name": "XIView", 639 | "description": "FFXI UI & Icon Changes. Modified by HorizonXI.", 640 | "author": "KenshiDRK", 641 | "enabled": true 642 | } 643 | }, 644 | "theme": "dark", 645 | "__internal__": { 646 | "migrations": { 647 | "version": "1.2.4" 648 | } 649 | } 650 | } 651 | --------------------------------------------------------------------------------