[
  {
    "path": ".gitignore",
    "content": "cmake_install.cmake\nCMakeFiles\nCMakeCache.txt\nMakefile\nbuild/\n*.gmo\n*.mo\npo/sakura.pot\ninstall_manifest.txt\nsrc/sakura\nsakura.1\n"
  },
  {
    "path": "AUTHORS",
    "content": "Main author\n============\n\n           David Gómez Espinosa <david@pleyades.net>\n\nContributors\n============\n\n             Tom Adams <tom@holizz.com>\n           Fábio Antunes <fabio.antunes@hotmail.com>\n         Szervác Attila <sas@321.hu>\n          Mattia Bertoni <tia.tif@fastwebnet.it>\n           Mario Blättermann <mario.blaettermann@t-online.de>\n            Iain Bucław <ibuclaw@gmail.com>\n            Kang Bundo <bundo@bundo.biz>\n             Tim Bynum <tjbynum@wallybox.timsplace.org>\n          Costin Chirvasuta <costinc@gmail.com>\n        Isratine Citizen <genghiskhan@gmx.ca>\n            Álex Cornejo <acornejo@gmail.com>\n           Fabio Cobianchi <cob@mailbox.org>\n            Eric Davis <circa1979@gmail.com>\n           Fabio Di Matteo <pobfdm@gmail.com>\n          Nicola Fontana <ntd@users.sourceforge.net>\n         Aleksey Frolov atommixz@gmail.com\n           Dávid Gábor Bodor <david.gabor.bodor@gmail.com>\n         Thibaut Girka <thib@sitedethib.com>\n            Josh Glover <jmglov@gmail.com>\n                 Grindhold <grindhold@gmx.net>\n          Stefan Haller <haliner@gmail.com>\n         Jen Yee Hong <pcman.tw@gmail.com>\n                 Itn <itn2002-lj@infoseek.jp>\n           Jordi Jané Cardo <jordi.jane@gmail.com>\n           David Jensen <djensen@inebraska.com>\n            Adam Juraszek <juriad@gmail.com>\n            Lado Kumsiashvili <herrlado@gmail.com>\n          Daniel Kondor <kondor.dani@gmail.com>\n           Lukáš Lommer <llommer@svn.gnome.org>\n        Torbjörn Lönnemark <tobbez@gmail.com>\n         Yannick LM <yannicklm1337@gmail.com>\n          Michał Łuszczyk <michal@agmarml.pl>\n          Calvin M <crazycal00@gmail.com>\n           Enric Morales <me@enric.me>\n        Thorsten Mühlfelder <thenktor@gmx.de>\n           Rafał Mużyło <galtgendo@gmail.com>\n          Dmitry N. Shilov <stormblast@land.ru>\n            Erik Nelson <io@eriknelson.me>\n            Raúl Núñez de Arenas Coronado <raulnac@gmail.com>\n          Dražen Odobašić <dodobasic@gmail.com>\n    Marc-Antoine Perennou <Marc-Antoine@Perennou.com>\n           Kalle Raiskila <kraiskil@ovi.com>\n       Sebastian Reichel <elektranox@gmail.com>\n           Páder Rezső <rezso@rezso.net>\n        Aurélien Riviere <aurelien.riv@gmail.com>\n         Andreas Rönnquist <gusnan@openmailbox.org>\n           Ildar Sagdejev <specious@gmail.com>\n           Iñigo Serna <inigoserna@gmail.com>\n          Andrew Starr-Bochicchio <a.starr.b@gmail.com>\n                 Tenzing <mat@parad0x.org>\n          Sergey Tominov <ikenfin@gmail.com>\n         Fabrice Thiroux <fabrice.thiroux@tiscali.fr>\n         Hiroshi Utumi <utuhiro78@yahoo.co.jp>\n           Pável Varela Rodríguez <neonskull@gmail.com>\n         Evgenij Vdovin <evdovin@pochta.ru>\n          Jesper Wallin <jesper@ifconfig.se>\n            Aron Xu <happyaron.xu@gmail.com>\n                 Yuanyelele <yuanyelele@gmail.com>\n       Chidambar Zinnoury <illogict@online.fr>\n\n\nArtwork\n=======\n\n\tTerminal icon was created by the Tango Desktop Project:\n\t\thttp://tango.freedesktop.org\n\n\n\tIf you're not here, cry loud and send me an email ;) : <david@pleyades.net>\n"
  },
  {
    "path": "CMakeLists.txt",
    "content": "CMAKE_MINIMUM_REQUIRED (VERSION 3.15 FATAL_ERROR)\nCMAKE_POLICY(SET CMP0005 NEW)\nPROJECT (sakura)\nSET (AUTHOR \"David Gómez Espinosa\" INTERNAL \"Author\")\nSET (VERSION \"3.8.9\")\n\n\nINCLUDE (FindPkgConfig)\n\nIF (NOT PKG_CONFIG_FOUND)\n\tMESSAGE (FATAL_ERROR \"pkg-config not found...\")\nENDIF (NOT PKG_CONFIG_FOUND)\n\npkg_check_modules (GLIB REQUIRED glib-2.0>=2.40)\nIF (NOT GLIB_FOUND)\n\tMESSAGE(FATAL_ERROR \"You don't seem to have glib >= 2.40 development libraries installed...\")\nENDIF (NOT GLIB_FOUND)\n\npkg_check_modules (GLIB REQUIRED gio-unix-2.0)\nIF (NOT GLIB_FOUND)\n\tMESSAGE(FATAL_ERROR \"You don't seem to have glib >= 2.40 development libraries installed...\")\nENDIF (NOT GLIB_FOUND)\n\npkg_check_modules (GTK REQUIRED gtk+-3.0>=3.20)\nIF (NOT GTK_FOUND)\n\tMESSAGE(FATAL_ERROR \"You don't seem to have gtk >= 3.20 development libraries installed...\")\nENDIF (NOT GTK_FOUND)\n\npkg_check_modules (VTE REQUIRED vte-2.91>=0.50)\nIF (NOT VTE_FOUND)\n\tMESSAGE(FATAL_ERROR \"You don't seem to have vte >= 0.50 development libraries installed...\")\nENDIF (NOT VTE_FOUND)\n\npkg_check_modules (X11 REQUIRED x11)\nIF (NOT X11_FOUND)\n\tMESSAGE(FATAL_ERROR \"You don't seem to have x11 development libraries installed...\")\nENDIF (NOT X11_FOUND)\n\nFIND_PROGRAM(POD2MAN pod2man)\nMESSAGE (\"pod2man executable is\" ${POD2MAN})\n\nADD_DEFINITIONS (-DVERSION=\"${VERSION}\")\nADD_DEFINITIONS (-DDATADIR=\"${CMAKE_INSTALL_PREFIX}/share\")\nADD_DEFINITIONS (-DBUILDTYPE=\"${CMAKE_BUILD_TYPE}\")\n\nIF (${CMAKE_BUILD_TYPE} MATCHES \"Debug\")\n\tSET (CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -Wall\")\nELSE (${CMAKE_BUILD_TYPE} NOT MATCHES \"Debug\")\n\tSET (CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -O2 -Wno-deprecated-declarations\")\nENDIF (${CMAKE_BUILD_TYPE} MATCHES \"Debug\")\n\nINCLUDE_DIRECTORIES (. ${GTK_INCLUDE_DIRS} ${VTE_INCLUDE_DIRS})\nLINK_DIRECTORIES (${GTK_LIBRARY_DIRS} ${VTE_LIBRARY_DIRS} ${X11_LIBRARY_DIRS})\nLINK_LIBRARIES (${GTK_LIBRARIES} ${VTE_LIBRARIES} ${X11_LIBRARIES} m)\nADD_EXECUTABLE (sakura src/sakura.c)\n\nADD_SUBDIRECTORY (po)\n\nINSTALL (TARGETS sakura RUNTIME DESTINATION bin)\nINSTALL (FILES sakura.desktop DESTINATION share/applications)\nINSTALL (FILES terminal-tango.svg DESTINATION share/pixmaps)\nIF (POD2MAN)\n\tINSTALL (FILES ${sakura_BINARY_DIR}/sakura.1 DESTINATION share/man/man1)\nENDIF (POD2MAN)\nINSTALL (FILES README.md DESTINATION share/doc/sakura)\n\nFILE (GLOB MO_FILES po/*.mo)\n\nSET_DIRECTORY_PROPERTIES (PROPERTIES\n\tADDITIONAL_MAKE_CLEAN_FILES \"${MO_FILES};po/sakura.pot\")\nSET (EXECUTABLE_OUTPUT_PATH src)\n\nADD_CUSTOM_TARGET (distclean\n\trm -f Makefile cmake_install.cmake CMakeCache.txt install_manifest.txt sakura.1\n\tCOMMAND rm -f po/*.mo po/sakura.pot po/Makefile po/cmake_install.cmake\n\tCOMMAND rm -rf CMakeFiles po/CMakeFiles)\n\nIF (POD2MAN)\nADD_CUSTOM_TARGET(man ALL\n\tCOMMAND ${POD2MAN} -u --section=1 --release=${VERSION} --center '' ${sakura_SOURCE_DIR}/sakura.pod sakura.1)\nENDIF (POD2MAN)\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n                            NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "README.md",
    "content": "[![Sponsor sakura!!](https://github.com/sponsors/dabisu/card)](https://github.com/sponsors/dabisu)\n\n# sakura\n\n**sakura** is a simple [gtk](http://www.gtk.org) and [vte](https://gitlab.gnome.org/GNOME/vte) based terminal emulator. It uses tabs to provide several terminals in one window and allows to change configuration options via a contextual menu. No more no less.\n\n## Installation\n\nHow to compile and install this beast ?\n\n```bash\n$ cmake .\n$ make\n$ sudo make install\n```\n**sakura** now uses the CMake building system (RIP our old system MOBS, we'll remember you ;)).\n\nTo install **sakura** with a different prefix, cmake needs to be invoked with the proper environment\nvariables, so for example, to install sakura in `/usr`, you must type:\n\n```bash\n$ cmake -DCMAKE_INSTALL_PREFIX=/usr .\n```\n\nUse CMAKE_BUILD_TYPE=Debug if you need debug symbols. Default type is \"Release\".\n\nMake sure your distribution sources the vte script for OSC 7 support in no login shells. If not, please add the following line to you .bashrc:\n\n```bash\n. /etc/profile.d/vte-2.91.sh\n```\n\n## Usage\n\n**sakura** has several command line options. Run `sakura --help` for a full list.\n\n## Keybindings\n\n**sakura** supports keyboard bindings in its config file (`~/.config/sakura/sakura.conf`), but there's no GUI to edit them, so please use your favourite editor to change the following values. Keybindings are a combination of an accelerator+key.\n\n### Accelerators\n\nAccelerators can be set to any _GdkModifierType_ mask value. The full list of _GdkModifierType_ values is available [here](http://gtk.php.net/manual/en/html/gdk/gdk.enum.modifiertype.html)\n\nMask values can be combined by ORing them. For example, to set the delete tab accelerator to Ctrl+Shift, change the option \"del_tab_accelerator\" value to \"5\". This number comes from ORing GDK_SHIFT_MASK and GDK_CONTROL_MASK.\n\nI realise that this configuration is not user-friendly, but...  :-P\n\nQuick reference: Shift(1), Cps-Lock(2), Ctrl(4), Alt(8), Ctrl-S(5), Ctrl-A(12), Ctrl-A-S(13)\n\n### Keys\n\nTo change default keys, set the key value you want to modify to your desired key. For example, if you want to use the \"D\" key instead of the \"W\" key to delete a tab, set \"del_tab_key\" to \"D\" in the config file.\n\n### Default keybindings\n\n\tCtrl + Shift + T                 -> New tab\n\tCtrl + Shift + O                 -> New window\t\t\n\tCtrl + Shift + W                 -> Close current tab\n\tCtrl + Shift + C                 -> Copy selected text\n\tCtrl + Shift + V                 -> Paste selected text\n\tCtrl + Shift + N                 -> Set tab name\n\n\tAlt  + Left cursor               -> Previous tab\n\tAlt  + Right cursor              -> Next tab\n\tAlt  + Shift + Left cursor       -> Move tab to the left\n\tAlt  + Shift + Right cursor      -> Move tab to the right\n\tCtrl + [1-9]                     -> Switch to tab N (1-9)\n\n\tCtrl + Shift + S                 -> Toggle/Untoggle scrollbar\n\tCtrl + Shift + Mouse left button -> Open link\n\tF11                              -> Fullscreen\n\tShift + PageUp                   -> Move up through scrollback by page\n\tShift + PageDown                 -> Move down through scrollback by page\n\tCtrl + Shift + Up                -> Move up through scrollback by line\n\tCtrl + Shift + Down              -> Move down through scrollback by line\n\tCtrl + Shift + [F1-F6]           -> Select the colorset for the current tab\n\nYou can also increase and decrease the font size in the GTK standard way:\n\n\tCtrl + '+'                                -> Increase font size\n\tCtrl + '-'                                -> Decrease font size\n\nBy default, mouse buttons are bound to the following:\n\n\tButton1                          -> No action\n\tButton2                          -> Paste\n\tButton3                          -> Context menu\n\nBehavior can be changed with the following config settings:\n\n\tcopy_on_select                   -> set to true to automatically copy selected text\n\tpaste_button                     -> set to desired mouse button (default: 2)\n\tmenu_button                      -> set to desired mouse button (default: 3)\n\n## Contributing\nPull requests are welcome. But please, create first a bug report in [Launchpad](https://bugs.launchpad.net/sakura), particularly if you plan to make major changes, to make sure your patch will be merged into **sakura**. If you'd like to contribute with translations, use the translations framework in [Launchpad](https://translations.launchpad.net/sakura) or send [me](mailto:dabisu@gmail.com) directly the translated po file.\n\n## License\n[GPL 2.0](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)\n\n\\\nEnjoy **sakura**!\n"
  },
  {
    "path": "po/CMakeLists.txt",
    "content": "# Localization\nFIND_PROGRAM(XGETTEXT xgettext)\nFIND_PROGRAM(MSGFMT msgfmt)\nFIND_PROGRAM(MSGMERGE msgmerge)\n\nIF(NOT MSGFMT)\n\tMESSAGE( \"------\n\t\t\tNOTE: msgfmt not found. Translations will *not* be installed\n\t\t\t------\")\nELSE(NOT MSGFMT)\n\n\tSET(catalogname sakura)\n\n\tFILE (GLOB PO_FILES *.po)\n\tFILE (GLOB SOURCES ../src/*.c)\n\n\tADD_CUSTOM_TARGET(translations ALL)\n\n\tADD_CUSTOM_COMMAND(TARGET translations\n\t\tCOMMAND ${XGETTEXT} -o sakura.pot --keyword=_ --keyword=N_ --no-location --from-code=utf-8 ${SOURCES}\n\t\tDEPENDS ${_poFile})\n\tFOREACH(_poFile ${PO_FILES})\n\t\tGET_FILENAME_COMPONENT(_lang ${_poFile} NAME_WE)\n\t\tSET(_moFile ${_lang}.mo)\n\t\tADD_CUSTOM_COMMAND(TARGET translations\n\t\t\t\tCOMMAND ${MSGMERGE} -q -U ${_poFile} --backup=none sakura.pot\n\t\t\t\tCOMMAND ${MSGFMT} --check -o ${_moFile} ${_poFile}\n\t\t\t\tDEPENDS ${_poFile})\n\t\tINSTALL(FILES ${CMAKE_BINARY_DIR}/po/${_moFile}\n\t\t\t   \tDESTINATION share/locale/${_lang}/LC_MESSAGES/\n\t\t\t   \tRENAME ${catalogname}.mo)\n\tENDFOREACH(_poFile ${PO_FILES})\n\nENDIF(NOT MSGFMT)\n"
  },
  {
    "path": "po/POTFILES.in",
    "content": "src/sakura.c\n"
  },
  {
    "path": "po/ca.po",
    "content": "# Copyright (C) 2006\n# This file is distributed under the same license as the sakura package.\n# David Gómez <david@pleyades.net>\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2019-09-30 05:43+0000\\n\"\n\"Last-Translator: Adolfo Jayme <Unknown>\\n\"\n\"Language-Team: Jordi Jané Cardo <jordi.jane@gmail.com>\\n\"\n\"Language: ca\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Imprimir el número de versió\"\n\nmsgid \"Set window title\"\nmsgstr \"Definir el nom de la finestra\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Sel·leccionar el tipus de font inicial\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Sel·leccionar el número inicial de pestanyes\"\n\nmsgid \"Set working directory\"\nmsgstr \"Definir el directori actual\"\n\nmsgid \"Execute command\"\nmsgstr \"Executa l'ordre\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"\"\n\nmsgid \"Login shell\"\nmsgstr \"Entrada d'usuari en Shell\"\n\nmsgid \"Set window icon\"\nmsgstr \"Definir el nom de la icona\"\n\nmsgid \"Set columns number\"\nmsgstr \"Definir el nombre de columnes\"\n\nmsgid \"Set rows number\"\nmsgstr \"Definir el nombre de linies\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Mantenir la finestra després de l'execució del comandament\"\n\nmsgid \"Maximize window\"\nmsgstr \"Maximitza la finestra\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Pantalla complèta\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Utilitzeu un fitxer de configuració alternatiu\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Sel·leccionar grupo de colors inicial\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Hi ha processos executant-se.\\n\"\n\"\\n\"\n\"Realment desitgeu tancar Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Sel·leccioni font\"\n\nmsgid \"Set tab name\"\nmsgstr \"\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Cancel·la\"\n\nmsgid \"_Apply\"\nmsgstr \"_Aplica\"\n\nmsgid \"New text\"\nmsgstr \"Nou text\"\n\nmsgid \"Select colors\"\nmsgstr \"Sel·leccionar color\"\n\nmsgid \"_Select\"\nmsgstr \"_Selecciona\"\n\nmsgid \"Colorset\"\nmsgstr \"Grup de colors\"\n\nmsgid \"Color scheme\"\nmsgstr \"Esquema de colors\"\n\nmsgid \"Foreground color\"\nmsgstr \"Color de font\"\n\nmsgid \"Background color\"\nmsgstr \"Color de fons\"\n\nmsgid \"Cursor color\"\nmsgstr \"Color del cursor\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Nivell d'opacitat (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Paleta\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"Utilitzeu colors brillants per al text en negreta\"\n\nmsgid \"New window title\"\nmsgstr \"Definiu el nom de la finestra\"\n\nmsgid \"Open mail\"\nmsgstr \"Obrir correu\"\n\nmsgid \"Open link\"\nmsgstr \"Obrir enllaç\"\n\nmsgid \"Copy link\"\nmsgstr \"Copia enllaç\"\n\nmsgid \"New tab\"\nmsgstr \"Nova pestanya\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Definir el nom de pestanya...\"\n\nmsgid \"Close tab\"\nmsgstr \"Tancar pestanya\"\n\nmsgid \"Full screen\"\nmsgstr \"Pantalla complèta\"\n\nmsgid \"Copy\"\nmsgstr \"Copiar\"\n\nmsgid \"Paste\"\nmsgstr \"Enganxar\"\n\nmsgid \"Options\"\nmsgstr \"Opcions\"\n\nmsgid \"Select font...\"\nmsgstr \"Sel·leccionar font...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Sel·leccionar colors...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Mostra la barra de pestanyes\"\n\nmsgid \"Always\"\nmsgstr \"Sempre\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Pestanyes a la part baixa.\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Mostrar la barra de desplaçament\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Definir la senyal urgent\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Definir la senyal acústica\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Definir el cursor\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Definir el tipus de cursor\"\n\nmsgid \"Block\"\nmsgstr \"Bloc\"\n\nmsgid \"Underline\"\nmsgstr \"Subratllat\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"Cerca\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminal %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"Hi ha processos en marxa en aquest terminal.\\n\"\n\"\\n\"\n\"Realment desitgeu tarncar-la?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"\"\n\nmsgid \"Error message\"\nmsgstr \"Missatge d'error\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"No es pot cambiar el directori actual\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- emulador de terminal basat en libvte\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"La versió de sakura és %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Mostrar el botó de tancament de pestanya\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Activar atenuació de focus\"\n"
  },
  {
    "path": "po/cs.po",
    "content": "# Czech translation of sakura.\n# Copyright (C) 2006 THE sakura'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the sakura package.\n# Lucas Lommer <llommer@svn.gnome.org>, 2006, 2009, 2010.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura 2.3.8\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2018-05-03 16:14+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: Czech <gnome-cs-list@gnome.org>\\n\"\n\"Language: cs\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Vytiskne informaci o verzi\"\n\nmsgid \"Set window title\"\nmsgstr \"Nastaví titulek okna\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Volba výchozího písma terminálu\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Výchozí počet karet\"\n\nmsgid \"Set working directory\"\nmsgstr \"Nastavit pracovní složku\"\n\nmsgid \"Execute command\"\nmsgstr \"Spustit příkaz\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"\"\n\nmsgid \"Login shell\"\nmsgstr \"Přihlašovací shell\"\n\nmsgid \"Set window icon\"\nmsgstr \"Nastavit ikonu okna\"\n\nmsgid \"Set columns number\"\nmsgstr \"Nastaví počet sloupců\"\n\nmsgid \"Set rows number\"\nmsgstr \"Nastaví počet řádek\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Zachovat okno po vykonání příkazu\"\n\nmsgid \"Maximize window\"\nmsgstr \"Maximalizovat okno\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Na celou obrazovku\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Použít alternativní soubor s nastaveními\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Vybrat počáteční sadu barev\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Aplikace obsahuje běžící procesy.\\n\"\n\"\\n\"\n\"Opravdu chcete ukončit aplikaci Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Zvolte písmo\"\n\nmsgid \"Set tab name\"\nmsgstr \"Nastavit název panelu\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Storno\"\n\nmsgid \"_Apply\"\nmsgstr \"_Použít\"\n\nmsgid \"New text\"\nmsgstr \"Nový text\"\n\nmsgid \"Select colors\"\nmsgstr \"Vybrat barvy\"\n\nmsgid \"_Select\"\nmsgstr \"_Vybrat\"\n\nmsgid \"Colorset\"\nmsgstr \"Barevné sada\"\n\nmsgid \"Color scheme\"\nmsgstr \"Barevné schéma\"\n\nmsgid \"Foreground color\"\nmsgstr \"Barva popředí\"\n\nmsgid \"Background color\"\nmsgstr \"Barva pozadí\"\n\nmsgid \"Cursor color\"\nmsgstr \"Barva kurzoru\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Úroveň průhlednosti (%):\"\n\nmsgid \"Palette\"\nmsgstr \"Paletu\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"\"\n\nmsgid \"New window title\"\nmsgstr \"Název nového okna\"\n\nmsgid \"Open mail\"\nmsgstr \"Otevřít e-mail\"\n\nmsgid \"Open link\"\nmsgstr \"Otevřít odkaz\"\n\nmsgid \"Copy link\"\nmsgstr \"Zkopírovat odkaz\"\n\nmsgid \"New tab\"\nmsgstr \"Nová karta\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Nastavit název panelu…\"\n\nmsgid \"Close tab\"\nmsgstr \"Zavřít kartu\"\n\nmsgid \"Full screen\"\nmsgstr \"Celá obrazovka\"\n\nmsgid \"Copy\"\nmsgstr \"Kopírovat\"\n\nmsgid \"Paste\"\nmsgstr \"Vložit\"\n\nmsgid \"Options\"\nmsgstr \"Volby\"\n\nmsgid \"Select font...\"\nmsgstr \"Zvolte písmo…\"\n\nmsgid \"Select colors...\"\nmsgstr \"Zvolte barvy…\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Zobrazit lištu karet\"\n\nmsgid \"Always\"\nmsgstr \"Vždy\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Panely dole\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Zobrazit posuvník\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Nastavit naléhavý zvon\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Nastavit akustické zvon\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Nastavit blikající kurzor\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Nastavit typ kurzoru\"\n\nmsgid \"Block\"\nmsgstr \"Blokový\"\n\nmsgid \"Underline\"\nmsgstr \"Podtržítko\"\n\nmsgid \"IBeam\"\nmsgstr \"Svislá čára\"\n\nmsgid \"Search\"\nmsgstr \"Hledat\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminál %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"V tomto terminálu běží proces.\\n\"\n\"\\n\"\n\"Opravdu jej chcete uzavřít?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"\"\n\nmsgid \"Error message\"\nmsgstr \"Chybové hlášení\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Nepodařilo se změnit pracovní složku\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- emulátor terminálu založený na VTE\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura verze %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Zobrazovat na panelech zavírací tlačítko\"\n"
  },
  {
    "path": "po/de.po",
    "content": "# German translation for Sakura.\n# Copyright (C) 2008 David Gómez\n# This file is distributed under the same license as the Sakura package.\n# Mario Blättermann <Mario Blättermann@t-online.de>, 2008.\n# Milo Ivir <mail@milotype.de>, 2020.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sakura 2.3.4\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2020-05-06 05:00+0000\\n\"\n\"Last-Translator: Milo Ivir <Unknown>\\n\"\n\"Language-Team: Deutsch <de@li.org>\\n\"\n\"Language: de\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Versionsnummer anzeigen\"\n\nmsgid \"Set window title\"\nmsgstr \"Fenstertitel wählen\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Terminal-Schrift auswählen\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Anzahl der Reiter auswählen\"\n\nmsgid \"Set working directory\"\nmsgstr \"Arbeitsverzeichnis setzen\"\n\nmsgid \"Execute command\"\nmsgstr \"Befehl ausführen\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Befehl ausführen (letzte Option in der Befehlszeile)\"\n\nmsgid \"Login shell\"\nmsgstr \"Login-Shell\"\n\nmsgid \"Set window icon\"\nmsgstr \"Fenstertitel-Symbol\"\n\nmsgid \"Set columns number\"\nmsgstr \"Spaltennummer wählen\"\n\nmsgid \"Set rows number\"\nmsgstr \"Zeilennummer wählen\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Fenster nach Ausführen des Befehls nicht schließen\"\n\nmsgid \"Maximize window\"\nmsgstr \"Fenster miximieren\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Vollbildmodus\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Benutze alternative Konfigurationsdatei\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Farbengruppe auswählen\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Es laufen noch Prozesse.\\n\"\n\"\\n\"\n\"Sakura wirklich beenden?\"\n\nmsgid \"Select font\"\nmsgstr \"Schrift auswählen\"\n\nmsgid \"Set tab name\"\nmsgstr \"Reiternamen setzen\"\n\nmsgid \"_Cancel\"\nmsgstr \"A_bbrechen\"\n\nmsgid \"_Apply\"\nmsgstr \"_Anwenden\"\n\nmsgid \"New text\"\nmsgstr \"Neuer Text\"\n\nmsgid \"Select colors\"\nmsgstr \"Farben auswählen\"\n\nmsgid \"_Select\"\nmsgstr \"A_uswählen\"\n\nmsgid \"Colorset\"\nmsgstr \"Farbengruppe\"\n\nmsgid \"Color scheme\"\nmsgstr \"Farbschema\"\n\nmsgid \"Foreground color\"\nmsgstr \"Vordergrundfarbe\"\n\nmsgid \"Background color\"\nmsgstr \"Hintergrundfarbe\"\n\nmsgid \"Cursor color\"\nmsgstr \"Cursorfarbe\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Opazitätsgrad (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Palette\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"Verwenden Sie helle Farben für fetten Text\"\n\nmsgid \"New window title\"\nmsgstr \"Fenstertitel wählen\"\n\nmsgid \"Open mail\"\nmsgstr \"E-Mail öffnen\"\n\nmsgid \"Open link\"\nmsgstr \"Verweis öffnen\"\n\nmsgid \"Copy link\"\nmsgstr \"Verweis kopieren\"\n\nmsgid \"New tab\"\nmsgstr \"Neuer Reiter\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Reiternamen setzen …\"\n\nmsgid \"Close tab\"\nmsgstr \"Reiter schließen\"\n\nmsgid \"Full screen\"\nmsgstr \"Vollbild\"\n\nmsgid \"Copy\"\nmsgstr \"Kopieren\"\n\nmsgid \"Paste\"\nmsgstr \"Einfügen\"\n\nmsgid \"Options\"\nmsgstr \"Optionen\"\n\nmsgid \"Select font...\"\nmsgstr \"Schrift auswählen …\"\n\nmsgid \"Select colors...\"\nmsgstr \"Farben auswählen …\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Reiterleiste anzeigen\"\n\nmsgid \"Always\"\nmsgstr \"Immer\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"Wenn es mehrere sind\"\n\nmsgid \"Never\"\nmsgstr \"Niemals\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Reiter unten\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Bildlaufleiste anzeigen\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"Weniger Fragen bei Beenden des Programms\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Dringender Alarm\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Hörbarer Alarm\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Blinkender Cursor\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"Den Umschalter für nummerierte Reiter deaktivieren\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Cusror-Art setzen\"\n\nmsgid \"Block\"\nmsgstr \"Rechteck\"\n\nmsgid \"Underline\"\nmsgstr \"Unterstreichen\"\n\nmsgid \"IBeam\"\nmsgstr \"Senkrechter Strich\"\n\nmsgid \"Search\"\nmsgstr \"Suchen\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminal %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"In diesem Terminal läuft noch ein Prozess.\\n\"\n\"\\n\"\n\"Soll er wirklich beendet werden?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"\"\n\"Die Konfiguration wurde durch einen anderen Prozess geändert. Šberschreiben?\"\n\nmsgid \"Error message\"\nmsgstr \"Fehlermeldung\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Das Arbeitsverzeichnis kann nicht verändert serden\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- vte-basierter Terminal-Emulator\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"Sakura-Version ist %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Schließen-Knopf auf Reitern anzeigen\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Langsames Einblenden aktivieren\"\n"
  },
  {
    "path": "po/en_GB.po",
    "content": "# English (United Kingdom) translation for sakura\n# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013\n# This file is distributed under the same license as the sakura package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2019-08-12 16:54+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: English (United Kingdom) <en_GB@li.org>\\n\"\n\"Language: en\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Print version number\"\n\nmsgid \"Set window title\"\nmsgstr \"Set window title\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Select initial terminal font\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Select initial number of tabs\"\n\nmsgid \"Set working directory\"\nmsgstr \"Set working directory\"\n\nmsgid \"Execute command\"\nmsgstr \"Execute command\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Execute command (last option in the command line)\"\n\nmsgid \"Login shell\"\nmsgstr \"Login shell\"\n\nmsgid \"Set window icon\"\nmsgstr \"Set window icon\"\n\nmsgid \"Set columns number\"\nmsgstr \"Set columns number\"\n\nmsgid \"Set rows number\"\nmsgstr \"Set rows number\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Hold window after execute command\"\n\nmsgid \"Maximize window\"\nmsgstr \"Maximise window\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Full screen mode\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Use alternate configuration file\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Select initial colourset\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Select font\"\n\nmsgid \"Set tab name\"\nmsgstr \"Set tab name\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Cancel\"\n\nmsgid \"_Apply\"\nmsgstr \"_Apply\"\n\nmsgid \"New text\"\nmsgstr \"New text\"\n\nmsgid \"Select colors\"\nmsgstr \"Select colours\"\n\nmsgid \"_Select\"\nmsgstr \"_Select\"\n\nmsgid \"Colorset\"\nmsgstr \"Colourset\"\n\nmsgid \"Color scheme\"\nmsgstr \"Colour scheme\"\n\nmsgid \"Foreground color\"\nmsgstr \"Foreground colour\"\n\nmsgid \"Background color\"\nmsgstr \"Background colour\"\n\nmsgid \"Cursor color\"\nmsgstr \"Cursor colour\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Opacity level (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Palette\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"Use bright colours for bold text\"\n\nmsgid \"New window title\"\nmsgstr \"New window title\"\n\nmsgid \"Open mail\"\nmsgstr \"Open mail\"\n\nmsgid \"Open link\"\nmsgstr \"Open link\"\n\nmsgid \"Copy link\"\nmsgstr \"Copy link\"\n\nmsgid \"New tab\"\nmsgstr \"New tab\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Set tab name...\"\n\nmsgid \"Close tab\"\nmsgstr \"Close tab\"\n\nmsgid \"Full screen\"\nmsgstr \"Full screen\"\n\nmsgid \"Copy\"\nmsgstr \"Copy\"\n\nmsgid \"Paste\"\nmsgstr \"Paste\"\n\nmsgid \"Options\"\nmsgstr \"Options\"\n\nmsgid \"Select font...\"\nmsgstr \"Select font...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Select colours...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Show tab bar\"\n\nmsgid \"Always\"\nmsgstr \"Always\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"When there's more than one tab\"\n\nmsgid \"Never\"\nmsgstr \"Never\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Tabs at bottom\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"New tab after current tab\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Show scrollbar\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"Fewer questions at exit time\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"Automatically copy selected text\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Set urgent bell\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Set audible bell\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Set blinking cursor\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"Disable numbered tabswitch\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Set cursor type\"\n\nmsgid \"Block\"\nmsgstr \"Block\"\n\nmsgid \"Underline\"\nmsgstr \"Underline\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"Search\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminal %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"Configuration has been modified by another process. Overwrite?\"\n\nmsgid \"Error message\"\nmsgstr \"Error message\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Cannot change working directory\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- vte-based terminal emulator\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura version is %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Show close button on tabs\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Enable focus fade\"\n"
  },
  {
    "path": "po/es.po",
    "content": "# Copyright (C) 2006\n# This file is distributed under the same license as the sakura package.\n# David Gómez <david@pleyades.net>\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2019-08-12 16:53+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: <davidge@pleyades.net>\\n\"\n\"Language: es\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Imprimir número de versión\"\n\nmsgid \"Set window title\"\nmsgstr \"Establecer nombre de ventana\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Seleccionar el tipo de fuente inicial\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Seleccionar el número inicial de pestañas\"\n\nmsgid \"Set working directory\"\nmsgstr \"Establecer directorio actual\"\n\nmsgid \"Execute command\"\nmsgstr \"Ejecutar orden\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Ejecutar comando (última opción en la linea de comandos)\"\n\nmsgid \"Login shell\"\nmsgstr \"Shell de login\"\n\nmsgid \"Set window icon\"\nmsgstr \"Establecer icono de ventana\"\n\nmsgid \"Set columns number\"\nmsgstr \"Establecer número de columnas\"\n\nmsgid \"Set rows number\"\nmsgstr \"Establecer número de líneas\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Mantener la ventana tras el final del comando\"\n\nmsgid \"Maximize window\"\nmsgstr \"Maximizar ventana\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Modo de pantalla completa\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Usar fichero de configuración alternativo\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Seleccionar grupo de colores inicial\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Hay procesos en ejecución.\\n\"\n\"\\n\"\n\"¿Confirma que quiere cerrar Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Seleccionar tipo de letra\"\n\nmsgid \"Set tab name\"\nmsgstr \"Establecer nombre de pestaña\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Cancelar\"\n\nmsgid \"_Apply\"\nmsgstr \"_Aplicar\"\n\nmsgid \"New text\"\nmsgstr \"Texto nuevo\"\n\nmsgid \"Select colors\"\nmsgstr \"Seleccionar colores\"\n\nmsgid \"_Select\"\nmsgstr \"_Seleccionar\"\n\nmsgid \"Colorset\"\nmsgstr \"Grupo de colores\"\n\nmsgid \"Color scheme\"\nmsgstr \"Esquema de colores\"\n\nmsgid \"Foreground color\"\nmsgstr \"Color de primer plano\"\n\nmsgid \"Background color\"\nmsgstr \"Color de fondo\"\n\nmsgid \"Cursor color\"\nmsgstr \"Color del cursor\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Nivel de opacidad (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Paleta\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"Usar colores brillantes para texto en negrita\"\n\nmsgid \"New window title\"\nmsgstr \"Título nuevo de la ventana\"\n\nmsgid \"Open mail\"\nmsgstr \"Abrir correo\"\n\nmsgid \"Open link\"\nmsgstr \"Abrir enlace\"\n\nmsgid \"Copy link\"\nmsgstr \"Copiar enlace\"\n\nmsgid \"New tab\"\nmsgstr \"Pestaña nueva\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Establecer nombre de pestaña...\"\n\nmsgid \"Close tab\"\nmsgstr \"Cerrar pestaña\"\n\nmsgid \"Full screen\"\nmsgstr \"Pantalla completa\"\n\nmsgid \"Copy\"\nmsgstr \"Copiar\"\n\nmsgid \"Paste\"\nmsgstr \"Pegar\"\n\nmsgid \"Options\"\nmsgstr \"Opciones\"\n\nmsgid \"Select font...\"\nmsgstr \"Seleccionar tipo de letra…\"\n\nmsgid \"Select colors...\"\nmsgstr \"Seleccionar colores...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Mostrar la barra de pestañas\"\n\nmsgid \"Always\"\nmsgstr \"Siempre\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"Cuando hay más de una pestaña\"\n\nmsgid \"Never\"\nmsgstr \"Nunca\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Pestañas en la parte inferior\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"Nueva pestaña tras la pestaña actual\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Mostrar barra de desplazamiento\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"Menos preguntas al cerrar\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"Copiar automáticamente el texto seleccionado\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Activar campana de urgencia\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Activar campana audible\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Activar parpadeo del cursor\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"Desactivar números para cambio de pestañas\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Establecer tipo de cursor\"\n\nmsgid \"Block\"\nmsgstr \"Bloque\"\n\nmsgid \"Underline\"\nmsgstr \"Subrayado\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"Buscar\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminal %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"Hay procesos en ejecución en este terminal.\\n\"\n\"\\n\"\n\"¿Confirma que quiere cerrarlo?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"La configuración ha sido modificada por otro proceso. ¿Sobreescribir?\"\n\nmsgid \"Error message\"\nmsgstr \"Mensaje de error\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"No se puede cambiar el directorio actual\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- emulador de terminal basado en libvte\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"La versión de sakura es %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Mostrar botón de cerrar en las pestañas\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Activar atenuación de foco\"\n"
  },
  {
    "path": "po/fr.po",
    "content": "# This file is distributed under the same license as the sakura package.\n# Fabrice Thiroux <fabrice.thiroux@free.fr>, 2008.\n#\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura 1.2.0\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2018-04-29 13:18+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: <fabrice.thiroux@free.fr>\\n\"\n\"Language: fr\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Afficher le numéro de version\"\n\nmsgid \"Set window title\"\nmsgstr \"Définir le titre de la fenêtre\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Sélectionner la police de caractères à utiliser au démarrage\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Sélectionner le nombre d'onglets au démarrage\"\n\nmsgid \"Set working directory\"\nmsgstr \"Définir le répertoire de travail\"\n\nmsgid \"Execute command\"\nmsgstr \"Exécuter une commande\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Exécuter une commande (dernière option sur la ligne de commande)\"\n\nmsgid \"Login shell\"\nmsgstr \"Shell de connexion\"\n\nmsgid \"Set window icon\"\nmsgstr \"Définir l'icône de fenêtre\"\n\nmsgid \"Set columns number\"\nmsgstr \"Définir le nombre de colonnes\"\n\nmsgid \"Set rows number\"\nmsgstr \"Définir le nombre de lignes\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Conserver la fenêtre après l'exécution d'une commande\"\n\nmsgid \"Maximize window\"\nmsgstr \"Agrandir la fenêtre\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Mode plein écran\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Utiliser un fichier de configuration alternatif\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Sélectionner le jeu de couleurs initial\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Il y a des processus actifs dans ce terminal.\\n\"\n\"\\n\"\n\"Voulez-vous vraiment le fermer ?\"\n\nmsgid \"Select font\"\nmsgstr \"Sélectionner une police de caractères\"\n\nmsgid \"Set tab name\"\nmsgstr \"Définir le titre de l'onglet\"\n\nmsgid \"_Cancel\"\nmsgstr \"Ann_uler\"\n\nmsgid \"_Apply\"\nmsgstr \"_Appliquer\"\n\nmsgid \"New text\"\nmsgstr \"Nouveau texte\"\n\nmsgid \"Select colors\"\nmsgstr \"Sélectionner les couleurs\"\n\nmsgid \"_Select\"\nmsgstr \"_Sélectionner\"\n\nmsgid \"Colorset\"\nmsgstr \"Jeu de couleurs\"\n\nmsgid \"Color scheme\"\nmsgstr \"Schéma de couleur\"\n\nmsgid \"Foreground color\"\nmsgstr \"Couleur d'avant plan\"\n\nmsgid \"Background color\"\nmsgstr \"Couleur d'arrière-plan\"\n\nmsgid \"Cursor color\"\nmsgstr \"Couleur du curseur\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Niveau d'opacité (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Palette\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"Utilisez des couleurs vives pour le text en gras\"\n\nmsgid \"New window title\"\nmsgstr \"Définir le titre de la fenêtre\"\n\nmsgid \"Open mail\"\nmsgstr \"Ouvrir le courrier\"\n\nmsgid \"Open link\"\nmsgstr \"Ouvrir le lien\"\n\nmsgid \"Copy link\"\nmsgstr \"Copier le lien\"\n\nmsgid \"New tab\"\nmsgstr \"Nouvel onglet\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Définir le titre de l'onglet...\"\n\nmsgid \"Close tab\"\nmsgstr \"Fermer l'onglet\"\n\nmsgid \"Full screen\"\nmsgstr \"Plein écran\"\n\nmsgid \"Copy\"\nmsgstr \"Copier\"\n\nmsgid \"Paste\"\nmsgstr \"Coller\"\n\nmsgid \"Options\"\nmsgstr \"Options\"\n\nmsgid \"Select font...\"\nmsgstr \"Sélectionner la police de caractères...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Sélectionner les couleurs...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Afficher la barre d'onglets\"\n\nmsgid \"Always\"\nmsgstr \"Toujours \"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"Rien\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Onglets en bas\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Afficher la barre de défilement\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"Moins de questions au moment de la sortie\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Définir un avertissement d'urgence\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Définir un avertissement audio\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Définir un curseur clignotant\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"Désactiver les nombres pour le changement d'onglet\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Définir le type de curseur\"\n\nmsgid \"Block\"\nmsgstr \"Bloc\"\n\nmsgid \"Underline\"\nmsgstr \"Souligner\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"Chercher\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminal %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"Il y a un processus actif dans ce terminal.\\n\"\n\"\\n\"\n\"Voulez-vous vraiment le fermer ?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"La configuration a été modifié par un autre processus. L'écraser ?\"\n\nmsgid \"Error message\"\nmsgstr \"Message d'erreur\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Impossible de changer le répertoire de travail\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"Émulateur de terminal utilisant VTE\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"Sakura version %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Afficher le bouton fermer sur les onglets\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Activer le fondu de la mise au point\"\n"
  },
  {
    "path": "po/he.po",
    "content": "# Hebrew translation for Sakura.\n# Copyright (C) 2008 David Gómez\n# This file is distributed under the same license as the sakura package.\n# Isratine Citizen <genghiskhan@gmx.ca>, 2012.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura 3.1.4\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2018-04-29 13:18+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: Rahut <genghiskhan@gmx.ca>\\n\"\n\"Language: he\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\"X-Language: he\\n\"\n\"X-Source-Language: en\\n\"\n\"X-Poedit-Language: Hebrew\\n\"\n\n# CLI: Do not translate!\nmsgid \"Print version number\"\nmsgstr \"Print version number\"\n\n# CLI: Do not translate!\nmsgid \"Set window title\"\nmsgstr \"Set window title\"\n\n# CLI: Do not translate!\nmsgid \"Select initial terminal font\"\nmsgstr \"Select initial terminal font\"\n\n# CLI: Do not translate!\nmsgid \"Select initial number of tabs\"\nmsgstr \"Select initial number of tabs\"\n\n# CLI: Do not translate!\nmsgid \"Set working directory\"\nmsgstr \"Set working directory\"\n\n# CLI: Do not translate!\nmsgid \"Execute command\"\nmsgstr \"Execute command\"\n\n# CLI: Do not translate!\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Execute command (last option in the command line)\"\n\n# CLI: Do not translate!\nmsgid \"Login shell\"\nmsgstr \"Login shell\"\n\n# CLI: Do not translate!\n#, fuzzy\nmsgid \"Set window icon\"\nmsgstr \"Set window title\"\n\n# CLI: Do not translate!\nmsgid \"Set columns number\"\nmsgstr \"Set columns number\"\n\n# CLI: Do not translate!\nmsgid \"Set rows number\"\nmsgstr \"Set rows number\"\n\n# CLI: Do not translate!\nmsgid \"Hold window after execute command\"\nmsgstr \"Hold window after execute command\"\n\n# CLI: Do not translate!\nmsgid \"Maximize window\"\nmsgstr \"Maximize window\"\n\n# CLI: Do not translate!\nmsgid \"Fullscreen mode\"\nmsgstr \"Fullscreen mode\"\n\n# CLI: Do not translate!\nmsgid \"Use alternate configuration file\"\nmsgstr \"Use alternate configuration file\"\n\n#, fuzzy\nmsgid \"Select initial colorset\"\nmsgstr \"בחר צבע\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"קיימים תהליכים אשר כעת מורצים.\\n\"\n\"\\n\"\n\"האם אתה בטוח כי ברצונך לסגור את Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"בחירת גופן\"\n\nmsgid \"Set tab name\"\nmsgstr \"קביעת שם כרטיסייה\"\n\nmsgid \"_Cancel\"\nmsgstr \"_ביטול\"\n\nmsgid \"_Apply\"\nmsgstr \"_החל\"\n\nmsgid \"New text\"\nmsgstr \"תמליל חדש\"\n\n#, fuzzy\nmsgid \"Select colors\"\nmsgstr \"בחר צבע\"\n\nmsgid \"_Select\"\nmsgstr \"ב_חר\"\n\n#, fuzzy\nmsgid \"Colorset\"\nmsgstr \"חוג צבעים לעריכה\"\n\n#, fuzzy\nmsgid \"Color scheme\"\nmsgstr \"חוג צבעים לעריכה\"\n\nmsgid \"Foreground color\"\nmsgstr \"צבע קדמה\"\n\nmsgid \"Background color\"\nmsgstr \"צבע רקע\"\n\nmsgid \"Cursor color\"\nmsgstr \"צבע סמן\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"רמת העמימות (%)\"\n\nmsgid \"Palette\"\nmsgstr \"לוח צבעים\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"\"\n\nmsgid \"New window title\"\nmsgstr \"כותרת חלון חדשה\"\n\n#, fuzzy\nmsgid \"Open mail\"\nmsgstr \"פתח קישור\"\n\nmsgid \"Open link\"\nmsgstr \"פתח קישור\"\n\nmsgid \"Copy link\"\nmsgstr \"העתק קישור\"\n\nmsgid \"New tab\"\nmsgstr \"כרטיסייה חדשה\"\n\nmsgid \"Set tab name...\"\nmsgstr \"קבע שם כרטיסייה...\"\n\nmsgid \"Close tab\"\nmsgstr \"סגור כרטיסייה\"\n\nmsgid \"Full screen\"\nmsgstr \"מסך מלא\"\n\nmsgid \"Copy\"\nmsgstr \"העתק\"\n\nmsgid \"Paste\"\nmsgstr \"הדבק\"\n\nmsgid \"Options\"\nmsgstr \"אפשרויות\"\n\nmsgid \"Select font...\"\nmsgstr \"בחר גופן...\"\n\nmsgid \"Select colors...\"\nmsgstr \"בחר צבעים...\"\n\n# msgstr \"הצג תמיד סרגל כרטיסיות\"\nmsgid \"Show tab bar\"\nmsgstr \"\"\n\nmsgid \"Always\"\nmsgstr \"\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"כרטיסיות בתחתית\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"הצג פס גלילה\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\n#, fuzzy\nmsgid \"Set urgent bell\"\nmsgstr \"קבע פעמון שמיע\"\n\nmsgid \"Set audible bell\"\nmsgstr \"קבע פעמון שמיע\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"קבע סמן מהבהב\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"\"\n\nmsgid \"Set cursor type\"\nmsgstr \"קבע טיפוס סמן\"\n\nmsgid \"Block\"\nmsgstr \"קטע\"\n\nmsgid \"Underline\"\nmsgstr \"קו תחתון\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"מסוף %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"קיים תהליך אשר כעת מורץ בתוך מסוף זה.\\n\"\n\"\\n\"\n\"האם אתה בטוח כי ברצונך לסגור אותו?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"תצורה השתנתה על ידי תהליך אחר. להחליפו?\"\n\nmsgid \"Error message\"\nmsgstr \"הודעת שגיאה\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"אין אפשרות לשנות מדור עבודה\\n\"\n\n# CLI: Do not translate!\n# - אמולטור מסוף מבוסס vte\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- vte-based terminal emulator\"\n\n# CLI: Do not translate!\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura version is %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"הצג לחצן סגירה על כרטיסיות\"\n"
  },
  {
    "path": "po/hr.po",
    "content": "# Croatian translation for Sakura.\n# Copyright (C) 2008 David Gómez\n# This file is distributed under the same license as the Sakura package.\n# gogo <trebelnik2@gmail.com>, 2018.\n# Milo Ivir <mail@milotype.de>, 2020.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sakura 2.3.4\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2020-05-06 05:00+0000\\n\"\n\"Last-Translator: Milo Ivir <Unknown>\\n\"\n\"Language-Team: \\n\"\n\"Language: hr\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Ispiši broj verzije\"\n\nmsgid \"Set window title\"\nmsgstr \"Postavi naslov prozora\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Odaberi font terminala\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Odaberi broj kartica\"\n\nmsgid \"Set working directory\"\nmsgstr \"Postavi radnu mapu\"\n\nmsgid \"Execute command\"\nmsgstr \"Izvrši naredbu\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Izvrši naredbu (zadnja opcija u naredbenom retku)\"\n\nmsgid \"Login shell\"\nmsgstr \"Ljuska prijave\"\n\nmsgid \"Set window icon\"\nmsgstr \"Postavi ikonu prozora\"\n\nmsgid \"Set columns number\"\nmsgstr \"Postavi broj stupaca\"\n\nmsgid \"Set rows number\"\nmsgstr \"Postavi broj redaka\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Zadrži prozor nakon izvršavanja naredbe\"\n\nmsgid \"Maximize window\"\nmsgstr \"Raširi prozor maksimalno\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Cjeloekranski prikaz\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Koristi alternativnu konfiguracijsku datoteku\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Odaberi skup boja\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Postoje aktivni procesi.\\n\"\n\"\\n\"\n\"Stvarno zatvoriti Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Odaberi font\"\n\nmsgid \"Set tab name\"\nmsgstr \"Postavi ime kartice\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Odustani\"\n\nmsgid \"_Apply\"\nmsgstr \"_Primijeni\"\n\nmsgid \"New text\"\nmsgstr \"Novi tekst\"\n\nmsgid \"Select colors\"\nmsgstr \"Odaberi boje\"\n\nmsgid \"_Select\"\nmsgstr \"_Odaberi\"\n\nmsgid \"Colorset\"\nmsgstr \"Skup boja\"\n\nmsgid \"Color scheme\"\nmsgstr \"Shema boja\"\n\nmsgid \"Foreground color\"\nmsgstr \"Prednja boja\"\n\nmsgid \"Background color\"\nmsgstr \"Stražnja boja\"\n\nmsgid \"Cursor color\"\nmsgstr \"Boja pokazivača\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Razina neporozirnosti (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Paleta\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"\"\n\nmsgid \"New window title\"\nmsgstr \"Naslov novog prozora\"\n\nmsgid \"Open mail\"\nmsgstr \"Otvori e-poštu\"\n\nmsgid \"Open link\"\nmsgstr \"Otvori poveznicu\"\n\nmsgid \"Copy link\"\nmsgstr \"Kopiraj poveznicu\"\n\nmsgid \"New tab\"\nmsgstr \"Nova kartica\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Postavi ime kartice …\"\n\nmsgid \"Close tab\"\nmsgstr \"Zatvori karticu\"\n\nmsgid \"Full screen\"\nmsgstr \"Cjeloekranski prikaz\"\n\nmsgid \"Copy\"\nmsgstr \"Kopiraj\"\n\nmsgid \"Paste\"\nmsgstr \"Paste\"\n\nmsgid \"Options\"\nmsgstr \"Mogućnosti\"\n\nmsgid \"Select font...\"\nmsgstr \"Odaberi font …\"\n\nmsgid \"Select colors...\"\nmsgstr \"Odaberi boje …\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Prikaži traku s karticama\"\n\nmsgid \"Always\"\nmsgstr \"Uvijek\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Kartice dolje\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Prikaži kliznu traku\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"Manje pitanja pri zatvaranju programa\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Postavi hitno zvono\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Postavi zvučno zvono\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Postavi treperenje pokazivača\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"Deaktiviraj prekidač numeriranih kartica\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Postavi vrstu pokazivača\"\n\nmsgid \"Block\"\nmsgstr \"Pravokutnik\"\n\nmsgid \"Underline\"\nmsgstr \"Podvučeno\"\n\nmsgid \"IBeam\"\nmsgstr \"Okomita crta\"\n\nmsgid \"Search\"\nmsgstr \"Traži\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminal %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"U ovom terminalu postoji jedan aktivan proces.\\n\"\n\"\\n\"\n\"Stvarno zatvoriti terminal?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"Jedan drugi proces je promijenio konfiguraciju. Prepisati?\"\n\nmsgid \"Error message\"\nmsgstr \"Poruka greške\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Radna mapa se ne može promijeniti\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- emulator terminala temeljen na vte-u\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura verzija je %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Prikaži gumb zatvaranja na karticama\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Aktiviraj postupni prijelaz\"\n\n#~ msgid \"More\"\n#~ msgstr \"Više\"\n\n#~ msgid \"Set window title...\"\n#~ msgstr \"Postavi naslov prozora …\"\n\n#~ msgid \"Stop tab cycling at end tabs\"\n#~ msgstr \"Zaustavi prelaženje na kartice pomoću tabulatora na zadnjoj kartici\"\n\n#~ msgid \"Enable bold font\"\n#~ msgstr \"Dozvoli podebljani font\"\n\n#~ msgid \"X geometry specification\"\n#~ msgstr \"Specifikacija X-geometrije\"\n\n#~ msgid \"Configuration has been modified. Save?\"\n#~ msgstr \"Konfiguracija je promijenjena. Spremiti?\"\n\n#~ msgid \"Don't show exit dialog\"\n#~ msgstr \"Ne prikazuj dijalog za zatvaranje programa\"\n\n#~ msgid \"Use focus fading\"\n#~ msgstr \"Koristi postupan prijelaz fokusa\"\n"
  },
  {
    "path": "po/hu.po",
    "content": "# Copyright (C) 2006\n# This file is distributed under the same license as the sakura package.\n# David Gómez <david@pleyades.net>\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2018-04-29 13:18+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: hu\\n\"\n\"Language: hu\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Verziószám kiírása\"\n\nmsgid \"Set window title\"\nmsgstr \"Ablak címének beállítása\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Alapértelmezett terminál font beállítása\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Fülek alapértelmezett számának beállítása\"\n\nmsgid \"Set working directory\"\nmsgstr \"Munkakönyvtár beállítása\"\n\nmsgid \"Execute command\"\nmsgstr \"Parancs végrehajtása\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Parancs végrehajtása (utolsó opció a parancssorban)\"\n\nmsgid \"Login shell\"\nmsgstr \"Bejelentkező shell\"\n\nmsgid \"Set window icon\"\nmsgstr \"Ablak ikonjának beállítása\"\n\nmsgid \"Set columns number\"\nmsgstr \"Oszlopok számának beállítása\"\n\nmsgid \"Set rows number\"\nmsgstr \"Sorok számának beállítása\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Ablak megtartása a parancs végrehajtása után\"\n\nmsgid \"Maximize window\"\nmsgstr \"Ablak maximalizálása\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Teljes képernyős mód\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Alternatív konfigurációs fájl beállítása\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Alapértelmezett színek beállítása\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Még van futó folyamat.\\n\"\n\"\\n\"\n\"Valóban be akarja zárni a Sakura-t?\"\n\nmsgid \"Select font\"\nmsgstr \"Betűkészlet kiválasztása\"\n\nmsgid \"Set tab name\"\nmsgstr \"Fül nevének beállítása\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Mégse\"\n\nmsgid \"_Apply\"\nmsgstr \"_Alkalmaz\"\n\nmsgid \"New text\"\nmsgstr \"Új szöveg\"\n\nmsgid \"Select colors\"\nmsgstr \"Színek kiválasztása\"\n\nmsgid \"_Select\"\nmsgstr \"_Kiválasztás\"\n\nmsgid \"Colorset\"\nmsgstr \"Színek\"\n\n#, fuzzy\nmsgid \"Color scheme\"\nmsgstr \"Színek\"\n\nmsgid \"Foreground color\"\nmsgstr \"Előtér színe\"\n\nmsgid \"Background color\"\nmsgstr \"Háttér színe\"\n\nmsgid \"Cursor color\"\nmsgstr \"Kurzor színe\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Átlátszóság mértéke (%)\"\n\n#, fuzzy\nmsgid \"Palette\"\nmsgstr \"Paletta beállítása\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"\"\n\nmsgid \"New window title\"\nmsgstr \"Új ablakcím\"\n\n#, fuzzy\nmsgid \"Open mail\"\nmsgstr \"Link megnyitása\"\n\nmsgid \"Open link\"\nmsgstr \"Link megnyitása\"\n\nmsgid \"Copy link\"\nmsgstr \"Link másolása\"\n\nmsgid \"New tab\"\nmsgstr \"Új fül\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Fül nevének beállítása...\"\n\nmsgid \"Close tab\"\nmsgstr \"Lap bezárása\"\n\nmsgid \"Full screen\"\nmsgstr \"Teljes képernyő\"\n\nmsgid \"Copy\"\nmsgstr \"Másolás\"\n\nmsgid \"Paste\"\nmsgstr \"Beillesztés\"\n\nmsgid \"Options\"\nmsgstr \"Beállítások\"\n\nmsgid \"Select font...\"\nmsgstr \"Betűkészlet kiválasztása...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Színek kiválasztása...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Jelenjen meg a fülsáv\"\n\nmsgid \"Always\"\nmsgstr \"Mindig\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Fülek alul\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Görgetősáv megjelenítése\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Sürgős jelzés beállítása\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Hang lejátszása\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Villogó kurzor beállítása\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"Gyorsbillentyűs fülváltás tiltása\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Kurzor típusának beállítása\"\n\nmsgid \"Block\"\nmsgstr \"Blokk\"\n\nmsgid \"Underline\"\nmsgstr \"Aláhúzás\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminál %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"A terminálban még van futó folyamat.\\n\"\n\"\\n\"\n\"Valóban be akarja zárni?\"\n\n#, fuzzy\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"A konfigurációt egy másik folyamat módosította. Felülírja?\"\n\nmsgid \"Error message\"\nmsgstr \"Hibaüzenet\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"A munkakönyvtár nem módosítható\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- vte alapú terminálemulátor\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura verzió: %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Bezárás gomb megjelenítése a füleken\"\n\n#, fuzzy\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Vastag betű engedélyezése\"\n"
  },
  {
    "path": "po/it.po",
    "content": "# Copyright (C) 2006\n# This file is distributed under the same license as the sakura package.\n# Fontana Nicola <nicola@entidi.it>\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2018-04-29 13:18+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: sakura-it <nicola@entidi.it>\\n\"\n\"Language: it\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\"X-Poedit-Country: ITALY\\n\"\n\"X-Poedit-Language: Italian\\n\"\n\"X-Poedit-SourceCharset: utf-8\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Stampa il numero di versione\"\n\nmsgid \"Set window title\"\nmsgstr \"Imposta il titolo della finestra\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Seleziona il font iniziale\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Seleziona il numero di schede iniziali\"\n\nmsgid \"Set working directory\"\nmsgstr \"Imposta la directory di lavoro\"\n\nmsgid \"Execute command\"\nmsgstr \"Esegui il comando\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Esegui il comando (l'ultima scelta nella riga di comando)\"\n\nmsgid \"Login shell\"\nmsgstr \"Shell di login\"\n\nmsgid \"Set window icon\"\nmsgstr \"Imposta l'icona della finestra\"\n\nmsgid \"Set columns number\"\nmsgstr \"Imposta il numero di colonne\"\n\nmsgid \"Set rows number\"\nmsgstr \"Imposta il numero di righe\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Blocca la finestra dopo l'esecuzione di un comando\"\n\nmsgid \"Maximize window\"\nmsgstr \"Massimizza finestra\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Modalità a schermo intero\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Usa un file di configurazione alternativo\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Seleziona insieme iniziale di colori\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Ci sono dei processi in esecuzione.\\n\"\n\"\\n\"\n\"Vuoi davvero chiudere Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Seleziona il font\"\n\nmsgid \"Set tab name\"\nmsgstr \"Imposta il nome della scheda\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Annulla\"\n\nmsgid \"_Apply\"\nmsgstr \"_Applica\"\n\nmsgid \"New text\"\nmsgstr \"Nuovo testo\"\n\nmsgid \"Select colors\"\nmsgstr \"Seleziona i colori\"\n\nmsgid \"_Select\"\nmsgstr \"_Seleziona\"\n\nmsgid \"Colorset\"\nmsgstr \"Insieme di colori\"\n\nmsgid \"Color scheme\"\nmsgstr \"Schema di colori\"\n\nmsgid \"Foreground color\"\nmsgstr \"Colore del testo\"\n\nmsgid \"Background color\"\nmsgstr \"Colore dello sfondo\"\n\nmsgid \"Cursor color\"\nmsgstr \"Colore del cursore\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Livello di opacità (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Tavolozza\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"Usa colori vivaci per il testo in grassetto\"\n\nmsgid \"New window title\"\nmsgstr \"Nuovo titolo della finestra\"\n\nmsgid \"Open mail\"\nmsgstr \"Apri posta\"\n\nmsgid \"Open link\"\nmsgstr \"Apri collegamento\"\n\nmsgid \"Copy link\"\nmsgstr \"Copia collegamento\"\n\nmsgid \"New tab\"\nmsgstr \"Nuova scheda\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Imposta il nome di la scheda\"\n\nmsgid \"Close tab\"\nmsgstr \"Chiudi la scheda\"\n\nmsgid \"Full screen\"\nmsgstr \"Schermo intero\"\n\nmsgid \"Copy\"\nmsgstr \"Copia\"\n\nmsgid \"Paste\"\nmsgstr \"Incolla\"\n\nmsgid \"Options\"\nmsgstr \"Opzioni\"\n\nmsgid \"Select font...\"\nmsgstr \"Seleziona il font...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Seleziona i colori...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Mostra la barra delle schede\"\n\nmsgid \"Always\"\nmsgstr \"Sempre\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Schede in basso\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Visualizza la barra di scorrimento\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"Meno domande al momento dell'uscita\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Imposta l'avviso urgente\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Imposta l'avviso acustico\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Imposta il cursore lampeggiante\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"Disabilitare i numeri per cambiare scheda\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Imposta il modello di cursore\"\n\nmsgid \"Block\"\nmsgstr \"Blocco\"\n\nmsgid \"Underline\"\nmsgstr \"Sottolineato\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"Ricerca\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminale %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"C'è un processo in esecuzione in questo terminale.\\n\"\n\"\\n\"\n\"Vuoi davvero chiudere Sakura?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"\"\n\"La configurazione è stata modificata da un altro processo. Sovrascrivere?\"\n\nmsgid \"Error message\"\nmsgstr \"Messaggio d'errore\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Non è possibile modificare la directory di lavoro\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- emulatore di terminale basato su VTE\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"La versione di sakura è %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Mostra il pulsante di chiusura sulle schede\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Abilitare il dimmer della messa a fuoco\"\n"
  },
  {
    "path": "po/ja.po",
    "content": "# translation of ja.po to Japanese\n# UTUMI Hirosi <utuhiro78@yahoo.co.jp>, 2006, 2008.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: ja\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2019-08-12 16:55+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: Japanese <ja@li.org>\\n\"\n\"Language: ja\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"バージョン番号を表示\"\n\nmsgid \"Set window title\"\nmsgstr \"ウィンドウタイトルを設定\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"ターミナルのフォントを選択\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"タブの数を選択\"\n\nmsgid \"Set working directory\"\nmsgstr \"作業ディレクトリを設定\"\n\nmsgid \"Execute command\"\nmsgstr \"コマンドを実行\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"コマンドを実行（コマンド行の最終オプション)\"\n\nmsgid \"Login shell\"\nmsgstr \"ログインシェル\"\n\nmsgid \"Set window icon\"\nmsgstr \"ウィンドウアイコンを設定\"\n\nmsgid \"Set columns number\"\nmsgstr \"列数を設定\"\n\nmsgid \"Set rows number\"\nmsgstr \"行数を設定\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"実行コマンドの後ウインドウ食い止める\"\n\nmsgid \"Maximize window\"\nmsgstr \"ウィンドウを最大化\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"フルスクリーンモード\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"別の設定ファイルを使用する\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"初カラーセットを選択\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"実行中のプロセスがあります。\\n\"\n\"\\n\"\n\"本当にsakuraを終了しますか？\"\n\nmsgid \"Select font\"\nmsgstr \"フォントを選択\"\n\nmsgid \"Set tab name\"\nmsgstr \"タブの名前を設定\"\n\nmsgid \"_Cancel\"\nmsgstr \"キャンセル(_C)\"\n\nmsgid \"_Apply\"\nmsgstr \"適用(_A)\"\n\nmsgid \"New text\"\nmsgstr \"新規テキスト\"\n\nmsgid \"Select colors\"\nmsgstr \"色を選択\"\n\nmsgid \"_Select\"\nmsgstr \"選択(_S)\"\n\nmsgid \"Colorset\"\nmsgstr \"カラーセット\"\n\nmsgid \"Color scheme\"\nmsgstr \"カラースキーム\"\n\nmsgid \"Foreground color\"\nmsgstr \"前景色\"\n\nmsgid \"Background color\"\nmsgstr \"背景色\"\n\nmsgid \"Cursor color\"\nmsgstr \"カーソルの色\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"不透過率 (%)\"\n\nmsgid \"Palette\"\nmsgstr \"パレット\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"太字のテキストには明るい色を使用する\"\n\nmsgid \"New window title\"\nmsgstr \"新しいウィンドウタイトル\"\n\nmsgid \"Open mail\"\nmsgstr \"メールを開く\"\n\nmsgid \"Open link\"\nmsgstr \"リンクを開く\"\n\nmsgid \"Copy link\"\nmsgstr \"リンクをコピー\"\n\nmsgid \"New tab\"\nmsgstr \"新規タブ\"\n\nmsgid \"Set tab name...\"\nmsgstr \"タブの名前を設定...\"\n\nmsgid \"Close tab\"\nmsgstr \"タブを閉じる\"\n\nmsgid \"Full screen\"\nmsgstr \"フルスクリーン\"\n\nmsgid \"Copy\"\nmsgstr \"コピー\"\n\nmsgid \"Paste\"\nmsgstr \"貼り付け\"\n\nmsgid \"Options\"\nmsgstr \"設定\"\n\nmsgid \"Select font...\"\nmsgstr \"フォントを選択...\"\n\nmsgid \"Select colors...\"\nmsgstr \"色を選択...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"タブバーを表示\"\n\nmsgid \"Always\"\nmsgstr \"常に\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"複数のタブがある時\"\n\nmsgid \"Never\"\nmsgstr \"一度もない\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"タブを下に表示\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"スクロールバーを表示\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"終了時の質問が少なくする\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"選択したテキストを自動的にコーピーする\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"救急ベルを有効にする\"\n\nmsgid \"Set audible bell\"\nmsgstr \"ベル音を有効にする\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"カーソルの点滅を有効にする\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"番号のタブ切り替えを無効にする\"\n\nmsgid \"Set cursor type\"\nmsgstr \"カーソルタイプを設定\"\n\nmsgid \"Block\"\nmsgstr \"四角\"\n\nmsgid \"Underline\"\nmsgstr \"アンダーライン\"\n\nmsgid \"IBeam\"\nmsgstr \"Iビーム\"\n\nmsgid \"Search\"\nmsgstr \"探索\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"ターミナル %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"この端末には実行中のプロセスがあります。\\n\"\n\"\\n\"\n\"本当に閉じますか？\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"別のプロセスに設定が変更された。上書き？\"\n\nmsgid \"Error message\"\nmsgstr \"エラー・メッセージ\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"作業ディレクトリを変更することはできません\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- vte ベースのターミナル・エミュレータ\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura のバージョンは %s です\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"タブに閉じるボタンを表示\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"フォーカスフェードを有効にする\"\n"
  },
  {
    "path": "po/ka.po",
    "content": "# Georgian translation for sakura.\n# Copyright (C) 2026 sakura's authors.\n# This file is distributed under the same license as the sakura package.\n# Ekaterine Papava <papava.e@gtu.ge>, 2026.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura git\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2025-04-27 12:22+0200\\n\"\n\"PO-Revision-Date: 2026-04-13 15:28+0200\\n\"\n\"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\\n\"\n\"Language-Team: Georgian <(nothing)>\\n\"\n\"Language: ka\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Generator: Poedit 3.9\\n\"\n\n#: src/sakura.c:560\nmsgid \"Print version number\"\nmsgstr \"ვერსიის ნომრის გამოტანა\"\n\n#: src/sakura.c:561 src/sakura.c:1552\nmsgid \"Set window title\"\nmsgstr \"ფანჯრის სათაურის შეცვლა\"\n\n#: src/sakura.c:562\nmsgid \"Select initial terminal font\"\nmsgstr \"აირჩიეთ ტერმინალის საწყისი ფონტი\"\n\n#: src/sakura.c:563\nmsgid \"Select initial number of tabs\"\nmsgstr \"აირჩიეთ ჩანართების საწყისი რაოდენობა\"\n\n#: src/sakura.c:564\nmsgid \"Set working directory\"\nmsgstr \"სამუშაო საქაღალდის დაყენება\"\n\n#: src/sakura.c:565\nmsgid \"Execute command\"\nmsgstr \"ბრძანების შესრულება\"\n\n#: src/sakura.c:566\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"ბრძანების შესრულება (ბრძანების სტრიქონის ბოლო პარამეტრი)\"\n\n#: src/sakura.c:568\nmsgid \"Login shell\"\nmsgstr \"შესვლს გარსი\"\n\n#: src/sakura.c:569\nmsgid \"Set window icon\"\nmsgstr \"ფანჯრის ხატულას დაყენება\"\n\n#: src/sakura.c:570\nmsgid \"Set columns number\"\nmsgstr \"სვეტების რაოდენობის დაყენება\"\n\n#: src/sakura.c:571\nmsgid \"Set rows number\"\nmsgstr \"მწკრივების რაოდენობის დაყენება\"\n\n#: src/sakura.c:572\nmsgid \"Hold window after execute command\"\nmsgstr \"ფანჯრის შენარჩუნება ბრძანების შესრულების შემდეგ\"\n\n#: src/sakura.c:573\nmsgid \"Maximize window\"\nmsgstr \"ფანჯრის გადიდება\"\n\n#: src/sakura.c:574\nmsgid \"Fullscreen mode\"\nmsgstr \"სრული ეკრანის რეჟიმი\"\n\n#: src/sakura.c:575\nmsgid \"Use alternate configuration file\"\nmsgstr \"ალტერნატიული კონფიგურაციის ფაილის გამოყენება\"\n\n#: src/sakura.c:576\nmsgid \"Select initial colorset\"\nmsgstr \"საწყისი ფერთა ნაკრების არჩევა\"\n\n#: src/sakura.c:1178\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"პროცესები ჯერ კიდევ გაშვებულია.\\n\"\n\"\\n\"\n\"მართლა გნებავთ Sakura-ის დახურვა?\"\n\n#: src/sakura.c:1217\nmsgid \"Select font\"\nmsgstr \"აირჩიეთ ფონტი\"\n\n#: src/sakura.c:1248\nmsgid \"Set tab name\"\nmsgstr \"ჩანართის სახელის დაყენება\"\n\n#: src/sakura.c:1251 src/sakura.c:1380 src/sakura.c:1555 src/sakura.c:2673\nmsgid \"_Cancel\"\nmsgstr \"გაუ_ქმება\"\n\n#: src/sakura.c:1252 src/sakura.c:1556 src/sakura.c:2674\nmsgid \"_Apply\"\nmsgstr \"გ_ადატარება\"\n\n#: src/sakura.c:1264\nmsgid \"New text\"\nmsgstr \"ახალი ტექსტი\"\n\n#: src/sakura.c:1378\nmsgid \"Select colors\"\nmsgstr \"ფერების არჩევა\"\n\n#: src/sakura.c:1380\nmsgid \"_Select\"\nmsgstr \"_მონიშვნა\"\n\n#: src/sakura.c:1389\nmsgid \"Colorset\"\nmsgstr \"ფერების ნაკრები\"\n\n#: src/sakura.c:1400\nmsgid \"Color scheme\"\nmsgstr \"ფერების სქემა\"\n\n#: src/sakura.c:1411\nmsgid \"Foreground color\"\nmsgstr \"წინა პლანის ფერი\"\n\n#: src/sakura.c:1412\nmsgid \"Background color\"\nmsgstr \"ფონის ფერი\"\n\n#: src/sakura.c:1413\nmsgid \"Cursor color\"\nmsgstr \"კურსორის ფერი\"\n\n#: src/sakura.c:1422\nmsgid \"Opacity level (%)\"\nmsgstr \"გაუმჭვირვალობის დონე (%)\"\n\n#: src/sakura.c:1426\nmsgid \"Palette\"\nmsgstr \"პალიტრა\"\n\n#: src/sakura.c:1435\nmsgid \"Use bright colors for bold text\"\nmsgstr \"კაშკაშა ფერები სქელი ტექსტისთვის\"\n\n#: src/sakura.c:1565\nmsgid \"New window title\"\nmsgstr \"ფანჯრის ახალი სათაური\"\n\n#: src/sakura.c:2448\nmsgid \"Open mail\"\nmsgstr \"ელფოსტის გახსნა\"\n\n#: src/sakura.c:2449\nmsgid \"Open link\"\nmsgstr \"ბმულის გახსნა\"\n\n#: src/sakura.c:2450\nmsgid \"Copy link\"\nmsgstr \"ბმულის კოპირება\"\n\n#: src/sakura.c:2451\nmsgid \"New tab\"\nmsgstr \"ახალი ჩანართი\"\n\n#: src/sakura.c:2452\nmsgid \"Set tab name...\"\nmsgstr \"ჩანართის სახელის დაყენება...\"\n\n#: src/sakura.c:2453\nmsgid \"Close tab\"\nmsgstr \"ჩანართის დახურვა\"\n\n#: src/sakura.c:2454\nmsgid \"Full screen\"\nmsgstr \"სრულ ეკრანზე\"\n\n#: src/sakura.c:2455\nmsgid \"Copy\"\nmsgstr \"კოპირება\"\n\n#: src/sakura.c:2456\nmsgid \"Paste\"\nmsgstr \"ჩასმა\"\n\n#: src/sakura.c:2458\nmsgid \"Options\"\nmsgstr \"მორგება\"\n\n#: src/sakura.c:2460\nmsgid \"Select font...\"\nmsgstr \"ფონტის არჩევა...\"\n\n#: src/sakura.c:2461\nmsgid \"Select colors...\"\nmsgstr \"ფერების არჩევა...\"\n\n#: src/sakura.c:2462\nmsgid \"Show tab bar\"\nmsgstr \"ჩანართის ზოლის ჩვენება\"\n\n#: src/sakura.c:2463\nmsgid \"Always\"\nmsgstr \"ყოველთვის\"\n\n#: src/sakura.c:2465\nmsgid \"When there's more than one tab\"\nmsgstr \"როცა არსებობს ერთზე მეტი ჩანართი\"\n\n#: src/sakura.c:2467\nmsgid \"Never\"\nmsgstr \"არასდროს\"\n\n#: src/sakura.c:2468\nmsgid \"Tabs at bottom\"\nmsgstr \"ჩანართები ქვემოთ\"\n\n#: src/sakura.c:2469\nmsgid \"New tab after current tab\"\nmsgstr \"ახალი ჩანართი მიმდინარე ჩანართის შემდეგ\"\n\n#: src/sakura.c:2470\nmsgid \"Show scrollbar\"\nmsgstr \"ჩოჩიის ჩვენება\"\n\n#: src/sakura.c:2471\nmsgid \"Fewer questions at exit time\"\nmsgstr \"ნაკლები კითხვა გასვლისას\"\n\n#: src/sakura.c:2472\nmsgid \"Automatically copy selected text\"\nmsgstr \"მონიშნული ტექსტის ავტომატური კოპირება\"\n\n#: src/sakura.c:2473\nmsgid \"Set urgent bell\"\nmsgstr \"სასწრაფოობის ზარის დაყენება\"\n\n#: src/sakura.c:2474\nmsgid \"Set audible bell\"\nmsgstr \"გასაგონი ზარის დაყენება\"\n\n#: src/sakura.c:2475\nmsgid \"Set blinking cursor\"\nmsgstr \"მოციმციმე კურსორის დაყენება\"\n\n#: src/sakura.c:2476\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"დანომრილი ჩანართების გადართვის გამორთვა\"\n\n#: src/sakura.c:2478\nmsgid \"Set cursor type\"\nmsgstr \"კურსორის ტიპის დაყენება\"\n\n#: src/sakura.c:2479\nmsgid \"Block\"\nmsgstr \"ბლოკი\"\n\n#: src/sakura.c:2480\nmsgid \"Underline\"\nmsgstr \"ხაზგასმული\"\n\n#: src/sakura.c:2481\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\n#: src/sakura.c:2670 src/sakura.c:2683\nmsgid \"Search\"\nmsgstr \"ძებნა\"\n\n#: src/sakura.c:3009\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"ტერმინალი %d\"\n\n#: src/sakura.c:3341\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"ამ ტერმინალში არსებობს გაშვებული პროცესი.\\n\"\n\"\\n\"\n\"მართლა გნებავთ მისი დახურვა?\"\n\n#: src/sakura.c:3492\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"კონფიგურაცია შეიცვალა სხვა პროცესის მიერ. გადავაწერო თავზე?\"\n\n#: src/sakura.c:3543\nmsgid \"Error message\"\nmsgstr \"შეცდომის შეტყობინება\"\n\n#: src/sakura.c:3744 src/sakura.c:3814\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"სამუშაო საქაღალდის შეცვლა შეუძლებელია\\n\"\n\n#: src/sakura.c:3800\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- vte-ზე დაფუძნებული ტერმინალის ემულატორი\"\n\n#: src/sakura.c:3819\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura-ის ვერსიაა %s\\n\"\n"
  },
  {
    "path": "po/ko.po",
    "content": "# Korean translation for sakura\n# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011\n# This file is distributed under the same license as the sakura package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2019-09-30 05:48+0000\\n\"\n\"Last-Translator: Minho Park <parkmino@gmail.com>\\n\"\n\"Language-Team: Korean <ko@li.org>\\n\"\n\"Language: ko\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"버전 보기\"\n\nmsgid \"Set window title\"\nmsgstr \"창 제목 설정\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"터미널 초기 글꼴 선택\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"탭 초기 갯수 선택\"\n\nmsgid \"Set working directory\"\nmsgstr \"작업 디렉토리 설정\"\n\nmsgid \"Execute command\"\nmsgstr \"명령 실행\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"명령어 실행 (명령어 줄에 마지막 설정)\"\n\nmsgid \"Login shell\"\nmsgstr \"로그인 쉘\"\n\nmsgid \"Set window icon\"\nmsgstr \"창 아이콘 설정\"\n\nmsgid \"Set columns number\"\nmsgstr \"열 번호 설정\"\n\nmsgid \"Set rows number\"\nmsgstr \"줄 번호 설정\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"명령어 실행 후 창 유지\"\n\nmsgid \"Maximize window\"\nmsgstr \"창 최대화\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"전체화면 모드\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"대체 설정 파일 사용\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"초기 색상 세트 선댁\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"실행되는 프로세스가 있습니다.\\n\"\n\"\\n\"\n\"정말로 사쿠라를 닫을까요?\"\n\nmsgid \"Select font\"\nmsgstr \"글꼴 선택\"\n\nmsgid \"Set tab name\"\nmsgstr \"탭 이름 설정\"\n\nmsgid \"_Cancel\"\nmsgstr \"취소(_C)\"\n\nmsgid \"_Apply\"\nmsgstr \"적용(_A)\"\n\nmsgid \"New text\"\nmsgstr \"새 글\"\n\nmsgid \"Select colors\"\nmsgstr \"색상 선댁\"\n\nmsgid \"_Select\"\nmsgstr \"선택(_S)\"\n\nmsgid \"Colorset\"\nmsgstr \"색상 세트\"\n\nmsgid \"Color scheme\"\nmsgstr \"색 구성표\"\n\nmsgid \"Foreground color\"\nmsgstr \"글자색\"\n\nmsgid \"Background color\"\nmsgstr \"배경색\"\n\nmsgid \"Cursor color\"\nmsgstr \"커서색\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"불투명도 (%)\"\n\nmsgid \"Palette\"\nmsgstr \"파레트\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"굵은 텍스트에 밝은 색상 사용\"\n\nmsgid \"New window title\"\nmsgstr \"새 창 제목\"\n\nmsgid \"Open mail\"\nmsgstr \"메일열기\"\n\nmsgid \"Open link\"\nmsgstr \"링크 열기\"\n\nmsgid \"Copy link\"\nmsgstr \"링크 복사\"\n\nmsgid \"New tab\"\nmsgstr \"새 탭\"\n\nmsgid \"Set tab name...\"\nmsgstr \"탭 이름 설정...\"\n\nmsgid \"Close tab\"\nmsgstr \"탭 닫기\"\n\nmsgid \"Full screen\"\nmsgstr \"전체 화면\"\n\nmsgid \"Copy\"\nmsgstr \"복사\"\n\nmsgid \"Paste\"\nmsgstr \"붙여넣기\"\n\nmsgid \"Options\"\nmsgstr \"설정\"\n\nmsgid \"Select font...\"\nmsgstr \"글꼴 선택...\"\n\nmsgid \"Select colors...\"\nmsgstr \"색상 선택...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"탭바 보기\"\n\nmsgid \"Always\"\nmsgstr \"항상\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"하나 이상의 탭이 있는 경우\"\n\nmsgid \"Never\"\nmsgstr \"절대\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"탭을 아래에 표시\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"스크롤바 보기\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"종료 시 적은 질문\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"선택한 텍스트를 자동으로 복사\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"긴급 종 설정\"\n\nmsgid \"Set audible bell\"\nmsgstr \"종 소리 설정\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"커서 깜빡임 설정\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"번호 탭 스위치 사용 안 함\"\n\nmsgid \"Set cursor type\"\nmsgstr \"커서 종류 설정\"\n\nmsgid \"Block\"\nmsgstr \"블럭\"\n\nmsgid \"Underline\"\nmsgstr \"밑줄\"\n\nmsgid \"IBeam\"\nmsgstr \"I기둥\"\n\nmsgid \"Search\"\nmsgstr \"검색\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"터미널 %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"이 터미널에 실행되는 프로세스가 있습니다.\\n\"\n\"\\n\"\n\"정말로 닫을까요?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"다른 프로세스에서 설정을 수정했습니다. 덮어쓸까요?\"\n\nmsgid \"Error message\"\nmsgstr \"오류 메시지\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"작업 디렉토리를 변경할 수 없습니다\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- vte 기반의 터미널 에뮬레이터\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura 버전은 %s 입니다\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"탭에 닫기 단추 보기\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"초점 페이드 사용\"\n"
  },
  {
    "path": "po/pl.po",
    "content": "# Polish translation for sakura\n# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010\n# This file is distributed under the same license as the sakura package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2018-04-29 13:18+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: Polish <pl@li.org>\\n\"\n\"Language: pl\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Pokaż wersję\"\n\nmsgid \"Set window title\"\nmsgstr \"Ustaw tytuł okna\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Wybierz domyślną czcionkę\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Wybierz domyślną ilość zakładek\"\n\nmsgid \"Set working directory\"\nmsgstr \"Ustaw katalog roboczy\"\n\nmsgid \"Execute command\"\nmsgstr \"Wykonaj polecenie\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Wykonaj komendę (ostatnia opcja w wierszu poleceń\"\n\nmsgid \"Login shell\"\nmsgstr \"Powłoka logowania\"\n\nmsgid \"Set window icon\"\nmsgstr \"Ustaw ikonę okna\"\n\nmsgid \"Set columns number\"\nmsgstr \"Ustaw liczbę kolumn\"\n\nmsgid \"Set rows number\"\nmsgstr \"Ustaw liczbę wierszy\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Nie wyłączaj okna po wykonaniu polecenia\"\n\nmsgid \"Maximize window\"\nmsgstr \"Maksymalizuj okno\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Tryb pełnoekranowy\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Użyj alternatywnego pliku konfiguracyjnego\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Wybierz domyślny schemat kolorów\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Dalej działają uruchomione procesy.\\n\"\n\"\\n\"\n\"Czy na pewno chcesz zamknąć Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Wybierz czcionkę\"\n\nmsgid \"Set tab name\"\nmsgstr \"Wybierz nazwę zakładki\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Anuluj\"\n\nmsgid \"_Apply\"\nmsgstr \"_Zastosuj\"\n\nmsgid \"New text\"\nmsgstr \"Nowy tekst\"\n\nmsgid \"Select colors\"\nmsgstr \"Wybierz kolory\"\n\nmsgid \"_Select\"\nmsgstr \"_Wybierz\"\n\nmsgid \"Colorset\"\nmsgstr \"Schemat kolorów\"\n\n#, fuzzy\nmsgid \"Color scheme\"\nmsgstr \"Schemat kolorów\"\n\nmsgid \"Foreground color\"\nmsgstr \"Kolor pierwszoplanowy\"\n\nmsgid \"Background color\"\nmsgstr \"Kolor tła\"\n\nmsgid \"Cursor color\"\nmsgstr \"Kolor kursora\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Nieprzezroczystość\"\n\n#, fuzzy\nmsgid \"Palette\"\nmsgstr \"Ustaw paletę\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"\"\n\nmsgid \"New window title\"\nmsgstr \"Nowy tytuł okna\"\n\n#, fuzzy\nmsgid \"Open mail\"\nmsgstr \"Otwórz link...\"\n\nmsgid \"Open link\"\nmsgstr \"Otwórz odnośnik\"\n\nmsgid \"Copy link\"\nmsgstr \"Kopiuj odnośnik\"\n\nmsgid \"New tab\"\nmsgstr \"Nowa zakładka\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Ustaw nazwę karty...\"\n\nmsgid \"Close tab\"\nmsgstr \"Zamknij zakładkę\"\n\nmsgid \"Full screen\"\nmsgstr \"Pełny ekran\"\n\nmsgid \"Copy\"\nmsgstr \"Kopiuj\"\n\nmsgid \"Paste\"\nmsgstr \"Wklej\"\n\nmsgid \"Options\"\nmsgstr \"Ustawienia\"\n\nmsgid \"Select font...\"\nmsgstr \"Wybierz czcionkę...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Wybierz kolory...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Wyświetlaj pasek kart\"\n\nmsgid \"Always\"\nmsgstr \"Zawsze\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"Kiedy jest więcej niż jeden\"\n\nmsgid \"Never\"\nmsgstr \"Nigdy\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Karty na dole\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Pokaż pasek przesuwania\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\n#, fuzzy\nmsgid \"Set urgent bell\"\nmsgstr \"Dźwiękowy sygnał\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Dźwiękowy sygnał\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Migający kursor\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Wybierz typ kursora\"\n\nmsgid \"Block\"\nmsgstr \"Blokuj\"\n\nmsgid \"Underline\"\nmsgstr \"Podkreślenie\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminal %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"W tym terminalu dalej działa proces.\\n\"\n\"\\n\"\n\"Czy na pewno chcesz go zamknąć?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"\"\n\nmsgid \"Error message\"\nmsgstr \"Komunikat o błędzie\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Nie można zmienić katalogu roboczego\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- emulator terminala oparty na vte\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"wersja sakura to %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Pokaż przyciski zamykania na kartach\"\n"
  },
  {
    "path": "po/pt.po",
    "content": "# Portuguese translation for sakura\n# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013\n# This file is distributed under the same license as the sakura package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2018-04-29 13:18+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: Portuguese <pt@li.org>\\n\"\n\"Language: pt\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Mostrar número da versão\"\n\nmsgid \"Set window title\"\nmsgstr \"Definir título da janela\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Escolha o tipo inicial de letra do terminal\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Escolha o número inicial de separadores\"\n\nmsgid \"Set working directory\"\nmsgstr \"Definir diretório de trabalho\"\n\nmsgid \"Execute command\"\nmsgstr \"Executar comando\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Executar comando (última opção da linha de comandos)\"\n\nmsgid \"Login shell\"\nmsgstr \"\"\n\nmsgid \"Set window icon\"\nmsgstr \"Definir ícone de janela\"\n\nmsgid \"Set columns number\"\nmsgstr \"Definir número de colunas\"\n\nmsgid \"Set rows number\"\nmsgstr \"Definir número de linhas\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"\"\n\nmsgid \"Maximize window\"\nmsgstr \"Maximizar janela\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Ecrã completo\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Utilizar ficheiro alternativo de configurações\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Escolha conjunto de cores inicial\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Existem processos em curso.\\n\"\n\"\\n\"\n\"Quer mesmo fechar o Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Escolha o tipo de letra\"\n\nmsgid \"Set tab name\"\nmsgstr \"Definir nome do separador\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Cancelar\"\n\nmsgid \"_Apply\"\nmsgstr \"_Aplicar\"\n\nmsgid \"New text\"\nmsgstr \"Novo texto\"\n\nmsgid \"Select colors\"\nmsgstr \"Escolha a cor\"\n\nmsgid \"_Select\"\nmsgstr \"_Selecionar\"\n\nmsgid \"Colorset\"\nmsgstr \"Conjunto de cores\"\n\nmsgid \"Color scheme\"\nmsgstr \"Esquema de cores\"\n\nmsgid \"Foreground color\"\nmsgstr \"Cor de primeiro plano\"\n\nmsgid \"Background color\"\nmsgstr \"Cor de fundo\"\n\nmsgid \"Cursor color\"\nmsgstr \"Cor do cursor\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Nivel de opacidade (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Palete\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"\"\n\nmsgid \"New window title\"\nmsgstr \"Título da nova janela\"\n\nmsgid \"Open mail\"\nmsgstr \"Abrir correio\"\n\nmsgid \"Open link\"\nmsgstr \"Abrir ligação\"\n\nmsgid \"Copy link\"\nmsgstr \"Copiar ligação\"\n\nmsgid \"New tab\"\nmsgstr \"Novo separador\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Definir nome do separador\"\n\nmsgid \"Close tab\"\nmsgstr \"Fechar separador\"\n\nmsgid \"Full screen\"\nmsgstr \"Ecrã completo\"\n\nmsgid \"Copy\"\nmsgstr \"Copiar\"\n\nmsgid \"Paste\"\nmsgstr \"Colar\"\n\nmsgid \"Options\"\nmsgstr \"Opções\"\n\nmsgid \"Select font...\"\nmsgstr \"Escolha o tipo de letra...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Escolha as cores...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Mostrar barra de separadores\"\n\nmsgid \"Always\"\nmsgstr \"Sempre\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"Nunca\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Separadores em baixo\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Mostrar barra de deslocação\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Definir sinal urgente\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Definir sinal sonoro\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Definir cursor intermitente\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Definir tipo de cursor\"\n\nmsgid \"Block\"\nmsgstr \"Bloco\"\n\nmsgid \"Underline\"\nmsgstr \"Sublinhado\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"Pesquisar\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminal %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"Ainda existem processos em curso neste terminal.\\n\"\n\"\\n\"\n\"Quer mesmo fechar o terminal?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"A configuração foi modificada por outro processo. Substituir?\"\n\nmsgid \"Error message\"\nmsgstr \"Mensagem de erro\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Não pode mudar o diretório de trabalho\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- Emulador de terminal vte-based\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"A versão do sakura é a %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Mostrar botão para fechar separadores\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Habilitar enfranquecimiento do foco\"\n"
  },
  {
    "path": "po/pt_BR.po",
    "content": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2018-04-29 13:18+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: fabio.antunes@hotmail.com <fabio.antunes@hotmail.com>\\n\"\n\"Language: pt\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Mostrar número da versão\"\n\nmsgid \"Set window title\"\nmsgstr \"Definir título da janela\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Selecionar fonte inicial do terminal\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Selecionar número inicial de abas\"\n\n#, fuzzy\nmsgid \"Set working directory\"\nmsgstr \"Ativar cursor piscando\"\n\nmsgid \"Execute command\"\nmsgstr \"Executar comando\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Executar comando (última opção da linha de comando)\"\n\nmsgid \"Login shell\"\nmsgstr \"Login shell\"\n\n#, fuzzy\nmsgid \"Set window icon\"\nmsgstr \"Definir título da janela\"\n\nmsgid \"Set columns number\"\nmsgstr \"Definir número de colunas\"\n\nmsgid \"Set rows number\"\nmsgstr \"Definir número de linhas\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Mostrar a janela depois de executar o comando\"\n\nmsgid \"Maximize window\"\nmsgstr \"Maximizar janela\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Tela cheia\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Usar arquivo de configuração alternativo\"\n\n#, fuzzy\nmsgid \"Select initial colorset\"\nmsgstr \"Selecionar cor\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Existem processos sendo executados.\\n\"\n\"\\n\"\n\"Tem certeza que deseja fechar Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Selecionar fonte\"\n\nmsgid \"Set tab name\"\nmsgstr \"Definir nome da aba\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Cancelar\"\n\nmsgid \"_Apply\"\nmsgstr \"_Aplicar\"\n\nmsgid \"New text\"\nmsgstr \"Novo texto\"\n\nmsgid \"Select colors\"\nmsgstr \"Selecionar cor\"\n\nmsgid \"_Select\"\nmsgstr \"_Selecionar\"\n\nmsgid \"Colorset\"\nmsgstr \"\"\n\nmsgid \"Color scheme\"\nmsgstr \"\"\n\nmsgid \"Foreground color\"\nmsgstr \"Cor de primeiro plano\"\n\nmsgid \"Background color\"\nmsgstr \"Cor de fundo\"\n\nmsgid \"Cursor color\"\nmsgstr \"Cor do cursor\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Nível de opacidade (%):\"\n\nmsgid \"Palette\"\nmsgstr \"Paleta\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"\"\n\nmsgid \"New window title\"\nmsgstr \"Definir título da janela\"\n\n#, fuzzy\nmsgid \"Open mail\"\nmsgstr \"Abrir link...\"\n\nmsgid \"Open link\"\nmsgstr \"Abrir link...\"\n\nmsgid \"Copy link\"\nmsgstr \"Copiar link...\"\n\nmsgid \"New tab\"\nmsgstr \"Nova aba\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Definir nome da aba...\"\n\nmsgid \"Close tab\"\nmsgstr \"Fechar aba\"\n\nmsgid \"Full screen\"\nmsgstr \"Tela cheia\"\n\nmsgid \"Copy\"\nmsgstr \"Copiar\"\n\nmsgid \"Paste\"\nmsgstr \"Colar\"\n\nmsgid \"Options\"\nmsgstr \"Opções\"\n\nmsgid \"Select font...\"\nmsgstr \"Selecionar fonte...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Selecionar cores...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Mostrar a barra de abas\"\n\nmsgid \"Always\"\nmsgstr \"Sempre\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"Nunca\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Abas em baixo\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Mostra barra de rolagem\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\n#, fuzzy\nmsgid \"Set urgent bell\"\nmsgstr \"Ativar aviso sonoro\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Ativar aviso sonoro\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Ativar cursor piscando\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Definir tipo de cursor\"\n\nmsgid \"Block\"\nmsgstr \"Bloquear\"\n\nmsgid \"Underline\"\nmsgstr \"Sublinhar\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminal %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"Existem processos sendo executados nesse terminal.\\n\"\n\"\\n\"\n\"Tem certeza que deseja fechar ele?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"A configuração foi modificada por outro processo. Sobrescrever?\"\n\nmsgid \"Error message\"\nmsgstr \"Mensagem de erro\"\n\n#, fuzzy, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Ativar cursor piscando\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- emulador de terminal baseado no vte\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura versão %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Exibir o botão fechar nas abas\"\n"
  },
  {
    "path": "po/ru.po",
    "content": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2018-04-29 13:18+0000\\n\"\n\"Last-Translator: ManDrive <roman_romul@mail.ru>\\n\"\n\"Language-Team: Evgenij Vdovin <evdovin@pochta.ru>\\n\"\n\"Language: ru\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Вывести номер версии\"\n\nmsgid \"Set window title\"\nmsgstr \"Изменение заголовка окна\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Выбрать начальный шрифт терминала\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Выбрать начальное число вкладок\"\n\nmsgid \"Set working directory\"\nmsgstr \"Установить рабочую директорию\"\n\nmsgid \"Execute command\"\nmsgstr \"Выполнить команду\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Выполнить команду (последнюю опцию в командной строке)\"\n\nmsgid \"Login shell\"\nmsgstr \"Логин shell\"\n\nmsgid \"Set window icon\"\nmsgstr \"Установить иконку окна\"\n\nmsgid \"Set columns number\"\nmsgstr \"Установить число столбцов\"\n\nmsgid \"Set rows number\"\nmsgstr \"Установить число строк\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Удерживать окно после выполнения команды\"\n\nmsgid \"Maximize window\"\nmsgstr \"Максимальный размер окна\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Полноэкранный режим\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Использовать альтернативный файл конфигурации\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Выбрать начальную цветовую палитру\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Имеются запущенные процессы.\\n\"\n\"\\n\"\n\"Вы уверены, что хотите закрыть Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Выбрать шрифт\"\n\nmsgid \"Set tab name\"\nmsgstr \"Установить заголовок вкладки\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Отменить\"\n\nmsgid \"_Apply\"\nmsgstr \"_Применить\"\n\nmsgid \"New text\"\nmsgstr \"Новый текст\"\n\nmsgid \"Select colors\"\nmsgstr \"Выбрать цвета\"\n\nmsgid \"_Select\"\nmsgstr \"_Выбрать\"\n\nmsgid \"Colorset\"\nmsgstr \"Цветовой набор\"\n\nmsgid \"Color scheme\"\nmsgstr \"Цветовой нсхема\"\n\nmsgid \"Foreground color\"\nmsgstr \"Цвет текста\"\n\nmsgid \"Background color\"\nmsgstr \"Цвет  фона\"\n\nmsgid \"Cursor color\"\nmsgstr \"Цвет курсора\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Уровень прозрачности (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Палитра\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"Изображать толстый шрифт яркими цветами\"\n\nmsgid \"New window title\"\nmsgstr \"Новый заголовок окна:\"\n\nmsgid \"Open mail\"\nmsgstr \"Открыть почта\"\n\nmsgid \"Open link\"\nmsgstr \"Открыть ссылку\"\n\nmsgid \"Copy link\"\nmsgstr \"Копировать ссылку\"\n\nmsgid \"New tab\"\nmsgstr \"Новая вкладка\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Установить заголовок вкладки...\"\n\nmsgid \"Close tab\"\nmsgstr \"Закрыть вкладку\"\n\nmsgid \"Full screen\"\nmsgstr \"Полноэкранный режим\"\n\nmsgid \"Copy\"\nmsgstr \"Копировать\"\n\nmsgid \"Paste\"\nmsgstr \"Вставить\"\n\nmsgid \"Options\"\nmsgstr \"Настройки\"\n\nmsgid \"Select font...\"\nmsgstr \"Выбрать шрифт...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Выбрать цвета...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Показывать панель вкладок\"\n\nmsgid \"Always\"\nmsgstr \"Всегда\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"Если имеется более чем одна\"\n\nmsgid \"Never\"\nmsgstr \"Никогда\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Панель вкладок внизу\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Показать линейку прокрутки\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"Меньше вопросов при выходе\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Установить срочный звонок\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Звуковое оповещение\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Мигающий курсор\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"Отключить нумерованный переключатель вкладок\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Установить вид курсора\"\n\nmsgid \"Block\"\nmsgstr \"Блочный\"\n\nmsgid \"Underline\"\nmsgstr \"_-образный\"\n\nmsgid \"IBeam\"\nmsgstr \"I-образный\"\n\nmsgid \"Search\"\nmsgstr \"Поиск\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Терминал %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"Не все процессы завершены в этом терминале.\\n\"\n\"\\n\"\n\"Вы уверены, что хотите выйти закрыть его?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"Настройки были изменены другим процессом. Перезаписать?\"\n\nmsgid \"Error message\"\nmsgstr \"Сообщение об ошибке\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Не удалось сменить рабочую директорию\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- эмулятор терминала, основанный на VTE\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"Версия sakura %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Показывать кнопку закрытия на вкладке\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Включение фокусировки замирания\"\n"
  },
  {
    "path": "po/sv.po",
    "content": "# Swedish translation for sakura\n# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015\n# This file is distributed under the same license as the sakura package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2019-08-12 16:27+0000\\n\"\n\"Last-Translator: Andreas Rönnquist <andreas@ronnquist.net>\\n\"\n\"Language-Team: Swedish <sv@li.org>\\n\"\n\"Language: sv\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Skriv ut versionsnummer\"\n\nmsgid \"Set window title\"\nmsgstr \"Sätt fönstertitel\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Välj initialt terminaltypsnitt\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Välj initialt antal flikar\"\n\nmsgid \"Set working directory\"\nmsgstr \"Sätt arbetskatalog\"\n\nmsgid \"Execute command\"\nmsgstr \"Kör kommando\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Kör kommando (Sista alternativet på kommandoraden)\"\n\nmsgid \"Login shell\"\nmsgstr \"Inloggningsskal\"\n\nmsgid \"Set window icon\"\nmsgstr \"Sätt fönsterikon\"\n\nmsgid \"Set columns number\"\nmsgstr \"Sätt antal kolumner\"\n\nmsgid \"Set rows number\"\nmsgstr \"Sätt antal rader\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Håll kvar fönster efter kommandokörning\"\n\nmsgid \"Maximize window\"\nmsgstr \"Maximera fönster\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Helskärmsläge\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Använd alternativ konfigurationsfil\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Välj initial färguppsättning\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Det finns processer som fortfarande är igång.\\n\"\n\"\\n\"\n\"Vill du verkligen avsluta sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Välj typsnitt\"\n\nmsgid \"Set tab name\"\nmsgstr \"Sätt fliknamn\"\n\nmsgid \"_Cancel\"\nmsgstr \"_Avbryt\"\n\nmsgid \"_Apply\"\nmsgstr \"_Verkställ\"\n\nmsgid \"New text\"\nmsgstr \"Ny text\"\n\nmsgid \"Select colors\"\nmsgstr \"Välj färger\"\n\nmsgid \"_Select\"\nmsgstr \"_Välj\"\n\nmsgid \"Colorset\"\nmsgstr \"Färguppsättning\"\n\nmsgid \"Color scheme\"\nmsgstr \"Färgschema\"\n\nmsgid \"Foreground color\"\nmsgstr \"Förgrundsfärg\"\n\nmsgid \"Background color\"\nmsgstr \"Bakgrundsfärg\"\n\nmsgid \"Cursor color\"\nmsgstr \"Markörfärg\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Opacitetsnivå (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Palett\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"\"\n\nmsgid \"New window title\"\nmsgstr \"Ny fönstertitel\"\n\nmsgid \"Open mail\"\nmsgstr \"Öppna e-post\"\n\nmsgid \"Open link\"\nmsgstr \"Öppna länk\"\n\nmsgid \"Copy link\"\nmsgstr \"Kopiera länk\"\n\nmsgid \"New tab\"\nmsgstr \"Ny flik\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Sätt fliknamn...\"\n\nmsgid \"Close tab\"\nmsgstr \"Stäng flik\"\n\nmsgid \"Full screen\"\nmsgstr \"Helskärm\"\n\nmsgid \"Copy\"\nmsgstr \"Kopiera\"\n\nmsgid \"Paste\"\nmsgstr \"Klistra in\"\n\nmsgid \"Options\"\nmsgstr \"Alternativ\"\n\nmsgid \"Select font...\"\nmsgstr \"Välj typsnitt...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Välj färger...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Visa flikfältet\"\n\nmsgid \"Always\"\nmsgstr \"Alltid\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"Aldrig\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Flikar nederst\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Visa rullningslist\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Sätt larmsignal\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Sätt hörbar signal\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Sätt blinkande markör\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"Inaktivera numrerad flikväxlare\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Sätt markörtyp\"\n\nmsgid \"Block\"\nmsgstr \"Block\"\n\nmsgid \"Underline\"\nmsgstr \"Understreck\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"Sök\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Terminal %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"Det finns en process igång i denna terminal.\\n\"\n\"\\n\"\n\"Vill du verkligen avsluta den?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"Konfigurationen har ändrats av en annan process. Skriv över?\"\n\nmsgid \"Error message\"\nmsgstr \"Felmeddelande\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Kan inte ändra arbetskatalog\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- vte-baserad terminalemulator\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura-versionen är %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Visa stängningsknapp på flikar\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Aktivera fokustoning\"\n"
  },
  {
    "path": "po/tr.po",
    "content": "#\n# Eyyüb Akçaer <gurbetcii_@hotmail.com>, 2022.\n#\n# madanadam <madanadam@gmail.com>, 2023.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2022-11-11 17:45+0300\\n\"\n\"Last-Translator: Eyyüb Akçaer <gurbetcii_@hotmail.com>\\n\"\n\"Language-Team: Turkish <tr_TR>\\n\"\n\"Language: tr\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Gtranslator 3.38.0\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Sürüm numarasını yazdır\"\n\nmsgid \"Set window title\"\nmsgstr \"Pencere başlığını ayarla\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Uçbirim yazı tipini seç\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Başlangıç sekme sayısını seç\"\n\nmsgid \"Set working directory\"\nmsgstr \"Çalışma dizinini ayarla\"\n\nmsgid \"Execute command\"\nmsgstr \"Komut çalıştır\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Komut çalıştır (komut satırındaki son seçenek)\"\n\nmsgid \"Login shell\"\nmsgstr \"Açılış kabuğu\"\n\nmsgid \"Set window icon\"\nmsgstr \"Pencere simgesini ayarla\"\n\nmsgid \"Set columns number\"\nmsgstr \"Sütun sayısını ayarla\"\n\nmsgid \"Set rows number\"\nmsgstr \"Satır sayısını ayarla\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Komut çalıştırmadan sonra pencereyi tut\"\n\nmsgid \"Maximize window\"\nmsgstr \"Pencereyi büyüt\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"Tam ekran kipi\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Alternatif yapılandırma dosyası kullan\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"Başlangıç renk setini seç\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Devam eden süreçler var.\\n\"\n\"\\n\"\n\"Sakura'yı gerçekten kapatmak istiyor musunuz?\"\n\nmsgid \"Select font\"\nmsgstr \"Yazı tipini seç\"\n\nmsgid \"Set tab name\"\nmsgstr \"Sekme adını ayarla\"\n\nmsgid \"_Cancel\"\nmsgstr \"_İptal\"\n\nmsgid \"_Apply\"\nmsgstr \"_Uygula\"\n\nmsgid \"New text\"\nmsgstr \"Yeni metin\"\n\nmsgid \"Select colors\"\nmsgstr \"Renkleri seç\"\n\nmsgid \"_Select\"\nmsgstr \"_Seç\"\n\nmsgid \"Colorset\"\nmsgstr \"Renk seti\"\n\nmsgid \"Color scheme\"\nmsgstr \"Renk şeması\"\n\nmsgid \"Foreground color\"\nmsgstr \"Önplan rengi\"\n\nmsgid \"Background color\"\nmsgstr \"Arkaplan rengi\"\n\nmsgid \"Cursor color\"\nmsgstr \"İmleç rengi\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"Opaklık düzeyi (%)\"\n\nmsgid \"Palette\"\nmsgstr \"Renk paleti\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"Kalın yazı için parlak renk kullan\"\n\nmsgid \"New window title\"\nmsgstr \"Yeni pencere başlığı\"\n\nmsgid \"Open mail\"\nmsgstr \"Posta aç\"\n\nmsgid \"Open link\"\nmsgstr \"Bağlantı aç\"\n\nmsgid \"Copy link\"\nmsgstr \"Bağlantı kopyala\"\n\nmsgid \"New tab\"\nmsgstr \"Yeni sekme\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Sekme adını ayarla...\"\n\nmsgid \"Close tab\"\nmsgstr \"Sekmeyi kapat\"\n\nmsgid \"Full screen\"\nmsgstr \"Tam ekran\"\n\nmsgid \"Copy\"\nmsgstr \"Kopyala\"\n\nmsgid \"Paste\"\nmsgstr \"Yapıştır\"\n\nmsgid \"Options\"\nmsgstr \"Seçenekler\"\n\nmsgid \"Select font...\"\nmsgstr \"Yazı tipini seç...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Renkleri seç...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Sekme çubuğunu göster\"\n\nmsgid \"Always\"\nmsgstr \"Daima\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"Birden çoksa\"\n\nmsgid \"Never\"\nmsgstr \"Asla\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Sekmeler altta\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Kaydırma çubuğunu göster\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"Çıkış süresinde daha az soru\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"Seçilen yazıyı otomatik kopyala\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"Acil zilini ayarla\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Duyulabilir zili ayarla\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Yanıp sönen imleci ayarla\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"Numaralandırılmış sekme-geçişini devre dışı bırak\"\n\nmsgid \"Set cursor type\"\nmsgstr \"İmleç türünü ayarla\"\n\nmsgid \"Block\"\nmsgstr \"Blok\"\n\nmsgid \"Underline\"\nmsgstr \"Alt çizgi\"\n\nmsgid \"IBeam\"\nmsgstr \"I Işın\"\n\nmsgid \"Search\"\nmsgstr \"Ara\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Uçbirim %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"Bu uçbirimde devam eden bir süreç var.\\n\"\n\"\\n\"\n\"Onu gerçekten kapatmak istiyor musunuz?\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"\"\n\"Yapılandırma, başka bir süreç tarafından değiştirilmiş. Üzerine yazılsın mı?\"\n\nmsgid \"Error message\"\nmsgstr \"Hata iletisi\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Çalışma dizini değiştirilemez\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- vte- tabanlı uçbirim öykünücüsü\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura sürümü: %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Sekmelerde kapatma butonunu göster\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"Odak kaybını etkinleştir\"\n\n#~ msgid \"More\"\n#~ msgstr \"Daha fazla\"\n\n#~ msgid \"Set window title...\"\n#~ msgstr \"Pencere başlığını ayarla...\"\n\n#~ msgid \"Stop tab cycling at end tabs\"\n#~ msgstr \"Sekme döngüsünü son sekmelerde bitir\"\n"
  },
  {
    "path": "po/uk.po",
    "content": "# Ukrainian translation for sakura\n# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012\n# This file is distributed under the same license as the sakura package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2018-04-29 13:18+0000\\n\"\n\"Last-Translator: Andriy Nezhivy <adiynziy@gmail.com>\\n\"\n\"Language-Team: Ukrainian <uk@li.org>\\n\"\n\"Language: uk\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"Показати версію\"\n\nmsgid \"Set window title\"\nmsgstr \"Встановити заголовок вікна\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"Оберіть початкаовий шрифт терміналу\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"Оберіть початкову кількість вкладок терміналу\"\n\n#, fuzzy\nmsgid \"Set working directory\"\nmsgstr \"Встановити мерехтіння курсора\"\n\nmsgid \"Execute command\"\nmsgstr \"Виконати команду\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"Виконати команду (остання опція в командному рядку)\"\n\nmsgid \"Login shell\"\nmsgstr \"Оболонка входу\"\n\n#, fuzzy\nmsgid \"Set window icon\"\nmsgstr \"Встановити заголовок вікна\"\n\nmsgid \"Set columns number\"\nmsgstr \"Встановити кількість стовпців\"\n\nmsgid \"Set rows number\"\nmsgstr \"Встановити кількість рядків\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"Тримати вікно після виконання команди\"\n\nmsgid \"Maximize window\"\nmsgstr \"\"\n\n#, fuzzy\nmsgid \"Fullscreen mode\"\nmsgstr \"Повноекранний режим\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"Використати інший файл конфігурації\"\n\n#, fuzzy\nmsgid \"Select initial colorset\"\nmsgstr \"Обрати колір\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"Є запущені процеси.\\n\"\n\"Ви дійсно хочете закрити Sakura?\"\n\nmsgid \"Select font\"\nmsgstr \"Обрати шрифт\"\n\nmsgid \"Set tab name\"\nmsgstr \"Вказати ім'я вкладки\"\n\nmsgid \"_Cancel\"\nmsgstr \"\"\n\nmsgid \"_Apply\"\nmsgstr \"\"\n\nmsgid \"New text\"\nmsgstr \"Новий текст\"\n\n#, fuzzy\nmsgid \"Select colors\"\nmsgstr \"Обрати колір\"\n\n#, fuzzy\nmsgid \"_Select\"\nmsgstr \"Обрати шрифт\"\n\nmsgid \"Colorset\"\nmsgstr \"\"\n\nmsgid \"Color scheme\"\nmsgstr \"\"\n\n#, fuzzy\nmsgid \"Foreground color\"\nmsgstr \"Оберіть колір:\"\n\n#, fuzzy\nmsgid \"Background color\"\nmsgstr \"Оберіть колір тла:\"\n\n#, fuzzy\nmsgid \"Cursor color\"\nmsgstr \"Оберіть колір тла:\"\n\n#, fuzzy\nmsgid \"Opacity level (%)\"\nmsgstr \"Рівень прозорості (%):\"\n\n#, fuzzy\nmsgid \"Palette\"\nmsgstr \"Оберіть палітру\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"\"\n\nmsgid \"New window title\"\nmsgstr \"Новий заголовок вікна\"\n\n#, fuzzy\nmsgid \"Open mail\"\nmsgstr \"Відкрити посилання...\"\n\nmsgid \"Open link\"\nmsgstr \"Відкрити посилання...\"\n\nmsgid \"Copy link\"\nmsgstr \"Копіювати посилання...\"\n\nmsgid \"New tab\"\nmsgstr \"Нова вкладка\"\n\nmsgid \"Set tab name...\"\nmsgstr \"Встановити нове ім'я вкладки...\"\n\nmsgid \"Close tab\"\nmsgstr \"Закрити вкладку\"\n\nmsgid \"Full screen\"\nmsgstr \"Повноекранний режим\"\n\nmsgid \"Copy\"\nmsgstr \"Копіювати\"\n\nmsgid \"Paste\"\nmsgstr \"Вставити\"\n\nmsgid \"Options\"\nmsgstr \"Параметри\"\n\nmsgid \"Select font...\"\nmsgstr \"Обрати шрифт...\"\n\nmsgid \"Select colors...\"\nmsgstr \"Обрати кольори...\"\n\nmsgid \"Show tab bar\"\nmsgstr \"Показувати панель вкладок\"\n\nmsgid \"Always\"\nmsgstr \"Завжди\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"Ніколи\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"Вкладки знизу\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"Показувати скроллбар\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\n#, fuzzy\nmsgid \"Set urgent bell\"\nmsgstr \"Встановити звуковий сигнал\"\n\nmsgid \"Set audible bell\"\nmsgstr \"Встановити звуковий сигнал\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"Встановити мерехтіння курсора\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"\"\n\nmsgid \"Set cursor type\"\nmsgstr \"Оберіть тип курсора\"\n\nmsgid \"Block\"\nmsgstr \"Блок\"\n\nmsgid \"Underline\"\nmsgstr \"Підкреслення\"\n\nmsgid \"IBeam\"\nmsgstr \"IBeam\"\n\nmsgid \"Search\"\nmsgstr \"\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"Термінал %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"В цьому терміналі є запущені процеси.\\n\"\n\"\\n\"\n\"Ви хочете закрити його?\"\n\n#, fuzzy\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"Конфігурація була змінена іншим процесом. Переписати?\"\n\nmsgid \"Error message\"\nmsgstr \"Повідомлення про помилку\"\n\n#, fuzzy, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"Встановити мерехтіння курсора\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"Термінальний емулятор базований на vte\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"версія Sakura %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"Показувати кнопки закриття на вкладках\"\n"
  },
  {
    "path": "po/zh_CN.po",
    "content": "# Chinese/Simplified translation of sakura.\n# Copyright (C) 2006 THE sakura'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the sakura package.\n# yanghong <yanghong@ccoss.com.cn>, 2006.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: sakura 1.0.4\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2024-08-10 19:15+0200\\n\"\n\"PO-Revision-Date: 2019-08-12 17:06+0000\\n\"\n\"Last-Translator: David Gómez <david@pleyades.net>\\n\"\n\"Language-Team: Chinese/Simplified <i18n-translation@lists.linux.net.cn>\\n\"\n\"Language: zh\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Launchpad-Export-Date: 2020-05-06 05:44+0000\\n\"\n\"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\\n\"\n\nmsgid \"Print version number\"\nmsgstr \"显示版本号\"\n\nmsgid \"Set window title\"\nmsgstr \"设置窗口标题\"\n\nmsgid \"Select initial terminal font\"\nmsgstr \"选择初始终端字体\"\n\nmsgid \"Select initial number of tabs\"\nmsgstr \"选择初始标签数\"\n\nmsgid \"Set working directory\"\nmsgstr \"设置工作目录\"\n\nmsgid \"Execute command\"\nmsgstr \"执行命令\"\n\nmsgid \"Execute command (last option in the command line)\"\nmsgstr \"执行命令(命令行结束前执行)\"\n\nmsgid \"Login shell\"\nmsgstr \"登录 shell\"\n\nmsgid \"Set window icon\"\nmsgstr \"设置窗口图标\"\n\nmsgid \"Set columns number\"\nmsgstr \"设置列数\"\n\nmsgid \"Set rows number\"\nmsgstr \"设置行数\"\n\nmsgid \"Hold window after execute command\"\nmsgstr \"运行后保留窗口\"\n\nmsgid \"Maximize window\"\nmsgstr \"最大化窗口\"\n\nmsgid \"Fullscreen mode\"\nmsgstr \"全屏模式\"\n\nmsgid \"Use alternate configuration file\"\nmsgstr \"使用其他配置文件\"\n\nmsgid \"Select initial colorset\"\nmsgstr \"选择初始颜色设置\"\n\nmsgid \"\"\n\"There are running processes.\\n\"\n\"\\n\"\n\"Do you really want to close Sakura?\"\nmsgstr \"\"\n\"有进程正在运行。\\n\"\n\"\\n\"\n\"您真的要关闭 Sakura 吗？\"\n\nmsgid \"Select font\"\nmsgstr \"选择字体\"\n\nmsgid \"Set tab name\"\nmsgstr \"设置标签页名称\"\n\nmsgid \"_Cancel\"\nmsgstr \"取消\"\n\nmsgid \"_Apply\"\nmsgstr \"应用\"\n\nmsgid \"New text\"\nmsgstr \"新文本\"\n\nmsgid \"Select colors\"\nmsgstr \"选择颜色\"\n\nmsgid \"_Select\"\nmsgstr \"选择\"\n\nmsgid \"Colorset\"\nmsgstr \"色彩集\"\n\nmsgid \"Color scheme\"\nmsgstr \"颜色方案\"\n\nmsgid \"Foreground color\"\nmsgstr \"前景色\"\n\nmsgid \"Background color\"\nmsgstr \"背景色\"\n\nmsgid \"Cursor color\"\nmsgstr \"光标色\"\n\nmsgid \"Opacity level (%)\"\nmsgstr \"不透明度(%)\"\n\nmsgid \"Palette\"\nmsgstr \"调色板\"\n\nmsgid \"Use bright colors for bold text\"\nmsgstr \"为了粗体字使用鲜艳的色彩\"\n\nmsgid \"New window title\"\nmsgstr \"新窗口标题\"\n\nmsgid \"Open mail\"\nmsgstr \"打开邮件\"\n\nmsgid \"Open link\"\nmsgstr \"打开链接\"\n\nmsgid \"Copy link\"\nmsgstr \"复制链接\"\n\nmsgid \"New tab\"\nmsgstr \"新建标签\"\n\nmsgid \"Set tab name...\"\nmsgstr \"设置标签页名称...\"\n\nmsgid \"Close tab\"\nmsgstr \"关闭标签\"\n\nmsgid \"Full screen\"\nmsgstr \"全屏\"\n\nmsgid \"Copy\"\nmsgstr \"复制\"\n\nmsgid \"Paste\"\nmsgstr \"粘贴\"\n\nmsgid \"Options\"\nmsgstr \"选项\"\n\nmsgid \"Select font...\"\nmsgstr \"选择字体...\"\n\nmsgid \"Select colors...\"\nmsgstr \"选择颜色...\"\n\n# msgstr \"总是显示第一个标签页\"\nmsgid \"Show tab bar\"\nmsgstr \"\"\n\nmsgid \"Always\"\nmsgstr \"\"\n\nmsgid \"When there's more than one tab\"\nmsgstr \"\"\n\nmsgid \"Never\"\nmsgstr \"\"\n\nmsgid \"Tabs at bottom\"\nmsgstr \"标签页在底部\"\n\nmsgid \"New tab after current tab\"\nmsgstr \"\"\n\nmsgid \"Show scrollbar\"\nmsgstr \"显示滚动条\"\n\nmsgid \"Fewer questions at exit time\"\nmsgstr \"退出时的问题较少\"\n\nmsgid \"Automatically copy selected text\"\nmsgstr \"\"\n\nmsgid \"Set urgent bell\"\nmsgstr \"设定紧急铃\"\n\nmsgid \"Set audible bell\"\nmsgstr \"设定蜂鸣铃\"\n\nmsgid \"Set blinking cursor\"\nmsgstr \"设置闪烁光标\"\n\nmsgid \"Disable numbered tabswitch\"\nmsgstr \"禁用编号标签开关\"\n\nmsgid \"Set cursor type\"\nmsgstr \"设置光标类型\"\n\nmsgid \"Block\"\nmsgstr \"方块\"\n\nmsgid \"Underline\"\nmsgstr \"下划线\"\n\nmsgid \"IBeam\"\nmsgstr \"竖线\"\n\nmsgid \"Search\"\nmsgstr \"搜索\"\n\n#, c-format\nmsgid \"Terminal %d\"\nmsgstr \"终端 %d\"\n\nmsgid \"\"\n\"There is a running process in this terminal.\\n\"\n\"\\n\"\n\"Do you really want to close it?\"\nmsgstr \"\"\n\"终端中有进程正在执行。\\n\"\n\"\\n\"\n\"您确定要关闭它吗？\"\n\nmsgid \"Configuration has been modified by another process. Overwrite?\"\nmsgstr \"配置已被另一个进程修改。覆盖？\"\n\nmsgid \"Error message\"\nmsgstr \"错误消息\"\n\n#, c-format\nmsgid \"Cannot change working directory\\n\"\nmsgstr \"不能改变工作目录\\n\"\n\nmsgid \"- vte-based terminal emulator\"\nmsgstr \"- 基于 vte 的终端模拟器\"\n\n#, c-format\nmsgid \"sakura version is %s\\n\"\nmsgstr \"sakura 版本是 %s\\n\"\n\n#~ msgid \"Show close button on tabs\"\n#~ msgstr \"在标签上显示关闭按钮\"\n\n#~ msgid \"Enable focus fade\"\n#~ msgstr \"启动焦点淡化\"\n"
  },
  {
    "path": "sakura.desktop",
    "content": "[Desktop Entry]\nName=Sakura\nGenericName=Terminal\nGenericName[af]=Terminaal\nGenericName[ar]=طرفيّة\nGenericName[as]=টাৰ্মিনেল\nGenericName[be@latin]=Terminał\nGenericName[bg]=Терминал\nGenericName[bn]=টার্মিনাল\nGenericName[bn_IN]=টার্মিন্যাল\nGenericName[cs]=Terminál\nGenericName[el]=Τερματικό\nGenericName[eo]=Terminalo\nGenericName[eu]=Terminala\nGenericName[fi]=Pääteikkuna\nGenericName[ga]=Teirminéal\nGenericName[gu]=ટર્મિનલ\nGenericName[he]=מסוף\nGenericName[hi]=टर्मिनल\nGenericName[hne]=टर्मिनल\nGenericName[hu]=Terminál\nGenericName[is]=Skjáhermir\nGenericName[it]=Terminale\nGenericName[ja]=ターミナル\nGenericName[ka]=ტერმინალი\nGenericName[kk]=Терминал\nGenericName[ko]=터미널\nGenericName[ku]=Termînal\nGenericName[lt]=Terminalas\nGenericName[lv]=Terminālis\nGenericName[mai]=टर्मिनल\nGenericName[mk]=Терминал\nGenericName[ml]=ടെര്മിനല്\nGenericName[mr]=टर्मिनल\nGenericName[nds]=Konsool\nGenericName[or]=ଟର୍ମିନାଲ\nGenericName[pa]=ਟਰਮੀਨਲ\nGenericName[ru]=Терминал\nGenericName[si]=අග්රය\nGenericName[sk]=Terminál\nGenericName[sr]=Терминал\nGenericName[sr@ijekavian]=Терминал\nGenericName[ta]=முனையம்\nGenericName[tg]=Терминал\nGenericName[th]=เทอร์มินัล\nGenericName[tr]=Uçbirim\nGenericName[ug]=تېرمىنال\nGenericName[uk]=Термінал\nGenericName[uz@cyrillic]=Терминал\nGenericName[wa]=Terminå\nGenericName[zh_CN]=终端\nGenericName[zh_TW]=終端機\nComment=Use the command line\nComment[ru]=Использовать командную строку\nComment[am]=የትእዛዝ መስመሩን መጠቀሚያ\nComment[bg]=Използване на команден ред\nComment[ca]=Utilitza la línia d'ordres\nComment[cs]=Použít příkazový řádek\nComment[da]=Brug kommandolinjen\nComment[de]=Die Befehlszeile verwenden\nComment[el]=Χρήση της γραμμής εντολών\nComment[eo]=Uzi komandlinion\nComment[es]=Usar la línea de órdenes\nComment[et]=Käsurea kasutamine\nComment[eu]=Erabili komando-lerroa\nComment[fi]=Käytä komentoriviä\nComment[fr]=Utiliser la ligne de commande\nComment[gl]=Usar a liña de ordes\nComment[hi]=कमांड लाइन का प्रयोग करें\nComment[hr]=Koristiti naredbeni redak\nComment[hu]=Parancssor használata\nComment[id]=Gunakan baris perintah\nComment[it]=Usa la riga di comando\nComment[ja]=コマンドラインを利用する\nComment[ko]=명령줄 사용하기\nComment[ms]=Guna baris perintah\nComment[nb]=Bruk kommandolinjen\nComment[nl]=Opdrachtregel gebruiken\nComment[pl]=Umożliwia korzystanie z wiersza poleceń\nComment[pt]=Utilizar a linha de comandos\nComment[pt_BR]=Usar a linha de comando\nComment[ro]=Folosiți linia de comandă\nComment[rue]=Використати командний рядок\nComment[sl]=Uporabi ukazno vrstico\nComment[sr]=Користите командну линију\nComment[sv]=Använd kommandoraden\nComment[sw]=Tumia komand\nComment[tr]=Komut satırını kullan\nComment[uk]=Використати командну лінію\nComment[vi]=Sử dụng dòng lệnh\nComment[zh_CN]=使用命令行\nComment[zh_TW]=使用指令列\nTryExec=sakura\nExec=sakura\nIcon=terminal-tango\nType=Application\nCategories=GTK;Utility;TerminalEmulator;System;\nKeywords=terminal;\nStartupNotify=true\nX-Ubuntu-Gettext-Domain=sakura\n"
  },
  {
    "path": "sakura.pod",
    "content": "=encoding utf8\n\n=head1 NAME\n\nsakura - A simple but powerful libvte-based terminal emulator.\n\n=head1 SYNOPSIS\n\nsakura [options...]\n\n=head1 DESCRIPTION\n\nsakura is a terminal emulator based on GTK+ and VTE. It's a terminal emulator with few dependencies, so you don't need a full GNOME desktop installed to have a decent terminal emulator.\n\n=head1 HELP OPTIONS\n\n=over 8\n\n=item B<-?, --help>\n\nShow help options.\n\n=item B<--help-all>\n\nShow all help options\n\n=item B<--help-gtk>\n\nShow GTK+ Options\n\n=back\n\n=head1 APPLICATION OPTIONS\n\n=over 8\n\n=item B<-v, --version>\n\nPrint version number\n\n=item B<-f, --font>\n\nSelect initial terminal font\n\n=item B<-n, --ntabs>\n\nSelect initial number of tabs\n\n=item B<-x, --execute>\n\nExecute command\n\n=item B<-e, --xterm-execute>\n\nExecute command (compatible with xterm's -e option)\n\n=item B<-l, --login>\n\nLogin shell\n\n=item B<-c, --columns>\n\nSet columns number\n\n=item B<-r, --rows>\n\nSet rows number\n\n=item B<-h, --hold>\n\nHold window after execute command\n\n=item B<-d, --working-directory>\n\nSet working directory\n\n=item B<-m, --maximize>\n\nMaximize window\n\n=item B<-s, --fullscreen>\n\nFullscreen mode\n\n=item B<--display=DISPLAY>\n\nX display to use\n\n=item B<--config-file=FILENAME>\n\nUse alternate configuration file. Path is relative to the sakura config dir.\n(Example: ~/.config/sakura/FILENAME).\n\n=back\n\n=head1 GTK+ OPTIONS\n\n=over 8\n\n=item B<--class=CLASS>\n\nProgram class as used by the window manager\n\n=item B<--name=NAME>\n\nProgram name as used by the window manager\n\n=item B<--screen=SCREEN>\n\nX screen to use\n\n=item B<--sync>\n\nMake X calls synchronous\n\n=item B<--gtk-module=MODULES>\n\nLoad additional GTK+ modules\n\n=item B<--g-fatal-warnings>\n\nMake all warnings fatal\n\n=back\n\n=head1 CONFIGURATION\n\n=over 8\n\n=item show_tab_bar=[always | multiple | never]\n\nThis list of options is currently incomplete.\n\n=back\n\n=head1 KEYBINDINGS SUPPORT\n\nB<sakura> supports keyboard bindings. They are configurable by setting the following properties in your sakura config file (~/.config/sakura/sakura.conf).\n\n=head2 ACCELERATORS\n\nAccelerators can be set to any mask value from the GdkModifierType in gdktypes.h; see:\n\nhttp://gtk.php.net/manual/en/html/gdk/gdk.enum.modifiertype.html\n\nMask values can be combined by ORing them.\n\nFor example, to set the delete tab accelerator to Ctrl + Shift:\n\ndel_tab_accelerator=5\n\nbecause GDK_SHIFT_MASK has a value of 1 (1 << 0), and GDK_CONTROL_MASK has a value of 4 (1 << 2); ORing them together, you get 5.\n\nI realise that this configuration is not so friendly to non-programmers, but it is a start. :)\n\n=head2 KEYS\n\nFor example, to set the add tab key to 'T':\n\nadd_tab_key=T\n\nBefore sakura used keycodes instead of strings. They're still valid.\n\n\n=head2 DEFAULTS\n\n    Ctrl + Shift + T                 -> New tab\n    Ctrl + Shift + W                 -> Close current tab\n    Ctrl + Shift + C                 -> Copy selected text\n    Ctrl + Shift + V                 -> Paste selected text\n    Ctrl + Left cursor               -> Previous tab\n    Ctrl + Right cursor              -> Next tab\n    Ctrl + [1-9]                     -> Switch to tab N (1-9)\n    Ctrl + Shift + S                 -> Toggle scrollbar\n    Ctrl + Shift + Mouse left button -> Open link\n    F11                              -> Fullscreen\n    Shift + PageUp                   -> Move up through scrollback by page\n    Shift + PageDown                 -> Move down through scrollback by page\n    Ctrl + Shift + Up                -> Move up through scrollback by line\n    Ctrl + Shift + Down              -> Move down through scrollback by line\n\nYou can also increase and decrease the font size in the GTK+ standard way (not configurable):\n\n    Ctrl + '+'                       -> Increase font size\n    Ctrl + '-'                       -> Decrease font size\n\n=head1 BUGS\n\nB<sakura> is hosted on Launchpad. Bugs can be filed at:\n\nhttps://bugs.launchpad.net/sakura\n\n=head1 AUTHORS\n\nB<sakura> was written by David Gómez <david@pleyades.net>.\n\nThis manual page was written by Andrew Starr-Bochicchio <a.starr.b@gmail.com>.\n\nBoth are released under the GNU General Public License, version 2 or later.\n\n=cut\n"
  },
  {
    "path": "src/sakura.c",
    "content": "/*******************************************************************************\n *  Filename: sakura.c\n *  Description: VTE-based terminal emulator\n *\n *           Copyright (C) 2006-2021  David Gómez <david@pleyades.net>\n *           Copyright (C) 2008       Hong Jen Yee (PCMan) <pcman.tw@gmail.com>\n *\n *  This program is free software; you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License version 2 as\n *  published by the Free Software Foundation\n *\n *  This program is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with this program; if not, write to the Free Software\n *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n *\n *****************************************************************************/\n\n#include <stdio.h>\n#include <stdbool.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdarg.h>\n#include <unistd.h>\n#include <wchar.h>\n#include <math.h>\n#include <sys/types.h>\n#include <sys/wait.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <locale.h>\n#include <libintl.h>\n#include <glib.h>\n#include <glib/gstdio.h>\n#include <gio/gdesktopappinfo.h>\n#include <gdk/gdk.h>\n#include <gdk/gdkx.h>\n#include <gtk/gtk.h>\n#include <pango/pango.h>\n#include <vte/vte.h>\n\n#define _(String) gettext(String)\n#define N_(String) (String)\n#define GETTEXT_PACKAGE \"sakura\"\n\n#define SAY(format,...) do {\\\n\tif (strcmp(\"Debug\", BUILDTYPE)==0) {\\\n\t    fprintf(stderr, \"[%d] \", getpid());\\\n\t    fprintf(stderr, \"[%s] \", __FUNCTION__);\\\n\t    if (format) fprintf(stderr, format, ##__VA_ARGS__);\\\n\t    fputc('\\n', stderr);\\\n\t\tfflush(stderr);\\\n\t}\\\n} while (0)\n\n#define PALETTE_SIZE 16\n\n/* 16 color palettes in GdkRGBA format (red, green, blue, alpha) */\n\nconst GdkRGBA gruvbox_palette[PALETTE_SIZE] = {\n\t{0.156863, 0.156863, 0.156863, 1.000000},\n\t{0.800000, 0.141176, 0.113725, 1.000000},\n\t{0.596078, 0.592157, 0.101961, 1.000000},\n\t{0.843137, 0.600000, 0.129412, 1.000000},\n\t{0.270588, 0.521569, 0.533333, 1.000000},\n\t{0.694118, 0.384314, 0.525490, 1.000000},\n\t{0.407843, 0.615686, 0.415686, 1.000000},\n\t{0.658824, 0.600000, 0.517647, 1.000000},\n\t{0.572549, 0.513725, 0.454902, 1.000000},\n\t{0.984314, 0.286275, 0.203922, 1.000000},\n\t{0.721569, 0.733333, 0.149020, 1.000000},\n\t{0.980392, 0.741176, 0.184314, 1.000000},\n\t{0.513725, 0.647059, 0.596078, 1.000000},\n\t{0.827451, 0.525490, 0.607843, 1.000000},\n\t{0.556863, 0.752941, 0.486275, 1.000000},\n\t{0.921569, 0.858824, 0.698039, 1.000000}\n};\n\nconst GdkRGBA tango_palette[PALETTE_SIZE] = {\n\t{0,        0,        0,        1},\n\t{0.8,      0,        0,        1},\n\t{0.305882, 0.603922, 0.023529, 1},\n\t{0.768627, 0.627451, 0,        1},\n\t{0.203922, 0.396078, 0.643137, 1},\n\t{0.458824, 0.313725, 0.482353, 1},\n\t{0.0235294,0.596078, 0.603922, 1},\n\t{0.827451, 0.843137, 0.811765, 1},\n\t{0.333333, 0.341176, 0.32549,  1},\n\t{0.937255, 0.160784, 0.160784, 1},\n\t{0.541176, 0.886275, 0.203922, 1},\n\t{0.988235, 0.913725, 0.309804, 1},\n\t{0.447059, 0.623529, 0.811765, 1},\n\t{0.678431, 0.498039, 0.658824, 1},\n\t{0.203922, 0.886275, 0.886275, 1},\n\t{0.933333, 0.933333, 0.92549,  1}\n};\n\nconst GdkRGBA linux_palette[PALETTE_SIZE] = {\n\t{0,        0,        0,        1},\n\t{0.666667, 0,        0,        1},\n\t{0,        0.666667, 0,        1},\n\t{0.666667, 0.333333, 0,        1},\n\t{0,        0,        0.666667, 1},\n\t{0.666667, 0,        0.666667, 1},\n\t{0,        0.666667, 0.666667, 1},\n\t{0.666667, 0.666667, 0.666667, 1},\n\t{0.333333, 0.333333, 0.333333, 1},\n\t{1,        0.333333, 0.333333, 1},\n\t{0.333333, 1,        0.333333, 1},\n\t{1,        1,        0.333333, 1},\n\t{0.333333, 0.333333, 1,        1},\n\t{1,        0.333333, 1,        1},\n\t{0.333333, 1,        1,        1},\n\t{1,        1,        1,        1}\n};\n\nconst GdkRGBA solarized_palette[PALETTE_SIZE] = {\n\t{0.027451, 0.211765, 0.258824, 1}, // 0 base02\n\t{0.862745, 0.196078, 0.184314, 1}, // 1 red\n\t{0.521569, 0.600000, 0.000000, 1}, // 2 green\n\t{0.709804, 0.537255, 0.000000, 1}, // 3 yellow\n\t{0.149020, 0.545098, 0.823529, 1}, // 4 blue\n\t{0.827451, 0.211765, 0.509804, 1}, // 5 magenta\n\t{0.164706, 0.631373, 0.596078, 1}, // 6 cyan\n\t{0.933333, 0.909804, 0.835294, 1}, // 7 base2\n\t{0.000000, 0.168627, 0.211765, 1}, // 8 base03 (bg)\n\t{0.796078, 0.294118, 0.086275, 1}, // 9 orange\n\t{0.345098, 0.431373, 0.458824, 1}, // 10 base01\n\t{0.396078, 0.482353, 0.513725, 1}, // 11 base00\n\t{0.513725, 0.580392, 0.588235, 1}, // 12 base0 (fg)\n\t{0.423529, 0.443137, 0.768627, 1}, // 13 violet\n\t{0.576471, 0.631373, 0.631373, 1}, // 14 base1\n\t{0.992157, 0.964706, 0.890196, 1}  // 15 base3\n};\n\nconst GdkRGBA nord_palette[PALETTE_SIZE] = {\n\t{0.0,        0.0,        0.0234375,  1.0},\n\t{0.74609375, 0.37890625, 0.4140625,  1.0},\n\t{0.63671875, 0.7421875,  0.546875,   1.0},\n\t{0.91796875, 0.79296875, 0.54296875, 1.0},\n\t{0.50390625, 0.62890625, 0.75390625, 1.0},\n\t{0.703125,   0.5546875,  0.67578125, 1.0},\n\t{0.53125,    0.75,       0.8125,     1.0},\n\t{0.89453125, 0.91015625, 0.9375,     1.0},\n\t{0.296875,   0.3359375,  0.4140625,  1.0},\n\t{0.74609375, 0.37890625, 0.4140625,  1.0},\n\t{0.63671875, 0.7421875,  0.546875,   1.0},\n\t{0.91796875, 0.79296875, 0.54296875, 1.0},\n\t{0.50390625, 0.62890625, 0.75390625, 1.0},\n\t{0.703125,   0.5546875,  0.67578125, 1.0},\n\t{0.55859375, 0.734375,   0.73046875, 1.0},\n\t{0.921875,   0.93359375, 0.953125,   1.0}\n};\n\n\nconst GdkRGBA xterm_palette[PALETTE_SIZE] = {\n\t{0,        0,        0,        1},\n\t{0.803922, 0,        0,        1},\n\t{0,        0.803922, 0,        1},\n\t{0.803922, 0.803922, 0,        1},\n\t{0.117647, 0.564706, 1,        1},\n\t{0.803922, 0,        0.803922, 1},\n\t{0,        0.803922, 0.803922, 1},\n\t{0.898039, 0.898039, 0.898039, 1},\n\t{0.298039, 0.298039, 0.298039, 1},\n\t{1,        0,        0,        1},\n\t{0,        1,        0,        1},\n\t{1,        1,        0,        1},\n\t{0.27451,  0.509804, 0.705882, 1},\n\t{1,        0,        1,        1},\n\t{0,        1,        1,        1},\n\t{1,        1,        1,        1}\n};\n\nconst GdkRGBA rxvt_palette[PALETTE_SIZE] = {\n\t{0,        0,        0,        1},\n\t{0.803921, 0,        0,        1},\n\t{0,        0.803921, 0,        1},\n\t{0.803921, 0.803921, 0,        1},\n\t{0,        0,        0.803921, 1},\n\t{0.803921, 0,        0.803921, 1},\n\t{0,        0.803921, 0.803921, 1},\n\t{0.980392, 0.921568, 0.843137, 1},\n\t{0.250980, 0.250980, 0.250980, 1},\n\t{1,        0,        0,        1},\n\t{0,        1,        0,        1},\n\t{1,        1,        0,        1},\n\t{0,        0,        1,        1},\n\t{1,        0,        1,        1},\n\t{0,        1,        1,        1},\n\t{1,        1,        1,        1}\n};\n\nconst GdkRGBA hybrid_palette[PALETTE_SIZE] = {\n\t{0.1568627450980392  , 0.16470588235294117 , 0.1803921568627451  , 1} ,\n\t{0.6470588235294118  , 0.25882352941176473 , 0.25882352941176473 , 1} ,\n\t{0.5490196078431373  , 0.5803921568627451  , 0.25098039215686274 , 1} ,\n\t{0.8705882352941177  , 0.5764705882352941  , 0.37254901960784315 , 1} ,\n\t{0.37254901960784315 , 0.5058823529411764  , 0.615686274509804   , 1} ,\n\t{0.5215686274509804  , 0.403921568627451   , 0.5607843137254902  , 1} ,\n\t{0.3686274509803922  , 0.5529411764705883  , 0.5294117647058824  , 1} ,\n\t{0.4392156862745098  , 0.47058823529411764 , 0.5019607843137255  , 1} ,\n\t{0.21568627450980393 , 0.23137254901960785 , 0.2549019607843137  , 1} ,\n\t{0.8                 , 0.4                 , 0.4                 , 1} ,\n\t{0.7098039215686275  , 0.7411764705882353  , 0.40784313725490196 , 1} ,\n\t{0.9411764705882353  , 0.7764705882352941  , 0.4549019607843137  , 1} ,\n\t{0.5058823529411764  , 0.6352941176470588  , 0.7450980392156863  , 1} ,\n\t{0.6980392156862745  , 0.5803921568627451  , 0.7333333333333333  , 1} ,\n\t{0.5411764705882353  , 0.7450980392156863  , 0.7176470588235294  , 1} ,\n\t{0.7725490196078432  , 0.7843137254901961  , 0.7764705882352941  , 1}\n};\n\nconst char *palettes_names[]= {\"Solarized\", \"Tango\", \"Gruvbox\", \"Nord\", \"Xterm\", \"Linux\", \"Rxvt\", \"Hybrid\", NULL};\nconst GdkRGBA *palettes[] = {solarized_palette, tango_palette, gruvbox_palette, nord_palette, xterm_palette, linux_palette, rxvt_palette, hybrid_palette, NULL};\n#define DEFAULT_PALETTE 1 /* Tango palette */\n\n/* Color schemes (fg&bg) for sakura. Each colorset can use a different scheme */\nstruct scheme {\n\tgchar *name;\n\tGdkRGBA bg;\n\tGdkRGBA fg;\n};\n\n#define NUM_SCHEMES 5\n#define DEFAULT_SCHEME 1\nstruct scheme predefined_schemes[NUM_SCHEMES] = {\n\t{\"Custom\", {0, 0, 0, 1}, {1, 1, 1, 1}}, /* Custom values are ignored, we use the ones chosen by the user */\n\t{\"White on black\", {0, 0, 0, 1}, {1, 1, 1, 1}},\n\t{\"Green on black\", {0, 0, 0, 1}, {0.4, 1, 0, 1}},\n\t{\"Solarized dark\", {0.000000, 0.168627, 0.211765, 1}, {0.513725, 0.580392, 0.588235, 1}},\n\t{\"Solarized light\", {0.992157, 0.964706, 0.890196, 1}, {0.396078, 0.482353, 0.513725, 1}}\n};\n\n/* CSS definitions. Global CSS is empty, just drop here you CSS to personalize widgets */\n#define SAKURA_CSS \"\"\n\n#define FADE_WINDOW_CSS \"\\\nwindow#fade_window {\\\n\tbackground-color: black;\\\n} \"\n\n#define FADE_WINDOW_OPACITY 0.5\n\n#define NUM_COLORSETS 6\n#define PCRE2_CODE_UNIT_WIDTH 8\n#include <pcre2.h>\n\n\n\n/* Tab bar visibility */\ntypedef enum {\n\tSHOW_TAB_BAR_ALWAYS,\n\tSHOW_TAB_BAR_MULTIPLE,\n\tSHOW_TAB_BAR_NEVER\n} ShowTabBar;\n\n\n/* Global sakura data */\nstatic struct {\n\tGtkWidget *main_window;\n\tGtkWidget *notebook;\n\tGtkWidget *menu;\n\tGtkWidget *fade_window;  /* Window used for fading effect */\n\tPangoFontDescription *font;\n\tgdouble line_height; /* Font line height */\n\tGdkRGBA forecolors[NUM_COLORSETS];\n\tGdkRGBA backcolors[NUM_COLORSETS];\n\tGdkRGBA curscolors[NUM_COLORSETS];\n\tguint schemes[NUM_COLORSETS];  /* Selected color scheme for each colorset */\n\tconst GdkRGBA *palette;\n\tguint palette_idx;\n\tgint last_colorset;\n\tchar *current_match;\n\tguint width;\n\tguint height;\n\tglong columns;\n\tglong rows;\n\tgint scroll_lines;\n\tVteCursorShape cursor_type;\n\tShowTabBar show_tab_bar;         /* Show the tab bar: always, multiple, never */\n\tbool show_scrollbar;\n\tbool show_closebutton;\n\tbool new_tab_after_current;\n\tbool tabs_on_bottom;\n\tbool less_questions;\n        bool copy_on_select;\n\tbool urgent_bell;\n\tbool audible_bell;\n\tbool blinking_cursor;\n\tbool fullscreen;\n\tbool config_modified;            /* Configuration has been modified */\n\tbool externally_modified;        /* Configuration file has been modified by another process */\n\tbool resized;\n\tbool disable_numbered_tabswitch; /* For disabling direct tabswitching key */\n\tbool use_fading;                 /* Fade the window when the focus change */\n\tbool scrollable_tabs;\n\tbool bold_is_bright;             /* Show bold characters as bright */\n\tbool dont_save;                  /* Don't save config file */\n\tbool first_run;                  /* To only execute commands first time sakura is launched */\n\tGtkWidget *item_copy_link;       /* We include here only the items which need to be hidden */\n\tGtkWidget *item_open_link;\n\tGtkWidget *item_open_mail;\n\tGtkWidget *open_link_separator;\n\tGKeyFile *cfg;\n\tchar *configfile;\n\tchar *icon;\n\tchar *shell_path;\n\tchar *main_title;\t\t/* Main window static title from user input */\n\tchar *term;\n\tgchar *tab_default_title;\n\tgint add_tab_accelerator;\n\tgint del_tab_accelerator;\n\tgint switch_tab_accelerator;\n\tgint move_tab_accelerator;\n\tgint copy_accelerator;\n\tgint scrollbar_accelerator;\n\tgint open_url_accelerator;\n\tgint font_size_accelerator;\n\tgint set_tab_name_accelerator;\n\tgint search_accelerator;\n\tgint set_colorset_accelerator;\n\tgint new_window_accelerator;\n\tgint add_tab_key;\n\tgint del_tab_key;\n\tgint prev_tab_key;\n\tgint next_tab_key;\n\tgint copy_key;\n\tgint paste_key;\n\tgint scrollbar_key;\n\tgint set_tab_name_key;\n\tgint search_key;\n\tgint fullscreen_key;\n\tgint increase_font_size_key;\n\tgint decrease_font_size_key;\n\tgint set_colorset_keys[NUM_COLORSETS];\n\tgint paste_button;\n\tgint menu_button;\n\tgint new_window_key;\n\tint orig_argc; /* Used for new windows */\n\tchar** orig_argv; /* Used for new windows */\n\tVteRegex *http_vteregexp, *mail_vteregexp;\n\tchar *word_chars;                /* Exceptions for word selection */\n\tchar *argv[3];\n} sakura;\n\n/* Data associated to each sakura tab */\nstruct sakura_tab {\n\tGtkWidget *hbox;\n\tGtkWidget *label;\n\tGtkWidget *vte;      /* Reference to VTE terminal */\n\tGtkWidget *scrollbar;\n\tGtkBorder padding;   /* inner-property data */\n\tbool label_set_byuser;\n\tint colorset;\n\tGPid pid;           /* pid of the forked process */\n\tgulong exit_handler_id;\n};\n\n\n#define ICON_FILE \"terminal-tango.svg\"\n#define SCROLL_LINES 4096\n#define DEFAULT_SCROLL_LINES 4096\n#define HTTP_REGEXP \"(ftp|http)s?://[^ \\t\\n\\b]+[^.,!? \\t\\n\\b()<>{}«»„“”‚‘’\\\\[\\\\]\\'\\\"]\"\n#define MAIL_REGEXP \"[^ \\t\\n\\b()<>{}«»„“”‚‘’\\\\[\\\\]\\'\\\"][^ \\t\\n\\b]*@([^ \\t\\n\\b()<>{}«»„“”‚‘’\\\\[\\\\]\\'\\\"]+\\\\.)+([a-zA-Z]{2,})\"\n#define DEFAULT_CONFIGFILE \"sakura.conf\"\n#define DEFAULT_COLUMNS 80\n#define DEFAULT_ROWS 24\n#define DEFAULT_MIN_WIDTH_CHARS 20\n#define DEFAULT_MIN_HEIGHT_CHARS 1\n#define DEFAULT_FONT \"Ubuntu Mono,monospace 13\"\n#define DEFAULT_LINE_HEIGHT 1.0\n#define FONT_MINIMAL_SIZE (PANGO_SCALE*6)\n#define DEFAULT_WORD_CHARS \"-,./?%&#_~:\"\n#define TAB_MAX_SIZE 40\n#define TAB_MIN_SIZE 6\n#define FORWARD 1\n#define BACKWARDS 2\n#define DEFAULT_ADD_TAB_ACCELERATOR  (GDK_CONTROL_MASK|GDK_SHIFT_MASK)\n#define DEFAULT_DEL_TAB_ACCELERATOR  (GDK_CONTROL_MASK|GDK_SHIFT_MASK)\n#define DEFAULT_SWITCH_TAB_ACCELERATOR  (GDK_MOD1_MASK)\n#define DEFAULT_MOVE_TAB_ACCELERATOR (GDK_MOD1_MASK|GDK_SHIFT_MASK)\n#define DEFAULT_COPY_ACCELERATOR  (GDK_CONTROL_MASK|GDK_SHIFT_MASK)\n#define DEFAULT_SCROLLBAR_ACCELERATOR  (GDK_CONTROL_MASK|GDK_SHIFT_MASK)\n#define DEFAULT_OPEN_URL_ACCELERATOR (GDK_CONTROL_MASK|GDK_SHIFT_MASK)\n#define DEFAULT_FONT_SIZE_ACCELERATOR (GDK_CONTROL_MASK)\n#define DEFAULT_SET_TAB_NAME_ACCELERATOR (GDK_CONTROL_MASK|GDK_SHIFT_MASK)\n#define DEFAULT_SEARCH_ACCELERATOR (GDK_CONTROL_MASK|GDK_SHIFT_MASK)\n#define DEFAULT_SELECT_COLORSET_ACCELERATOR (GDK_CONTROL_MASK|GDK_SHIFT_MASK)\n#define DEFAULT_NEW_WINDOW_ACCELERATOR (GDK_CONTROL_MASK|GDK_SHIFT_MASK)\n#define DEFAULT_ADD_TAB_KEY  GDK_KEY_T\n#define DEFAULT_DEL_TAB_KEY  GDK_KEY_W\n#define DEFAULT_PREV_TAB_KEY  GDK_KEY_Left\n#define DEFAULT_NEXT_TAB_KEY  GDK_KEY_Right\n#define DEFAULT_COPY_KEY  GDK_KEY_C\n#define DEFAULT_PASTE_KEY  GDK_KEY_V\n#define DEFAULT_SCROLLBAR_KEY  GDK_KEY_S\n#define DEFAULT_SET_TAB_NAME_KEY  GDK_KEY_N\n#define DEFAULT_SEARCH_KEY  GDK_KEY_F\n#define DEFAULT_FULLSCREEN_KEY  GDK_KEY_F11\n#define DEFAULT_INCREASE_FONT_SIZE_KEY GDK_KEY_plus\n#define DEFAULT_DECREASE_FONT_SIZE_KEY GDK_KEY_minus\n#define DEFAULT_NEW_WINDOW_KEY GDK_KEY_O\n#define DEFAULT_SCROLLABLE_TABS TRUE\n#define DEFAULT_PASTE_BUTTON 2\n#define DEFAULT_MENU_BUTTON 3\n\n/* make this an array instead of #defines to get a compile time\n * error instead of a runtime if NUM_COLORSETS changes */\nstatic int cs_keys[NUM_COLORSETS] =\n\t\t{GDK_KEY_F1, GDK_KEY_F2, GDK_KEY_F3, GDK_KEY_F4, GDK_KEY_F5, GDK_KEY_F6};\n\n#define ERROR_BUFFER_LENGTH 256\nconst char cfg_group[] = \"sakura\";\n\n/* Get a set sakura tab data from/to our GObject (notebook) */\nstatic GQuark term_data_id = 0;\n#define  sakura_get_sktab( sakura, page_idx )  \\\n    (struct sakura_tab*)g_object_get_qdata(  \\\n            G_OBJECT( gtk_notebook_get_nth_page( (GtkNotebook*)sakura.notebook, page_idx ) ), term_data_id);\n\n#define  sakura_set_sktab( sakura, page_idx, sk_tab )  \\\n    g_object_set_qdata_full( \\\n            G_OBJECT( gtk_notebook_get_nth_page( (GtkNotebook*)sakura.notebook, page_idx) ), \\\n            term_data_id, sk_tab, (GDestroyNotify)g_free);\n\n/* Configuration macros */\n#define  sakura_set_config_integer(key, value) do {\\\n\tg_key_file_set_integer(sakura.cfg, cfg_group, key, value);\\\n\tsakura.config_modified=TRUE;\\\n\t} while(0);\n\n#define  sakura_set_config_string(key, value) do {\\\n\tg_key_file_set_value(sakura.cfg, cfg_group, key, value);\\\n\tsakura.config_modified=TRUE;\\\n\t} while(0);\n\n#define  sakura_set_config_boolean(key, value) do {\\\n\tg_key_file_set_boolean(sakura.cfg, cfg_group, key, value);\\\n\tsakura.config_modified=TRUE;\\\n\t} while(0);\n\n#define  sakura_set_config_double(key, value) do {\\\n\tg_key_file_set_double(sakura.cfg, cfg_group, key, value);\\\n\tsakura.config_modified=TRUE;\\\n\t} while(0);\n\n\n/* Spawn callback */\nvoid sakura_spawm_callback (VteTerminal *, GPid, GError, gpointer);\n/* VTE callbacks */\nstatic gboolean sakura_term_buttonpressed_cb (GtkWidget *, GdkEventButton *, gpointer);\nstatic gboolean sakura_term_buttonreleased_cb (GtkWidget *, GdkEventButton *, gpointer);\nstatic void     sakura_beep_cb (GtkWidget *, void *);\nstatic void     sakura_increase_font_cb (GtkWidget *, void *);\nstatic void     sakura_decrease_font_cb (GtkWidget *, void *);\nstatic void     sakura_child_exited_cb (GtkWidget *, void *);\nstatic void     sakura_eof_cb (GtkWidget *, void *);\nstatic void     sakura_title_changed_cb (GtkWidget *, void *);\nstatic gboolean sakura_delete_event_cb (GtkWidget *, void *);\nstatic void     sakura_destroy_window_cb (GtkWidget *, void *);\n/* Main window callbacks */\nstatic gboolean sakura_key_press_cb (GtkWidget *, GdkEventKey *, gpointer);\nstatic gboolean sakura_resized_window_cb (GtkWidget *, GdkEventConfigure *, void *);\nstatic gboolean sakura_focus_in_cb (GtkWidget *, GdkEvent *, void *);\nstatic gboolean sakura_focus_out_cb (GtkWidget *, GdkEvent *, void *);\nstatic void     sakura_conf_changed_cb (GtkWidget *, void *);\nstatic void     sakura_show_event_cb (GtkWidget *, gpointer);\n/* Notebook, notebook labels and notebook buttons callbacks */\nstatic void     sakura_switch_page_cb (GtkWidget *, GtkWidget *, guint, void *);\nstatic void     sakura_page_removed_cb (GtkWidget *, void *);\nstatic gboolean sakura_notebook_scroll_cb (GtkWidget *, GdkEventScroll *);\nstatic gboolean sakura_label_clicked_cb (GtkWidget *, GdkEventButton *, void *);\nstatic gboolean sakura_notebook_focus_cb (GtkWindow *, GdkEvent *, void *);\nstatic void     sakura_closebutton_clicked_cb (GtkWidget *, void *);\n/* Menuitem callbacks */\nstatic void     sakura_font_dialog_cb (GtkWidget *, void *);\nstatic void     sakura_set_name_dialog_cb (GtkWidget *, void *);\nstatic void     sakura_color_dialog_cb (GtkWidget *, void *);\n//static void     sakura_set_title_dialog (GtkWidget *, void *);\nstatic void     sakura_new_tab_cb (GtkWidget *, void *);\nstatic void     sakura_close_tab_cb (GtkWidget *, void *);\nstatic void     sakura_fullscreen_cb (GtkWidget *, void *);\nstatic void     sakura_open_url_cb (GtkWidget *, void *);\nstatic void     sakura_open_mail_cb (GtkWidget *, void *);\nstatic void     sakura_copy_url_cb (GtkWidget *, void *);\nstatic void     sakura_copy_cb (GtkWidget *, void *);\nstatic void     sakura_paste_cb (GtkWidget *, void *);\nstatic void     sakura_show_tab_bar_cb (GtkWidget *, void *);\nstatic void     sakura_tabs_on_bottom_cb (GtkWidget *, void *);\nstatic void     sakura_less_questions_cb (GtkWidget *, void *);\nstatic void     sakura_copy_on_select_cb (GtkWidget *, void *);\nstatic void     sakura_new_tab_after_current_cb (GtkWidget *, void *);\nstatic void     sakura_show_scrollbar_cb (GtkWidget *, void *);\nstatic void     sakura_disable_numbered_tabswitch_cb (GtkWidget *, void *);\n//static void     sakura_use_fading_cb (GtkWidget *, void *);\nstatic void     sakura_setname_entry_changed_cb (GtkWidget *, void *);\nstatic void     sakura_set_cursor_cb (GtkWidget *, void *);\nstatic void     sakura_blinking_cursor_cb (GtkWidget *, void *);\nstatic void     sakura_audible_bell_cb (GtkWidget *, void *);\nstatic void     sakura_urgent_bell_cb (GtkWidget *, void *);\n\n/* Misc */\nstatic void     sakura_error (const char *, ...);\nstatic void     sakura_build_command (int *, char ***);\nstatic char *   sakura_get_term_cwd (struct sakura_tab *);\nstatic char *   sakura_get_term_cwd_osc7 (struct sakura_tab *);\nstatic guint    sakura_tokeycode (guint key);\nstatic void     sakura_set_keybind (const gchar *, guint);\nstatic guint    sakura_get_keybind (const gchar *);\nstatic void     sakura_sanitize_working_directory (void);\n\n/* Functions */\nstatic void     sakura_init ();\nstatic void     sakura_init_popup ();\nstatic void     sakura_add_tab ();\nstatic void     sakura_del_tab (gint);\nstatic void     sakura_close_tab (gint); /* Save config, del tab and destroy sakura */\nstatic void     sakura_destroy ();\nstatic void     sakura_move_tab (gint);\nstatic gint     sakura_find_tab (VteTerminal *);\nstatic void     sakura_set_font ();\nstatic void     sakura_set_tab_label_text (const gchar *, gint);\nstatic void     sakura_set_size (void);\nstatic void     sakura_config_done ();\nstatic void     sakura_set_colorset (int);\nstatic void     sakura_set_colors (void);\nstatic void     sakura_search_dialog (void);\nstatic void     sakura_search (const char *, bool);\nstatic void     sakura_copy (void);\nstatic void     sakura_paste (void);\nstatic void     sakura_paste_primary (void);\nstatic void     sakura_show_scrollbar (void);\nstatic void     sakura_new_window (void);\n\n\n/* Globals for command line parameters */\nstatic const char *option_font;\nstatic const char *option_workdir;\nstatic const char *option_execute;\nstatic const char *option_title;\nstatic gchar **option_xterm_args;\nstatic gboolean option_xterm_execute=FALSE;\nstatic gboolean option_version=FALSE;\nstatic gint option_ntabs=1;\nstatic gint option_login = FALSE;\nstatic const char *option_icon;\nstatic int option_rows, option_columns;\nstatic gboolean option_hold=FALSE;\nstatic char *option_config_file;\nstatic gboolean option_fullscreen;\nstatic gboolean option_maximize;\nstatic gint option_colorset;\n\n\nstatic GOptionEntry entries[] = {\n\t{ \"version\", 'v', 0, G_OPTION_ARG_NONE, &option_version, N_(\"Print version number\"), NULL },\n\t{ \"title\", 't', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &option_title, N_(\"Set window title\"), NULL},\n\t{ \"font\", 'f', 0, G_OPTION_ARG_STRING, &option_font, N_(\"Select initial terminal font\"), NULL },\n\t{ \"ntabs\", 'n', 0, G_OPTION_ARG_INT, &option_ntabs, N_(\"Select initial number of tabs\"), NULL },\n\t{ \"working-directory\", 'd', 0, G_OPTION_ARG_STRING, &option_workdir, N_(\"Set working directory\"), NULL },\n\t{ \"execute\", 'x', 0, G_OPTION_ARG_STRING, &option_execute, N_(\"Execute command\"), NULL },\n\t{ \"xterm-execute\", 'e', 0, G_OPTION_ARG_NONE, &option_xterm_execute, N_(\"Execute command (last option in the command line)\"), NULL },\n\t{ G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &option_xterm_args, NULL, NULL },\n\t{ \"login\", 'l', 0, G_OPTION_ARG_NONE, &option_login, N_(\"Login shell\"), NULL },\n\t{ \"icon\", 'i', 0, G_OPTION_ARG_STRING, &option_icon, N_(\"Set window icon\"), NULL },\n\t{ \"columns\", 'c', 0, G_OPTION_ARG_INT, &option_columns, N_(\"Set columns number\"), NULL },\n\t{ \"rows\", 'r', 0, G_OPTION_ARG_INT, &option_rows, N_(\"Set rows number\"), NULL },\n\t{ \"hold\", 'h', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &option_hold, N_(\"Hold window after execute command\"), NULL },\n\t{ \"maximize\", 'm', 0, G_OPTION_ARG_NONE, &option_maximize, N_(\"Maximize window\"), NULL },\n\t{ \"fullscreen\", 's', 0, G_OPTION_ARG_NONE, &option_fullscreen, N_(\"Fullscreen mode\"), NULL },\n\t{ \"config-file\", 0, 0, G_OPTION_ARG_FILENAME, &option_config_file, N_(\"Use alternate configuration file\"), NULL },\n\t{ \"colorset\", 0, 0, G_OPTION_ARG_INT, &option_colorset, N_(\"Select initial colorset\"), NULL },\n\t{ NULL }\n};\n\n\n/*************************/\n/* Main window callbacks */\n/*************************/\n\nstatic gboolean\nsakura_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data)\n{\n\tgint page, npages;\n\tguint topage = 0;\n\n\tif (event->type != GDK_KEY_PRESS) return FALSE;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tnpages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\n\t/* Use keycodes instead of keyvals. With keyvals, key bindings work only in US/ISO8859-1 and similar locales */\n\tguint keycode = event->hardware_keycode;\n\n\t/* Get the GDK accel mask to compare with our accelerators */\n\tGdkModifierType accel_mask = gtk_accelerator_get_default_mod_mask();\n\n\t/* Add/delete tab keybinding pressed */\n\tif ((event->state & accel_mask) == sakura.add_tab_accelerator && keycode == sakura_tokeycode(sakura.add_tab_key)) {\n\t\tsakura_add_tab();\n\t\treturn TRUE;\n\t} else if ((event->state & accel_mask) == sakura.del_tab_accelerator && keycode == sakura_tokeycode(sakura.del_tab_key)) {\n\t\t/* Delete current tab */\n\t\tsakura_close_tab(page);\n\t\treturn TRUE;\n\t}\n\n\t/* New window keybinding pressed */\n\tif ( (event->state & sakura.new_window_accelerator) == sakura.new_window_accelerator &&\n\t\t\tkeycode == sakura_tokeycode(sakura.new_window_key)) {\n\t\tsakura_new_window();\n\t\treturn TRUE;\n\t}\n\n\t/* Switch tab keybinding pressed (numbers or next/prev) */\n\t//if ((event->state & accel_mask) == sakura.switch_tab_accelerator) {\n\t /* If we use accel_mask, GDK_MOD4_MASK (windows key) it's not detected... */\n        if ((event->state & sakura.switch_tab_accelerator) == sakura.switch_tab_accelerator) {\n\n\t\t/* Just propagate the event if there is only one tab */\n\t\tif (npages >= 2) {\n\t\t\tif ((keycode >= sakura_tokeycode(GDK_KEY_1)) && (keycode <= sakura_tokeycode( GDK_KEY_9))) {\n\n\t\t\t\t/* User has explicitly disabled this branch, make sure to propagate the event */\n\t\t\t\tif (sakura.disable_numbered_tabswitch) return FALSE;\n\n\t\t\t\tif      (sakura_tokeycode(GDK_KEY_1) == keycode) topage = 0;\n\t\t\t\telse if (sakura_tokeycode(GDK_KEY_2) == keycode) topage = 1;\n\t\t\t\telse if (sakura_tokeycode(GDK_KEY_3) == keycode) topage = 2;\n\t\t\t\telse if (sakura_tokeycode(GDK_KEY_4) == keycode) topage = 3;\n\t\t\t\telse if (sakura_tokeycode(GDK_KEY_5) == keycode) topage = 4;\n\t\t\t\telse if (sakura_tokeycode(GDK_KEY_6) == keycode) topage = 5;\n\t\t\t\telse if (sakura_tokeycode(GDK_KEY_7) == keycode) topage = 6;\n\t\t\t\telse if (sakura_tokeycode(GDK_KEY_8) == keycode) topage = 7;\n\t\t\t\telse if (sakura_tokeycode(GDK_KEY_9) == keycode) topage = 8;\n\t\t\t\tif (topage <= npages)\n\t\t\t\t\tgtk_notebook_set_current_page(GTK_NOTEBOOK(sakura.notebook), topage);\n\t\t\t\treturn TRUE;\n\t\t\t} else if (keycode == sakura_tokeycode(sakura.prev_tab_key)) {\n\t\t\t\tif (gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook))==0) {\n\t\t\t\t\tgtk_notebook_set_current_page(GTK_NOTEBOOK(sakura.notebook), npages-1);\n\t\t\t\t} else {\n\t\t\t\t\tgtk_notebook_prev_page(GTK_NOTEBOOK(sakura.notebook));\n\t\t\t\t}\n\t\t\t\treturn TRUE;\n\t\t\t} else if (keycode == sakura_tokeycode(sakura.next_tab_key)) {\n\t\t\t\tif (gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook)) == (npages-1)) {\n\t\t\t\t\tgtk_notebook_set_current_page(GTK_NOTEBOOK(sakura.notebook), 0);\n\t\t\t\t} else {\n\t\t\t\t\tgtk_notebook_next_page(GTK_NOTEBOOK(sakura.notebook));\n\t\t\t\t}\n\t\t\t\treturn TRUE;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Move tab keybinding pressed */\n\tif ((event->state & accel_mask) == sakura.move_tab_accelerator) {\n\t\tif (keycode == sakura_tokeycode(sakura.prev_tab_key)) {\n\t\t\tsakura_move_tab(BACKWARDS);\n\t\t\treturn TRUE;\n\t\t} else if (keycode == sakura_tokeycode(sakura.next_tab_key)) {\n\t\t\tsakura_move_tab(FORWARD);\n\t\t\treturn TRUE;\n\t\t}\n\t}\n\n\t/* Copy/paste keybinding pressed */\n\tif ((event->state & accel_mask) == sakura.copy_accelerator) {\n\t\tif (keycode == sakura_tokeycode(sakura.copy_key)) {\n\t\t\tsakura_copy();\n\t\t\treturn TRUE;\n\t\t} else if (keycode == sakura_tokeycode(sakura.paste_key)) {\n\t\t\tsakura_paste();\n\t\t\treturn TRUE;\n\t\t}\n\t}\n\n\t/* Show scrollbar keybinding pressed */\n\tif ((event->state & accel_mask) == sakura.scrollbar_accelerator) {\n\t\tif (keycode == sakura_tokeycode(sakura.scrollbar_key)) {\n\t\t\tsakura_show_scrollbar();\n\t\t\treturn TRUE;\n\t\t}\n\t}\n\n\t/* Set tab name keybinding pressed */\n\tif ((event->state & accel_mask) == sakura.set_tab_name_accelerator) {\n\t\tif (keycode == sakura_tokeycode(sakura.set_tab_name_key)) {\n\t\t\tsakura_set_name_dialog_cb(NULL, NULL);\n\t\t\treturn TRUE;\n\t\t}\n\t}\n\n\t/* Search keybinding pressed */\n\tif ((event->state & accel_mask) == sakura.search_accelerator) {\n\t\tif (keycode == sakura_tokeycode(sakura.search_key)) {\n\t\t\tsakura_search_dialog();\n\t\t\treturn TRUE;\n\t\t}\n\t}\n\n\t/* Increase/decrease font size keybinding pressed */\n\tif ((event->state & accel_mask) == sakura.font_size_accelerator) {\n\t\tif (keycode == sakura_tokeycode(sakura.increase_font_size_key)) {\n\t\t\tsakura_increase_font_cb(NULL, NULL);\n\t\t\treturn TRUE;\n\t\t} else if (keycode == sakura_tokeycode(sakura.decrease_font_size_key)) {\n\t\t\tsakura_decrease_font_cb(NULL, NULL);\n\t\t\treturn TRUE;\n\t\t}\n\t}\n\n\t/* F11 (fullscreen) pressed */\n\tif (keycode == sakura_tokeycode(sakura.fullscreen_key)) {\n\t\tsakura_fullscreen_cb(NULL, NULL);\n\t\treturn TRUE;\n\t}\n\n\t/* Change in colorset */\n\tif ((event->state & accel_mask) == sakura.set_colorset_accelerator) {\n\t\tint i;\n\t\tfor (i=0; i<NUM_COLORSETS; i++) {\n\t\t\tif (keycode == sakura_tokeycode(sakura.set_colorset_keys[i])) {\n\t\t\t\tsakura_set_colorset(i);\n\t\t\t\treturn TRUE;\n\t\t\t}\n\t\t}\n\t}\n\treturn FALSE;\n}\n\n\nstatic gboolean\nsakura_resized_window_cb (GtkWidget *widget, GdkEventConfigure *event, void *data)\n{\n\tif (event->width != sakura.width || event->height != sakura.height) {\n\t\t//SAY(\"Configure event received. Current w %d h %d ConfigureEvent w %d h %d\",\n\t\t//sakura.width, sakura.height, event->width, event->height);\n\t\tgtk_widget_hide(sakura.fade_window);\n\t\tsakura.resized = TRUE;\n\t}\n\n\treturn FALSE;\n}\n\n/* Use focus-in-event to unmap the fade window */\nstatic gboolean\nsakura_focus_in_cb (GtkWidget *widget, GdkEvent *event, void *data)\n{\n\tif (event->type != GDK_FOCUS_CHANGE) return FALSE;\n\t//if (!sakura.use_fading) return FALSE;\n\n\t/* Got the focus, hide the fade */\n\t//gtk_widget_hide(sakura.fade_window);\n\n\t/* Reset urgency hint */\n\tgtk_window_set_urgency_hint(GTK_WINDOW(sakura.main_window), FALSE);\n\n\treturn FALSE;\n}\n\n\n/* Use focus-out-event to map the fade window */\nstatic gboolean\nsakura_focus_out_cb (GtkWidget *widget, GdkEvent *event, void *data)\n{\n\tgint ax, ay, mx, my, x, y;\n\n\tif (event->type != GDK_FOCUS_CHANGE) return FALSE;\n\tif (!sakura.use_fading) return FALSE;\n\n\t/* No fade when the menu is displayed */\n\tif (gtk_widget_is_visible(sakura.menu)) return FALSE;\n\n\t/* Give the right size and position to the fade_window to cover all the main window */\n\tgtk_widget_translate_coordinates(sakura.notebook, sakura.main_window, 0, 0, &ax, &ay);\n\tgtk_window_get_position(GTK_WINDOW(sakura.main_window), &mx, &my);\n\tgint titlebar_height = ay-my;\n\tgtk_window_move(GTK_WINDOW(sakura.fade_window), mx, my+titlebar_height);\n\t//SAY(\"FADE ax %d ay %d x %d y %d titlebar_h %d\", ax, ay, mx, my, titlebar_height);\n\n\t/* Same size as main window */\n\tgtk_window_get_size(GTK_WINDOW(sakura.main_window), &x, &y);\n\tgtk_window_resize(GTK_WINDOW(sakura.fade_window), x, y);\n\n\t//gtk_widget_show_all(sakura.fade_window);\n\n\treturn FALSE;\n}\n\n\nstatic void\nsakura_show_event_cb (GtkWidget *widget, gpointer data)\n{\n\t/* Set size when the window is first shown */\n\tsakura_set_size();\n}\n\n\n/* Callback called when sakura configuration file is modified by an external process */\nstatic void\nsakura_conf_changed_cb (GtkWidget *widget, void *data)\n{\n\tsakura.externally_modified = true;\n}\n\n\n\n/**********************/\n/* Notebook callbacks */\n/**********************/\n\n\n/* Handler for notebook scroll-event - switches tabs by scroll direction */\nstatic gboolean\nsakura_notebook_scroll_cb (GtkWidget *widget, GdkEventScroll *event)\n{\n\t/* This callback cause undesirable scroll (when the mouse is over the vte window) when using\n\t * input methods like hime. Disable it by now */\n\n\t/*\n\tgint page, npages;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tnpages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\n\tswitch (event->direction) {\n\t\tcase GDK_SCROLL_DOWN:\n\t\t\tgtk_notebook_set_current_page(GTK_NOTEBOOK(sakura.notebook), --page >= 0 ? page : npages - 1);\n\t\t\tbreak;\n\t\tcase GDK_SCROLL_UP:\n\t\t\tgtk_notebook_set_current_page(GTK_NOTEBOOK(sakura.notebook), ++page < npages ? page : 0);\n\t\t\tbreak;\n\t\tcase GDK_SCROLL_LEFT:\n\t\tcase GDK_SCROLL_RIGHT:\n\t\tcase GDK_SCROLL_SMOOTH:\n\t\t\tbreak;\n\t}\n\t*/\n\n\treturn FALSE;\n}\n\n\n/* Callback called when the user switches tabs or closes a tab (but not when a tab is added) */\nstatic void\nsakura_switch_page_cb (GtkWidget *widget, GtkWidget *widget_page, guint page_num, void *data)\n{\n\tstruct sakura_tab *sk_tab;\n\n\t/* Don't use gtk_notebook_get_current_page in the callbacks, it returns the previous page */\n\n\tsk_tab = sakura_get_sktab(sakura, page_num);\n\n\t/* Update the window title when a new tab is selected, but don't when an user title has been set */\n\t//if (!sakura.tab_default_title && !sakura.main_title)\n\tif (!sakura.main_title) {\n\t\tif (g_strcmp0(gtk_label_get_text(GTK_LABEL(sk_tab->label)),\"\")!=0) {\n\t\t\tgtk_window_set_title(GTK_WINDOW(sakura.main_window), gtk_label_get_text(GTK_LABEL(sk_tab->label)));\n\t\t}\n\t}\n\n}\n\n\nstatic void\nsakura_page_removed_cb (GtkWidget *widget, void *data)\n{\n\tif (gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook))==1) {\n\t\t/* If the first tab is disabled, window size changes and we need to recalculate its size */\n\t\tsakura_set_size();\n\t}\n}\n\n\n/* Callback for focus-in-event to the notebook widget */\nstatic gboolean\nsakura_notebook_focus_cb (GtkWindow *window, GdkEvent *event, void *data)\n{\n\tstruct sakura_tab *sk_tab; gint page;\n\n\tif (event->type != GDK_FOCUS_CHANGE) return FALSE;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\t/* When clicking several times in the label, terminal loses its focus.\n\t * So, when the notebook got the focus, make sure the terminal HAS te focus */\n\tgtk_widget_grab_focus(sk_tab->vte);\n\n\treturn FALSE;\n}\n\n\n/* Callback for clicking in the tabs close buttons */\nstatic void\nsakura_closebutton_clicked_cb (GtkWidget *widget, void *data)\n{\n\tGtkWidget *hbox = (GtkWidget *)data;\n\tgint page;\n\n\tpage = gtk_notebook_page_num(GTK_NOTEBOOK(sakura.notebook), hbox);\n\n\tsakura_close_tab(page);\n}\n\n\n/* Callback for clicking in the tabs labels */\nstatic gboolean\nsakura_label_clicked_cb (GtkWidget *widget, GdkEventButton *button_event, void *data)\n{\n\tGtkWidget *hbox = (GtkWidget *)data;\n\tstruct sakura_tab *sk_tab;\n\tgint page;\n\n\tpage = gtk_notebook_page_num(GTK_NOTEBOOK(sakura.notebook), hbox);\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\t/* Not interested in non button press events */\n\tif (button_event->type != GDK_BUTTON_PRESS)\n\t\treturn FALSE;\n\n\t/* Left button click. We HAVE to propagate the event, or things like tab moving won't work */\n\tif (button_event->button == 1) {\n\t\tgtk_widget_grab_focus(sk_tab->vte);\n\t\treturn FALSE;\n\t}\n\n\t/* Ignore right click and propagate the event */\n\tif (button_event->button == 3)\n\t\treturn FALSE;\n\n\t/* The middle button was clicked, so close the tab */\n\tsakura_close_tab(page);\n\n\treturn TRUE;\n}\n\n\n/*****************/\n/* VTE callbacks */\n/*****************/\n\n\n/* Callback for button release on the vte terminal. Used for copy-on-selection to clipboard */\nstatic gboolean\nsakura_term_buttonreleased_cb (GtkWidget *widget, GdkEventButton *button_event, gpointer user_data)\n{\n\n\tif (button_event->type != GDK_BUTTON_RELEASE)\n\t\treturn FALSE;\n\n\tif (sakura.copy_on_select)\n\t\tif (button_event->button == 1)\n\t\t\tsakura_copy();\n\n\treturn FALSE;\n}\n\n\nstatic gboolean\nsakura_term_buttonpressed_cb (GtkWidget *widget, GdkEventButton *button_event, gpointer user_data)\n{\n\tstruct sakura_tab *sk_tab;\n\tgint page, tag;\n\n\tif (button_event->type != GDK_BUTTON_PRESS)\n\t\treturn FALSE;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\t/* Find out if cursor it's over a matched expression...*/\n\tsakura.current_match = vte_terminal_match_check_event(VTE_TERMINAL(sk_tab->vte), (GdkEvent *) button_event, &tag);\n\n\t/* Left button with accelerator: open the URL if any */\n\tif (button_event->button == 1 &&\n\t    ((button_event->state & sakura.open_url_accelerator) == sakura.open_url_accelerator) &&\n\t    sakura.current_match) {\n\n\t\tsakura_open_url_cb(NULL, NULL);\n\n\t\treturn TRUE;\n\t}\n\n\t/* Paste when paste button is pressed */\n\tif (sakura.copy_on_select) {\n\t\tif (button_event->button == sakura.paste_button) {\n\t\t\tsakura_paste_primary(); /* This is the expected X11 behaviour, to copy the PRIMARY clipboard with the middle click. \n\t\t\t\t\t\t   TODO: Maybe add an option to use the secondary one? */\n\n\t\t\t/* Do not propagate. vte has his own copy-on-select and we'll end with duplicates pastes */\n\t\t\treturn TRUE;\n\t\t}\n\t}\n\n\t/* Show the popup menu when menu button is pressed */\n\tif (button_event->button == sakura.menu_button) {\n\t\tGtkMenu *menu;\n\n\t\tmenu = GTK_MENU (user_data);\n\n\t\tif (sakura.current_match) {\n\t\t\t/* Show the extra options in the menu */\n\n\t\t\tchar *matches;\n\t\t\t/* Is it a mail address? */\n\t\t\tif (vte_terminal_event_check_regex_simple(VTE_TERMINAL(sk_tab->vte), (GdkEvent *) button_event,\n\t\t\t\t\t\t\t\t  &sakura.mail_vteregexp, 1, 0, &matches)) {\n\t\t\t\tgtk_widget_show(sakura.item_open_mail);\n\t\t\t\tgtk_widget_hide(sakura.item_open_link);\n\t\t\t} else {\n\t\t\t\tgtk_widget_show(sakura.item_open_link);\n\t\t\t\tgtk_widget_hide(sakura.item_open_mail);\n\t\t\t}\n\t\t\tgtk_widget_show(sakura.item_copy_link);\n\t\t\tgtk_widget_show(sakura.open_link_separator);\n\n\t\t\tg_free(matches);\n\t\t} else {\n\t\t\t/* Hide all the options */\n\t\t\tgtk_widget_hide(sakura.item_open_mail);\n\t\t\tgtk_widget_hide(sakura.item_open_link);\n\t\t\tgtk_widget_hide(sakura.item_copy_link);\n\t\t\tgtk_widget_hide(sakura.open_link_separator);\n\t\t}\n\n\t\tgtk_menu_popup_at_pointer(menu, (GdkEvent *) button_event);\n\n\t\treturn TRUE;\n\t}\n\n\treturn FALSE;\n}\n\n\nstatic void\nsakura_beep_cb (GtkWidget *widget, void *data)\n{\n\t/* Remove the urgency hint. This is necessary to signal the window manager  */\n\t/* that a new urgent event happened when the urgent hint is set after this. */\n\t/* TODO: this is already set in focus_in, so DO we really need it here? */\n\tgtk_window_set_urgency_hint(GTK_WINDOW(sakura.main_window), FALSE);\n\n\t/* If the window is active(focused), ignore and don't set the urgency hint */\n\tif (!gtk_window_is_active(GTK_WINDOW(sakura.main_window))) {\n\t\tif (sakura.urgent_bell) {\n\t\t\tgtk_window_set_urgency_hint(GTK_WINDOW(sakura.main_window), TRUE);\n\t}\n\t}\n\n}\n\n\nstatic void\nsakura_increase_font_cb (GtkWidget *widget, void *data)\n{\n\tgint new_size;\n\n\t/* Increment font size one unit */\n\tnew_size = pango_font_description_get_size(sakura.font)+PANGO_SCALE;\n\n\tpango_font_description_set_size(sakura.font, new_size);\n\tsakura_set_font();\n\tsakura_set_size();\n\tsakura_set_config_string(\"font\", pango_font_description_to_string(sakura.font));\n}\n\n\nstatic void\nsakura_decrease_font_cb (GtkWidget *widget, void *data)\n{\n\tgint new_size;\n\n\t/* Decrement font size one unit */\n\tnew_size = pango_font_description_get_size(sakura.font)-PANGO_SCALE;\n\n\t/* Set a minimal size */\n\tif (new_size >= FONT_MINIMAL_SIZE) {\n\t\tpango_font_description_set_size(sakura.font, new_size);\n\t\tsakura_set_font();\n\t\tsakura_set_size();\n\t\tsakura_set_config_string(\"font\", pango_font_description_to_string(sakura.font));\n\t}\n}\n\n\nstatic void\nsakura_child_exited_cb (GtkWidget *widget, void *data)\n{\n\tgint page, npages;\n\tstruct sakura_tab *sk_tab;\n\n\tpage = gtk_notebook_page_num(GTK_NOTEBOOK(sakura.notebook),\n\t\t\t\tgtk_widget_get_parent(widget));\n\tnpages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\t/* Only write configuration to disk if it's the last tab */\n\tif (npages==1) {\n\t\tsakura_config_done();\n\t}\n\n\tif (option_hold==TRUE) {\n\t\tSAY(\"hold option has been activated\");\n\t\treturn;\n\t}\n\n\t/* Child should be automatically reaped because we don't use G_SPAWN_DO_NOT_REAP_CHILD flag */\n\tg_spawn_close_pid(sk_tab->pid);\n\n\tsakura_del_tab(page);\n\n\tnpages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\tif (npages == 0)\n\t\tsakura_destroy();\n}\n\n\nstatic void\nsakura_eof_cb (GtkWidget *widget, void *data)\n{\n\tSAY(\"Got EOF signal\");\n}\n\n/* This handler is called when vte window title changes (i.e.: cwd changes),\n * and it is used to change window and notebook pages titles */\nstatic void\nsakura_title_changed_cb (GtkWidget *widget, void *data)\n{\n\tstruct sakura_tab *sk_tab;\n\tconst char *tabtitle;\n\tgint modified_page;\n\tVteTerminal *vte_term=(VteTerminal *)widget;\n\n\tmodified_page = sakura_find_tab(vte_term);\n\tsk_tab = sakura_get_sktab(sakura, modified_page);\n\n\ttabtitle = vte_terminal_get_window_title(VTE_TERMINAL(sk_tab->vte));\n\n\t/* User set values overrides any other one */\n\tif (!sk_tab->label_set_byuser) {\n\t\tsakura_set_tab_label_text(tabtitle, modified_page);\n\t\tif (!sakura.main_title) gtk_window_set_title(GTK_WINDOW(sakura.main_window), tabtitle);\n\t}\n\n}\n\n\nstatic gboolean\nsakura_delete_event_cb (GtkWidget *widget, void *data)\n{\n\tstruct sakura_tab *sk_tab;\n\tGtkWidget *dialog;\n\tgint response;\n\tgint npages;\n\tgint i;\n\tpid_t pgid;\n\n\tif (!sakura.less_questions) {\n\t\tnpages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\n\t\t/* Check for each tab if there are running processes. Use tcgetpgrp to compare to the shell PGID */\n\t\tfor (i=0; i < npages; i++) {\n\n\t\t\tsk_tab = sakura_get_sktab(sakura, i);\n\t\t\tpgid = tcgetpgrp(vte_pty_get_fd(vte_terminal_get_pty(VTE_TERMINAL(sk_tab->vte))));\n\n\t\t\t/* If running processes are found, we ask one time and exit */\n\t\t\tif ( (pgid != -1) && (pgid != sk_tab->pid)) {\n\t\t\t\tdialog=gtk_message_dialog_new(GTK_WINDOW(sakura.main_window), GTK_DIALOG_MODAL,\n\t\t\t\t\t\t\t\t\t\t\t  GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,\n\t\t\t\t\t\t\t\t\t\t\t  _(\"There are running processes.\\n\\nDo you really want to close Sakura?\"));\n\n\t\t\t\tresponse=gtk_dialog_run(GTK_DIALOG(dialog));\n\t\t\t\tgtk_widget_destroy(dialog);\n\n\t\t\t\tif (response==GTK_RESPONSE_YES) {\n\t\t\t\t\tsakura_config_done();\n\t\t\t\t\treturn FALSE;\n\t\t\t\t} else {\n\t\t\t\t\treturn TRUE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\tsakura_config_done();\n\treturn FALSE;\n}\n\n\nstatic void\nsakura_destroy_window_cb (GtkWidget *widget, void *data)\n{\n\tsakura_destroy();\n}\n\n\n/**********************/\n/* Menuitem callbacks */\n/**********************/\n\n\nstatic void\nsakura_font_dialog_cb (GtkWidget *widget, void *data)\n{\n\tGtkWidget *font_dialog;\n\tgint response;\n\n\tfont_dialog = gtk_font_chooser_dialog_new(_(\"Select font\"), GTK_WINDOW(sakura.main_window));\n\tgtk_font_chooser_set_font_desc(GTK_FONT_CHOOSER(font_dialog), sakura.font);\n\n\tresponse = gtk_dialog_run(GTK_DIALOG(font_dialog));\n\n\tif (response == GTK_RESPONSE_OK) {\n\t\tpango_font_description_free(sakura.font);\n\t\tsakura.font = gtk_font_chooser_get_font_desc(GTK_FONT_CHOOSER(font_dialog));\n\t\tsakura_set_font();\n\t\tsakura_set_size();\n\t\tsakura_set_config_string(\"font\", pango_font_description_to_string(sakura.font));\n\t}\n\n\tgtk_widget_destroy(font_dialog);\n}\n\n\nstatic void\nsakura_set_name_dialog_cb (GtkWidget *widget, void *data)\n{\n\tGtkWidget *input_dialog, *input_header;\n\tGtkWidget *entry, *label;\n\tGtkWidget *name_hbox; /* We need this for correct spacing */\n\tgint response;\n\tgint page;\n\tstruct sakura_tab *sk_tab;\n\tconst gchar *text;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tinput_dialog=gtk_dialog_new_with_buttons(_(\"Set tab name\"),\n\t                                         GTK_WINDOW(sakura.main_window),\n                                                 GTK_DIALOG_MODAL|GTK_DIALOG_USE_HEADER_BAR,\n\t                                         _(\"_Cancel\"), GTK_RESPONSE_CANCEL,\n\t                                         _(\"_Apply\"), GTK_RESPONSE_ACCEPT,\n\t                                         NULL);\n\n\t/* Configure the new gtk header bar*/\n\tinput_header = gtk_dialog_get_header_bar(GTK_DIALOG(input_dialog));\n\tgtk_header_bar_set_show_close_button(GTK_HEADER_BAR(input_header), FALSE);\n\n\tgtk_dialog_set_default_response(GTK_DIALOG(input_dialog), GTK_RESPONSE_ACCEPT);\n\n\t/* Create dialog contents */\n\tname_hbox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);\n\tentry=gtk_entry_new();\n\tlabel=gtk_label_new(_(\"New text\"));\n\t/* Set tab label as entry default text (when first tab is not displayed, get_tab_label_text\n\t   returns a null value, so check accordingly */\n\t/* FIXME: Check why is returning NULL */\n\ttext = gtk_notebook_get_tab_label_text(GTK_NOTEBOOK(sakura.notebook), sk_tab->hbox);\n\tif (text) {\n\t\tSAY(\"TEXT %s\", text);\n\t\tgtk_entry_set_text(GTK_ENTRY(entry), text);\n\t}\n\tgtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);\n\tgtk_box_pack_start(GTK_BOX(name_hbox), label, TRUE, TRUE, 12);\n\tgtk_box_pack_start(GTK_BOX(name_hbox), entry, TRUE, TRUE, 12);\n\tgtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(input_dialog))), name_hbox, FALSE, FALSE, 12);\n\n\t/* Disable accept button until some text is entered */\n\tg_signal_connect(G_OBJECT(entry), \"changed\", G_CALLBACK(sakura_setname_entry_changed_cb), input_dialog);\n\tgtk_dialog_set_response_sensitive(GTK_DIALOG(input_dialog), GTK_RESPONSE_ACCEPT, FALSE);\n\n\tgtk_widget_show_all(name_hbox);\n\n\tresponse = gtk_dialog_run(GTK_DIALOG(input_dialog));\n\n\tif (response == GTK_RESPONSE_ACCEPT) {\n\t\tsakura_set_tab_label_text(gtk_entry_get_text(GTK_ENTRY(entry)), page);\n\t\tgtk_window_set_title(GTK_WINDOW(sakura.main_window), gtk_entry_get_text(GTK_ENTRY(entry)));\n\t\tsk_tab->label_set_byuser=true; \n\t\tsakura.main_title=NULL; /* Ignore the user-set window title if the user names the tab */\n\t}\n\n\tgtk_widget_destroy(input_dialog);\n}\n\n\n\n/* Callback for the color dialog signals. Used to UPDATE the contents of that dialog (passed as 'data') */\nstatic void\nsakura_color_dialog_changed_cb ( GtkWidget *widget, void *data)\n{\n\tGtkDialog *dialog = (GtkDialog*) data;\n\tGtkColorButton *fore_button = g_object_get_data (G_OBJECT(dialog), \"fore_button\");\n\tGtkColorButton *back_button = g_object_get_data (G_OBJECT(dialog), \"back_button\");\n\tGtkColorButton *curs_button = g_object_get_data (G_OBJECT(dialog), \"curs_button\");\n\tGdkRGBA *forecolors = g_object_get_data (G_OBJECT(dialog), \"fore\");\n\tGdkRGBA *backcolors = g_object_get_data (G_OBJECT(dialog), \"back\");\n\tGdkRGBA *curscolors = g_object_get_data (G_OBJECT(dialog), \"curs\");\n\tGtkComboBox *cs_combo = g_object_get_data (G_OBJECT(dialog), \"cs_combo\");\n\tGtkComboBox *scheme_combo = g_object_get_data (G_OBJECT(dialog), \"scheme_combo\");\n\tGtkSpinButton *opacity_spin = g_object_get_data (G_OBJECT(dialog), \"opacity_spin\");\n\tGtkCheckButton *bib_checkbutton = g_object_get_data (G_OBJECT(dialog), \"bib_checkbutton\");\n\n\tgint current_cs = gtk_combo_box_get_active(cs_combo);\n\n\t/* If we come here as a result of a change in the active colorset, load the new colorset to the buttons.\n\t * Else, the color buttons or opacity spin have gotten a new value, store that. */\n\tif ((GtkWidget *)cs_combo == widget ) {\n\t\t/* Spin opacity is a percentage, convert it*/\n\t\tgint new_opacity = (int) (backcolors[current_cs].alpha*100);\n\t\tgtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(fore_button), &forecolors[current_cs]);\n\t\tgtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(back_button), &backcolors[current_cs]);\n\t\tgtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(curs_button), &curscolors[current_cs]);\n\t\tgtk_spin_button_set_value(opacity_spin, new_opacity);\n\t\tgtk_combo_box_set_active(GTK_COMBO_BOX(scheme_combo), sakura.schemes[current_cs]);\n\t} else if ((GtkWidget *)scheme_combo == widget) {\n\t\t/* Scheme has changed, update the buttons. No cursor and no alpha */\n\t\tint selected_scheme = gtk_combo_box_get_active(GTK_COMBO_BOX(scheme_combo));\n\t\tif (selected_scheme != 0) {\n\t\t\tfloat old_alpha = backcolors[current_cs].alpha; /* Keep the previous alpha */\n\t\t\tgtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(fore_button), &predefined_schemes[selected_scheme].fg);\n\t\t\tgtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(back_button), &predefined_schemes[selected_scheme].bg);\n\t\t\tforecolors[current_cs] = predefined_schemes[selected_scheme].fg;\n\t\t\tbackcolors[current_cs] = predefined_schemes[selected_scheme].bg;\n\t\t\tbackcolors[current_cs].alpha = old_alpha;\n\t\t\tsakura.schemes[current_cs] = selected_scheme;\n\t\t} /* else Custom, do nothing */\n\t} else if ((GtkWidget *)bib_checkbutton == widget) {\n\t\tif (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(bib_checkbutton))) {\n\t\t\tsakura.bold_is_bright = true;\n\t\t}\n\t\telse {\n\t\t\tsakura.bold_is_bright = false;\n\t\t}\n\t} else {\n\t\tgtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(fore_button), &forecolors[current_cs]);\n\t\tgtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(back_button), &backcolors[current_cs]);\n\t\tgtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(curs_button), &curscolors[current_cs]);\n\t\tgtk_spin_button_update(opacity_spin);\n\t\tbackcolors[current_cs].alpha = gtk_spin_button_get_value(opacity_spin)/100;\n\t\t/* User changed colors. Set custom scheme */\n\t\tsakura.schemes[current_cs] = 0;\n\t\tgtk_combo_box_set_active(GTK_COMBO_BOX(scheme_combo), sakura.schemes[current_cs]);\n\t}\n\n}\n\n\n/* Dialog to select foreground, background and cursors colors, transparency and palette */\nstatic void\nsakura_color_dialog_cb (GtkWidget *widget, void *data)\n{\n\tGtkWidget *color_dialog; GtkWidget *color_header;\n\tGtkWidget *cs_label, *scheme_label, *fore_label, *back_label, *curs_label, *opacity_label, *palette_label;\n\tGtkWidget *cs_combo, *scheme_combo, *fore_button, *back_button, *curs_button, *palette_combo, *opacity_spin;\n\tGtkWidget *cs_hbox, *scheme_hbox, *fore_hbox, *back_hbox, *curs_hbox, *opacity_hbox, *palette_hbox, *bib_hbox;\n\tGtkWidget *bib_checkbutton;\n\tGdkRGBA temp_fore[NUM_COLORSETS]; GdkRGBA temp_back[NUM_COLORSETS];\tGdkRGBA temp_curs[NUM_COLORSETS];\n\tGtkAdjustment *spin_adj;\n\tstruct sakura_tab *sk_tab;\n\tgint response;\n\tgint page, i;\n\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tcolor_dialog = gtk_dialog_new_with_buttons(_(\"Select colors\"), GTK_WINDOW(sakura.main_window),\n\t                                           GTK_DIALOG_MODAL|GTK_DIALOG_USE_HEADER_BAR,\n\t                                           _(\"_Cancel\"), GTK_RESPONSE_CANCEL, _(\"_Select\"), GTK_RESPONSE_ACCEPT, NULL);\n\n\t/* Configure the new gtk header bar */\n\tcolor_header = gtk_dialog_get_header_bar(GTK_DIALOG(color_dialog));\n\tgtk_header_bar_set_show_close_button(GTK_HEADER_BAR(color_header), FALSE);\n\tgtk_dialog_set_default_response(GTK_DIALOG(color_dialog), GTK_RESPONSE_ACCEPT);\n\n\t/* Add the combobox to select the current colorset */\n\tcs_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12);\n\tcs_label = gtk_label_new(_(\"Colorset\"));\n\tcs_combo = gtk_combo_box_text_new();\n\tgchar combo_text[3];\n\tfor (i=0; i < NUM_COLORSETS; i++) {\n\t\tg_snprintf(combo_text, 2, \"%d\", i+1);\n\t\tgtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(cs_combo), NULL, combo_text);\n\t}\n\tgtk_combo_box_set_active(GTK_COMBO_BOX(cs_combo), sk_tab->colorset);\n\n\t/* Add the scheme combobox */\n\tscheme_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12);\n\tscheme_label = gtk_label_new(_(\"Color scheme\"));\n\tscheme_combo = gtk_combo_box_text_new();\n\tfor (i=0; i < NUM_SCHEMES; i++) {\n\t\tgtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(scheme_combo), NULL, predefined_schemes[i].name);\n\t}\n\tgtk_combo_box_set_active(GTK_COMBO_BOX(scheme_combo), sakura.schemes[sk_tab->colorset]);\n\n\t/* Foreground and background and cursor color buttons */\n\tfore_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12);\n\tback_hbox = gtk_box_new(FALSE, 12);\n\tcurs_hbox = gtk_box_new(FALSE, 12);\n\tfore_label = gtk_label_new(_(\"Foreground color\"));\n\tback_label = gtk_label_new(_(\"Background color\"));\n\tcurs_label = gtk_label_new(_(\"Cursor color\"));\n\tfore_button = gtk_color_button_new_with_rgba(&sakura.forecolors[sk_tab->colorset]);\n\tback_button = gtk_color_button_new_with_rgba(&sakura.backcolors[sk_tab->colorset]);\n\tcurs_button = gtk_color_button_new_with_rgba(&sakura.curscolors[sk_tab->colorset]);\n\n\t/* Opacity control */\n\topacity_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12);\n\tspin_adj = gtk_adjustment_new ((sakura.backcolors[sk_tab->colorset].alpha)*100, 0.0, 100.0, 1.0, 5.0, 0);\n\topacity_spin = gtk_spin_button_new(GTK_ADJUSTMENT(spin_adj), 1.0, 0);\n\topacity_label = gtk_label_new(_(\"Opacity level (%)\"));\n\n\t/* Palette combobox */\n\tpalette_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12);\n\tpalette_label = gtk_label_new(_(\"Palette\"));\n\tpalette_combo = gtk_combo_box_text_new();\n\tfor (i=0; i < (sizeof(palettes_names)) / (sizeof(palettes_names[0])); i++) {\n\t\tgtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(palette_combo), NULL, palettes_names[i]);\n\t}\n\tgtk_combo_box_set_active(GTK_COMBO_BOX(palette_combo), sakura.palette_idx);\n\n\t/* Bold is bright checkbutton */\n\tbib_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12);\n\tbib_checkbutton = gtk_check_button_new_with_label(_(\"Use bright colors for bold text\"));\n\tgtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bib_checkbutton), sakura.bold_is_bright);\n\n\tgtk_box_pack_start(GTK_BOX(cs_hbox), cs_label, FALSE, FALSE, 12);\n\tgtk_box_pack_end(GTK_BOX(cs_hbox), cs_combo, FALSE, FALSE, 12);\n\tgtk_box_pack_start(GTK_BOX(scheme_hbox), scheme_label, FALSE, FALSE, 12);\n\tgtk_box_pack_end(GTK_BOX(scheme_hbox), scheme_combo, FALSE, FALSE, 12);\n\tgtk_box_pack_start(GTK_BOX(fore_hbox), fore_label, FALSE, FALSE, 12);\n\tgtk_box_pack_end(GTK_BOX(fore_hbox), fore_button, FALSE, FALSE, 12);\n\tgtk_box_pack_start(GTK_BOX(back_hbox), back_label, FALSE, FALSE, 12);\n\tgtk_box_pack_end(GTK_BOX(back_hbox), back_button, FALSE, FALSE, 12);\n\tgtk_box_pack_start(GTK_BOX(curs_hbox), curs_label, FALSE, FALSE, 12);\n\tgtk_box_pack_end(GTK_BOX(curs_hbox), curs_button, FALSE, FALSE, 12);\n\tgtk_box_pack_start(GTK_BOX(opacity_hbox), opacity_label, FALSE, FALSE, 12);\n\tgtk_box_pack_end(GTK_BOX(opacity_hbox), opacity_spin, FALSE, FALSE, 12);\n\tgtk_box_pack_start(GTK_BOX(palette_hbox), palette_label, FALSE, FALSE, 12);\n\tgtk_box_pack_end(GTK_BOX(palette_hbox), palette_combo, FALSE, FALSE, 12);\n\tgtk_box_pack_start(GTK_BOX(bib_hbox), bib_checkbutton, FALSE, FALSE, 12);\n\tgtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog))), cs_hbox, FALSE, FALSE, 6);\n\tgtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog))), scheme_hbox, FALSE, FALSE, 6);\n\tgtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog))), fore_hbox, FALSE, FALSE, 6);\n\tgtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog))), back_hbox, FALSE, FALSE, 6);\n\tgtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog))), curs_hbox, FALSE, FALSE, 6);\n\tgtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog))), opacity_hbox, FALSE, FALSE, 6);\n\tgtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog))), palette_hbox, FALSE, FALSE, 6);\n\tgtk_box_pack_end(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog))), bib_hbox, FALSE, FALSE, 6);\n\n\tgtk_widget_show_all(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog)));\n\n\t/* When the user switches the colorset, callback needs access to these selector widgets */\n\tg_object_set_data(G_OBJECT(color_dialog), \"cs_combo\", cs_combo);\n\tg_object_set_data(G_OBJECT(color_dialog), \"scheme_combo\", scheme_combo);\n\tg_object_set_data(G_OBJECT(color_dialog), \"fore_button\", fore_button);\n\tg_object_set_data(G_OBJECT(color_dialog), \"back_button\", back_button);\n\tg_object_set_data(G_OBJECT(color_dialog), \"curs_button\", curs_button);\n\tg_object_set_data(G_OBJECT(color_dialog), \"opacity_spin\", opacity_spin);\n\tg_object_set_data(G_OBJECT(color_dialog), \"fore\", temp_fore);\n\tg_object_set_data(G_OBJECT(color_dialog), \"back\", temp_back);\n\tg_object_set_data(G_OBJECT(color_dialog), \"curs\", temp_curs);\n\tg_object_set_data(G_OBJECT(color_dialog), \"bib_checkbutton\", bib_checkbutton);\n\n\tg_signal_connect(G_OBJECT(cs_combo), \"changed\", G_CALLBACK(sakura_color_dialog_changed_cb), color_dialog);\n\tg_signal_connect(G_OBJECT(scheme_combo), \"changed\", G_CALLBACK(sakura_color_dialog_changed_cb), color_dialog);\n\tg_signal_connect(G_OBJECT(fore_button), \"color-set\", G_CALLBACK(sakura_color_dialog_changed_cb), color_dialog);\n\tg_signal_connect(G_OBJECT(back_button), \"color-set\", G_CALLBACK(sakura_color_dialog_changed_cb), color_dialog);\n\tg_signal_connect(G_OBJECT(curs_button), \"color-set\", G_CALLBACK(sakura_color_dialog_changed_cb), color_dialog);\n\tg_signal_connect(G_OBJECT(opacity_spin), \"changed\", G_CALLBACK(sakura_color_dialog_changed_cb), color_dialog);\n\tg_signal_connect(G_OBJECT(bib_checkbutton), \"toggled\", G_CALLBACK(sakura_color_dialog_changed_cb), color_dialog);\n\n\tfor (i=0; i<NUM_COLORSETS; i++) {\n\t\ttemp_fore[i] = sakura.forecolors[i];\n\t\ttemp_back[i] = sakura.backcolors[i];\n\t\ttemp_curs[i] = sakura.curscolors[i];\n\t}\n\n\tresponse = gtk_dialog_run(GTK_DIALOG(color_dialog));\n\n\tif (response==GTK_RESPONSE_ACCEPT) {\n\t\t/* Save all colorsets to both the global struct and configuration.*/\n\t\tfor (i=0; i<NUM_COLORSETS; i++) {\n\t\t\tchar name[20];\n\t\t\tgchar *cfgtmp;\n\n\t\t\tsakura.forecolors[i] = temp_fore[i];\n\t\t\tsakura.backcolors[i] = temp_back[i];\n\t\t\tsakura.curscolors[i] = temp_curs[i];\n\n\t\t\tsprintf(name, \"colorset%d_fore\", i+1);\n\t\t\tcfgtmp = gdk_rgba_to_string(&sakura.forecolors[i]);\n\t\t\tsakura_set_config_string(name, cfgtmp);\n\t\t\tg_free(cfgtmp);\n\n\t\t\tsprintf(name, \"colorset%d_back\", i+1);\n\t\t\tcfgtmp = gdk_rgba_to_string(&sakura.backcolors[i]);\n\t\t\tsakura_set_config_string(name, cfgtmp);\n\t\t\tg_free(cfgtmp);\n\n\t\t\tsprintf(name, \"colorset%d_curs\", i+1);\n\t\t\tcfgtmp = gdk_rgba_to_string(&sakura.curscolors[i]);\n\t\t\tsakura_set_config_string(name, cfgtmp);\n\t\t\tg_free(cfgtmp);\n\n\t\t\tsprintf(name, \"colorset%d_scheme\", i+1);\n\t\t\tsakura_set_config_integer(name, sakura.schemes[i]);\n\t\t}\n\n\t\t/* Set the current tab's colorset to the last selected one in the dialog.\n\t\t * This is probably what the new user expects, and the experienced user hopefully will not mind. */\n\t\tsk_tab->colorset = gtk_combo_box_get_active(GTK_COMBO_BOX(cs_combo));\n\t\tsakura_set_config_integer(\"last_colorset\", sk_tab->colorset+1);\n\n\t\t/* Set the selected palette */\n\t\tguint palette_idx = gtk_combo_box_get_active(GTK_COMBO_BOX(palette_combo));\n\t\tsakura.palette = palettes[palette_idx];\n\t\tsakura.palette_idx = palette_idx;\n\t\tsakura_set_config_integer(\"palette\", sakura.palette_idx);\n\n\t\t/* Set bold is bright option */\n\t\tsakura_set_config_boolean(\"bold_is_bright\", sakura.bold_is_bright);\n\n\t\t/* Apply the new colorsets to all tabs */\n\t\tsakura_set_colors();\n\t}\n\n\tgtk_widget_destroy(color_dialog);\n}\n\n\n#if 0\nstatic void\nsakura_set_title_dialog (GtkWidget *widget, void *data)\n{\n\tGtkWidget *title_dialog, *title_header;\n\tGtkWidget *entry, *label;\n\tGtkWidget *title_hbox;\n\tgint response;\n\n\ttitle_dialog=gtk_dialog_new_with_buttons(_(\"Set window title\"),\n\t                                         GTK_WINDOW(sakura.main_window),\n\t                                         GTK_DIALOG_MODAL|GTK_DIALOG_USE_HEADER_BAR,\n\t                                         _(\"_Cancel\"), GTK_RESPONSE_CANCEL,\n\t                                         _(\"_Apply\"), GTK_RESPONSE_ACCEPT,\n\t                                          NULL);\n\n\t/* Configure the new gtk header bar*/\n\ttitle_header=gtk_dialog_get_header_bar(GTK_DIALOG(title_dialog));\n\tgtk_header_bar_set_show_close_button(GTK_HEADER_BAR(title_header), FALSE);\n\tgtk_dialog_set_default_response(GTK_DIALOG(title_dialog), GTK_RESPONSE_ACCEPT);\n\n\tentry=gtk_entry_new();\n\tlabel=gtk_label_new(_(\"New window title\"));\n\ttitle_hbox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);\n\t/* Set window label as entry default text */\n\tgtk_entry_set_text(GTK_ENTRY(entry), gtk_window_get_title(GTK_WINDOW(sakura.main_window)));\n\tgtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);\n\tgtk_box_pack_start(GTK_BOX(title_hbox), label, TRUE, TRUE, 12);\n\tgtk_box_pack_start(GTK_BOX(title_hbox), entry, TRUE, TRUE, 12);\n\tgtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(title_dialog))), title_hbox, FALSE, FALSE, 12);\n\n\t/* Disable accept button until some text is entered */\n\tg_signal_connect(G_OBJECT(entry), \"changed\", G_CALLBACK(sakura_setname_entry_changed), title_dialog);\n\tgtk_dialog_set_response_sensitive(GTK_DIALOG(title_dialog), GTK_RESPONSE_ACCEPT, FALSE);\n\n\tgtk_widget_show_all(title_hbox);\n\n\tresponse=gtk_dialog_run(GTK_DIALOG(title_dialog));\n\tif (response==GTK_RESPONSE_ACCEPT) {\n\t\t/* Bug #257391 shadow reaches here too... */\n\t\tgtk_window_set_title(GTK_WINDOW(sakura.main_window), gtk_entry_get_text(GTK_ENTRY(entry)));\n\t}\n\tgtk_widget_destroy(title_dialog);\n}\n#endif\n\n\nstatic void\nsakura_copy_url_cb (GtkWidget *widget, void *data)\n{\n\tGtkClipboard* clip;\n\n\tclip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);\n\tgtk_clipboard_set_text(clip, sakura.current_match, -1 );\n\t//clip = gtk_clipboard_get(GDK_SELECTION_PRIMARY);\n\t//gtk_clipboard_set_text(clip, sakura.current_match, -1 );\n\n}\n\n\nstatic void\nsakura_open_url_cb (GtkWidget *widget, void *data)\n{\n\tGError *error=NULL;\n\tgchar *browser=NULL;\n\n\tSAY(\"Opening %s\", sakura.current_match);\n\n\tbrowser = g_strdup(g_getenv(\"BROWSER\"));\n\n\tif (!browser) {\n\t\tif ( !(browser = g_find_program_in_path(\"xdg-open\")) ) {\n\t\t\tsakura_error(\"Browser not found\");\n\t\t}\n\t}\n\n\tif (browser) {\n\t\tgchar * argv[] = {browser, sakura.current_match, NULL};\n\t\tif (!g_spawn_async(\".\", argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error)) {\n\t\t\tsakura_error(\"Couldn't exec \\\"%s %s\\\": %s\", browser, sakura.current_match, error->message);\n\t\t\tg_error_free(error);\n\t\t}\n\n\t\tg_free(browser);\n\t}\n}\n\n\nstatic void\nsakura_open_mail_cb (GtkWidget *widget, void *data)\n{\n\tGError *error = NULL;\n\tgchar *program = NULL;\n\n\tif ( (program = g_find_program_in_path(\"xdg-email\")) ) {\n\t\tgchar * argv[] = { program, sakura.current_match, NULL };\n\t\tif (!g_spawn_async(\".\", argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error)) {\n\t\t\tsakura_error(\"Couldn't exec \\\"%s %s\\\": %s\", program, sakura.current_match, error->message);\n\t\t}\n\t\tg_free(program);\n\t}\n}\n\n\nstatic void\nsakura_show_tab_bar_cb (GtkWidget *widget, void *data)\n{\n\tchar *setting_string = (char *)data;\n\tchar *config_string;\n\tgboolean show_tabs;\n\n\tif (strcmp(setting_string, \"always\")==0) {\n\t\tsakura.show_tab_bar = SHOW_TAB_BAR_ALWAYS;\n\t\tconfig_string = \"always\";\n\t\tshow_tabs = TRUE;\n\t} else if (strcmp(setting_string, \"multiple\")==0) {\n\t\tsakura.show_tab_bar = SHOW_TAB_BAR_MULTIPLE;\n\t\tconfig_string = \"multiple\";\n\t\tshow_tabs = (gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook)) != 1);\n\t} else if (strcmp(setting_string, \"never\")==0) {\n\t\tsakura.show_tab_bar = SHOW_TAB_BAR_NEVER;\n\t\tconfig_string = \"never\";\n\t\tshow_tabs = FALSE;\n\t}\n\n\tsakura_set_config_string(\"show_tab_bar\", config_string);\n\tgtk_notebook_set_show_tabs(GTK_NOTEBOOK(sakura.notebook), show_tabs);\n\n\tsakura_set_size();\n}\n\n\nstatic void\nsakura_tabs_on_bottom_cb (GtkWidget *widget, void *data)\n{\n\n\tif (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {\n\t\tgtk_notebook_set_tab_pos(GTK_NOTEBOOK(sakura.notebook), GTK_POS_BOTTOM);\n\t\tsakura_set_config_boolean(\"tabs_on_bottom\", TRUE);\n\t} else {\n\t\tgtk_notebook_set_tab_pos(GTK_NOTEBOOK(sakura.notebook), GTK_POS_TOP);\n\t\tsakura_set_config_boolean(\"tabs_on_bottom\", FALSE);\n\t}\n}\n\n\nstatic void\nsakura_less_questions_cb (GtkWidget *widget, void *data)\n{\n\n\tif (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {\n\t\tsakura.less_questions = TRUE;\n\t\tsakura_set_config_boolean(\"less_questions\", TRUE);\n\t} else {\n\t\tsakura.less_questions = FALSE;\n\t\tsakura_set_config_boolean(\"less_questions\", FALSE);\n\t}\n}\n\n\nstatic void\nsakura_copy_on_select_cb (GtkWidget *widget, void *data)\n{\n        sakura.copy_on_select = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));\n        if (sakura.copy_on_select) {\n                sakura_set_config_boolean(\"copy_on_select\", TRUE);\n        } else {\n                sakura_set_config_boolean(\"copy_on_select\", FALSE);\n        }\n}\n\n\nstatic void\nsakura_new_tab_after_current_cb (GtkWidget *widget, void *data)\n{\n\tif (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {\n\t\tsakura.new_tab_after_current=TRUE;\n\t\tsakura_set_config_boolean(\"new_tab_after_current\", TRUE);\n\t} else {\n\t\tsakura.new_tab_after_current=FALSE;\n\t\tsakura_set_config_boolean(\"new_tab_after_current\", FALSE);\n\t}\n}\n\n\nstatic void\nsakura_show_scrollbar_cb (GtkWidget *widget, void *data)\n{\n\tsakura_show_scrollbar();\n}\n\n\nstatic void\nsakura_urgent_bell_cb (GtkWidget *widget, void *data)\n{\n\tsakura.urgent_bell = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));\n\tif (sakura.urgent_bell) {\n\t\tsakura_set_config_string(\"urgent_bell\", \"Yes\");\n\t} else {\n\t\tsakura_set_config_string(\"urgent_bell\", \"No\");\n\t}\n}\n\n\nstatic void\nsakura_audible_bell_cb (GtkWidget *widget, void *data)\n{\n\tgint page;\n\tstruct sakura_tab *sk_tab;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tif (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {\n\t\tvte_terminal_set_audible_bell (VTE_TERMINAL(sk_tab->vte), TRUE);\n\t\tsakura_set_config_string(\"audible_bell\", \"Yes\");\n\t} else {\n\t\tvte_terminal_set_audible_bell (VTE_TERMINAL(sk_tab->vte), FALSE);\n\t\tsakura_set_config_string(\"audible_bell\", \"No\");\n\t}\n}\n\n\nstatic void\nsakura_blinking_cursor_cb (GtkWidget *widget, void *data)\n{\n\tgint page;\n\tstruct sakura_tab *sk_tab;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tif (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {\n\t\tvte_terminal_set_cursor_blink_mode (VTE_TERMINAL(sk_tab->vte), VTE_CURSOR_BLINK_ON);\n\t\tsakura_set_config_string(\"blinking_cursor\", \"Yes\");\n\t} else {\n\t\tvte_terminal_set_cursor_blink_mode (VTE_TERMINAL(sk_tab->vte), VTE_CURSOR_BLINK_OFF);\n\t\tsakura_set_config_string(\"blinking_cursor\", \"No\");\n\t}\n}\n\n\n\nstatic void\nsakura_set_cursor_cb (GtkWidget *widget, void *data)\n{\n\tstruct sakura_tab *sk_tab;\n\tint n_pages, i;\n\n\tchar *cursor_string = (char *)data;\n\tn_pages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\n\tif (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {\n\n\t\tif (strcmp(cursor_string, \"block\")==0) {\n\t\t\tsakura.cursor_type=VTE_CURSOR_SHAPE_BLOCK;\n\t\t} else if (strcmp(cursor_string, \"underline\")==0) {\n\t\t\tsakura.cursor_type=VTE_CURSOR_SHAPE_UNDERLINE;\n\t\t} else if (strcmp(cursor_string, \"ibeam\")==0) {\n\t\t\tsakura.cursor_type=VTE_CURSOR_SHAPE_IBEAM;\n\t\t}\n\n\t\tfor (i = (n_pages - 1); i >= 0; i--) {\n\t\t\tsk_tab = sakura_get_sktab(sakura, i);\n\t\t\tvte_terminal_set_cursor_shape(VTE_TERMINAL(sk_tab->vte), sakura.cursor_type);\n\t\t}\n\n\t\tsakura_set_config_integer(\"cursor_type\", sakura.cursor_type);\n\t}\n}\n\n\nstatic void\nsakura_setname_entry_changed_cb (GtkWidget *widget, void *data)\n{\n\tGtkDialog *title_dialog=(GtkDialog *)data;\n\n\tif (strcmp(gtk_entry_get_text(GTK_ENTRY(widget)), \"\")==0) {\n\t\tgtk_dialog_set_response_sensitive(GTK_DIALOG(title_dialog), GTK_RESPONSE_ACCEPT, FALSE);\n\t} else {\n\t\tgtk_dialog_set_response_sensitive(GTK_DIALOG(title_dialog), GTK_RESPONSE_ACCEPT, TRUE);\n\t}\n}\n\n\n/* Parameters are never used */\nstatic void\nsakura_copy_cb (GtkWidget *widget, void *data)\n{\n\tsakura_copy();\n}\n\n\n/* Parameters are never used */\nstatic void\nsakura_paste_cb (GtkWidget *widget, void *data)\n{\n\tsakura_paste();\n}\n\n\nstatic void\nsakura_new_tab_cb (GtkWidget *widget, void *data)\n{\n\tsakura_add_tab();\n}\n\n\nstatic void\nsakura_close_tab_cb (GtkWidget *widget, void *data)\n{\n\tgint page;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\n\tsakura_close_tab(page);\n}\n\n\n\nstatic void\nsakura_fullscreen_cb (GtkWidget *widget, void *data)\n{\n\tif (!sakura.fullscreen) {\n\t\tsakura.fullscreen = TRUE;\n\t\tgtk_window_fullscreen(GTK_WINDOW(sakura.main_window));\n\t} else {\n\t\tsakura.fullscreen = FALSE;\n\t\tgtk_window_unfullscreen(GTK_WINDOW(sakura.main_window));\n\t}\n}\n\n\nstatic void\nsakura_disable_numbered_tabswitch_cb (GtkWidget *widget, void *data)\n{\n\tif (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {\n\t\tsakura.disable_numbered_tabswitch = true;\n\t\tsakura_set_config_boolean(\"disable_numbered_tabswitch\", TRUE);\n\t} else {\n\t\tsakura.disable_numbered_tabswitch = false;\n\t\tsakura_set_config_boolean(\"disable_numbered_tabswitch\", FALSE);\n\t}\n}\n\n\n#if 0\nstatic void\nsakura_use_fading_cb (GtkWidget *widget, void *data)\n{\n\tif (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {\n\t\tsakura.use_fading = true;\n\t\tsakura_set_config_boolean(\"use_fading\", TRUE);\n\t} else {\n\t\tsakura.use_fading = false;\n\t\tsakura_set_config_boolean(\"use_fading\", FALSE);\n\t}\n}\n#endif\n\n\n/**************************/\n/******* Functions ********/\n/**************************/\n\nstatic void\nsakura_init()\n{\n\tGError *gerror=NULL;\n\tchar* configdir = NULL;\n\tint i;\n\n\tterm_data_id = g_quark_from_static_string(\"sakura_term\");\n\n\t/*** Config file initialization ***/\n\n\tsakura.cfg = g_key_file_new();\n\tsakura.config_modified=false;\n\n\tconfigdir = g_build_filename( g_get_user_config_dir(), \"sakura\", NULL );\n\tif ( ! g_file_test( g_get_user_config_dir(), G_FILE_TEST_EXISTS) )\n\t\tg_mkdir( g_get_user_config_dir(), 0755 );\n\tif ( ! g_file_test( configdir, G_FILE_TEST_EXISTS) )\n\t\tg_mkdir( configdir, 0755 );\n\tif (option_config_file) {\n\t\tsakura.configfile = g_build_filename(configdir, option_config_file, NULL);\n\t} else {\n\t\t/* Use more standard-conforming path for config files, if available. */\n\t\tsakura.configfile = g_build_filename(configdir, DEFAULT_CONFIGFILE, NULL);\n\t}\n\tg_free(configdir);\n\n\t/* Open config file */\n\tif (!g_key_file_load_from_file(sakura.cfg, sakura.configfile, 0, &gerror)) {\n\t\t/* If there's no file, ignore the error. A new one is created */\n\t\tif (gerror->code==G_KEY_FILE_ERROR_UNKNOWN_ENCODING || gerror->code==G_KEY_FILE_ERROR_INVALID_VALUE) {\n\t\t\tg_error_free(gerror);\n\t\t\tfprintf(stderr, \"Not valid config file format\\n\");\n\t\t\texit(EXIT_FAILURE);\n\t\t}\n\t}\n\n\t/* Add GFile monitor to control file external changes */\n\tGFile *cfgfile = g_file_new_for_path(sakura.configfile);\n\tGFileMonitor *mon_cfgfile = g_file_monitor_file (cfgfile, 0, NULL, NULL);\n\tg_signal_connect(G_OBJECT(mon_cfgfile), \"changed\", G_CALLBACK(sakura_conf_changed_cb), NULL);\n\n\tgchar *cfgtmp = NULL;\n\n\t/* We can safely ignore errors from g_key_file_get_value(), since if the\n\t * call to g_key_file_has_key() was successful, the key IS there. From the\n\t * glib docs I don't know if we can ignore errors from g_key_file_has_key,\n\t * too. I think we can: the only possible error is that the config file\n\t * doesn't exist, but we have just read it!\n\t */\n\n\tfor (i=0; i<NUM_COLORSETS; i++) {\n\t\tchar temp_name[20];\n\n\t\tsprintf(temp_name, \"colorset%d_fore\", i+1);\n\t\tif (!g_key_file_has_key(sakura.cfg, cfg_group, temp_name, NULL)) {\n\t\t\tsakura_set_config_string(temp_name, \"rgb(192,192,192)\");\n\t\t}\n\t\tcfgtmp = g_key_file_get_value(sakura.cfg, cfg_group, temp_name, NULL);\n\t\tgdk_rgba_parse(&sakura.forecolors[i], cfgtmp);\n\t\tg_free(cfgtmp);\n\n\t\tsprintf(temp_name, \"colorset%d_back\", i+1);\n\t\tif (!g_key_file_has_key(sakura.cfg, cfg_group, temp_name, NULL)) {\n\t\t\tsakura_set_config_string(temp_name, \"rgba(0,0,0,1)\");\n\t\t}\n\t\tcfgtmp = g_key_file_get_value(sakura.cfg, cfg_group, temp_name, NULL);\n\t\tgdk_rgba_parse(&sakura.backcolors[i], cfgtmp);\n\t\tg_free(cfgtmp);\n\n\t\tsprintf(temp_name, \"colorset%d_curs\", i+1);\n\t\tif (!g_key_file_has_key(sakura.cfg, cfg_group, temp_name, NULL)) {\n\t\t\tsakura_set_config_string(temp_name, \"rgb(255,255,255)\");\n\t\t}\n\t\tcfgtmp = g_key_file_get_value(sakura.cfg, cfg_group, temp_name, NULL);\n\t\tgdk_rgba_parse(&sakura.curscolors[i], cfgtmp);\n\t\tg_free(cfgtmp);\n\n\t\tsprintf(temp_name, \"colorset%d_scheme\", i+1);\n\t\tif (!g_key_file_has_key(sakura.cfg, cfg_group, temp_name, NULL)) {\n\t\t\tsakura_set_config_integer(temp_name, DEFAULT_SCHEME);\n\t\t}\n\t\tsakura.schemes[i] = g_key_file_get_integer(sakura.cfg, cfg_group, temp_name, NULL);\n\n\t\tsprintf(temp_name, \"colorset%d_key\", i+1);\n\t\tif (!g_key_file_has_key(sakura.cfg, cfg_group, temp_name, NULL)) {\n\t\t\tsakura_set_keybind(temp_name, cs_keys[i]);\n\t\t}\n\t\tsakura.set_colorset_keys[i]= sakura_get_keybind(temp_name);\n\t}\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"last_colorset\", NULL)) {\n\t\tsakura_set_config_integer(\"last_colorset\", 1);\n\t}\n\tsakura.last_colorset = g_key_file_get_integer(sakura.cfg, cfg_group, \"last_colorset\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"bold_is_bright\", NULL)) {\n\t\tsakura_set_config_boolean(\"bold_is_bright\", FALSE);\n\t}\n\tsakura.bold_is_bright = g_key_file_get_boolean(sakura.cfg, cfg_group, \"bold_is_bright\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"scroll_lines\", NULL)) {\n\t\tg_key_file_set_integer(sakura.cfg, cfg_group, \"scroll_lines\", DEFAULT_SCROLL_LINES);\n\t}\n\tsakura.scroll_lines = g_key_file_get_integer(sakura.cfg, cfg_group, \"scroll_lines\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"line_height\", NULL)) {\n\t\tsakura_set_config_double(\"line_height\", DEFAULT_LINE_HEIGHT);\n\t}\n\tsakura.line_height = g_key_file_get_double(sakura.cfg, cfg_group, \"line_height\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"font\", NULL)) {\n\t\tsakura_set_config_string(\"font\", DEFAULT_FONT);\n\t}\n\tcfgtmp = g_key_file_get_value(sakura.cfg, cfg_group, \"font\", NULL);\n\tsakura.font = pango_font_description_from_string(cfgtmp);\n\tg_free(cfgtmp);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"show_tab_bar\", NULL)) {\n\t\t/* legacy option \"show_always_first_tab\" now sets \"show_tab_bar = always | multiple\" */\n\t\tif (g_key_file_has_key(sakura.cfg, cfg_group, \"show_always_first_tab\", NULL)) {\n\t\t\tcfgtmp = g_key_file_get_value(sakura.cfg, cfg_group, \"show_always_first_tab\", NULL);\n\t\t\tsakura_set_config_string(\"show_tab_bar\", (strcmp(cfgtmp, \"Yes\")==0) ? \"always\" : \"multiple\");\n\t\t\tg_free(cfgtmp);\n\t\t} else {\n\t\t\tsakura_set_config_string(\"show_tab_bar\", \"multiple\");\n\t\t}\n\t}\n\tcfgtmp = g_key_file_get_value(sakura.cfg, cfg_group, \"show_tab_bar\", NULL);\n\tif (strcmp(cfgtmp, \"always\")==0) {\n\t\tsakura.show_tab_bar = SHOW_TAB_BAR_ALWAYS;\n\t} else if (strcmp(cfgtmp, \"multiple\")==0) {\n\t\tsakura.show_tab_bar = SHOW_TAB_BAR_MULTIPLE;\n\t} else if (strcmp(cfgtmp, \"never\")==0) {\n\t\tsakura.show_tab_bar = SHOW_TAB_BAR_NEVER;\n\t} else {\n\t\tfprintf(stderr, \"Invalid configuration value: show_tab_bar=%s (valid values: always|multiple|never)\\n\", cfgtmp);\n\t\tsakura.show_tab_bar = SHOW_TAB_BAR_MULTIPLE;\n\t}\n\tg_free(cfgtmp);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"scrollbar\", NULL)) {\n\t\tsakura_set_config_boolean(\"scrollbar\", FALSE);\n\t}\n\tsakura.show_scrollbar = g_key_file_get_boolean(sakura.cfg, cfg_group, \"scrollbar\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"closebutton\", NULL)) {\n\t\tsakura_set_config_boolean(\"closebutton\", TRUE);\n\t}\n\tsakura.show_closebutton = g_key_file_get_boolean(sakura.cfg, cfg_group, \"closebutton\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"new_tab_after_current\", NULL)) {\n\t\tsakura_set_config_boolean(\"new_tab_after_current\", TRUE);\n\t}\n\tsakura.new_tab_after_current = g_key_file_get_boolean(sakura.cfg, cfg_group, \"new_tab_after_current\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"tabs_on_bottom\", NULL)) {\n\t\tsakura_set_config_boolean(\"tabs_on_bottom\", FALSE);\n\t}\n\tsakura.tabs_on_bottom = g_key_file_get_boolean(sakura.cfg, cfg_group, \"tabs_on_bottom\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"less_questions\", NULL)) {\n\t\tsakura_set_config_boolean(\"less_questions\", FALSE);\n\t}\n\tsakura.less_questions = g_key_file_get_boolean(sakura.cfg, cfg_group, \"less_questions\", NULL);\n\n        if (!g_key_file_has_key(sakura.cfg, cfg_group, \"copy_on_select\", NULL)) {\n                sakura_set_config_boolean(\"copy_on_select\", FALSE);\n        }\n        sakura.copy_on_select = g_key_file_get_boolean(sakura.cfg, cfg_group, \"copy_on_select\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"disable_numbered_tabswitch\", NULL)) {\n\t\tsakura_set_config_boolean(\"disable_numbered_tabswitch\", FALSE);\n\t}\n\tsakura.disable_numbered_tabswitch = g_key_file_get_boolean(sakura.cfg, cfg_group, \"disable_numbered_tabswitch\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"use_fading\", NULL)) {\n\t\tsakura_set_config_boolean(\"use_fading\", FALSE);\n\t}\n\tsakura.use_fading = g_key_file_get_boolean(sakura.cfg, cfg_group, \"use_fading\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"scrollable_tabs\", NULL)) {\n\t\tsakura_set_config_boolean(\"scrollable_tabs\", TRUE);\n\t}\n\tsakura.scrollable_tabs = g_key_file_get_boolean(sakura.cfg, cfg_group, \"scrollable_tabs\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"urgent_bell\", NULL)) {\n\t\tsakura_set_config_string(\"urgent_bell\", \"Yes\");\n\t}\n\tcfgtmp = g_key_file_get_value(sakura.cfg, cfg_group, \"urgent_bell\", NULL);\n\tsakura.urgent_bell= (strcmp(cfgtmp, \"Yes\")==0) ? 1 : 0;\n\tg_free(cfgtmp);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"audible_bell\", NULL)) {\n\t\tsakura_set_config_string(\"audible_bell\", \"Yes\");\n\t}\n\tcfgtmp = g_key_file_get_value(sakura.cfg, cfg_group, \"audible_bell\", NULL);\n\tsakura.audible_bell= (strcmp(cfgtmp, \"Yes\")==0) ? 1 : 0;\n\tg_free(cfgtmp);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"blinking_cursor\", NULL)) {\n\t\tsakura_set_config_string(\"blinking_cursor\", \"No\");\n\t}\n\tcfgtmp = g_key_file_get_value(sakura.cfg, cfg_group, \"blinking_cursor\", NULL);\n\tsakura.blinking_cursor= (strcmp(cfgtmp, \"Yes\")==0) ? 1 : 0;\n\tg_free(cfgtmp);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"cursor_type\", NULL)) {\n\t\tsakura_set_config_string(\"cursor_type\", \"VTE_CURSOR_SHAPE_BLOCK\");\n\t}\n\tsakura.cursor_type = g_key_file_get_integer(sakura.cfg, cfg_group, \"cursor_type\", NULL);\n\n\t/* Only in config file */\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"word_chars\", NULL)) {\n\t\tsakura_set_config_string(\"word_chars\", DEFAULT_WORD_CHARS);\n\t}\n\tsakura.word_chars = g_key_file_get_value(sakura.cfg, cfg_group, \"word_chars\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"palette\", NULL)) {\n\t\tsakura_set_config_integer(\"palette\", DEFAULT_PALETTE);\n\t}\n\tgerror=NULL;\n\tsakura.palette_idx = g_key_file_get_integer(sakura.cfg, cfg_group, \"palette\", &gerror);\n\t/* Backwards compatibility after changing (v.3.7.1) \"palette\" type from string to int. Remove after some versions */\n\tif (gerror && gerror->code == G_KEY_FILE_ERROR_INVALID_VALUE) {\n\t\tsakura.palette_idx = DEFAULT_PALETTE;\n\t\tsakura_set_config_integer(\"palette\", DEFAULT_PALETTE);\n\t\tg_error_free(gerror);\n\t}\n\tsakura.palette = palettes[sakura.palette_idx];\n\n\t/* Keybindings are only in the config file */\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"add_tab_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"add_tab_accelerator\", DEFAULT_ADD_TAB_ACCELERATOR);\n\t}\n\tsakura.add_tab_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"add_tab_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"del_tab_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"del_tab_accelerator\", DEFAULT_DEL_TAB_ACCELERATOR);\n\t}\n\tsakura.del_tab_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"del_tab_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"switch_tab_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"switch_tab_accelerator\", DEFAULT_SWITCH_TAB_ACCELERATOR);\n\t}\n\tsakura.switch_tab_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"switch_tab_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"move_tab_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"move_tab_accelerator\", DEFAULT_MOVE_TAB_ACCELERATOR);\n\t}\n\tsakura.move_tab_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"move_tab_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"copy_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"copy_accelerator\", DEFAULT_COPY_ACCELERATOR);\n\t}\n\tsakura.copy_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"copy_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"scrollbar_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"scrollbar_accelerator\", DEFAULT_SCROLLBAR_ACCELERATOR);\n\t}\n\tsakura.scrollbar_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"scrollbar_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"open_url_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"open_url_accelerator\", DEFAULT_OPEN_URL_ACCELERATOR);\n\t}\n\tsakura.open_url_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"open_url_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"font_size_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"font_size_accelerator\", DEFAULT_FONT_SIZE_ACCELERATOR);\n\t}\n\tsakura.font_size_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"font_size_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"set_tab_name_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"set_tab_name_accelerator\", DEFAULT_SET_TAB_NAME_ACCELERATOR);\n\t}\n\tsakura.set_tab_name_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"set_tab_name_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"search_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"search_accelerator\", DEFAULT_SEARCH_ACCELERATOR);\n\t}\n\tsakura.search_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"search_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"new_window_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"new_window_accelerator\", DEFAULT_NEW_WINDOW_ACCELERATOR);\n\t}\n\tsakura.new_window_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"new_window_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"add_tab_key\", NULL)) {\n\t\tsakura_set_keybind(\"add_tab_key\", DEFAULT_ADD_TAB_KEY);\n\t}\n\tsakura.add_tab_key = sakura_get_keybind(\"add_tab_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"del_tab_key\", NULL)) {\n\t\tsakura_set_keybind(\"del_tab_key\", DEFAULT_DEL_TAB_KEY);\n\t}\n\tsakura.del_tab_key = sakura_get_keybind(\"del_tab_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"prev_tab_key\", NULL)) {\n\t\tsakura_set_keybind(\"prev_tab_key\", DEFAULT_PREV_TAB_KEY);\n\t}\n\tsakura.prev_tab_key = sakura_get_keybind(\"prev_tab_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"next_tab_key\", NULL)) {\n\t\tsakura_set_keybind(\"next_tab_key\", DEFAULT_NEXT_TAB_KEY);\n\t}\n\tsakura.next_tab_key = sakura_get_keybind(\"next_tab_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"copy_key\", NULL)) {\n\t\tsakura_set_keybind( \"copy_key\", DEFAULT_COPY_KEY);\n\t}\n\tsakura.copy_key = sakura_get_keybind(\"copy_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"paste_key\", NULL)) {\n\t\tsakura_set_keybind(\"paste_key\", DEFAULT_PASTE_KEY);\n\t}\n\tsakura.paste_key = sakura_get_keybind(\"paste_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"scrollbar_key\", NULL)) {\n\t\tsakura_set_keybind(\"scrollbar_key\", DEFAULT_SCROLLBAR_KEY);\n\t}\n\tsakura.scrollbar_key = sakura_get_keybind(\"scrollbar_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"set_tab_name_key\", NULL)) {\n\t\tsakura_set_keybind(\"set_tab_name_key\", DEFAULT_SET_TAB_NAME_KEY);\n\t}\n\tsakura.set_tab_name_key = sakura_get_keybind(\"set_tab_name_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"search_key\", NULL)) {\n\t\tsakura_set_keybind(\"search_key\", DEFAULT_SEARCH_KEY);\n\t}\n\tsakura.search_key = sakura_get_keybind(\"search_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"increase_font_size_key\", NULL)) {\n\t\tsakura_set_keybind(\"increase_font_size_key\", DEFAULT_INCREASE_FONT_SIZE_KEY);\n\t}\n\tsakura.increase_font_size_key = sakura_get_keybind(\"increase_font_size_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"decrease_font_size_key\", NULL)) {\n\t\tsakura_set_keybind(\"decrease_font_size_key\", DEFAULT_DECREASE_FONT_SIZE_KEY);\n\t}\n\tsakura.decrease_font_size_key = sakura_get_keybind(\"decrease_font_size_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"fullscreen_key\", NULL)) {\n\t\tsakura_set_keybind(\"fullscreen_key\", DEFAULT_FULLSCREEN_KEY);\n\t}\n\tsakura.fullscreen_key = sakura_get_keybind(\"fullscreen_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"new_window_key\", NULL)) {\n\t\tsakura_set_keybind(\"new_window_key\", DEFAULT_NEW_WINDOW_KEY);\n\t}\n\tsakura.new_window_key = sakura_get_keybind(\"new_window_key\");\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"set_colorset_accelerator\", NULL)) {\n\t\tsakura_set_config_integer(\"set_colorset_accelerator\", DEFAULT_SELECT_COLORSET_ACCELERATOR);\n\t}\n\tsakura.set_colorset_accelerator = g_key_file_get_integer(sakura.cfg, cfg_group, \"set_colorset_accelerator\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"icon_file\", NULL)) {\n\t\tsakura_set_config_string(\"icon_file\", ICON_FILE);\n\t}\n\tsakura.icon = g_key_file_get_string(sakura.cfg, cfg_group, \"icon_file\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"paste_button\", NULL)) {\n\t\tsakura_set_config_integer(\"paste_button\", DEFAULT_PASTE_BUTTON);\n\t}\n\tsakura.paste_button = g_key_file_get_integer(sakura.cfg, cfg_group, \"paste_button\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"menu_button\", NULL)) {\n\t\tsakura_set_config_integer(\"menu_button\", DEFAULT_MENU_BUTTON);\n\t}\n\tsakura.menu_button = g_key_file_get_integer(sakura.cfg, cfg_group, \"menu_button\", NULL);\n\n\t/* NULL if not found. Don't add a new one */ /* Only in config file */\n\tsakura.tab_default_title = g_key_file_get_string(sakura.cfg, cfg_group, \"tab_default_title\", NULL);\n\n\tsakura.dont_save = g_key_file_get_boolean(sakura.cfg, cfg_group, \"dont_save\", NULL);\n\n\t/* Default terminal size */\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"window_columns\", NULL)) {\n\t\tsakura_set_config_integer(\"window_columns\", DEFAULT_COLUMNS);\n\t}\n\tsakura.columns = g_key_file_get_integer(sakura.cfg, cfg_group, \"window_columns\", NULL);\n\n\tif (!g_key_file_has_key(sakura.cfg, cfg_group, \"window_rows\", NULL)) {\n\t\tsakura_set_config_integer(\"window_rows\", DEFAULT_ROWS);\n\t}\n\tsakura.rows = g_key_file_get_integer(sakura.cfg, cfg_group, \"window_rows\", NULL);\n\n\t/* Optional only, no need to set it if not found */\n\tsakura.shell_path = g_key_file_get_string(sakura.cfg, cfg_group, \"shell_path\", NULL);\n\t\n\t/* Default terminal. Only in config file */\n\tsakura.term = g_key_file_get_value(sakura.cfg, cfg_group, \"term\", NULL);\n\n\t/*** Sakura window initialization ***/\n\n\t/* Use always GTK header bar*/\n\tg_object_set(gtk_settings_get_default(), \"gtk-dialogs-use-header\", TRUE, NULL);\n\n\t/* Create our windows */\n\tsakura.main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);\n\tgtk_window_set_title(GTK_WINDOW(sakura.main_window), \"sakura\");\n\tgtk_widget_set_name(sakura.main_window, \"sakura\");\n\n\tsakura.fade_window = gtk_window_new(GTK_WINDOW_POPUP);\n\tgtk_widget_set_name(sakura.fade_window, \"fade_window\");\n\tgtk_window_set_position(GTK_WINDOW(sakura.fade_window), GTK_WIN_POS_NONE);\n\tgtk_widget_set_opacity(sakura.fade_window, FADE_WINDOW_OPACITY);\n\tgtk_window_set_transient_for(GTK_WINDOW(sakura.fade_window), GTK_WINDOW(sakura.main_window));\n\n\t/* Add CSS styles for main and fade window*/\n\tGtkCssProvider *provider = gtk_css_provider_new();\n\tGdkScreen *screen = gtk_widget_get_screen(GTK_WIDGET(sakura.main_window));\n\tgtk_css_provider_load_from_data(provider, SAKURA_CSS, -1, NULL);\n\tgtk_style_context_add_provider_for_screen(screen, GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);\n\tg_object_unref(provider);\n\n\tprovider = gtk_css_provider_new();\n\tscreen = gtk_widget_get_screen(GTK_WIDGET(sakura.fade_window));\n\tgtk_css_provider_load_from_data(provider, FADE_WINDOW_CSS, -1, NULL);\n\tgtk_style_context_add_provider_for_screen(screen, GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);\n\tg_object_unref(provider);\n\n\t/* Create notebook and set style */\n\tsakura.notebook = gtk_notebook_new();\n\tgtk_notebook_set_scrollable((GtkNotebook*)sakura.notebook, sakura.scrollable_tabs);\n\n\t/* Adding mask, for handle scroll events */\n\tgtk_widget_add_events(sakura.notebook, GDK_SCROLL_MASK);\n\t\n\t/* Figure out if we have rgba capabilities. Without this transparency won't work as expected */\n\tscreen = gtk_widget_get_screen (GTK_WIDGET (sakura.main_window));\n\tGdkVisual *visual = gdk_screen_get_rgba_visual (screen);\n\tif (visual != NULL && gdk_screen_is_composited (screen)) {\n\t\tgtk_widget_set_visual (GTK_WIDGET (sakura.main_window), visual);\n\t}\n\t\n\t/*** Command line options initialization ***/\n\n\t/* Set argv for forked childs. Real argv vector starts at argv[1] because we're\n\t   using G_SPAWN_FILE_AND_ARGV_ZERO to be able to launch login shells */\n\t/* If the shell_path has been set in the config file it takes priority over the envvar */\n\tif (sakura.shell_path != NULL) {\n\t\tsakura.argv[0] = g_strdup(sakura.shell_path);\n\t\tsakura.argv[1] = g_strdup(sakura.shell_path);\n\t} else {\n\t\tsakura.argv[0] = g_strdup(g_getenv(\"SHELL\"));\n\t\tif (option_login) {\n\t\t\tsakura.argv[1] = g_strdup_printf(\"-%s\", g_getenv(\"SHELL\"));\n\t\t} else {\n\t\t\tsakura.argv[1] = g_strdup(g_getenv(\"SHELL\"));\n\t\t}\n\t}\n\tsakura.argv[2]=NULL;\n\n\t/* Add datadir path to icon name and set icon */\n\tgchar *icon_path; gerror=NULL;\n\tif (option_icon) {\n\t\ticon_path = g_strdup_printf(\"%s\", option_icon);\n\t} else {\n\t\ticon_path = g_strdup_printf(DATADIR \"/pixmaps/%s\", sakura.icon);\n\t}\n\tgtk_window_set_icon_from_file(GTK_WINDOW(sakura.main_window), icon_path, &gerror);\n\tg_free(icon_path); icon_path=NULL;\n\tif (gerror) g_error_free(gerror);\n\n\t/* More options */\n\tif (option_title) {\n\t\tsakura.main_title = g_strdup_printf(\"%s\", option_title);\n\t\tgtk_window_set_title(GTK_WINDOW(sakura.main_window), sakura.main_title);\n\t} else {\n\t\tsakura.main_title = NULL;\n\t}\n\n\tif (option_columns) {\n\t\tsakura.columns = option_columns;\n\t}\n\n\tif (option_rows) {\n\t\tsakura.rows = option_rows;\n\t}\n\n\tif (option_font) {\n\t\tsakura.font=pango_font_description_from_string(option_font);\n\t}\n\n\tif (option_colorset && option_colorset>0 && option_colorset <= NUM_COLORSETS) {\n\t\tsakura.last_colorset = option_colorset;\n\t}\n\n\tsakura.fullscreen = FALSE;\n\tif (option_fullscreen) {\n\t\tsakura_fullscreen_cb(NULL, NULL); /* FIXME: Move to sakura_set_size?? */\n\t}\n\t\n\tsakura.resized = FALSE;\n\tsakura.externally_modified = false;\n\tsakura.first_run=true;\n\n\tgerror = NULL;\n\tsakura.http_vteregexp = vte_regex_new_for_match(HTTP_REGEXP, strlen(HTTP_REGEXP), PCRE2_MULTILINE, &gerror);\n\tif (!sakura.http_vteregexp) {\n\t\tSAY(\"http_regexp: %s\", gerror->message);\n\t\tg_error_free(gerror);\n\t}\n\tgerror=NULL;\n\tsakura.mail_vteregexp = vte_regex_new_for_match(MAIL_REGEXP, strlen(MAIL_REGEXP), PCRE2_MULTILINE, &gerror);\n\tif (!sakura.mail_vteregexp) {\n\t\tSAY(\"mail_regexp: %s\", gerror->message);\n\t\tg_error_free(gerror);\n\t}\n\n\tgtk_container_add(GTK_CONTAINER(sakura.main_window), sakura.notebook);\n\n\tsakura_init_popup();\n\n\tg_signal_connect(G_OBJECT(sakura.main_window), \"delete_event\", G_CALLBACK(sakura_delete_event_cb), NULL);\n\tg_signal_connect(G_OBJECT(sakura.main_window), \"destroy\", G_CALLBACK(sakura_destroy_window_cb), NULL);\n\tg_signal_connect(G_OBJECT(sakura.main_window), \"key-press-event\", G_CALLBACK(sakura_key_press_cb), NULL);\n\tg_signal_connect(G_OBJECT(sakura.main_window), \"configure-event\", G_CALLBACK(sakura_resized_window_cb), NULL);\n\tg_signal_connect(G_OBJECT(sakura.main_window), \"focus-out-event\", G_CALLBACK(sakura_focus_out_cb), NULL);\n\tg_signal_connect(G_OBJECT(sakura.main_window), \"focus-in-event\", G_CALLBACK(sakura_focus_in_cb), NULL);\n\tg_signal_connect(G_OBJECT(sakura.main_window), \"show\", G_CALLBACK(sakura_show_event_cb), NULL);\n}\n\n\nstatic void\nsakura_init_popup()\n{\n\tGtkWidget *item_new_tab, *item_set_name, *item_close_tab, *item_copy,\n\t          *item_paste, *item_fullscreen, *item_select_font, *item_select_colors,\n\t          *item_show_tab_bar,\n\t          *item_show_tab_bar_always, *item_show_tab_bar_multiple, *item_show_tab_bar_never,\n\t          *item_toggle_scrollbar, *item_options,\n\t          *item_urgent_bell, *item_audible_bell, *item_blinking_cursor,\n\t          *item_cursor, *item_cursor_block, *item_cursor_underline, *item_cursor_ibeam,\n\t\t  *item_tabs_on_bottom, *item_less_questions, *item_copy_on_select,\n\t          *item_disable_numbered_tabswitch, *item_new_tab_after_current; // *item_use_fading;\n\tGtkWidget *options_menu, *show_tab_bar_menu, *cursor_menu;\n\n\tsakura.item_open_mail = gtk_menu_item_new_with_label(_(\"Open mail\"));\n\tsakura.item_open_link = gtk_menu_item_new_with_label(_(\"Open link\"));\n\tsakura.item_copy_link = gtk_menu_item_new_with_label(_(\"Copy link\"));\n\titem_new_tab = gtk_menu_item_new_with_label(_(\"New tab\"));\n\titem_set_name = gtk_menu_item_new_with_label(_(\"Set tab name...\"));\n\titem_close_tab = gtk_menu_item_new_with_label(_(\"Close tab\"));\n\titem_fullscreen = gtk_menu_item_new_with_label(_(\"Full screen\"));\n\titem_copy = gtk_menu_item_new_with_label(_(\"Copy\"));\n\titem_paste = gtk_menu_item_new_with_label(_(\"Paste\"));\n\n\titem_options = gtk_menu_item_new_with_label(_(\"Options\"));\n\n\titem_select_font = gtk_menu_item_new_with_label(_(\"Select font...\"));\n\titem_select_colors = gtk_menu_item_new_with_label(_(\"Select colors...\"));\n\titem_show_tab_bar = gtk_menu_item_new_with_label(_(\"Show tab bar\"));\n\titem_show_tab_bar_always = gtk_radio_menu_item_new_with_label(NULL, _(\"Always\"));\n\titem_show_tab_bar_multiple = gtk_radio_menu_item_new_with_label_from_widget(\n\t\tGTK_RADIO_MENU_ITEM(item_show_tab_bar_always), _(\"When there's more than one tab\"));\n\titem_show_tab_bar_never = gtk_radio_menu_item_new_with_label_from_widget(\n\t\tGTK_RADIO_MENU_ITEM(item_show_tab_bar_always), _(\"Never\"));\n\titem_tabs_on_bottom = gtk_check_menu_item_new_with_label(_(\"Tabs at bottom\"));\n\titem_new_tab_after_current = gtk_check_menu_item_new_with_label(_(\"New tab after current tab\"));\n\titem_toggle_scrollbar = gtk_check_menu_item_new_with_label(_(\"Show scrollbar\"));\n\titem_less_questions = gtk_check_menu_item_new_with_label(_(\"Fewer questions at exit time\"));\n        item_copy_on_select = gtk_check_menu_item_new_with_label(_(\"Automatically copy selected text\"));\n\titem_urgent_bell = gtk_check_menu_item_new_with_label(_(\"Set urgent bell\"));\n\titem_audible_bell = gtk_check_menu_item_new_with_label(_(\"Set audible bell\"));\n\titem_blinking_cursor = gtk_check_menu_item_new_with_label(_(\"Set blinking cursor\"));\n\titem_disable_numbered_tabswitch = gtk_check_menu_item_new_with_label(_(\"Disable numbered tabswitch\"));\n\t//item_use_fading = gtk_check_menu_item_new_with_label(_(\"Enable focus fade\"));\n\titem_cursor = gtk_menu_item_new_with_label(_(\"Set cursor type\"));\n\titem_cursor_block = gtk_radio_menu_item_new_with_label(NULL, _(\"Block\"));\n\titem_cursor_underline = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(item_cursor_block), _(\"Underline\"));\n\titem_cursor_ibeam = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(item_cursor_block), _(\"IBeam\"));\n\n\t/* Show defaults in menu items */\n\tswitch (sakura.show_tab_bar) {\n\t\tcase SHOW_TAB_BAR_ALWAYS:\n\t\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_show_tab_bar_always), TRUE);\n\t\t\tbreak;\n\t\tcase SHOW_TAB_BAR_MULTIPLE:\n\t\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_show_tab_bar_multiple), TRUE);\n\t\t\tbreak;\n\t\tcase SHOW_TAB_BAR_NEVER:\n\t\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_show_tab_bar_never), TRUE);\n\t}\n\n\tif (sakura.new_tab_after_current) {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_new_tab_after_current), TRUE);\n\t} else {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_new_tab_after_current), FALSE);\n\t}\n\n\tif (sakura.tabs_on_bottom) {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_tabs_on_bottom), TRUE);\n\t} else {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_tabs_on_bottom), FALSE);\n\t}\n\n\tif (sakura.less_questions) {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_less_questions), TRUE);\n\t} else {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_less_questions), FALSE);\n\t}\n\n        if (sakura.copy_on_select) {\n                gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_copy_on_select), TRUE);\n        }\n\n\tif (sakura.show_scrollbar) {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_toggle_scrollbar), TRUE);\n\t} else {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_toggle_scrollbar), FALSE);\n\t}\n\n\tif (sakura.disable_numbered_tabswitch) {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_disable_numbered_tabswitch), TRUE);\n\t} else {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_disable_numbered_tabswitch), FALSE);\n\t}\n\n\t//if (sakura.use_fading) {\n\t//\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_use_fading), TRUE);\n\t//} else {\n\t//\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_use_fading), FALSE);\n\t//}\n\n\tif (sakura.urgent_bell) {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_urgent_bell), TRUE);\n\t}\n\n\tif (sakura.audible_bell) {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_audible_bell), TRUE);\n\t}\n\n\tif (sakura.blinking_cursor) {\n\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_blinking_cursor), TRUE);\n\t}\n\n\tswitch (sakura.cursor_type) {\n\t\tcase VTE_CURSOR_SHAPE_BLOCK:\n\t\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_cursor_block), TRUE);\n\t\t\tbreak;\n\t\tcase VTE_CURSOR_SHAPE_UNDERLINE:\n\t\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_cursor_underline), TRUE);\n\t\t\tbreak;\n\t\tcase VTE_CURSOR_SHAPE_IBEAM:\n\t\t\tgtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item_cursor_ibeam), TRUE);\n\t}\n\n\tsakura.open_link_separator = gtk_separator_menu_item_new();\n\n\tsakura.menu = gtk_menu_new();\n\n\t/* Add items to popup menu */\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), sakura.item_open_mail);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), sakura.item_open_link);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), sakura.item_copy_link);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), sakura.open_link_separator);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), item_new_tab);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), item_set_name);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), item_close_tab);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), gtk_separator_menu_item_new());\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), item_fullscreen);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), gtk_separator_menu_item_new());\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), item_copy);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), item_paste);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), gtk_separator_menu_item_new());\n\tgtk_menu_shell_append(GTK_MENU_SHELL(sakura.menu), item_options);\n\n\toptions_menu = gtk_menu_new();\n\tshow_tab_bar_menu = gtk_menu_new();\n\tcursor_menu = gtk_menu_new();\n\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_select_colors);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_select_font);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), gtk_separator_menu_item_new());\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_show_tab_bar);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(show_tab_bar_menu), item_show_tab_bar_always);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(show_tab_bar_menu), item_show_tab_bar_multiple);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(show_tab_bar_menu), item_show_tab_bar_never);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_tabs_on_bottom);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_new_tab_after_current);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), gtk_separator_menu_item_new());\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_toggle_scrollbar);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_less_questions);\n        gtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_copy_on_select);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_urgent_bell);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_audible_bell);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_disable_numbered_tabswitch);\n\t//gtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_use_fading);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_blinking_cursor);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(options_menu), item_cursor);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(cursor_menu), item_cursor_block);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(cursor_menu), item_cursor_underline);\n\tgtk_menu_shell_append(GTK_MENU_SHELL(cursor_menu), item_cursor_ibeam);\n\n\tgtk_menu_item_set_submenu(GTK_MENU_ITEM(item_options), options_menu);\n\tgtk_menu_item_set_submenu(GTK_MENU_ITEM(item_show_tab_bar), show_tab_bar_menu);\n\tgtk_menu_item_set_submenu(GTK_MENU_ITEM(item_cursor), cursor_menu);\n\n\t/* ... and finally assign callbacks to menuitems */\n\tg_signal_connect(G_OBJECT(item_new_tab), \"activate\", G_CALLBACK(sakura_new_tab_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_set_name), \"activate\", G_CALLBACK(sakura_set_name_dialog_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_close_tab), \"activate\", G_CALLBACK(sakura_close_tab_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_select_font), \"activate\", G_CALLBACK(sakura_font_dialog_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_copy), \"activate\", G_CALLBACK(sakura_copy_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_paste), \"activate\", G_CALLBACK(sakura_paste_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_select_colors), \"activate\", G_CALLBACK(sakura_color_dialog_cb), NULL);\n\n\tg_signal_connect(G_OBJECT(item_show_tab_bar_always), \"activate\", G_CALLBACK(sakura_show_tab_bar_cb), \"always\");\n\tg_signal_connect(G_OBJECT(item_show_tab_bar_multiple), \"activate\", G_CALLBACK(sakura_show_tab_bar_cb), \"multiple\");\n\tg_signal_connect(G_OBJECT(item_show_tab_bar_never), \"activate\", G_CALLBACK(sakura_show_tab_bar_cb), \"never\");\n\tg_signal_connect(G_OBJECT(item_tabs_on_bottom), \"activate\", G_CALLBACK(sakura_tabs_on_bottom_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_less_questions), \"activate\", G_CALLBACK(sakura_less_questions_cb), NULL);\n        g_signal_connect(G_OBJECT(item_copy_on_select), \"activate\", G_CALLBACK(sakura_copy_on_select_cb), NULL);\n        g_signal_connect(G_OBJECT(item_new_tab_after_current), \"activate\", G_CALLBACK(sakura_new_tab_after_current_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_toggle_scrollbar), \"activate\", G_CALLBACK(sakura_show_scrollbar_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_urgent_bell), \"activate\", G_CALLBACK(sakura_urgent_bell_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_audible_bell), \"activate\", G_CALLBACK(sakura_audible_bell_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_blinking_cursor), \"activate\", G_CALLBACK(sakura_blinking_cursor_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_disable_numbered_tabswitch), \"activate\", G_CALLBACK(sakura_disable_numbered_tabswitch_cb), NULL);\n\t//g_signal_connect(G_OBJECT(item_use_fading), \"activate\", G_CALLBACK(sakura_use_fading_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_cursor_block), \"activate\", G_CALLBACK(sakura_set_cursor_cb), \"block\");\n\tg_signal_connect(G_OBJECT(item_cursor_underline), \"activate\", G_CALLBACK(sakura_set_cursor_cb), \"underline\");\n\tg_signal_connect(G_OBJECT(item_cursor_ibeam), \"activate\", G_CALLBACK(sakura_set_cursor_cb), \"ibeam\");\n\n\tg_signal_connect(G_OBJECT(sakura.item_open_mail), \"activate\", G_CALLBACK(sakura_open_mail_cb), NULL);\n\tg_signal_connect(G_OBJECT(sakura.item_open_link), \"activate\", G_CALLBACK(sakura_open_url_cb), NULL);\n\tg_signal_connect(G_OBJECT(sakura.item_copy_link), \"activate\", G_CALLBACK(sakura_copy_url_cb), NULL);\n\tg_signal_connect(G_OBJECT(item_fullscreen), \"activate\", G_CALLBACK(sakura_fullscreen_cb), NULL);\n\n\tgtk_widget_show_all(sakura.menu);\n}\n\n\nstatic void\nsakura_destroy()\n{\n\t/* Delete all existing tabs */\n\twhile (gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook)) >= 1) {\n\t\tsakura_del_tab(-1);\n\t}\n\n\tg_key_file_free(sakura.cfg);\n\n\tpango_font_description_free(sakura.font);\n\n\tfree(sakura.configfile);\n\n\tgtk_main_quit();\n}\n\n\nstatic void\nsakura_search_dialog ()\n{\n\tGtkWidget *title_dialog, *title_header;\n\tGtkWidget *entry, *label;\n\tGtkWidget *title_hbox;\n\tgint response;\n\n\ttitle_dialog=gtk_dialog_new_with_buttons(_(\"Search\"),\n\t                                         GTK_WINDOW(sakura.main_window),\n\t                                         GTK_DIALOG_MODAL|GTK_DIALOG_USE_HEADER_BAR,\n\t                                         _(\"_Cancel\"), GTK_RESPONSE_CANCEL,\n\t                                         _(\"_Apply\"), GTK_RESPONSE_ACCEPT,\n\t                                          NULL);\n\n\t/* Configure the new gtk header bar*/\n\ttitle_header = gtk_dialog_get_header_bar(GTK_DIALOG(title_dialog));\n\tgtk_header_bar_set_show_close_button(GTK_HEADER_BAR(title_header), FALSE);\n\tgtk_dialog_set_default_response(GTK_DIALOG(title_dialog), GTK_RESPONSE_ACCEPT);\n\n\tentry = gtk_entry_new();\n\tlabel = gtk_label_new(_(\"Search\"));\n\ttitle_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);\n\tgtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);\n\tgtk_box_pack_start(GTK_BOX(title_hbox), label, TRUE, TRUE, 12);\n\tgtk_box_pack_start(GTK_BOX(title_hbox), entry, TRUE, TRUE, 12);\n\tgtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(title_dialog))), title_hbox, FALSE, FALSE, 12);\n\n\t/* Disable accept button until some text is entered */\n\tg_signal_connect(G_OBJECT(entry), \"changed\", G_CALLBACK(sakura_setname_entry_changed_cb), title_dialog);\n\tgtk_dialog_set_response_sensitive(GTK_DIALOG(title_dialog), GTK_RESPONSE_ACCEPT, FALSE);\n\n\tgtk_widget_show_all(title_hbox);\n\n\tresponse = gtk_dialog_run(GTK_DIALOG(title_dialog));\n\tif (response == GTK_RESPONSE_ACCEPT) {\n\t\tsakura_search(gtk_entry_get_text(GTK_ENTRY(entry)), 0);\n\t}\n\tgtk_widget_destroy(title_dialog);\n}\n\n\nvoid\nsakura_search (const char *pattern, bool reverse)\n{\n\tGError *error=NULL;\n\tVteRegex *regex;\n\tgint page;\n\tstruct sakura_tab *sk_tab;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tvte_terminal_search_set_wrap_around(VTE_TERMINAL(sk_tab->vte), TRUE);\n\n\tregex=vte_regex_new_for_search(pattern, (gssize) strlen(pattern), PCRE2_MULTILINE|PCRE2_CASELESS, &error);\n\tif (!regex) { /* Ubuntu-fucking-morons (17.10/18.04/18.10) package a broken VTE without PCRE2, and search fails */\n\t\t      /* For more info about their moronity please look at https://github.com/gnunn1/tilix/issues/916   */\n\t\tsakura_error(error->message);\n\t\tg_error_free(error);\n\t} else {\n\t\tvte_terminal_search_set_regex(VTE_TERMINAL(sk_tab->vte), regex, 0);\n\n\t\tif (!vte_terminal_search_find_next(VTE_TERMINAL(sk_tab->vte))) {\n\t\t\tvte_terminal_unselect_all(VTE_TERMINAL(sk_tab->vte));\n\t\t\tvte_terminal_search_find_next(VTE_TERMINAL(sk_tab->vte));\n\t\t}\n\n\t\tif (regex) vte_regex_unref(regex);\n\t}\n}\n\n\nstatic void\nsakura_copy ()\n{\n\tgint page;\n\tstruct sakura_tab *sk_tab;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tif (vte_terminal_get_has_selection(VTE_TERMINAL(sk_tab->vte))) {\n\t\tvte_terminal_copy_clipboard_format(VTE_TERMINAL(sk_tab->vte), VTE_FORMAT_TEXT);\n\t}\n}\n\n\nstatic void\nsakura_paste ()\n{\n\tgint page;\n\tstruct sakura_tab *sk_tab;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tvte_terminal_paste_clipboard(VTE_TERMINAL(sk_tab->vte));\n}\n\n\nstatic void\nsakura_paste_primary ()\n{\n\tgint page;\n\tstruct sakura_tab *sk_tab;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tvte_terminal_paste_primary(VTE_TERMINAL(sk_tab->vte));\n}\n\n\nstatic void\nsakura_show_scrollbar (void)\n{\n\tgint page, n_pages;\n\tstruct sakura_tab *sk_tab;\n\tint i;\n\n\tn_pages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tif (!g_key_file_get_boolean(sakura.cfg, cfg_group, \"scrollbar\", NULL)) {\n\t\tsakura.show_scrollbar = true;\n\t\tsakura_set_config_boolean(\"scrollbar\", TRUE);\n\t} else {\n\t\tsakura.show_scrollbar = false;\n\t\tsakura_set_config_boolean(\"scrollbar\", FALSE);\n\t}\n\n\t/* Toggle/Untoggle the scrollbar for all tabs */\n\tfor (i = (n_pages - 1); i >= 0; i--) {\n\t\tsk_tab = sakura_get_sktab(sakura, i);\n\t\tif (!sakura.show_scrollbar)\n\t\t\tgtk_widget_hide(sk_tab->scrollbar);\n\t\telse\n\t\t\tgtk_widget_show(sk_tab->scrollbar);\n\t}\n\tsakura_set_size();\n}\n\n\nstatic void\nsakura_set_size (void)\n{\n\tstruct sakura_tab *sk_tab;\n\tgint pad_x, pad_y;\n\tgint char_width, char_height;\n\tguint npages;\n\tgint min_width, natural_width;\n\tgint page;\n\n\n\tsk_tab = sakura_get_sktab(sakura, 0);\n\tnpages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\n\t/* Mayhaps an user resize happened. Check if row and columns have changed */\n\tif (sakura.resized) {\n\t\tsakura.columns = vte_terminal_get_column_count(VTE_TERMINAL(sk_tab->vte));\n\t\tsakura.rows = vte_terminal_get_row_count(VTE_TERMINAL(sk_tab->vte));\n\t\tSAY(\"New columns %ld and rows %ld\", sakura.columns, sakura.rows);\n\t\tsakura.resized = FALSE;\n\t}\n\n\tgtk_style_context_get_padding(gtk_widget_get_style_context(sk_tab->vte),\n\t\tgtk_widget_get_state_flags(sk_tab->vte),\n\t\t&sk_tab->padding);\n\tpad_x = sk_tab->padding.left + sk_tab->padding.right;\n\tpad_y = sk_tab->padding.top + sk_tab->padding.bottom;\n\t//SAY(\"padding x %d y %d\", pad_x, pad_y);\n\tchar_width = vte_terminal_get_char_width(VTE_TERMINAL(sk_tab->vte));\n\tchar_height = vte_terminal_get_char_height(VTE_TERMINAL(sk_tab->vte));\n\tchar_height = (int) (sakura.line_height * char_height);\n\n\tsakura.width = pad_x + (char_width * sakura.columns);\n\tsakura.height = pad_y + (char_height * sakura.rows);\n\n\tif (sakura.show_tab_bar == SHOW_TAB_BAR_ALWAYS || (sakura.show_tab_bar == SHOW_TAB_BAR_MULTIPLE && npages > 1)) {\n\n\t\t/* TODO: Yeah i know, this is utter shit. Remove this ugly hack and set geometry hints*/\n\t\tif (!sakura.show_scrollbar)\n\t\t\t//sakura.height += min_height - 10;\n\t\t\tsakura.height += 10;\n\t\telse\n\t\t\t//sakura.height += min_height - 47;\n\t\t\tsakura.height += 47;\n\n\t\tsakura.width += 8;\n\t\tsakura.width += /* (hb*2)+*/ (pad_x*2);\n\t}\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tgtk_widget_get_preferred_width(sk_tab->scrollbar, &min_width, &natural_width);\n\t//SAY(\"SCROLLBAR min width %d natural width %d\", min_width, natural_width);\n\tif (sakura.show_scrollbar) {\n\t\tsakura.width += min_width;\n\t}\n\n\t/* Maximize window at init time when command line option is used */\n\tif (option_maximize && sakura.first_run) {\n\t\tgtk_window_maximize(GTK_WINDOW(sakura.main_window));\n\t\tgtk_widget_show_all(GTK_WIDGET(sakura.main_window));\n\t\treturn; /* No need to resize */\n\t}\n\n\tgtk_window_resize(GTK_WINDOW(sakura.main_window), sakura.width, sakura.height);\n\tSAY(\"Resized to %d %d\", sakura.width, sakura.height);\n}\n\n\nstatic void\nsakura_set_font()\n{\n\tgint n_pages;\n\tstruct sakura_tab *sk_tab;\n\tint i;\n\n\tn_pages=gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\n\t/* Set the font for all tabs */\n\tfor (i = (n_pages - 1); i >= 0; i--) {\n\t\tsk_tab = sakura_get_sktab(sakura, i);\n\t\tvte_terminal_set_font(VTE_TERMINAL(sk_tab->vte), sakura.font);\n\t\tvte_terminal_set_cell_height_scale(VTE_TERMINAL(sk_tab->vte), sakura.line_height);\n\t}\n}\n\n/* Set colorset when colosert keybinding is used */\nstatic void\nsakura_set_colorset (int cs)\n{\n\tgint page;\n\tstruct sakura_tab *sk_tab;\n\n\tif (cs < 0 || cs >= NUM_COLORSETS)\n\t\treturn;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\tsk_tab->colorset = cs;\n\n\tsakura_set_config_integer(\"last_colorset\", sk_tab->colorset+1);\n\n\tsakura_set_colors();\n}\n\n\n/* Set the terminal colors for all notebook tabs */\nstatic void\nsakura_set_colors ()\n{\n\tint i;\n\tint n_pages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\tstruct sakura_tab *sk_tab;\n\n\tfor (i = (n_pages - 1); i >= 0; i--) {\n\t\tsk_tab = sakura_get_sktab(sakura, i);\n\n\t\t/* Set fore, back, cursor color and palette for the terminal's colorset */\n\t\tvte_terminal_set_colors(VTE_TERMINAL(sk_tab->vte),\n\t\t                        &sakura.forecolors[sk_tab->colorset],\n\t\t                        &sakura.backcolors[sk_tab->colorset],\n\t\t                        sakura.palette, PALETTE_SIZE);\n\t\tvte_terminal_set_color_cursor(VTE_TERMINAL(sk_tab->vte), &sakura.curscolors[sk_tab->colorset]);\n\n\t\t/* Use background color to make text visible when the cursor is over it */\n\t\tvte_terminal_set_color_cursor_foreground(VTE_TERMINAL(sk_tab->vte), &sakura.backcolors[sk_tab->colorset]);\n\n\t\tvte_terminal_set_bold_is_bright(VTE_TERMINAL(sk_tab->vte), sakura.bold_is_bright);\n\n\t}\n\n\t/* Main window opacity must be set. Otherwise vte widget will remain opaque */\n\tgtk_widget_set_opacity(sakura.main_window, sakura.backcolors[sk_tab->colorset].alpha);\n}\n\n\nstatic void\nsakura_move_tab(gint direction)\n{\n\tgint page, n_pages;\n\tGtkWidget *child;\n\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tn_pages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\tchild = gtk_notebook_get_nth_page(GTK_NOTEBOOK(sakura.notebook), page);\n\n\tif (direction == FORWARD) {\n\t\tif (page != n_pages-1)\n\t\t\tgtk_notebook_reorder_child(GTK_NOTEBOOK(sakura.notebook), child, page+1);\n\t} else {\n\t\tif (page != 0)\n\t\t\tgtk_notebook_reorder_child(GTK_NOTEBOOK(sakura.notebook), child, page-1);\n\t}\n}\n\n\n/* Find the notebook page for the vte terminal passed as a parameter */\nstatic gint\nsakura_find_tab(VteTerminal *vte_term)\n{\n\tgint matched_page, page, n_pages;\n\tstruct sakura_tab *sk_tab;\n\n\tn_pages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\n\tmatched_page = -1;\n\tpage = 0;\n\n\tdo {\n\t\tsk_tab = sakura_get_sktab(sakura, page);\n\t\tif ((VteTerminal *)sk_tab->vte == vte_term) {\n\t\t\tmatched_page=page;\n\t\t}\n\t\tpage++;\n\t} while (page < n_pages);\n\n\treturn (matched_page);\n}\n\n\nstatic void\nsakura_set_tab_label_text(const gchar *title, gint page)\n{\n\tstruct sakura_tab *sk_tab;\n\tgchar *chopped_title;\n\tgchar *default_label_text;\n\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\tif ((title != NULL) && (g_strcmp0(title, \"\") != 0)) {\n\t\t/* Chop to max size */\n\t\tchopped_title = g_strndup(title, TAB_MAX_SIZE);\n\t\t/* Honor the minimum tab label size */\n\t\twhile (strlen(chopped_title)< TAB_MIN_SIZE) {\n\t\t\tchar *old_ptr = chopped_title;\n\t\t\tchopped_title = g_strconcat(chopped_title, \" \", NULL);\n\t\t\tfree(old_ptr);\n\t\t}\n\t\tgtk_label_set_text(GTK_LABEL(sk_tab->label), chopped_title);\n\t\tfree(chopped_title);\n\t} else { /* Use the default values */\n\t\tdefault_label_text = g_strdup_printf(_(\"Terminal %d\"), page);\n\t\tgtk_label_set_text(GTK_LABEL(sk_tab->label), default_label_text);\n\t\tfree(default_label_text);\n\t}\n}\n\n\n/* Callback for vte_terminal_spawn_async */\nvoid\nsakura_spawn_callback (VteTerminal *vte, GPid pid, GError *error, gpointer user_data)\n{\n\tstruct sakura_tab *sk_tab = (struct sakura_tab *) user_data;\n\n\tif (pid == -1) { /* Fork has failed */\n\t\tSAY(\"Error: %s\", error->message);\n\t} else {\n\t\tsk_tab->pid=pid;\n\t}\n}\n\n\nstatic void\nsakura_add_tab()\n{\n\tstruct sakura_tab *sk_tab;\n\tGtkWidget *tab_title_hbox; GtkWidget *close_button; /* We could put them inside struct sakura_tab, but it is not necessary */\n\tGtkWidget *event_box;\n\tgint index, page, npages;\n\tgchar *cwd = NULL; gchar *default_label_text = NULL;\n\n\tsk_tab = g_new0(struct sakura_tab, 1);\n\n\t/* Create the tab label */\n\tsk_tab->label = gtk_label_new(NULL);\n\tgtk_label_set_ellipsize(GTK_LABEL(sk_tab->label), PANGO_ELLIPSIZE_END);\n\n\t/* Create hbox for our label & button */\n\ttab_title_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2);\n\tgtk_widget_set_hexpand(tab_title_hbox, TRUE);\n\n\t/* Label widgets has no window associated, so we need an event box to catch click events */\n\tevent_box = gtk_event_box_new();\n\tgtk_container_add(GTK_CONTAINER(event_box), sk_tab->label);\n\tgtk_widget_set_events(event_box, GDK_BUTTON_PRESS_MASK);\n\n\t/* Expand&fill the event_box to get click events all along the tab */\n\tgtk_box_pack_start(GTK_BOX(tab_title_hbox), event_box, TRUE, TRUE, 0);\n\n\t/* If the tab close button is enabled, create and add it to the tab */\n\tif (sakura.show_closebutton) {\n\t\tclose_button = gtk_button_new();\n\t\t/* Adding scroll-event to button, to propagate it to notebook (fix for scroll event when pointer is above the button) */\n\t\tgtk_widget_add_events(close_button, GDK_SCROLL_MASK);\n\n\t\tgtk_widget_set_name(close_button, \"closebutton\");\n\t\tgtk_button_set_relief(GTK_BUTTON(close_button), GTK_RELIEF_NONE);\n\n\t\tGtkWidget *image = gtk_image_new_from_icon_name(\"window-close\", GTK_ICON_SIZE_MENU);\n\t\tgtk_container_add (GTK_CONTAINER (close_button), image);\n\t\tgtk_box_pack_start(GTK_BOX(tab_title_hbox), close_button, FALSE, FALSE, 0);\n\t}\n\n\tif (sakura.tabs_on_bottom) {\n\t\tgtk_notebook_set_tab_pos(GTK_NOTEBOOK(sakura.notebook), GTK_POS_BOTTOM);\n\t}\n\n\tgtk_widget_show_all(tab_title_hbox);\n\n\t/* Create new vte terminal, scrollbar, and pack it */\n\tsk_tab->vte = vte_terminal_new();\n\tsk_tab->scrollbar = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(sk_tab->vte)));\n\tsk_tab->hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);\n\tgtk_box_pack_start(GTK_BOX(sk_tab->hbox), sk_tab->vte, TRUE, TRUE, 0);\n\tgtk_box_pack_start(GTK_BOX(sk_tab->hbox), sk_tab->scrollbar, FALSE, FALSE, 0);\n\n\tsk_tab->colorset = sakura.last_colorset-1;\n\n\t/* -1 if there is no pages yet */\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\n\t/* Use previous terminal (if there is one) cwd and colorset */\n\tif (page >= 0) {\n\t\tstruct sakura_tab *prev_term;\n\t\tprev_term = sakura_get_sktab(sakura, page);\n\t\t/* If OSC7 method doesn't work, use the old one as fallback */\n\t\tif ((cwd = sakura_get_term_cwd_osc7(prev_term)) == NULL) {\n\t\t\tSAY(\"osc7 is null\");\n\t\t\tsakura_get_term_cwd(prev_term); \n\t\t}\n\n\t\tsk_tab->colorset = prev_term->colorset;\n\t}\n\n\tif (!cwd)\n\t\tcwd = g_get_current_dir();\n\n\tif (!sakura.new_tab_after_current) {\n\t\tif ((index=gtk_notebook_append_page(GTK_NOTEBOOK(sakura.notebook), sk_tab->hbox, tab_title_hbox))==-1) {\n\t\t\tsakura_error(\"Cannot create a new tab\");\n\t\t\texit(1);\n\t\t}\n\t} else {\n\t\tif ((index=gtk_notebook_insert_page(GTK_NOTEBOOK(sakura.notebook), sk_tab->hbox, tab_title_hbox, page+1))==-1) {\n\t\t\tsakura_error(\"Cannot create a new tab\");\n\t\t\texit(1);\n\t\t}\n\t}\n\n\tgtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(sakura.notebook), sk_tab->hbox, TRUE);\n\n\tsakura_set_sktab(sakura, index, sk_tab );\n\n\t/* vte signals */\n\tg_signal_connect(G_OBJECT(sk_tab->vte), \"bell\", G_CALLBACK(sakura_beep_cb), NULL);\n\tg_signal_connect(G_OBJECT(sk_tab->vte), \"increase-font-size\", G_CALLBACK(sakura_increase_font_cb), NULL);\n\tg_signal_connect(G_OBJECT(sk_tab->vte), \"decrease-font-size\", G_CALLBACK(sakura_decrease_font_cb), NULL);\n\tsk_tab->exit_handler_id = g_signal_connect(G_OBJECT(sk_tab->vte), \"child-exited\", G_CALLBACK(sakura_child_exited_cb), NULL);\n\tg_signal_connect(G_OBJECT(sk_tab->vte), \"eof\", G_CALLBACK(sakura_eof_cb), NULL);\n\tg_signal_connect(G_OBJECT(sk_tab->vte), \"window-title-changed\", G_CALLBACK(sakura_title_changed_cb), NULL);\n\tg_signal_connect_after(G_OBJECT(sk_tab->vte), \"button-press-event\", G_CALLBACK(sakura_term_buttonpressed_cb), sakura.menu);\n\tg_signal_connect_swapped(G_OBJECT(sk_tab->vte), \"button-release-event\", G_CALLBACK(sakura_term_buttonreleased_cb), sakura.menu);\n\n\t/* Label & button signals */\n\t/* We need the hbox to know which label/button was clicked */\n\tg_signal_connect(G_OBJECT(event_box), \"button_press_event\", G_CALLBACK(sakura_label_clicked_cb), sk_tab->hbox);\n\tif (sakura.show_closebutton) {\n\t\tg_signal_connect(G_OBJECT(close_button), \"clicked\", G_CALLBACK(sakura_closebutton_clicked_cb), sk_tab->hbox);\n\t}\n\n\t/* Allow the user to use a different TERM value */\n\tchar *command_env[2]; command_env[1]=NULL;\n\tif (sakura.term != NULL) {\n\t\tcommand_env[0] = g_strdup_printf (\"TERM=%s\", sakura.term);\n\t} else {\n\t\tcommand_env[0] = g_strdup_printf (\"TERM=xterm-256color\");\n\t}\n\n\t/******* First tab **********/\n\tnpages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\tif (npages == 1) {\n\t\tif (sakura.show_tab_bar == SHOW_TAB_BAR_ALWAYS) {\n\t\t\tgtk_notebook_set_show_tabs(GTK_NOTEBOOK(sakura.notebook), TRUE);\n\t\t} else {\n\t\t\tgtk_notebook_set_show_tabs(GTK_NOTEBOOK(sakura.notebook), FALSE);\n\t\t}\n\n\t\tgtk_notebook_set_show_border(GTK_NOTEBOOK(sakura.notebook), FALSE);\n\n\t\t/* Set geometry hints when the first tab is created */\n\t\tGdkGeometry sk_hints;\n\n\t\tsk_hints.base_width = vte_terminal_get_char_width(VTE_TERMINAL(sk_tab->vte));\n\t\tsk_hints.base_height = vte_terminal_get_char_height(VTE_TERMINAL(sk_tab->vte));\n\t\tsk_hints.min_width = vte_terminal_get_char_width(VTE_TERMINAL(sk_tab->vte)) * DEFAULT_MIN_WIDTH_CHARS;\n\t\tsk_hints.min_height = vte_terminal_get_char_height(VTE_TERMINAL(sk_tab->vte)) * DEFAULT_MIN_HEIGHT_CHARS;\n\t\tsk_hints.width_inc = vte_terminal_get_char_width(VTE_TERMINAL(sk_tab->vte));\n\t\tsk_hints.height_inc = vte_terminal_get_char_height(VTE_TERMINAL(sk_tab->vte));\n\n\t\tgtk_window_set_geometry_hints(GTK_WINDOW(sakura.main_window), GTK_WIDGET (sk_tab->vte), &sk_hints,\n\t\t                              GDK_HINT_RESIZE_INC | GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE);\n\n\t\tsakura_set_font();\n\t\tsakura_set_colors();\n\t\t/* Set size before showing the widgets but after setting the font */\n\t\tsakura_set_size();\n\n\t\t/* Notebook signals. Per notebook signals only need to be defined once, so we put them here */\n\t\tg_signal_connect(sakura.notebook, \"scroll-event\", G_CALLBACK(sakura_notebook_scroll_cb), NULL);\n\t\tg_signal_connect(G_OBJECT(sakura.notebook), \"switch-page\", G_CALLBACK(sakura_switch_page_cb), NULL);\n\t\tg_signal_connect(G_OBJECT(sakura.notebook), \"page-removed\", G_CALLBACK(sakura_page_removed_cb), NULL);\n\t\tg_signal_connect(G_OBJECT(sakura.notebook), \"focus-in-event\", G_CALLBACK(sakura_notebook_focus_cb), NULL);\n\n\t\tgtk_widget_show_all(sakura.notebook);\n\t\tif (!sakura.show_scrollbar) {\n\t\t\tgtk_widget_hide(sk_tab->scrollbar);\n\t\t}\n\n\t\tgtk_widget_show(sakura.main_window);\n\n\t\tsakura_set_colors();\n#ifdef GDK_WINDOWING_X11\n\t\t/* Set WINDOWID env variable */\n\t\tGdkDisplay *display = gdk_display_get_default();\n\n\t\tif (GDK_IS_X11_DISPLAY (display)) {\n\t\t\tGdkWindow *gwin = gtk_widget_get_window (sakura.main_window);\n\t\t\tif (gwin != NULL) {\n\t\t\t\tguint winid = gdk_x11_window_get_xid (gwin);\n\t\t\t\tgchar *winidstr = g_strdup_printf (\"%d\", winid);\n\t\t\t\tg_setenv (\"WINDOWID\", winidstr, FALSE);\n\t\t\t\tg_free (winidstr);\n\t\t\t}\n\t\t}\n#endif\n\n\t\tint command_argc = 0; char **command_argv = NULL;\n\n\t\t/* Execute command for the fist tab if we have one */\n\t\tif (option_execute||option_xterm_execute) {\n\t\t\tchar *path;\n\n\t\t\tsakura_build_command(&command_argc, &command_argv);\n\n\t\t\t/* If the command is valid, run it */\n\t\t\tif (command_argc > 0) {\n\t\t\t\tpath = g_find_program_in_path(command_argv[0]);\n\n\t\t\t\tif (!path) {\n\t\t\t\t\tsakura_error(\"%s command not found\", command_argv[0]);\n\t\t\t\t\tcommand_argc = 0;\n\t\t\t\t}\n\t\t\t\tvte_terminal_spawn_async(VTE_TERMINAL(sk_tab->vte), VTE_PTY_NO_HELPER, NULL, command_argv, command_env,\n\t\t\t\t\t\t       \t         G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, -1, NULL, sakura_spawn_callback, sk_tab);\n\n\t\t\t\tfree(path);\n\t\t\t\tg_strfreev(command_argv);\n\t\t\t}\n\t\t} \n\n\t\t/* Fork shell if there is no execute option or if the command is not valid */\n\t\tif ( (!option_execute && !option_xterm_execute) || (command_argc==0)) {\n\t\t\tif (option_hold == TRUE) {\n\t\t\t\tsakura_error(\"Hold option given without any command\");\n\t\t\t\toption_hold = FALSE;\n\t\t\t}\n\t\t\tvte_terminal_spawn_async(VTE_TERMINAL(sk_tab->vte), VTE_PTY_NO_HELPER, cwd, sakura.argv, command_env,\n\t\t\t\t\t        G_SPAWN_SEARCH_PATH|G_SPAWN_FILE_AND_ARGV_ZERO, NULL, NULL, NULL, -1, NULL, sakura_spawn_callback, sk_tab);\n\t\t}\n\n\t/********** Not the first tab ************/\n\t} else {\n\t\tsakura_set_font();\n\t\tsakura_set_colors();\n\t\tgtk_widget_show_all(sk_tab->hbox);\n\t\tif (!sakura.show_scrollbar) {\n\t\t\tgtk_widget_hide(sk_tab->scrollbar);\n\t\t}\n\n\t\tif (npages == 2 && sakura.show_tab_bar != SHOW_TAB_BAR_NEVER) {\n\t\t\tgtk_notebook_set_show_tabs(GTK_NOTEBOOK(sakura.notebook), TRUE);\n\t\t\tsakura_set_size();\n\t\t}\n\t\t/* Call set_current page after showing the widget: gtk ignores this\n\t\t * function in the window is not visible *sigh*. Gtk documentation\n\t\t * says this is for \"historical\" reasons. Me arse */\n\t\tgtk_notebook_set_current_page(GTK_NOTEBOOK(sakura.notebook), index);\n\n\t\tint command_argc = 0; char **command_argv = NULL;\n\n\t\t/* Execute command (only in the first run) for additional tabs if we have one */\n\t\tif ((option_execute||option_xterm_execute) && sakura.first_run) {\n\t\t\tchar *path;\n\n\t\t\tsakura_build_command(&command_argc, &command_argv);\n\n\t\t\t/* If the command is valid, run it */\n\t\t\tif (command_argc > 0) {\n\t\t\t\tpath = g_find_program_in_path(command_argv[0]);\n\n\t\t\t\tif (!path) {\n\t\t\t\t\tsakura_error(\"%s command not found\", command_argv[0]);\n\t\t\t\t\tcommand_argc = 0;\n\t\t\t\t}\n\t\t\t\tvte_terminal_spawn_async(VTE_TERMINAL(sk_tab->vte), VTE_PTY_NO_HELPER, NULL, command_argv, command_env,\n\t\t\t\t\t\t       \t         G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, -1, NULL, sakura_spawn_callback, sk_tab);\n\n\t\t\t\tfree(path);\n\t\t\t\tg_strfreev(command_argv);\n\t\t\t}\n\t\t}\n\n\t\t/* Fork shell if there is no execute option or if the command is not valid */\n\t\tif ( (!option_execute && !option_xterm_execute) || (command_argc==0)) {\n\t\t\tif (option_hold == TRUE) {\n\t\t\t\tsakura_error(\"Hold option given without any command\");\n\t\t\t\toption_hold = FALSE;\n\t\t\t}\n\t\t\tvte_terminal_spawn_async(VTE_TERMINAL(sk_tab->vte), VTE_PTY_NO_HELPER, cwd, sakura.argv, command_env,\n\t\t\t\t\t        G_SPAWN_SEARCH_PATH|G_SPAWN_FILE_AND_ARGV_ZERO, NULL, NULL, NULL, -1, NULL, sakura_spawn_callback, sk_tab);\n\t\t}\n\t}\n\n\tfree(cwd);\n\n\t/* Applying tab title pattern from config (https://answers.launchpad.net/sakura/+question/267951) */\n\tif (sakura.tab_default_title != NULL) {\n\t\tdefault_label_text = sakura.tab_default_title;\n\t\tsk_tab->label_set_byuser = true;\n\t} else {\n\t\tsk_tab->label_set_byuser=false;\n\t}\n\n\t/* Set the default title text (NULL is valid) */\n\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\tsakura_set_tab_label_text(default_label_text, page);\n\n\t/* Init vte terminal */\n\tvte_terminal_set_scrollback_lines(VTE_TERMINAL(sk_tab->vte), sakura.scroll_lines);\n\tvte_terminal_match_add_regex(VTE_TERMINAL(sk_tab->vte), sakura.http_vteregexp, PCRE2_CASELESS);\n\tvte_terminal_match_add_regex(VTE_TERMINAL(sk_tab->vte), sakura.mail_vteregexp, PCRE2_CASELESS);\n\tvte_terminal_set_mouse_autohide(VTE_TERMINAL(sk_tab->vte), TRUE);\n\tvte_terminal_set_backspace_binding(VTE_TERMINAL(sk_tab->vte), VTE_ERASE_ASCII_DELETE);\n\tvte_terminal_set_word_char_exceptions(VTE_TERMINAL(sk_tab->vte), sakura.word_chars);\n\tvte_terminal_set_audible_bell (VTE_TERMINAL(sk_tab->vte), sakura.audible_bell ? TRUE : FALSE);\n\tvte_terminal_set_cursor_blink_mode (VTE_TERMINAL(sk_tab->vte), sakura.blinking_cursor ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF);\n\tvte_terminal_set_cursor_shape (VTE_TERMINAL(sk_tab->vte), sakura.cursor_type);\n\n}\n\n\n/* Do all the work necessary before & after deleting the tab passed as a parameter */\nstatic void\nsakura_close_tab (gint page)\n{\n\tgint npages, response; pid_t pgid;\n\tstruct sakura_tab *sk_tab;\n\tGtkWidget *dialog;\n\n\tnpages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\tsk_tab = sakura_get_sktab(sakura, page);\n\n\t/* Only write configuration to disk if it's the last tab */\n\tif (npages == 1) {\n\t\tsakura_config_done();\n\t}\n\n\t/* Check if there are running processes for this tab. Use tcgetpgrp to compare to the shell PGID */\n\tpgid = tcgetpgrp(vte_pty_get_fd(vte_terminal_get_pty(VTE_TERMINAL(sk_tab->vte))));\n\n\tif ( (pgid != -1) && (pgid != sk_tab->pid) && (!sakura.less_questions) ) {\n\t\tdialog=gtk_message_dialog_new(GTK_WINDOW(sakura.main_window), GTK_DIALOG_MODAL,\n                                              GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,\n                                              _(\"There is a running process in this terminal.\\n\\nDo you really want to close it?\"));\n\t\tresponse=gtk_dialog_run(GTK_DIALOG(dialog));\n\t\tgtk_widget_destroy(dialog);\n\n\t\tif (response==GTK_RESPONSE_YES)\n\t\t\tsakura_del_tab(page);\n\n\t} else /* No processes */\n\t\tsakura_del_tab(page);\n\n\t/* And destroy sakura if it's the last tab */\n\tif (npages == 1)\n\t\tsakura_destroy();\n}\n\n\n/* Delete the notebook tab passed as a parameter */\nstatic void\nsakura_del_tab(gint page)\n{\n\tstruct sakura_tab *sk_tab;\n\tgint npages;\n\n\tsk_tab = sakura_get_sktab(sakura, page);\n\tnpages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));\n\n\t/* Do the first tab checks BEFORE deleting the tab, to ensure correct\n\t * sizes are calculated when the tab is deleted */\n\tif (npages == 2) {\n\t\tif (sakura.show_tab_bar == SHOW_TAB_BAR_ALWAYS) {\n\t\t\tgtk_notebook_set_show_tabs(GTK_NOTEBOOK(sakura.notebook), TRUE);\n\t\t} else {\n\t\t\tgtk_notebook_set_show_tabs(GTK_NOTEBOOK(sakura.notebook), FALSE);\n\t\t}\n\t}\n\n\tgtk_widget_hide(sk_tab->hbox);\n\tg_signal_handler_disconnect (sk_tab->vte, sk_tab->exit_handler_id);\n\tgtk_notebook_remove_page(GTK_NOTEBOOK(sakura.notebook), page);\n\n\t/* Find the next page, if it exists, and grab focus */\n\tif (gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook)) > 0) {\n\t\tpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(sakura.notebook));\n\t\tsk_tab = sakura_get_sktab(sakura, page);\n\t\tgtk_widget_grab_focus(sk_tab->vte);\n\t}\n}\n\n\n/* New window -- launch a new instance */\nstatic void\nsakura_new_window()\n{\n\tGPid pid;\n\tGError* error = NULL;\n\tchar** spawn_argv = malloc(sizeof(char*) * ((sakura.orig_argc ? sakura.orig_argc : 1) + 1));\n\tif(!spawn_argv) {\n\t\tfprintf(stderr, \"Error allocating memory for starting new instance!\\n\");\n\t\treturn;\n\t}\n\n#ifdef __linux__\n\t/* We try to get the full path of the currently running instance of sakura and use\n\t * that for spawning a new process. This is to take care of the case when running\n\t * an instance of sakura no in PATH. Unfortunately, procfs is not universally\n\t * supported, we restrict it to Linux (and we assume that if we build on Linux,\n\t * we will run on Linux as well) */\n\tchar cmdline[PATH_MAX + 1];\n\tssize_t tmp = readlink(\"/proc/self/exe\", cmdline, PATH_MAX);\n\tcmdline[tmp] = 0;\n\tspawn_argv[0] = cmdline;\n#else\n\t/* Otherwise, we rely on sakura being in PATH */\n\tspawn_argv[0] = \"sakura\";\n#endif\n\n\t/* remove command arguments so that the new window will be in interactive mode */\n\tchar** dst;\n\tchar** src;\n\tif(sakura.orig_argc) for(dst = spawn_argv + 1, src = sakura.orig_argv + 1; *src; ++dst, ++src) {\n\t\tif(!strcmp(*src, \"-e\") || !strcmp(*src, \"--xterm-execute\")) {\n\t\t\tbreak;\n\t\t}\n\t\tif(!strcmp(*src, \"-x\") || !strcmp(*src, \"--xterm\")) {\n\t\t\t++src;\n\t\t\tif(!(*src)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\t*dst = *src;\n\t\t}\n\t}\n\t*dst = NULL;\n\n\t/* Get a startup notification ID / xdg-activation token and add it to the environment */\n\tchar **envp = NULL;\n\t/* TODO: keep this instead of recreating every time */\n\tGAppInfo *info = G_APP_INFO(g_desktop_app_info_new(\"sakura.desktop\"));\n\tif (!info) info = g_app_info_create_from_commandline(\"sakura\", \"sakura\", G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION, NULL);\n\tif (info) {\n\t\tGdkAppLaunchContext *ctx = gdk_display_get_app_launch_context(gdk_display_get_default());\n\t\tchar *startup_id = g_app_launch_context_get_startup_notify_id(G_APP_LAUNCH_CONTEXT(ctx), info, NULL);\n\t\tif (startup_id) {\n\t\t\tenvp = g_get_environ();\n\t\t\tenvp = g_environ_setenv(envp, \"DESKTOP_STARTUP_ID\", startup_id, TRUE);\n\t\t\tenvp = g_environ_setenv(envp, \"XDG_ACTIVATION_TOKEN\", startup_id, TRUE);\n\t\t}\n\t\tg_object_unref(ctx);\n\t}\n\n\tif (!g_spawn_async(NULL, spawn_argv, envp,\n\t\t\tG_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,\n\t\t\tNULL, NULL, &pid, &error)) {\n\t\tfprintf(stderr, \"Error starting new instance:\\n%s\\n\", error->message);\n\t\tg_error_free(error);\n\t}\n\tg_spawn_close_pid(pid);\n\tfree(spawn_argv);\n\tif (envp) g_strfreev(envp);\n\tif (info) g_object_unref(info);\n}\n\n\n/* Save configuration */\nstatic void\nsakura_config_done()\n{\n\tGError *gerror = NULL;\n\tgsize len = 0;\n\n\t/* Don't save config file. Option only available thru the config file for users who know the risks */\n\tif (sakura.dont_save)\n\t\treturn;\n\n\tgchar *cfgdata = g_key_file_to_data(sakura.cfg, &len, &gerror);\n\tif (!cfgdata) {\n\t\tfprintf(stderr, \"%s\\n\", gerror->message);\n\t\tg_error_free(gerror);\n\t\texit(EXIT_FAILURE);\n\t}\n\n\tbool overwrite = false;\n\n\t/* If there's been changes by another sakura process, ask whether to overwrite it or not */\n\t/* And if less_questions options is selected don't overwrite */\n\tif (sakura.externally_modified && !sakura.config_modified && !sakura.less_questions) {\n\t\tGtkWidget *dialog;\n\t\tgint response;\n\n\t\tdialog = gtk_message_dialog_new(GTK_WINDOW(sakura.main_window), GTK_DIALOG_MODAL,\n\t\t\t\t\t\tGTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,\n\t\t\t\t\t\t_(\"Configuration has been modified by another process. Overwrite?\"));\n\n\t\tresponse = gtk_dialog_run(GTK_DIALOG(dialog));\n\t\tgtk_widget_destroy(dialog);\n\n\t\tif (response == GTK_RESPONSE_YES)\n\t\t\toverwrite = true;\n\t}\n\n\t/* Write to file IF there's been changes of IF we want to overwrite another process changes */\n\tif (sakura.config_modified || overwrite) {\n\t\tGIOChannel *cfgfile = g_io_channel_new_file(sakura.configfile, \"w\", &gerror);\n\t\tif (!cfgfile) {\n\t\t\tfprintf(stderr, \"%s\\n\", gerror->message);\n\t\t\tg_error_free(gerror);\n\t\t\texit(EXIT_FAILURE);\n\t\t}\n\n\t\t/* FIXME: if the number of chars written is not \"len\", something happened.\n\t\t * Check for errors appropriately...*/\n\t\tGIOStatus status = g_io_channel_write_chars(cfgfile, cfgdata, len, NULL, &gerror);\n\t\tif (status != G_IO_STATUS_NORMAL) {\n\t\t\t// FIXME: we should deal with temporary failures (G_IO_STATUS_AGAIN)\n\t\t\tfprintf(stderr, \"%s\\n\", gerror->message);\n\t\t\tg_error_free(gerror);\n\t\t\texit(EXIT_FAILURE);\n\t\t}\n\t\tg_io_channel_shutdown(cfgfile, TRUE, &gerror);\n\t\tg_io_channel_unref(cfgfile);\n\t}\n}\n\n\n/*******************/\n/* Misc. functions */\n/*******************/\n\nstatic void\nsakura_error(const char *format, ...)\n{\n\tGtkWidget *dialog;\n\tva_list args;\n\tchar* buff;\n\n\tva_start(args, format);\n\tbuff = g_malloc(sizeof(char)*ERROR_BUFFER_LENGTH);\n\tvsnprintf(buff, sizeof(char)*ERROR_BUFFER_LENGTH, format, args);\n\tva_end(args);\n\n\tdialog = gtk_message_dialog_new(GTK_WINDOW(sakura.main_window), GTK_DIALOG_DESTROY_WITH_PARENT,\n\t                                GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, \"%s\", buff);\n\tgtk_window_set_title(GTK_WINDOW(dialog), _(\"Error message\"));\n\tgtk_dialog_run (GTK_DIALOG (dialog));\n\tgtk_widget_destroy (dialog);\n\tg_free(buff);\n}\n\n\nstatic void\nsakura_build_command(int *command_argc, char ***command_argv)\n{\n\tGError *gerror = NULL;\n\n\tif (option_execute) {\n\t\t/* -x option: only one argument */\n\t\tif (!g_shell_parse_argv(option_execute, command_argc, command_argv, &gerror)) {\n\t\t\tswitch (gerror->code) {\n\t\t\tcase G_SHELL_ERROR_EMPTY_STRING:\n\t\t\t\tsakura_error(\"Empty exec string\");\n\t\t\t\texit(1);\n\t\t\t\tbreak;\n\t\t\tcase G_SHELL_ERROR_BAD_QUOTING:\n\t\t\t\tsakura_error(\"Cannot parse command line arguments: mangled quoting\");\n\t\t\t\texit(1);\n\t\t\t\tbreak;\n\t\t\tcase G_SHELL_ERROR_FAILED:\n\t\t\t\tsakura_error(\"Error in exec option command line arguments\");\n\t\t\t\texit(1);\n\t\t\t}\n\t\t\tg_error_free(gerror);\n\t\t}\n\t} else {\n\t\t/* -e option: last in the command line, takes all extra arguments */\n\t\tif (option_xterm_args) {\n\n\t\t\tguint size=0, i=0; gchar **quoted_args=NULL;\n\n\t\t\tdo { size++; } while (option_xterm_args[size]); /* Get option_xterm_args size */\n\n\t\t\t/* Quote all arguments to be able to use parameters with spaces like filenames */\n\t\t\tquoted_args = g_malloc(sizeof(char *) * (size+1));\n\t\t\twhile (option_xterm_args[i]) {\n\t\t\t\tquoted_args[i] = g_shell_quote(option_xterm_args[i]); i++;\n\t\t\t} \n\t\t\tquoted_args[i]=NULL;\n\n\t\t\t/* Join all arguments and parse them to create argc&argv */\n\t\t\tgchar *command_joined= command_joined = g_strjoinv(\" \", quoted_args);\n\t\t\tif (!g_shell_parse_argv(command_joined, command_argc, command_argv, &gerror)) {\n\t\t\t\tswitch (gerror->code) {\n\t\t\t\tcase G_SHELL_ERROR_EMPTY_STRING:\n\t\t\t\t\tsakura_error(\"Empty exec string\");\n\t\t\t\t\texit(1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase G_SHELL_ERROR_BAD_QUOTING:\n\t\t\t\t\tsakura_error(\"Cannot parse command line arguments: mangled quoting\");\n\t\t\t\t\texit(1);\n\t\t\t\tcase G_SHELL_ERROR_FAILED:\n\t\t\t\t\tsakura_error(\"Error in exec option command line arguments\");\n\t\t\t\t\texit(1);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (gerror != NULL)\n\t\t\t\tg_error_free(gerror);\n\t\t\tg_free(command_joined);\n\t\t\tg_strfreev(quoted_args);\n\t\t}\n\t}\n}\n\n\nstatic void\nsakura_set_keybind(const gchar *key, guint value)\n{\n\tchar *valname;\n\n\tvalname = gdk_keyval_name(value);\n\tg_key_file_set_string(sakura.cfg, cfg_group, key, valname);\n\tsakura.config_modified = TRUE;\n}\n\n\nstatic guint\nsakura_get_keybind(const gchar *key)\n{\n\tgchar *value;\n\tguint retval = GDK_KEY_VoidSymbol;\n\n\tvalue = g_key_file_get_string(sakura.cfg, cfg_group, key, NULL);\n\tif (value != NULL) {\n\t\tretval = gdk_keyval_from_name(value);\n\t\tg_free(value);\n\t}\n\n\t/* For backwards compatibility with integer values */\n\t/* If gdk_keyval_from_name fail, it seems to be integer value*/\n\tif ((retval == GDK_KEY_VoidSymbol) || (retval == 0)) {\n\t\tretval = g_key_file_get_integer(sakura.cfg, cfg_group, key, NULL);\n\t}\n\n\t/* Always use uppercase value as keyval */\n\treturn gdk_keyval_to_upper(retval);\n}\n\n\n/* Legacy function to use as fallback if our shell doesn't emit OSC7.\n * Retrieves the CWD of the specified sk_tab page.Original borrowed \n * from gnome-terminal. Adapted by Hong Jen Yee and David Gómez */\nstatic char *\nsakura_get_term_cwd(struct sakura_tab* sk_tab)\n{\n\tchar *cwd = NULL;\n\n\tif (sk_tab->pid >= 0) {\n\t\tchar *file, *buf;\n\t\tstruct stat sb;\n\t\tint len;\n\n\t\tfile = g_strdup_printf (\"/proc/%d/cwd\", sk_tab->pid);\n\n\t\tif (g_stat(file, &sb) == -1) {\n\t\t\tg_free(file);\n\t\t\treturn cwd;\n\t\t}\n\n\t\tbuf = g_malloc(sb.st_size + 1);\n\n\t\tif (buf == NULL) {\n\t\t\tg_free(file);\n\t\t\treturn cwd;\n\t\t}\n\n\t\tlen = readlink(file, buf, sb.st_size + 1);\n\n\t\tif (len > 0 && buf[0] == '/') {\n\t\t\tbuf[len] = '\\0';\n\t\t\tcwd = g_strdup(buf);\n\t\t}\n\n\t\tg_free(buf);\n\t\tg_free(file);\n\t}\n\n\treturn cwd;\n}\n\n\nstatic char *\nsakura_get_term_cwd_osc7(struct sakura_tab* sk_tab)\n{\n\tgchar *cwd = NULL; gchar *osc7_hostname = NULL; \n\tconst char *osc7_uri = NULL; const char *hostname = NULL;\n\n\tosc7_uri = vte_terminal_get_current_directory_uri(VTE_TERMINAL(sk_tab->vte));\n\n\tif (osc7_uri) {\n\t\tcwd = g_filename_from_uri(osc7_uri, &osc7_hostname, NULL);\n\t\t/* Check if the hostname matchs. If not, return NULL */\n\t\thostname = g_get_host_name();\n\t\tif ((strcmp(osc7_hostname, hostname) != 0) || (strcmp(osc7_hostname, \"localhost\") == 0)) cwd = NULL;\n\t}\n\n\treturn cwd;\n}\n\n\nstatic guint\nsakura_tokeycode (guint key)\n{\n\tGdkKeymap *keymap;\n\tGdkKeymapKey *keys;\n\tgint n_keys;\n\tguint res = 0;\n\n\tkeymap = gdk_keymap_get_for_display(gdk_display_get_default());\n\n\t/* Empty shortcut */\n\tif (key == 0) return 0;\n\n\tif (gdk_keymap_get_entries_for_keyval(keymap, key, &keys, &n_keys)) {\n\t\tif (n_keys > 0) {\n\t\t\tres = keys[0].keycode;\n\t\t}\n\t\tg_free(keys);\n\t}\n\n\treturn res;\n}\n\n\n/* This function is used to fix bug #1393939 */\nstatic void\nsakura_sanitize_working_directory()\n{\n\tconst gchar *home_directory = g_getenv(\"HOME\");\n\tif (home_directory == NULL) {\n\t\thome_directory = g_get_home_dir();\n\t}\n\n\tif (home_directory != NULL) {\n\t\tif (chdir(home_directory)) {\n\t\t\tfprintf(stderr, _(\"Cannot change working directory\\n\"));\n\t\t\texit(1);\n\t\t}\n\t}\n}\n\n\n/********/\n/* main */\n/********/\n\nint\nmain(int argc, char **argv)\n{\n\tgchar *localedir;\n\tint i; int n;\n\tchar **nargv; int nargc;\n\tgboolean have_e;\n\n\t/* Localization */\n\tsetlocale(LC_ALL, \"\");\n\tlocaledir = g_strdup_printf(\"%s/locale\", DATADIR);\n\ttextdomain(GETTEXT_PACKAGE);\n\tbindtextdomain(GETTEXT_PACKAGE, localedir);\n\tbind_textdomain_codeset (GETTEXT_PACKAGE, \"UTF-8\");\n\tg_free(localedir);\n\n\t/* Rewrites argv to include a -- after the -e argument this is required to make\n\t * sure GOption doesn't grab any arguments meant for the command being called */\n\n\t/* Initialize nargv */\n\tnargv = (char**)calloc((argc+1), sizeof(char*));\n\tn = 0; nargc = argc;\n\thave_e = FALSE;\n\t/* Save original arguments to start a new instance if needed */\n\tsakura.orig_argc = argc;\n\tsakura.orig_argv = argv;\n\n\tfor (i=0; i<argc; i++) {\n\t\tif (!have_e && g_strcmp0(argv[i],\"-e\") == 0)\n\t\t{\n\t\t\tnargv[n]=\"-e\";\n\t\t\tn++;\n\t\t\tnargv[n]=\"--\";\n\t\t\tnargc++;\n\t\t\thave_e = TRUE;\n\t\t} else {\n\t\t\tnargv[n]=g_strdup(argv[i]);\n\t\t}\n\t\tn++;\n\t}\n\n\t/* Options parsing */\n\tGError *error=NULL;\n\tGOptionContext *context; GOptionGroup *option_group;\n\n\tcontext = g_option_context_new (_(\"- vte-based terminal emulator\"));\n\toption_group = gtk_get_option_group(TRUE);\n\tg_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);\n\tg_option_group_set_translation_domain(option_group, GETTEXT_PACKAGE);\n\tg_option_context_add_group (context, option_group);\n\tif (!g_option_context_parse (context, &nargc, &nargv, &error)) {\n\t\tfprintf(stderr, \"%s\\n\", error->message);\n\t\tg_error_free(error);\n\t\texit(1);\n\t}\n\n\tg_option_context_free(context);\n\n\tif (option_workdir && chdir(option_workdir)) {\n\t\tfprintf(stderr, _(\"Cannot change working directory\\n\"));\n\t\texit(1);\n\t}\n\n\tif (option_version) {\n\t\tfprintf(stderr, _(\"sakura version is %s\\n\"), VERSION);\n\t\texit(1);\n\t}\n\n\tif (option_ntabs <= 0) {\n\t\toption_ntabs = 1;\n\t}\n\n\t/* Init stuff */\n\tgtk_init(&nargc, &nargv); g_strfreev(nargv);\n\tsakura_init();\n\n\t/* Add initial tabs (1 by default) */\n\tfor (i=0; i<option_ntabs; i++)\n\t\tsakura_add_tab();\n\n\t/* Post init stuff */\n\tsakura.first_run=false;\n\tg_strfreev(option_xterm_args);\n\n\tsakura_sanitize_working_directory();\n\n\tgtk_main();\n\n\treturn 0;\n}\n\n"
  }
]