├── .gitignore ├── root ├── defaults │ └── autostart ├── custom-cont-init.d │ └── init.sh ├── usr │ └── local │ │ └── bin │ │ └── sync_dir └── etc │ └── xdg │ └── openbox │ └── rc.xml ├── docker-compose.yaml ├── Dockerfile ├── LICENSE ├── .gitlab-ci.yml ├── README.md └── settings.json /.gitignore: -------------------------------------------------------------------------------- 1 | tmp/ 2 | -------------------------------------------------------------------------------- /root/defaults/autostart: -------------------------------------------------------------------------------- 1 | cd /app/FMD2 2 | sync_dir /app/FMD2/downloads /downloads 3 | wine fmd.exe -------------------------------------------------------------------------------- /root/custom-cont-init.d/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ ! -f '/app/FMD2/userdata/settings.json' ]; then cp /settings.json /app/FMD2/userdata/settings.json; fi 3 | mkdir -p /app/FMD2/src 4 | git clone --single-branch --depth=1 https://github.com/dazedcat19/FMD2.git /app/FMD2/src 5 | cp /app/FMD2/src/lua /app/FMD2 -R 6 | mkdir -p /tmp/.X11-unix 7 | chmod 1777 /tmp/.X11-unix -R 8 | chown abc:abc /app -R 9 | chown abc:abc /config -R 10 | chown abc:abc /downloads -R 11 | chmod +x /usr/local/bin/sync_dir -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: "3" 3 | services: 4 | fmd2: 5 | build: ./ 6 | #image: banhcanh/docker-fmd2:kasm-v3 7 | container_name: fmd2 8 | environment: 9 | - PUID=1000 10 | - PGID=1000 11 | - TZ=Europe/Paris 12 | - UMASK=022 #optional 13 | - THRESHOLD_MINUTES=5 14 | - TRANSFER_FILE_TYPE=.cbz 15 | ports: 16 | - 3000:3000 17 | volumes: 18 | - ./tmp/FMD2/userdata:/app/FMD2/userdata 19 | - ./tmp/downloads:/downloads 20 | restart: unless-stopped 21 | -------------------------------------------------------------------------------- /root/usr/local/bin/sync_dir: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | monitor_changes() { 4 | 5 | copied_files="" 6 | 7 | while true; do 8 | while IFS= read -r file; do 9 | case "$copied_files" in 10 | *"${file}"*) 11 | ;; 12 | *) 13 | rsync -av "$file" "$2/$(basename "$(dirname "$file")")/" 14 | copied_files="${copied_files}${file} 15 | " 16 | ;; 17 | esac 18 | done < <(find "$1" -type f -name *"$TRANSFER_FILE_TYPE") 19 | 20 | find "$1" -mindepth 1 -type d -cmin +"$THRESHOLD_MINUTES" -exec rm -r {} \; 21 | 22 | sleep 20 23 | done 24 | } 25 | 26 | monitor_changes "$1" "$2" & 27 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ghcr.io/linuxserver/baseimage-kasmvnc:ubuntunoble 2 | 3 | ARG FMD2_VERSION="2.0.32.0" 4 | 5 | LABEL \ 6 | maintainer="vhvictorhang@gmail.com" 7 | 8 | ENV \ 9 | WINEDLLOVERRIDES="mscoree,mshtml=" \ 10 | HOME=/config 11 | 12 | RUN \ 13 | apt update && \ 14 | apt install -y dpkg && \ 15 | dpkg --add-architecture i386 && \ 16 | apt install -y wine64=9.0~repack-4build3 wget p7zip-full curl git python3-pyxdg inotify-tools rsync &&\ 17 | curl -s https://api.github.com/repos/dazedcat19/FMD2/releases/tags/${FMD2_VERSION} | grep "browser_download_url.*download.*fmd.*x86_64.*.7z" | cut -d : -f 2,3 | tr -d '"' | wget -qi - -O FMD2.7z && \ 18 | 7z x FMD2.7z -o/app/FMD2 && \ 19 | rm FMD2.7z && \ 20 | apt autoremove -y p7zip-full wget curl --purge && \ 21 | mkdir /downloads && \ 22 | mkdir -p /app/FMD2/userdata && \ 23 | mkdir -p /app/FMD2/downloads 24 | 25 | # Copy my settings preset 26 | COPY settings.json root / 27 | 28 | VOLUME /config 29 | EXPOSE 3000 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Victor 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | stages: 2 | - test 3 | - build 4 | 5 | Dockerfile-linter: 6 | stage: test 7 | image: hadolint/hadolint:v2.4.1-alpine 8 | script: 9 | # Test Dockerfile Syntax for best practices... 10 | # Ignoring apk add pin version warning because Alpine-Linux Package Management always drop older versions 11 | - hadolint --ignore DL3018 --ignore DL4001 --ignore DL4006 Dockerfile 12 | 13 | build: 14 | stage: build 15 | image: "registry.gitlab.com/gitlab-org/cluster-integration/auto-build-image:v0.4.0" 16 | variables: 17 | DOCKER_TLS_CERTDIR: "" 18 | services: 19 | - docker:19.03.12-dind 20 | script: 21 | - | 22 | if [[ -z "$CI_COMMIT_TAG" ]]; then 23 | export CI_APPLICATION_REPOSITORY=${CI_APPLICATION_REPOSITORY:-$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG} 24 | export CI_APPLICATION_TAG=${CI_APPLICATION_TAG:-$CI_COMMIT_SHA} 25 | else 26 | export CI_APPLICATION_REPOSITORY=${CI_APPLICATION_REPOSITORY:-$CI_REGISTRY_IMAGE} 27 | export CI_APPLICATION_TAG=${CI_APPLICATION_TAG:-$CI_COMMIT_TAG} 28 | fi 29 | - /build/build.sh 30 | rules: 31 | - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH' 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ARCHIVED # 2 | 3 | This repo is no longer maintained, please go and see ElryGH's fork which fixed some issues: 4 | 5 | https://github.com/ElryGH/docker-FMD2 6 | 7 | ## Descriptions 8 | 9 | Dockerized FMD2 (Windows with Wine) using VNC, noVNC and webSocketify to display GUI on a webpage. 10 | 11 | https://github.com/dazedcat19/FMD2 12 | 13 | https://hub.docker.com/r/banhcanh/docker-fmd2 14 | 15 | Make sure to configure it using the 'web' ui. 16 | 17 | ## Features: 18 | * Does not require any display, works headless 19 | * Keeps all of FMD2 features 20 | * Since it's docker, it works on Linux 21 | * Make use of Linuxserver alpine base image 22 | 23 | ## Docker 24 | ```yaml 25 | --- 26 | version: "3" 27 | services: 28 | fmd2: 29 | image: banhcanh/docker-fmd2:kasm-v3 30 | container_name: fmd2 31 | environment: 32 | - PUID=1000 33 | - PGID=1000 34 | - TZ=Europe/Paris 35 | - UMASK=022 #optional 36 | - THRESHOLD_MINUTES=5 37 | - TRANSFER_FILE_TYPE=.cbz 38 | ports: 39 | - 3000:3000 40 | volumes: 41 | - ./tmp/FMD2/userdata:/app/FMD2/userdata 42 | - ./tmp/downloads:/downloads 43 | restart: unless-stopped 44 | ``` 45 | 46 | ## Kubernetes 47 | 48 | https://github.com/TKVH-Apps/fmd2 49 | 50 | ## License 51 | [MIT](https://choosealicense.com/licenses/mit/) 52 | -------------------------------------------------------------------------------- /settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "droptarget" : { 3 | "Show" : false, 4 | "Mode" : 0, 5 | "Opacity" : 255, 6 | "Width" : 64, 7 | "Heigth" : 64, 8 | "Top" : -1, 9 | "Left" : -1 10 | }, 11 | "general" : { 12 | "LiveSearch" : true, 13 | "OneInstanceOnly" : true, 14 | "MinimizeOnStart" : false, 15 | "MinimizeToTray" : false, 16 | "DeleteCompletedTasksOnClose" : false, 17 | "SortDownloadsOnNewTasks" : false, 18 | "LetFMDDo" : 0, 19 | "ExternalProgramPath" : "", 20 | "ExternalProgramParams" : "\"%PATH%%CHAPTER%\"", 21 | "ChapterListHideDownloaded" : false, 22 | "AddAsStopped" : false, 23 | "HighlightNewManga" : true, 24 | "HighlightDownloadedChapters" : true, 25 | "VacuumDatabasesOnExit" : false, 26 | "DownloadFilterSelect" : 0 27 | }, 28 | "languages" : { 29 | "Selected" : "en" 30 | }, 31 | "view" : { 32 | "ShowDownloadsToolbar" : true, 33 | "ShowDownloadsToolbarLeft" : true, 34 | "ShowFavoritesTabOnNewManga" : false, 35 | "ShowDownloadsTabOnNewTasks" : true, 36 | "ShowDownloadsToolbarDeleteAll" : false, 37 | "LoadMangaCover" : false, 38 | "ShowBalloonHint" : true 39 | }, 40 | "connections" : { 41 | "NumberOfTasks" : 1, 42 | "NumberOfThreadsPerTask" : 1, 43 | "Retry" : 5, 44 | "NumberOfAutoRetryFailedTask" : 1, 45 | "AlwaysRetruFailedChaptersOnStart" : true, 46 | "MaxFavoriteThreads" : 1, 47 | "MaxUpdateListThreads" : 1, 48 | "MaxBackgroundLoadThreads" : 1, 49 | "ConnectionTimeout" : 30, 50 | "DefaultUserAgent" : "", 51 | "UseProxy" : false, 52 | "ProxyType" : "HTTP", 53 | "Host" : "", 54 | "Port" : "", 55 | "User" : "", 56 | "Pass" : "" 57 | }, 58 | "saveto" : { 59 | "SaveTo" : "downloads\\", 60 | "ChangeUnicodeCharacter" : false, 61 | "ChangeUnicodeCharacterStr" : "_", 62 | "GenerateMangaFolder" : true, 63 | "MangaCustomRename" : "%MANGA%", 64 | "Compress" : 2, 65 | "PDFQuality" : 100, 66 | "RemoveMangaNameFromChapter" : false, 67 | "GenerateChapterFolder" : true, 68 | "ChapterCustomRename" : "%MANGA% - %CHAPTER%", 69 | "ConvertDigitVolume" : true, 70 | "ConvertDigitChapter" : true, 71 | "DigitVolumeLength" : 2, 72 | "DigitChapterLength" : 3, 73 | "FilenameCustomRename" : "%FILENAME%", 74 | "PNGSaveAsJPEG" : false, 75 | "ConvertWebP" : 1, 76 | "PNGCompressionLevel" : 1, 77 | "JPEGQuality" : 80 78 | }, 79 | "update" : { 80 | "AutoCheckLatestVersion" : false, 81 | "AutoCheckFavStartup" : true, 82 | "AutoOpenFavStartup" : false, 83 | "AutoCheckFavInterval" : true, 84 | "AutoCheckFavIntervalMinutes" : 60, 85 | "NewMangaTime" : 1, 86 | "AutoCheckFavAutoDownload" : true, 87 | "AutoCheckFavAutoRemoveCompletedManga" : false, 88 | "UpdateListNoMangaInfo" : false, 89 | "UpdateListRemoveDuplicateLocalData" : false 90 | }, 91 | "modulesupdater" : { 92 | "ShowUpdateWarning" : true, 93 | "AutoRestart" : true 94 | }, 95 | "dialogs" : { 96 | "ShowQuitDialog" : true, 97 | "ShowDeleteDldTaskDialog" : true, 98 | "ShowDownloadMangalistDialog" : true 99 | }, 100 | "BasicListColors" : { 101 | "BackgroundColor" : "clWindow", 102 | "BorderColor" : "clBtnFace", 103 | "DisabledColor" : "clBtnShadow", 104 | "DropMarkColor" : "clHighlight", 105 | "DropTargetColor" : "clHighlight", 106 | "DropTargetBorderColor" : "clHotLight", 107 | "FocusedSelectionColor" : "clHighlight", 108 | "FocusedSelectionBorderColor" : "clHotLight", 109 | "GridLineColor" : "clBtnShadow", 110 | "HeaderHotColor" : "clBtnShadow", 111 | "HotColor" : "clWindowText", 112 | "SelectionRectangleBlendColor" : "clHighlight", 113 | "SelectionRectangleBorderColor" : "clHotLight", 114 | "TreeLineColor" : "clBtnShadow", 115 | "UnfocusedSelectionColor" : "clSilver", 116 | "UnfocusedSelectionBorderColor" : "clGray", 117 | "NormalTextColor" : "clWindowText", 118 | "FocusedSelectionTextColor" : "clHighlightText", 119 | "UnfocusedSelectionTextColor" : "clWindowText", 120 | "OddColor" : "clBtnFace", 121 | "EvenColor" : "clWindow", 122 | "SortedColumnColor" : "$00F8E6D6", 123 | "EnableWebsiteSettings" : "clYellow" 124 | }, 125 | "MangaListColors" : { 126 | "NewMangaColor" : "$00FDC594", 127 | "CompletedMangaColor" : "$00B8FFB8" 128 | }, 129 | "FavoriteListColors" : { 130 | "BrokenFavoriteColor" : "$008080FF", 131 | "CheckingColor" : "$0080EBFE", 132 | "NewChapterFoundColor" : "$00FDC594", 133 | "CompletedSeriesColor" : "$00B8FFB8", 134 | "EmptyChapters" : "$00CCDDFF" 135 | }, 136 | "ChapterListColor" : { 137 | "DownloadedColor" : "$00B8FFB8" 138 | }, 139 | "logger" : { 140 | "Enabled" : false, 141 | "LogFileName" : "fmd.log" 142 | }, 143 | "form" : { 144 | "DownloadsSplitter" : 200, 145 | "MangaInfoSplitter" : 200, 146 | "pcMainPageIndex" : 0, 147 | "MainFormMaximized" : false, 148 | "MainFormLeft" : 162, 149 | "MainFormTop" : 14, 150 | "MainFormWidth" : 855, 151 | "MainFormHeight" : 641 152 | }, 153 | "DownloadFilter" : { 154 | "CustomFrom" : "2021-02-26T00:00:00.000", 155 | "CustomTo" : "2021-02-26T00:00:00.000" 156 | }, 157 | "vtDownload" : { 158 | "SortColumn" : -1, 159 | "SortDirection" : 0, 160 | "Column0Width" : 100, 161 | "Column0Position" : 0, 162 | "Column1Width" : 200, 163 | "Column1Position" : 1, 164 | "Column2Width" : 55, 165 | "Column2Position" : 2, 166 | "Column3Width" : 50, 167 | "Column3Position" : 3, 168 | "Column4Width" : 65, 169 | "Column4Position" : 4, 170 | "Column5Width" : 150, 171 | "Column5Position" : 5, 172 | "Column6Width" : 80, 173 | "Column6Position" : 6, 174 | "Column7Width" : 50, 175 | "Column7Position" : 7 176 | }, 177 | "vtFavorites" : { 178 | "SortColumn" : -1, 179 | "SortDirection" : 0, 180 | "Column0Width" : 50, 181 | "Column0Position" : 0, 182 | "Column1Width" : 150, 183 | "Column1Position" : 1, 184 | "Column2Width" : 100, 185 | "Column2Position" : 2, 186 | "Column3Width" : 65, 187 | "Column3Position" : 3, 188 | "Column4Width" : 200, 189 | "Column4Position" : 4, 190 | "Column5Width" : 50, 191 | "Column5Position" : 5, 192 | "Column6Width" : 50, 193 | "Column6Position" : 6, 194 | "Column7Width" : 50, 195 | "Column7Position" : 7 196 | }, 197 | "vtLuaModulesRepos" : { 198 | "SortColumn" : -1, 199 | "SortDirection" : 0, 200 | "Column0Width" : 150, 201 | "Column0Position" : 0, 202 | "Column1Width" : 110, 203 | "Column1Position" : 1, 204 | "Column2Width" : 250, 205 | "Column2Position" : 2 206 | }, 207 | "vtAccountList" : { 208 | "SortColumn" : -1, 209 | "SortDirection" : 0, 210 | "Column0Width" : 25, 211 | "Column0Position" : 0, 212 | "Column1Width" : 50, 213 | "Column1Position" : 1, 214 | "Column2Width" : 50, 215 | "Column2Position" : 2, 216 | "Column3Width" : 50, 217 | "Column3Position" : 3 218 | } 219 | } 220 | -------------------------------------------------------------------------------- /root/etc/xdg/openbox/rc.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 10 7 | 20 8 | 9 | 10 | yes 11 | 13 | no 14 | 15 | yes 16 | 18 | no 19 | 20 | 200 21 | 23 | no 24 | 26 | 27 | 28 | Smart 29 | 30 |
yes
31 | 33 | Primary 34 | 37 | 1 38 | 43 |
44 | 45 | Clearlooks 46 | NLIMC 47 | 57 | no 58 | no 59 | 60 | Sans 61 | 9 62 | 63 | Bold 64 | 65 | Normal 66 | 67 | 68 | 69 | Sans 70 | 8 71 | 72 | Bold 73 | 74 | Normal 75 | 76 | 77 | 78 | Sans 79 | 10 80 | 81 | Normal 82 | 83 | Normal 84 | 85 | 86 | 87 | Sans 88 | 10 89 | 90 | Normal 91 | 92 | Normal 93 | 94 | 95 | 96 | sans 97 | 9 98 | 99 | bold 100 | 101 | normal 102 | 103 | 104 | 105 | sans 106 | 9 107 | 108 | bold 109 | 110 | normal 111 | 112 | 113 | 114 | 115 | 121 | 4 122 | 1 123 | 124 | 128 | 129 | 875 130 | 132 | 133 | 134 | yes 135 | Nonpixel 136 | 137 | Center 138 | 139 | 140 | 141 | 10 142 | 144 | 10 145 | 147 | 148 | 149 | 153 | 154 | 0 155 | 0 156 | 0 157 | 0 158 | 159 | 160 | TopLeft 161 | 162 | 0 163 | 0 164 | no 165 | Above 166 | 167 | Vertical 168 | 169 | no 170 | 300 171 | 172 | 300 173 | 174 | Middle 175 | 176 | 177 | 178 | C-g 179 | 180 | 181 | 182 | left 183 | no 184 | 185 | 186 | 187 | 188 | 189 | amixer set Master 5%- 190 | 191 | 192 | 193 | 194 | amixer set Master 5%+ 195 | 196 | 197 | 198 | 199 | 200 | xfce4-appfinder 201 | 202 | 203 | 204 | 205 | 206 | ~/Dropbox/shared/sublime3/sublime_text_Linux_64 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | wine ~/Desktop/foxit.exe 218 | 219 | 220 | 221 | 222 | 223 | xfce4-screenshooter 224 | 225 | 226 | 227 | 0 228 | -0 229 | -0 230 | 0 231 | 232 | 233 | 234 | right 235 | no 236 | 237 | 238 | 239 | 240 | up 241 | no 242 | 243 | 244 | 245 | 246 | down 247 | no 248 | 249 | 250 | 251 | 252 | left 253 | no 254 | 255 | 256 | 257 | 258 | right 259 | no 260 | 261 | 262 | 263 | 264 | up 265 | no 266 | 267 | 268 | 269 | 270 | down 271 | no 272 | 273 | 274 | 275 | 276 | 1 277 | 278 | 279 | 280 | 281 | 2 282 | 283 | 284 | 285 | 286 | 3 287 | 288 | 289 | 290 | 291 | 4 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | client-menu 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | yes 333 | yes 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | right 345 | 346 | 347 | 348 | 349 | left 350 | 351 | 352 | 353 | 354 | up 355 | 356 | 357 | 358 | 359 | down 360 | 361 | 362 | 363 | 364 | 365 | 366 | true 367 | Konqueror 368 | 369 | kfmclient openProfile filemanagement 370 | 371 | 372 | 373 | 374 | 1 375 | 376 | 200 377 | 378 | 400 379 | 382 | false 383 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | previous 412 | 413 | 414 | 415 | 416 | next 417 | 418 | 419 | 420 | 421 | previous 422 | 423 | 424 | 425 | 426 | next 427 | 428 | 429 | 430 | 431 | previous 432 | 433 | 434 | 435 | 436 | next 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | no 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | yes 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | client-menu 484 | 485 | 486 | 487 | 488 | 489 | 490 | top 491 | 492 | 493 | 494 | 495 | 496 | 497 | left 498 | 499 | 500 | 501 | 502 | 503 | 504 | right 505 | 506 | 507 | 508 | 509 | 510 | 511 | bottom 512 | 513 | 514 | 515 | 516 | 517 | 518 | client-menu 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | client-menu 553 | 554 | 555 | 556 | 557 | 558 | 559 | client-menu 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | vertical 613 | 614 | 615 | 616 | 617 | horizontal 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | previous 635 | 636 | 637 | 638 | 639 | next 640 | 641 | 642 | 643 | 644 | previous 645 | 646 | 647 | 648 | 649 | next 650 | 651 | 652 | 653 | 654 | previous 655 | 656 | 657 | 658 | 659 | next 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | client-list-combined-menu 676 | 677 | 678 | 679 | 680 | root-menu 681 | 682 | 683 | 684 | 685 | 686 | 687 | previous 688 | 689 | 690 | 691 | 692 | next 693 | 694 | 695 | 696 | 697 | previous 698 | 699 | 700 | 701 | 702 | next 703 | 704 | 705 | 706 | 707 | menu.xml200no100400 714 | if this is a negative value, then the delay is infinite and the 715 | submenu will not be hidden until a different submenu is opened --> 716 | yes 717 | 718 | yes 719 | 720 | yes 721 | 722 | 723 | 724 | 725 | 2 726 | 727 | 728 | no 729 | yes 730 | 731 | 794 | 795 |
796 | --------------------------------------------------------------------------------