├── .gitignore ├── README ├── data ├── meson.build ├── rc_gui.desktop.in └── rc_gui.ui ├── debian ├── changelog ├── control ├── copyright ├── gbp.conf ├── rules └── source │ └── format ├── meson.build ├── po ├── POTFILES.in ├── de.po ├── en_GB.po ├── es.po ├── fr.po ├── hy.po ├── id_ID.po ├── it.po ├── ja.po ├── ko.po ├── linggen ├── meson.build ├── nb.no ├── nl.po ├── pl.po ├── sk.po ├── zh_CN.po └── zh_TW.po └── src ├── display.c ├── display.h ├── interface.c ├── interface.h ├── local.c ├── local.h ├── meson.build ├── perform.c ├── perform.h ├── rc_gui.c ├── rc_gui.h ├── system.c └── system.h /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.so 3 | *.la 4 | *.a 5 | *.gmo 6 | *.lo 7 | *.desktop 8 | *.log 9 | *.pot 10 | .dirstamp 11 | configure 12 | config.guess 13 | config.h 14 | config.h.in 15 | config.h.in~ 16 | config.log 17 | config.status 18 | config.sub 19 | Makefile 20 | Makefile.in 21 | POTFILES 22 | LINGUAS 23 | po/.intltool-merge-cache 24 | po/stamp-it 25 | aclocal.m4 26 | ar-lib 27 | compile 28 | depcomp 29 | install-sh 30 | libtool 31 | ltmain.sh 32 | missing 33 | stamp-h1 34 | .deps/ 35 | .libs/ 36 | autom4te.cache/ 37 | m4/ 38 | autoreconf.* 39 | *.substvars 40 | debian/files 41 | debian/debhelper-build-stamp 42 | debian/.debhelper/ 43 | debian/rc-gui/ 44 | rc_gui 45 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | How to build 2 | ------------ 3 | 4 | 1. Install dependencies 5 | 6 | The dependencies of any Debian project are listed in the "Build-Depends" section 7 | of the file named "control" in the "debian" subdirectory of the project. Either 8 | install each of these manually by using "sudo apt install ", or, 9 | if the project has already been released into apt, the build dependencies can all 10 | be automatically installed using the command "sudo apt build-dep ". 11 | 12 | 2. Configure meson 13 | 14 | To configure the meson build system, use the command "meson setup builddir" 15 | in the top directory of the project. This will create a subdirectory "builddir", 16 | and by default set the project for installation in the /usr/local tree, 17 | which will not overwrite a version which has been installed from apt. 18 | 19 | If you wish to overwrite a preinstalled version in the /usr tree, use the command 20 | "meson setup builddir --prefix=/usr --libdir=/usr/lib/". 21 | On a 32-bit system, should be "arm-linux-gnueabihf". 22 | On a 64-bit system, should be "aarch64-linux-gnu". 23 | 24 | 3. Build 25 | 26 | To build the application, change to the "builddir" directory and use the 27 | command "meson compile". 28 | 29 | 4. Install 30 | 31 | To install the application and all required data files, change to the 32 | "builddir" directory and use the command "sudo meson install". 33 | -------------------------------------------------------------------------------- /data/meson.build: -------------------------------------------------------------------------------- 1 | if build_standalone 2 | install_data('rc_gui.ui', install_dir: ui_dir) 3 | i18n.merge_file(input: 'rc_gui.desktop.in', 4 | output: 'rc_gui.desktop', 5 | type: 'desktop', 6 | po_dir: '../po', 7 | install: true, 8 | install_dir: desktop_dir 9 | ) 10 | endif 11 | 12 | if build_plugin 13 | install_data('rc_gui.ui', install_dir: pui_dir) 14 | endif 15 | -------------------------------------------------------------------------------- /data/rc_gui.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Raspberry Pi Configuration 4 | Comment=Configure Raspberry Pi system 5 | Icon=rpi 6 | Exec=rc_gui 7 | Terminal=false 8 | Categories=Settings; 9 | StartupNotify=true 10 | -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | rc-gui (1.92) bookworm; urgency=medium 2 | 3 | * Update GB translation file 4 | 5 | -- Simon Long Thu, 01 May 2025 10:07:07 +0100 6 | 7 | rc-gui (1.91) bookworm; urgency=medium 8 | 9 | * Add separate console and desktop autologin options 10 | 11 | -- Simon Long Thu, 06 Mar 2025 16:15:12 +0000 12 | 13 | rc-gui (1.90) bookworm; urgency=medium 14 | 15 | * Add squeekboard output selection 16 | 17 | -- Simon Long Tue, 10 Dec 2024 14:06:20 +0000 18 | 19 | rc-gui (1.89) bookworm; urgency=medium 20 | 21 | * Remove Raspberry Pi Connect switch 22 | 23 | -- Simon Long Fri, 11 Oct 2024 14:22:19 +0100 24 | 25 | rc-gui (1.88) bookworm; urgency=medium 26 | 27 | * Add auto-detect option for squeekboard 28 | 29 | -- Simon Long Mon, 23 Sep 2024 14:09:26 +0100 30 | 31 | rc-gui (1.87) bookworm; urgency=medium 32 | 33 | * Update name of Chromium package 34 | 35 | -- Simon Long Tue, 17 Sep 2024 14:16:45 +0100 36 | 37 | rc-gui (1.86) bookworm; urgency=medium 38 | 39 | * Fix shadows on undecorated windows 40 | 41 | -- Simon Long Thu, 12 Sep 2024 12:10:34 +0100 42 | 43 | rc-gui (1.85) bookworm; urgency=medium 44 | 45 | * Some items missing from size group 46 | 47 | -- Simon Long Tue, 10 Sep 2024 12:40:21 +0100 48 | 49 | rc-gui (1.84) bookworm; urgency=medium 50 | 51 | * Add switching for squeekboard; Chinese translation 52 | 53 | -- Simon Long Mon, 15 Jul 2024 12:58:13 +0100 54 | 55 | rc-gui (1.83) bookworm; urgency=medium 56 | 57 | * Enable RPi Connect for 32-bit and X 58 | 59 | -- Simon Long Mon, 24 Jun 2024 13:22:03 +0100 60 | 61 | rc-gui (1.82) bookworm; urgency=medium 62 | 63 | * Hide RPi Connect on 32-bit 64 | 65 | -- Simon Long Tue, 18 Jun 2024 14:55:43 +0100 66 | 67 | rc-gui (1.81) bookworm; urgency=medium 68 | 69 | * Add switching for RPi Connect 70 | 71 | -- Simon Long Tue, 21 May 2024 10:15:13 +0100 72 | 73 | rc-gui (1.80) bookworm; urgency=medium 74 | 75 | * Add alternate keyboard layout assignment 76 | 77 | -- Simon Long Wed, 24 Apr 2024 11:31:52 +0100 78 | 79 | rc-gui (1.79) bookworm; urgency=medium 80 | 81 | * Set title for modal dialog 82 | 83 | -- Simon Long Wed, 10 Apr 2024 13:32:45 +0100 84 | 85 | rc-gui (1.78) bookworm; urgency=medium 86 | 87 | * Remove VNC resolution setting for Wayland 88 | 89 | -- Simon Long Wed, 14 Feb 2024 13:03:02 +0000 90 | 91 | rc-gui (1.77) bookworm; urgency=medium 92 | 93 | * Add labwc screen blanking support 94 | 95 | -- Simon Long Tue, 30 Jan 2024 07:46:04 +0000 96 | 97 | rc-gui (1.76) bookworm; urgency=medium 98 | 99 | * Add labwc compatibility 100 | 101 | -- Simon Long Thu, 11 Jan 2024 15:10:38 +0000 102 | 103 | rc-gui (1.75) bookworm; urgency=medium 104 | 105 | * Update Japanese translation 106 | 107 | -- Simon Long Fri, 03 Nov 2023 11:18:30 +0000 108 | 109 | rc-gui (1.74) bookworm; urgency=medium 110 | 111 | * Add serial port switching for Pi 5 112 | 113 | -- Simon Long Wed, 18 Oct 2023 11:47:32 +0100 114 | 115 | rc-gui (1.73) bookworm; urgency=medium 116 | 117 | * Add USB current limit switch for Pi 5 118 | 119 | -- Simon Long Tue, 17 Oct 2023 10:18:12 +0100 120 | 121 | rc-gui (1.72) bookworm; urgency=medium 122 | 123 | * Relax VNC test; Pi 5 serial port preparations 124 | 125 | -- Simon Long Mon, 16 Oct 2023 13:59:54 +0100 126 | 127 | rc-gui (1.71) bookworm; urgency=medium 128 | 129 | * Remove all options which are not relevant to KMS 130 | 131 | -- Simon Long Wed, 06 Sep 2023 09:00:07 +0100 132 | 133 | rc-gui (1.70) bookworm; urgency=medium 134 | 135 | * Remove overscan for Wayland 136 | 137 | -- Simon Long Tue, 29 Aug 2023 11:14:58 +0100 138 | 139 | rc-gui (1.69) bookworm; urgency=medium 140 | 141 | * Fix accented character in language name 142 | 143 | -- Simon Long Wed, 16 Aug 2023 07:16:03 +0100 144 | 145 | rc-gui (1.68) bookworm; urgency=medium 146 | 147 | * Only use sudo for setting calls to raspi-config 148 | 149 | -- Simon Long Tue, 25 Jul 2023 11:53:25 +0100 150 | 151 | rc-gui (1.67) bookworm; urgency=medium 152 | 153 | * Reinstate external keyboard layout dialog 154 | 155 | -- Simon Long Fri, 30 Jun 2023 15:48:22 +0100 156 | 157 | rc-gui (1.66) bookworm; urgency=medium 158 | 159 | * Use new location for greeter config file 160 | 161 | -- Simon Long Thu, 29 Jun 2023 09:02:28 +0100 162 | 163 | rc-gui (1.65) bookworm; urgency=medium 164 | 165 | * Add please wait prompts 166 | 167 | -- Simon Long Fri, 26 May 2023 11:10:56 +0100 168 | 169 | rc-gui (1.64) bookworm; urgency=medium 170 | 171 | * Remove headless resolution setting on wayfire 172 | 173 | -- Simon Long Wed, 17 May 2023 14:15:38 +0100 174 | 175 | rc-gui (1.63) bookworm; urgency=medium 176 | 177 | * Remove usage of xrandr 178 | 179 | -- Simon Long Thu, 04 May 2023 11:19:04 +0100 180 | 181 | rc-gui (1.62) bookworm; urgency=medium 182 | 183 | * Add Korean translation 184 | 185 | -- Simon Long Wed, 05 Apr 2023 11:46:33 +0100 186 | 187 | rc-gui (1.61) bullseye; urgency=medium 188 | 189 | * Update greeter keyboard settings as well as desktop 190 | 191 | -- Simon Long Wed, 15 Mar 2023 08:10:29 +0000 192 | 193 | rc-gui (1.60) bullseye; urgency=medium 194 | 195 | * Fix undecorated dialogs 196 | 197 | -- Simon Long Tue, 24 Jan 2023 11:25:55 +0000 198 | 199 | rc-gui (1.59) bullseye; urgency=medium 200 | 201 | * Make keyboard selection compatible with Wayfire 202 | 203 | -- Simon Long Fri, 25 Nov 2022 10:31:19 +0000 204 | 205 | rc-gui (1.58) bullseye; urgency=medium 206 | 207 | * Check hostnames for validity 208 | 209 | -- Simon Long Tue, 30 Aug 2022 10:39:41 +0100 210 | 211 | rc-gui (1.57) bullseye; urgency=medium 212 | 213 | * Correctly centre message boxes in all cases 214 | 215 | -- Simon Long Fri, 05 Aug 2022 16:00:09 +0500 216 | 217 | rc-gui (1.56) bullseye; urgency=medium 218 | 219 | * Fix size of modal dialog 220 | 221 | -- Simon Long Tue, 15 Mar 2022 10:11:09 +0000 222 | 223 | rc-gui (1.55) bullseye; urgency=medium 224 | 225 | * Add on-the-fly overscan setting under KMS 226 | * Remove pixel doubling under KMS 227 | 228 | -- Simon Long Tue, 01 Mar 2022 11:59:27 +0000 229 | 230 | rc-gui (1.54) bullseye; urgency=medium 231 | 232 | * Use switches instead of radio buttons 233 | 234 | -- Simon Long Wed, 26 Jan 2022 14:52:45 +0000 235 | 236 | rc-gui (1.53) bullseye; urgency=medium 237 | 238 | * Update Italian translations 239 | 240 | -- Simon Long Mon, 17 Jan 2022 13:33:28 +0000 241 | 242 | rc-gui (1.52) bullseye; urgency=medium 243 | 244 | * Add VNC resolution combo box 245 | 246 | -- Simon Long Wed, 10 Nov 2021 11:27:21 +0000 247 | 248 | rc-gui (1.51) bullseye; urgency=medium 249 | 250 | * Remove camera enable / disable option 251 | 252 | -- Simon Long Thu, 04 Nov 2021 11:13:10 +0000 253 | 254 | rc-gui (1.50) bullseye; urgency=medium 255 | 256 | * Fix Unicode characters in country names 257 | 258 | -- Simon Long Sat, 07 Aug 2021 17:13:21 +0100 259 | 260 | rc-gui (1.49) bullseye; urgency=medium 261 | 262 | * Add updated German and Polish translations 263 | 264 | -- Simon Long Fri, 30 Jul 2021 09:26:28 +0100 265 | 266 | rc-gui (1.48) bullseye; urgency=medium 267 | 268 | * Remove dialog hint 269 | 270 | -- Simon Long Mon, 12 Jul 2021 13:33:21 +0100 271 | 272 | rc-gui (1.47) bullseye; urgency=medium 273 | 274 | * GTK+3 version 275 | 276 | -- Simon Long Fri, 26 Mar 2021 14:12:16 +0000 277 | 278 | rc-gui (1.46) buster; urgency=medium 279 | 280 | * Remove composite output switch on Pi 4 281 | 282 | -- Simon Long Tue, 19 Jan 2021 06:51:48 +0000 283 | 284 | rc-gui (1.45) buster; urgency=medium 285 | 286 | * Added Slovak translation; updated Italian translation 287 | 288 | -- Simon Long Mon, 07 Dec 2020 08:00:09 +0000 289 | 290 | rc-gui (1.44) buster; urgency=medium 291 | 292 | * Add more accessibility labels 293 | 294 | -- Simon Long Tue, 10 Nov 2020 11:57:41 +0000 295 | 296 | rc-gui (1.43) buster; urgency=medium 297 | 298 | * Add additional screen reader voice labels 299 | * Add fan control to performance tab 300 | 301 | -- Simon Long Tue, 27 Oct 2020 15:15:28 +0100 302 | 303 | rc-gui (1.42) buster; urgency=medium 304 | 305 | * Norwegian translations updated 306 | 307 | -- Simon Long Mon, 05 Oct 2020 10:41:59 +0100 308 | 309 | rc-gui (1.41) buster; urgency=medium 310 | 311 | * Japanese translations updated 312 | 313 | -- Simon Long Mon, 07 Sep 2020 14:31:46 +0100 314 | 315 | rc-gui (1.40) buster; urgency=medium 316 | 317 | * Add switch for power LED activity indication on Pi Zero 318 | 319 | -- Simon Long Wed, 02 Sep 2020 13:50:55 +0100 320 | 321 | rc-gui (1.39) buster; urgency=medium 322 | 323 | * Replace references to wifi 324 | 325 | -- Simon Long Mon, 04 May 2020 11:35:05 +0100 326 | 327 | rc-gui (1.38) buster; urgency=medium 328 | 329 | * Use size_t in all getline calls 330 | 331 | -- Simon Long Fri, 28 Feb 2020 06:44:02 +0000 332 | 333 | rc-gui (1.37) buster; urgency=medium 334 | 335 | * Check for Pi or x86 at runtime rather than compile time 336 | 337 | -- Simon Long Thu, 27 Feb 2020 07:31:26 +0000 338 | 339 | rc-gui (1.36) buster; urgency=medium 340 | 341 | * Disable screen blanking switch if xscreensaver installed; update some tooltips 342 | 343 | -- Simon Long Fri, 07 Feb 2020 13:45:55 +0000 344 | 345 | rc-gui (1.35) buster; urgency=medium 346 | 347 | * Improved test to see if VNC Server is installed 348 | 349 | -- Simon Long Thu, 06 Feb 2020 13:48:44 +0000 350 | 351 | rc-gui (1.34) buster; urgency=medium 352 | 353 | * Restore pixel doubling option for FKMS platforms using xrandr 354 | 355 | -- Simon Long Mon, 03 Feb 2020 09:31:47 +0000 356 | 357 | rc-gui (1.33) buster; urgency=medium 358 | 359 | * Split system and display settings onto separate tabs 360 | * Add screen blanking option 361 | * Check kernel is in sync before enabling overlays 362 | 363 | -- Simon Long Thu, 16 Jan 2020 10:06:17 +0000 364 | 365 | rc-gui (1.32) buster; urgency=medium 366 | 367 | * Add overlay file system control 368 | * Modify desktop file to preserve environment 369 | 370 | -- Simon Long Fri, 05 Oct 2019 10:19:59 +0100 371 | 372 | rc-gui (1.31) buster; urgency=medium 373 | 374 | * Remove incorrect options for x86 builds 375 | 376 | -- Simon Long Tue, 24 Sep 2019 11:00:24 +0100 377 | 378 | rc-gui (1.30) buster; urgency=medium 379 | 380 | * Restore overscan switch for FKMS 381 | 382 | -- Simon Long Tue, 17 Sep 2019 15:36:10 +0100 383 | 384 | rc-gui (1.29) buster; urgency=medium 385 | 386 | * Correct default GPU memory value 387 | 388 | -- Simon Long Wed, 17 Jul 2019 07:42:22 +0100 389 | 390 | rc-gui (1.28) buster; urgency=medium 391 | 392 | * Remove 4kp60 switch 393 | 394 | -- Simon Long Tue, 09 Jul 2019 13:32:48 +0100 395 | 396 | rc-gui (1.27) unstable; urgency=medium 397 | 398 | * Use separate switches for 4K and analogue 399 | 400 | -- Simon Long Wed, 19 Jun 2019 15:07:24 +0100 401 | 402 | rc-gui (1.26) unstable; urgency=medium 403 | 404 | * Update translations 405 | 406 | -- Simon Long Fri, 17 May 2019 14:09:23 +0100 407 | 408 | rc-gui (1.25) unstable; urgency=medium 409 | 410 | * Add Pi 4 video output control; disable underscan and HDMI resolution if using GL driver 411 | 412 | -- Simon Long Wed, 15 May 2019 15:35:13 +0100 413 | 414 | rc-gui (1.24) unstable; urgency=medium 415 | 416 | * Disable pixel doubling if using GL driver 417 | 418 | -- Simon Long Tue, 14 May 2019 15:07:46 +0100 419 | 420 | rc-gui (1.23) stretch; urgency=medium 421 | 422 | * Disable wifi country button if no wifi hardware found 423 | 424 | -- Simon Long Wed, 27 Mar 2019 11:58:43 +0000 425 | 426 | rc-gui (1.22) stretch; urgency=medium 427 | 428 | * Increased vertical spacing between widgets 429 | 430 | -- Simon Long Mon, 18 Feb 2019 13:09:02 +0000 431 | 432 | rc-gui (1.21) stretch; urgency=medium 433 | 434 | * Move password prompt into lib subdir 435 | 436 | -- Simon Long Fri, 06 Jul 2018 09:22:17 +0100 437 | 438 | rc-gui (1.20) stretch; urgency=medium 439 | 440 | * Move password prompt into /usr/lib/ 441 | 442 | -- Simon Long Thu, 21 Jun 2018 15:23:58 +0100 443 | 444 | rc-gui (1.19) stretch; urgency=medium 445 | 446 | * Use list stores for locale and timezone settings 447 | * Separate switches for serial console and hardware 448 | * Redesigned progress box 449 | 450 | -- Simon Long Fri, 18 May 2018 07:32:50 +0100 451 | 452 | rc-gui (1.18) stretch; urgency=medium 453 | 454 | * Use internal dialog to change keyboard instead of lxkeymap 455 | 456 | -- Simon Long Tue, 17 Apr 2018 12:56:18 +0100 457 | 458 | rc-gui (1.17) stretch; urgency=medium 459 | 460 | * Add unset option for wifi country; fix various memory leaks 461 | 462 | -- Simon Long Tue, 10 Apr 2018 14:41:33 +0100 463 | 464 | rc-gui (1.16) stretch; urgency=medium 465 | 466 | * Modify selection of language strings in locale box 467 | 468 | -- Simon Long Fri, 23 Mar 2018 14:23:44 +0000 469 | 470 | rc-gui (1.15) stretch; urgency=medium 471 | 472 | * Remove reboot requirement after setting wi-fi country 473 | 474 | -- Simon Long Thu, 01 Mar 2018 11:05:31 +0000 475 | 476 | rc-gui (1.14) stretch; urgency=medium 477 | 478 | * Layout all elements homogenously with padding 479 | 480 | -- Simon Long Fri, 01 Dec 2017 07:44:09 +0000 481 | 482 | rc-gui (1.13) stretch; urgency=medium 483 | 484 | * Include updated Japanese translation 485 | 486 | -- Simon Long Mon, 04 Sep 2017 07:46:45 +0100 487 | 488 | rc-gui (1.12) stretch; urgency=medium 489 | 490 | * Launch lxkeymap without sudo 491 | 492 | -- Simon Long Fri, 18 Aug 2017 10:59:19 +0100 493 | 494 | rc-gui (1.11) stretch; urgency=medium 495 | 496 | * Fix password change behaviour when whole app run with sudo 497 | 498 | -- Simon Long Tue, 15 Aug 2017 11:32:07 +0100 499 | 500 | rc-gui (1.10) stretch; urgency=medium 501 | 502 | * Run entire application under sudo 503 | 504 | -- Simon Long Fri, 14 Jul 2017 13:04:30 +0100 505 | 506 | rc-gui (1.9) jessie; urgency=medium 507 | 508 | * Remove unnecessary check for config.txt on x86 509 | 510 | -- Simon Long Wed, 03 May 2017 12:30:50 +0100 511 | 512 | rc-gui (1.8) jessie; urgency=medium 513 | 514 | * Pre-emptive bug fix for timezone setting not changing in stretch 515 | 516 | -- Simon Long Thu, 20 Apr 2017 15:01:01 +0100 517 | 518 | rc-gui (1.7) jessie; urgency=medium 519 | 520 | * Fix serial hardware and terminal detection logic 521 | 522 | -- Simon Long Wed, 15 Feb 2017 16:26:54 +0000 523 | 524 | rc-gui (1.6) jessie; urgency=medium 525 | 526 | * Modified to support x86 platforms 527 | 528 | -- Simon Long Fri, 20 Jan 2017 14:04:18 +0000 529 | 530 | rc-gui (1.5) jessie; urgency=medium 531 | 532 | * Expand file system removed; resolution setting added 533 | 534 | -- Simon Long Tue, 06 Dec 2016 13:46:13 +0000 535 | 536 | rc-gui (1.4) jessie; urgency=medium 537 | 538 | * Change masking character used in password change dialog 539 | 540 | -- Simon Long Tue, 08 Nov 2016 14:58:00 +0000 541 | 542 | rc-gui (1.3) jessie; urgency=medium 543 | 544 | * 1.3 release - require current password for a password change 545 | 546 | -- Simon Long Mon, 24 Oct 2016 13:39:42 +0100 547 | 548 | rc-gui (1.2) jessie; urgency=medium 549 | 550 | * 1.2 release - add splash screen control; remove Rastrack 551 | 552 | -- Simon Long Thu, 13 Oct 2016 13:56:20 +0100 553 | 554 | rc-gui (1.1-1) jessie; urgency=medium 555 | 556 | * 1.1 release - adds support for RealVNC 557 | 558 | -- Simon Long Wed, 27 Jul 2016 14:06:15 +0100 559 | 560 | rc-gui (1.0-1) jessie; urgency=medium 561 | 562 | * 1.0 release 563 | 564 | -- Serge Schneider Fri, 27 May 2016 10:44:24 +0100 565 | 566 | rc-gui (0.9-1) jessie; urgency=medium 567 | 568 | * 0.9 release 569 | 570 | -- Serge Schneider Tue, 10 May 2016 21:47:50 +0100 571 | 572 | rc-gui (0.8-1) jessie; urgency=medium 573 | 574 | * 0.8 release 575 | 576 | -- Serge Schneider Mon, 25 Apr 2016 11:50:36 +0100 577 | 578 | rc-gui (0.7-1) jessie; urgency=medium 579 | 580 | * 0.7 release 581 | 582 | -- Serge Schneider Tue, 29 Mar 2016 10:22:33 +0100 583 | 584 | rc-gui (0.6-1) jessie; urgency=medium 585 | 586 | * 0.6 release 587 | 588 | -- Serge Schneider Thu, 25 Feb 2016 07:43:04 +0000 589 | 590 | rc-gui (0.5-1) jessie; urgency=medium 591 | 592 | * 0.5 release 593 | 594 | -- Serge Schneider Mon, 01 Feb 2016 12:35:08 +0000 595 | 596 | rc-gui (0.4-1) jessie; urgency=medium 597 | 598 | * 0.4 release 599 | * Remove upstreamed patches 600 | 601 | -- Serge Schneider Fri, 08 Jan 2016 13:16:55 +0000 602 | 603 | rc-gui (0.3-2) jessie; urgency=medium 604 | 605 | * Non thread-safe GTK+ calls removed to main thread 606 | * Result from timezone setting checked to see if a change was made 607 | 608 | -- Serge Schneider Mon, 16 Nov 2015 09:55:26 +0000 609 | 610 | rc-gui (0.3-1) jessie; urgency=low 611 | 612 | * Fix gbp.conf 613 | * Imported Upstream version 0.3 614 | * Remove libxml dependency 615 | * Use dh-autoreconf instead of autotools-dev 616 | 617 | -- Serge Schneider Tue, 10 Nov 2015 09:21:07 +0000 618 | 619 | rc-gui (0.2-1) jessie; urgency=low 620 | 621 | * 0.2 upstream release 622 | 623 | -- Serge Schneider Mon, 19 Oct 2015 14:44:26 +0100 624 | 625 | rc-gui (0.1-1) jessie; urgency=low 626 | 627 | * Initial release 628 | 629 | -- Serge Schneider Tue, 15 Sep 2015 09:01:25 +0100 630 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: rc-gui 2 | Section: admin 3 | Priority: optional 4 | Maintainer: Simon Long 5 | Build-Depends: debhelper-compat (= 13), meson, libgtk-3-dev (>= 3.24), intltool (>= 0.40.0) 6 | Standards-Version: 4.5.1 7 | Homepage: http://raspberrypi.com/ 8 | 9 | Package: rc-gui 10 | Architecture: any 11 | Depends: ${shlibs:Depends}, ${misc:Depends}, libgtk-3-0 (>= 3.24), raspi-config (>= 20250306), sudopwd 12 | Description: GUI for raspi-config 13 | Application which allows the configuration of Raspberry Pi system settings 14 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: rc-gui 3 | Source: https://github.com/RPi-Distro/rc_gui 4 | 5 | Files: * 6 | Copyright: 2014-2025 Raspberry Pi 7 | License: BSD-3-Clause 8 | 9 | License: BSD-3-Clause 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions 12 | are met: 13 | 1. Redistributions of source code must retain the above copyright 14 | notice, this list of conditions and the following disclaimer. 15 | 2. Redistributions in binary form must reproduce the above copyright 16 | notice, this list of conditions and the following disclaimer in the 17 | documentation and/or other materials provided with the distribution. 18 | 3. Neither the name of the University nor the names of its contributors 19 | may be used to endorse or promote products derived from this software 20 | without specific prior written permission. 21 | . 22 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HOLDERS OR 26 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 27 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 28 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 29 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 30 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 31 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 | -------------------------------------------------------------------------------- /debian/gbp.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | debian-branch=master 3 | upstream-branch=upstream 4 | pristine-tar=True 5 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | %: 4 | dh $@ 5 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /meson.build: -------------------------------------------------------------------------------- 1 | project ('rc_gui','c') 2 | 3 | build_standalone = true 4 | build_plugin = false 5 | plugin_name = 'rpcc_' + meson.project_name() 6 | 7 | share_dir = join_paths(get_option('prefix'), 'share') 8 | resource_dir = join_paths(share_dir, meson.project_name()) 9 | presource_dir = join_paths(share_dir, 'rpcc') 10 | ui_dir = join_paths(resource_dir, 'ui') 11 | pui_dir = join_paths(presource_dir, 'ui') 12 | desktop_dir = join_paths(share_dir, 'applications') 13 | 14 | i18n = import('i18n') 15 | 16 | add_project_arguments('-DPACKAGE_LOCALE_DIR="' + share_dir + '/locale"', language : 'c' ) 17 | add_project_link_arguments('-lcrypt', language : 'c' ) 18 | 19 | subdir('po') 20 | subdir('src') 21 | subdir('data') 22 | -------------------------------------------------------------------------------- /po/POTFILES.in: -------------------------------------------------------------------------------- 1 | [encoding: UTF-8] 2 | src/rc_gui.c 3 | src/display.c 4 | src/interface.c 5 | src/local.c 6 | src/perform.c 7 | src/system.c 8 | [type: gettext/glade] data/rc_gui.ui 9 | # files added by intltool-prepare 10 | data/rc_gui.desktop.in 11 | -------------------------------------------------------------------------------- /po/es.po: -------------------------------------------------------------------------------- 1 | # Raspberry Pi Configuration utility 2 | # Copyright (C) 2015 Raspberry Pi 3 | # This file is distributed under the same license as the rc_gui package. 4 | # Luis Hilario , 2016. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: PACKAGE VERSION\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-02-23 17:43+0000\n" 11 | "PO-Revision-Date: 2016-01-21 11:30-0400\n" 12 | "Last-Translator: Luis Hilario \n" 13 | "Language: es\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 18 | 19 | #: ../src/rc_gui.c:575 20 | msgid "Setting locale - please wait..." 21 | msgstr "Configurando localización - por favor espere..." 22 | 23 | #: ../src/rc_gui.c:735 24 | msgid "Setting timezone - please wait..." 25 | msgstr "Configurando zona horaria - por favor espere..." 26 | 27 | #: ../data/rc_gui.ui.h:1 ../data/rc_gui.desktop.in.h:1 28 | msgid "Raspberry Pi Configuration" 29 | msgstr "Configuración de Raspberry Pi" 30 | 31 | #: ../data/rc_gui.ui.h:2 32 | msgid "Filesystem:" 33 | msgstr "Sistema de archivo:" 34 | 35 | #: ../data/rc_gui.ui.h:3 36 | msgid "Expand _Filesystem" 37 | msgstr "Expandir _Sistema de archivo" 38 | 39 | #: ../data/rc_gui.ui.h:4 40 | msgid "Ensure that all of the SD card storage is available to the OS" 41 | msgstr "" 42 | "Asegure que toda la capacidad de almacenamiento de la tarjeta SD está " 43 | "disponible al S.O." 44 | 45 | #: ../data/rc_gui.ui.h:5 46 | msgid "Password:" 47 | msgstr "Clave:" 48 | 49 | #: ../data/rc_gui.ui.h:6 50 | msgid "Change _Password..." 51 | msgstr "Cambiar _Clave..." 52 | 53 | #: ../data/rc_gui.ui.h:7 54 | msgid "Change password for the default user (pi)" 55 | msgstr "Cambia la clave para el usuario por defecto (pi)" 56 | 57 | #: ../data/rc_gui.ui.h:8 58 | msgid "Hostname:" 59 | msgstr "Hostname:" 60 | 61 | #: ../data/rc_gui.ui.h:9 62 | msgid "Set the name of your Pi on a local network" 63 | msgstr "Seleccione el nombre de su Pi en la red local" 64 | 65 | #: ../data/rc_gui.ui.h:10 66 | msgid "Boot:" 67 | msgstr "Iniciar en:" 68 | 69 | #: ../data/rc_gui.ui.h:11 70 | msgid "To Desktop" 71 | msgstr "Escritorio" 72 | 73 | #: ../data/rc_gui.ui.h:12 74 | msgid "Launch the desktop environment automatically on boot" 75 | msgstr "Inicia el entorno de escritorio automáticamente después del arranque" 76 | 77 | #: ../data/rc_gui.ui.h:13 78 | msgid "To CLI" 79 | msgstr "Consola" 80 | 81 | #: ../data/rc_gui.ui.h:14 82 | msgid "Boot into a command line shell rather than the desktop" 83 | msgstr "Arranque en la línea de comandos en vez del escritorio" 84 | 85 | #: ../data/rc_gui.ui.h:15 86 | msgid "Auto login:" 87 | msgstr "Ingreso automático:" 88 | 89 | #: ../data/rc_gui.ui.h:16 90 | msgid "Login as user 'pi'" 91 | msgstr "Ingresar como usuario 'pi'" 92 | 93 | #: ../data/rc_gui.ui.h:17 94 | msgid "Automatically log in the default user (pi)" 95 | msgstr "Ingresar automáticamente con el usuario por defecto (pi)" 96 | 97 | #: ../data/rc_gui.ui.h:18 98 | msgid "Network at Boot:" 99 | msgstr "Red al inicial:" 100 | 101 | #: ../data/rc_gui.ui.h:19 102 | msgid "Wait for network" 103 | msgstr "Esperar red" 104 | 105 | #: ../data/rc_gui.ui.h:20 106 | msgid "Do not complete boot until network connection is established" 107 | msgstr "No complete el arranque hasta que la conexión de red esté establecida" 108 | 109 | #: ../data/rc_gui.ui.h:21 110 | msgid "Overscan:" 111 | msgstr "Overscan:" 112 | 113 | #: ../data/rc_gui.ui.h:22 114 | msgid "Enable" 115 | msgstr "Activo" 116 | 117 | #: ../data/rc_gui.ui.h:23 118 | msgid "Enable overscan to show the edges of the screen" 119 | msgstr "Activar overscan para mostrar los bordes de la pantalla" 120 | 121 | #: ../data/rc_gui.ui.h:24 122 | msgid "Disable" 123 | msgstr "Desactivado" 124 | 125 | #: ../data/rc_gui.ui.h:25 126 | msgid "Disable overscan to hide black outline on screen" 127 | msgstr "Desactivar overscan para ocultar contorno negro en la pantalla" 128 | 129 | #: ../data/rc_gui.ui.h:26 130 | msgid "Rastrack:" 131 | msgstr "Rastrack:" 132 | 133 | #: ../data/rc_gui.ui.h:27 134 | msgid "Add to _Rastrack..." 135 | msgstr "Añadir a _Rastrack..." 136 | 137 | #: ../data/rc_gui.ui.h:28 138 | msgid "Add this Pi to the online Raspberry Pi map" 139 | msgstr "Añadir este Pi al mapa en línea de Raspberry Pi" 140 | 141 | #: ../data/rc_gui.ui.h:29 142 | msgid "System" 143 | msgstr "Sistema" 144 | 145 | #: ../data/rc_gui.ui.h:30 146 | msgid "Camera:" 147 | msgstr "Cámara:" 148 | 149 | #: ../data/rc_gui.ui.h:31 150 | msgid "Enable the Raspberry Pi Camera Board" 151 | msgstr "Activar cámara de Raspberry Pi" 152 | 153 | #: ../data/rc_gui.ui.h:32 154 | msgid "Disable the Raspberry Pi Camera Board" 155 | msgstr "Desactivar cámara de Raspberry Pi" 156 | 157 | #: ../data/rc_gui.ui.h:33 158 | msgid "SSH:" 159 | msgstr "SSH:" 160 | 161 | #: ../data/rc_gui.ui.h:34 162 | msgid "Enable remote access to this Pi via SSH" 163 | msgstr "Activar acceso remoto a este Pi vía SSH" 164 | 165 | #: ../data/rc_gui.ui.h:35 166 | msgid "Disable remote access to this Pi via SSH" 167 | msgstr "Desactivar acceso remoto a este Pi vía SSH" 168 | 169 | #: ../data/rc_gui.ui.h:36 170 | msgid "SPI:" 171 | msgstr "SPI:" 172 | 173 | #: ../data/rc_gui.ui.h:37 174 | msgid "Enable the automatic loading of the SPI kernel module" 175 | msgstr "Activa la carga automática del módulo SPI del núcleo" 176 | 177 | #: ../data/rc_gui.ui.h:38 178 | msgid "Disable the automatic loading of the SPI kernel module" 179 | msgstr "Desactiva la carga automática del módulo SPI del núcleo" 180 | 181 | #: ../data/rc_gui.ui.h:39 182 | msgid "I2C:" 183 | msgstr "I2C:" 184 | 185 | #: ../data/rc_gui.ui.h:40 186 | msgid "Enable the automatic loading of the I2C kernel module" 187 | msgstr "Activa la carga automática del módulo I2C del núcleo" 188 | 189 | #: ../data/rc_gui.ui.h:41 190 | msgid "Disable the automatic loading of the I2C kernel module" 191 | msgstr "Desactiva la carga automática del módulo I2C del núcleo" 192 | 193 | #: ../data/rc_gui.ui.h:42 194 | msgid "Serial:" 195 | msgstr "Serial:" 196 | 197 | #: ../data/rc_gui.ui.h:43 198 | msgid "Enable shell and kernel messages on the serial connection" 199 | msgstr "Activa mensajes del shell y núcleo sobre la conexión serie" 200 | 201 | #: ../data/rc_gui.ui.h:44 202 | msgid "Disable shell and kernel messages on the serial connection" 203 | msgstr "Desactiva mensajes del shell y núcleo sobre la conexión serie" 204 | 205 | #: ../data/rc_gui.ui.h:45 206 | msgid "Interfaces" 207 | msgstr "Interfaces" 208 | 209 | #: ../data/rc_gui.ui.h:46 210 | msgid "O_verclock:" 211 | msgstr "Overclock:" 212 | 213 | #: ../data/rc_gui.ui.h:47 214 | msgid "Set the level of overclock to control performance" 215 | msgstr "Ajuste el nivel de overclock para controlar el rendimiento" 216 | 217 | #: ../data/rc_gui.ui.h:48 218 | msgid "None (700MHz)" 219 | msgstr "Nada (700MHz)" 220 | 221 | #: ../data/rc_gui.ui.h:49 222 | msgid "Modest (800MHz)" 223 | msgstr "Modesto (800MHz)" 224 | 225 | #: ../data/rc_gui.ui.h:50 226 | msgid "Medium (900MHz)" 227 | msgstr "Medio (900MHz)" 228 | 229 | #: ../data/rc_gui.ui.h:51 230 | msgid "High (950MHz)" 231 | msgstr "Alto (950MHz)" 232 | 233 | #: ../data/rc_gui.ui.h:52 234 | msgid "Turbo (1000MHz)" 235 | msgstr "Turbo (1000MHz)" 236 | 237 | #: ../data/rc_gui.ui.h:53 238 | msgid "None (900MHz)" 239 | msgstr "Nada (900MHz)" 240 | 241 | #: ../data/rc_gui.ui.h:54 242 | msgid "High (1000MHz)" 243 | msgstr "Alto (1000MHz)" 244 | 245 | #: ../data/rc_gui.ui.h:55 246 | msgid "Not available" 247 | msgstr "" 248 | 249 | #: ../data/rc_gui.ui.h:56 250 | msgid "_GPU Memory:" 251 | msgstr "Memoria _GPU:" 252 | 253 | #: ../data/rc_gui.ui.h:57 254 | msgid "Enter the amount of memory available to the GPU" 255 | msgstr "Entre la cantidad de memoria disponible a la GPU" 256 | 257 | #: ../data/rc_gui.ui.h:58 258 | msgid "Performance" 259 | msgstr "Rendimiento" 260 | 261 | #: ../data/rc_gui.ui.h:59 262 | msgid "Locale:" 263 | msgstr "Local:" 264 | 265 | #: ../data/rc_gui.ui.h:60 266 | msgid "Set _Locale..." 267 | msgstr "Configurar _Local..." 268 | 269 | #: ../data/rc_gui.ui.h:61 270 | msgid "Set internationalisation settings for units etc." 271 | msgstr "" 272 | "Ajuste las configuraciones de internacionalización para el idioma, unidades, " 273 | "etc." 274 | 275 | #: ../data/rc_gui.ui.h:62 276 | msgid "Timezone:" 277 | msgstr "Zona horaria:" 278 | 279 | #: ../data/rc_gui.ui.h:63 280 | msgid "Set _Timezone..." 281 | msgstr "Ajustar _Zona horaria..." 282 | 283 | #: ../data/rc_gui.ui.h:64 284 | msgid "Set the timezone to be used by the internal clock" 285 | msgstr "Configurar la zona horaria para ser usada por el reloj interno" 286 | 287 | #: ../data/rc_gui.ui.h:65 288 | msgid "Keyboard:" 289 | msgstr "Teclado:" 290 | 291 | #: ../data/rc_gui.ui.h:66 292 | msgid "Set _Keyboard..." 293 | msgstr "Configurar teclado..." 294 | 295 | #: ../data/rc_gui.ui.h:67 296 | msgid "Set international keyboard options" 297 | msgstr "Ajusta opciones internacionales del teclado" 298 | 299 | #: ../data/rc_gui.ui.h:68 300 | #, fuzzy 301 | msgid "WiFi Country:" 302 | msgstr "País:" 303 | 304 | #: ../data/rc_gui.ui.h:69 305 | #, fuzzy 306 | msgid "Set _WiFi Country..." 307 | msgstr "Ajustar _Zona horaria..." 308 | 309 | #: ../data/rc_gui.ui.h:70 310 | msgid "Set WiFi country code" 311 | msgstr "" 312 | 313 | #: ../data/rc_gui.ui.h:71 314 | msgid "Localisation" 315 | msgstr "Localización" 316 | 317 | #: ../data/rc_gui.ui.h:72 318 | msgid "" 319 | "The Raspberry Pi Configuration application can only modify a standard " 320 | "configuration.\n" 321 | "\n" 322 | "Your configuration appears to have been modified by other tools, and so this " 323 | "application cannot be used on your system.\n" 324 | "\n" 325 | "In order to use this application, you need to have the latest firmware " 326 | "installed, Device Tree enabled, the default \"pi\" user set up and the " 327 | "lightdm application installed. " 328 | msgstr "" 329 | "El programa de configuración de Raspberry Pi sólo puede modificar una " 330 | "configuración estándar.\n" 331 | "\n" 332 | "Su configuración aparenta haber sido modificada por otras herramientas y así " 333 | "este programa no puede ser usado sobre en su sistema.\n" 334 | "\n" 335 | "Para usar este programa usted necesita tener el último firmware instalado, " 336 | "el árbol de dispositivos activado, el usuario por defecto \"pi\" configurado " 337 | "y la aplicación lightdm instalada. " 338 | 339 | #: ../data/rc_gui.ui.h:77 340 | msgid "Filesystem Expanded" 341 | msgstr "Sistema de archivo expandido" 342 | 343 | #: ../data/rc_gui.ui.h:78 344 | msgid "" 345 | "The filesystem has been expanded.\n" 346 | "\n" 347 | "The new space will not be available until you reboot your Raspberry Pi." 348 | msgstr "" 349 | "El sistema de archivo ha sido expandido.\n" 350 | "\n" 351 | "El espacio nuevo no estará disponible hasta que reinicie su Raspberry Pi" 352 | 353 | #: ../data/rc_gui.ui.h:81 354 | msgid "Locale" 355 | msgstr "Local" 356 | 357 | #: ../data/rc_gui.ui.h:82 358 | msgid "Language:" 359 | msgstr "Idioma:" 360 | 361 | #: ../data/rc_gui.ui.h:83 362 | msgid "Country:" 363 | msgstr "País:" 364 | 365 | #: ../data/rc_gui.ui.h:84 366 | msgid "Character Set:" 367 | msgstr "Conjunto de caracteres:" 368 | 369 | #: ../data/rc_gui.ui.h:85 370 | msgid "Change Password" 371 | msgstr "Cambiar clave" 372 | 373 | #: ../data/rc_gui.ui.h:86 374 | msgid "Enter new password:" 375 | msgstr "Entre clave nueva:" 376 | 377 | #: ../data/rc_gui.ui.h:87 378 | msgid "Confirm new password:" 379 | msgstr "Confirme clave nueva:" 380 | 381 | #: ../data/rc_gui.ui.h:88 382 | msgid "Rastrack Registration" 383 | msgstr "Registro en Rastrack" 384 | 385 | #: ../data/rc_gui.ui.h:89 386 | msgid "" 387 | "Rastrack (http://www.rastrack.co.uk) is a website which tracks the location " 388 | "of Raspberry Pis around the world. If you would like to be added to it, " 389 | "enter your name and email address below.\n" 390 | "\n" 391 | "This is entirely optional and does not form an official registration " 392 | "process.\n" 393 | msgstr "" 394 | "Rastrack (http://www.rastrack.co.uk) es un website que sigue la pista de la " 395 | "localización de los Raspberry Pi por todo el mundo. Si a usted le gustaría " 396 | "ser añadido, entre su nombre y correo electrónico más abajo.\n" 397 | "\n" 398 | "Esto es totalmente opcional y no forma parte de un proceso de registro " 399 | "oficial.\n" 400 | 401 | #: ../data/rc_gui.ui.h:93 402 | msgid "Username:" 403 | msgstr "Nombre de usuario:" 404 | 405 | #: ../data/rc_gui.ui.h:94 406 | msgid "Email Address:" 407 | msgstr "Email:" 408 | 409 | #: ../data/rc_gui.ui.h:95 410 | msgid "Reboot needed" 411 | msgstr "Reinicio necesario" 412 | 413 | #: ../data/rc_gui.ui.h:96 414 | msgid "" 415 | "The changes you have made require the Raspberry Pi to be rebooted to take " 416 | "effect.\n" 417 | "\n" 418 | "Would you like to reboot now? " 419 | msgstr "" 420 | "Los cambios realizados requieren que el Raspberry Pi reinicie, para que " 421 | "tengan efecto.\n" 422 | "\n" 423 | "Desea reiniciar ahora? " 424 | 425 | #: ../data/rc_gui.ui.h:99 426 | msgid "Timezone" 427 | msgstr "Zona horaria" 428 | 429 | #: ../data/rc_gui.ui.h:100 430 | msgid "Area:" 431 | msgstr "Área:" 432 | 433 | #: ../data/rc_gui.ui.h:101 434 | msgid "Location:" 435 | msgstr "Localización:" 436 | 437 | #: ../data/rc_gui.ui.h:102 438 | msgid "WiFi Country Code" 439 | msgstr "" 440 | 441 | #: ../data/rc_gui.desktop.in.h:2 442 | msgid "Configure Raspberry Pi system" 443 | msgstr "Configuración de Raspberry Pi" 444 | -------------------------------------------------------------------------------- /po/fr.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: PACKAGE VERSION\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2016-03-16 12:42+0000\n" 6 | "PO-Revision-Date: Wed Mar 16 2016 14:12:27 GMT+0100 (Paris, Madrid)\n" 7 | "Last-Translator: Louis Desplanche \n" 8 | "Language-Team: \n" 9 | "Language: French\n" 10 | "Plural-Forms: nplurals=2; plural=n > 1\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "X-Poedit-SourceCharset: UTF-8\n" 15 | "X-Loco-Source-Locale: fr_FR\n" 16 | "X-Loco-Parser: loco_parse_po\n" 17 | "X-Loco-Target-Locale: fr\n" 18 | "X-Generator: Loco - https://localise.biz/" 19 | 20 | #: ../src/rc_gui.c:575 21 | msgid "Setting locale - please wait..." 22 | msgstr "Configuration de la localisation - Merci de patienter..." 23 | 24 | #: ../src/rc_gui.c:735 25 | msgid "Setting timezone - please wait..." 26 | msgstr "Configuration du fuseau horaire - Merci de patienter..." 27 | 28 | #: ../data/rc_gui.ui.h:1 ../data/rc_gui.desktop.in.h:1 29 | msgid "Raspberry Pi Configuration" 30 | msgstr "Configuration du Raspberry Pi " 31 | 32 | #: ../data/rc_gui.ui.h:2 33 | msgid "Filesystem:" 34 | msgstr "Système de fichier:" 35 | 36 | #: ../data/rc_gui.ui.h:3 37 | msgid "Expand _Filesystem" 38 | msgstr "Étendre le système de fichier" 39 | 40 | #: ../data/rc_gui.ui.h:4 41 | msgid "Ensure that all of the SD card storage is available to the OS" 42 | msgstr "Assurez-vous que tout le stockage de la carte SD est disponible à l'OS" 43 | 44 | #: ../data/rc_gui.ui.h:5 45 | msgid "Password:" 46 | msgstr "Mot de passe:" 47 | 48 | #: ../data/rc_gui.ui.h:6 49 | msgid "Change _Password..." 50 | msgstr "Changer de _Mot de passe..." 51 | 52 | #: ../data/rc_gui.ui.h:7 53 | msgid "Change password for the default user (pi)" 54 | msgstr "Changer le mot de passe de l'utilisateur par défaut (pi)" 55 | 56 | #: ../data/rc_gui.ui.h:8 57 | msgid "Hostname:" 58 | msgstr "Hostname:" 59 | 60 | #: ../data/rc_gui.ui.h:9 61 | msgid "Set the name of your Pi on a local network" 62 | msgstr "Définir le nom du votre Pi sur votre réseau local" 63 | 64 | #: ../data/rc_gui.ui.h:10 65 | msgid "Boot:" 66 | msgstr "Boot:" 67 | 68 | #: ../data/rc_gui.ui.h:11 69 | msgid "To Desktop" 70 | msgstr "Vers le Bureau" 71 | 72 | #: ../data/rc_gui.ui.h:12 73 | msgid "Launch the desktop environment automatically on boot" 74 | msgstr "Lancer automatiquement l'environnement de bureau au démarrage" 75 | 76 | #: ../data/rc_gui.ui.h:13 77 | msgid "To CLI" 78 | msgstr "Vers la Console" 79 | 80 | #: ../data/rc_gui.ui.h:14 81 | msgid "Boot into a command line shell rather than the desktop" 82 | msgstr "Booter dans la console plutôt que dans le bureau" 83 | 84 | #: ../data/rc_gui.ui.h:15 85 | msgid "Auto login:" 86 | msgstr "Connexion automatique:" 87 | 88 | #: ../data/rc_gui.ui.h:16 89 | msgid "Login as user 'pi'" 90 | msgstr "Se connecter en tant que 'pi'" 91 | 92 | #: ../data/rc_gui.ui.h:17 93 | msgid "Automatically log in the default user (pi)" 94 | msgstr "Se connecter automatiquement en tant qu’utilisateur par défaut (pi)" 95 | 96 | #: ../data/rc_gui.ui.h:18 97 | msgid "Network at Boot:" 98 | msgstr "Network at Boot:" 99 | 100 | #: ../data/rc_gui.ui.h:19 101 | msgid "Wait for network" 102 | msgstr "Attendre la connexion internet" 103 | 104 | #: ../data/rc_gui.ui.h:20 105 | msgid "Do not complete boot until network connection is established" 106 | msgstr "Ne pas compléter le démarrage tant que la connexion réseau n'est pas établie" 107 | 108 | #: ../data/rc_gui.ui.h:21 109 | msgid "Overscan:" 110 | msgstr "Overscan:" 111 | 112 | #: ../data/rc_gui.ui.h:22 113 | msgid "Enable" 114 | msgstr "Activé" 115 | 116 | #: ../data/rc_gui.ui.h:23 117 | msgid "Enable overscan to show the edges of the screen" 118 | msgstr "Activer l'overscan pour afficher les bords de l'écran" 119 | 120 | #: ../data/rc_gui.ui.h:24 121 | msgid "Disable" 122 | msgstr "Désactivé" 123 | 124 | #: ../data/rc_gui.ui.h:25 125 | msgid "Disable overscan to hide black outline on screen" 126 | msgstr "Désactiver l'overscan pour masquer les contours noirs de l'écran" 127 | 128 | #: ../data/rc_gui.ui.h:26 129 | msgid "Rastrack:" 130 | msgstr "Rastrack:" 131 | 132 | #: ../data/rc_gui.ui.h:27 133 | msgid "Add to _Rastrack..." 134 | msgstr "Ajouter à _Rastrack..." 135 | 136 | #: ../data/rc_gui.ui.h:28 137 | msgid "Add this Pi to the online Raspberry Pi map" 138 | msgstr "Ajouter ce Pi à la carte en ligne Raspberry Pi" 139 | 140 | #: ../data/rc_gui.ui.h:29 141 | msgid "System" 142 | msgstr "Système" 143 | 144 | #: ../data/rc_gui.ui.h:30 145 | msgid "Camera:" 146 | msgstr "Caméra:" 147 | 148 | #: ../data/rc_gui.ui.h:31 149 | msgid "Enable the Raspberry Pi Camera Board" 150 | msgstr "Activer la Caméra Raspberry Pi" 151 | 152 | #: ../data/rc_gui.ui.h:32 153 | msgid "Disable the Raspberry Pi Camera Board" 154 | msgstr "Désactiver la Caméra Raspberry Pi" 155 | 156 | #: ../data/rc_gui.ui.h:33 157 | msgid "SSH:" 158 | msgstr "SSH:" 159 | 160 | #: ../data/rc_gui.ui.h:34 161 | msgid "Enable remote access to this Pi via SSH" 162 | msgstr "Activer le point d’accès à distance vers le Pi par le biais de SSH" 163 | 164 | #: ../data/rc_gui.ui.h:35 165 | msgid "Disable remote access to this Pi via SSH" 166 | msgstr "Désactiver le point d’accès à distance vers le Pi par le biais de SSH" 167 | 168 | #: ../data/rc_gui.ui.h:36 169 | msgid "SPI:" 170 | msgstr "SPI:" 171 | 172 | #: ../data/rc_gui.ui.h:37 173 | msgid "Enable the automatic loading of the SPI kernel module" 174 | msgstr "Activer le chargement automatique du module noyau SPI" 175 | 176 | #: ../data/rc_gui.ui.h:38 177 | msgid "Disable the automatic loading of the SPI kernel module" 178 | msgstr "Désactiver le chargement automatique du module noyau SPI" 179 | 180 | #: ../data/rc_gui.ui.h:39 181 | msgid "I2C:" 182 | msgstr "I2C:" 183 | 184 | #: ../data/rc_gui.ui.h:40 185 | msgid "Enable the automatic loading of the I2C kernel module" 186 | msgstr "Activer le chargement automatique du module noyau I2C" 187 | 188 | #: ../data/rc_gui.ui.h:41 189 | msgid "Disable the automatic loading of the I2C kernel module" 190 | msgstr "Désactiver le chargement automatique du module noyau I2C" 191 | 192 | #: ../data/rc_gui.ui.h:42 193 | msgid "Serial:" 194 | msgstr "Série:" 195 | 196 | # kernel can be translated by "noyau". But french developers call them "kernel" 197 | #: ../data/rc_gui.ui.h:43 198 | msgid "Enable shell and kernel messages on the serial connection" 199 | msgstr "Activer les messages du shell et du kernel sur les connexions séries" 200 | 201 | #: ../data/rc_gui.ui.h:44 202 | msgid "Disable shell and kernel messages on the serial connection" 203 | msgstr "Désactiver les messages du shell et du kernel sur les connexions séries" 204 | 205 | #: ../data/rc_gui.ui.h:45 206 | msgid "Interfaces" 207 | msgstr "Interfaces" 208 | 209 | #: ../data/rc_gui.ui.h:46 210 | msgid "O_verclock:" 211 | msgstr "Overclock:" 212 | 213 | #: ../data/rc_gui.ui.h:47 214 | msgid "Set the level of overclock to control performance" 215 | msgstr "Définir le niveau d'overclock pour contrôler les performances" 216 | 217 | #: ../data/rc_gui.ui.h:48 218 | msgid "None (700MHz)" 219 | msgstr "Aucun (700MHz)" 220 | 221 | #: ../data/rc_gui.ui.h:49 222 | msgid "Modest (800MHz)" 223 | msgstr "Faible (800MHz)" 224 | 225 | #: ../data/rc_gui.ui.h:50 226 | msgid "Medium (900MHz)" 227 | msgstr "Moyen (900MHz)" 228 | 229 | #: ../data/rc_gui.ui.h:51 230 | msgid "High (950MHz)" 231 | msgstr "Élevé (950MHz)" 232 | 233 | #: ../data/rc_gui.ui.h:52 234 | msgid "Turbo (1000MHz)" 235 | msgstr "Turbo (1000MHz)" 236 | 237 | #: ../data/rc_gui.ui.h:53 238 | msgid "None (900MHz)" 239 | msgstr "Aucun (900MHz)" 240 | 241 | #: ../data/rc_gui.ui.h:54 242 | msgid "High (1000MHz)" 243 | msgstr "Élevé (1000MHz)" 244 | 245 | #: ../data/rc_gui.ui.h:55 246 | msgid "Not available" 247 | msgstr "Indisponible" 248 | 249 | #: ../data/rc_gui.ui.h:56 250 | msgid "_GPU Memory:" 251 | msgstr "Mémoire du GPU (Mo):" 252 | 253 | #: ../data/rc_gui.ui.h:57 254 | msgid "Enter the amount of memory available to the GPU" 255 | msgstr "Entrez la valeur de la mémoire allouée par le GPU" 256 | 257 | #: ../data/rc_gui.ui.h:58 258 | msgid "Performance" 259 | msgstr "Performance" 260 | 261 | #: ../data/rc_gui.ui.h:59 262 | msgid "Locale:" 263 | msgstr "Localisation:" 264 | 265 | #: ../data/rc_gui.ui.h:60 266 | msgid "Set _Locale..." 267 | msgstr "Définir la _localisation..." 268 | 269 | #: ../data/rc_gui.ui.h:61 270 | msgid "Set internationalisation settings for units etc." 271 | msgstr "Définir les paramètres internationaux pour les unités, etc." 272 | 273 | #: ../data/rc_gui.ui.h:62 274 | msgid "Timezone:" 275 | msgstr "Fuseau Horaire:" 276 | 277 | #: ../data/rc_gui.ui.h:63 278 | msgid "Set _Timezone..." 279 | msgstr "Définir le _fuseau horaire..." 280 | 281 | #: ../data/rc_gui.ui.h:64 282 | msgid "Set the timezone to be used by the internal clock" 283 | msgstr "Définir le fuseau horaire à utiliser par l'horloge interne" 284 | 285 | #: ../data/rc_gui.ui.h:65 286 | msgid "Keyboard:" 287 | msgstr "Clavier:" 288 | 289 | #: ../data/rc_gui.ui.h:66 290 | msgid "Set _Keyboard..." 291 | msgstr "Définir le _clavier..." 292 | 293 | #: ../data/rc_gui.ui.h:67 294 | msgid "Set international keyboard options" 295 | msgstr "Définir les paramètres du clavier" 296 | 297 | #: ../data/rc_gui.ui.h:68 298 | msgid "WiFi Country:" 299 | msgstr "Région du WiFi:" 300 | 301 | #: ../data/rc_gui.ui.h:69 302 | msgid "Set _WiFi Country..." 303 | msgstr "Définir le pays du _WiFi..." 304 | 305 | #: ../data/rc_gui.ui.h:70 306 | msgid "Set WiFi country code" 307 | msgstr "Définir le code de pays WiFi" 308 | 309 | #: ../data/rc_gui.ui.h:71 310 | msgid "Localisation" 311 | msgstr "Localisation" 312 | 313 | #: ../data/rc_gui.ui.h:72 314 | msgid "" 315 | "The Raspberry Pi Configuration application can only modify a standard " 316 | "configuration.\n" 317 | "\n" 318 | "Your configuration appears to have been modified by other tools, and so this " 319 | "application cannot be used on your system.\n" 320 | "\n" 321 | "In order to use this application, you need to have the latest firmware " 322 | "installed, Device Tree enabled, the default \"pi\" user set up and the lightdm " 323 | "application installed. " 324 | msgstr "" 325 | "L'application de Configuration du Raspberry Pi ne peut modifier qu'une " 326 | "configuration standard.\n" 327 | "\n" 328 | "Votre configuration semble avoir été modifiée par d'autres outils, et cette " 329 | "application ne peut donc pas être utilisée sur votre système.\n" 330 | "\n" 331 | "Pour utiliser cette application, vous devez installer le dernier firmware, " 332 | "activer Device Tree, configurer par défaut l'utilisateur \"pi\" et installer " 333 | "l'application lightdm." 334 | 335 | #: ../data/rc_gui.ui.h:77 336 | msgid "Filesystem Expanded" 337 | msgstr "Système de Fichier étendu " 338 | 339 | #: ../data/rc_gui.ui.h:78 340 | msgid "" 341 | "The filesystem has been expanded.\n" 342 | "\n" 343 | "The new space will not be available until you reboot your Raspberry Pi." 344 | msgstr "" 345 | "Système de Fichier a été étendu.\n" 346 | "\n" 347 | "Le nouvel espace ne sera pas disponible avant le prochain redémarrage." 348 | 349 | #: ../data/rc_gui.ui.h:81 350 | msgid "Locale" 351 | msgstr "Localisation" 352 | 353 | #: ../data/rc_gui.ui.h:82 354 | msgid "Language:" 355 | msgstr "Langue:" 356 | 357 | #: ../data/rc_gui.ui.h:83 358 | msgid "Country:" 359 | msgstr "Pays:" 360 | 361 | #: ../data/rc_gui.ui.h:84 362 | msgid "Character Set:" 363 | msgstr "Jeu de caractères:" 364 | 365 | #: ../data/rc_gui.ui.h:85 366 | msgid "Change Password" 367 | msgstr "Changer le Mot de Passe" 368 | 369 | #: ../data/rc_gui.ui.h:86 370 | msgid "Enter new password:" 371 | msgstr "Entrez un nouveau mot de passe" 372 | 373 | #: ../data/rc_gui.ui.h:87 374 | msgid "Confirm new password:" 375 | msgstr "Confirmer le nouveau mot de passe" 376 | 377 | #: ../data/rc_gui.ui.h:88 378 | msgid "Rastrack Registration" 379 | msgstr "Inscription à Rastrack" 380 | 381 | #: ../data/rc_gui.ui.h:89 382 | msgid "" 383 | "Rastrack (http://www.rastrack.co.uk) is a website which tracks the location " 384 | "of Raspberry Pis around the world. If you would like to be added to it, " 385 | "enter your name and email address below.\n" 386 | "\n" 387 | "This is entirely optional and does not form an official registration process." 388 | "\n" 389 | msgstr "" 390 | "Rastrack (http://www.rastrack.co.uk) is a website which tracks the location " 391 | "of Raspberry Pis around the world. If you would like to be added to it, " 392 | "enter your name and email address below.\n" 393 | "\n" 394 | "This is entirely optional and does not form an official registration process." 395 | "\n" 396 | 397 | #: ../data/rc_gui.ui.h:93 398 | msgid "Username:" 399 | msgstr "Nom d'utilisateur:" 400 | 401 | #: ../data/rc_gui.ui.h:94 402 | msgid "Email Address:" 403 | msgstr "Adresse E-Mail:" 404 | 405 | #: ../data/rc_gui.ui.h:95 406 | msgid "Reboot needed" 407 | msgstr "Redémarrage requis" 408 | 409 | #: ../data/rc_gui.ui.h:96 410 | msgid "" 411 | "The changes you have made require the Raspberry Pi to be rebooted to take " 412 | "effect.\n" 413 | "\n" 414 | "Would you like to reboot now? " 415 | msgstr "" 416 | "Les changements que vous avez faits sur votre Raspberry Pi requièrent un " 417 | "redémarrage pour être opérationnels.\n" 418 | "\n" 419 | "Voulez-vous redémarrer maintenant ?" 420 | 421 | #: ../data/rc_gui.ui.h:99 422 | msgid "Timezone" 423 | msgstr "Fuseau horaire" 424 | 425 | #: ../data/rc_gui.ui.h:100 426 | msgid "Area:" 427 | msgstr "Région:" 428 | 429 | #: ../data/rc_gui.ui.h:101 430 | msgid "Location:" 431 | msgstr "Emplacement:" 432 | 433 | #: ../data/rc_gui.ui.h:102 434 | msgid "WiFi Country Code" 435 | msgstr "Code de région WiFi" 436 | 437 | #: ../data/rc_gui.desktop.in.h:2 438 | msgid "Configure Raspberry Pi system" 439 | msgstr "Configurer le système du Raspberry Pi" 440 | -------------------------------------------------------------------------------- /po/id_ID.po: -------------------------------------------------------------------------------- 1 | # Raspberry Pi Configuration utility 2 | # Copyright (C) 2015 Raspberry Pi 3 | # This file is distributed under the same license as the rc_gui package. 4 | # Rizky Luthfianto , 2015. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: \n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-02-23 17:43+0000\n" 11 | "PO-Revision-Date: 2015-10-04 18:51+0700\n" 12 | "Last-Translator: Rizky Luthfianto \n" 13 | "Language-Team: Rizky Luthfianto \n" 14 | "Language: id_ID\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | 19 | #: ../src/rc_gui.c:575 20 | msgid "Setting locale - please wait..." 21 | msgstr "Pengaturan lokal - mohon tunggu..." 22 | 23 | #: ../src/rc_gui.c:735 24 | msgid "Setting timezone - please wait..." 25 | msgstr "Pengaturan zona waktu - mohon tunggu..." 26 | 27 | #: ../data/rc_gui.ui.h:1 ../data/rc_gui.desktop.in.h:1 28 | msgid "Raspberry Pi Configuration" 29 | msgstr "Konfigurasi Raspberry Pi" 30 | 31 | #: ../data/rc_gui.ui.h:2 32 | msgid "Filesystem:" 33 | msgstr "Filesystem:" 34 | 35 | #: ../data/rc_gui.ui.h:3 36 | msgid "Expand _Filesystem" 37 | msgstr "Perluas _Filesystem" 38 | 39 | #: ../data/rc_gui.ui.h:4 40 | msgid "Ensure that all of the SD card storage is available to the OS" 41 | msgstr "Pastikan seruh ruang penyimpanan kartu SD tersedia untuk OS" 42 | 43 | #: ../data/rc_gui.ui.h:5 44 | msgid "Password:" 45 | msgstr "Password:" 46 | 47 | #: ../data/rc_gui.ui.h:6 48 | msgid "Change _Password..." 49 | msgstr "Ubah _Password..." 50 | 51 | #: ../data/rc_gui.ui.h:7 52 | msgid "Change password for the default user (pi)" 53 | msgstr "Ubah password untuk pengguna default (pi)" 54 | 55 | #: ../data/rc_gui.ui.h:8 56 | msgid "Hostname:" 57 | msgstr "Hostname:" 58 | 59 | #: ../data/rc_gui.ui.h:9 60 | msgid "Set the name of your Pi on a local network" 61 | msgstr "Set nama Pi Anda pada jaringan lokal" 62 | 63 | #: ../data/rc_gui.ui.h:10 64 | msgid "Boot:" 65 | msgstr "Boot:" 66 | 67 | #: ../data/rc_gui.ui.h:11 68 | msgid "To Desktop" 69 | msgstr "Ke Desktop" 70 | 71 | #: ../data/rc_gui.ui.h:12 72 | msgid "Launch the desktop environment automatically on boot" 73 | msgstr "Otomatis jalankan desktop setiap boot" 74 | 75 | #: ../data/rc_gui.ui.h:13 76 | msgid "To CLI" 77 | msgstr "Ke CLI" 78 | 79 | #: ../data/rc_gui.ui.h:14 80 | msgid "Boot into a command line shell rather than the desktop" 81 | msgstr "Boot ke shell baris perintah daripada desktop" 82 | 83 | #: ../data/rc_gui.ui.h:15 84 | msgid "Auto login:" 85 | msgstr "Auto Login:" 86 | 87 | #: ../data/rc_gui.ui.h:16 88 | msgid "Login as user 'pi'" 89 | msgstr "Login sebagai user 'pi'" 90 | 91 | #: ../data/rc_gui.ui.h:17 92 | msgid "Automatically log in the default user (pi)" 93 | msgstr "Secara otomatis login pengguna default (pi)" 94 | 95 | #: ../data/rc_gui.ui.h:18 96 | msgid "Network at Boot:" 97 | msgstr "" 98 | 99 | #: ../data/rc_gui.ui.h:19 100 | msgid "Wait for network" 101 | msgstr "" 102 | 103 | #: ../data/rc_gui.ui.h:20 104 | msgid "Do not complete boot until network connection is established" 105 | msgstr "" 106 | 107 | #: ../data/rc_gui.ui.h:21 108 | msgid "Overscan:" 109 | msgstr "Overscan:" 110 | 111 | #: ../data/rc_gui.ui.h:22 112 | msgid "Enable" 113 | msgstr "Aktif" 114 | 115 | #: ../data/rc_gui.ui.h:23 116 | msgid "Enable overscan to show the edges of the screen" 117 | msgstr "Aktifkan overscan untuk menunjukkan tepi layar" 118 | 119 | #: ../data/rc_gui.ui.h:24 120 | msgid "Disable" 121 | msgstr "Nonaktif" 122 | 123 | #: ../data/rc_gui.ui.h:25 124 | msgid "Disable overscan to hide black outline on screen" 125 | msgstr "Nonaktifkan overscan untuk menyembunyikan garis hitam pada layar" 126 | 127 | #: ../data/rc_gui.ui.h:26 128 | msgid "Rastrack:" 129 | msgstr "Rastrack:" 130 | 131 | #: ../data/rc_gui.ui.h:27 132 | msgid "Add to _Rastrack..." 133 | msgstr "Tambahkan ke _Rastrack..." 134 | 135 | #: ../data/rc_gui.ui.h:28 136 | msgid "Add this Pi to the online Raspberry Pi map" 137 | msgstr "Tambahkan Pi ini ke peta daring Raspberry Pi" 138 | 139 | #: ../data/rc_gui.ui.h:29 140 | msgid "System" 141 | msgstr "Sistem" 142 | 143 | #: ../data/rc_gui.ui.h:30 144 | msgid "Camera:" 145 | msgstr "Kamera:" 146 | 147 | #: ../data/rc_gui.ui.h:31 148 | msgid "Enable the Raspberry Pi Camera Board" 149 | msgstr "Aktifkan papan kamera Raspberry Pi" 150 | 151 | #: ../data/rc_gui.ui.h:32 152 | msgid "Disable the Raspberry Pi Camera Board" 153 | msgstr "Nonaktifkan papan kamera Raspberry Pi" 154 | 155 | #: ../data/rc_gui.ui.h:33 156 | msgid "SSH:" 157 | msgstr "SSH:" 158 | 159 | #: ../data/rc_gui.ui.h:34 160 | msgid "Enable remote access to this Pi via SSH" 161 | msgstr "Aktifkan akses remote ke Pi ini melalui SSH" 162 | 163 | #: ../data/rc_gui.ui.h:35 164 | msgid "Disable remote access to this Pi via SSH" 165 | msgstr "Nonaktifkan akses remote ke Pi ini melalui SSH" 166 | 167 | #: ../data/rc_gui.ui.h:36 168 | msgid "SPI:" 169 | msgstr "SPI:" 170 | 171 | #: ../data/rc_gui.ui.h:37 172 | msgid "Enable the automatic loading of the SPI kernel module" 173 | msgstr "Aktifkan pemuatan otomatis modul kernel SPI" 174 | 175 | #: ../data/rc_gui.ui.h:38 176 | msgid "Disable the automatic loading of the SPI kernel module" 177 | msgstr "Nonaktifkan pemuatan otomatis modul kernel SPI" 178 | 179 | #: ../data/rc_gui.ui.h:39 180 | msgid "I2C:" 181 | msgstr "I2C:" 182 | 183 | #: ../data/rc_gui.ui.h:40 184 | msgid "Enable the automatic loading of the I2C kernel module" 185 | msgstr "Aktifkan pemuatan otomatis modul kernel I2C" 186 | 187 | #: ../data/rc_gui.ui.h:41 188 | msgid "Disable the automatic loading of the I2C kernel module" 189 | msgstr "Nonaktifkan pemuatan otomatis modul kernel I2C" 190 | 191 | #: ../data/rc_gui.ui.h:42 192 | msgid "Serial:" 193 | msgstr "Serial:" 194 | 195 | #: ../data/rc_gui.ui.h:43 196 | msgid "Enable shell and kernel messages on the serial connection" 197 | msgstr "Aktifkan shell dan kernel pesan pada koneksi serial" 198 | 199 | #: ../data/rc_gui.ui.h:44 200 | msgid "Disable shell and kernel messages on the serial connection" 201 | msgstr "Nonaktifkan shell dan kernel pesan pada koneksi serial" 202 | 203 | #: ../data/rc_gui.ui.h:45 204 | msgid "Interfaces" 205 | msgstr "Antarmuka" 206 | 207 | #: ../data/rc_gui.ui.h:46 208 | msgid "O_verclock:" 209 | msgstr "Overclock:" 210 | 211 | #: ../data/rc_gui.ui.h:47 212 | msgid "Set the level of overclock to control performance" 213 | msgstr "Mengatur tingkat overclock untuk mengontrol kinerja" 214 | 215 | #: ../data/rc_gui.ui.h:48 216 | msgid "None (700MHz)" 217 | msgstr "Tidak ada (700MHz)" 218 | 219 | #: ../data/rc_gui.ui.h:49 220 | msgid "Modest (800MHz)" 221 | msgstr "Sedikit (800MHz)" 222 | 223 | #: ../data/rc_gui.ui.h:50 224 | msgid "Medium (900MHz)" 225 | msgstr "Sedang (900MHz)" 226 | 227 | #: ../data/rc_gui.ui.h:51 228 | msgid "High (950MHz)" 229 | msgstr "Tinggi (950MHz)" 230 | 231 | #: ../data/rc_gui.ui.h:52 232 | msgid "Turbo (1000MHz)" 233 | msgstr "Turbo (1000MHz)" 234 | 235 | #: ../data/rc_gui.ui.h:53 236 | msgid "None (900MHz)" 237 | msgstr "Tidak ada (900MHz)" 238 | 239 | #: ../data/rc_gui.ui.h:54 240 | msgid "High (1000MHz)" 241 | msgstr "Tinggi (1000MHz)" 242 | 243 | #: ../data/rc_gui.ui.h:55 244 | msgid "Not available" 245 | msgstr "" 246 | 247 | #: ../data/rc_gui.ui.h:56 248 | msgid "_GPU Memory:" 249 | msgstr "Memori GPU:" 250 | 251 | #: ../data/rc_gui.ui.h:57 252 | msgid "Enter the amount of memory available to the GPU" 253 | msgstr "Masukkan jumlah memori yang tersedia untuk GPU" 254 | 255 | #: ../data/rc_gui.ui.h:58 256 | msgid "Performance" 257 | msgstr "Performa" 258 | 259 | #: ../data/rc_gui.ui.h:59 260 | msgid "Locale:" 261 | msgstr "Lokal:" 262 | 263 | #: ../data/rc_gui.ui.h:60 264 | msgid "Set _Locale..." 265 | msgstr "Atur _Lokal..." 266 | 267 | #: ../data/rc_gui.ui.h:61 268 | msgid "Set internationalisation settings for units etc." 269 | msgstr "Atur pengaturan internasionalisasi bahasa, unit, dll" 270 | 271 | #: ../data/rc_gui.ui.h:62 272 | msgid "Timezone:" 273 | msgstr "Zona waktu:" 274 | 275 | #: ../data/rc_gui.ui.h:63 276 | msgid "Set _Timezone..." 277 | msgstr "Set zona wak_tu..." 278 | 279 | #: ../data/rc_gui.ui.h:64 280 | msgid "Set the timezone to be used by the internal clock" 281 | msgstr "Set zona waktu yang akan digunakan oleh jam internal" 282 | 283 | #: ../data/rc_gui.ui.h:65 284 | msgid "Keyboard:" 285 | msgstr "Keyboard:" 286 | 287 | #: ../data/rc_gui.ui.h:66 288 | msgid "Set _Keyboard..." 289 | msgstr "Set _Keyboard..." 290 | 291 | #: ../data/rc_gui.ui.h:67 292 | msgid "Set international keyboard options" 293 | msgstr "Set pilihan keyboard internasional" 294 | 295 | #: ../data/rc_gui.ui.h:68 296 | #, fuzzy 297 | msgid "WiFi Country:" 298 | msgstr "Negara:" 299 | 300 | #: ../data/rc_gui.ui.h:69 301 | #, fuzzy 302 | msgid "Set _WiFi Country..." 303 | msgstr "Set zona wak_tu..." 304 | 305 | #: ../data/rc_gui.ui.h:70 306 | msgid "Set WiFi country code" 307 | msgstr "" 308 | 309 | #: ../data/rc_gui.ui.h:71 310 | msgid "Localisation" 311 | msgstr "Lokalisasi" 312 | 313 | #: ../data/rc_gui.ui.h:72 314 | msgid "" 315 | "The Raspberry Pi Configuration application can only modify a standard " 316 | "configuration.\n" 317 | "\n" 318 | "Your configuration appears to have been modified by other tools, and so this " 319 | "application cannot be used on your system.\n" 320 | "\n" 321 | "In order to use this application, you need to have the latest firmware " 322 | "installed, Device Tree enabled, the default \"pi\" user set up and the " 323 | "lightdm application installed. " 324 | msgstr "" 325 | "Aplikasi Raspberry Pi Konfigurasi hanya dapat memodifikasi " 326 | "standarkonfigurasi.\n" 327 | "\n" 328 | "Konfigurasi Anda tampaknya telah dimodifikasi oleh alat-alat lain, " 329 | "sehinggaaplikasi tidak dapat digunakan pada sistem Anda.\n" 330 | "\n" 331 | "Untuk menggunakan aplikasi ini, Anda harus memiliki firmware " 332 | "terbaruterinstal, Device Tree diaktifkan, default \"pi\" pengguna mengatur " 333 | "danaplikasi LightDM diinstal." 334 | 335 | #: ../data/rc_gui.ui.h:77 336 | msgid "Filesystem Expanded" 337 | msgstr "Filesystem diperluas" 338 | 339 | #: ../data/rc_gui.ui.h:78 340 | msgid "" 341 | "The filesystem has been expanded.\n" 342 | "\n" 343 | "The new space will not be available until you reboot your Raspberry Pi." 344 | msgstr "" 345 | "Filesystem telah diperluas.\n" 346 | "\n" 347 | "Ruang baru tidak akan tersedia sampai Anda restart Raspberry Pi." 348 | 349 | #: ../data/rc_gui.ui.h:81 350 | msgid "Locale" 351 | msgstr "Lokal" 352 | 353 | #: ../data/rc_gui.ui.h:82 354 | msgid "Language:" 355 | msgstr "Bahasa:" 356 | 357 | #: ../data/rc_gui.ui.h:83 358 | msgid "Country:" 359 | msgstr "Negara:" 360 | 361 | #: ../data/rc_gui.ui.h:84 362 | msgid "Character Set:" 363 | msgstr "Set Karakter:" 364 | 365 | #: ../data/rc_gui.ui.h:85 366 | msgid "Change Password" 367 | msgstr "Ubah Password" 368 | 369 | #: ../data/rc_gui.ui.h:86 370 | msgid "Enter new password:" 371 | msgstr "Masukkan password baru:" 372 | 373 | #: ../data/rc_gui.ui.h:87 374 | msgid "Confirm new password:" 375 | msgstr "Konfirmasi password baru:" 376 | 377 | #: ../data/rc_gui.ui.h:88 378 | msgid "Rastrack Registration" 379 | msgstr "Pendaftaran Rastrack" 380 | 381 | #: ../data/rc_gui.ui.h:89 382 | msgid "" 383 | "Rastrack (http://www.rastrack.co.uk) is a website which tracks the location " 384 | "of Raspberry Pis around the world. If you would like to be added to it, " 385 | "enter your name and email address below.\n" 386 | "\n" 387 | "This is entirely optional and does not form an official registration " 388 | "process.\n" 389 | msgstr "" 390 | "Rastrack (http://www.rastrack.co.uk) adalah situs yang melacak " 391 | "lokasiRaspberry Pi di seluruh dunia. Jika Anda ingin ditambahkan ke dalamnya," 392 | "masukkan nama dan alamat email di bawah ini. \n" 393 | "\n" 394 | "Hal ini sepenuhnya opsional.\n" 395 | 396 | #: ../data/rc_gui.ui.h:93 397 | msgid "Username:" 398 | msgstr "Username:" 399 | 400 | #: ../data/rc_gui.ui.h:94 401 | msgid "Email Address:" 402 | msgstr "Alamat Email:" 403 | 404 | #: ../data/rc_gui.ui.h:95 405 | msgid "Reboot needed" 406 | msgstr "Restart diperlukan" 407 | 408 | #: ../data/rc_gui.ui.h:96 409 | msgid "" 410 | "The changes you have made require the Raspberry Pi to be rebooted to take " 411 | "effect.\n" 412 | "\n" 413 | "Would you like to reboot now? " 414 | msgstr "" 415 | "Perubahan yang telah Anda buat memerlukan Raspberry Pi untuk restartagar " 416 | "berefek.\n" 417 | "\n" 418 | "Apakah Anda ingin untuk restart sekarang?" 419 | 420 | #: ../data/rc_gui.ui.h:99 421 | msgid "Timezone" 422 | msgstr "Zona waktu" 423 | 424 | #: ../data/rc_gui.ui.h:100 425 | msgid "Area:" 426 | msgstr "Area:" 427 | 428 | #: ../data/rc_gui.ui.h:101 429 | msgid "Location:" 430 | msgstr "Lokasi:" 431 | 432 | #: ../data/rc_gui.ui.h:102 433 | msgid "WiFi Country Code" 434 | msgstr "" 435 | 436 | #: ../data/rc_gui.desktop.in.h:2 437 | msgid "Configure Raspberry Pi system" 438 | msgstr "Konfigurasikan sistem Raspberry Pi" 439 | -------------------------------------------------------------------------------- /po/ko.po: -------------------------------------------------------------------------------- 1 | # Raspberry Pi Configuration utility 2 | # Copyright (C) 2018 Raspberry Pi 3 | # This file is distributed under the same license as the rc_gui package. 4 | # Simon Long , 2018. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: rc_gui 1.1\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2022-02-24 15:22+0000\n" 11 | "PO-Revision-Date: 2023-03-14 16:38+0900\n" 12 | "Language-Team: English (British)\n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "Plural-Forms: nplurals=1; plural=0;\n" 17 | "X-Generator: Poedit 2.4.2\n" 18 | "Last-Translator: Yi Yunseok \n" 19 | "Language: ko\n" 20 | 21 | #: ../src/rc_gui.c:432 22 | msgid "" 23 | "The changes you have made require the Raspberry Pi to be rebooted to take " 24 | "effect.\n" 25 | "\n" 26 | "Would you like to reboot now? " 27 | msgstr "" 28 | "변경된 사항을 적용하려면 라즈베리 파이를 재시작해야 합니다.\n" 29 | "\n" 30 | "지금 재시작하겠습니까? " 31 | 32 | #: ../src/rc_gui.c:437 33 | msgid "_No" 34 | msgstr "아니오(_N)" 35 | 36 | #: ../src/rc_gui.c:440 37 | msgid "_Yes" 38 | msgstr "네(_Y)" 39 | 40 | #: ../src/rc_gui.c:500 41 | msgid "" 42 | "The password change failed.\n" 43 | "\n" 44 | "This could be because the current password was incorrect, or because the new " 45 | "password was not sufficiently complex or was too similar to the current " 46 | "password." 47 | msgstr "" 48 | "비밀번호 변경에 실패했습니다.\n" 49 | "\n" 50 | "현재 암호와 너무 유사하거나 암호가 올바르지 않은 경우, 또는 새 암호가 충분히 " 51 | "복잡하지 않기 때문일 수 있습니다." 52 | 53 | #: ../src/rc_gui.c:502 54 | msgid "The password has been changed successfully." 55 | msgstr "비밀번호가 성공적으로 변경됐습니다." 56 | 57 | #. warn about a short delay... 58 | #: ../src/rc_gui.c:844 59 | msgid "Setting locale - please wait..." 60 | msgstr "언어 설정 중 - 잠시만 기다려주세요..." 61 | 62 | #. warn about a short delay... 63 | #: ../src/rc_gui.c:1083 64 | msgid "Setting timezone - please wait..." 65 | msgstr "시간대 설정 중 - 잠시만 기다려주세요..." 66 | 67 | #: ../src/rc_gui.c:1123 ../src/rc_gui.c:1146 68 | msgid "" 69 | msgstr "<설정되지 않음>" 70 | 71 | #. warn about a short delay... 72 | #: ../src/rc_gui.c:1515 73 | msgid "Setting keyboard - please wait..." 74 | msgstr "자판 설정 중 - 잠시만 기다려주세요..." 75 | 76 | #: ../src/rc_gui.c:1560 77 | msgid "" 78 | "Your system has recently been updated. Please reboot to ensure these updates " 79 | "have loaded before setting up the overlay file system." 80 | msgstr "시스템이 업데이트됐습니다. 재부팅을 권장합니다." 81 | 82 | #: ../src/rc_gui.c:1581 83 | msgid "" 84 | "The state of the boot partition cannot be changed while an overlay is active" 85 | msgstr "오버레이가 활성화된 동안에는 부팅 파티션의 상태를 변경할 수 없음" 86 | 87 | #. warn about a short delay... 88 | #: ../src/rc_gui.c:1602 89 | msgid "Setting up overlay - please wait..." 90 | msgstr "오버레이 설정 중 - 잠시만 기다려주세요..." 91 | 92 | #: ../src/rc_gui.c:1631 ../src/rc_gui.c:1971 ../data/rc_gui.ui.h:54 93 | msgid "Enable shell and kernel messages on the serial connection" 94 | msgstr "시리얼 연결에서 쉘 및 커널 메시지 활성화" 95 | 96 | #: ../src/rc_gui.c:1637 ../src/rc_gui.c:1965 97 | msgid "This setting cannot be changed while the serial port is disabled" 98 | msgstr "시리얼 포트가 비활성화된 동안에는 이 설정을 변경할 수 없음" 99 | 100 | #: ../src/rc_gui.c:1648 ../data/rc_gui.ui.h:70 101 | msgid "Set the GPIO to which the fan is connected" 102 | msgstr "팬이 연결된 GPIO 설정" 103 | 104 | #: ../src/rc_gui.c:1649 ../data/rc_gui.ui.h:72 105 | msgid "Set the temperature in degrees C at which the fan turns on" 106 | msgstr "팬이 작동하는 온도를 C 단위로 설정" 107 | 108 | #: ../src/rc_gui.c:1653 ../src/rc_gui.c:1654 ../src/rc_gui.c:1994 109 | #: ../src/rc_gui.c:1995 110 | msgid "This setting cannot be changed unless the fan is enabled" 111 | msgstr "팬이 활성화되지 않으면 이 설정을 변경할 수 없음" 112 | 113 | #: ../src/rc_gui.c:1893 114 | msgid "" 115 | "The Raspberry Pi Configuration application can only modify a standard " 116 | "configuration.\n" 117 | "\n" 118 | "Your configuration appears to have been modified by other tools, and so this " 119 | "application cannot be used on your system.\n" 120 | "\n" 121 | "In order to use this application, you need to have the latest firmware " 122 | "installed, Device Tree enabled, the default \"pi\" user set up and the " 123 | "lightdm application installed. " 124 | msgstr "" 125 | "라즈베리 파이 설정 애플리케이션은 표준 구성만 수정할 수 있습니다.\n" 126 | "\n" 127 | "사용자의 설정이 다른 도구에 의해 수정돼 시스템에서 이 응용 프로그램을 사용할 " 128 | "수 없습니다.\n" 129 | "\n" 130 | "이 응용 프로그램을 사용하려면 최신 펌웨어를 설치, 장치 트리 활성화, 기본 사용" 131 | "자 \"pi\" 설정 및 lightdm 응용 프로그램을 설치해야 합니다. " 132 | 133 | #: ../src/rc_gui.c:1942 134 | msgid "This setting is overridden when Xscreensaver is installed" 135 | msgstr "이 설정은 X스크린세이버 설치로 덮어씌워짐" 136 | 137 | #: ../src/rc_gui.c:1978 138 | msgid "The VNC server is not installed" 139 | msgstr "VNC 서버가 설치되지 않음" 140 | 141 | #: ../src/rc_gui.c:2018 142 | msgid "None (700MHz)" 143 | msgstr "기본 (700MHz)" 144 | 145 | #: ../src/rc_gui.c:2019 146 | msgid "Modest (800MHz)" 147 | msgstr "보통 (800MHz)" 148 | 149 | #: ../src/rc_gui.c:2020 150 | msgid "Medium (900MHz)" 151 | msgstr "중간 (900MHz)" 152 | 153 | #: ../src/rc_gui.c:2021 154 | msgid "High (950MHz)" 155 | msgstr "높음 (950MHz)" 156 | 157 | #: ../src/rc_gui.c:2022 158 | msgid "Turbo (1000MHz)" 159 | msgstr "터보 (1000MHz)" 160 | 161 | #: ../src/rc_gui.c:2039 162 | msgid "None (900MHz)" 163 | msgstr "기본 (900MHz)" 164 | 165 | #: ../src/rc_gui.c:2040 166 | msgid "High (1000MHz)" 167 | msgstr "높음 (1000MHz)" 168 | 169 | #: ../src/rc_gui.c:2071 170 | msgid "Overscan (HDMI-1):" 171 | msgstr "오버스캔 (HDMI-1):" 172 | 173 | #: ../data/rc_gui.ui.h:1 174 | msgid "Keyboard" 175 | msgstr "자판" 176 | 177 | #: ../data/rc_gui.ui.h:2 178 | msgid "Model:" 179 | msgstr "모델:" 180 | 181 | #: ../data/rc_gui.ui.h:3 182 | msgid "Layout:" 183 | msgstr "레이아웃:" 184 | 185 | #: ../data/rc_gui.ui.h:4 186 | msgid "Variant:" 187 | msgstr "자판 종류:" 188 | 189 | #: ../data/rc_gui.ui.h:5 190 | msgid "Locale" 191 | msgstr "지역" 192 | 193 | #: ../data/rc_gui.ui.h:6 194 | msgid "Language:" 195 | msgstr "언어:" 196 | 197 | #: ../data/rc_gui.ui.h:7 198 | msgid "Country:" 199 | msgstr "국가:" 200 | 201 | #: ../data/rc_gui.ui.h:8 202 | msgid "Character Set:" 203 | msgstr "문자열 세트:" 204 | 205 | #: ../data/rc_gui.ui.h:9 ../data/rc_gui.desktop.in.h:1 206 | msgid "Raspberry Pi Configuration" 207 | msgstr "라즈베리 파이 환경설정" 208 | 209 | #: ../data/rc_gui.ui.h:10 210 | msgid "Password:" 211 | msgstr "비밀번호:" 212 | 213 | #: ../data/rc_gui.ui.h:11 214 | msgid "Change _Password..." 215 | msgstr "비밀번호 변경(_P)..." 216 | 217 | #: ../data/rc_gui.ui.h:12 218 | msgid "Change password for the default user (pi)" 219 | msgstr "기본 사용자 (pi) 비밀번호 변경" 220 | 221 | #: ../data/rc_gui.ui.h:13 222 | msgid "Hostname:" 223 | msgstr "호스트이름:" 224 | 225 | #: ../data/rc_gui.ui.h:14 226 | msgid "Set the name of your Pi on a local network" 227 | msgstr "로컬 네트워크에서 사용할 이름 설정" 228 | 229 | #: ../data/rc_gui.ui.h:15 230 | msgid "Boot:" 231 | msgstr "부트:" 232 | 233 | #: ../data/rc_gui.ui.h:16 234 | msgid "To Desktop" 235 | msgstr "데스크톱 전환" 236 | 237 | #: ../data/rc_gui.ui.h:17 238 | msgid "Launch the desktop environment automatically on boot" 239 | msgstr "부팅 시 자동으로 데스크톱 환경 실행" 240 | 241 | #: ../data/rc_gui.ui.h:18 242 | msgid "To CLI" 243 | msgstr "CLI 전환" 244 | 245 | #: ../data/rc_gui.ui.h:19 246 | msgid "Boot into a command line shell rather than the desktop" 247 | msgstr "명령줄 쉘로 부팅" 248 | 249 | #: ../data/rc_gui.ui.h:20 250 | msgid "Auto login:" 251 | msgstr "자동 로그인:" 252 | 253 | #: ../data/rc_gui.ui.h:21 254 | msgid "Automatically log in the default user (pi)" 255 | msgstr "기본 사용자 (pi)로 자동 로그인" 256 | 257 | #: ../data/rc_gui.ui.h:22 258 | msgid "Network at Boot:" 259 | msgstr "네트워크 부팅:" 260 | 261 | #: ../data/rc_gui.ui.h:23 262 | msgid "Do not complete boot until network connection is established" 263 | msgstr "네트워크 연결이 완료될 때까지 부팅하지 않음" 264 | 265 | #: ../data/rc_gui.ui.h:24 266 | msgid "Splash Screen:" 267 | msgstr "시작 화면:" 268 | 269 | #: ../data/rc_gui.ui.h:25 270 | msgid "Show graphical splash screen at boot" 271 | msgstr "부팅할 때 그래픽 시작 화면을 표시" 272 | 273 | #: ../data/rc_gui.ui.h:26 274 | msgid "Power LED:" 275 | msgstr "전원 LED:" 276 | 277 | #: ../data/rc_gui.ui.h:27 278 | msgid "Flash the power LED on disk activity" 279 | msgstr "디스크 작동 시 전원 LED 깜빡임" 280 | 281 | #: ../data/rc_gui.ui.h:28 282 | msgid "System" 283 | msgstr "시스템" 284 | 285 | #: ../data/rc_gui.ui.h:29 286 | msgid "Resolution:" 287 | msgstr "해상도:" 288 | 289 | #: ../data/rc_gui.ui.h:30 290 | msgid "Set _Resolution..." 291 | msgstr "해상도 설정(_R)..." 292 | 293 | #: ../data/rc_gui.ui.h:31 294 | msgid "Set the resolution for HDMI and VNC" 295 | msgstr "HDMI 및 VNC 해상도 설정" 296 | 297 | #: ../data/rc_gui.ui.h:32 298 | msgid "Overscan:" 299 | msgstr "오버스캔:" 300 | 301 | #: ../data/rc_gui.ui.h:33 302 | msgid "Enable overscan to show the edges of the screen" 303 | msgstr "오버스캔을 활성화하여 화면 가장자리 표시" 304 | 305 | #: ../data/rc_gui.ui.h:34 306 | msgid "Overscan (HDMI-2):" 307 | msgstr "오버스캔 (HDMI-2):" 308 | 309 | #: ../data/rc_gui.ui.h:35 310 | msgid "Enable overscan to show the edges of the second screen" 311 | msgstr "오버스캔을 활성화하여 두 번째 스크린의 가장자리 표시" 312 | 313 | #: ../data/rc_gui.ui.h:36 314 | msgid "Pixel Doubling:" 315 | msgstr "픽셀 더블링:" 316 | 317 | #: ../data/rc_gui.ui.h:37 318 | msgid "Enable pixel doubling to improve usability on high-res screens" 319 | msgstr "고해상도 화면에서 사용자 편의를 위해 픽셀 더블링 활성화" 320 | 321 | #: ../data/rc_gui.ui.h:38 322 | msgid "Screen Blanking:" 323 | msgstr "스크린 깜빡임:" 324 | 325 | #: ../data/rc_gui.ui.h:39 326 | msgid "Blank the screen after a period of inactivity" 327 | msgstr "비활성 기간 후 화면 비우기" 328 | 329 | #: ../data/rc_gui.ui.h:40 330 | msgid "Headless Resolution:" 331 | msgstr "헤드리스 해상도:" 332 | 333 | #: ../data/rc_gui.ui.h:41 334 | msgid "Set the resolution for VNC when no monitor is connected" 335 | msgstr "모니터가 연결되지 않았을 때 VNC의 해상도 설정" 336 | 337 | #: ../data/rc_gui.ui.h:42 338 | msgid "Display" 339 | msgstr "디스플레이" 340 | 341 | #: ../data/rc_gui.ui.h:43 342 | msgid "SSH:" 343 | msgstr "SSH:" 344 | 345 | #: ../data/rc_gui.ui.h:44 346 | msgid "Enable remote access to this Pi via SSH" 347 | msgstr "SSH 원격 액세스 활성화" 348 | 349 | #: ../data/rc_gui.ui.h:45 350 | msgid "VNC:" 351 | msgstr "VNC:" 352 | 353 | #: ../data/rc_gui.ui.h:46 354 | msgid "Enable remote access to this Pi using RealVNC" 355 | msgstr "RealVNC 원격 액세스 활성화" 356 | 357 | #: ../data/rc_gui.ui.h:47 358 | msgid "SPI:" 359 | msgstr "SPI:" 360 | 361 | #: ../data/rc_gui.ui.h:48 362 | msgid "Enable the automatic loading of the SPI kernel module" 363 | msgstr "SPI 커널 모듈 자동 로드 활성화" 364 | 365 | #: ../data/rc_gui.ui.h:49 366 | msgid "I2C:" 367 | msgstr "I2C:" 368 | 369 | #: ../data/rc_gui.ui.h:50 370 | msgid "Enable the automatic loading of the I2C kernel module" 371 | msgstr "I2C 커널 모듈 자동 로드 활성화" 372 | 373 | #: ../data/rc_gui.ui.h:51 374 | msgid "Serial Port:" 375 | msgstr "시리얼 포트:" 376 | 377 | #: ../data/rc_gui.ui.h:52 378 | msgid "Enable the serial port over the GPIO pins" 379 | msgstr "GPIO 핀을 통한 시리얼 포트 활성화" 380 | 381 | #: ../data/rc_gui.ui.h:53 382 | msgid "Serial Console:" 383 | msgstr "시리얼 콘솔:" 384 | 385 | #: ../data/rc_gui.ui.h:55 386 | msgid "1-Wire:" 387 | msgstr "1-와이어:" 388 | 389 | #: ../data/rc_gui.ui.h:56 390 | msgid "Enable 1-wire peripheral interface" 391 | msgstr "1-와이어 주변 장치 인터페이스 활성화" 392 | 393 | #: ../data/rc_gui.ui.h:57 394 | msgid "Remote GPIO:" 395 | msgstr "원격 GPIO:" 396 | 397 | #: ../data/rc_gui.ui.h:58 398 | msgid "Enable remote access to GPIO pins" 399 | msgstr "GPIO 핀 원격 액세스 활성화" 400 | 401 | #: ../data/rc_gui.ui.h:59 402 | msgid "Interfaces" 403 | msgstr "인터페이스" 404 | 405 | #: ../data/rc_gui.ui.h:60 406 | msgid "O_verclock:" 407 | msgstr "오버클록(_V)" 408 | 409 | #: ../data/rc_gui.ui.h:61 410 | msgid "Set the level of overclock to control performance" 411 | msgstr "오버클록 수준을 설정하여 성능 제어" 412 | 413 | #: ../data/rc_gui.ui.h:62 414 | msgid "_GPU Memory:" 415 | msgstr "_GPU 메모리:" 416 | 417 | #: ../data/rc_gui.ui.h:63 418 | msgid "Enter the amount of memory available to the GPU" 419 | msgstr "GPU 사용할 메모리 값 입력" 420 | 421 | #: ../data/rc_gui.ui.h:64 422 | msgid "Overlay File System:" 423 | msgstr "파일 시스템 오버레이:" 424 | 425 | #: ../data/rc_gui.ui.h:65 426 | msgid "Configure..." 427 | msgstr "설정..." 428 | 429 | #: ../data/rc_gui.ui.h:66 430 | msgid "" 431 | "Configure an overlay file system to protect data from being overwritten or " 432 | "deleted" 433 | msgstr "데이터를 덮어쓰거나 삭제하지 않도록 파일 시스템 오버레이 구성" 434 | 435 | #: ../data/rc_gui.ui.h:67 436 | msgid "Fan:" 437 | msgstr "팬:" 438 | 439 | #: ../data/rc_gui.ui.h:68 440 | msgid "Enable a temperature-controlled fan on a GPIO pin" 441 | msgstr "GPIO 핀에서 온도 제어 팬 활성화" 442 | 443 | #: ../data/rc_gui.ui.h:69 444 | msgid "Fan GPIO:" 445 | msgstr "팬 GPIO:" 446 | 447 | #: ../data/rc_gui.ui.h:71 448 | msgid "Fan Temperature:" 449 | msgstr "팬 온도:" 450 | 451 | #: ../data/rc_gui.ui.h:73 452 | msgid "Performance" 453 | msgstr "퍼포먼스" 454 | 455 | #: ../data/rc_gui.ui.h:74 456 | msgid "Locale:" 457 | msgstr "지역:" 458 | 459 | #: ../data/rc_gui.ui.h:75 460 | msgid "Set _Locale..." 461 | msgstr "지역 설정(_L)..." 462 | 463 | #: ../data/rc_gui.ui.h:76 464 | msgid "Set internationalisation settings for units etc." 465 | msgstr "국제화 설정을 지정합니다." 466 | 467 | #: ../data/rc_gui.ui.h:77 468 | msgid "Timezone:" 469 | msgstr "시간대:" 470 | 471 | #: ../data/rc_gui.ui.h:78 472 | msgid "Set _Timezone..." 473 | msgstr "시간대 설정(_T)..." 474 | 475 | #: ../data/rc_gui.ui.h:79 476 | msgid "Set the timezone to be used by the internal clock" 477 | msgstr "시계에서 사용할 시간대 설정" 478 | 479 | #: ../data/rc_gui.ui.h:80 480 | msgid "Keyboard:" 481 | msgstr "자판:" 482 | 483 | #: ../data/rc_gui.ui.h:81 484 | msgid "Set _Keyboard..." 485 | msgstr "자판 설정(_K)..." 486 | 487 | #: ../data/rc_gui.ui.h:82 488 | msgid "Set international keyboard options" 489 | msgstr "국제 자판 옵션 설정" 490 | 491 | #: ../data/rc_gui.ui.h:83 492 | msgid "WiFi Country:" 493 | msgstr "WiFi 국가:" 494 | 495 | #: ../data/rc_gui.ui.h:84 496 | msgid "Set _WiFi Country..." 497 | msgstr "_WiFi 국가를 설정..." 498 | 499 | #: ../data/rc_gui.ui.h:85 500 | msgid "Set WiFi country code" 501 | msgstr "WiFi 국가 코드 설정" 502 | 503 | #: ../data/rc_gui.ui.h:86 504 | msgid "Localisation" 505 | msgstr "현지화" 506 | 507 | #: ../data/rc_gui.ui.h:87 508 | msgid "_Cancel" 509 | msgstr "취소(_C)" 510 | 511 | #: ../data/rc_gui.ui.h:88 512 | msgid "_OK" 513 | msgstr "확인(_O)" 514 | 515 | #: ../data/rc_gui.ui.h:89 516 | msgid "Overlay File System" 517 | msgstr "파일 시스템 오버레이" 518 | 519 | #: ../data/rc_gui.ui.h:90 520 | msgid "Overlay:" 521 | msgstr "오버레이:" 522 | 523 | #: ../data/rc_gui.ui.h:91 524 | msgid "Enable a file system overlay; all changes will be lost on reboot" 525 | msgstr "파일 시스템 오버레이 활성화; 재부팅 시 모든 변경 사항은 손실됨" 526 | 527 | #: ../data/rc_gui.ui.h:92 528 | msgid "Boot Partition:" 529 | msgstr "부트 파티션:" 530 | 531 | #: ../data/rc_gui.ui.h:93 532 | msgid "Make the boot partition read-only" 533 | msgstr "부트 파티션을 읽기 전용으로 만들기" 534 | 535 | #: ../data/rc_gui.ui.h:94 536 | msgid "Changes will not take effect until a reboot" 537 | msgstr "변경 사항은 재부팅해야 적용됨" 538 | 539 | #: ../data/rc_gui.ui.h:95 540 | msgid "Change Password" 541 | msgstr "비밀번호 변경" 542 | 543 | #: ../data/rc_gui.ui.h:96 544 | msgid "Enter new password:" 545 | msgstr "새 비밀번호 입력:" 546 | 547 | #: ../data/rc_gui.ui.h:97 548 | msgid "Confirm new password:" 549 | msgstr "새 비밀번호 확인:" 550 | 551 | #: ../data/rc_gui.ui.h:98 552 | msgid "Set Resolution" 553 | msgstr "해상도 설정" 554 | 555 | #: ../data/rc_gui.ui.h:99 556 | msgid "Timezone" 557 | msgstr "시간대" 558 | 559 | #: ../data/rc_gui.ui.h:100 560 | msgid "Area:" 561 | msgstr "지역:" 562 | 563 | #: ../data/rc_gui.ui.h:101 564 | msgid "Location:" 565 | msgstr "위치:" 566 | 567 | #: ../data/rc_gui.ui.h:102 568 | msgid "WiFi Country Code" 569 | msgstr "WiFi 국가 코드" 570 | 571 | #: ../data/rc_gui.desktop.in.h:2 572 | msgid "Configure Raspberry Pi system" 573 | msgstr "라즈베리 파이 시스템 설정" 574 | 575 | #: ../data/pwdrcg.sh:6 576 | msgid "Password Required" 577 | msgstr "비밀번호 필요" 578 | 579 | msgid "Disable shell and kernel messages on the serial connection" 580 | msgstr "시리얼 연결에서 쉘과 커널 메시지 비활성화" 581 | 582 | msgid "Login as user 'pi'" 583 | msgstr "사용자 'pi'로 로그인" 584 | 585 | msgid "Disabled" 586 | msgstr "비활성됨" 587 | 588 | msgid "Prompt for password at boot" 589 | msgstr "부팅 시 비밀번호 입력" 590 | 591 | msgid "Wait for network" 592 | msgstr "네트워크 대기" 593 | 594 | msgid "Do not wait" 595 | msgstr "대기하지 않음" 596 | 597 | msgid "Do not wait for network connection during boot" 598 | msgstr "부팅할 때는 대기하지 않음" 599 | 600 | msgid "Enable" 601 | msgstr "활성화" 602 | 603 | msgid "Disable" 604 | msgstr "비활성화" 605 | 606 | msgid "Show text messages at boot" 607 | msgstr "부팅할 때 텍스트 메시지 표시" 608 | 609 | msgid "Activity" 610 | msgstr "활동" 611 | 612 | msgid "Constant" 613 | msgstr "지속" 614 | 615 | msgid "Do not flash the power LED" 616 | msgstr "전원 LED 끄기" 617 | 618 | msgid "Disable overscan to hide black outline on screen" 619 | msgstr "오버스캔을 비활성화하여 화면의 검은색 테두리 숨기기" 620 | 621 | msgid "Disable pixel doubling for standard resolution screens" 622 | msgstr "표준 해상도에서 픽셀 더블링 비활성화" 623 | 624 | msgid "Never blank the screen" 625 | msgstr "스크린을 비우지 않음" 626 | 627 | msgid "Disable remote access to this Pi via SSH" 628 | msgstr "SSH 원격 액세스 비활성화" 629 | 630 | msgid "Disable remote access to this Pi using RealVNC" 631 | msgstr "RealVNC 원격 액세스 비활성화" 632 | 633 | msgid "Disable the automatic loading of the SPI kernel module" 634 | msgstr "SPI 커널 모듈 자동 로드 비활성화" 635 | 636 | msgid "Disable the automatic loading of the I2C kernel module" 637 | msgstr "I2C 커널 모듈 자동 로드 비활성화" 638 | 639 | msgid "Disable the serial port over the GPIO pins" 640 | msgstr "GPIO 핀을 통한 시리얼 포트 활성화" 641 | 642 | msgid "Disable 1-wire peripheral interface" 643 | msgstr "1-와이어 주변 장치 인터페이스 비활성화" 644 | 645 | msgid "Disable remote access to GPIO pins" 646 | msgstr "GPIO 핀 원격 액세스 비활성화" 647 | 648 | msgid "Disable GPIO fan" 649 | msgstr "GPIO 팬 비활성화" 650 | 651 | msgid "Enabled" 652 | msgstr "활성됨" 653 | 654 | msgid "Disable a file system overlay; changes will be saved to the SD card" 655 | msgstr "파일 시스템 오버레이 비활성화; 변경 사항은 SD 카드에 저장됨" 656 | 657 | msgid "Read-only" 658 | msgstr "읽기 전용" 659 | 660 | msgid "Read-write" 661 | msgstr "읽기 및 쓰기" 662 | 663 | msgid "Make the boot partition writable" 664 | msgstr "부트 파티션을 쓰기 가능으로 만들기" 665 | -------------------------------------------------------------------------------- /po/linggen: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ls -1 *.po | cut -d . -f 1 > LINGUAS 3 | -------------------------------------------------------------------------------- /po/meson.build: -------------------------------------------------------------------------------- 1 | run_command('linggen') 2 | if build_standalone 3 | i18n.gettext(meson.project_name(), preset: 'glib') 4 | endif 5 | 6 | if build_plugin 7 | i18n.gettext(plugin_name, preset: 'glib') 8 | endif 9 | -------------------------------------------------------------------------------- /po/nb.no: -------------------------------------------------------------------------------- 1 | # Raspberry Pi Configuration utility 2 | # Copyright (C) 2018 Raspberry Pi 3 | # This file is distributed under the same license as the rc_gui package. 4 | # Simon Long , 2018. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: rc_gui 1.1\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2020-09-02 13:52+0100\n" 11 | "PO-Revision-Date: 2020-09-27 03:41+0200\n" 12 | "Last-Translator: Imre Kristoffer Eilertsen \n" 13 | "Language-Team: Norwegian Bokmål\n" 14 | "Language: nb\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | "X-Generator: Poedit 2.4.1\n" 20 | 21 | #. warn about a short delay... 22 | #: ../src/rc_gui.c:736 23 | msgid "Setting locale - please wait..." 24 | msgstr "Velger region - vennligst vent …" 25 | 26 | #. warn about a short delay... 27 | #: ../src/rc_gui.c:974 28 | msgid "Setting timezone - please wait..." 29 | msgstr "Velger tidssone - vennligst vent …" 30 | 31 | #: ../src/rc_gui.c:1018 ../src/rc_gui.c:1041 32 | msgid "" 33 | msgstr "" 34 | 35 | #. warn about a short delay... 36 | #: ../src/rc_gui.c:1420 37 | msgid "Setting keyboard - please wait..." 38 | msgstr "Velger tastatur - vennligst vent …" 39 | 40 | #: ../src/rc_gui.c:1449 ../data/rc_gui.ui.h:126 41 | msgid "Changes will not take effect until a reboot" 42 | msgstr "Endringer trer ikke i kraft før en omstart" 43 | 44 | #: ../src/rc_gui.c:1504 ../src/rc_gui.c:1505 45 | msgid "" 46 | "The state of the boot partition cannot be changed while an overlay is active" 47 | msgstr "" 48 | "Tilstanden til oppstartspartisjonen kan ikke endres mens et overlegg er " 49 | "aktivt" 50 | 51 | #. warn about a short delay... 52 | #: ../src/rc_gui.c:1525 53 | msgid "Setting up overlay - please wait..." 54 | msgstr "Setter opp overlegg - vennligst vent …" 55 | 56 | #: ../src/rc_gui.c:1578 ../data/rc_gui.ui.h:64 57 | msgid "Enable shell and kernel messages on the serial connection" 58 | msgstr "Skru på skall- og kernelmeldinger på den serielle tilkoblingen" 59 | 60 | #: ../src/rc_gui.c:1579 ../data/rc_gui.ui.h:65 61 | msgid "Disable shell and kernel messages on the serial connection" 62 | msgstr "Skru av skall- og kernelmeldinger på den serielle tilkoblingen" 63 | 64 | #: ../src/rc_gui.c:1590 ../src/rc_gui.c:1591 65 | msgid "This setting cannot be changed while the serial port is disabled" 66 | msgstr "" 67 | "Denne innstillingen kan ikke endres mens den serielle porten er skrudd av" 68 | 69 | #: ../src/rc_gui.c:1928 ../src/rc_gui.c:1929 70 | msgid "This setting is overridden when Xscreensaver is installed" 71 | msgstr "Denne innstillingen overstyres når Xscreensaver er installert" 72 | 73 | #: ../src/rc_gui.c:1988 ../src/rc_gui.c:1989 74 | msgid "The VNC server is not installed" 75 | msgstr "VNC-serveren er ikke installert" 76 | 77 | #: ../data/rc_gui.ui.h:1 ../data/rc_gui.desktop.in.h:1 78 | msgid "Raspberry Pi Configuration" 79 | msgstr "Raspberry Pi-konfigurasjon" 80 | 81 | #: ../data/rc_gui.ui.h:2 82 | msgid "Password:" 83 | msgstr "Passord:" 84 | 85 | #: ../data/rc_gui.ui.h:3 86 | msgid "Change _Password..." 87 | msgstr "Endre _passord …" 88 | 89 | #: ../data/rc_gui.ui.h:4 90 | msgid "Change password for the default user (pi)" 91 | msgstr "Endre passordet til standardbrukeren (pi)" 92 | 93 | #: ../data/rc_gui.ui.h:5 94 | msgid "Hostname:" 95 | msgstr "Vertsnavn:" 96 | 97 | #: ../data/rc_gui.ui.h:6 98 | msgid "Set the name of your Pi on a local network" 99 | msgstr "Velg navnet til Pi-en din på et lokalt nettverk" 100 | 101 | #: ../data/rc_gui.ui.h:7 102 | msgid "Boot:" 103 | msgstr "Oppstart:" 104 | 105 | #: ../data/rc_gui.ui.h:8 106 | msgid "To Desktop" 107 | msgstr "Til skrivebord" 108 | 109 | #: ../data/rc_gui.ui.h:9 110 | msgid "Launch the desktop environment automatically on boot" 111 | msgstr "Start opp skrivebordsmiljøet automatisk ved oppstart" 112 | 113 | #: ../data/rc_gui.ui.h:10 114 | msgid "To CLI" 115 | msgstr "Til ledetekst" 116 | 117 | #: ../data/rc_gui.ui.h:11 118 | msgid "Boot into a command line shell rather than the desktop" 119 | msgstr "Start opp til en ledetekst i stedet for skrivebordet" 120 | 121 | #: ../data/rc_gui.ui.h:12 122 | msgid "Auto login:" 123 | msgstr "Auto-pålogging:" 124 | 125 | #: ../data/rc_gui.ui.h:13 126 | msgid "Login as user 'pi'" 127 | msgstr "Logg på som brukeren 'pi'" 128 | 129 | #: ../data/rc_gui.ui.h:14 130 | msgid "Automatically log in the default user (pi)" 131 | msgstr "Automatisk logg på som standardbrukeren (pi)" 132 | 133 | #: ../data/rc_gui.ui.h:15 134 | msgid "Network at Boot:" 135 | msgstr "Nettverk ved oppstart:" 136 | 137 | #: ../data/rc_gui.ui.h:16 138 | msgid "Wait for network" 139 | msgstr "Vent på nettverk" 140 | 141 | #: ../data/rc_gui.ui.h:17 142 | msgid "Do not complete boot until network connection is established" 143 | msgstr "Ikke fullfør oppstarten før en nettverkstilkobling har blitt etablert" 144 | 145 | #: ../data/rc_gui.ui.h:18 146 | msgid "Splash Screen:" 147 | msgstr "Velkomstskjerm:" 148 | 149 | #: ../data/rc_gui.ui.h:19 150 | msgid "Enable" 151 | msgstr "Slå på" 152 | 153 | #: ../data/rc_gui.ui.h:20 154 | msgid "Show graphical splash screen at boot" 155 | msgstr "Vis en grafisk velkomstskjerm ved oppstart" 156 | 157 | #: ../data/rc_gui.ui.h:21 158 | msgid "Disable" 159 | msgstr "Skru av" 160 | 161 | #: ../data/rc_gui.ui.h:22 162 | msgid "Show text messages at boot" 163 | msgstr "Vis tekstmeldinger ved oppstart" 164 | 165 | #: ../data/rc_gui.ui.h:23 166 | msgid "Power LED:" 167 | msgstr "Strøm-LED:" 168 | 169 | #: ../data/rc_gui.ui.h:24 170 | msgid "Constant" 171 | msgstr "Konstant" 172 | 173 | #: ../data/rc_gui.ui.h:25 174 | msgid "Do not flash the power LED" 175 | msgstr "Ikke blink med strøm-LED-lyset" 176 | 177 | #: ../data/rc_gui.ui.h:26 178 | msgid "Activity" 179 | msgstr "Aktivitet" 180 | 181 | #: ../data/rc_gui.ui.h:27 182 | msgid "Flash the power LED on disk activity" 183 | msgstr "Blink med strøm-LED-lyset ved diskaktivitet" 184 | 185 | #: ../data/rc_gui.ui.h:28 186 | msgid "System" 187 | msgstr "System" 188 | 189 | #: ../data/rc_gui.ui.h:29 190 | msgid "Resolution:" 191 | msgstr "Oppløsning:" 192 | 193 | #: ../data/rc_gui.ui.h:30 194 | msgid "Set _Resolution..." 195 | msgstr "Velg _oppløsning …" 196 | 197 | #: ../data/rc_gui.ui.h:31 198 | msgid "Set the resolution for HDMI and VNC" 199 | msgstr "Bestem oppløsningen for HDMI og VNC" 200 | 201 | #: ../data/rc_gui.ui.h:32 202 | msgid "Overscan:" 203 | msgstr "Overskanning:" 204 | 205 | #: ../data/rc_gui.ui.h:33 206 | msgid "Enable overscan to show the edges of the screen" 207 | msgstr "Skru på overskanning for å vise kantene til skjermen" 208 | 209 | #: ../data/rc_gui.ui.h:34 210 | msgid "Disable overscan to hide black outline on screen" 211 | msgstr "Skru av overskanning for å skjule svarte omriss på skjermen" 212 | 213 | #: ../data/rc_gui.ui.h:35 214 | msgid "Pixel Doubling:" 215 | msgstr "Pikseldobling:" 216 | 217 | #: ../data/rc_gui.ui.h:36 218 | msgid "Enable pixel doubling to improve usability on high-res screens" 219 | msgstr "" 220 | "Skru på pikseldobling for å forbedre brukbarheten på høyoppløsningsskjermer" 221 | 222 | #: ../data/rc_gui.ui.h:37 223 | msgid "Disable pixel doubling for standard resolution screens" 224 | msgstr "Skru av pikseldobling for skjermer med standard oppløsning" 225 | 226 | #: ../data/rc_gui.ui.h:38 227 | msgid "Composite Video:" 228 | msgstr "Komposittvideo:" 229 | 230 | #: ../data/rc_gui.ui.h:39 231 | msgid "Enable analogue composite video on the 3.5mm socket" 232 | msgstr "Skru på analog komposittvideo på 3,5mm-uttaket" 233 | 234 | #: ../data/rc_gui.ui.h:40 235 | msgid "Disable analogue composite video" 236 | msgstr "Skru av analog komposittvideo" 237 | 238 | #: ../data/rc_gui.ui.h:41 239 | msgid "Screen Blanking:" 240 | msgstr "Skjermblanking:" 241 | 242 | #: ../data/rc_gui.ui.h:42 243 | msgid "Blank the screen after a period of inactivity" 244 | msgstr "La skjermen gå i svart etter en viss tid med inaktivitet" 245 | 246 | #: ../data/rc_gui.ui.h:43 247 | msgid "Never blank the screen" 248 | msgstr "Aldri la skjermen gå i svart" 249 | 250 | #: ../data/rc_gui.ui.h:44 251 | msgid "Display" 252 | msgstr "Skjerm" 253 | 254 | #: ../data/rc_gui.ui.h:45 255 | msgid "Camera:" 256 | msgstr "Kamera:" 257 | 258 | #: ../data/rc_gui.ui.h:46 259 | msgid "Enable the Raspberry Pi Camera Board" 260 | msgstr "Skru på Raspberry Pi-kamerabrikken" 261 | 262 | #: ../data/rc_gui.ui.h:47 263 | msgid "Disable the Raspberry Pi Camera Board" 264 | msgstr "Skru av Raspberry Pi-kamerabrikken" 265 | 266 | #: ../data/rc_gui.ui.h:48 267 | msgid "SSH:" 268 | msgstr "SSH:" 269 | 270 | #: ../data/rc_gui.ui.h:49 271 | msgid "Enable remote access to this Pi via SSH" 272 | msgstr "Skru på ekstern tilgang til denne Pi-en gjennom SSH" 273 | 274 | #: ../data/rc_gui.ui.h:50 275 | msgid "Disable remote access to this Pi via SSH" 276 | msgstr "Skru av ekstern tilgang til denne Pi-en gjennom SSH" 277 | 278 | #: ../data/rc_gui.ui.h:51 279 | msgid "VNC:" 280 | msgstr "VNC:" 281 | 282 | #: ../data/rc_gui.ui.h:52 283 | msgid "Enable remote access to this Pi using RealVNC" 284 | msgstr "Skru på ekstern tilgang til denne Pi-en gjennom RealVNC" 285 | 286 | #: ../data/rc_gui.ui.h:53 287 | msgid "Disable remote access to this Pi using RealVNC" 288 | msgstr "Skru av ekstern tilgang til denne Pi-en gjennom RealVNC" 289 | 290 | #: ../data/rc_gui.ui.h:54 291 | msgid "SPI:" 292 | msgstr "SPI:" 293 | 294 | #: ../data/rc_gui.ui.h:55 295 | msgid "Enable the automatic loading of the SPI kernel module" 296 | msgstr "Skru på automatisk innlasting av SPI-kernelmodulen" 297 | 298 | #: ../data/rc_gui.ui.h:56 299 | msgid "Disable the automatic loading of the SPI kernel module" 300 | msgstr "Skru av automatisk innlasting av SPI-kernelmodulen" 301 | 302 | #: ../data/rc_gui.ui.h:57 303 | msgid "I2C:" 304 | msgstr "I2C:" 305 | 306 | #: ../data/rc_gui.ui.h:58 307 | msgid "Enable the automatic loading of the I2C kernel module" 308 | msgstr "Skru på automatisk innlasting av I2C-kernelmodulen" 309 | 310 | #: ../data/rc_gui.ui.h:59 311 | msgid "Disable the automatic loading of the I2C kernel module" 312 | msgstr "Skru av automatisk innlasting av I2C-kernelmodulen" 313 | 314 | #: ../data/rc_gui.ui.h:60 315 | msgid "Serial Port:" 316 | msgstr "Seriell port:" 317 | 318 | #: ../data/rc_gui.ui.h:61 319 | msgid "Enable the serial port over the GPIO pins" 320 | msgstr "Skru på seriellporten over GPIO-pinnene" 321 | 322 | #: ../data/rc_gui.ui.h:62 323 | msgid "Disable the serial port over the GPIO pins" 324 | msgstr "Skru av seriellporten over GPIO-pinnene" 325 | 326 | #: ../data/rc_gui.ui.h:63 327 | msgid "Serial Console:" 328 | msgstr "Seriell konsoll:" 329 | 330 | #: ../data/rc_gui.ui.h:66 331 | msgid "1-Wire:" 332 | msgstr "1-ledning:" 333 | 334 | #: ../data/rc_gui.ui.h:67 335 | msgid "Enable 1-wire peripheral interface" 336 | msgstr "Skru på 1-lednings grensesnittstilbehør" 337 | 338 | #: ../data/rc_gui.ui.h:68 339 | msgid "Disable 1-wire peripheral interface" 340 | msgstr "Skru av 1-lednings grensesnittstilbehør" 341 | 342 | #: ../data/rc_gui.ui.h:69 343 | msgid "Remote GPIO:" 344 | msgstr "Ekstern GPIO:" 345 | 346 | #: ../data/rc_gui.ui.h:70 347 | msgid "Enable remote access to GPIO pins" 348 | msgstr "Skru på ekstern tilgang til GPIO-pinnene" 349 | 350 | #: ../data/rc_gui.ui.h:71 351 | msgid "Disable remote access to GPIO pins" 352 | msgstr "Skru av ekstern tilgang til GPIO-pinnene" 353 | 354 | #: ../data/rc_gui.ui.h:72 355 | msgid "Interfaces" 356 | msgstr "Grensesnitt" 357 | 358 | #: ../data/rc_gui.ui.h:73 359 | msgid "O_verclock:" 360 | msgstr "O_verklokk:" 361 | 362 | #: ../data/rc_gui.ui.h:74 363 | msgid "Set the level of overclock to control performance" 364 | msgstr "Velg overklokkingsnivået for å styre ytelsen" 365 | 366 | #: ../data/rc_gui.ui.h:75 367 | msgid "None (700MHz)" 368 | msgstr "Ingen (700MHz)" 369 | 370 | #: ../data/rc_gui.ui.h:76 371 | msgid "Modest (800MHz)" 372 | msgstr "Beskjeden (800MHz)" 373 | 374 | #: ../data/rc_gui.ui.h:77 375 | msgid "Medium (900MHz)" 376 | msgstr "Medium (900MHz)" 377 | 378 | #: ../data/rc_gui.ui.h:78 379 | msgid "High (950MHz)" 380 | msgstr "Høyt (950MHz)" 381 | 382 | #: ../data/rc_gui.ui.h:79 383 | msgid "Turbo (1000MHz)" 384 | msgstr "Turbo (1000MHz)" 385 | 386 | #: ../data/rc_gui.ui.h:80 387 | msgid "None (900MHz)" 388 | msgstr "Ingen (900MHz)" 389 | 390 | #: ../data/rc_gui.ui.h:81 391 | msgid "High (1000MHz)" 392 | msgstr "Høyt (1000MHz)" 393 | 394 | #: ../data/rc_gui.ui.h:82 395 | msgid "Not available" 396 | msgstr "Ikke tilgjengelig" 397 | 398 | #: ../data/rc_gui.ui.h:83 399 | msgid "_GPU Memory:" 400 | msgstr "_GPU-minne:" 401 | 402 | #: ../data/rc_gui.ui.h:84 403 | msgid "Enter the amount of memory available to the GPU" 404 | msgstr "Skriv inn minnemengden som skal være tilgjengelig for GPU-en" 405 | 406 | #: ../data/rc_gui.ui.h:85 407 | msgid "Overlay File System:" 408 | msgstr "Overlegg-filsystem:" 409 | 410 | #: ../data/rc_gui.ui.h:86 411 | msgid "Configure..." 412 | msgstr "Konfigurer …" 413 | 414 | #: ../data/rc_gui.ui.h:87 415 | msgid "" 416 | "Configure an overlay file system to protect data from being overwritten or " 417 | "deleted" 418 | msgstr "" 419 | "Sett opp et overleggsfilsystem for å beskytte data fra å bli overskrevet " 420 | "eller slettet" 421 | 422 | #: ../data/rc_gui.ui.h:88 423 | msgid "Performance" 424 | msgstr "Ytelse" 425 | 426 | #: ../data/rc_gui.ui.h:89 427 | msgid "Locale:" 428 | msgstr "Språk:" 429 | 430 | #: ../data/rc_gui.ui.h:90 431 | msgid "Set _Locale..." 432 | msgstr "Angi _region …" 433 | 434 | #: ../data/rc_gui.ui.h:91 435 | msgid "Set internationalisation settings for units etc." 436 | msgstr "Velg internasjonaliseringsinnstillinger for enheter osv." 437 | 438 | #: ../data/rc_gui.ui.h:92 439 | msgid "Timezone:" 440 | msgstr "Tidssone:" 441 | 442 | #: ../data/rc_gui.ui.h:93 443 | msgid "Set _Timezone..." 444 | msgstr "Velg _tidssone …" 445 | 446 | #: ../data/rc_gui.ui.h:94 447 | msgid "Set the timezone to be used by the internal clock" 448 | msgstr "Velg tidssonen som skal brukes av den interne klokken" 449 | 450 | #: ../data/rc_gui.ui.h:95 451 | msgid "Keyboard:" 452 | msgstr "Tastatur:" 453 | 454 | #: ../data/rc_gui.ui.h:96 455 | msgid "Set _Keyboard..." 456 | msgstr "Velg _tastatur …" 457 | 458 | #: ../data/rc_gui.ui.h:97 459 | msgid "Set international keyboard options" 460 | msgstr "Velg internasjonale tastaturinnstillinger" 461 | 462 | #: ../data/rc_gui.ui.h:98 463 | msgid "WiFi Country:" 464 | msgstr "Wi-Fi-land:" 465 | 466 | #: ../data/rc_gui.ui.h:99 467 | msgid "Set _WiFi Country..." 468 | msgstr "Velg _Wi-Fi-land …" 469 | 470 | #: ../data/rc_gui.ui.h:100 471 | msgid "Set WiFi country code" 472 | msgstr "Velg Wi-Fi-landskode" 473 | 474 | #: ../data/rc_gui.ui.h:101 475 | msgid "Localisation" 476 | msgstr "Lokalisasjon" 477 | 478 | #: ../data/rc_gui.ui.h:102 479 | msgid "" 480 | "The Raspberry Pi Configuration application can only modify a standard " 481 | "configuration.\n" 482 | "\n" 483 | "Your configuration appears to have been modified by other tools, and so this " 484 | "application cannot be used on your system.\n" 485 | "\n" 486 | "In order to use this application, you need to have the latest firmware " 487 | "installed, Device Tree enabled, the default \"pi\" user set up and the " 488 | "lightdm application installed. " 489 | msgstr "" 490 | "Raspberry Pi-konfigurasjonsprogrammet kan bare modifisere en " 491 | "standardkonfigurasjon.\n" 492 | "\n" 493 | "Din konfigurasjon ser ut til å ha bli modifisert av andre verktøy, så dermed " 494 | "kan dette programmet ikke brukes på ditt system.\n" 495 | "\n" 496 | "For å bruke dette programmet, må du ha installert den nyeste fastvaren, " 497 | "skrudd på Enhetstre, satt opp standardbrukeren «pi», og installert " 498 | "programmet «lightdm». " 499 | 500 | #: ../data/rc_gui.ui.h:107 501 | msgid "Filesystem Expanded" 502 | msgstr "Filsystemet ble utvidet" 503 | 504 | #: ../data/rc_gui.ui.h:108 505 | msgid "" 506 | "The filesystem has been expanded.\n" 507 | "\n" 508 | "The new space will not be available until you reboot your Raspberry Pi." 509 | msgstr "" 510 | "Filsystemet har blitt utvidet.\n" 511 | "\n" 512 | "Den nye plassen vil ikke bli tilgjengelig før du har omstartet din Raspberry " 513 | "Pi." 514 | 515 | #: ../data/rc_gui.ui.h:111 516 | msgid "Locale" 517 | msgstr "Språk" 518 | 519 | #: ../data/rc_gui.ui.h:112 520 | msgid "Language:" 521 | msgstr "Språk:" 522 | 523 | #: ../data/rc_gui.ui.h:113 524 | msgid "Country:" 525 | msgstr "Land:" 526 | 527 | #: ../data/rc_gui.ui.h:114 528 | msgid "Character Set:" 529 | msgstr "Tegnsett:" 530 | 531 | #: ../data/rc_gui.ui.h:115 532 | msgid "Overlay File System" 533 | msgstr "Overlegg-filsystem" 534 | 535 | #: ../data/rc_gui.ui.h:116 536 | msgid "Overlay:" 537 | msgstr "Overlegg:" 538 | 539 | #: ../data/rc_gui.ui.h:117 540 | msgid "Enabled" 541 | msgstr "Aktivert" 542 | 543 | #: ../data/rc_gui.ui.h:118 544 | msgid "Enable a file system overlay; all changes will be lost on reboot" 545 | msgstr "Skru på et filsystemoverlegg; alle endringer vil gå tapt ved omstart" 546 | 547 | #: ../data/rc_gui.ui.h:119 548 | msgid "Disabled" 549 | msgstr "Deaktivert" 550 | 551 | #: ../data/rc_gui.ui.h:120 552 | msgid "Disable a file system overlay; changes will be saved to the SD card" 553 | msgstr "Skru av et filsystemoverlegg; endringer vil bli lagret på SD-kortet" 554 | 555 | #: ../data/rc_gui.ui.h:121 556 | msgid "Boot Partition:" 557 | msgstr "Oppstartspartisjon:" 558 | 559 | #: ../data/rc_gui.ui.h:122 560 | msgid "Read-only" 561 | msgstr "Skrivebeskyttet" 562 | 563 | #: ../data/rc_gui.ui.h:123 564 | msgid "Make the boot partition read-only" 565 | msgstr "Gjør oppstartspartisjonen skrivebeskyttet" 566 | 567 | #: ../data/rc_gui.ui.h:124 568 | msgid "Read-write" 569 | msgstr "Les/skriv" 570 | 571 | #: ../data/rc_gui.ui.h:125 572 | msgid "Make the boot partition writable" 573 | msgstr "Gjør oppstartspartisjonen skrivbar" 574 | 575 | #: ../data/rc_gui.ui.h:127 576 | msgid "Change Password" 577 | msgstr "Endre passord" 578 | 579 | #: ../data/rc_gui.ui.h:128 580 | msgid "Enter new password:" 581 | msgstr "Skriv nytt passord:" 582 | 583 | #: ../data/rc_gui.ui.h:129 584 | msgid "Confirm new password:" 585 | msgstr "Bekreft nytt passord:" 586 | 587 | #: ../data/rc_gui.ui.h:130 588 | msgid "Password Not Changed" 589 | msgstr "Passordet ble ikke endret" 590 | 591 | #: ../data/rc_gui.ui.h:131 592 | msgid "" 593 | "The password change failed.\n" 594 | "\n" 595 | "This could be because the current password was incorrect, or because the new " 596 | "password was not sufficiently complex or was too similar to the current " 597 | "password." 598 | msgstr "" 599 | "Passordendringen mislyktes.\n" 600 | "\n" 601 | "Dette kan være fordi det nåværende passordet var feil, eller fordi det nye " 602 | "passordet ikke var tilstrekkelig avansert eller lignet for mye på det " 603 | "nåværende passordet." 604 | 605 | #: ../data/rc_gui.ui.h:134 606 | msgid "Password Changed" 607 | msgstr "Passordet ble endret" 608 | 609 | #: ../data/rc_gui.ui.h:135 610 | msgid "The password has been changed successfully." 611 | msgstr "Passordet har blitt vellykket endret." 612 | 613 | #: ../data/rc_gui.ui.h:136 614 | msgid "Reboot needed" 615 | msgstr "Oppstart er nødvendig" 616 | 617 | #: ../data/rc_gui.ui.h:137 618 | msgid "" 619 | "The changes you have made require the Raspberry Pi to be rebooted to take " 620 | "effect.\n" 621 | "\n" 622 | "Would you like to reboot now? " 623 | msgstr "" 624 | "Endringene du har gjort, krever at Raspberry Pi-maskinen startes på nytt for " 625 | "at de skal benyttes.\n" 626 | "\n" 627 | "Vil du starte på nytt nå? " 628 | 629 | #: ../data/rc_gui.ui.h:140 630 | msgid "Set Resolution" 631 | msgstr "Velg oppløsning" 632 | 633 | #: ../data/rc_gui.ui.h:141 634 | msgid "Timezone" 635 | msgstr "Tidssone" 636 | 637 | #: ../data/rc_gui.ui.h:142 638 | msgid "Area:" 639 | msgstr "Område:" 640 | 641 | #: ../data/rc_gui.ui.h:143 642 | msgid "Location:" 643 | msgstr "Lokasjon:" 644 | 645 | #: ../data/rc_gui.ui.h:144 646 | msgid "WiFi Country Code" 647 | msgstr "Wi-Fi-landskode" 648 | 649 | #: ../data/rc_gui.ui.h:145 650 | msgid "Keyboard" 651 | msgstr "Tastatur" 652 | 653 | #: ../data/rc_gui.ui.h:146 654 | msgid "Model:" 655 | msgstr "Modell:" 656 | 657 | #: ../data/rc_gui.ui.h:147 658 | msgid "Layout:" 659 | msgstr "Utforming:" 660 | 661 | #: ../data/rc_gui.ui.h:148 662 | msgid "Variant:" 663 | msgstr "Variant:" 664 | 665 | #: ../data/rc_gui.ui.h:149 666 | msgid "Reboot Needed" 667 | msgstr "Oppstart er nødvendig" 668 | 669 | #: ../data/rc_gui.ui.h:150 670 | msgid "" 671 | "Your system has recently been updated. Please reboot to ensure these updates " 672 | "have loaded before setting up the overlay file system." 673 | msgstr "" 674 | "Systemet ditt har nylig blitt oppdatert. Vennligst start på nytt for å sørge " 675 | "for at oppdateringene har blitt lastet inn, før du setter opp " 676 | "overleggsfilsystemet." 677 | 678 | #: ../data/rc_gui.desktop.in.h:2 679 | msgid "Configure Raspberry Pi system" 680 | msgstr "Konfigurer Raspberry Pi-systemet" 681 | 682 | #: ../data/pwdrcg.sh:6 683 | msgid "Password Required" 684 | msgstr "Passord påkrevd" 685 | -------------------------------------------------------------------------------- /po/nl.po: -------------------------------------------------------------------------------- 1 | # Raspberry Pi Configuration utility 2 | # Copyright (C) 2015 Raspberry Pi 3 | # This file is distributed under the same license as the rc_gui package. 4 | # Simon Long , 2015. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: PACKAGE VERSION\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-02-23 17:43+0000\n" 11 | "PO-Revision-Date: 2015-10-14 17:00+0100\n" 12 | "Last-Translator: Simon Long \n" 13 | "Language-Team: LANGUAGE \n" 14 | "Language: nl\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | 19 | #: ../src/rc_gui.c:575 20 | msgid "Setting locale - please wait..." 21 | msgstr "Landinstellingen aan het instellen - Wachten AUB..." 22 | 23 | #: ../src/rc_gui.c:735 24 | msgid "Setting timezone - please wait..." 25 | msgstr "Tijdzone aan het goedzetten - Wachten AUB..." 26 | 27 | #: ../data/rc_gui.ui.h:1 ../data/rc_gui.desktop.in.h:1 28 | msgid "Raspberry Pi Configuration" 29 | msgstr "Raspberry pi Configuratie programma" 30 | 31 | #: ../data/rc_gui.ui.h:2 32 | msgid "Filesystem:" 33 | msgstr "bestandssysteem:" 34 | 35 | #: ../data/rc_gui.ui.h:3 36 | msgid "Expand _Filesystem" 37 | msgstr "_bestandssysteem vergroten" 38 | 39 | #: ../data/rc_gui.ui.h:4 40 | msgid "Ensure that all of the SD card storage is available to the OS" 41 | msgstr "Zorg er voor dat alle SD kaart ruimte beschikbaar is voor de OS" 42 | 43 | #: ../data/rc_gui.ui.h:5 44 | msgid "Password:" 45 | msgstr "Wachtwoord:" 46 | 47 | #: ../data/rc_gui.ui.h:6 48 | msgid "Change _Password..." 49 | msgstr "Verander _Wachtwoord..." 50 | 51 | #: ../data/rc_gui.ui.h:7 52 | msgid "Change password for the default user (pi)" 53 | msgstr "Verander het wachtwoord voor de standaard gebruiker (pi)" 54 | 55 | #: ../data/rc_gui.ui.h:8 56 | msgid "Hostname:" 57 | msgstr "Hostname:" 58 | 59 | #: ../data/rc_gui.ui.h:9 60 | msgid "Set the name of your Pi on a local network" 61 | msgstr "Verander de naam van uw PI in het lokale netwerk" 62 | 63 | #: ../data/rc_gui.ui.h:10 64 | msgid "Boot:" 65 | msgstr "opstarten:" 66 | 67 | #: ../data/rc_gui.ui.h:11 68 | msgid "To Desktop" 69 | msgstr "Naar bureaublad" 70 | 71 | #: ../data/rc_gui.ui.h:12 72 | msgid "Launch the desktop environment automatically on boot" 73 | msgstr "start de desktop omgeving automatisch op bij het opstarten " 74 | 75 | #: ../data/rc_gui.ui.h:13 76 | msgid "To CLI" 77 | msgstr "Naar CLI" 78 | 79 | #: ../data/rc_gui.ui.h:14 80 | msgid "Boot into a command line shell rather than the desktop" 81 | msgstr "Start de Command line shell in de plaats van de Desktop Omgeving" 82 | 83 | #: ../data/rc_gui.ui.h:15 84 | msgid "Auto login:" 85 | msgstr "Auto Login:" 86 | 87 | #: ../data/rc_gui.ui.h:16 88 | msgid "Login as user 'pi'" 89 | msgstr "Login als gebruiker 'pi'" 90 | 91 | #: ../data/rc_gui.ui.h:17 92 | msgid "Automatically log in the default user (pi)" 93 | msgstr "Automatisch in loggen als de gebruiker (pi)" 94 | 95 | #: ../data/rc_gui.ui.h:18 96 | msgid "Network at Boot:" 97 | msgstr "Network at Boot:" 98 | 99 | #: ../data/rc_gui.ui.h:19 100 | msgid "Wait for network" 101 | msgstr "Wachten op netwerk" 102 | 103 | #: ../data/rc_gui.ui.h:20 104 | msgid "Do not complete boot until network connection is established" 105 | msgstr "Start niet op zonder netwerk connectie" 106 | 107 | #: ../data/rc_gui.ui.h:21 108 | msgid "Overscan:" 109 | msgstr "Overscan:" 110 | 111 | #: ../data/rc_gui.ui.h:22 112 | msgid "Enable" 113 | msgstr "Aan" 114 | 115 | #: ../data/rc_gui.ui.h:23 116 | msgid "Enable overscan to show the edges of the screen" 117 | msgstr "Overscan aan zetten om de randen van het scherm te zien" 118 | 119 | #: ../data/rc_gui.ui.h:24 120 | msgid "Disable" 121 | msgstr "Uit" 122 | 123 | #: ../data/rc_gui.ui.h:25 124 | msgid "Disable overscan to hide black outline on screen" 125 | msgstr "Overscan uit zetten om de randen van het scherm te verbergen" 126 | 127 | #: ../data/rc_gui.ui.h:26 128 | msgid "Rastrack:" 129 | msgstr "Rastrack:" 130 | 131 | #: ../data/rc_gui.ui.h:27 132 | msgid "Add to _Rastrack..." 133 | msgstr "Toevoegen aan _Rastrack..." 134 | 135 | #: ../data/rc_gui.ui.h:28 136 | msgid "Add this Pi to the online Raspberry Pi map" 137 | msgstr "Voeg deze PI toe aan de online Raspberry Pi map" 138 | 139 | #: ../data/rc_gui.ui.h:29 140 | msgid "System" 141 | msgstr "Systeem" 142 | 143 | #: ../data/rc_gui.ui.h:30 144 | msgid "Camera:" 145 | msgstr "Camera:" 146 | 147 | #: ../data/rc_gui.ui.h:31 148 | msgid "Enable the Raspberry Pi Camera Board" 149 | msgstr "Zet de Raspberry Pi Camera Board aan" 150 | 151 | #: ../data/rc_gui.ui.h:32 152 | msgid "Disable the Raspberry Pi Camera Board" 153 | msgstr "Zet de Raspberry Pi Camera Board uit" 154 | 155 | #: ../data/rc_gui.ui.h:33 156 | msgid "SSH:" 157 | msgstr "SSH:" 158 | 159 | #: ../data/rc_gui.ui.h:34 160 | msgid "Enable remote access to this Pi via SSH" 161 | msgstr "Afstand besturing aan zetten op deze PI via SSH" 162 | 163 | #: ../data/rc_gui.ui.h:35 164 | msgid "Disable remote access to this Pi via SSH" 165 | msgstr "Afstand besturing uit zetten op deze PI via SSH" 166 | 167 | #: ../data/rc_gui.ui.h:36 168 | msgid "SPI:" 169 | msgstr "SPI:" 170 | 171 | #: ../data/rc_gui.ui.h:37 172 | msgid "Enable the automatic loading of the SPI kernel module" 173 | msgstr "Aanzetten van het automatisch laden van de SPI kernel module" 174 | 175 | #: ../data/rc_gui.ui.h:38 176 | msgid "Disable the automatic loading of the SPI kernel module" 177 | msgstr "Uitzetten van het automatisch laden van de SPI kernel module" 178 | 179 | #: ../data/rc_gui.ui.h:39 180 | msgid "I2C:" 181 | msgstr "I2C:" 182 | 183 | #: ../data/rc_gui.ui.h:40 184 | msgid "Enable the automatic loading of the I2C kernel module" 185 | msgstr "Aanzetten van het automatisch laden van de I2C kernel module" 186 | 187 | #: ../data/rc_gui.ui.h:41 188 | msgid "Disable the automatic loading of the I2C kernel module" 189 | msgstr "Uitzetten van het automatisch laden van de I2C kernel module" 190 | 191 | #: ../data/rc_gui.ui.h:42 192 | msgid "Serial:" 193 | msgstr "Serial:" 194 | 195 | #: ../data/rc_gui.ui.h:43 196 | msgid "Enable shell and kernel messages on the serial connection" 197 | msgstr "Zet berichten van Shell en Kernel aan op de seriële connectie" 198 | 199 | #: ../data/rc_gui.ui.h:44 200 | msgid "Disable shell and kernel messages on the serial connection" 201 | msgstr "Zet berichten van Shell en Kernel uit op de seriële connectien" 202 | 203 | #: ../data/rc_gui.ui.h:45 204 | msgid "Interfaces" 205 | msgstr "Interfaces" 206 | 207 | #: ../data/rc_gui.ui.h:46 208 | msgid "O_verclock:" 209 | msgstr "Overclock:" 210 | 211 | #: ../data/rc_gui.ui.h:47 212 | msgid "Set the level of overclock to control performance" 213 | msgstr "Zet het level van overclock naar control performance" 214 | 215 | #: ../data/rc_gui.ui.h:48 216 | msgid "None (700MHz)" 217 | msgstr "Geen (700MHz)" 218 | 219 | #: ../data/rc_gui.ui.h:49 220 | msgid "Modest (800MHz)" 221 | msgstr "Licht (800MHz)" 222 | 223 | #: ../data/rc_gui.ui.h:50 224 | msgid "Medium (900MHz)" 225 | msgstr "Middelmatig (900MHz)" 226 | 227 | #: ../data/rc_gui.ui.h:51 228 | msgid "High (950MHz)" 229 | msgstr "Hoog (950MHz)" 230 | 231 | #: ../data/rc_gui.ui.h:52 232 | msgid "Turbo (1000MHz)" 233 | msgstr "Turbo (1000MHz)" 234 | 235 | #: ../data/rc_gui.ui.h:53 236 | msgid "None (900MHz)" 237 | msgstr "geen (900MHz)" 238 | 239 | #: ../data/rc_gui.ui.h:54 240 | msgid "High (1000MHz)" 241 | msgstr "Hoog (1000MHz)" 242 | 243 | #: ../data/rc_gui.ui.h:55 244 | msgid "Not available" 245 | msgstr "Niet beschikbaar" 246 | 247 | #: ../data/rc_gui.ui.h:56 248 | msgid "_GPU Memory:" 249 | msgstr "Video Geheugen:" 250 | 251 | #: ../data/rc_gui.ui.h:57 252 | msgid "Enter the amount of memory available to the GPU" 253 | msgstr "Typ het nummer voor beschikbare video geheugen" 254 | 255 | #: ../data/rc_gui.ui.h:58 256 | msgid "Performance" 257 | msgstr "Prestatie" 258 | 259 | #: ../data/rc_gui.ui.h:59 260 | msgid "Locale:" 261 | msgstr "Landinstellingen:" 262 | 263 | #: ../data/rc_gui.ui.h:60 264 | msgid "Set _Locale..." 265 | msgstr "Stel _Landinstellingen in..." 266 | 267 | #: ../data/rc_gui.ui.h:61 268 | msgid "Set internationalisation settings for units etc." 269 | msgstr "Stel de internationale instellingen in voor eenheden etc." 270 | 271 | #: ../data/rc_gui.ui.h:62 272 | msgid "Timezone:" 273 | msgstr "Tijdzone:" 274 | 275 | #: ../data/rc_gui.ui.h:63 276 | msgid "Set _Timezone..." 277 | msgstr "Stel de _Tijzone in..." 278 | 279 | #: ../data/rc_gui.ui.h:64 280 | msgid "Set the timezone to be used by the internal clock" 281 | msgstr "Stel de tijdzone in die wordt gebruikt door de interne klok" 282 | 283 | #: ../data/rc_gui.ui.h:65 284 | msgid "Keyboard:" 285 | msgstr "Toetsenbord:" 286 | 287 | #: ../data/rc_gui.ui.h:66 288 | msgid "Set _Keyboard..." 289 | msgstr "Stel _Toetsenbord in..." 290 | 291 | #: ../data/rc_gui.ui.h:67 292 | msgid "Set international keyboard options" 293 | msgstr "stel de internationale toetsenbord instellingen in" 294 | 295 | #: ../data/rc_gui.ui.h:68 296 | msgid "WiFi Country:" 297 | msgstr "WiFi Land:" 298 | 299 | #: ../data/rc_gui.ui.h:69 300 | msgid "Set _WiFi Country..." 301 | msgstr "Stel _WiFi Land in..." 302 | 303 | #: ../data/rc_gui.ui.h:70 304 | msgid "Set WiFi country code" 305 | msgstr "stel WiFi land code in" 306 | 307 | #: ../data/rc_gui.ui.h:71 308 | msgid "Localisation" 309 | msgstr "Localizatie" 310 | 311 | #: ../data/rc_gui.ui.h:72 312 | msgid "" 313 | "The Raspberry Pi Configuration application can only modify a standard " 314 | "configuration.\n" 315 | "\n" 316 | "Your configuration appears to have been modified by other tools, and so this " 317 | "application cannot be used on your system.\n" 318 | "\n" 319 | "In order to use this application, you need to have the latest firmware " 320 | "installed, Device Tree enabled, the default \"pi\" user set up and the " 321 | "lightdm application installed. " 322 | msgstr "" 323 | "Het Raspberry Pi configuratie applicatie kan enkel een standaard" 324 | "configuratie aanpassen.\n" 325 | "\n" 326 | "Uw configuratie is aangepast door een ander programma, dus " 327 | "kan deze applicatie niet gebruikt worden op uw systeem.\n" 328 | "\n" 329 | "Om deze applicatie te gebruiken, moet u de laaste firmware versie " 330 | "geinstalleert zijn, Device Tree aanstaan, de standaard \"pi\" gebruiker ingesteld zijn en " 331 | "de lightdm applicatie geinstalleert zijn " 332 | 333 | #: ../data/rc_gui.ui.h:77 334 | msgid "Filesystem Expanded" 335 | msgstr "Bestands systeem uitgebreid" 336 | 337 | #: ../data/rc_gui.ui.h:78 338 | msgid "" 339 | "The filesystem has been expanded.\n" 340 | "\n" 341 | "The new space will not be available until you reboot your Raspberry Pi." 342 | msgstr "" 343 | "Het bestands systeem is uitgebreid..\n" 344 | "\n" 345 | "De nieuwe schijfruimte is niet beschikbaar tot uw u raspberry pi opnieuw opstart." 346 | 347 | #: ../data/rc_gui.ui.h:81 348 | msgid "Locale" 349 | msgstr "Land instellingen" 350 | 351 | #: ../data/rc_gui.ui.h:82 352 | msgid "Language:" 353 | msgstr "Taal:" 354 | 355 | #: ../data/rc_gui.ui.h:83 356 | msgid "Country:" 357 | msgstr "Land:" 358 | 359 | #: ../data/rc_gui.ui.h:84 360 | msgid "Character Set:" 361 | msgstr "Character Set:" 362 | 363 | #: ../data/rc_gui.ui.h:85 364 | msgid "Change Password" 365 | msgstr "Verander wachtwoord" 366 | 367 | #: ../data/rc_gui.ui.h:86 368 | msgid "Enter new password:" 369 | msgstr "New Wachtwoord invoeren:" 370 | 371 | #: ../data/rc_gui.ui.h:87 372 | msgid "Confirm new password:" 373 | msgstr "Herhaal nieuw wachtwoord:" 374 | 375 | #: ../data/rc_gui.ui.h:88 376 | msgid "Rastrack Registration" 377 | msgstr "Rastrack registratie" 378 | 379 | #: ../data/rc_gui.ui.h:89 380 | msgid "" 381 | "Rastrack (http://www.rastrack.co.uk) is a website which tracks the location " 382 | "of Raspberry Pis around the world. If you would like to be added to it, " 383 | "enter your name and email address below.\n" 384 | "\n" 385 | "This is entirely optional and does not form an official registration " 386 | "process.\n" 387 | msgstr "" 388 | "Rastrack (http://www.rastrack.co.uk) is een website die de locatie van " 389 | "Raspberry Pis rond de wereld. Als u die van u wilt toevoegen, " 390 | "Moet uw uw naam en email adres hier onder invullen.\n" 391 | "\n" 392 | "Dit is geheel niet verplicht en is geen form van officele registratie " 393 | "process.\n" 394 | 395 | #: ../data/rc_gui.ui.h:93 396 | msgid "Username:" 397 | msgstr "Gebruikers naam:" 398 | 399 | #: ../data/rc_gui.ui.h:94 400 | msgid "Email Address:" 401 | msgstr "Email Address:" 402 | 403 | #: ../data/rc_gui.ui.h:95 404 | msgid "Reboot needed" 405 | msgstr "Herstart nodig" 406 | 407 | #: ../data/rc_gui.ui.h:96 408 | msgid "" 409 | "The changes you have made require the Raspberry Pi to be rebooted to take " 410 | "effect.\n" 411 | "\n" 412 | "Would you like to reboot now? " 413 | msgstr "" 414 | "Door de veranderingen die gemaakt zijn moet de Raspberry Pi opnieuw opstarten voor " 415 | "het effect heeft.\n" 416 | "\n" 417 | "Wilt u nu opnieuw opstarten? " 418 | 419 | #: ../data/rc_gui.ui.h:99 420 | msgid "Timezone" 421 | msgstr "Tijdzone" 422 | 423 | #: ../data/rc_gui.ui.h:100 424 | msgid "Area:" 425 | msgstr "Regio:" 426 | 427 | #: ../data/rc_gui.ui.h:101 428 | msgid "Location:" 429 | msgstr "locatie:" 430 | 431 | #: ../data/rc_gui.ui.h:102 432 | msgid "WiFi Country Code" 433 | msgstr "WiFi Land code" 434 | 435 | #: ../data/rc_gui.desktop.in.h:2 436 | msgid "Configure Raspberry Pi system" 437 | msgstr "Stel het Raspberry Pi systeem in" 438 | -------------------------------------------------------------------------------- /po/zh_TW.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # 4 | # Jeff Huang , 2016. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: \n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2016-04-22 10:14+0100\n" 10 | "PO-Revision-Date: 2016-04-23 11:22+0800\n" 11 | "Last-Translator: Jeff Huang \n" 12 | "Language-Team: Chinese \n" 13 | "Language: zh_TW\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 18 | "X-Generator: Lokalize 2.0\n" 19 | 20 | #: ../src/rc_gui.c:598 21 | msgid "Setting locale - please wait..." 22 | msgstr "正在設定語系 - 請稍候..." 23 | 24 | #: ../src/rc_gui.c:758 25 | msgid "Setting timezone - please wait..." 26 | msgstr "正在設定時區 - 請稍候..." 27 | 28 | #: ../data/rc_gui.ui.h:1 ../data/rc_gui.desktop.in.h:1 29 | msgid "Raspberry Pi Configuration" 30 | msgstr "Raspberry Pi 設定" 31 | 32 | #: ../data/rc_gui.ui.h:2 33 | msgid "Filesystem:" 34 | msgstr "檔案系統:" 35 | 36 | #: ../data/rc_gui.ui.h:3 37 | msgid "Expand _Filesystem" 38 | msgstr "擴展檔案系統(_F)" 39 | 40 | #: ../data/rc_gui.ui.h:4 41 | msgid "Ensure that all of the SD card storage is available to the OS" 42 | msgstr "確保整個 SD 記憶卡的儲存空間都可以給作業系統使用" 43 | 44 | #: ../data/rc_gui.ui.h:5 45 | msgid "Password:" 46 | msgstr "密碼:" 47 | 48 | #: ../data/rc_gui.ui.h:6 49 | msgid "Change _Password..." 50 | msgstr "變更密碼... (_P)" 51 | 52 | #: ../data/rc_gui.ui.h:7 53 | msgid "Change password for the default user (pi)" 54 | msgstr "為預設的使用者 (pi) 變更密碼" 55 | 56 | #: ../data/rc_gui.ui.h:8 57 | msgid "Hostname:" 58 | msgstr "主機名稱:" 59 | 60 | #: ../data/rc_gui.ui.h:9 61 | msgid "Set the name of your Pi on a local network" 62 | msgstr "設定您的 Pi 在本機網路上的名稱" 63 | 64 | #: ../data/rc_gui.ui.h:10 65 | msgid "Boot:" 66 | msgstr "開機:" 67 | 68 | #: ../data/rc_gui.ui.h:11 69 | msgid "To Desktop" 70 | msgstr "到桌面" 71 | 72 | #: ../data/rc_gui.ui.h:12 73 | msgid "Launch the desktop environment automatically on boot" 74 | msgstr "在開機時自動進入桌面環境" 75 | 76 | #: ../data/rc_gui.ui.h:13 77 | msgid "To CLI" 78 | msgstr "到命令列介面" 79 | 80 | #: ../data/rc_gui.ui.h:14 81 | msgid "Boot into a command line shell rather than the desktop" 82 | msgstr "開機時進入命令列殼層而非桌面環境" 83 | 84 | #: ../data/rc_gui.ui.h:15 85 | msgid "Auto login:" 86 | msgstr "自動登入:" 87 | 88 | #: ../data/rc_gui.ui.h:16 89 | msgid "Login as user 'pi'" 90 | msgstr "登入為使用者「pi」" 91 | 92 | #: ../data/rc_gui.ui.h:17 93 | msgid "Automatically log in the default user (pi)" 94 | msgstr "自動登入到預設的使用者 (pi)" 95 | 96 | #: ../data/rc_gui.ui.h:18 97 | msgid "Network at Boot:" 98 | msgstr "開機時的網路:" 99 | 100 | #: ../data/rc_gui.ui.h:19 101 | msgid "Wait for network" 102 | msgstr "等待網路" 103 | 104 | #: ../data/rc_gui.ui.h:20 105 | msgid "Do not complete boot until network connection is established" 106 | msgstr "在網路連線建立前不要完成開機" 107 | 108 | #: ../data/rc_gui.ui.h:21 109 | msgid "Overscan:" 110 | msgstr "過掃描:" 111 | 112 | #: ../data/rc_gui.ui.h:22 113 | msgid "Enable" 114 | msgstr "啟用" 115 | 116 | #: ../data/rc_gui.ui.h:23 117 | msgid "Enable overscan to show the edges of the screen" 118 | msgstr "啟用過掃描以顯示螢幕的邊緣" 119 | 120 | #: ../data/rc_gui.ui.h:24 121 | msgid "Disable" 122 | msgstr "停用" 123 | 124 | #: ../data/rc_gui.ui.h:25 125 | msgid "Disable overscan to hide black outline on screen" 126 | msgstr "停用過掃描以隱藏螢幕上的黑色外框" 127 | 128 | #: ../data/rc_gui.ui.h:26 129 | msgid "Rastrack:" 130 | msgstr "Rastrack:" 131 | 132 | #: ../data/rc_gui.ui.h:27 133 | msgid "Add to _Rastrack..." 134 | msgstr "加入 Rastrack... (_R)" 135 | 136 | #: ../data/rc_gui.ui.h:28 137 | msgid "Add this Pi to the online Raspberry Pi map" 138 | msgstr "將這臺 Pi 加入到線上的 Raspberry Pi 地圖中" 139 | 140 | #: ../data/rc_gui.ui.h:29 141 | msgid "System" 142 | msgstr "系統" 143 | 144 | #: ../data/rc_gui.ui.h:30 145 | msgid "Camera:" 146 | msgstr "攝影機:" 147 | 148 | #: ../data/rc_gui.ui.h:31 149 | msgid "Enable the Raspberry Pi Camera Board" 150 | msgstr "啟用 Raspberry Pi 攝影機板" 151 | 152 | #: ../data/rc_gui.ui.h:32 153 | msgid "Disable the Raspberry Pi Camera Board" 154 | msgstr "停用 Raspberry Pi 攝影機板" 155 | 156 | #: ../data/rc_gui.ui.h:33 157 | msgid "SSH:" 158 | msgstr "SSH:" 159 | 160 | #: ../data/rc_gui.ui.h:34 161 | msgid "Enable remote access to this Pi via SSH" 162 | msgstr "啟用經由 SSH 遠端存取這臺 Pi" 163 | 164 | #: ../data/rc_gui.ui.h:35 165 | msgid "Disable remote access to this Pi via SSH" 166 | msgstr "停用經由 SSH 遠端存取這臺 Pi" 167 | 168 | #: ../data/rc_gui.ui.h:36 169 | msgid "SPI:" 170 | msgstr "SPI:" 171 | 172 | #: ../data/rc_gui.ui.h:37 173 | msgid "Enable the automatic loading of the SPI kernel module" 174 | msgstr "啟用自動載入 SPI 核心模組" 175 | 176 | #: ../data/rc_gui.ui.h:38 177 | msgid "Disable the automatic loading of the SPI kernel module" 178 | msgstr "停用自動載入 SPI 核心模組" 179 | 180 | #: ../data/rc_gui.ui.h:39 181 | msgid "I2C:" 182 | msgstr "I2C:" 183 | 184 | #: ../data/rc_gui.ui.h:40 185 | msgid "Enable the automatic loading of the I2C kernel module" 186 | msgstr "啟用自動載入 I2C 核心模組" 187 | 188 | #: ../data/rc_gui.ui.h:41 189 | msgid "Disable the automatic loading of the I2C kernel module" 190 | msgstr "停用自動載入 I2C 核心模組" 191 | 192 | #: ../data/rc_gui.ui.h:42 193 | msgid "Serial:" 194 | msgstr "串列:" 195 | 196 | #: ../data/rc_gui.ui.h:43 197 | msgid "Enable shell and kernel messages on the serial connection" 198 | msgstr "在串列連線中啟用殼層與核心訊息" 199 | 200 | #: ../data/rc_gui.ui.h:44 201 | msgid "Disable shell and kernel messages on the serial connection" 202 | msgstr "在串列連線中停用殼層與核心訊息" 203 | 204 | #: ../data/rc_gui.ui.h:45 205 | msgid "1-Wire:" 206 | msgstr "1-Wire:" 207 | 208 | #: ../data/rc_gui.ui.h:46 209 | msgid "Enable 1-wire peripheral interface" 210 | msgstr "啟用 1-wire 外部介面" 211 | 212 | #: ../data/rc_gui.ui.h:47 213 | msgid "Disable 1-wire peripheral interface" 214 | msgstr "停用 1-wire 外部介面" 215 | 216 | #: ../data/rc_gui.ui.h:48 217 | msgid "Remote GPIO:" 218 | msgstr "遠端 GPIO:" 219 | 220 | #: ../data/rc_gui.ui.h:49 221 | msgid "Enable remote access to GPIO pins" 222 | msgstr "啟用遠端存取 GPIO 針腳" 223 | 224 | #: ../data/rc_gui.ui.h:50 225 | msgid "Disable remote access to GPIO pins" 226 | msgstr "停用遠端存取 GPIO 針腳" 227 | 228 | #: ../data/rc_gui.ui.h:51 229 | msgid "Interfaces" 230 | msgstr "介面" 231 | 232 | #: ../data/rc_gui.ui.h:52 233 | msgid "O_verclock:" 234 | msgstr "超頻(_V):" 235 | 236 | #: ../data/rc_gui.ui.h:53 237 | msgid "Set the level of overclock to control performance" 238 | msgstr "設定超頻等級以控制效能" 239 | 240 | #: ../data/rc_gui.ui.h:54 241 | msgid "None (700MHz)" 242 | msgstr "無 (700MHz)" 243 | 244 | #: ../data/rc_gui.ui.h:55 245 | msgid "Modest (800MHz)" 246 | msgstr "適量 (800MHz)" 247 | 248 | #: ../data/rc_gui.ui.h:56 249 | msgid "Medium (900MHz)" 250 | msgstr "中等 (900MHz)" 251 | 252 | #: ../data/rc_gui.ui.h:57 253 | msgid "High (950MHz)" 254 | msgstr "高 (950MHz)" 255 | 256 | #: ../data/rc_gui.ui.h:58 257 | msgid "Turbo (1000MHz)" 258 | msgstr "渦輪加速 (1000MHz)" 259 | 260 | #: ../data/rc_gui.ui.h:59 261 | msgid "None (900MHz)" 262 | msgstr "無 (900MHz)" 263 | 264 | #: ../data/rc_gui.ui.h:60 265 | msgid "High (1000MHz)" 266 | msgstr "高 (1000MHz)" 267 | 268 | #: ../data/rc_gui.ui.h:61 269 | msgid "Not available" 270 | msgstr "不可用" 271 | 272 | #: ../data/rc_gui.ui.h:62 273 | msgid "_GPU Memory:" 274 | msgstr "GPU 記憶體(_G):" 275 | 276 | #: ../data/rc_gui.ui.h:63 277 | msgid "Enter the amount of memory available to the GPU" 278 | msgstr "輸入要提供給 GPU 的記憶體大小" 279 | 280 | #: ../data/rc_gui.ui.h:64 281 | msgid "Performance" 282 | msgstr "效能" 283 | 284 | #: ../data/rc_gui.ui.h:65 285 | msgid "Locale:" 286 | msgstr "語系:" 287 | 288 | #: ../data/rc_gui.ui.h:66 289 | msgid "Set _Locale..." 290 | msgstr "設定語系... (_L)" 291 | 292 | #: ../data/rc_gui.ui.h:67 293 | msgid "Set internationalisation settings for units etc." 294 | msgstr "為單位等事物設定國際化設定" 295 | 296 | #: ../data/rc_gui.ui.h:68 297 | msgid "Timezone:" 298 | msgstr "時區:" 299 | 300 | #: ../data/rc_gui.ui.h:69 301 | msgid "Set _Timezone..." 302 | msgstr "設定時區... (_T)" 303 | 304 | #: ../data/rc_gui.ui.h:70 305 | msgid "Set the timezone to be used by the internal clock" 306 | msgstr "設定要用於內部時鐘的時區" 307 | 308 | #: ../data/rc_gui.ui.h:71 309 | msgid "Keyboard:" 310 | msgstr "鍵盤:" 311 | 312 | #: ../data/rc_gui.ui.h:72 313 | msgid "Set _Keyboard..." 314 | msgstr "設定鍵盤... (_K)" 315 | 316 | #: ../data/rc_gui.ui.h:73 317 | msgid "Set international keyboard options" 318 | msgstr "設定國際鍵盤選項" 319 | 320 | #: ../data/rc_gui.ui.h:74 321 | msgid "WiFi Country:" 322 | msgstr "WiFi 國家:" 323 | 324 | #: ../data/rc_gui.ui.h:75 325 | msgid "Set _WiFi Country..." 326 | msgstr "設定 WiFi 國家... (_W)" 327 | 328 | #: ../data/rc_gui.ui.h:76 329 | msgid "Set WiFi country code" 330 | msgstr "設定 WiFi 國碼" 331 | 332 | #: ../data/rc_gui.ui.h:77 333 | msgid "Localisation" 334 | msgstr "在地化" 335 | 336 | #: ../data/rc_gui.ui.h:78 337 | msgid "" 338 | "The Raspberry Pi Configuration application can only modify a standard " 339 | "configuration.\n" 340 | "\n" 341 | "Your configuration appears to have been modified by other tools, and so this " 342 | "application cannot be used on your system.\n" 343 | "\n" 344 | "In order to use this application, you need to have the latest firmware " 345 | "installed, Device Tree enabled, the default \"pi\" user set up and the " 346 | "lightdm application installed. " 347 | msgstr "" 348 | "Raspberry Pi 設定應用程式只能修改標準的 設定。\n" 349 | "\n" 350 | "您的設定似乎已被其他工具修改過了,所以 本應用程式無法在您的系統上使用。\n" 351 | "\n" 352 | "為了使用本應用程式,您需要安裝最新的韌體, 並啟用裝置樹,預設的「pi」使用者設" 353 | "定好並 安裝好 lightdm。 " 354 | 355 | #: ../data/rc_gui.ui.h:83 356 | msgid "Filesystem Expanded" 357 | msgstr "檔案系統已擴展" 358 | 359 | #: ../data/rc_gui.ui.h:84 360 | msgid "" 361 | "The filesystem has been expanded.\n" 362 | "\n" 363 | "The new space will not be available until you reboot your Raspberry Pi." 364 | msgstr "" 365 | "檔案系統已經被擴展了。\n" 366 | "\n" 367 | "在您重新啟動您的 Raspberry Pi 後,新的空間才可用。" 368 | 369 | #: ../data/rc_gui.ui.h:87 370 | msgid "Locale" 371 | msgstr "語系" 372 | 373 | #: ../data/rc_gui.ui.h:88 374 | msgid "Language:" 375 | msgstr "語言:" 376 | 377 | #: ../data/rc_gui.ui.h:89 378 | msgid "Country:" 379 | msgstr "國家:" 380 | 381 | #: ../data/rc_gui.ui.h:90 382 | msgid "Character Set:" 383 | msgstr "字元集:" 384 | 385 | #: ../data/rc_gui.ui.h:91 386 | msgid "Change Password" 387 | msgstr "變更密碼" 388 | 389 | #: ../data/rc_gui.ui.h:92 390 | msgid "Enter new password:" 391 | msgstr "輸入新的密碼:" 392 | 393 | #: ../data/rc_gui.ui.h:93 394 | msgid "Confirm new password:" 395 | msgstr "確認新的密碼:" 396 | 397 | #: ../data/rc_gui.ui.h:94 398 | msgid "Rastrack Registration" 399 | msgstr "Rastrack 註冊" 400 | 401 | #: ../data/rc_gui.ui.h:95 402 | msgid "" 403 | "Rastrack (http://www.rastrack.co.uk) is a website which tracks the location " 404 | "of Raspberry Pis around the world. If you would like to be added to it, " 405 | "enter your name and email address below.\n" 406 | "\n" 407 | "This is entirely optional and does not form an official registration " 408 | "process.\n" 409 | msgstr "" 410 | "Rastrack (http://www.rastrack.co.uk) 是一個會追蹤世界各地的 Raspberry Pi 的網" 411 | "頁。若您想要加入, 請在下方輸入您的名字與電子郵件地址。\n" 412 | "\n" 413 | "這完全是一個選擇性且並非官方的註冊 程序。\n" 414 | 415 | #: ../data/rc_gui.ui.h:99 416 | msgid "Username:" 417 | msgstr "使用者名稱:" 418 | 419 | #: ../data/rc_gui.ui.h:100 420 | msgid "Email Address:" 421 | msgstr "電子郵件地址:" 422 | 423 | #: ../data/rc_gui.ui.h:101 424 | msgid "Reboot needed" 425 | msgstr "需要重新啟動" 426 | 427 | #: ../data/rc_gui.ui.h:102 428 | msgid "" 429 | "The changes you have made require the Raspberry Pi to be rebooted to take " 430 | "effect.\n" 431 | "\n" 432 | "Would you like to reboot now? " 433 | msgstr "" 434 | "您所做出的變更需要重新啟動 Raspberry Pi 以產生效果。\n" 435 | "\n" 436 | "您想要立刻重新啟動嗎? " 437 | 438 | #: ../data/rc_gui.ui.h:105 439 | msgid "Timezone" 440 | msgstr "時區" 441 | 442 | #: ../data/rc_gui.ui.h:106 443 | msgid "Area:" 444 | msgstr "區域:" 445 | 446 | #: ../data/rc_gui.ui.h:107 447 | msgid "Location:" 448 | msgstr "位置:" 449 | 450 | #: ../data/rc_gui.ui.h:108 451 | msgid "WiFi Country Code" 452 | msgstr "WiFi 國碼" 453 | 454 | #: ../data/rc_gui.desktop.in.h:2 455 | msgid "Configure Raspberry Pi system" 456 | msgstr "設定 Raspberry Pi 系統" 457 | 458 | -------------------------------------------------------------------------------- /src/display.c: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | 28 | #include 29 | #include 30 | #include 31 | 32 | #include "rc_gui.h" 33 | 34 | /*----------------------------------------------------------------------------*/ 35 | /* Typedefs and macros */ 36 | /*----------------------------------------------------------------------------*/ 37 | 38 | #define GET_OVERSCAN GET_PREFIX "get_overscan_kms 1" 39 | #define GET_OVERSCAN2 GET_PREFIX "get_overscan_kms 2" 40 | #define SET_OVERSCAN SET_PREFIX "do_overscan_kms 1 %d" 41 | #define SET_OVERSCAN2 SET_PREFIX "do_overscan_kms 2 %d" 42 | #define GET_BLANK GET_PREFIX "get_blanking" 43 | #define SET_BLANK SET_PREFIX "do_blanking %d" 44 | #define GET_VNC_RES GET_PREFIX "get_vnc_resolution" 45 | #define SET_VNC_RES SET_PREFIX "do_vnc_resolution %s" 46 | #define GET_SQUEEK GET_PREFIX "get_squeekboard" 47 | #define SET_SQUEEK SET_PREFIX "do_squeekboard S%d" 48 | #define GET_SQUEEKOUT GET_PREFIX "get_squeek_output" 49 | #define SET_SQUEEKOUT SET_PREFIX "do_squeek_output %s" 50 | #define VKBD_INSTALLED GET_PREFIX "is_installed squeekboard" 51 | #define XSCR_INSTALLED GET_PREFIX "is_installed xscreensaver" 52 | 53 | /*----------------------------------------------------------------------------*/ 54 | /* Global data */ 55 | /*----------------------------------------------------------------------------*/ 56 | 57 | static GObject *overscan_sw, *overscan2_sw, *blank_sw, *vnc_res_cb, *squeek_cb, *squeekop_cb; 58 | static int orig_overscan, orig_overscan2, orig_blank, orig_vnc_res, orig_squeek; 59 | static char *orig_sop; 60 | 61 | /*----------------------------------------------------------------------------*/ 62 | /* Prototypes */ 63 | /*----------------------------------------------------------------------------*/ 64 | 65 | static int num_screens (void); 66 | #ifdef REALTIME 67 | static void on_squeekboard_set (GtkComboBox *cb, gpointer ptr); 68 | static void on_squeek_output_set (GtkComboBoxText *cb, gpointer ptr); 69 | static void on_vnc_res_set (GtkComboBoxText *cb, gpointer ptr); 70 | static gboolean process_cb (gpointer data); 71 | #endif 72 | 73 | /*----------------------------------------------------------------------------*/ 74 | /* Function definitions */ 75 | /*----------------------------------------------------------------------------*/ 76 | 77 | /*----------------------------------------------------------------------------*/ 78 | /* Helpers */ 79 | /*----------------------------------------------------------------------------*/ 80 | 81 | static int num_screens (void) 82 | { 83 | if (wm != WM_OPENBOX) 84 | return get_status ("wlr-randr | grep -cv '^ '"); 85 | else 86 | return get_status ("xrandr -q | grep -cw connected"); 87 | } 88 | 89 | /*----------------------------------------------------------------------------*/ 90 | /* Real-time handlers */ 91 | /*----------------------------------------------------------------------------*/ 92 | 93 | #ifdef REALTIME 94 | 95 | static void on_squeekboard_set (GtkComboBox *cb, gpointer ptr) 96 | { 97 | char *cmd; 98 | set_watch_cursor (); 99 | cmd = g_strdup_printf (SET_SQUEEK, gtk_combo_box_get_active (cb) + 1); 100 | g_idle_add (process_cb, cmd); 101 | } 102 | 103 | static void on_squeek_output_set (GtkComboBoxText *cb, gpointer ptr) 104 | { 105 | char *cmd, *op; 106 | set_watch_cursor (); 107 | op = gtk_combo_box_text_get_active_text (cb); 108 | cmd = g_strdup_printf (SET_SQUEEKOUT, op); 109 | g_free (op); 110 | g_idle_add (process_cb, cmd); 111 | } 112 | 113 | static void on_vnc_res_set (GtkComboBoxText *cb, gpointer ptr) 114 | { 115 | char *cmd, *vres; 116 | set_watch_cursor (); 117 | vres = gtk_combo_box_text_get_active_text (cb); 118 | cmd = g_strdup_printf (SET_VNC_RES, vres); 119 | g_free (vres); 120 | g_idle_add (process_cb, cmd); 121 | } 122 | 123 | static gboolean process_cb (gpointer data) 124 | { 125 | char *cmd = (char *) data; 126 | vsystem (cmd); 127 | g_free (cmd); 128 | clear_watch_cursor (); 129 | return FALSE; 130 | } 131 | 132 | #endif 133 | 134 | /*----------------------------------------------------------------------------*/ 135 | /* Exit processing */ 136 | /*----------------------------------------------------------------------------*/ 137 | 138 | gboolean read_display_tab (void) 139 | { 140 | gboolean reboot = FALSE; 141 | char *cptr; 142 | 143 | READ_SWITCH (blank_sw, orig_blank, SET_BLANK, wm == WM_OPENBOX ? TRUE : FALSE); 144 | READ_SWITCH (overscan_sw, orig_overscan, SET_OVERSCAN, FALSE); 145 | READ_SWITCH (overscan2_sw, orig_overscan2, SET_OVERSCAN2, FALSE); 146 | 147 | if (gtk_combo_box_get_active (GTK_COMBO_BOX (squeek_cb)) != orig_squeek) 148 | { 149 | vsystem (SET_SQUEEK, gtk_combo_box_get_active (GTK_COMBO_BOX (squeek_cb)) + 1); 150 | } 151 | 152 | cptr = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (squeekop_cb)); 153 | if (cptr) 154 | { 155 | if (orig_sop && g_strcmp0 (orig_sop, cptr)) vsystem (SET_SQUEEKOUT, cptr); 156 | g_free (cptr); 157 | } 158 | 159 | if (!vsystem (IS_PI)) 160 | { 161 | if (wm == WM_OPENBOX) 162 | { 163 | if (gtk_combo_box_get_active (GTK_COMBO_BOX (vnc_res_cb)) != orig_vnc_res) 164 | { 165 | cptr = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (vnc_res_cb)); 166 | vsystem (SET_VNC_RES, cptr); 167 | g_free (cptr); 168 | reboot = TRUE; 169 | } 170 | } 171 | } 172 | 173 | return reboot; 174 | } 175 | 176 | /*----------------------------------------------------------------------------*/ 177 | /* Reboot check */ 178 | /*----------------------------------------------------------------------------*/ 179 | 180 | gboolean display_reboot (void) 181 | { 182 | if (wm == WM_OPENBOX) 183 | { 184 | CHECK_SWITCH (blank_sw, orig_blank); 185 | if (!vsystem (IS_PI) && orig_vnc_res != gtk_combo_box_get_active (GTK_COMBO_BOX (vnc_res_cb))) 186 | return TRUE; 187 | } 188 | 189 | return FALSE; 190 | } 191 | 192 | /*----------------------------------------------------------------------------*/ 193 | /* Tab setup */ 194 | /*----------------------------------------------------------------------------*/ 195 | 196 | void load_display_tab (GtkBuilder *builder) 197 | { 198 | char *line, *cptr; 199 | size_t len; 200 | FILE *fp; 201 | int op; 202 | 203 | /* Blanking switch */ 204 | CONFIG_SWITCH (blank_sw, "sw_blank", orig_blank, GET_BLANK); 205 | HANDLE_SWITCH (blank_sw, SET_BLANK); 206 | if (!vsystem (XSCR_INSTALLED)) 207 | { 208 | gtk_widget_set_sensitive (GTK_WIDGET (blank_sw), FALSE); 209 | gtk_widget_set_tooltip_text (GTK_WIDGET (blank_sw), _("This setting is overridden when Xscreensaver is installed")); 210 | } 211 | 212 | /* Overscan switches */ 213 | CONFIG_SWITCH (overscan_sw, "sw_os1", orig_overscan, GET_OVERSCAN); 214 | CONFIG_SWITCH (overscan2_sw, "sw_os2", orig_overscan2, GET_OVERSCAN2); 215 | HANDLE_SWITCH (overscan_sw, SET_OVERSCAN); 216 | HANDLE_SWITCH (overscan2_sw, SET_OVERSCAN2); 217 | 218 | if (wm == WM_OPENBOX) 219 | { 220 | /* Set overscan switches for number of monitors */ 221 | if (num_screens () != 2) gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox53"))); 222 | else gtk_label_set_text (GTK_LABEL (gtk_builder_get_object (builder, "label52")), _("Overscan (HDMI-1):")); 223 | 224 | /* Hide squeekboard */ 225 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox57"))); 226 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox58"))); 227 | } 228 | else 229 | { 230 | /* Hide overscan */ 231 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox52"))); 232 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox53"))); 233 | 234 | /* Squeekboard enable */ 235 | squeek_cb = gtk_builder_get_object (builder, "cb_squeek"); 236 | orig_squeek = get_status (GET_SQUEEK); 237 | gtk_combo_box_set_active (GTK_COMBO_BOX (squeek_cb), orig_squeek); 238 | HANDLE_CONTROL (squeek_cb, "changed", on_squeekboard_set); 239 | 240 | /* Squeekboard output */ 241 | squeekop_cb = gtk_builder_get_object (builder, "cb_squeekout"); 242 | orig_sop = get_string (GET_SQUEEKOUT); 243 | fp = popen ("wlr-randr", "r"); 244 | if (fp) 245 | { 246 | op = 0; 247 | line = NULL; 248 | len = 0; 249 | while (getline (&line, &len, fp) != -1) 250 | { 251 | if (line[0] != ' ') 252 | { 253 | cptr = line; 254 | while (*cptr != ' ') cptr++; 255 | *cptr = 0; 256 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (squeekop_cb), line); 257 | if (orig_sop && !g_strcmp0 (orig_sop, line)) 258 | { 259 | gtk_combo_box_set_active (GTK_COMBO_BOX (squeekop_cb), op); 260 | } 261 | op++; 262 | } 263 | } 264 | free (line); 265 | pclose (fp); 266 | } 267 | HANDLE_CONTROL (squeekop_cb, "changed", on_squeek_output_set); 268 | 269 | if (vsystem (VKBD_INSTALLED)) 270 | { 271 | gtk_widget_set_sensitive (GTK_WIDGET (squeek_cb), FALSE); 272 | gtk_widget_set_tooltip_text (GTK_WIDGET (squeek_cb), _("A virtual keyboard is not installed")); 273 | gtk_widget_set_sensitive (GTK_WIDGET (squeekop_cb), FALSE); 274 | gtk_widget_set_tooltip_text (GTK_WIDGET (squeekop_cb), _("A virtual keyboard is not installed")); 275 | } 276 | } 277 | 278 | /* VNC resolution */ 279 | if (!vsystem (IS_PI) && wm == WM_OPENBOX) 280 | { 281 | vnc_res_cb = gtk_builder_get_object (builder, "combo_res"); 282 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (vnc_res_cb), "640x480"); 283 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (vnc_res_cb), "720x480"); 284 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (vnc_res_cb), "800x600"); 285 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (vnc_res_cb), "1024x768"); 286 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (vnc_res_cb), "1280x720"); 287 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (vnc_res_cb), "1280x1024"); 288 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (vnc_res_cb), "1600x1200"); 289 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (vnc_res_cb), "1920x1080"); 290 | 291 | orig_vnc_res = -1; 292 | cptr = get_string (GET_VNC_RES); 293 | if (!strcmp (cptr, "640x480")) orig_vnc_res = 0; 294 | if (!strcmp (cptr, "720x480")) orig_vnc_res = 1; 295 | if (!strcmp (cptr, "800x600")) orig_vnc_res = 2; 296 | if (!strcmp (cptr, "1024x768")) orig_vnc_res = 3; 297 | if (!strcmp (cptr, "1280x720")) orig_vnc_res = 4; 298 | if (!strcmp (cptr, "1280x1024")) orig_vnc_res = 5; 299 | if (!strcmp (cptr, "1600x1200")) orig_vnc_res = 6; 300 | if (!strcmp (cptr, "1920x1080")) orig_vnc_res = 7; 301 | g_free (cptr); 302 | 303 | gtk_combo_box_set_active (GTK_COMBO_BOX (vnc_res_cb), orig_vnc_res); 304 | HANDLE_CONTROL (vnc_res_cb, "changed", on_vnc_res_set) 305 | } 306 | else gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox56"))); 307 | } 308 | 309 | /* End of file */ 310 | /*----------------------------------------------------------------------------*/ 311 | -------------------------------------------------------------------------------- /src/display.h: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | /*----------------------------------------------------------------------------*/ 28 | /* Typedefs and macros */ 29 | /*----------------------------------------------------------------------------*/ 30 | 31 | /*----------------------------------------------------------------------------*/ 32 | /* Global data */ 33 | /*----------------------------------------------------------------------------*/ 34 | 35 | /*----------------------------------------------------------------------------*/ 36 | /* Prototypes */ 37 | /*----------------------------------------------------------------------------*/ 38 | 39 | extern gboolean read_display_tab (void); 40 | extern gboolean display_reboot (void); 41 | extern void load_display_tab (GtkBuilder *builder); 42 | 43 | /* End of file */ 44 | /*----------------------------------------------------------------------------*/ 45 | 46 | -------------------------------------------------------------------------------- /src/interface.c: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | 28 | #include 29 | #include 30 | 31 | #include "rc_gui.h" 32 | 33 | /*----------------------------------------------------------------------------*/ 34 | /* Typedefs and macros */ 35 | /*----------------------------------------------------------------------------*/ 36 | 37 | #define GET_SSH GET_PREFIX "get_ssh" 38 | #define SET_SSH SET_PREFIX "do_ssh %d" 39 | #define GET_VNC GET_PREFIX "get_vnc" 40 | #define SET_VNC SET_PREFIX "do_vnc %d" 41 | #define GET_SPI GET_PREFIX "get_spi" 42 | #define SET_SPI SET_PREFIX "do_spi %d" 43 | #define GET_I2C GET_PREFIX "get_i2c" 44 | #define SET_I2C SET_PREFIX "do_i2c %d" 45 | #define GET_SERIALCON GET_PREFIX "get_serial_cons" 46 | #define SET_SERIALCON SET_PREFIX "do_serial_cons %d" 47 | #define GET_SERIALHW GET_PREFIX "get_serial_hw" 48 | #define SET_SERIALHW SET_PREFIX "do_serial_hw %d" 49 | #define GET_1WIRE GET_PREFIX "get_onewire" 50 | #define SET_1WIRE SET_PREFIX "do_onewire %d" 51 | #define GET_RGPIO GET_PREFIX "get_rgpio" 52 | #define SET_RGPIO SET_PREFIX "do_rgpio %d" 53 | #define RVNC_INSTALLED GET_PREFIX "is_installed realvnc-vnc-server" 54 | #define WVNC_INSTALLED GET_PREFIX "is_installed wayvnc" 55 | 56 | /*----------------------------------------------------------------------------*/ 57 | /* Global data */ 58 | /*----------------------------------------------------------------------------*/ 59 | 60 | static GObject *ssh_sw, *vnc_sw, *spi_sw, *i2c_sw, *serial_sw, *scons_sw, *onewire_sw, *rgpio_sw; 61 | static int orig_ssh, orig_vnc, orig_spi, orig_i2c, orig_serial, orig_scons, orig_onewire, orig_rgpio; 62 | 63 | /*----------------------------------------------------------------------------*/ 64 | /* Prototypes */ 65 | /*----------------------------------------------------------------------------*/ 66 | 67 | static void serial_update (void); 68 | static gboolean on_serial_toggle (GtkSwitch *btn, gboolean state, gpointer ptr); 69 | 70 | /*----------------------------------------------------------------------------*/ 71 | /* Function definitions */ 72 | /*----------------------------------------------------------------------------*/ 73 | 74 | /*----------------------------------------------------------------------------*/ 75 | /* Control handling */ 76 | /*----------------------------------------------------------------------------*/ 77 | 78 | static void serial_update (void) 79 | { 80 | if (gtk_switch_get_active (GTK_SWITCH (serial_sw))) 81 | { 82 | gtk_widget_set_sensitive (GTK_WIDGET (scons_sw), TRUE); 83 | gtk_widget_set_tooltip_text (GTK_WIDGET (scons_sw), _("Enable shell and kernel messages on the serial connection")); 84 | } 85 | else 86 | { 87 | gtk_switch_set_active (GTK_SWITCH (scons_sw), FALSE); 88 | gtk_widget_set_sensitive (GTK_WIDGET (scons_sw), FALSE); 89 | gtk_widget_set_tooltip_text (GTK_WIDGET (scons_sw), _("This setting cannot be changed while the serial port is disabled")); 90 | } 91 | } 92 | 93 | static gboolean on_serial_toggle (GtkSwitch *btn, gboolean state, gpointer ptr) 94 | { 95 | serial_update (); 96 | 97 | #ifdef REALTIME 98 | vsystem (SET_SERIALHW, (1 - state)); 99 | #endif 100 | 101 | return FALSE; 102 | } 103 | 104 | /*----------------------------------------------------------------------------*/ 105 | /* Exit processing */ 106 | /*----------------------------------------------------------------------------*/ 107 | 108 | gboolean read_interfacing_tab (void) 109 | { 110 | gboolean reboot = FALSE; 111 | 112 | READ_SWITCH (ssh_sw, orig_ssh, SET_SSH, FALSE); 113 | READ_SWITCH (vnc_sw, orig_vnc, SET_VNC, FALSE); 114 | 115 | if (!vsystem (IS_PI)) 116 | { 117 | READ_SWITCH (spi_sw, orig_spi, SET_SPI, FALSE); 118 | READ_SWITCH (i2c_sw, orig_i2c, SET_I2C, FALSE); 119 | READ_SWITCH (onewire_sw, orig_onewire, SET_1WIRE, TRUE); 120 | READ_SWITCH (rgpio_sw, orig_rgpio, SET_RGPIO, FALSE); 121 | READ_SWITCH (serial_sw, orig_serial, SET_SERIALHW, TRUE); 122 | READ_SWITCH (scons_sw, orig_scons, SET_SERIALCON, TRUE); 123 | } 124 | 125 | return reboot; 126 | } 127 | 128 | /*----------------------------------------------------------------------------*/ 129 | /* Reboot check */ 130 | /*----------------------------------------------------------------------------*/ 131 | 132 | gboolean interfacing_reboot (void) 133 | { 134 | if (!vsystem (IS_PI)) 135 | { 136 | CHECK_SWITCH (onewire_sw, orig_onewire); 137 | CHECK_SWITCH (serial_sw, orig_serial); 138 | CHECK_SWITCH (scons_sw, orig_scons); 139 | } 140 | 141 | return FALSE; 142 | } 143 | 144 | /*----------------------------------------------------------------------------*/ 145 | /* Tab setup */ 146 | /*----------------------------------------------------------------------------*/ 147 | 148 | void load_interfacing_tab (GtkBuilder *builder) 149 | { 150 | /* SSH switch */ 151 | CONFIG_SWITCH (ssh_sw, "sw_ssh", orig_ssh, GET_SSH); 152 | HANDLE_SWITCH (ssh_sw, SET_SSH); 153 | 154 | /* VNC switch */ 155 | CONFIG_SWITCH (vnc_sw, "sw_vnc", orig_vnc, GET_VNC); 156 | HANDLE_SWITCH (vnc_sw, SET_VNC); 157 | if (vsystem (RVNC_INSTALLED) && vsystem (WVNC_INSTALLED)) 158 | { 159 | gtk_widget_set_sensitive (GTK_WIDGET (vnc_sw), FALSE); 160 | gtk_widget_set_tooltip_text (GTK_WIDGET (vnc_sw), _("The VNC server is not installed")); 161 | } 162 | 163 | if (!vsystem (IS_PI)) 164 | { 165 | /* SPI switch */ 166 | CONFIG_SWITCH (spi_sw, "sw_spi", orig_spi, GET_SPI); 167 | HANDLE_SWITCH (spi_sw, SET_SPI); 168 | 169 | /* I2C switch */ 170 | CONFIG_SWITCH (i2c_sw, "sw_i2c", orig_i2c, GET_I2C); 171 | HANDLE_SWITCH (i2c_sw, SET_I2C); 172 | 173 | /* 1-wire interface switch */ 174 | CONFIG_SWITCH (onewire_sw, "sw_one", orig_onewire, GET_1WIRE); 175 | HANDLE_SWITCH (onewire_sw, SET_1WIRE); 176 | 177 | /* Remote GPIO switch */ 178 | CONFIG_SWITCH (rgpio_sw, "sw_rgp", orig_rgpio, GET_RGPIO); 179 | HANDLE_SWITCH (rgpio_sw, SET_RGPIO); 180 | 181 | /* Serial console switch */ 182 | CONFIG_SWITCH (scons_sw, "sw_serc", orig_scons, GET_SERIALCON); 183 | HANDLE_SWITCH (scons_sw, SET_SERIALCON); 184 | 185 | /* Serial hardware switch */ 186 | CONFIG_SWITCH (serial_sw, "sw_ser", orig_serial, GET_SERIALHW); 187 | if (!vsystem (IS_PI5)) 188 | { 189 | HANDLE_SWITCH (serial_sw, SET_SERIALHW); 190 | } 191 | else 192 | { 193 | g_signal_connect (serial_sw, "state-set", G_CALLBACK (on_serial_toggle), NULL); 194 | serial_update (); 195 | } 196 | } 197 | else 198 | { 199 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox24"))); 200 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox25"))); 201 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox26"))); 202 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox27"))); 203 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox28"))); 204 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox29"))); 205 | } 206 | } 207 | 208 | /* End of file */ 209 | /*----------------------------------------------------------------------------*/ 210 | -------------------------------------------------------------------------------- /src/interface.h: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | /*----------------------------------------------------------------------------*/ 28 | /* Typedefs and macros */ 29 | /*----------------------------------------------------------------------------*/ 30 | 31 | /*----------------------------------------------------------------------------*/ 32 | /* Global data */ 33 | /*----------------------------------------------------------------------------*/ 34 | 35 | /*----------------------------------------------------------------------------*/ 36 | /* Prototypes */ 37 | /*----------------------------------------------------------------------------*/ 38 | 39 | extern gboolean read_interfacing_tab (void); 40 | extern gboolean interfacing_reboot (void); 41 | extern void load_interfacing_tab (GtkBuilder *builder); 42 | 43 | /* End of file */ 44 | /*----------------------------------------------------------------------------*/ 45 | 46 | -------------------------------------------------------------------------------- /src/local.h: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | /*----------------------------------------------------------------------------*/ 28 | /* Typedefs and macros */ 29 | /*----------------------------------------------------------------------------*/ 30 | 31 | /*----------------------------------------------------------------------------*/ 32 | /* Global data */ 33 | /*----------------------------------------------------------------------------*/ 34 | 35 | /*----------------------------------------------------------------------------*/ 36 | /* Prototypes */ 37 | /*----------------------------------------------------------------------------*/ 38 | 39 | extern void on_set_keyboard (GtkButton* btn, gpointer ptr); 40 | extern void on_set_wifi (GtkButton* btn, gpointer ptr); 41 | extern void load_localisation_tab (GtkBuilder *builder); 42 | 43 | /* End of file */ 44 | /*----------------------------------------------------------------------------*/ 45 | -------------------------------------------------------------------------------- /src/meson.build: -------------------------------------------------------------------------------- 1 | sources = files ( 2 | 'rc_gui.c', 3 | 'system.c', 4 | 'display.c', 5 | 'interface.c', 6 | 'perform.c', 7 | 'local.c' 8 | ) 9 | 10 | add_global_arguments('-Wno-unused-result', language : 'c') 11 | 12 | gtk = dependency ('gtk+-3.0') 13 | deps = [ gtk ] 14 | 15 | if build_plugin 16 | shared_module(plugin_name, sources, dependencies: deps, install: true, 17 | install_dir: get_option('libdir') / 'rpcc', 18 | c_args : [ '-DPACKAGE_DATA_DIR="' + presource_dir + '"', '-DGETTEXT_PACKAGE="' + plugin_name + '"', '-DPLUGIN_NAME="' + plugin_name + '"' ] 19 | ) 20 | endif 21 | 22 | if build_standalone 23 | executable (meson.project_name(), sources, dependencies: deps, install: true, 24 | c_args : [ '-DPACKAGE_DATA_DIR="' + resource_dir + '"', '-DGETTEXT_PACKAGE="' + meson.project_name() + '"' ] 25 | ) 26 | endif 27 | -------------------------------------------------------------------------------- /src/perform.c: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | 28 | #include 29 | #include 30 | 31 | #include "rc_gui.h" 32 | 33 | /*----------------------------------------------------------------------------*/ 34 | /* Typedefs and macros */ 35 | /*----------------------------------------------------------------------------*/ 36 | 37 | #define GET_OVERCLOCK GET_PREFIX "get_config_var arm_freq /boot/config.txt" 38 | #define SET_OVERCLOCK SET_PREFIX "do_overclock %s" 39 | #define GET_FAN GET_PREFIX "get_fan" 40 | #define GET_FAN_GPIO GET_PREFIX "get_fan_gpio" 41 | #define GET_FAN_TEMP GET_PREFIX "get_fan_temp" 42 | #define SET_FAN SET_PREFIX "do_fan %d %d %d" 43 | #define GET_OVERLAYNOW GET_PREFIX "get_overlay_now" 44 | #define GET_OVERLAY GET_PREFIX "get_overlay_conf" 45 | #define GET_BOOTRO GET_PREFIX "get_bootro_conf" 46 | #define SET_OFS_ON SET_PREFIX "enable_overlayfs" 47 | #define SET_OFS_OFF SET_PREFIX "disable_overlayfs" 48 | #define SET_BOOTP_RO SET_PREFIX "enable_bootro" 49 | #define SET_BOOTP_RW SET_PREFIX "disable_bootro" 50 | #define GET_USBI GET_PREFIX "get_usb_current" 51 | #define SET_USBI SET_PREFIX "do_usb_current %d" 52 | #define CHECK_UNAME GET_PREFIX "is_uname_current" 53 | 54 | /*----------------------------------------------------------------------------*/ 55 | /* Global data */ 56 | /*----------------------------------------------------------------------------*/ 57 | 58 | static GObject *overclock_cb, *fan_sw, *fan_gpio_sb, *fan_temp_sb, *usb_sw, *ofs_btn, *ofs_en_sw, *bp_ro_sw, *ofs_lbl; 59 | static int orig_clock, orig_fan, orig_fan_gpio, orig_fan_temp, orig_usbi, orig_ofs, orig_bpro; 60 | static int ovfs_rb; 61 | 62 | /*----------------------------------------------------------------------------*/ 63 | /* Prototypes */ 64 | /*----------------------------------------------------------------------------*/ 65 | 66 | static void on_set_ofs (GtkButton* btn, gpointer ptr); 67 | static gboolean overlay_update (GtkSwitch *btn, gboolean state, gpointer ptr); 68 | static gpointer initrd_thread (gpointer data); 69 | static gboolean close_msg (gpointer data); 70 | static void overclock_config (void); 71 | static void fan_config (void); 72 | static void fan_update (void); 73 | static gboolean on_fan_toggle (GtkSwitch *btn, gboolean state, gpointer ptr); 74 | #ifdef REALTIME 75 | static void on_overclock_set (GtkComboBox* cb, gpointer ptr); 76 | static gboolean process_oc (gpointer data); 77 | static void on_fan_value_changed (GtkSpinButton *sb); 78 | static gboolean process_fan (gpointer data); 79 | #endif 80 | 81 | /*----------------------------------------------------------------------------*/ 82 | /* Function definitions */ 83 | /*----------------------------------------------------------------------------*/ 84 | 85 | /*----------------------------------------------------------------------------*/ 86 | /* Overlay file system dialog */ 87 | /*----------------------------------------------------------------------------*/ 88 | 89 | static void on_set_ofs (GtkButton* btn, gpointer ptr) 90 | { 91 | GtkBuilder *builder; 92 | GtkWidget *dlg; 93 | 94 | textdomain (GETTEXT_PACKAGE); 95 | builder = gtk_builder_new_from_file (PACKAGE_DATA_DIR "/ui/rc_gui.ui"); 96 | 97 | if (vsystem (CHECK_UNAME)) 98 | { 99 | info (_("Your system has recently been updated. Please reboot to ensure these updates have loaded before setting up the overlay file system.")); 100 | return; 101 | } 102 | 103 | dlg = (GtkWidget *) gtk_builder_get_object (builder, "ofsdlg"); 104 | if (main_dlg) gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (main_dlg)); 105 | 106 | CONFIG_SWITCH (ofs_en_sw, "sw_ofsen", orig_ofs, GET_OVERLAY); 107 | CONFIG_SWITCH (bp_ro_sw, "sw_bpro", orig_bpro, GET_BOOTRO); 108 | 109 | ofs_lbl = gtk_builder_get_object (builder, "ofslabel3"); 110 | 111 | g_object_unref (builder); 112 | 113 | if (get_status (GET_OVERLAYNOW)) 114 | { 115 | gtk_widget_set_sensitive (GTK_WIDGET (bp_ro_sw), TRUE); 116 | } 117 | else 118 | { 119 | gtk_widget_set_sensitive (GTK_WIDGET (bp_ro_sw), FALSE); 120 | gtk_widget_set_tooltip_text (GTK_WIDGET (bp_ro_sw), _("The state of the boot partition cannot be changed while an overlay is active")); 121 | } 122 | 123 | g_signal_connect (ofs_en_sw, "state-set", G_CALLBACK (overlay_update), NULL); 124 | g_signal_connect (bp_ro_sw, "state-set", G_CALLBACK (overlay_update), NULL); 125 | gtk_widget_realize (GTK_WIDGET (ofs_lbl)); 126 | gtk_widget_set_size_request (dlg, gtk_widget_get_allocated_width (dlg), gtk_widget_get_allocated_height (dlg)); 127 | gtk_widget_hide (GTK_WIDGET (ofs_lbl)); 128 | 129 | ovfs_rb = 0; 130 | if (gtk_dialog_run (GTK_DIALOG (dlg)) == GTK_RESPONSE_OK) 131 | { 132 | if (ovfs_rb) needs_reboot = TRUE; 133 | if (orig_bpro && gtk_switch_get_active (GTK_SWITCH (bp_ro_sw))) 134 | vsystem (SET_BOOTP_RO); 135 | if (!orig_bpro && !gtk_switch_get_active (GTK_SWITCH (bp_ro_sw))) 136 | vsystem (SET_BOOTP_RW); 137 | if (!orig_ofs && !gtk_switch_get_active (GTK_SWITCH (ofs_en_sw))) 138 | vsystem (SET_OFS_OFF); 139 | if (orig_ofs && gtk_switch_get_active (GTK_SWITCH (ofs_en_sw))) 140 | { 141 | // warn about a short delay... 142 | message (_("Setting up overlay - please wait...")); 143 | 144 | // launch a thread with the system call to update the initrd 145 | g_thread_new (NULL, initrd_thread, NULL); 146 | } 147 | } 148 | gtk_widget_destroy (dlg); 149 | } 150 | 151 | static gboolean overlay_update (GtkSwitch *btn, gboolean state, gpointer ptr) 152 | { 153 | ovfs_rb = 0; 154 | if (orig_ofs == gtk_switch_get_active (GTK_SWITCH (ofs_en_sw))) ovfs_rb = 1; 155 | if (orig_bpro == gtk_switch_get_active (GTK_SWITCH (bp_ro_sw))) ovfs_rb = 1; 156 | gtk_widget_set_visible (GTK_WIDGET (ofs_lbl), ovfs_rb); 157 | return FALSE; 158 | } 159 | 160 | static gpointer initrd_thread (gpointer data) 161 | { 162 | vsystem (SET_OFS_ON); 163 | g_idle_add (close_msg, NULL); 164 | return NULL; 165 | } 166 | 167 | static gboolean close_msg (gpointer data) 168 | { 169 | gtk_widget_destroy (GTK_WIDGET (msg_dlg)); 170 | return FALSE; 171 | } 172 | 173 | /*----------------------------------------------------------------------------*/ 174 | /* Control handling */ 175 | /*----------------------------------------------------------------------------*/ 176 | 177 | static void overclock_config (void) 178 | { 179 | switch (get_status (GET_PI_TYPE)) 180 | { 181 | case 1: 182 | switch (gtk_combo_box_get_active (GTK_COMBO_BOX (overclock_cb))) 183 | { 184 | case 0 : vsystem (SET_OVERCLOCK, "None"); 185 | break; 186 | case 1 : vsystem (SET_OVERCLOCK, "Modest"); 187 | break; 188 | case 2 : vsystem (SET_OVERCLOCK, "Medium"); 189 | break; 190 | case 3 : vsystem (SET_OVERCLOCK, "High"); 191 | break; 192 | case 4 : vsystem (SET_OVERCLOCK, "Turbo"); 193 | break; 194 | } 195 | break; 196 | 197 | case 2: 198 | switch (gtk_combo_box_get_active (GTK_COMBO_BOX (overclock_cb))) 199 | { 200 | case 0 : vsystem (SET_OVERCLOCK, "None"); 201 | break; 202 | case 1 : vsystem (SET_OVERCLOCK, "High"); 203 | break; 204 | } 205 | break; 206 | } 207 | } 208 | 209 | static void fan_config (void) 210 | { 211 | #ifdef REALTIME 212 | set_watch_cursor (); 213 | g_idle_add (process_fan, NULL); 214 | } 215 | 216 | static gboolean process_fan (gpointer data) 217 | { 218 | #endif 219 | int fan_gpio = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (fan_gpio_sb)); 220 | int fan_temp = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (fan_temp_sb)); 221 | if (!gtk_switch_get_active (GTK_SWITCH (fan_sw))) 222 | { 223 | vsystem (SET_FAN, 1, 0, 0); 224 | } 225 | else 226 | { 227 | vsystem (SET_FAN, 0, fan_gpio, fan_temp); 228 | } 229 | #ifdef REALTIME 230 | clear_watch_cursor (); 231 | return FALSE; 232 | #endif 233 | } 234 | 235 | static void fan_update (void) 236 | { 237 | if (gtk_switch_get_active (GTK_SWITCH (fan_sw))) 238 | { 239 | gtk_widget_set_sensitive (GTK_WIDGET (fan_gpio_sb), TRUE); 240 | gtk_widget_set_sensitive (GTK_WIDGET (fan_temp_sb), TRUE); 241 | gtk_widget_set_tooltip_text (GTK_WIDGET (fan_gpio_sb), _("Set the GPIO to which the fan is connected")); 242 | gtk_widget_set_tooltip_text (GTK_WIDGET (fan_temp_sb), _("Set the temperature in degrees C at which the fan turns on")); 243 | } 244 | else 245 | { 246 | gtk_widget_set_sensitive (GTK_WIDGET (fan_gpio_sb), FALSE); 247 | gtk_widget_set_sensitive (GTK_WIDGET (fan_temp_sb), FALSE); 248 | gtk_widget_set_tooltip_text (GTK_WIDGET (fan_gpio_sb), _("This setting cannot be changed unless the fan is enabled")); 249 | gtk_widget_set_tooltip_text (GTK_WIDGET (fan_temp_sb), _("This setting cannot be changed unless the fan is enabled")); 250 | } 251 | } 252 | 253 | static gboolean on_fan_toggle (GtkSwitch *btn, gboolean state, gpointer ptr) 254 | { 255 | fan_update (); 256 | 257 | #ifdef REALTIME 258 | fan_config (); 259 | #endif 260 | 261 | return FALSE; 262 | } 263 | 264 | /*----------------------------------------------------------------------------*/ 265 | /* Real-time handlers */ 266 | /*----------------------------------------------------------------------------*/ 267 | 268 | #ifdef REALTIME 269 | 270 | static void on_overclock_set (GtkComboBox* cb, gpointer ptr) 271 | { 272 | set_watch_cursor (); 273 | g_idle_add (process_oc, NULL); 274 | } 275 | 276 | static gboolean process_oc (gpointer data) 277 | { 278 | overclock_config (); 279 | clear_watch_cursor (); 280 | return FALSE; 281 | } 282 | 283 | static void on_fan_value_changed (GtkSpinButton *sb) 284 | { 285 | fan_config (); 286 | } 287 | 288 | #endif 289 | 290 | /*----------------------------------------------------------------------------*/ 291 | /* Exit processing */ 292 | /*----------------------------------------------------------------------------*/ 293 | 294 | gboolean read_performance_tab (void) 295 | { 296 | gboolean reboot = FALSE; 297 | 298 | if (!vsystem (IS_PI)) 299 | { 300 | READ_SWITCH (usb_sw, orig_usbi, SET_USBI, TRUE); 301 | 302 | if (orig_clock != -1 && orig_clock != gtk_combo_box_get_active (GTK_COMBO_BOX (overclock_cb))) 303 | { 304 | overclock_config (); 305 | reboot = TRUE; 306 | } 307 | 308 | if (!vsystem (IS_PI4)) fan_config (); 309 | } 310 | 311 | return reboot; 312 | } 313 | 314 | /*----------------------------------------------------------------------------*/ 315 | /* Reboot check */ 316 | /*----------------------------------------------------------------------------*/ 317 | 318 | gboolean performance_reboot (void) 319 | { 320 | if (!vsystem (IS_PI)) 321 | { 322 | CHECK_SWITCH (usb_sw, orig_usbi); 323 | 324 | if (orig_clock != -1 && orig_clock != gtk_combo_box_get_active (GTK_COMBO_BOX (overclock_cb))) return TRUE; 325 | } 326 | return FALSE; 327 | } 328 | 329 | /*----------------------------------------------------------------------------*/ 330 | /* Tab setup */ 331 | /*----------------------------------------------------------------------------*/ 332 | 333 | void load_performance_tab (GtkBuilder *builder) 334 | { 335 | GtkAdjustment *gadj, *tadj; 336 | 337 | if (!vsystem (IS_PI)) 338 | { 339 | /* USB current limit switch */ 340 | CONFIG_SWITCH (usb_sw, "sw_usb", orig_usbi, GET_USBI); 341 | HANDLE_SWITCH (usb_sw, SET_USBI); 342 | if (vsystem (IS_PI5)) 343 | { 344 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox37"))); 345 | } 346 | 347 | /* Fan controls */ 348 | if (!vsystem (IS_PI4)) 349 | { 350 | CONFIG_SWITCH (fan_sw, "sw_fan", orig_fan, GET_FAN); 351 | fan_gpio_sb = gtk_builder_get_object (builder, "sb_fan_gpio"); 352 | fan_temp_sb = gtk_builder_get_object (builder, "sb_fan_temp"); 353 | fan_update (); 354 | g_signal_connect (fan_sw, "state-set", G_CALLBACK (on_fan_toggle), NULL); 355 | 356 | gadj = gtk_adjustment_new (14, 2, 27, 1, 1, 0); 357 | gtk_spin_button_set_adjustment (GTK_SPIN_BUTTON (fan_gpio_sb), GTK_ADJUSTMENT (gadj)); 358 | orig_fan_gpio = get_status (GET_FAN_GPIO); 359 | gtk_spin_button_set_value (GTK_SPIN_BUTTON (fan_gpio_sb), orig_fan_gpio); 360 | HANDLE_CONTROL (fan_gpio_sb, "value_changed", on_fan_value_changed); 361 | 362 | tadj = gtk_adjustment_new (80, 60, 120, 5, 10, 0); 363 | gtk_spin_button_set_adjustment (GTK_SPIN_BUTTON (fan_temp_sb), GTK_ADJUSTMENT (tadj)); 364 | orig_fan_temp = get_status (GET_FAN_TEMP); 365 | gtk_spin_button_set_value (GTK_SPIN_BUTTON (fan_temp_sb), orig_fan_temp); 366 | HANDLE_CONTROL (fan_temp_sb, "value_changed", on_fan_value_changed); 367 | } 368 | else 369 | { 370 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox34"))); 371 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox35"))); 372 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox36"))); 373 | } 374 | 375 | /* Overclock controls */ 376 | overclock_cb = gtk_builder_get_object (builder, "combo_oc"); 377 | switch (get_status (GET_PI_TYPE)) 378 | { 379 | case 1 : gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (overclock_cb), _("None (700MHz)")); 380 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (overclock_cb), _("Modest (800MHz)")); 381 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (overclock_cb), _("Medium (900MHz)")); 382 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (overclock_cb), _("High (950MHz)")); 383 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (overclock_cb), _("Turbo (1000MHz)")); 384 | 385 | switch (get_status (GET_OVERCLOCK)) 386 | { 387 | case 800 : orig_clock = 1; 388 | break; 389 | case 900 : orig_clock = 2; 390 | break; 391 | case 950 : orig_clock = 3; 392 | break; 393 | case 1000 : orig_clock = 4; 394 | break; 395 | default : orig_clock = 0; 396 | break; 397 | } 398 | break; 399 | 400 | case 2 : gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (overclock_cb), _("None (900MHz)")); 401 | gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (overclock_cb), _("High (1000MHz)")); 402 | 403 | switch (get_status (GET_OVERCLOCK)) 404 | { 405 | case 1000 : orig_clock = 1; 406 | break; 407 | default : orig_clock = 0; 408 | break; 409 | } 410 | break; 411 | 412 | default : orig_clock = -1; 413 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox31"))); 414 | break; 415 | } 416 | if (orig_clock != -1) 417 | { 418 | gtk_combo_box_set_active (GTK_COMBO_BOX (overclock_cb), orig_clock); 419 | HANDLE_CONTROL (overclock_cb, "changed", on_overclock_set); 420 | } 421 | 422 | /* Overlay file system button */ 423 | ofs_btn = gtk_builder_get_object (builder, "button_ofs"); 424 | g_signal_connect (ofs_btn, "clicked", G_CALLBACK (on_set_ofs), NULL); 425 | } 426 | else 427 | { 428 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "vbox30"))); 429 | } 430 | } 431 | 432 | /* End of file */ 433 | /*----------------------------------------------------------------------------*/ 434 | -------------------------------------------------------------------------------- /src/perform.h: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | /*----------------------------------------------------------------------------*/ 28 | /* Typedefs and macros */ 29 | /*----------------------------------------------------------------------------*/ 30 | 31 | /*----------------------------------------------------------------------------*/ 32 | /* Global data */ 33 | /*----------------------------------------------------------------------------*/ 34 | 35 | /*----------------------------------------------------------------------------*/ 36 | /* Prototypes */ 37 | /*----------------------------------------------------------------------------*/ 38 | 39 | extern gboolean read_performance_tab (void); 40 | extern gboolean performance_reboot (void); 41 | extern void load_performance_tab (GtkBuilder *builder); 42 | 43 | /* End of file */ 44 | /*----------------------------------------------------------------------------*/ 45 | 46 | -------------------------------------------------------------------------------- /src/rc_gui.c: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | 28 | /* NOTE raspi-config nonint functions obey sh return codes - 0 is in general success / yes / selected, 1 is failed / no / not selected */ 29 | 30 | #include 31 | #include 32 | #include 33 | #include 34 | 35 | #include "rc_gui.h" 36 | 37 | #include "system.h" 38 | #include "display.h" 39 | #include "interface.h" 40 | #include "perform.h" 41 | #include "local.h" 42 | 43 | /*----------------------------------------------------------------------------*/ 44 | /* Typedefs and macros */ 45 | /*----------------------------------------------------------------------------*/ 46 | 47 | /*----------------------------------------------------------------------------*/ 48 | /* Global data */ 49 | /*----------------------------------------------------------------------------*/ 50 | 51 | static GtkBuilder *builder; 52 | 53 | GtkWidget *main_dlg, *msg_dlg; 54 | GThread *pthread; 55 | gboolean needs_reboot; 56 | gboolean singledlg; 57 | wm_type wm; 58 | 59 | #ifndef PLUGIN_NAME 60 | static gulong draw_id; 61 | #endif 62 | 63 | /*----------------------------------------------------------------------------*/ 64 | /* Prototypes */ 65 | /*----------------------------------------------------------------------------*/ 66 | 67 | static gboolean ok_clicked (GtkButton *button, gpointer data); 68 | static void init_config (void); 69 | #ifndef PLUGIN_NAME 70 | static gboolean close_app (GtkButton *button, gpointer data); 71 | static gboolean close_app_reboot (GtkButton *button, gpointer data); 72 | static gboolean reboot_prompt (gpointer data); 73 | static gpointer process_changes_thread (gpointer ptr); 74 | static gboolean cancel_main (GtkButton *button, gpointer data); 75 | static gboolean ok_main (GtkButton *button, gpointer data); 76 | static gboolean close_prog (GtkWidget *widget, GdkEvent *event, gpointer data); 77 | static gboolean init_window (gpointer data); 78 | static gboolean draw (GtkWidget *wid, cairo_t *cr, gpointer data); 79 | #endif 80 | 81 | /*----------------------------------------------------------------------------*/ 82 | /* Function definitions */ 83 | /*----------------------------------------------------------------------------*/ 84 | 85 | /*----------------------------------------------------------------------------*/ 86 | /* Helpers */ 87 | /*----------------------------------------------------------------------------*/ 88 | 89 | int vsystem (const char *fmt, ...) 90 | { 91 | char *cmdline; 92 | int res; 93 | 94 | va_list arg; 95 | va_start (arg, fmt); 96 | g_vasprintf (&cmdline, fmt, arg); 97 | va_end (arg); 98 | res = system (cmdline); 99 | g_free (cmdline); 100 | return res; 101 | } 102 | 103 | int get_status (char *cmd) 104 | { 105 | FILE *fp = popen (cmd, "r"); 106 | char *buf = NULL; 107 | size_t res = 0; 108 | int val = 0; 109 | 110 | if (fp == NULL) return 0; 111 | if (getline (&buf, &res, fp) > 0) 112 | { 113 | if (sscanf (buf, "%zu", &res) == 1) 114 | { 115 | val = res; 116 | } 117 | } 118 | pclose (fp); 119 | g_free (buf); 120 | return val; 121 | } 122 | 123 | char *get_string (char *cmd) 124 | { 125 | char *line = NULL, *res = NULL; 126 | size_t len = 0; 127 | FILE *fp = popen (cmd, "r"); 128 | 129 | if (fp == NULL) return NULL; 130 | if (getline (&line, &len, fp) > 0) 131 | { 132 | res = line; 133 | while (*res) 134 | { 135 | if (g_ascii_isspace (*res)) *res = 0; 136 | res++; 137 | } 138 | res = g_strdup (line); 139 | } 140 | pclose (fp); 141 | g_free (line); 142 | return res; 143 | } 144 | 145 | char *get_quoted_param (char *path, char *fname, char *toseek) 146 | { 147 | char *pathname, *linebuf, *cptr, *dptr, *res; 148 | size_t len; 149 | 150 | pathname = g_strdup_printf ("%s/%s", path, fname); 151 | FILE *fp = fopen (pathname, "rb"); 152 | g_free (pathname); 153 | if (!fp) return NULL; 154 | 155 | linebuf = NULL; 156 | len = 0; 157 | while (getline (&linebuf, &len, fp) > 0) 158 | { 159 | // skip whitespace at line start 160 | cptr = linebuf; 161 | while (*cptr == ' ' || *cptr == '\t') cptr++; 162 | 163 | // compare against string to find 164 | if (!strncmp (cptr, toseek, strlen (toseek))) 165 | { 166 | // find string in quotes 167 | strtok (cptr, "\""); 168 | dptr = strtok (NULL, "\"\n\r"); 169 | 170 | // copy to dest 171 | if (dptr) res = g_strdup (dptr); 172 | else res = NULL; 173 | 174 | // done 175 | g_free (linebuf); 176 | fclose (fp); 177 | return res; 178 | } 179 | } 180 | 181 | // end of file with no match 182 | g_free (linebuf); 183 | fclose (fp); 184 | return NULL; 185 | } 186 | 187 | /*----------------------------------------------------------------------------*/ 188 | /* Generic control handler */ 189 | /*----------------------------------------------------------------------------*/ 190 | 191 | #ifdef REALTIME 192 | 193 | static gboolean process_switch (gpointer data) 194 | { 195 | char *cmdline = (char *) data; 196 | vsystem (cmdline); 197 | g_free (cmdline); 198 | clear_watch_cursor (); 199 | return FALSE; 200 | } 201 | 202 | gboolean on_switch (GtkSwitch *btn, gboolean state, const char *cmd) 203 | { 204 | char *cmdline; 205 | set_watch_cursor (); 206 | cmdline = g_strdup_printf (cmd, (1 - state)); 207 | g_idle_add (process_switch, cmdline); 208 | return FALSE; 209 | } 210 | 211 | #endif 212 | 213 | /*----------------------------------------------------------------------------*/ 214 | /* Message box */ 215 | /*----------------------------------------------------------------------------*/ 216 | 217 | void message (char *msg) 218 | { 219 | GtkWidget *wid; 220 | GtkBuilder *builder; 221 | 222 | textdomain (GETTEXT_PACKAGE); 223 | builder = gtk_builder_new_from_file (PACKAGE_DATA_DIR "/ui/rc_gui.ui"); 224 | 225 | msg_dlg = (GtkWidget *) gtk_builder_get_object (builder, "modal"); 226 | if (main_dlg) gtk_window_set_transient_for (GTK_WINDOW (msg_dlg), GTK_WINDOW (main_dlg)); 227 | 228 | wid = (GtkWidget *) gtk_builder_get_object (builder, "modal_msg"); 229 | gtk_label_set_text (GTK_LABEL (wid), msg); 230 | 231 | gtk_widget_show (msg_dlg); 232 | 233 | g_object_unref (builder); 234 | } 235 | 236 | void info (char *msg) 237 | { 238 | GtkWidget *wid; 239 | GtkBuilder *builder; 240 | 241 | textdomain (GETTEXT_PACKAGE); 242 | builder = gtk_builder_new_from_file (PACKAGE_DATA_DIR "/ui/rc_gui.ui"); 243 | 244 | msg_dlg = (GtkWidget *) gtk_builder_get_object (builder, "modal"); 245 | if (main_dlg) gtk_window_set_transient_for (GTK_WINDOW (msg_dlg), GTK_WINDOW (main_dlg)); 246 | 247 | wid = (GtkWidget *) gtk_builder_get_object (builder, "modal_msg"); 248 | gtk_label_set_text (GTK_LABEL (wid), msg); 249 | 250 | wid = (GtkWidget *) gtk_builder_get_object (builder, "modal_ok"); 251 | g_signal_connect (wid, "clicked", G_CALLBACK (ok_clicked), NULL); 252 | gtk_widget_show (wid); 253 | 254 | wid = (GtkWidget *) gtk_builder_get_object (builder, "modal_buttons"); 255 | gtk_widget_show (wid); 256 | 257 | gtk_widget_show (msg_dlg); 258 | 259 | g_object_unref (builder); 260 | } 261 | 262 | static gboolean ok_clicked (GtkButton *button, gpointer data) 263 | { 264 | gtk_widget_destroy (msg_dlg); 265 | return FALSE; 266 | } 267 | 268 | /*----------------------------------------------------------------------------*/ 269 | /* Initial configuration */ 270 | /*----------------------------------------------------------------------------*/ 271 | 272 | static void init_config (void) 273 | { 274 | load_system_tab (builder); 275 | load_display_tab (builder); 276 | load_interfacing_tab (builder); 277 | load_performance_tab (builder); 278 | load_localisation_tab (builder); 279 | needs_reboot = FALSE; 280 | } 281 | 282 | /*----------------------------------------------------------------------------*/ 283 | /* Plugin interface */ 284 | /*----------------------------------------------------------------------------*/ 285 | 286 | #ifdef PLUGIN_NAME 287 | 288 | void init_plugin (void) 289 | { 290 | setlocale (LC_ALL, ""); 291 | bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); 292 | bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); 293 | textdomain (GETTEXT_PACKAGE); 294 | 295 | if (getenv ("WAYLAND_DISPLAY")) 296 | { 297 | if (getenv ("WAYFIRE_CONFIG_FILE")) wm = WM_WAYFIRE; 298 | else wm = WM_LABWC; 299 | } 300 | else wm = WM_OPENBOX; 301 | 302 | singledlg = FALSE; 303 | 304 | main_dlg = NULL; 305 | builder = gtk_builder_new_from_file (PACKAGE_DATA_DIR "/ui/rc_gui.ui"); 306 | 307 | init_config (); 308 | } 309 | 310 | int plugin_tabs (void) 311 | { 312 | return 5; 313 | } 314 | 315 | const char *tab_name (int tab) 316 | { 317 | switch (tab) 318 | { 319 | case 0 : return C_("tab", "System"); 320 | case 1 : return C_("tab", "Display"); 321 | case 2 : return C_("tab", "Interfaces"); 322 | case 3 : return C_("tab", "Performance"); 323 | case 4 : return C_("tab", "Localisation"); 324 | default : return _("No such tab"); 325 | } 326 | } 327 | 328 | const char *tab_id (int tab) 329 | { 330 | return NULL; 331 | } 332 | 333 | GtkWidget *get_tab (int tab) 334 | { 335 | GtkWidget *window, *plugin; 336 | 337 | window = (GtkWidget *) gtk_builder_get_object (builder, "notebook1"); 338 | switch (tab) 339 | { 340 | case 0 : 341 | plugin = (GtkWidget *) gtk_builder_get_object (builder, "vbox10"); 342 | break; 343 | case 1 : 344 | plugin = (GtkWidget *) gtk_builder_get_object (builder, "vbox50"); 345 | break; 346 | case 2 : 347 | plugin = (GtkWidget *) gtk_builder_get_object (builder, "vbox20"); 348 | break; 349 | case 3 : 350 | plugin = (GtkWidget *) gtk_builder_get_object (builder, "vbox30"); 351 | break; 352 | case 4 : 353 | plugin = (GtkWidget *) gtk_builder_get_object (builder, "vbox40"); 354 | break; 355 | default : 356 | plugin = NULL; 357 | } 358 | 359 | gtk_container_remove (GTK_CONTAINER (window), plugin); 360 | 361 | return plugin; 362 | } 363 | 364 | gboolean reboot_needed (void) 365 | { 366 | if (needs_reboot) return TRUE; 367 | 368 | if (system_reboot ()) return TRUE; 369 | if (display_reboot ()) return TRUE; 370 | if (interfacing_reboot ()) return TRUE; 371 | if (performance_reboot ()) return TRUE; 372 | 373 | return FALSE; 374 | } 375 | 376 | void free_plugin (void) 377 | { 378 | g_object_unref (builder); 379 | } 380 | 381 | #else 382 | 383 | /*----------------------------------------------------------------------------*/ 384 | /* Reboot prompt */ 385 | /*----------------------------------------------------------------------------*/ 386 | 387 | static gboolean reboot_prompt (gpointer data) 388 | { 389 | GtkWidget *wid; 390 | 391 | builder = gtk_builder_new_from_file (PACKAGE_DATA_DIR "/ui/rc_gui.ui"); 392 | 393 | msg_dlg = (GtkWidget *) gtk_builder_get_object (builder, "modal"); 394 | gtk_window_set_transient_for (GTK_WINDOW (msg_dlg), GTK_WINDOW (main_dlg)); 395 | 396 | wid = (GtkWidget *) gtk_builder_get_object (builder, "modal_msg"); 397 | gtk_label_set_text (GTK_LABEL (wid), _("The changes you have made require the Raspberry Pi to be rebooted to take effect.\n\nWould you like to reboot now? ")); 398 | 399 | wid = (GtkWidget *) gtk_builder_get_object (builder, "modal_cancel"); 400 | gtk_button_set_label (GTK_BUTTON (wid), _("_No")); 401 | g_signal_connect (wid, "clicked", G_CALLBACK (close_app), NULL); 402 | gtk_widget_show (wid); 403 | 404 | wid = (GtkWidget *) gtk_builder_get_object (builder, "modal_ok"); 405 | gtk_button_set_label (GTK_BUTTON (wid), _("_Yes")); 406 | g_signal_connect (wid, "clicked", G_CALLBACK (close_app_reboot), NULL); 407 | gtk_widget_show (wid); 408 | 409 | wid = (GtkWidget *) gtk_builder_get_object (builder, "modal_buttons"); 410 | gtk_widget_show (wid); 411 | 412 | gtk_widget_show (msg_dlg); 413 | 414 | g_object_unref (builder); 415 | return FALSE; 416 | } 417 | 418 | static gboolean close_app (GtkButton *button, gpointer data) 419 | { 420 | gtk_widget_destroy (msg_dlg); 421 | gtk_main_quit (); 422 | return FALSE; 423 | } 424 | 425 | static gboolean close_app_reboot (GtkButton *button, gpointer data) 426 | { 427 | gtk_widget_destroy (msg_dlg); 428 | gtk_main_quit (); 429 | vsystem ("reboot"); 430 | return FALSE; 431 | } 432 | 433 | /*----------------------------------------------------------------------------*/ 434 | /* Main window button handlers */ 435 | /*----------------------------------------------------------------------------*/ 436 | 437 | static gboolean ok_main (GtkButton *button, gpointer data) 438 | { 439 | message (_("Updating configuration - please wait...")); 440 | pthread = g_thread_new (NULL, process_changes_thread, NULL); 441 | return FALSE; 442 | } 443 | 444 | static gpointer process_changes_thread (gpointer ptr) 445 | { 446 | if (read_system_tab ()) needs_reboot = TRUE; 447 | if (read_display_tab ()) needs_reboot = TRUE; 448 | if (read_interfacing_tab ()) needs_reboot = TRUE; 449 | if (read_performance_tab ()) needs_reboot = TRUE; 450 | 451 | if (needs_reboot) g_idle_add (reboot_prompt, NULL); 452 | else gtk_main_quit (); 453 | 454 | return NULL; 455 | } 456 | 457 | static gboolean cancel_main (GtkButton *button, gpointer data) 458 | { 459 | if (needs_reboot) reboot_prompt (NULL); 460 | else gtk_main_quit (); 461 | return FALSE; 462 | } 463 | 464 | static gboolean close_prog (GtkWidget *widget, GdkEvent *event, gpointer data) 465 | { 466 | gtk_main_quit (); 467 | return TRUE; 468 | } 469 | 470 | /*----------------------------------------------------------------------------*/ 471 | /* Main window */ 472 | /*----------------------------------------------------------------------------*/ 473 | 474 | static gboolean init_window (gpointer data) 475 | { 476 | init_config (); 477 | 478 | g_object_unref (builder); 479 | 480 | gtk_widget_show (main_dlg); 481 | gtk_widget_destroy (msg_dlg); 482 | 483 | return FALSE; 484 | } 485 | 486 | static gboolean draw (GtkWidget *wid, cairo_t *cr, gpointer data) 487 | { 488 | g_signal_handler_disconnect (wid, draw_id); 489 | g_idle_add (init_window, NULL); 490 | return FALSE; 491 | } 492 | 493 | int main (int argc, char *argv[]) 494 | { 495 | GtkWidget *wid; 496 | 497 | setlocale (LC_ALL, ""); 498 | bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); 499 | bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); 500 | textdomain (GETTEXT_PACKAGE); 501 | 502 | if (getenv ("WAYLAND_DISPLAY")) 503 | { 504 | if (getenv ("WAYFIRE_CONFIG_FILE")) wm = WM_WAYFIRE; 505 | else wm = WM_LABWC; 506 | } 507 | else wm = WM_OPENBOX; 508 | 509 | main_dlg = NULL; 510 | gtk_init (&argc, &argv); 511 | 512 | // handle cases where single locale dialog is required 513 | singledlg = TRUE; 514 | if (argc == 2 && !g_strcmp0 (argv[1], "-w")) 515 | { 516 | on_set_wifi (NULL, NULL); 517 | return 0; 518 | } 519 | 520 | if (argc == 2 && !g_strcmp0 (argv[1], "-k")) 521 | { 522 | pthread = 0; 523 | on_set_keyboard (NULL, NULL); 524 | if (pthread) g_thread_join (pthread); 525 | return 0; 526 | } 527 | singledlg = FALSE; 528 | 529 | builder = gtk_builder_new_from_file (PACKAGE_DATA_DIR "/ui/rc_gui.ui"); 530 | 531 | main_dlg = (GtkWidget *) gtk_builder_get_object (builder, "main_window"); 532 | g_signal_connect (main_dlg, "delete_event", G_CALLBACK (close_prog), NULL); 533 | 534 | wid = (GtkWidget *) gtk_builder_get_object (builder, "button_ok"); 535 | g_signal_connect (wid, "clicked", G_CALLBACK (ok_main), NULL); 536 | 537 | wid = (GtkWidget *) gtk_builder_get_object (builder, "button_cancel"); 538 | g_signal_connect (wid, "clicked", G_CALLBACK (cancel_main), NULL); 539 | 540 | message (_("Loading configuration - please wait...")); 541 | draw_id = g_signal_connect (msg_dlg, "draw", G_CALLBACK (draw), NULL); 542 | 543 | gtk_main (); 544 | 545 | return 0; 546 | } 547 | 548 | #endif 549 | 550 | /* End of file */ 551 | /*----------------------------------------------------------------------------*/ 552 | -------------------------------------------------------------------------------- /src/rc_gui.h: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | /*----------------------------------------------------------------------------*/ 28 | /* Typedefs and macros */ 29 | /*----------------------------------------------------------------------------*/ 30 | 31 | #ifdef PLUGIN_NAME 32 | extern const char *dgetfixt (const char *domain, const char *msgctxid); 33 | #undef _ 34 | #define _(a) dgettext(GETTEXT_PACKAGE,a) 35 | #undef C_ 36 | #define C_(a,b) dgetfixt(GETTEXT_PACKAGE,a"\004"b) 37 | #endif 38 | 39 | #ifdef PLUGIN_NAME 40 | #define REALTIME 41 | #endif 42 | 43 | #define SUDO_PREFIX "SUDO_ASKPASS=/usr/bin/sudopwd sudo -A " 44 | #define GET_PREFIX "raspi-config nonint " 45 | #define SET_PREFIX SUDO_PREFIX GET_PREFIX 46 | #define GET_PI_TYPE GET_PREFIX "get_pi_type" 47 | #define IS_PI GET_PREFIX "is_pi" 48 | #define IS_PI4 GET_PREFIX "is_pifour" 49 | #define IS_PI5 GET_PREFIX "is_pifive" 50 | 51 | #define CONFIG_SWITCH(wid,name,var,cmd) wid = gtk_builder_get_object (builder, name); \ 52 | gtk_switch_set_active (GTK_SWITCH (wid), !(var = get_status (cmd))); 53 | 54 | #ifdef REALTIME 55 | #define HANDLE_SWITCH(wid,setcmd) g_signal_connect (wid, "state-set", G_CALLBACK (on_switch), setcmd); 56 | #define HANDLE_CONTROL(wid,cmd,cb) g_signal_connect (wid, cmd, G_CALLBACK(cb), NULL); 57 | #else 58 | #define HANDLE_SWITCH(wid,setcmd) 59 | #define HANDLE_CONTROL(wid,cmd,cb) 60 | #endif 61 | 62 | #define READ_SWITCH(wid,var,cmd,reb) if (var == gtk_switch_get_active (GTK_SWITCH (wid))) \ 63 | { \ 64 | vsystem (cmd, (1 - var)); \ 65 | if (reb) reboot = 1; \ 66 | } 67 | 68 | #define CHECK_SWITCH(wid,var) if (var == gtk_switch_get_active (GTK_SWITCH (wid))) \ 69 | { \ 70 | return TRUE; \ 71 | } 72 | 73 | typedef enum 74 | { 75 | WM_OPENBOX, 76 | WM_WAYFIRE, 77 | WM_LABWC 78 | } wm_type; 79 | 80 | /*----------------------------------------------------------------------------*/ 81 | /* Global data */ 82 | /*----------------------------------------------------------------------------*/ 83 | 84 | extern GtkWidget *main_dlg, *msg_dlg; 85 | extern GThread *pthread; 86 | extern gboolean needs_reboot; 87 | extern gboolean singledlg; 88 | extern wm_type wm; 89 | 90 | /*----------------------------------------------------------------------------*/ 91 | /* Prototypes */ 92 | /*----------------------------------------------------------------------------*/ 93 | 94 | extern int vsystem (const char *fmt, ...); 95 | extern char *get_string (char *cmd); 96 | extern int get_status (char *cmd); 97 | extern char *get_quoted_param (char *path, char *fname, char *toseek); 98 | extern gboolean on_switch (GtkSwitch *btn, gboolean state, const char *cmd); 99 | extern void message (char *msg); 100 | extern void info (char *msg); 101 | 102 | extern void set_watch_cursor (void); 103 | extern void clear_watch_cursor (void); 104 | 105 | /* End of file */ 106 | /*----------------------------------------------------------------------------*/ 107 | -------------------------------------------------------------------------------- /src/system.c: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | 28 | #include 29 | #include 30 | #include 31 | 32 | #include "rc_gui.h" 33 | 34 | /*----------------------------------------------------------------------------*/ 35 | /* Typedefs and macros */ 36 | /*----------------------------------------------------------------------------*/ 37 | 38 | #define GET_HOSTNAME GET_PREFIX "get_hostname" 39 | #define SET_HOSTNAME SET_PREFIX "do_hostname %s" 40 | #define GET_BOOT_CLI GET_PREFIX "get_boot_cli" 41 | #define GET_ALOGIN_CLI GET_PREFIX "get_autologin_cli" 42 | #define GET_ALOGIN_DESK GET_PREFIX "get_autologin_desktop" 43 | #define SET_ALOGIN SET_PREFIX "do_autologin %d" 44 | #define SET_BOOT_CLI SET_PREFIX "do_boot_target B1" 45 | #define SET_BOOT_GUI SET_PREFIX "do_boot_target B2" 46 | #define GET_SPLASH GET_PREFIX "get_boot_splash" 47 | #define SET_SPLASH SET_PREFIX "do_boot_splash %d" 48 | #define GET_LEDS GET_PREFIX "get_leds" 49 | #define SET_LEDS SET_PREFIX "do_leds %d" 50 | #define GET_BROWSER GET_PREFIX "get_browser" 51 | #define SET_BROWSER SET_PREFIX "do_browser %s" 52 | #define FF_INSTALLED GET_PREFIX "is_installed firefox" 53 | #define CR_INSTALLED GET_PREFIX "is_installed chromium" 54 | 55 | #define CHANGE_PASSWD "echo $USER:'%s' | " SUDO_PREFIX "chpasswd -e" 56 | 57 | /*----------------------------------------------------------------------------*/ 58 | /* Global data */ 59 | /*----------------------------------------------------------------------------*/ 60 | 61 | static GObject *passwd_btn, *hostname_btn; 62 | static GObject *boot_desktop_rb, *boot_cli_rb, *chromium_rb, *firefox_rb; 63 | static GObject *alog_cli_sw, *alog_desk_sw, *splash_sw, *led_actpwr_sw; 64 | static GObject *pwentry1_tb, *pwentry2_tb, *pwok_btn; 65 | static GObject *hostname_tb; 66 | 67 | static int orig_boot, orig_alog_cli, orig_alog_desk, orig_splash, orig_leds; 68 | static char *orig_browser; 69 | 70 | /*----------------------------------------------------------------------------*/ 71 | /* Prototypes */ 72 | /*----------------------------------------------------------------------------*/ 73 | 74 | static void on_change_passwd (GtkButton* btn, gpointer ptr); 75 | static void passwd_update (GtkEntry *entry, gpointer ptr); 76 | static void on_change_hostname (GtkButton* btn, gpointer ptr); 77 | static void config_boot (void); 78 | static void boot_update (void); 79 | static void on_boot_toggle (GtkButton *btn, gpointer ptr); 80 | #ifdef REALTIME 81 | static gboolean on_alogin_toggle (GtkSwitch *btn, gboolean state, gpointer ptr); 82 | static gboolean process_alogin (gpointer data); 83 | static void on_browser_toggle (GtkButton *btn, gpointer ptr); 84 | static gboolean process_browser (gpointer data); 85 | static gboolean process_boot (gpointer data); 86 | #endif 87 | 88 | /*----------------------------------------------------------------------------*/ 89 | /* Function definitions */ 90 | /*----------------------------------------------------------------------------*/ 91 | 92 | /*----------------------------------------------------------------------------*/ 93 | /* Password dialog */ 94 | /*----------------------------------------------------------------------------*/ 95 | 96 | static void on_change_passwd (GtkButton* btn, gpointer ptr) 97 | { 98 | GtkBuilder *builder; 99 | GtkWidget *dlg; 100 | int res; 101 | 102 | textdomain (GETTEXT_PACKAGE); 103 | builder = gtk_builder_new_from_file (PACKAGE_DATA_DIR "/ui/rc_gui.ui"); 104 | dlg = (GtkWidget *) gtk_builder_get_object (builder, "passwddlg"); 105 | if (main_dlg) gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (main_dlg)); 106 | pwentry1_tb = gtk_builder_get_object (builder, "pwentry1"); 107 | pwentry2_tb = gtk_builder_get_object (builder, "pwentry2"); 108 | gtk_entry_set_visibility (GTK_ENTRY (pwentry1_tb), FALSE); 109 | gtk_entry_set_visibility (GTK_ENTRY (pwentry2_tb), FALSE); 110 | g_signal_connect (pwentry1_tb, "changed", G_CALLBACK (passwd_update), NULL); 111 | g_signal_connect (pwentry2_tb, "changed", G_CALLBACK (passwd_update), NULL); 112 | pwok_btn = gtk_builder_get_object (builder, "passwdok"); 113 | gtk_widget_set_sensitive (GTK_WIDGET (pwok_btn), FALSE); 114 | 115 | if (gtk_dialog_run (GTK_DIALOG (dlg)) == GTK_RESPONSE_OK) 116 | { 117 | res = vsystem (CHANGE_PASSWD, crypt (gtk_entry_get_text (GTK_ENTRY (pwentry1_tb)), crypt_gensalt (NULL, 0, NULL, 0))); 118 | gtk_widget_destroy (dlg); 119 | if (res) 120 | info (_("The password change failed.\n\nThis could be because the current password was incorrect, or because the new password was not sufficiently complex or was too similar to the current password.")); 121 | else 122 | info (_("The password has been changed successfully.")); 123 | } 124 | else gtk_widget_destroy (dlg); 125 | g_object_unref (builder); 126 | } 127 | 128 | static void passwd_update (GtkEntry *entry, gpointer ptr) 129 | { 130 | if (strlen (gtk_entry_get_text (GTK_ENTRY (pwentry1_tb))) && g_strcmp0 (gtk_entry_get_text (GTK_ENTRY (pwentry1_tb)), 131 | gtk_entry_get_text (GTK_ENTRY(pwentry2_tb)))) 132 | gtk_widget_set_sensitive (GTK_WIDGET (pwok_btn), FALSE); 133 | else 134 | gtk_widget_set_sensitive (GTK_WIDGET (pwok_btn), TRUE); 135 | } 136 | 137 | /*----------------------------------------------------------------------------*/ 138 | /* Hostname dialog */ 139 | /*----------------------------------------------------------------------------*/ 140 | 141 | static void on_change_hostname (GtkButton* btn, gpointer ptr) 142 | { 143 | GtkBuilder *builder; 144 | GtkWidget *dlg; 145 | int res; 146 | const char *new_hn, *cptr; 147 | char *orig_hn; 148 | 149 | textdomain (GETTEXT_PACKAGE); 150 | builder = gtk_builder_new_from_file (PACKAGE_DATA_DIR "/ui/rc_gui.ui"); 151 | dlg = (GtkWidget *) gtk_builder_get_object (builder, "hostnamedlg"); 152 | if (main_dlg) gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (main_dlg)); 153 | hostname_tb = gtk_builder_get_object (builder, "hnentry1"); 154 | orig_hn = get_string (GET_HOSTNAME); 155 | gtk_entry_set_text (GTK_ENTRY (hostname_tb), orig_hn); 156 | 157 | if (gtk_dialog_run (GTK_DIALOG (dlg)) == GTK_RESPONSE_OK) 158 | { 159 | new_hn = gtk_entry_get_text (GTK_ENTRY (hostname_tb)); 160 | if (g_strcmp0 (orig_hn, new_hn)) 161 | { 162 | res = 1; 163 | cptr = new_hn; 164 | if (*cptr == 0 || *cptr == '-') res = 0; 165 | else while (*cptr) 166 | { 167 | if (!(*cptr >= '0' && *cptr <= '9') && !(*cptr >= 'a' && *cptr <= 'z') && !(*cptr >= 'A' && *cptr <= 'Z') && *cptr != '-') 168 | { 169 | res = 0; 170 | break; 171 | } 172 | cptr++; 173 | } 174 | if (res && *(cptr - 1) == '-') res = 0; 175 | 176 | if (res) 177 | { 178 | vsystem (SET_HOSTNAME, new_hn); 179 | gtk_widget_destroy (dlg); 180 | info (_("The hostname has been changed successfully and will take effect on the next reboot.")); 181 | needs_reboot = TRUE; 182 | } 183 | else 184 | { 185 | gtk_widget_destroy (dlg); 186 | info (_("The hostname change failed.\n\nThe hostname must only contain the characters A-Z, a-z, 0-9 and hyphen.\nThe first and last character may not be the hyphen.")); 187 | } 188 | } 189 | else gtk_widget_destroy (dlg); 190 | } 191 | else gtk_widget_destroy (dlg); 192 | g_free (orig_hn); 193 | g_object_unref (builder); 194 | } 195 | 196 | /*----------------------------------------------------------------------------*/ 197 | /* Control handling */ 198 | /*----------------------------------------------------------------------------*/ 199 | 200 | static void config_boot (void) 201 | { 202 | if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (boot_desktop_rb))) vsystem (SET_BOOT_GUI); 203 | else vsystem (SET_BOOT_CLI); 204 | } 205 | 206 | static void config_autologin (void) 207 | { 208 | int setting = 0; 209 | if (gtk_switch_get_active (GTK_SWITCH (alog_cli_sw))) setting += 0x01; 210 | if (gtk_switch_get_active (GTK_SWITCH (alog_desk_sw))) setting += 0x02; 211 | vsystem (SET_ALOGIN, setting); 212 | } 213 | 214 | static void boot_update (void) 215 | { 216 | if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (boot_cli_rb))) 217 | { 218 | gtk_switch_set_active (GTK_SWITCH (splash_sw), FALSE); 219 | gtk_switch_set_active (GTK_SWITCH (alog_desk_sw), FALSE); 220 | gtk_widget_set_sensitive (GTK_WIDGET (splash_sw), FALSE); 221 | gtk_widget_set_sensitive (GTK_WIDGET (alog_desk_sw), FALSE); 222 | } 223 | else 224 | { 225 | gtk_widget_set_sensitive (GTK_WIDGET (splash_sw), TRUE); 226 | gtk_widget_set_sensitive (GTK_WIDGET (alog_desk_sw), TRUE); 227 | } 228 | } 229 | 230 | static void on_boot_toggle (GtkButton *btn, gpointer ptr) 231 | { 232 | boot_update (); 233 | 234 | #ifdef REALTIME 235 | set_watch_cursor (); 236 | g_idle_add (process_boot, NULL); 237 | #endif 238 | } 239 | 240 | /*----------------------------------------------------------------------------*/ 241 | /* Real-time handlers */ 242 | /*----------------------------------------------------------------------------*/ 243 | 244 | #ifdef REALTIME 245 | 246 | static gboolean on_alogin_toggle (GtkSwitch *btn, gboolean state, gpointer ptr) 247 | { 248 | set_watch_cursor (); 249 | g_idle_add (process_alogin, NULL); 250 | return FALSE; 251 | } 252 | 253 | static gboolean process_alogin (gpointer data) 254 | { 255 | config_autologin (); 256 | clear_watch_cursor (); 257 | return FALSE; 258 | } 259 | 260 | static void on_browser_toggle (GtkButton *btn, gpointer ptr) 261 | { 262 | set_watch_cursor (); 263 | g_idle_add (process_browser, NULL); 264 | } 265 | 266 | static gboolean process_browser (gpointer data) 267 | { 268 | if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (chromium_rb))) 269 | vsystem (SET_BROWSER, "chromium"); 270 | else 271 | vsystem (SET_BROWSER, "firefox"); 272 | clear_watch_cursor (); 273 | return FALSE; 274 | } 275 | 276 | static gboolean process_boot (gpointer data) 277 | { 278 | config_boot (); 279 | clear_watch_cursor (); 280 | return FALSE; 281 | } 282 | 283 | #endif 284 | 285 | /*----------------------------------------------------------------------------*/ 286 | /* Exit processing */ 287 | /*----------------------------------------------------------------------------*/ 288 | 289 | gboolean read_system_tab (void) 290 | { 291 | gboolean reboot = FALSE; 292 | 293 | if (orig_boot != gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (boot_desktop_rb))) 294 | { 295 | config_boot (); 296 | } 297 | 298 | if (orig_alog_cli == gtk_switch_get_active (GTK_SWITCH (alog_cli_sw)) 299 | || orig_alog_desk == gtk_switch_get_active (GTK_SWITCH (alog_desk_sw))) 300 | { 301 | config_autologin (); 302 | } 303 | 304 | READ_SWITCH (splash_sw, orig_splash, SET_SPLASH, FALSE); 305 | 306 | if (strcmp (orig_browser, "chromium") && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (chromium_rb))) 307 | vsystem (SET_BROWSER, "chromium"); 308 | if (strcmp (orig_browser, "firefox") && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (firefox_rb))) 309 | vsystem (SET_BROWSER, "firefox"); 310 | 311 | if (!vsystem (IS_PI)) 312 | { 313 | if (orig_leds != -1) READ_SWITCH (led_actpwr_sw, orig_leds, SET_LEDS, FALSE); 314 | } 315 | 316 | return reboot; 317 | } 318 | 319 | /*----------------------------------------------------------------------------*/ 320 | /* Reboot check */ 321 | /*----------------------------------------------------------------------------*/ 322 | 323 | gboolean system_reboot (void) 324 | { 325 | return FALSE; 326 | } 327 | 328 | /*----------------------------------------------------------------------------*/ 329 | /* Tab setup */ 330 | /*----------------------------------------------------------------------------*/ 331 | 332 | void load_system_tab (GtkBuilder *builder) 333 | { 334 | /* Change password button */ 335 | passwd_btn = gtk_builder_get_object (builder, "button_pw"); 336 | g_signal_connect (passwd_btn, "clicked", G_CALLBACK (on_change_passwd), NULL); 337 | 338 | /* Change hostname button */ 339 | hostname_btn = gtk_builder_get_object (builder, "button_hn"); 340 | g_signal_connect (hostname_btn, "clicked", G_CALLBACK (on_change_hostname), NULL); 341 | 342 | /* Splash screen switch */ 343 | CONFIG_SWITCH (splash_sw, "sw_splash", orig_splash, GET_SPLASH); 344 | HANDLE_SWITCH (splash_sw, SET_SPLASH); 345 | if (!vsystem (IS_PI)) 346 | { 347 | if (!get_status ("grep -q boot=live /proc/cmdline ; echo $?")) 348 | { 349 | gtk_widget_set_sensitive (GTK_WIDGET (splash_sw), FALSE); 350 | gtk_widget_set_tooltip_text (GTK_WIDGET (splash_sw), _("Splash screen cannot be configured on a live image")); 351 | } 352 | } 353 | 354 | /* Autologin switch */ 355 | CONFIG_SWITCH (alog_cli_sw, "sw_alogin_cons", orig_alog_cli, GET_ALOGIN_CLI); 356 | HANDLE_CONTROL (alog_cli_sw, "state-set", on_alogin_toggle); 357 | 358 | CONFIG_SWITCH (alog_desk_sw, "sw_alogin_desk", orig_alog_desk, GET_ALOGIN_DESK); 359 | HANDLE_CONTROL (alog_desk_sw, "state-set", on_alogin_toggle); 360 | 361 | /* CLI / desktop radio buttons */ 362 | boot_desktop_rb = gtk_builder_get_object (builder, "rb_desktop"); 363 | boot_cli_rb = gtk_builder_get_object (builder, "rb_cli"); 364 | if ((orig_boot = get_status (GET_BOOT_CLI))) 365 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (boot_desktop_rb), TRUE); 366 | else 367 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (boot_cli_rb), TRUE); 368 | g_signal_connect (boot_cli_rb, "toggled", G_CALLBACK (on_boot_toggle), NULL); 369 | boot_update (); 370 | 371 | /* Browser radio buttons */ 372 | chromium_rb = gtk_builder_get_object (builder, "rb_chromium"); 373 | firefox_rb = gtk_builder_get_object (builder, "rb_firefox"); 374 | orig_browser = get_string (GET_BROWSER); 375 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (firefox_rb), !strcmp (orig_browser, "firefox")); 376 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chromium_rb), !strcmp (orig_browser, "chromium")); 377 | if (vsystem (CR_INSTALLED) || vsystem (FF_INSTALLED)) 378 | { 379 | gtk_widget_set_sensitive (GTK_WIDGET (chromium_rb), FALSE); 380 | gtk_widget_set_sensitive (GTK_WIDGET (firefox_rb), FALSE); 381 | gtk_widget_set_tooltip_text (GTK_WIDGET (chromium_rb), _("Multiple browsers are not installed")); 382 | gtk_widget_set_tooltip_text (GTK_WIDGET (firefox_rb), _("Multiple browsers are not installed")); 383 | } 384 | HANDLE_CONTROL (chromium_rb, "toggled", on_browser_toggle); 385 | 386 | /* Power LED switch */ 387 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "hbox17"))); 388 | if (!vsystem (IS_PI)) 389 | { 390 | led_actpwr_sw = gtk_builder_get_object (builder, "sw_led_actpwr"); 391 | orig_leds = get_status (GET_LEDS); 392 | if (orig_leds != -1) 393 | { 394 | gtk_switch_set_active (GTK_SWITCH (led_actpwr_sw), !(orig_leds)); 395 | gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (builder, "hbox17"))); 396 | HANDLE_SWITCH (led_actpwr_sw, SET_LEDS); 397 | } 398 | } 399 | } 400 | 401 | /* End of file */ 402 | /*----------------------------------------------------------------------------*/ 403 | -------------------------------------------------------------------------------- /src/system.h: -------------------------------------------------------------------------------- 1 | /*============================================================================ 2 | Copyright (c) 2015-2025 Raspberry Pi 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | * Neither the name of the copyright holder nor the 13 | names of its contributors may be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | ============================================================================*/ 27 | /*----------------------------------------------------------------------------*/ 28 | /* Typedefs and macros */ 29 | /*----------------------------------------------------------------------------*/ 30 | 31 | /*----------------------------------------------------------------------------*/ 32 | /* Global data */ 33 | /*----------------------------------------------------------------------------*/ 34 | 35 | /*----------------------------------------------------------------------------*/ 36 | /* Prototypes */ 37 | /*----------------------------------------------------------------------------*/ 38 | 39 | extern gboolean read_system_tab (void); 40 | extern gboolean system_reboot (void); 41 | extern void load_system_tab (GtkBuilder *builder); 42 | 43 | /* End of file */ 44 | /*----------------------------------------------------------------------------*/ 45 | 46 | --------------------------------------------------------------------------------