diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 0000000..a9358ff
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,186 @@
+// http://eslint.org/docs/rules/
+{
+ //"extends": "eslint:recommended",
+ "env": {
+ //remove either of the lines below if you don't need it
+ //enable nodejs environment
+ "node": 1,
+ //enable browser environment
+ "browser": 1
+ },
+ "parserOptions": {
+ "ecmaVersion": 6
+ },
+ "globals": {
+ //place settings for globals here, such as
+ "exampleGlobalVariable": true,
+ "log": true,
+ "imports": true,
+ "C_": true
+ },
+ "rules": {
+ "comma-dangle": 0,//[2, "always-multiline"],
+ "no-cond-assign": 2,
+ "no-console": 1,
+ "no-constant-condition": 2,
+ "no-control-regex": 2,
+ "no-debugger": 2,
+ "no-dupe-args": 2,
+ "no-dupe-keys": 2,
+ "no-duplicate-case": 2,
+ "no-empty-character-class": 2,
+ "no-empty": 2,
+ "no-ex-assign": 2,
+ "no-extra-boolean-cast": 2,
+ "no-extra-parens": 0,
+ "no-extra-semi": 2,
+ "no-func-assign": 2,
+ "no-inner-declarations": 2,
+ "no-invalid-regexp": 2,
+ "no-irregular-whitespace": 2,
+ "no-negated-in-lhs": 2,
+ "no-obj-calls": 2,
+ "no-regex-spaces": 2,
+ "no-sparse-arrays": 2,
+ "no-unreachable": 2,
+ "use-isnan": 2,
+ "valid-jsdoc": 0,
+ "valid-typeof": 2,
+ "no-unexpected-multiline": 2,
+
+ "accessor-pairs": 2,
+ "block-scoped-var": 2,
+ "complexity": 0,
+ "consistent-return": 2,
+ "curly": 2,
+ "default-case": 2,
+ "dot-notation": 1,
+ "dot-location": [2, "property"],
+ "eqeqeq": 2,
+ //"guard-for-in": 2,
+ "no-alert": 1,
+ "no-caller": 2,
+ "no-div-regex": 2,
+ "no-else-return": 2,
+ "no-eq-null": 2,
+ "no-eval": 2,
+ //"no-extend-native": 2, //TODO:re-enable? is this not supported by GS?
+ "no-extra-bind": 2,
+ "no-fallthrough": 2,
+ "no-floating-decimal": 2,
+ //"no-implicit-coercion": 2,
+ "no-implied-eval": 2,
+ "no-invalid-this": 0,
+ "no-iterator": 2,
+ "no-labels": 2,
+ "no-lone-blocks": 2,
+ //"no-loop-func": 2,
+ "no-multi-spaces": 1,
+ //"no-multi-str": 2,
+ "no-native-reassign": 2,
+ "no-new-func": 2,
+ "no-new-wrappers": 2,
+ "no-new": 2,
+ "no-octal-escape": 2,
+ "no-octal": 2,
+ "no-param-reassign": 0,
+ "no-process-env": 2,
+ "no-proto": 2,
+ "no-redeclare": 2,
+ "no-return-assign": 2,
+ "no-script-url": 2,
+ "no-self-compare": 2,
+ "no-sequences": 2,
+ "no-throw-literal": 2,
+ "no-unused-expressions": 2,
+ "no-useless-call": 2,
+ "no-useless-concat": 2,
+ "no-void": 2,
+ "no-warning-comments": [1, { "terms": ["todo", "fixme", "xxx"], "location": "start" }],
+ "no-with": 2,
+ //"radix": 2,
+ "vars-on-top": 0,
+ "wrap-iife": [2, "inside"],
+ "yoda": [2, "never"],
+
+ //"strict": [2, "global"],
+
+ "init-declarations": 0,
+ "no-catch-shadow": 0,
+ "no-delete-var": 2,
+ "no-label-var": 2,
+ "no-shadow-restricted-names": 2,
+ "no-shadow": 1,
+ "no-undef-init": 2,
+ "no-undef": 2,
+ "no-undefined": 2,
+ "no-unused-vars": 0, //TODO:re-enable?
+ "no-use-before-define": 1,
+
+ "callback-return": 2,
+ "handle-callback-err": 2,
+ "no-mixed-requires": [1, true],
+ "no-new-require": 2,
+ "no-path-concat": 2,
+ "no-process-exit": 2,
+ "no-sync": 2,
+
+ "array-bracket-spacing": 0,//[1, "always"],
+ "block-spacing": [1, "always"],
+ "brace-style": [1, "1tbs", {"allowSingleLine": false}],
+ "camelcase": 0,
+ "comma-spacing": [1, {"before": false, "after": true}],
+ "comma-style": [1, "last"],
+ "computed-property-spacing": [1, "never"],
+ "consistent-this": 0,
+ "eol-last": 1,
+ "func-names": 0,
+ //"func-style": [2, "declaration"],
+ "id-length": 0,
+ "indent": [1, 4],
+ "key-spacing": [1, {"beforeColon": false, "afterColon": true}],
+ "keyword-spacing": 1,
+ "lines-around-comment": 0,
+ "linebreak-style": [1, "unix"],
+ "max-nested-callbacks": [2, 3],
+ "new-cap": 0,
+ "new-parens": 2,
+ "newline-after-var": 0,
+ "no-array-constructor": 2,
+ //"no-continue": 2,
+ //"no-inline-comments": 1,
+ "no-lonely-if": 2,
+ "no-mixed-spaces-and-tabs": 1,
+ "no-multiple-empty-lines": [1, {"max": 2}],
+ "no-nested-ternary": 2,
+ "no-new-object": 2,
+ "no-spaced-func": 1,
+ "no-ternary": 0,
+ "no-trailing-spaces": 1,
+ "no-underscore-dangle": 0,
+ "no-unneeded-ternary": 1,
+ "object-curly-spacing": [1, "never"],
+ "one-var": [1, {"uninitialized": "always", "initialized": "never"}],
+ "operator-assignment": [1, "always"],
+ "operator-linebreak": [1, "after"],
+ "padded-blocks": [1, "never"],
+ "quote-props": [1, "as-needed"],
+ "quotes": [1, "single"],
+ "semi-spacing": [1, {"before": false, "after": true}],
+ "semi": 0, //[2, "always"],
+ "sort-vars": [1, {"ignoreCase": false}],
+ "space-before-blocks": [1, "always"],
+ "space-before-function-paren": [1, {"anonymous": "always", "named": "never"}],
+ "space-in-parens": [1, "never"],
+ "space-infix-ops": 1,
+ "space-unary-ops": [1, {"words": true, "nonwords": false}],
+ "spaced-comment": [1, "always", {"exceptions": ["-", "="]}],
+ "wrap-regex": 2,
+
+ "max-len": ['error', 160],
+ "no-bitwise": 0
+ },
+ "plugins": [
+ //you can put plugins here
+ ]
+}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a0fcc69
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+*~
+tmp
+*.pyc
+*.swp
+/.project
+/*.zip
+/*.geany
+*.out
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..e72bfdd
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..6c7f5de
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,61 @@
+# Basic Makefile
+
+UUID = ping-monitor@samuel.bachmann.gmail.com
+BASE_MODULES = $(UUID)/extension.js $(UUID)/README* $(UUID)/metadata.json $(UUID)/prefs.js $(UUID)/stylesheet.css $(UUID)/convenience.js $(UUID)/compat.js $(UUID)/ping.sh
+ifeq ($(strip $(DESTDIR)),)
+ INSTALLBASE = $(HOME)/.local/share/gnome-shell/extensions
+else
+ INSTALLBASE = $(DESTDIR)/usr/share/gnome-shell/extensions
+endif
+INSTALLNAME = ping-monitor@samuel.bachmann.gmail.com
+
+# The command line passed variable VERSION is used to set the version string
+# in the metadata and in the generated zip-file. If no VERSION is passed, the
+# current commit SHA1 is used as version number in the metadata while the
+# generated zip file has no string attached.
+ifdef VERSION
+ VSTRING = _v$(VERSION)
+else
+ VERSION = $(shell git rev-parse HEAD)
+ VSTRING =
+endif
+
+all: extension
+
+clean:
+ rm -f ./$(UUID)/schemas/gschemas.compiled
+
+extension: ./$(UUID)/schemas/gschemas.compiled
+
+./$(UUID)/schemas/gschemas.compiled: ./$(UUID)/schemas/org.gnome.shell.extensions.ping-monitor.gschema.xml
+ glib-compile-schemas ./$(UUID)/schemas/
+
+install: install-local
+
+install-local: _build
+ rm -rf $(INSTALLBASE)/$(INSTALLNAME)
+ mkdir -p $(INSTALLBASE)/$(INSTALLNAME)
+ cp -r ./_build/* $(INSTALLBASE)/$(INSTALLNAME)/
+ -rm -fR _build
+ echo done
+
+zip-file: _build
+ cd _build ; \
+ zip -qr "$(UUID)$(VSTRING).zip" .
+ mv _build/$(UUID)$(VSTRING).zip ./
+ -rm -fR _build
+
+_build: update-translation
+ -rm -fR ./_build
+ mkdir -p _build
+ cp $(BASE_MODULES) _build
+ mkdir -p _build/locale
+ cp -r $(UUID)/locale/* _build/locale/
+ mkdir -p _build/schemas
+ cp $(UUID)/schemas/*.xml _build/schemas/
+ cp $(UUID)/schemas/gschemas.compiled _build/schemas/
+ sed -i 's/"version": -1/"version": "$(VERSION)"/' _build/metadata.json;
+
+update-translation: all
+ cd po; \
+ ./compile.sh ../ping-monitor@samuel.bachmann.gmail.com/locale;
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3c7ffe7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,150 @@
+## Gnome shell ping monitor extension
+
+This is still in development and just an alpha version.
+
+### Installation
+
+#### Prerequisites
+
+This extension [requires GNOME Shell v3.4 or later](https://github.com/anybotics/gnome-shell-ping-monitor-applet/blob/master/ping-monitor%40samuel.bachmann.gmail.com/metadata.json#L2).
+
+Before installing this extension, ensure you have the necessary system packages installed:
+
+* On Ubuntu:
+
+ $ sudo apt-get install gir1.2-gtop-2.0 gir1.2-clutter-1.0
+
+* On Fedora:
+
+ $ sudo yum install --assumeyes libgtop2-devel
+
+* On openSUSE (Leap 42.1):
+
+ $ sudo zypper install gnome-shell-devel libgtop-devel libgtop-2_0-10
+
+For the browser installation (recommended), you will need the GNOME Shell integration browser extension for
+[Chrome](https://chrome.google.com/webstore/detail/gnome-shell-integration/gphhapmejobijbbhgpjhcjognlahblep),
+[Firefox](https://addons.mozilla.org/en-US/firefox/addon/gnome-shell-integration/) or
+[Opera](https://addons.opera.com/en/extensions/details/gnome-shell-integration/).
+
+Note: If you're using Firefox 52 or later, [you will also need to install `chrome-gnome-shell`](https://blogs.gnome.org/ne0sight/2016/12/25/how-to-install-gnome-shell-extensions-with-firefox-52/).
+The instructions are available [on the GNOME wiki](https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation#Ubuntu_Linux).
+
+#### Browser installation
+
+It's recommended you install the extension via the Gnome Shell Extensions website.
+
+Visit [this extension's page on extensions.gnome.org](https://extensions.gnome.org/extension/120/ping-monitor/),
+preferably in Firefox, and install by clicking the toggle button next to the extension's name.
+
+If the install was successful, the toggle button should now show "ON".
+If it failed, ensure that you installed all the [necessary dependencies](#prerequisites),
+and that you granted the browser permission to install extensions when prompted.
+Additionally, rebooting gnome-shell may help (type `Alt + F2` and input `r` in the prompt).
+
+#### Manual installation
+
+[Download the ZIP/Tarball](https://github.com/anybotics/gnome-shell-ping-monitor-applet/releases),
+extract the archive, open a shell into its directory, and run:
+
+ make install
+
+Alternately, if you plan on doing development on the extension, or testing modifications, it's advised you checkout the Git repository and install a symlink. First, install git if you don't have it: (sudo apt-get install git-core, sudo pacman -S git, etc), then run:
+
+ mkdir ~/git
+ cd ~/git
+ git clone git://github.com/anybotics/gnome-shell-ping-monitor-applet.git
+ mkdir -p ~/.local/share/gnome-shell/extensions
+ cd ~/.local/share/gnome-shell/extensions
+ ln -s ~/git/gnome-shell-ping-monitor-applet/ping-monitor@samuel.bachmann.gmail.com
+ gnome-shell-extension-tool --enable-extension=ping-monitor@samuel.bachmann.gmail.com
+
+And restart gnome-shell (`Alt + F2`, then `r`) or reboot the machine.
+
+On openSUSE you need to install a devel package that provides the `gnome-shell-extension-tool` command:
+
+ $ sudo zypper install gnome-shell-devel
+
+
+### Configuration
+
+At the moment you still need a manual config file. Create a file `~/.config/ping-monitor.conf` with e.g.:
+
+```
+{
+ "debug_output": false,
+ "ping_config": [
+ {
+ "tag": "google",
+ "name": "Google",
+ "address": "8.8.8.8",
+ "ping_count": 2,
+ "ping_interval": 0.3,
+ "ping_deadline": 3,
+ "refresh_interval": 2000,
+ "active": true,
+ "visible": true,
+ "show_name": true,
+ "show_address": true,
+ "show_tooltip": true,
+ "warning_threshold": 20
+ },
+ {
+ "tag": "router",
+ "name": "Router",
+ "address": "192.168.0.1",
+ "ping_count": 2,
+ "ping_interval": 0.3,
+ "ping_deadline": 3,
+ "refresh_interval": 2000,
+ "active": true,
+ "visible": true,
+ "show_name": true,
+ "show_address": true,
+ "show_tooltip": true,
+ "warning_threshold": 20
+ }
+ ]
+}
+```
+
+Make sure that you define all variables.
+
+To load a new config you need to restart Gnome-Shell: `Alt + F2` then `r` and `Enter`.
+
+### Development
+
+#### Deployment
+
+To create a zip file with the specified version number, ready to upload to [Gnome Shell Extensions](https://extensions.gnome.org/) or similar repository, run:
+
+ make zip-file VERSION=
+
+To determine the version number to use, check the extensions site and increment from the largest published version.
+
+The specified version number is just for documentation and isn't strictly necessary in the uploaded file, since the extensions website will dynamically set this and override whatever we enter.
+
+Once uploaded, [create a Github release](https://github.com/anybotics/gnome-shell-ping-monitor-applet/releases) with the same version number.
+
+### Authors
+
+[samuelba](https://github.com/samuelba)
+
+I took the [gnome-shell-system-monitor-applet](https://github.com/anybotics/gnome-shell-system-monitor-applet) and wrote my ping applet on top of it.
+
+### License
+
+Copyright (C) 2019 Samuel Bachmann aka samuelba
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
diff --git a/archlinux/PKGBUILD b/archlinux/PKGBUILD
new file mode 100644
index 0000000..c0f2005
--- /dev/null
+++ b/archlinux/PKGBUILD
@@ -0,0 +1,35 @@
+# Maintainer: Florian Mounier aka paradoxxxzero
+pkgname=gnome-shell-system-monitor-applet-git
+pkgver=20120504
+pkgrel=1
+pkgdesc="System monitor extension for Gnome-Shell (display mem swap cpu usage)"
+arch=('any')
+url="http://github.com/paradoxxxzero/gnome-shell-system-monitor-applet"
+license=('GPL3')
+depends=('gnome-shell>=3.3.90' 'libgtop' 'networkmanager')
+makedepends=('git')
+provides=("system-monitor-applet")
+#install=gschemas.install
+
+_gitroot="git://github.com/paradoxxxzero/gnome-shell-system-monitor-applet.git"
+_gitname="gnome-shell-system-monitor-applet"
+
+build() {
+ cd ${srcdir}/
+ msg "Connecting to the GIT server..."
+ if [[ -d ${srcdir}/${_gitname} ]] ; then
+ cd ${_gitname}
+ git pull origin
+ msg "The local files are updated..."
+ else
+ git clone ${_gitroot} ${_gitname}
+ fi
+ msg "GIT checkout done."
+}
+
+package() {
+ cd "$srcdir/gnome-shell-system-monitor-applet"
+ mkdir -p "$pkgdir/usr/share/gnome-shell/extensions/"
+ cp -R "system-monitor@paradoxxx.zero.gmail.com" "$pkgdir/usr/share/gnome-shell/extensions"
+}
+
diff --git a/archlinux/PKGBUILD.gnome-shell-3.2 b/archlinux/PKGBUILD.gnome-shell-3.2
new file mode 100644
index 0000000..fb5c0d1
--- /dev/null
+++ b/archlinux/PKGBUILD.gnome-shell-3.2
@@ -0,0 +1,42 @@
+# Maintainer: Florian Mounier aka paradoxxxzero
+pkgname=gnome-shell-system-monitor-applet-git
+pkgver=20111023
+pkgrel=1
+pkgdesc="System monitor extension for Gnome-Shell (display mem swap cpu usage)"
+arch=('any')
+url="http://github.com/paradoxxxzero/gnome-shell-system-monitor-applet"
+license=('GPL3')
+depends=('gnome-shell<3.3' 'python-gobject' 'libgtop' 'networkmanager')
+makedepends=('git')
+provides=("system-monitor-applet")
+install=gschemas.install
+
+_gitroot="git://github.com/paradoxxxzero/gnome-shell-system-monitor-applet.git"
+_gitname="gnome-shell-system-monitor-applet"
+
+build() {
+ cd ${srcdir}/
+ msg "Connecting to the GIT server..."
+ if [[ -d ${srcdir}/${_gitname} ]] ; then
+ cd ${_gitname}
+ git pull origin
+ msg "The local files are updated..."
+ else
+ git clone ${_gitroot} ${_gitname}
+ fi
+ msg "GIT checkout done."
+}
+
+package() {
+ cd "$srcdir/gnome-shell-system-monitor-applet"
+ git checkout gnome-3.2
+ sed -i 's|GTop.glibtop_get_sysinfo().ncpu|this.get_cores()|' "system-monitor@paradoxxx.zero.gmail.com/extension.js"
+ mkdir -p "$pkgdir/usr/share/gnome-shell/extensions/"
+ cp -R "system-monitor@paradoxxx.zero.gmail.com" "$pkgdir/usr/share/gnome-shell/extensions"
+ mkdir -p "$pkgdir/usr/share/glib-2.0/schemas"
+ cp "org.gnome.shell.extensions.system-monitor.gschema.xml" "$pkgdir/usr/share/glib-2.0/schemas"
+ mkdir -p "$pkgdir/usr/bin"
+ cp "system-monitor-applet-config.py" "$pkgdir/usr/bin/system-monitor-applet-config"
+ mkdir -p "$pkgdir/usr/share/applications"
+ cp "system-monitor-applet-config.desktop" "$pkgdir/usr/share/applications"
+}
diff --git a/checkjs.sh b/checkjs.sh
new file mode 100755
index 0000000..1592fbd
--- /dev/null
+++ b/checkjs.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+# Install eslint with:
+# sudo apt-get install npm && sudo npm install -g eslint
+eslint ping-monitor@samuel.bachmann.gmail.com
diff --git a/ping-monitor@samuel.bachmann.gmail.com/README b/ping-monitor@samuel.bachmann.gmail.com/README
new file mode 100644
index 0000000..6eb569d
--- /dev/null
+++ b/ping-monitor@samuel.bachmann.gmail.com/README
@@ -0,0 +1,4 @@
+Dependencies:
+libgtop and gir bindings
+ on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0
+ on Fedora: libgtop2-devel, NetworkManager-glib-devel
diff --git a/ping-monitor@samuel.bachmann.gmail.com/compat.js b/ping-monitor@samuel.bachmann.gmail.com/compat.js
new file mode 100644
index 0000000..56cb6a5
--- /dev/null
+++ b/ping-monitor@samuel.bachmann.gmail.com/compat.js
@@ -0,0 +1,51 @@
+const Config = imports.misc.config;
+const Clutter = imports.gi.Clutter;
+
+/** Compare two dotted version strings (like '10.2.3').
+ * @returns {Integer} 0: v1 == v2, -1: v1 < v2, 1: v1 > v2
+ */
+function versionCompare(v1, v2) {
+ let v1parts = ('' + v1).split('.');
+ let v2parts = ('' + v2).split('.');
+ let minLength = Math.min(v1parts.length, v2parts.length);
+ let i, p1, p2;
+ // Compare tuple pair-by-pair.
+ for (i = 0; i < minLength; i++) {
+ // Convert to integer if possible, because "8" > "10".
+ p1 = parseInt(v1parts[i], 10);
+ p2 = parseInt(v2parts[i], 10);
+ if (isNaN(p1)) {
+ p1 = v1parts[i];
+ }
+ if (isNaN(p2)) {
+ p2 = v2parts[i];
+ }
+ if (p1 === p2) {
+ continue;
+ } else if (p1 > p2) {
+ return 1;
+ } else if (p1 < p2) {
+ return -1;
+ }
+ // one operand is NaN
+ return NaN;
+ }
+ // The longer tuple is always considered 'greater'
+ if (v1parts.length === v2parts.length) {
+ return 0;
+ }
+ return (v1parts.length < v2parts.length) ? -1 : 1;
+}
+
+function color_from_string(color) {
+ let clutterColor, res;
+
+ if (!Clutter.Color.from_string) {
+ clutterColor = new Clutter.Color();
+ clutterColor.from_string(color);
+ } else {
+ [res, clutterColor] = Clutter.Color.from_string(color);
+ }
+
+ return clutterColor;
+}
diff --git a/ping-monitor@samuel.bachmann.gmail.com/convenience.js b/ping-monitor@samuel.bachmann.gmail.com/convenience.js
new file mode 100644
index 0000000..79b85c1
--- /dev/null
+++ b/ping-monitor@samuel.bachmann.gmail.com/convenience.js
@@ -0,0 +1,94 @@
+/* -*- mode: js; js-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+ Copyright (c) 2011-2012, Giovanni Campagna
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the GNOME nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+const Gettext = imports.gettext;
+const Gio = imports.gi.Gio;
+
+const Config = imports.misc.config;
+const ExtensionUtils = imports.misc.extensionUtils;
+
+/**
+ * initTranslations:
+ * @domain: (optional): the gettext domain to use
+ *
+ * Initialize Gettext to load translations from extensionsdir/locale.
+ * If @domain is not provided, it will be taken from metadata['gettext-domain']
+ */
+function initTranslations(domain) {
+ let extension = ExtensionUtils.getCurrentExtension();
+
+ domain = domain || extension.metadata['gettext-domain'];
+
+ // check if this extension was built with "make zip-file", and thus
+ // has the locale files in a subfolder
+ // otherwise assume that extension has been installed in the
+ // same prefix as gnome-shell
+ let localeDir = extension.dir.get_child('locale');
+ if (localeDir.query_exists(null)) {
+ Gettext.bindtextdomain(domain, localeDir.get_path());
+ } else {
+ Gettext.bindtextdomain(domain, Config.LOCALEDIR);
+ }
+}
+
+/**
+ * getSettings:
+ * @schema: (optional): the GSettings schema id
+ *
+ * Builds and return a GSettings schema for @schema, using schema files
+ * in extensionsdir/schemas. If @schema is not provided, it is taken from
+ * metadata['settings-schema'].
+ */
+function getSettings(schema) {
+ let extension = ExtensionUtils.getCurrentExtension();
+
+ schema = schema || extension.metadata['settings-schema'];
+
+ const GioSSS = Gio.SettingsSchemaSource;
+
+ // check if this extension was built with "make zip-file", and thus
+ // has the schema files in a subfolder
+ // otherwise assume that extension has been installed in the
+ // same prefix as gnome-shell (and therefore schemas are available
+ // in the standard folders)
+ let schemaDir = extension.dir.get_child('schemas');
+ let schemaSource;
+ if (schemaDir.query_exists(null)) {
+ schemaSource = GioSSS.new_from_directory(schemaDir.get_path(),
+ GioSSS.get_default(),
+ false);
+ } else {
+ schemaSource = GioSSS.get_default();
+ }
+
+ let schemaObj = schemaSource.lookup(schema, true);
+ if (!schemaObj) {
+ throw new Error('Schema ' + schema + ' could not be found for extension ' + extension.metadata.uuid + '. Please check your installation.');
+ }
+
+ return new Gio.Settings({settings_schema: schemaObj});
+}
diff --git a/ping-monitor@samuel.bachmann.gmail.com/extension.js b/ping-monitor@samuel.bachmann.gmail.com/extension.js
new file mode 100644
index 0000000..01de54f
--- /dev/null
+++ b/ping-monitor@samuel.bachmann.gmail.com/extension.js
@@ -0,0 +1,1196 @@
+/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+// ping-monitor: Gnome shell extension displaying system informations in gnome shell status bar, such as memory usage, cpu usage, network rates…
+// Copyright (C) 2011 Florian Mounier aka paradoxxxzero
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+// Author: Florian Mounier aka paradoxxxzero
+
+/* Ugly. This is here so that we don't crash old libnm-glib based shells unnecessarily
+ * by loading the new libnm.so. Should go away eventually */
+const libnm_glib = imports.gi.GIRepository.Repository.get_default().is_registered('NMClient', '1.0');
+
+let debugOutput = false;
+let smDepsGtop = true;
+
+const Config = imports.misc.config;
+const Clutter = imports.gi.Clutter;
+const GLib = imports.gi.GLib;
+
+const Gio = imports.gi.Gio;
+const Lang = imports.lang;
+const Shell = imports.gi.Shell;
+const St = imports.gi.St;
+const Power = imports.ui.status.power;
+// const System = imports.system;
+const ModalDialog = imports.ui.modalDialog;
+
+const ExtensionSystem = imports.ui.extensionSystem;
+const ExtensionUtils = imports.misc.extensionUtils;
+
+const Me = ExtensionUtils.getCurrentExtension();
+const Convenience = Me.imports.convenience;
+const Compat = Me.imports.compat;
+
+let Background, GTop, IconSize, Locale, Schema, StatusArea, Style, gc_timeout, menu_timeout;
+
+try {
+ GTop = imports.gi.GTop;
+} catch (e) {
+ log('[Ping monitor] catched error: ' + e);
+ smDepsGtop = false;
+}
+
+const Main = imports.ui.main;
+const Panel = imports.ui.panel;
+const PanelMenu = imports.ui.panelMenu;
+const PopupMenu = imports.ui.popupMenu;
+
+const Gettext = imports.gettext.domain('ping-monitor');
+const Mainloop = imports.mainloop;
+const Util = imports.misc.util;
+const _ = Gettext.gettext;
+
+const MESSAGE = _('Dependencies Missing\n\
+Please install: \n\
+libgtop and gir bindings\n\
+\t on Ubuntu: gir1.2-gtop-2.0\n\
+\t on Fedora: libgtop2-devel\n\
+\t on Arch: libgtop\n\
+\t on openSUSE: typelib-1_0-GTop-2_0\n');
+
+// stale network shares will cause the shell to freeze, enable this with caution
+const ENABLE_NETWORK_DISK_USAGE = false;
+
+let extension = imports.misc.extensionUtils.getCurrentExtension();
+let metadata = extension.metadata;
+let shell_Version = Config.PACKAGE_VERSION;
+
+function print_info(str) {
+ log('[Ping monitor INFO] ' + str);
+}
+
+function print_debug(str) {
+ if (debugOutput) {
+ log('[Ping monitor DEBUG] ' + str);
+ }
+}
+
+function l_limit(t) {
+ return (t > 0) ? t : 1000;
+}
+
+function change_text() {
+ this.label.visible = this.show_name;
+}
+
+function change_style() {
+ this.text_box.visible = true;
+ this.chart.actor.visible = this.visible;
+}
+
+function build_menu_info() {
+ let elts = Main.__sm.elts;
+ let tray_menu = Main.__sm.tray.menu;
+
+ if (tray_menu._getMenuItems().length &&
+ typeof tray_menu._getMenuItems()[0].actor.get_last_child() !== 'undefined') {
+ tray_menu._getMenuItems()[0].actor.get_last_child().destroy_all_children();
+ for (let elt in elts) {
+ elts[elt].menu_items = elts[elt].create_menu_items();
+ }
+ } else {
+ return;
+ }
+
+ let menu_info_box_table = new St.Widget({
+ style: 'padding: 10px 0px 10px 0px; spacing-rows: 10px; spacing-columns: 15px;',
+ layout_manager: new Clutter.TableLayout()
+ });
+ let menu_info_box_table_layout = menu_info_box_table.layout_manager;
+
+ // Populate Table
+ let row_index = 0;
+ for (let elt in elts) {
+ if (!elts[elt].menu_visible) {
+ continue;
+ }
+
+ // Add item name to table
+ menu_info_box_table_layout.pack(
+ new St.Label({
+ text: elts[elt].name,
+ style_class: Style.get('sm-title')}), 0, row_index);
+
+ // Add item data to table
+ let col_index = 1;
+ for (let item in elts[elt].menu_items) {
+ menu_info_box_table_layout.pack(
+ elts[elt].menu_items[item], col_index, row_index);
+
+ col_index++;
+ }
+
+ row_index++;
+ }
+ tray_menu._getMenuItems()[0].actor.get_last_child().add(menu_info_box_table, {expand: true});
+}
+
+function change_menu() {
+ this.menu_visible = true;
+ build_menu_info();
+}
+
+let color_from_string = Compat.color_from_string;
+
+const smStyleManager = new Lang.Class({
+ Name: 'PingMonitor.smStyleManager',
+ _extension: '',
+ _iconsize: 1,
+ _diskunits: _('MiB/s'),
+ _netunits_kbytes: _('KiB/s'),
+ _netunits_mbytes: _('MiB/s'),
+ _netunits_kbits: _('kbit/s'),
+ _netunits_mbits: _('Mbit/s'),
+ _pie_width: 300,
+ _pie_height: 300,
+ _pie_fontsize: 14,
+ _bar_width: 300,
+ _bar_height: 150,
+ _bar_fontsize: 14,
+ _text_scaling: 1,
+
+ _init: function () {
+ this._compact = Schema.get_boolean('compact-display');
+ if (this._compact) {
+ this._extension = '-compact';
+ this._iconsize = 3 / 5;
+ this._diskunits = _('MB');
+ this._netunits_kbytes = _('kB');
+ this._netunits_mbytes = _('MB');
+ this._netunits_kbits = 'kb';
+ this._netunits_mbits = 'Mb';
+ this._pie_width *= 4 / 5;
+ this._pie_height *= 4 / 5;
+ this._pie_fontsize = 12;
+ this._bar_width *= 3 / 5;
+ this._bar_height *= 3 / 5;
+ this._bar_fontsize = 12;
+ }
+
+ let interfaceSettings = new Gio.Settings({
+ schema: 'org.gnome.desktop.interface'
+ });
+ this._text_scaling = interfaceSettings.get_double('text-scaling-factor');
+ if (!this._text_scaling) {
+ this._text_scaling = 1;
+ }
+ },
+ get: function (style) {
+ return style + this._extension;
+ },
+ iconsize: function () {
+ return this._iconsize;
+ },
+ diskunits: function () {
+ return this._diskunits;
+ },
+ netunits_kbytes: function () {
+ return this._netunits_kbytes;
+ },
+ netunits_mbytes: function () {
+ return this._netunits_mbytes;
+ },
+ netunits_kbits: function () {
+ return this._netunits_kbits;
+ },
+ netunits_mbits: function () {
+ return this._netunits_mbits;
+ },
+ pie_width: function () {
+ return this._pie_width;
+ },
+ pie_height: function () {
+ return this._pie_height;
+ },
+ pie_fontsize: function () {
+ return this._pie_fontsize * this._text_scaling;
+ },
+ bar_width: function () {
+ return this._bar_width;
+ },
+ bar_height: function () {
+ return this._bar_height;
+ },
+ bar_fontsize: function () {
+ return this._bar_fontsize * this._text_scaling;
+ },
+ text_scaling: function () {
+ return this._text_scaling;
+ },
+});
+
+const smDialog = Lang.Class({
+ Name: 'PingMonitor.smDialog',
+ Extends: ModalDialog.ModalDialog,
+
+ _init: function () {
+ this.parent({styleClass: 'prompt-dialog'});
+ let mainContentBox = new St.BoxLayout({style_class: 'prompt-dialog-main-layout',
+ vertical: false});
+ this.contentLayout.add(mainContentBox,
+ {x_fill: true,
+ y_fill: true});
+
+ let messageBox = new St.BoxLayout({style_class: 'prompt-dialog-message-layout',
+ vertical: true});
+ mainContentBox.add(messageBox,
+ {y_align: St.Align.START});
+
+ this._subjectLabel = new St.Label({style_class: 'prompt-dialog-headline',
+ text: _('Ping Monitor Extension')});
+
+ messageBox.add(this._subjectLabel,
+ {y_fill: false,
+ y_align: St.Align.START});
+
+ this._descriptionLabel = new St.Label({style_class: 'prompt-dialog-description',
+ text: MESSAGE});
+
+ messageBox.add(this._descriptionLabel,
+ {y_fill: true,
+ y_align: St.Align.START});
+
+
+ this.setButtons([
+ {
+ label: _('Cancel'),
+ action: Lang.bind(this, function () {
+ this.close();
+ }),
+ key: Clutter.Escape
+ }
+ ]);
+ },
+
+});
+
+const StatusSquare = new Lang.Class({
+ Name: 'PingMonitor.StatusSquare',
+
+ _width: 10,
+ _color: '#ff0000',
+
+ _init: function (height, parent) {
+ this.actor = new St.DrawingArea({style_class: Style.get('sm-chart'), reactive: false});
+ this.parentC = parent;
+ this.actor.set_width(this._width);
+ this.actor.set_height(this.height = height);
+ this.actor.connect('repaint', Lang.bind(this, this._draw));
+ this.data = [];
+ // for (let i = 0; i < this.parentC.colors.length; i++) {
+ // this.data[i] = [];
+ // }
+ },
+ update: function (color) {
+ this._color = color;
+ let data_a = this.parentC.vals;
+ // if (data_a.length !== this.parentC.colors.length) {
+ // return;
+ // }
+ let accdata = [];
+ for (let l = 0; l < data_a.length; l++) {
+ accdata[l] = (l === 0) ? data_a[0] : accdata[l - 1] + ((data_a[l] > 0) ? data_a[l] : 0);
+ this.data[l].push(accdata[l]);
+ if (this.data[l].length > this._width) {
+ this.data[l].shift();
+ }
+ }
+ if (!this.actor.visible) {
+ return;
+ }
+ this.actor.queue_repaint();
+ },
+ _draw: function () {
+ if (!this.actor.visible) {
+ return;
+ }
+ let [width, height] = this.actor.get_surface_size();
+ let cr = this.actor.get_context();
+ Clutter.cairo_set_source_color(cr, color_from_string(this._color));
+ cr.rectangle(0, (height-this._width)/2, this._width, this._width);
+ cr.fill();
+ if (Compat.versionCompare(shell_Version, '3.7.4')) {
+ cr.$dispose();
+ }
+ },
+ resize: function (schema, key) {
+ // let old_width = this._width;
+ // this._width = Schema.get_int(key);
+ // if (old_width === this._width) {
+ // return;
+ // }
+ // this.actor.set_width(this._width);
+ // if (this._width < this.data[0].length) {
+ // for (let i = 0; i < this.parentC.colors.length; i++) {
+ // this.data[i] = this.data[i].slice(-this._width);
+ // }
+ // }
+ }
+});
+
+const TipItem = new Lang.Class({
+ Name: 'PingMonitor.TipItem',
+ Extends: PopupMenu.PopupBaseMenuItem,
+
+ _init: function () {
+ PopupMenu.PopupBaseMenuItem.prototype._init.call(this);
+ this.actor.remove_style_class_name('popup-menu-item');
+ this.actor.add_style_class_name('sm-tooltip-item');
+ }
+});
+
+/**
+ * Tooltip when hovering
+ * @type {Lang.Class}
+ */
+const TipMenu = new Lang.Class({
+ Name: 'PingMonitor.TipMenu',
+ Extends: PopupMenu.PopupMenuBase,
+
+ _init: function (sourceActor) {
+ // PopupMenu.PopupMenuBase.prototype._init.call(this, sourceActor, 'sm-tooltip-box');
+ this.parent(sourceActor, 'sm-tooltip-box');
+ this.actor = new Shell.GenericContainer();
+ this.actor.connect('get-preferred-width',
+ Lang.bind(this, this._boxGetPreferredWidth));
+ this.actor.connect('get-preferred-height',
+ Lang.bind(this, this._boxGetPreferredHeight));
+ this.actor.connect('allocate', Lang.bind(this, this._boxAllocate));
+ this.actor.add_actor(this.box);
+ },
+ _boxGetPreferredWidth: function (actor, forHeight, alloc) {
+ // let columnWidths = this.getColumnWidths();
+ // this.setColumnWidths(columnWidths);
+
+ [alloc.min_size, alloc.natural_size] = this.box.get_preferred_width(forHeight);
+ },
+ _boxGetPreferredHeight: function (actor, forWidth, alloc) {
+ [alloc.min_size, alloc.natural_size] = this.box.get_preferred_height(forWidth);
+ },
+ _boxAllocate: function (actor, box, flags) {
+ this.box.allocate(box, flags);
+ },
+ _shift: function () {
+ // Probably old but works
+ let node = this.sourceActor.get_theme_node();
+ let contentbox = node.get_content_box(this.sourceActor.get_allocation_box());
+ let allocation = Shell.util_get_transformed_allocation(this.sourceActor);
+ let monitor = Main.layoutManager.findMonitorForActor(this.sourceActor)
+ let [x, y] = [allocation.x1 + contentbox.x1,
+ allocation.y1 + contentbox.y1];
+ let [cx, cy] = [allocation.x1 + (contentbox.x1 + contentbox.x2) / 2,
+ allocation.y1 + (contentbox.y1 + contentbox.y2) / 2];
+ let [xm, ym] = [allocation.x1 + contentbox.x2,
+ allocation.y1 + contentbox.y2];
+ let [width, height] = this.actor.get_size();
+ let tipx = cx - width / 2;
+ tipx = Math.max(tipx, monitor.x);
+ tipx = Math.min(tipx, monitor.x + monitor.width - width);
+ let tipy = Math.floor(ym);
+ // Hacky condition to determine if the status bar is at the top or at the bottom of the screen
+ if (allocation.y1 / monitor.height > 0.3) {
+ tipy = allocation.y1 - height; // If it is at the bottom, place the tooltip above instead of below
+ }
+ this.actor.set_position(tipx, tipy);
+ },
+ open: function (animate) {
+ if (this.isOpen) {
+ return;
+ }
+
+ this.isOpen = true;
+ this.actor.show();
+ this._shift();
+ this.actor.raise_top();
+ this.emit('open-state-changed', true);
+ },
+ close: function (animate) {
+ this.isOpen = false;
+ this.actor.hide();
+ this.emit('open-state-changed', false);
+ }
+});
+
+const TipBox = new Lang.Class({
+ Name: 'PingMonitor.TipBox',
+
+ show_tooltip: true, // show mouseover tooltip
+
+ _init: function () {
+ this.actor = new St.BoxLayout({reactive: true}); // this is visualized
+ this.actor._delegate = this;
+ this.set_tip(new TipMenu(this.actor));
+ this.in_to = this.out_to = 0;
+ this.actor.connect('enter-event', Lang.bind(this, this.on_enter));
+ this.actor.connect('leave-event', Lang.bind(this, this.on_leave));
+ },
+ set_tip: function (tipmenu) {
+ if (this.tipmenu) {
+ this.tipmenu.destroy();
+ }
+ this.tipmenu = tipmenu;
+ if (this.tipmenu) {
+ Main.uiGroup.add_actor(this.tipmenu.actor);
+ this.hide_tip();
+ }
+ },
+ show_tip: function () {
+ if (!this.tipmenu) {
+ return;
+ }
+ this.tipmenu.open();
+ if (this.in_to) {
+ Mainloop.source_remove(this.in_to);
+ this.in_to = 0;
+ }
+ },
+ hide_tip: function () {
+ if (!this.tipmenu) {
+ return;
+ }
+ this.tipmenu.close();
+ if (this.out_to) {
+ Mainloop.source_remove(this.out_to);
+ this.out_to = 0;
+ }
+ if (this.in_to) {
+ Mainloop.source_remove(this.in_to);
+ this.in_to = 0;
+ }
+ },
+ on_enter: function () {
+ let show_tooltip = this.show_tooltip;
+
+ if (!show_tooltip) {
+ return;
+ }
+
+ if (this.out_to) {
+ Mainloop.source_remove(this.out_to);
+ this.out_to = 0;
+ }
+ if (!this.in_to) {
+ this.in_to = Mainloop.timeout_add(500,
+ Lang.bind(this,
+ this.show_tip));
+ }
+ },
+ on_leave: function () {
+ if (this.in_to) {
+ Mainloop.source_remove(this.in_to);
+ this.in_to = 0;
+ }
+ if (!this.out_to) {
+ this.out_to = Mainloop.timeout_add(500,
+ Lang.bind(this,
+ this.hide_tip));
+ }
+ },
+ destroy: function () {
+ if (this.in_to) {
+ Mainloop.source_remove(this.in_to);
+ this.in_to = 0;
+ }
+
+ if (this.out_to) {
+ Mainloop.source_remove(this.out_to);
+ this.out_to = 0;
+ }
+
+ this.actor.destroy();
+ },
+});
+
+const ElementBase = new Lang.Class({
+ Name: 'PingMonitor.ElementBase',
+ Extends: TipBox,
+
+ elt: '',
+ name: '',
+ color_name: [],
+ text_items: [],
+ menu_items: [],
+ menu_visible: true,
+ color: '#ff0000',
+
+ refresh_interval: 5000, // milliseconds between ping
+ visible: true, // show in the system tray
+
+
+ _init: function () {
+ this.parent(arguments);
+ this.vals = [];
+ this.tip_labels = [];
+ this.tip_vals = [];
+ this.tip_unit_labels = [];
+
+ this.chart = new StatusSquare(IconSize, this);
+ Schema.connect('changed::background',
+ Lang.bind(this,
+ function () {
+ this.chart.actor.queue_repaint();
+ }));
+
+ this.actor.visible = true;//Schema.get_boolean(this.elt + '-display');
+ // Schema.connect(
+ // 'changed::' + this.elt + '-display',
+ // Lang.bind(this,
+ // function (schema, key) {
+ // this.actor.visible = Schema.get_boolean(key);
+ // }));
+
+ this.interval = 3000; // milliseconds
+ this.timeout = Mainloop.timeout_add(
+ this.interval,
+ Lang.bind(this, this.update)
+ );
+ /*
+ Schema.connect(
+ 'changed::' + this.elt + '-refresh-time',
+ Lang.bind(this,
+ function (schema, key) {
+ Mainloop.source_remove(this.timeout);
+ this.timeout = null;
+ this.interval = l_limit(Schema.get_int(key));
+ this.timeout = Mainloop.timeout_add(
+ this.interval, Lang.bind(this, this.update));
+ }));
+ Schema.connect('changed::' + this.elt + '-graph-width',
+ Lang.bind(this.chart, this.chart.resize));
+
+ if (this.elt === 'thermal') {
+ Schema.connect('changed::thermal-threshold',
+ Lang.bind(this,
+ function () {
+ Mainloop.source_remove(this.timeout);
+ this.timeout = null;
+ this.reset_style();
+ this.timeout = Mainloop.timeout_add(
+ this.interval, Lang.bind(this, this.update));
+ }));
+ }
+ */
+
+ this.label = new St.Label({text: this.name, style_class: Style.get('sm-status-label')});
+ // this.label = new St.Label({text: this.elt === 'memory' ? _('mem') : _(this.elt),
+ // style_class: Style.get('sm-status-label')});
+ change_text.call(this);
+ // Schema.connect('changed::' + this.elt + '-show-text', Lang.bind(this, change_text));
+
+ this.menu_visible = true;
+ // this.menu_visible = Schema.get_boolean(this.elt + '-show-menu');
+ // Schema.connect('changed::' + this.elt + '-show-menu', Lang.bind(this, change_menu));
+
+ this.actor.add_actor(this.label); //this.actor = new St.BoxLayout({reactive: true});
+ this.text_box = new St.BoxLayout();
+
+ // this.actor.add_actor(this.text_box);
+ this.text_items = this.create_text_items();
+ // for (let item in this.text_items) {
+ // this.text_box.add_actor(this.text_items[item]);
+ // }
+ this.actor.add_actor(this.chart.actor);
+ change_style.call(this);
+ // Schema.connect('changed::' + this.elt + '-style', Lang.bind(this, change_style));
+ this.menu_items = this.create_menu_items();
+
+ this.chart.actor.queue_repaint();
+ },
+ tip_format: function () {
+ for (let i = 0; i < this.color_name.length; i++) {
+ let tipline = new TipItem();
+ this.tipmenu.addMenuItem(tipline);
+ // tipline.actor.add(new St.Label({text: _(this.color_name[i])}));
+ this.tip_labels[i] = new St.Label({text: ''});
+ tipline.actor.add(this.tip_labels[i]);
+
+ // this.tip_unit_labels[i] = new St.Label({text: unit[i]});
+ // tipline.actor.add(this.tip_unit_labels[i]);
+ this.tip_vals[i] = 0;
+ }
+ },
+ update: function () {
+ if (!this.menu_visible && !this.actor.visible) {
+ return false;
+ }
+ this.refresh();
+ this._apply();
+
+ this.chart.update(this.color);
+ for (let i = 0; i < this.tip_vals.length; i++) {
+ this.tip_labels[i].text = this.tip_vals[i].toString();
+ }
+ return true;
+ },
+ reset_style: function () {
+ this.text_items[0].set_style('color: rgba(255, 255, 255, 1)');
+ },
+ threshold: function () {
+ if (Schema.get_int('thermal-threshold')) {
+ if (this.temp_over_threshold) {
+ this.text_items[0].set_style('color: rgba(255, 0, 0, 1)');
+ } else {
+ this.text_items[0].set_style('color: rgba(255, 255, 255, 1)');
+ }
+ }
+ },
+ destroy: function () {
+ TipBox.prototype.destroy.call(this);
+ if (this.timeout) {
+ Mainloop.source_remove(this.timeout);
+ this.timeout = null;
+ }
+ }
+});
+
+const Ping = new Lang.Class({
+ Name: 'PingMonitor.Ping',
+ Extends: ElementBase,
+
+ elt: 'ping', // element type
+ id: 0, // id
+ tag: '', // tag
+ name: '', // name
+ address: '8.8.8.8', // ip address
+ ping_count: 2, // number of ping per refresh interval
+ ping_interval: 0.5, // next ping after x seconds
+ ping_deadline: 3, // max seconds for ping
+ // refresh_interval: 5000, // milliseconds between ping
+ active: true, // run ping
+ // visible: true, // show in the system tray
+ show_name: true, // show name in the system tray
+ show_address: true, // show address in the system tray
+ // show_tooltip: true, // show mouseover tooltip
+ warning_treshold: 20, // if ping ms higher -> orange
+ ping_message: '', // the last ping result
+
+ color_name: ['used'],
+
+ _init: function (id, tag, name, address, ping_count, ping_interval,
+ ping_deadline, refresh_interval, active, visible,
+ show_name, show_address, show_tooltip, warning_threshold) {
+ this.id = id;
+ this.tag = tag;
+ if (show_address) {
+ this.name = name + '\n' + address;
+ } else {
+ this.name = name;
+ }
+ this.address = address;
+ this.ping_count = ping_count;
+ this.ping_interval = ping_interval;
+ this.ping_deadline = ping_deadline;
+ this.refresh_interval = refresh_interval;
+ this.active = active;
+ this.visible = visible;
+ this.show_name = show_name;
+ this.show_address = show_address;
+ this.show_tooltip = show_tooltip;
+ this.warning_threshold = warning_threshold;
+ this.parent();
+ this.tip_format();
+ this.update();
+ },
+ refresh: function () {
+ // Run asynchronously, to avoid shell freeze
+ try {
+ let path = Me.dir.get_path();
+ let script = [
+ '/bin/bash',
+ path + '/ping.sh',
+ this.address,
+ '' + this.ping_count,
+ '' + this.ping_deadline,
+ '' + this.ping_interval
+ ];
+
+ let [, pid, in_fd, out_fd, err_fd] = GLib.spawn_async_with_pipes(
+ null,
+ script,
+ null,
+ GLib.SpawnFlags.DO_NOT_REAP_CHILD,
+ null);
+
+ let _tmp_stream = new Gio.DataInputStream({
+ base_stream: new Gio.UnixInputStream({fd: in_fd})
+ });
+ _tmp_stream.close(null);
+
+ // Let's buffer the command's error - that's an input for us!
+ this._process_error = new Gio.DataInputStream({
+ base_stream: new Gio.UnixInputStream({fd: err_fd})
+ });
+
+ // Let's buffer the command's output - that's an input for us!
+ this._process_stream = new Gio.DataInputStream({
+ base_stream: new Gio.UnixInputStream({fd: out_fd})
+ });
+
+ // We will process the output at once when it's done
+ this._process_sourceId = GLib.child_watch_add(
+ GLib.PRIORITY_DEFAULT,
+ pid,
+ Lang.bind(this, this._readPingResult)
+ );
+ } catch (err) {
+ // Deal with the error
+ }
+ },
+ _readPingResult: function () {
+ print_debug('------------------------------------------------------------------------------');
+ print_debug('name: ' + this.name);
+ let out, size;
+
+ let has_error = false;
+ if (this._process_error) {
+ [out, size] = this._process_error.read_line_utf8(null);
+ if (out !== null) {
+ has_error = true;
+ this.ping_message = out;
+ this.color = '#ff0000';
+ print_debug('ping error: ' + out);
+ }
+ }
+
+ if (!has_error) {
+ let usage = [];
+ if (this._process_stream) {
+ this.ping_message = '';
+ do {
+ [out, size] = this._process_stream.read_line_utf8(null);
+ if (out !== null) {
+ usage.push(out);
+
+ print_debug('ping result: ' + out);
+ this.ping_message += out + '\n';
+ }
+ } while (out !== null);
+
+ let min = 9999;
+ let avg = 9999;
+ let max = 9999;
+ try {
+ let timing_stats = usage[usage.length - 1].split('=')[1].split('/');
+ min = timing_stats[0];
+ avg = timing_stats[1];
+ max = timing_stats[2];
+ } catch (e) {
+ print_debug('error: ' + e);
+ }
+
+ let loss = 100;
+ try {
+ let xmit_stats = usage[usage.length - 2].split('%');
+ let s = xmit_stats[0].split(' ');
+ loss = s[s.length - 1];
+ } catch (e) {
+ print_debug('error: ' + e);
+ }
+
+ print_debug('loss: ' + loss);
+ print_debug('min: ' + min);
+ print_debug('avg: ' + avg);
+ print_debug('max: ' + max);
+
+ if (loss == 100) {
+ this.color = '#ff0000';
+ } else if (max > this.warning_treshold) {
+ this.color = '#ffaa00';
+ } else {
+ this.color = '#00ff00';
+ }
+ }
+ }
+
+ this._endProcess();
+ },
+ _endProcess: function () {
+ if (this._process_stream) {
+ this._process_stream.close(null);
+ this._process_stream = null;
+ }
+ if (this._process_error) {
+ this._process_error.close(null);
+ this._process_error = null;
+ }
+ },
+ _pad: function (number) {
+ if (this.useGiB) {
+ if (number < 1) {
+ // examples: 0.01, 0.10, 0.88
+ return number.toFixed(2);
+ }
+ // examples: 5.85, 16.0, 128
+ return number.toPrecision(3);
+ }
+
+ return number;
+ },
+ _apply: function () {
+ this.menu_items[0].text = this.ping_message;
+ // this.menu_items[1].text = '2';
+ this.tip_vals[0] = this.ping_message;
+ },
+ create_text_items: function () {
+ return [
+ new St.Label({
+ text: '',
+ style_class: Style.get('sm-status-value'),
+ y_align: Clutter.ActorAlign.CENTER}),
+ new St.Label({
+ text: '%',
+ style_class: Style.get('sm-perc-label'),
+ y_align: Clutter.ActorAlign.CENTER})
+ ];
+ },
+ create_menu_items: function () {
+ return [
+ new St.Label({
+ text: '',
+ style_class: Style.get('sm-value-left')}),
+ // new St.Label({
+ // text: '',
+ // style_class: Style.get('sm-label')}),
+ // new St.Label({
+ // text: '',
+ // style_class: Style.get('sm-label')}),
+ // new St.Label({
+ // text: '',
+ // style_class: Style.get('sm-value')}),
+ // new St.Label({
+ // text: '',
+ // style_class: Style.get('sm-label')})
+ ];
+ }
+});
+
+const Icon = new Lang.Class({
+ Name: 'PingMonitor.Icon',
+
+ _init: function () {
+ this.actor = new St.Icon({icon_name: 'utilities-ping-monitor-symbolic',
+ style_class: 'system-status-icon'});
+ this.actor.visible = Schema.get_boolean('icon-display');
+ Schema.connect(
+ 'changed::icon-display',
+ Lang.bind(this,
+ function () {
+ this.actor.visible = Schema.get_boolean('icon-display');
+ })
+ );
+ }
+});
+
+function read_from_file(path) {
+ for (let eltName in Main.__sm.elts) {
+ Main.__sm.elts[eltName].destroy();
+ }
+
+ let [ok, contents] = GLib.file_get_contents(path);
+ if (ok) {
+ let map = JSON.parse(contents);
+
+ try {
+ debugOutput = map['debug_output'];
+ } catch (e) {
+ debugOutput = false;
+ }
+
+ try {
+ for (let i = 0; i < map['ping_config'].length; i++) {
+ let tag = map['ping_config'][i]['tag'];
+ let name = map['ping_config'][i]['name'];
+ let address = map['ping_config'][i]['address'];
+ let ping_count = map['ping_config'][i]['ping_count'];
+ let ping_interval = map['ping_config'][i]['ping_interval'];
+ let ping_deadline = map['ping_config'][i]['ping_deadline'];
+ let refresh_interval = map['ping_config'][i]['refresh_interval'];
+ let active = map['ping_config'][i]['active'];
+ let visible = map['ping_config'][i]['visible'];
+ let show_name = map['ping_config'][i]['show_name'];
+ let show_address = map['ping_config'][i]['show_address'];
+ let show_tooltip = map['ping_config'][i]['show_tooltip'];
+ let warning_threshold = map['ping_config'][i]['warning_threshold'];
+
+ print_debug('tag: ' + tag);
+ print_debug('name: ' + name);
+ print_debug('address: ' + address);
+ print_debug('ping_count: ' + ping_count);
+ print_debug('ping_interval: ' + ping_interval);
+ print_debug('ping_deadline: ' + ping_deadline);
+ print_debug('refresh_interval: ' + refresh_interval);
+ print_debug('active: ' + active);
+ print_debug('visible: ' + visible);
+ print_debug('show_name: ' + show_name);
+ print_debug('show_address: ' + show_address);
+ print_debug('show_tooltip: ' + show_tooltip);
+ print_debug('warning_threshold: ' + warning_threshold);
+
+ // id, tag, name, address, ping_count, ping_interval,
+ // ping_deadline, refresh_interval, active, visible,
+ // show_name, show_tooltip, warning_threshold
+
+ Main.__sm.elts.push(new Ping(
+ i,
+ tag,
+ name,
+ address,
+ ping_count,
+ ping_interval,
+ ping_deadline,
+ refresh_interval,
+ active,
+ visible,
+ show_name,
+ show_address,
+ show_tooltip,
+ warning_threshold));
+ }
+ } catch (e) {
+ print_info('could not load config');
+ print_info('error: ' + e);
+ }
+
+ }
+}
+
+var init = function () {
+ print_info('applet init from ' + extension.path);
+
+ Convenience.initTranslations();
+ // Get locale, needed as an argument for toLocaleString() since GNOME Shell 3.24
+ // See: mozjs library bug https://bugzilla.mozilla.org/show_bug.cgi?id=999003
+ Locale = GLib.get_language_names()[0];
+ if (Locale.indexOf('_') !== -1) {
+ Locale = Locale.split('_')[0];
+ }
+
+ IconSize = Math.round(Panel.PANEL_ICON_SIZE * 4 / 5);
+};
+
+var enable = function () {
+ print_info('applet enabling');
+ Schema = Convenience.getSettings();
+
+ /*
+ try {
+ let arr1 = Schema.get_strv('ping-tags');
+ log('[Ping monitor] tag 0: ' + arr1[0]);
+ log('[Ping monitor] tag 1: ' + arr1[1]);
+ log('[Ping monitor] tag 2: ' + arr1[2]);
+ } catch (e) {
+ log('[Ping monitor] catched error: ' + e);
+ }
+
+ try {
+ let arr2 = Schema.get_strv('ping-ids');
+ log('[Ping monitor] id 0: ' + parseInt(arr2[0]));
+ log('[Ping monitor] id 1: ' + parseInt(arr2[1]));
+ log('[Ping monitor] id 2: ' + parseInt(arr2[2]));
+
+ let arr3 = Schema.get_strv('ping-show-text');
+ log('[Ping monitor] show text 0: ' + (arr3[0] === 'true'));
+ log('[Ping monitor] show text 1: ' + (arr3[1] === 'true'));
+ log('[Ping monitor] show text 2: ' + (arr3[2] === 'true'));
+ } catch (e) {
+ log('[Ping monitor] catched error: ' + e);
+ }
+ */
+
+ Style = new smStyleManager();
+
+ Background = color_from_string(Schema.get_string('background'));
+
+ if (!(smDepsGtop)) {
+ Main.__sm = {
+ smdialog: new smDialog()
+ }
+
+ let dialog_timeout = Mainloop.timeout_add_seconds(
+ 1,
+ function () {
+ Main.__sm.smdialog.open();
+ Mainloop.source_remove(dialog_timeout);
+ return true;
+ });
+ } else {
+ let panel = Main.panel._rightBox;
+ StatusArea = Main.panel._statusArea;
+ if (typeof (StatusArea) === 'undefined') {
+ StatusArea = Main.panel.statusArea;
+ }
+ if (Schema.get_boolean('center-display')) {
+ panel = Main.panel._centerBox;
+ }
+
+ // Debug
+ Main.__sm = {
+ tray: new PanelMenu.Button(0.5),
+ icon: new Icon(),
+ elts: [],
+ };
+
+ // Items to Monitor
+ read_from_file(GLib.getenv('HOME') + '/.config/ping-monitor.conf');
+
+ // Main.__sm.elts.push(new Ping(0, 'google', 'Google', '8.8.8.8', true));
+ // Main.__sm.elts.push(new Ping(1, 'rubbish', 'Rubbish', '8.8.4.9', true));
+ // Main.__sm.elts.push(new Ping(2, 'apc', 'LPC', '192.168.0.141', true));
+
+ let tray = Main.__sm.tray;
+ let elts = Main.__sm.elts;
+
+ if (Schema.get_boolean('move-clock')) {
+ let dateMenu;
+ if (Compat.versionCompare(shell_Version, '3.5.90')) {
+ dateMenu = Main.panel.statusArea.dateMenu;
+ Main.panel._centerBox.remove_actor(dateMenu.container);
+ Main.panel._addToPanelBox('dateMenu', dateMenu, -1, Main.panel._rightBox);
+ } else {
+ dateMenu = Main.panel._dateMenu;
+ Main.panel._centerBox.remove_actor(dateMenu.actor);
+ Main.panel._rightBox.insert_child_at_index(dateMenu.actor, -1);
+ }
+ tray.clockMoved = true;
+ }
+
+ Schema.connect('changed::background', Lang.bind(
+ this, function (schema, key) {
+ Background = color_from_string(Schema.get_string(key));
+ }));
+ if (!Compat.versionCompare(shell_Version, '3.5.5')) {
+ StatusArea.systemMonitor = tray;
+ panel.insert_child_at_index(tray.actor, 1);
+ panel.child_set(tray.actor, {y_fill: true});
+ } else {
+ Main.panel._addToPanelBox('ping-monitor', tray, 1, panel);
+ }
+
+ // The spacing adds a distance between the graphs/text on the top bar
+ let spacing = Schema.get_boolean('compact-display') ? '1' : '4';
+ let box = new St.BoxLayout({style: 'spacing: ' + spacing + 'px;'});
+ tray.actor.add_actor(box);
+ box.add_actor(Main.__sm.icon.actor);
+ // Add items to panel box
+ for (let elt in elts) {
+ box.add_actor(elts[elt].actor);
+ }
+
+ // Build Menu Info Box Table
+ let menu_info = new PopupMenu.PopupBaseMenuItem({reactive: false});
+ let menu_info_box = new St.BoxLayout();
+ menu_info.actor.add(menu_info_box);
+ Main.__sm.tray.menu.addMenuItem(menu_info, 0);
+
+ build_menu_info();
+
+ tray.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+
+ tray.menu.connect(
+ 'open-state-changed',
+ function (menu, isOpen) {
+ if (isOpen) {
+ // Main.__sm.pie.actor.queue_repaint();
+
+ menu_timeout = Mainloop.timeout_add_seconds(
+ 5,
+ function () {
+ // Main.__sm.pie.actor.queue_repaint();
+ return true;
+ });
+ } else {
+ Mainloop.source_remove(menu_timeout);
+ }
+ }
+ );
+
+ let _appSys = Shell.AppSystem.get_default();
+ let _gsmPrefs = _appSys.lookup_app('gnome-shell-extension-prefs.desktop');
+ let item;
+
+ // Reload config.
+ // item = new PopupMenu.PopupMenuItem(_('Reload config'));
+ // item.connect('activate', function () {
+ // read_from_file(GLib.getenv('HOME') + '/.config/ping-monitor.conf');
+ // });
+ // tray.menu.addMenuItem(item);
+
+ // Preferences.
+ // item = new PopupMenu.PopupMenuItem(_('Preferences...'));
+ // item.connect('activate', function () {
+ // if (_gsmPrefs.get_state() === _gsmPrefs.SHELL_APP_STATE_RUNNING) {
+ // _gsmPrefs.activate();
+ // } else {
+ // let info = _gsmPrefs.get_app_info();
+ // let timestamp = global.display.get_current_time_roundtrip();
+ // info.launch_uris([metadata.uuid], global.create_app_launch_context(timestamp, -1));
+ // }
+ // });
+ // tray.menu.addMenuItem(item);
+
+ if (Compat.versionCompare(shell_Version, '3.5.5')) {
+ Main.panel.menuManager.addMenu(tray.menu);
+ } else {
+ Main.panel._menus.addMenu(tray.menu);
+ }
+ }
+
+ print_info('applet enabling done');
+};
+
+var disable = function () {
+ // restore clock
+ if (Main.__sm.tray.clockMoved) {
+ let dateMenu;
+ if (Compat.versionCompare(shell_Version, '3.5.90')) {
+ dateMenu = Main.panel.statusArea.dateMenu;
+ Main.panel._rightBox.remove_actor(dateMenu.container);
+ Main.panel._addToPanelBox('dateMenu', dateMenu, Main.sessionMode.panel.center.indexOf('dateMenu'), Main.panel._centerBox);
+ } else {
+ dateMenu = Main.panel._dateMenu;
+ Main.panel._rightBox.remove_actor(dateMenu.actor);
+ Main.panel._centerBox.insert_child_at_index(dateMenu.actor, 0);
+ }
+ }
+
+ if (Style) {
+ Style = null;
+ }
+
+ Schema.run_dispose();
+ for (let eltName in Main.__sm.elts) {
+ Main.__sm.elts[eltName].destroy();
+ }
+
+ if (!Compat.versionCompare(shell_Version, '3.5')) {
+ Main.__sm.tray.destroy();
+ StatusArea.systemMonitor = null;
+ } else {
+ Main.__sm.tray.actor.destroy();
+ }
+ Main.__sm = null;
+ print_info('applet disable');
+};
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/ar/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/ar/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..e3b48b7
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/ar/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/ca/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/ca/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..1122f5d
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/ca/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/cs/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/cs/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..0450bc1
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/cs/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/de/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/de/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..6445d1c
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/de/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/es_ES/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/es_ES/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..d7140d9
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/es_ES/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/es_MX/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/es_MX/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..0de75d7
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/es_MX/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/fa/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/fa/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..cf115c6
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/fa/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/fi/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/fi/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..b2974dc
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/fi/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/fr/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/fr/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..6f4c6cb
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/fr/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/it/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/it/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..a204f49
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/it/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/pl/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/pl/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..15197cc
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/pl/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/pt/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/pt/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..12e333f
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/pt/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/pt_BR/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/pt_BR/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..a99e415
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/pt_BR/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/ro/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/ro/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..d846079
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/ro/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/ru/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/ru/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..9a3524c
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/ru/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/sk/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/sk/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..100f58b
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/sk/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/uk/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/uk/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..18f2b35
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/uk/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/locale/zh_CN/LC_MESSAGES/system-monitor.mo b/ping-monitor@samuel.bachmann.gmail.com/locale/zh_CN/LC_MESSAGES/system-monitor.mo
new file mode 100644
index 0000000..0735c1d
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/locale/zh_CN/LC_MESSAGES/system-monitor.mo differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/metadata.json b/ping-monitor@samuel.bachmann.gmail.com/metadata.json
new file mode 100644
index 0000000..58a44f7
--- /dev/null
+++ b/ping-monitor@samuel.bachmann.gmail.com/metadata.json
@@ -0,0 +1,10 @@
+{
+ "shell-version": ["3.4","3.6","3.8","3.10", "3.12", "3.14", "3.16", "3.18", "3.20", "3.22", "3.24", "3.26", "3.28", "3.30"],
+ "uuid": "ping-monitor@samuel.bachmann.gmail.com",
+ "name": "ping-monitor",
+ "url": "https://github.com/anybotics/gnome-shell-ping-monitor-applet",
+ "description": "Display ping information...",
+ "settings-schema": "org.gnome.shell.extensions.ping-monitor",
+ "gettext-domain": "ping-monitor",
+ "version": -1
+}
diff --git a/ping-monitor@samuel.bachmann.gmail.com/ping.sh b/ping-monitor@samuel.bachmann.gmail.com/ping.sh
new file mode 100755
index 0000000..52f36a7
--- /dev/null
+++ b/ping-monitor@samuel.bachmann.gmail.com/ping.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+##################################################################################
+# This file is part of Ping Monitor Gnome extension.
+# Apt Update Indicator is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# Apt Update Indicator is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with System Monitor. If not, see .
+# Copyright 2019 Samuel Bachmann, samuel.bachmann@gmail.com.
+##################################################################################
+
+############
+# #
+# Ping #
+# #
+############
+
+ADDRESS=$1
+COUNT=$2
+DEADLINE=$3
+INTERVAL=$4
+
+ping -c ${COUNT} -w ${DEADLINE} -i ${INTERVAL} ${ADDRESS}
\ No newline at end of file
diff --git a/ping-monitor@samuel.bachmann.gmail.com/prefs.js b/ping-monitor@samuel.bachmann.gmail.com/prefs.js
new file mode 100644
index 0000000..af529a9
--- /dev/null
+++ b/ping-monitor@samuel.bachmann.gmail.com/prefs.js
@@ -0,0 +1,379 @@
+const Gtk = imports.gi.Gtk;
+const Gio = imports.gi.Gio;
+const Gdk = imports.gi.Gdk;
+const GLib = imports.gi.GLib;
+const Clutter = imports.gi.Clutter;
+const Lang = imports.lang;
+
+const Gettext = imports.gettext.domain('ping-monitor');
+
+let extension = imports.misc.extensionUtils.getCurrentExtension();
+let convenience = extension.imports.convenience;
+let Compat = extension.imports.compat;
+
+const _ = Gettext.gettext;
+const N_ = function (e) {
+ return e;
+};
+
+let Schema;
+
+function init() {
+ convenience.initTranslations();
+ Schema = convenience.getSettings();
+}
+
+String.prototype.capitalize = function () {
+ return this.replace(/(^|\s)([a-z])/g, function (m, p1, p2) {
+ return p1 + p2.toUpperCase();
+ });
+};
+
+function color_to_hex(color) {
+ var output = N_('#%02x%02x%02x%02x').format(
+ 255 * color.red,
+ 255 * color.green,
+ 255 * color.blue,
+ 255 * color.alpha);
+ return output;
+}
+
+function check_sensors(sensor_type) {
+ let inputs = [sensor_type + '1_input', sensor_type + '2_input', sensor_type + '3_input'];
+ let sensor_path = '/sys/class/hwmon/';
+ let sensor_list = [];
+ let string_list = [];
+ let test;
+ for (let j = 0; j < 6; j++) {
+ for (let k = 0; k < inputs.length; k++) {
+ test = sensor_path + 'hwmon' + j + '/' + inputs[k];
+ if (!GLib.file_test(test, 1 << 4)) {
+ test = sensor_path + 'hwmon' + j + '/device/' + inputs[k];
+ if (!GLib.file_test(test, 1 << 4)) {
+ continue;
+ }
+ }
+ let sensor = test.substr(0, test.lastIndexOf('/'));
+ let result = GLib.file_get_contents(sensor + '/name');
+ let label;
+ if (result[0]) {
+ label = N_('' + result[1]).split('\n')[0];
+ }
+ string_list.push(label.capitalize() + ' - ' + inputs[k].split('_')[0].capitalize());
+ sensor_list.push(test);
+ }
+ }
+ return [sensor_list, string_list];
+}
+
+
+const ColorSelect = new Lang.Class({
+ Name: 'PingMonitor.ColorSelect',
+
+ _init: function (name) {
+ this.label = new Gtk.Label({label: name + _(':')});
+ this.picker = new Gtk.ColorButton();
+ this.actor = new Gtk.HBox({spacing: 5});
+ this.actor.add(this.label);
+ this.actor.add(this.picker);
+ this.picker.set_use_alpha(true);
+ },
+ set_value: function (value) {
+ let clutterColor = Compat.color_from_string(value);
+ let color = new Gdk.RGBA();
+ let ctemp = [clutterColor.red, clutterColor.green, clutterColor.blue, clutterColor.alpha / 255];
+ color.parse('rgba(' + ctemp.join(',') + ')');
+ this.picker.set_rgba(color);
+ }
+});
+
+const IntSelect = new Lang.Class({
+ Name: 'PingMonitor.IntSelect',
+
+ _init: function (name) {
+ this.label = new Gtk.Label({label: name + _(':')});
+ this.spin = new Gtk.SpinButton();
+ this.actor = new Gtk.HBox();
+ this.actor.add(this.label);
+ this.actor.add(this.spin);
+ this.spin.set_numeric(true);
+ },
+ set_args: function (minv, maxv, incre, page) {
+ this.spin.set_range(minv, maxv);
+ this.spin.set_increments(incre, page);
+ },
+ set_value: function (value) {
+ this.spin.set_value(value);
+ }
+});
+
+const Select = new Lang.Class({
+ Name: 'PingMonitor.Select',
+
+ _init: function (name) {
+ this.label = new Gtk.Label({label: name + _(':')});
+ // this.label.set_justify(Gtk.Justification.RIGHT);
+ this.selector = new Gtk.ComboBoxText();
+ this.actor = new Gtk.HBox({spacing: 5});
+ this.actor.add(this.label);
+ this.actor.add(this.selector);
+ },
+ set_value: function (value) {
+ this.selector.set_active(value);
+ },
+ add: function (items) {
+ items.forEach(Lang.bind(this, function (item) {
+ this.selector.append_text(item);
+ }));
+ }
+});
+
+function set_enum(combo, schema, name) {
+ Schema.set_enum(name, combo.get_active());
+}
+
+function set_color(color, schema, name) {
+ Schema.set_string(name, color_to_hex(color.get_rgba()))
+}
+
+function set_string(combo, schema, name, _slist) {
+ Schema.set_string(name, _slist[combo.get_active()]);
+}
+
+const SettingFrame = new Lang.Class({
+ Name: 'PingMonitor.SettingFrame',
+
+ _init: function (name, schema) {
+ this.schema = schema;
+ this.label = new Gtk.Label({label: name});
+ this.frame = new Gtk.Frame({border_width: 10});
+
+ this.vbox = new Gtk.VBox({spacing: 20});
+ this.hbox0 = new Gtk.HBox({spacing: 20});
+ this.hbox1 = new Gtk.HBox({spacing: 20});
+ this.hbox2 = new Gtk.HBox({spacing: 20});
+ this.hbox3 = new Gtk.HBox({spacing: 20});
+ this.frame.add(this.vbox);
+ this.vbox.pack_start(this.hbox0, true, false, 0);
+ this.vbox.pack_start(this.hbox1, true, false, 0);
+ this.vbox.pack_start(this.hbox2, true, false, 0);
+ this.vbox.pack_start(this.hbox3, true, false, 0);
+ },
+
+ /** Enforces child ordering of first 2 boxes by label */
+ _reorder: function () {
+ /** @return {string} label of/inside component */
+ const labelOf = el => {
+ if (el.get_children) {
+ return labelOf(el.get_children()[0]);
+ }
+ return el && el.label || '';
+ };
+
+ [this.hbox0, this.hbox1].forEach(box => {
+ box.get_children()
+ .sort((c1, c2) => labelOf(c1).localeCompare(labelOf(c2)))
+ .forEach((child, index) => box.reorder_child(child, index));
+ });
+ },
+
+ add: function (key) {
+ const configParent = key.substring(0, key.indexOf('-'));
+ const config = key.substring(configParent.length + 1);
+
+ // hbox0
+ if (config === 'display') {
+ let item = new Gtk.CheckButton({label: _('Display')});
+ this.hbox0.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (config === 'show-text') {
+ let item = new Gtk.CheckButton({label: _('Show Text')});
+ this.hbox0.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (config === 'show-menu') {
+ let item = new Gtk.CheckButton({label: _('Show In Menu')});
+ this.hbox0.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ // hbox1
+ } else if (config === 'refresh-time') {
+ let item = new IntSelect(_('Refresh Time'));
+ item.set_args(50, 100000, 1000, 5000);
+ this.hbox1.add(item.actor);
+ Schema.bind(key, item.spin, 'value', Gio.SettingsBindFlags.DEFAULT);
+ } else if (config === 'graph-width') {
+ let item = new IntSelect(_('Graph Width'));
+ item.set_args(1, 1000, 1, 10);
+ this.hbox1.add(item.actor);
+ Schema.bind(key, item.spin, 'value', Gio.SettingsBindFlags.DEFAULT);
+ } else if (config === 'style') {
+ let item = new Select(_('Display Style'));
+ item.add([_('digit'), _('graph'), _('both')]);
+ item.set_value(this.schema.get_enum(key));
+ this.hbox1.add(item.actor);
+ item.selector.connect('changed', function (style) {
+ set_enum(style, Schema, key);
+ });
+ // Schema.bind(key, item.selector, 'active', Gio.SettingsBindFlags.DEFAULT);
+ // hbox2
+ } else if (config.match(/-color$/)) {
+ let item = new ColorSelect(_(config.split('-')[0].capitalize()));
+ item.set_value(this.schema.get_string(key));
+ this.hbox2.pack_end(item.actor, true, false, 0);
+ item.picker.connect('color-set', function (color) {
+ set_color(color, Schema, key);
+ });
+ } else if (config.match(/sensor/)) {
+ let sensor_type = configParent === 'fan' ? 'fan' : 'temp';
+ let [_slist, _strlist] = check_sensors(sensor_type);
+ let item = new Select(_('Sensor'));
+ if (_slist.length === 0) {
+ item.add([_('Please install lm-sensors')]);
+ } else if (_slist.length === 1) {
+ this.schema.set_string(key, _slist[0]);
+ }
+ item.add(_strlist);
+ try {
+ item.set_value(_slist.indexOf(this.schema.get_string(key)));
+ } catch (e) {
+ item.set_value(0);
+ }
+ // this.hbox3.add(item.actor);
+ if (configParent === 'fan') {
+ this.hbox2.pack_end(item.actor, true, false, 0);
+ } else {
+ this.hbox2.pack_start(item.actor, true, false, 0);
+ }
+ item.selector.connect('changed', function (combo) {
+ set_string(combo, Schema, key, _slist);
+ });
+ // hbox3
+ } else if (config === 'speed-in-bits') {
+ let item = new Gtk.CheckButton({label: _('Show network speed in bits')});
+ this.hbox3.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (config === 'individual-cores') {
+ let item = new Gtk.CheckButton({label: _('Display Individual Cores')});
+ this.hbox3.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (config === 'time') {
+ let item = new Gtk.CheckButton({label: _('Show Time Remaining')});
+ this.hbox3.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (config === 'hidesystem') {
+ let item = new Gtk.CheckButton({label: _('Hide System Icon')});
+ this.hbox3.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (config === 'usage-style') {
+ let item = new Select(_('Usage Style'));
+ item.add([_('pie'), _('bar'), _('none')]);
+ item.set_value(this.schema.get_enum(key));
+ this.hbox3.pack_end(item.actor, false, false, 20);
+
+ item.selector.connect('changed', function (style) {
+ set_enum(style, Schema, key);
+ });
+ } else if (config === 'fahrenheit-unit') {
+ let item = new Gtk.CheckButton({label: _('Display temperature in Fahrenheit')});
+ this.hbox3.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (config === 'threshold') {
+ let item = new IntSelect(_('Temperature threshold (0 to disable)'));
+ item.set_args(0, 300, 5, 5);
+ this.hbox3.add(item.actor);
+ Schema.bind(key, item.spin, 'value', Gio.SettingsBindFlags.DEFAULT);
+ }
+ if (configParent.indexOf('gpu') !== -1 &&
+ config === 'display') {
+ let item = new Gtk.Label({label: _('** Only Nvidia GPUs supported so far **')});
+ this.hbox3.add(item);
+ }
+ this._reorder();
+ }
+});
+
+const App = new Lang.Class({
+ Name: 'PingMonitor.App',
+
+ _init: function () {
+ let setting_items = ['cpu', 'memory', 'swap', 'net', 'disk', 'gpu', 'thermal', 'fan', 'freq', 'battery'];
+ let keys = Schema.list_keys();
+
+ this.items = [];
+ this.settings = [];
+
+ setting_items.forEach(Lang.bind(this, function (setting) {
+ this.settings[setting] = new SettingFrame(_(setting.capitalize()), Schema);
+ }));
+
+ this.main_vbox = new Gtk.Box({orientation: Gtk.Orientation.VERTICAL,
+ spacing: 10,
+ border_width: 10});
+ this.hbox1 = new Gtk.Box({
+ orientation: Gtk.Orientation.HORIZONTAL,
+ spacing: 20,
+ border_width: 10
+ });
+ this.main_vbox.pack_start(this.hbox1, false, false, 0);
+
+ keys.forEach(Lang.bind(this, function (key) {
+ if (key === 'icon-display') {
+ let item = new Gtk.CheckButton({label: _('Display Icon')});
+ // item.set_active(Schema.get_boolean(key))
+ this.items.push(item);
+ this.hbox1.add(item);
+ /* item.connect('toggled', function(check) {
+ set_boolean(check, Schema, key);
+ });*/
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (key === 'center-display') {
+ let item = new Gtk.CheckButton({label: _('Display in the Middle')});
+ // item.set_active(Schema.get_boolean(key))
+ this.items.push(item);
+ this.hbox1.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (key === 'compact-display') {
+ let item = new Gtk.CheckButton({label: _('Compact Display')});
+ this.items.push(item);
+ this.hbox1.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (key === 'show-tooltip') {
+ let item = new Gtk.CheckButton({label: _('Show tooltip')});
+ item.set_active(Schema.get_boolean(key));
+ this.items.push(item);
+ this.hbox1.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (key === 'move-clock') {
+ let item = new Gtk.CheckButton({label: _('Move the clock')});
+ // item.set_active(Schema.get_boolean(key))
+ this.items.push(item);
+ this.hbox1.add(item);
+ Schema.bind(key, item, 'active', Gio.SettingsBindFlags.DEFAULT);
+ } else if (key === 'background') {
+ let item = new ColorSelect(_('Background Color'));
+ item.set_value(Schema.get_string(key));
+ this.items.push(item);
+ this.hbox1.pack_start(item.actor, true, false, 0);
+ item.picker.connect('color-set', function (color) {
+ set_color(color, Schema, key);
+ });
+ } else {
+ let sections = key.split('-');
+ if (setting_items.indexOf(sections[0]) >= 0) {
+ this.settings[sections[0]].add(key);
+ }
+ }
+ }));
+ this.notebook = new Gtk.Notebook();
+ setting_items.forEach(Lang.bind(this, function (setting) {
+ this.notebook.append_page(this.settings[setting].frame, this.settings[setting].label);
+ this.main_vbox.pack_start(this.notebook, true, true, 0);
+ this.main_vbox.show_all();
+ }));
+ this.main_vbox.show_all();
+ }
+});
+
+function buildPrefsWidget() {
+ let widget = new App();
+ return widget.main_vbox;
+}
diff --git a/ping-monitor@samuel.bachmann.gmail.com/schemas/gschemas.compiled b/ping-monitor@samuel.bachmann.gmail.com/schemas/gschemas.compiled
new file mode 100644
index 0000000..0ef631d
Binary files /dev/null and b/ping-monitor@samuel.bachmann.gmail.com/schemas/gschemas.compiled differ
diff --git a/ping-monitor@samuel.bachmann.gmail.com/schemas/org.gnome.shell.extensions.ping-monitor.gschema.xml b/ping-monitor@samuel.bachmann.gmail.com/schemas/org.gnome.shell.extensions.ping-monitor.gschema.xml
new file mode 100644
index 0000000..98b36f2
--- /dev/null
+++ b/ping-monitor@samuel.bachmann.gmail.com/schemas/org.gnome.shell.extensions.ping-monitor.gschema.xml
@@ -0,0 +1,484 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ['0', '1', '2']
+ Ping ids.
+
+
+
+ ['lpc', 'npc', 'apc']
+ Ping tags.
+
+
+
+ ['LPC', 'NPC', 'APC']
+ Ping names.
+
+
+
+ ['8.8.8.8', '192.168.0.1', '192.168.0.100']
+ Ping ip addresses.
+
+
+
+ ['true', 'true', 'true']
+ Ping show text.
+
+
+
+ true
+ Display ping monitor icon
+ Set to true to display ping monitor icon in status bar.(NOTICE: The icon will be shown when none of the others is shown.)
+
+
+ true
+ Display memory
+ Set to false to remove memory display in status bar
+
+
+ 5000
+ Memory refresh time
+ Time in ms between 2 refresh of memory
+
+
+ 100
+ Memory graph width
+ Graph width in pixel
+
+
+ true
+ Display 'mem'
+ Set to true to show 'mem' before memory display
+
+
+ true
+ Display Memory In Menu
+ Set to true to show memory in pop-up menu
+
+
+ 'graph'
+ Choose the display style.
+
+
+ false
+ Display swap
+ Set to false to remove swap display in status bar
+
+
+ 5000
+ Swap refresh time
+ Time in ms between 2 refresh of swap
+
+
+ 100
+ Swap graph width
+ Graph width in pixel
+
+
+ true
+ Display 'swap'
+ Set to true to show 'swap' before swap display
+
+
+ true
+ Display Swap In Menu
+ Set to true to show swap in pop-up menu
+
+
+ 'graph'
+ Choose the display style.
+
+
+ true
+ Display cpu
+ Set to false to remove cpu display in status bar
+
+
+ 1500
+ Cpu refresh time
+ Time in ms between 2 refresh of cpu
+
+
+ 100
+ Cpu graph width
+ Graph width in pixel
+
+
+ true
+ Display 'cpu'
+ Set to true to show 'cpu' before cpu display
+
+
+ true
+ Display Cpu In Menu
+ Set to true to show cpu in pop-up menu
+
+
+ 'graph'
+ Choose the display style.
+
+
+ false
+ Display one graph per cpu core
+ Set to true to display one graph per cpu core
+
+
+ false
+ Display gpu usage
+ Set to false to remove gpu display in status bar
+
+
+ 5000
+ Memory refresh time
+ Time in ms between 2 refresh of gpu usage
+
+
+ 100
+ Gpu usage graph width
+ Graph width in pixel
+
+
+ true
+ Display 'gpu'
+ Set to true to show 'gpu' before gpu display
+
+
+ false
+ Display Gpu In Menu
+ Set to true to show gpu in pop-up menu
+
+
+ 'graph'
+ Choose the display style.
+
+
+ false
+ Display freq
+ Set to false to remove freq display in status bar
+
+
+ 1500
+ Cpu frequency refresh time
+ Time in ms between 2 refresh of cpu
+
+
+ 100
+ Cpu frequency graph width
+ Graph width in pixel
+
+
+ false
+ Display freq'
+ Set to true to show 'freq' before cpu frequency display
+
+
+ false
+ Display Freq In Menu
+ Set to true to show freq in pop-up menu
+
+
+ 'graph'
+ Choose the display style.
+
+
+ true
+ Display net
+ Set to false to remove net display in status bar
+
+
+ 1000
+ Net refresh time
+ Time in ms between 2 refresh of net
+
+
+ 100
+ Net graph width
+ Graph width in pixel
+
+
+ true
+ Display 'net'
+ Set to true to show 'net' before net display
+
+
+ true
+ Display Net In Menu
+ Set to true to show net in pop-up menu
+
+
+ 'graph'
+ Choose the display style.
+
+
+ false
+ Show network speed in bits/sec
+
+
+ false
+ Display disk io speed
+ Set to false to remove disk display in status bar
+
+
+ 2000
+ Disk IO refresh time
+ Time in ms between 2 refresh of Disk IO
+
+
+ 100
+ Disk IO graph width
+ Graph width in pixel
+
+
+ true
+ Display 'disk'
+ Set to true to show 'disk' before disk io display
+
+
+ true
+ Display Disk In Menu
+ Set to true to show disk in pop-up menu
+
+
+ 'graph'
+ Choose the display style.
+
+
+ 'pie'
+ Choose the disk usage display style.
+
+
+ false
+ Display thermal
+ Set to false to remove thermal display in status bar
+
+
+ 5000
+ thermal refresh time
+ Time in ms between 2 refresh of thermal
+
+
+ 100
+ thermal graph width
+ Graph width in pixel
+
+
+ true
+ Display 'thermal'
+ Set to true to show 'thermal' before thermal display
+
+
+ true
+ Display Temps In Menu
+ Set to true to show thermal in pop-up menu
+
+
+ 'graph'
+ Choose the display style.
+
+
+ '/sys/devices/virtual/thermal/thermal_zone0/temp'
+ Sensor File
+ Location of the sensor file for cpu temp
+
+
+ 0
+ Thermal threshold
+ When the temprature passes the threshold, the text is set to red as an alert.
+
+
+ false
+ Display fan
+ Set to false to remove fan display in status bar
+
+
+ 5000
+ fan refresh time
+ Time in ms between 2 refresh of fan
+
+
+ 100
+ fan graph width
+ Graph width in pixel
+
+
+ true
+ Display 'fan'
+ Set to true to show 'fan' before fan display
+
+
+ true
+ Display Fans In Menu
+ Set to true to show fan in pop-up menu
+
+
+ 'graph'
+ Choose the display style.
+
+
+ '/sys/devices/virtual/thermal/cooling_device0/cur_state'
+ Sensor File
+ Location of the sensor file for fan
+
+
+ '#f2002e'
+ Color of fan in the chart
+
+
+ false
+ Display informations next to the clock
+ True: Set information at the center, False: Set information in status bar (at top right)
+
+
+ false
+ Move the clock to the right when center-display is true
+ True: Move the clock to the right, False: Keep it in center
+
+
+ false
+ Enable or disable the tooltip
+ True: show tool tip on mouse hover
+
+
+ false
+ Optimize view for small displays
+ Optimize texts sizes to fit on a small display
+
+
+ '#00b35b'
+ Color of program memory in the chart
+
+
+ '#00ff82'
+ Color of buffer memory in the chart
+
+
+ '#aaf5d0'
+ Color of cache memory in the chart
+
+
+ '#fce94f'
+ Color of download speed in the chart
+
+
+ '#fb74fb'
+ Color of upload speed in the chart
+
+
+ '#ff6e00'
+ Color of download errors
+
+
+ '#e0006e'
+ Color of upload errors
+
+
+ '#ff0000'
+ Color of collisions
+
+
+ '#0072b3'
+ Color of user cpu in the chart
+
+
+ '#0092e6'
+ Color of system cpu in the chart
+
+
+ '#00a3ff'
+ Color of nice cpu in the chart
+
+
+ '#002f3d'
+ Color of iowait in the chart
+
+
+ '#001d26'
+ Color of other cpu in the chart
+
+
+ '#001d26'
+ Color of freq in the chart
+
+
+ '#8b00c3'
+ Color of used swap in the chart
+
+
+ '#c65000'
+ Color of disk reading speed in the chart
+
+
+ '#ff6700'
+ Color of disk writing speed in the chart
+
+
+ '#00b35b'
+ Color of program gpu memory in the chart
+
+
+ '#f2002e'
+ Color of user thermal in the chart
+
+
+ false
+ Display temperature in Fahrenheit
+ Set to true to show temperature in Fahrenheit
+
+
+ '#ffffff16'
+ Color of background
+
+
+ false
+ Display battery
+ Set to false to remove battery display in status bar
+
+
+ 5000
+ thermal refresh time
+ Time in ms between 2 refresh of thermal
+
+
+ 100
+ thermal graph width
+ Graph width in pixel
+
+
+ true
+ Display 'batt'
+ Set to true to show 'batt' before net display
+
+
+ false
+ Display 'batt'
+ Set to true to show battery in pop-up menu
+
+
+ 'digit'
+ Choose the display style.
+
+
+ '#f2002e'
+ Color of battery
+
+
+ false
+ Display battery time remaining rather than percentage
+
+
+ false
+ Hide system battery icon
+
+
+
+
diff --git a/ping-monitor@samuel.bachmann.gmail.com/stylesheet.css b/ping-monitor@samuel.bachmann.gmail.com/stylesheet.css
new file mode 100644
index 0000000..dbadea4
--- /dev/null
+++ b/ping-monitor@samuel.bachmann.gmail.com/stylesheet.css
@@ -0,0 +1,222 @@
+.sm-title {
+ font-size: 1em;
+ padding: 0px 25px 0px 0px;
+}
+
+.sm-label {
+ color: #bbb;
+ font-size: 0.75em;
+ padding-top: 5px;
+ font-family: monospace;
+}
+
+.sm-label-left {
+ color: #bbb;
+ font-size: 0.75em;
+ padding: 5px 5px 0 0;
+}
+
+.sm-value {
+ text-align: right;
+ min-width: 40px;
+ padding: 2px 5px 0 0;
+ font-family: monospace;
+}
+
+.sm-value-left {
+ text-align: left;
+ font-size: 0.75em;
+ min-width: 40px;
+ padding: 2px 5px 0 0;
+ font-family: monospace;
+}
+
+.sm-status-label {
+ color: #bbb;
+ font-size: 0.625em;
+ padding: 0 2px 0 5px;
+}
+
+.sm-unit-label,
+.sm-net-unit-label {
+ color: #aaa;
+ font-size: 0.5em;
+ padding: 0 5px 0 2px;
+}
+
+.sm-disk-unit-label {
+ color: #aaa;
+ font-size: 0.625em;
+ padding: 0 5px 0 2px;
+}
+
+.sm-net-unit-label {
+ min-width: 25px;
+}
+
+.sm-perc-label {
+ color: #aaa;
+ font-size: 0.625em;
+ padding: 0 5px 0 2px;
+}
+
+.sm-temp-label {
+ color: #aaa;
+ font-size: 0.6875em;
+ padding: 0 5px 0 2px;
+}
+
+.sm-status-value {
+ min-width: 25px;
+ text-align: right;
+}
+
+.sm-net-value {
+ min-width: 40px;
+ text-align: center;
+}
+
+.sm-disk-value {
+ min-width: 25px;
+ text-align: right;
+}
+
+.sm-big-status-value {
+ min-width: 42px;
+ text-align: right;
+}
+
+.sm-chart {
+ padding: 0 2px;
+}
+
+.sm-tooltip-box {
+ font-size: 0.85em;
+ font-weight: bold;
+ color: rgba(255, 255, 255, 0.9);
+ background-color: rgba(10, 10, 10, 0.7);
+ border-radius: 5px;
+ padding: 3px;
+ border: 1px solid #a5a5a5;
+}
+
+.sm-tooltip-item {
+ padding: 0px;
+ spacing: 10px;
+}
+.sm-status-icon {
+ padding: 0px 2px;
+ icon-size: 1.14em;
+}
+
+.sm-popup-menu-item-compact {
+}
+
+/* style definition when 'compact-display' option is activated */
+
+.sm-title-compact {
+ font-size: 0.75em;
+}
+
+.sm-label-compact {
+ color: #bbb;
+ font-size: 0.6875em;
+ font-family: monospace;
+} /* Bat, Net... units in menu items */
+
+.sm-value-compact {
+ font-size: 0.6875em;
+ text-align: right;
+ font-family: monospace;
+} /* Values in menu items */
+
+.sm-status-label-compact {
+ color: #bbb;
+ font-size: 0.5em;
+ padding: 2px 0px 0 0px;
+} /* names and Disk R and W signs in text items */
+
+.sm-unit-label-compact,
+.sm-net-unit-label-compact {
+ color: #aaa;
+ padding: 0 3px 0px 1px;
+ text-align: right;
+ font-size: 0.4375em;
+} /* Bat, Net... units in text items */
+
+.sm-disk-unit-label-compact {
+ color: #aaa;
+ padding: 0 3px 0px 0px;
+ text-align: right;
+ font-size: 0.4375em;
+} /* Disk units in text items */
+
+.sm-perc-label-compact {
+ padding: 0 3px 0 0px;
+ color: #aaa;
+ font-size: 0.5em;
+} /* Cpu, Mem ... % sign in text items */
+
+.sm-temp-label-compact {
+ font-size: 0.625em;
+ color: #aaa;
+ padding: 0 1px 0 1px;
+} /* Thermal °C sign in text items */
+
+.sm-status-value-compact {
+ padding:0 0px 0 1px;
+ font-size: 0.6875em;
+ text-align: right;
+ min-width:16px;
+} /* Cpu, Mem... value in text items */
+
+.sm-net-value-compact {
+ padding:0 0px 0 1px;
+ font-size: 0.6875em;
+ text-align: right;
+ min-width:24px;
+} /* Net value in text items */
+
+.sm-disk-value-compact {
+ padding: 0 1px 0 1px;
+ font-size: 0.6875em;
+ text-align: right;
+ min-width: 20px;
+} /* Disk value in text items */
+
+.sm-big-status-value-compact {
+ padding: 0 0px 0px 1px;
+ font-size: 0.6875em;
+ min-width: 38px;
+ text-align: right;
+} /* freq in text_items */
+
+.sm-chart-compact {
+ padding: 0 2px;
+}
+
+.sm-tooltip-box {
+ font-size: 0.85em;
+ font-weight: bold;
+ color: rgba(255, 255, 255, 0.9);
+ background-color: rgba(10, 10, 10, 0.7);
+ border-radius: 5px;
+ padding: 3px;
+ border: 1px solid #a5a5a5;
+}
+
+.sm-tooltip-item-compact {
+ padding: 0px;
+ spacing: 10px;
+}
+
+.sm-status-icon-compact {
+ padding: 1px 0 0 2px;
+ icon-size: 1.00em;
+} /* BAT icon in text_items */
+
+.sm-popup-menu-item-compact {
+ font-size: 0.6875em;
+ width: 20px;
+ padding: 1px 2px 1px 7px;
+}
diff --git a/po/ar/system-monitor.po b/po/ar/system-monitor.po
new file mode 100644
index 0000000..eb3d361
--- /dev/null
+++ b/po/ar/system-monitor.po
@@ -0,0 +1,373 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: 1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: 2013-08-22 01:55+0200\n"
+"Last-Translator: Muhammad Fawwaz Orabi \n"
+"Language-Team: Arabic \n"
+"Language: Arabic\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ":"
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "اعرضه"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "حدّثه كلّ"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "عرض المخطط"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "اعرض النص"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "نمط العرض"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "اعرض الرمز"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "اعرضه في المنتصف"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "لون الخلفية"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "اعرض الأنوية مفردة"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "اعرض سرعة الشبكة بالبِتّات"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "الحساس"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "(ثبّت lm-sensors أولاً)"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "انقل الساعة"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "عرض مصغّر"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "معالج"
+
+msgid "User"
+msgstr "المستخدِم"
+
+msgid "System"
+msgstr "النظام"
+
+msgid "Other"
+msgstr "غيرهما"
+
+msgid "Nice"
+msgstr "Nice"
+
+msgid "Iowait"
+msgstr "lowait"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "الذاكرة"
+
+msgid "Program"
+msgstr "البرنامج"
+
+msgid "Cache"
+msgstr "الخبيئة"
+
+msgid "Buffer"
+msgstr ""
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "التبديل"
+
+msgid "Used"
+msgstr "مستخدَم"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "شبكة"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "رفع"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "تنزيل"
+
+msgid "Uperrors"
+msgstr "أخطاء الرفع"
+
+msgid "Downerrors"
+msgstr "أخطاء التنزيل"
+
+msgid "collisions"
+msgstr "التصادمات"
+
+msgid "Collisions"
+msgstr "التصادمات"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "قرص"
+
+msgid "Write"
+msgstr "الكتابة"
+
+msgid "Read"
+msgstr "القراءة"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr "ك"
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr "ق"
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "مخطط"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "رقم"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "كلاهما"
+
+msgid "cpu"
+msgstr "معالج"
+
+#: extension.js:811
+msgid "mem"
+msgstr "ذاكرة"
+
+msgid "swap"
+msgstr "تبديل"
+
+msgid "net"
+msgstr "شبكة"
+
+msgid "disk"
+msgstr "قرص"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "تفضيلات..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "مِرقاب النظام..."
+
+msgid "System monitor"
+msgstr "مرقاب النظام"
+
+msgid "user"
+msgstr "مستخدِم"
+
+msgid "system"
+msgstr "نظام"
+
+msgid "other"
+msgstr "غيرهما"
+
+msgid "nice"
+msgstr "nice"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "برنامج"
+
+msgid "cache"
+msgstr "خبيئة"
+
+msgid "buffer"
+msgstr ""
+
+msgid "used"
+msgstr "مستخدَم"
+
+msgid "up"
+msgstr "رفع"
+
+msgid "down"
+msgstr "تنزيل"
+
+msgid "uperrors"
+msgstr "أخطاء الرفع"
+
+msgid "downerrors"
+msgstr "أخطاء التنزيل"
+
+msgid "write"
+msgstr "كتابة"
+
+msgid "read"
+msgstr "قراءة"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "ك.ب/ثا"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "م.ب/ثا"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "م.ب"
+
+#: extension.js:1714
+#, fuzzy
+msgid "GiB"
+msgstr "م.ب"
+
+#: extension.js:184
+msgid "kB"
+msgstr "ك.ب"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "م.ب"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "حرارة"
+
+msgid "thermal"
+msgstr "حرارة"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "أظهره في القائمة"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "اعرض الوقت المتبقي"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "أخفِ رمز النظام"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "نمط الاستخدام"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "قرص"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "أشرطة"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "لا شيء"
+
+#: extension.js:68
+#, fuzzy
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+"لا تتوفر للإضافة كل ما تعتمد عليه\n"
+"رجاء ثبّت ما يلي: \n"
+"مدير الشبكة وlubgtop ومرتبطِات gir \n"
+"\t في Ubuntu: gir1.2-gtop-2.0 وgir1.2-networkmanager-1.0 \n"
+"\t في Fedora: libgtop2-devel وNetworkManager-glib-devel \n"
+"\t في Arch: libgtop وnetworkmanager\n"
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "ملحق مرقاب النظام"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "ألغِ"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "البطارية"
+
+msgid "battery"
+msgstr "بطارية"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "التردد"
+
+msgid "freq"
+msgstr "تردد"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "المروحة"
+
+msgid "fan"
+msgstr "مروحة"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "دورة/د"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
diff --git a/po/ca/system-monitor.po b/po/ca/system-monitor.po
new file mode 100644
index 0000000..516c6b5
--- /dev/null
+++ b/po/ca/system-monitor.po
@@ -0,0 +1,380 @@
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-shell-system-monitor-applet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Ecron\n"
+"Language-Team: \n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.6.4\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ":"
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Mostra"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Freqüència d'actualització"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Amplada del gràfic"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Mostra el text"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Estil de visualització"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Mostra la icona"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Mostra al centre"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Color del fons"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Mostra els nuclis individuals"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Mostra la velocitat de la xarxa en bits"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Sensor"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Instaŀleu lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Mou el rellotge"
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Visualització compacta"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "CPU"
+
+msgid "User"
+msgstr "Usuari"
+
+msgid "System"
+msgstr "Sistema"
+
+msgid "Other"
+msgstr "Altre"
+
+msgid "Nice"
+msgstr "Nice"
+
+msgid "Iowait"
+msgstr "Espera E/S"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Memòria"
+
+msgid "Program"
+msgstr "Programa"
+
+msgid "Cache"
+msgstr "Memòria cau"
+
+msgid "Buffer"
+msgstr "Memòria intermèdia"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Intercanvi"
+
+msgid "Used"
+msgstr "Usat"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Xarxa"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Pujada"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Baixada"
+
+msgid "Uperrors"
+msgstr "Errors de pujada"
+
+msgid "Downerrors"
+msgstr "Errors de baixada"
+
+msgid "collisions"
+msgstr "col·lisions"
+
+msgid "Collisions"
+msgstr "Col·lisions"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Disc"
+
+msgid "Write"
+msgstr "Escriptura"
+
+msgid "Read"
+msgstr "Lectura"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr "L"
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr "E"
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "Gràfic"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "Numèric"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "Ambdós"
+
+msgid "cpu"
+msgstr "cpu"
+
+#: extension.js:811
+msgid "mem"
+msgstr "mem"
+
+msgid "swap"
+msgstr "interc"
+
+msgid "net"
+msgstr "xarxa"
+
+msgid "disk"
+msgstr "disc"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Configuració..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Monitor del sistema..."
+
+msgid "System monitor"
+msgstr "Monitor del sistema"
+
+msgid "user"
+msgstr "usuari"
+
+msgid "system"
+msgstr "sistema"
+
+msgid "other"
+msgstr "altre"
+
+msgid "nice"
+msgstr "nice"
+
+msgid "iowait"
+msgstr "espera e/s"
+
+msgid "program"
+msgstr "programa"
+
+msgid "cache"
+msgstr "memòria cau"
+
+msgid "buffer"
+msgstr "intermèdia"
+
+msgid "used"
+msgstr "usat"
+
+msgid "up"
+msgstr "pujada"
+
+msgid "down"
+msgstr "baixada"
+
+msgid "uperrors"
+msgstr "errorspujada"
+
+msgid "downerrors"
+msgstr "errorsbaixada"
+
+msgid "write"
+msgstr "escriptura"
+
+msgid "read"
+msgstr "lectura"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "MiB"
+
+#: extension.js:1714
+#, fuzzy
+msgid "GiB"
+msgstr "GiB"
+
+#: extension.js:184
+msgid "kB"
+msgstr "kB"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "MB"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Temperatura"
+
+msgid "thermal"
+msgstr "temperatura"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Mostra al menú"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Mostra el temps restant"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Oculta la icona del sistema"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Estil d'ús"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "tarta"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "barres"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "cap"
+
+#: extension.js:68
+#, fuzzy
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+"Hi falten dependències\n"
+"Instaŀleu:\n"
+"libgtop, Network Manager i gir bindings \n"
+"\t a Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t a Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t a Arch: libgtop, networkmanager\n"
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Extensió Monitor del Sistema"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Canceŀla"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Bateria"
+
+msgid "battery"
+msgstr "bateria"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Freqüència"
+
+msgid "freq"
+msgstr "freq"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Ventilador"
+
+msgid "fan"
+msgstr "vent"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "rpm"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr "Mostra l'indicador de funció"
+
+#: extension.js:1097
+msgid "CPU"
+msgstr "CPU"
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr "Mostra la temperatura en Fahrenheit"
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr "Llindar de temperatura (0 per a desactivar)"
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "Configuració de l'extensió Monitor del Sistema"
diff --git a/po/compile.sh b/po/compile.sh
new file mode 100755
index 0000000..204708f
--- /dev/null
+++ b/po/compile.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+DEST=$1
+
+for p in */
+do
+ echo $p
+ `mkdir -p $1/$p/LC_MESSAGES`
+ `msgfmt ./$p/system-monitor.po -o $1/$p/LC_MESSAGES/system-monitor.mo`
+done
diff --git a/po/cs/system-monitor.po b/po/cs/system-monitor.po
new file mode 100644
index 0000000..5efd31a
--- /dev/null
+++ b/po/cs/system-monitor.po
@@ -0,0 +1,375 @@
+# Translation to czech language (cs_CZ)
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Jan Lipovský , 2011-2012.
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-shell-system-monitor-applet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: 2012-09-15\n"
+"Last-Translator: Jan Lipovský \n"
+"Language-Team: \n"
+"Language: Czech\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ":"
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Zobrazit"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Doba obnovy"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Šířka grafu"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Zobrazit text"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Styl zobrazení"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Zobrazit ikonu"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Zobrazit uprostřed"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Barva pozadí"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Zobrazit jednotlivá jádra"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Zobrazit rychlost sítě v bitech"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Sensor"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Nainstalujte si lm-sensors, prosím."
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Posunout hodiny"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Kompaktní zobrazení"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Cpu"
+
+msgid "User"
+msgstr "Uživatel"
+
+msgid "System"
+msgstr "Systém"
+
+msgid "Other"
+msgstr "Jiný"
+
+msgid "Nice"
+msgstr "Nice"
+
+msgid "Iowait"
+msgstr "Iowait"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Paměť"
+
+msgid "Program"
+msgstr "Program"
+
+msgid "Cache"
+msgstr "Cache"
+
+msgid "Buffer"
+msgstr "Buffer"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Swap"
+
+msgid "Used"
+msgstr "Využito"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Síť"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Odchozí"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Příchozí"
+
+msgid "Uperrors"
+msgstr "Odchozí chyby"
+
+msgid "Downerrors"
+msgstr "Příchozí chyby"
+
+msgid "collisions"
+msgstr "kolize"
+
+msgid "Collisions"
+msgstr "Kolize"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Disk"
+
+msgid "Write"
+msgstr "Zápis"
+
+msgid "Read"
+msgstr "Čtení"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr ""
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "graf"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "čísla"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "oboje"
+
+msgid "cpu"
+msgstr "cpu"
+
+#: extension.js:811
+msgid "mem"
+msgstr "pam"
+
+msgid "swap"
+msgstr "swap"
+
+msgid "net"
+msgstr "síť"
+
+msgid "disk"
+msgstr "disk"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Možnosti..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Sledování systému..."
+
+msgid "System monitor"
+msgstr "Sledování systému"
+
+msgid "user"
+msgstr "uživatel"
+
+msgid "system"
+msgstr "systém"
+
+msgid "other"
+msgstr "jiný"
+
+msgid "nice"
+msgstr "nice"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "program"
+
+msgid "cache"
+msgstr "cache"
+
+msgid "buffer"
+msgstr "buffer"
+
+msgid "used"
+msgstr "využito"
+
+msgid "up"
+msgstr "odchozí"
+
+msgid "down"
+msgstr "příchozí"
+
+msgid "uperrors"
+msgstr "odchozí chyby"
+
+msgid "downerrors"
+msgstr "příchozí chyby"
+
+msgid "write"
+msgstr "zápis"
+
+msgid "read"
+msgstr "čtení"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "MiB"
+
+#: extension.js:1714
+#, fuzzy
+msgid "GiB"
+msgstr "MiB"
+
+#: extension.js:184
+msgid "kB"
+msgstr "kB"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "MB"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Teplota"
+
+msgid "thermal"
+msgstr "teplota"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Zobrazit v menu"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Zobrazit zbývající čas"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Skrýt systémovou ikonu"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Styl zobrazení"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "koláčový"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "sloupcový"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "žádný"
+
+#: extension.js:68
+#, fuzzy
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+"Chybějící závislosti\n"
+"Prosím nainstalujte si: \n"
+"libgtop, Network Manager a gir bindings \n"
+"\t Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t Arch: libgtop, networkmanager\n"
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Sledování systému rozšíření"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Baterie"
+
+msgid "battery"
+msgstr "baterie"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Frekvence"
+
+msgid "freq"
+msgstr "frekvence"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Ventilátor"
+
+msgid "fan"
+msgstr "ventilátor"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "ot/min"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "System Monitor Applet Konfigurátor"
diff --git a/po/de/system-monitor.po b/po/de/system-monitor.po
new file mode 100644
index 0000000..d5174f5
--- /dev/null
+++ b/po/de/system-monitor.po
@@ -0,0 +1,378 @@
+# German translation.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Michael Pusterhofer , 2011.
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: paradoxxxzero/gnome-shell-system-monitor-applet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: 2012-09-05 20:42+0100\n"
+"Last-Translator: Agilo Kern \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-Country: GERMANY\n"
+"X-Poedit-KeywordsList: Collisions\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ":"
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Anzeigen"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Aktualisierungs-Intervall"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Diagrammbreite"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Anzeige beschriften"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Anzeigestil"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Zeige Icon"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Anzeige zentrieren"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Hintergrundfarbe"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Einzelne Prozessorkerne anzeigen"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Übertragungsrate in Bits anzeigen"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Sensor"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Bitte installieren Sie lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Uhr verschieben"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Kompakte Darstellung"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "CPU"
+
+msgid "User"
+msgstr "Benutzer"
+
+msgid "System"
+msgstr "System"
+
+msgid "Other"
+msgstr "Andere"
+
+msgid "Nice"
+msgstr "Nice"
+
+msgid "Iowait"
+msgstr "IOwait"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Hauptspeicher"
+
+msgid "Program"
+msgstr "Programm"
+
+msgid "Cache"
+msgstr "Zwischenspeicher"
+
+msgid "Buffer"
+msgstr "Pufferspeicher"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Auslagerungsdateien"
+
+msgid "Used"
+msgstr "Verwendet"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Netzwerk"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Senden"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Empfangen"
+
+msgid "Uperrors"
+msgstr "Sendefehler"
+
+msgid "Downerrors"
+msgstr "Empfangsfehler"
+
+msgid "collisions"
+msgstr "Kollisionsdaten"
+
+msgid "Collisions"
+msgstr "Kollisionsdaten"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Festplatte"
+
+msgid "Write"
+msgstr "Schreiben"
+
+msgid "Read"
+msgstr "Lesen"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr ""
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "Diagramm"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "Zahl"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "Beides"
+
+msgid "cpu"
+msgstr "CPU"
+
+#: extension.js:811
+msgid "mem"
+msgstr "Speicher"
+
+msgid "swap"
+msgstr "Zw.-Speicher"
+
+msgid "net"
+msgstr "Netzwerk"
+
+msgid "disk"
+msgstr "Festplatte"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Einstellungen..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Systemüberwachung..."
+
+msgid "System monitor"
+msgstr "System Monitor"
+
+msgid "user"
+msgstr "Benutzer"
+
+msgid "system"
+msgstr "System"
+
+msgid "other"
+msgstr "Andere"
+
+msgid "nice"
+msgstr "Nice"
+
+msgid "iowait"
+msgstr "Iowait"
+
+msgid "program"
+msgstr "Programmspeicher"
+
+msgid "cache"
+msgstr "Zwischenspeicher"
+
+msgid "buffer"
+msgstr "Pufferspeicher"
+
+msgid "used"
+msgstr "belegt"
+
+msgid "up"
+msgstr "Senden"
+
+msgid "down"
+msgstr "Empfangen"
+
+msgid "uperrors"
+msgstr "Sendefehler"
+
+msgid "downerrors"
+msgstr "Empfangsfehler"
+
+msgid "write"
+msgstr "schreiben"
+
+msgid "read"
+msgstr "lesen"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "KB/s"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "MB/s"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "MB"
+
+#: extension.js:1714
+#, fuzzy
+msgid "GiB"
+msgstr "MB"
+
+#: extension.js:184
+msgid "kB"
+msgstr "kB"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "MB"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Temperatur"
+
+msgid "thermal"
+msgstr "Temp."
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Im Menü anzeigen"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Verbleibende Zeit anzeigen"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Systemeigenes Icon verbergen"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Anzeigestil der Speicherbelegung"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "Kreisdiagramm"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "Balkendiagramm"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "nicht anzeigen"
+
+#: extension.js:68
+#, fuzzy
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+"Fehlende Abhängigkeiten\n"
+"Bitte installieren Sie: \n"
+"libgtop, Netzwerkverwaltung und Gir-Anbindungen\n"
+"\t unter Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t unter Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t unter Arch Linux: libgtop, networkmanager\n"
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Shell-Erweiterung System Monitor"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Akku"
+
+msgid "battery"
+msgstr "Akku"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Taktfrequenz"
+
+msgid "freq"
+msgstr "Taktfrequenz"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Lüfter"
+
+msgid "fan"
+msgstr "Lüfter"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "1/min"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "System Monitor Applet Konfigurator"
diff --git a/po/es_ES/system-monitor.po b/po/es_ES/system-monitor.po
new file mode 100644
index 0000000..c717f4c
--- /dev/null
+++ b/po/es_ES/system-monitor.po
@@ -0,0 +1,379 @@
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-shell-system-monitor-applet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: picodotdev \n"
+"Language-Team: \n"
+"Language: es_ES\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.6.4\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ":"
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Mostrar"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Frecuencia de actualización"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Ancho del gráfico"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Mostrar etiqueta"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Estilo mostrado"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Mostrar icono"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Mostrar en el centro"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Color del fondo"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Mostrar núcleos individuales"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Mostrar velocidad de red en bits"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Sensor"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Instale lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Mover el reloj"
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Visualización compacta"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "CPU"
+
+msgid "User"
+msgstr "Usuario"
+
+msgid "System"
+msgstr "Sistema"
+
+msgid "Other"
+msgstr "Otro"
+
+msgid "Nice"
+msgstr ""
+
+msgid "Iowait"
+msgstr "Espera E/S"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Memoria"
+
+msgid "Program"
+msgstr "Programa"
+
+msgid "Cache"
+msgstr "Caché"
+
+msgid "Buffer"
+msgstr "Intermedia"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Intercambio"
+
+msgid "Used"
+msgstr "Usado"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Red"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Subida"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Descarga"
+
+msgid "Uperrors"
+msgstr "Errores de subida"
+
+msgid "Downerrors"
+msgstr "Errores de descarga"
+
+msgid "collisions"
+msgstr "colisiones"
+
+msgid "Collisions"
+msgstr "Colisiones"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Disco"
+
+msgid "Write"
+msgstr "Escritura"
+
+msgid "Read"
+msgstr "Lectura"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr "L"
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr "E"
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "Gráfico"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "Numérico"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "Ambos"
+
+msgid "cpu"
+msgstr "cpu"
+
+#: extension.js:811
+msgid "mem"
+msgstr "mem"
+
+msgid "swap"
+msgstr "swap"
+
+msgid "net"
+msgstr "red"
+
+msgid "disk"
+msgstr "disco"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Configuración..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Monitor del sistema..."
+
+msgid "System monitor"
+msgstr "Monitor del sistema"
+
+msgid "user"
+msgstr "usuario"
+
+msgid "system"
+msgstr "sistema"
+
+msgid "other"
+msgstr "otro"
+
+msgid "nice"
+msgstr ""
+
+msgid "iowait"
+msgstr "espera e/s"
+
+msgid "program"
+msgstr "programa"
+
+msgid "cache"
+msgstr "caché"
+
+msgid "buffer"
+msgstr "intermedia"
+
+msgid "used"
+msgstr "usado"
+
+msgid "up"
+msgstr "subida"
+
+msgid "down"
+msgstr "descarga"
+
+msgid "uperrors"
+msgstr "Errores de subida"
+
+msgid "downerrors"
+msgstr "Errores de bajada"
+
+msgid "write"
+msgstr "escritura"
+
+msgid "read"
+msgstr "lectura"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "MiB"
+
+#: extension.js:1714
+msgid "GiB"
+msgstr "GiB"
+
+#: extension.js:184
+msgid "kB"
+msgstr "kB"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "MB"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Temperatura"
+
+msgid "thermal"
+msgstr "temperatura"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Mostrar en el menú"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Mostrar tiempo restante"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Ocultar icono del sistema"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Uso de estilo"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "tarta"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "barras"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "ninguno"
+
+#: extension.js:68
+#, fuzzy
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+"Faltan dependencias\n"
+"Instale:\n"
+"libgtop, Network Manager y gir bindings \n"
+"\t en Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t en Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t en Arch: libgtop, networkmanager\n"
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Extensión monitor del sistema"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Batería"
+
+msgid "battery"
+msgstr "batería"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Frecuencia"
+
+msgid "freq"
+msgstr "frec"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Ventilador"
+
+msgid "fan"
+msgstr "vent"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "rpm"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr "Umbral de temperatura (0 para desactivar)"
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "Configuración de la extensión monitor del sistema"
diff --git a/po/es_MX/system-monitor.po b/po/es_MX/system-monitor.po
new file mode 100644
index 0000000..b444b71
--- /dev/null
+++ b/po/es_MX/system-monitor.po
@@ -0,0 +1,376 @@
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Carlos A. Gonzalez \n"
+"Language-Team: \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ""
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Pantalla"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Intervalo de actualización"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Ancho de la gráfica"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Mostrar texto"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Estilo de despliegue"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Mostrar icono"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Mostrar en medio"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Color de fondo"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr ""
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr ""
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr ""
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr ""
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr ""
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: prefs.js:286 prefs.js:289
+#, fuzzy
+msgid "Compact Display"
+msgstr "Pantalla"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr ""
+
+msgid "User"
+msgstr "Usuario"
+
+msgid "System"
+msgstr "Sistema"
+
+msgid "Other"
+msgstr "Otro"
+
+msgid "Nice"
+msgstr ""
+
+msgid "Iowait"
+msgstr ""
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Memoria"
+
+msgid "Program"
+msgstr "Programa"
+
+msgid "Cache"
+msgstr ""
+
+msgid "Buffer"
+msgstr ""
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr ""
+
+msgid "Used"
+msgstr "Usado"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr ""
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Arriba"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Abajo"
+
+msgid "Uperrors"
+msgstr ""
+
+msgid "Downerrors"
+msgstr ""
+
+msgid "collisions"
+msgstr ""
+
+msgid "Collisions"
+msgstr ""
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Disco"
+
+msgid "Write"
+msgstr "Escribir"
+
+msgid "Read"
+msgstr "Leer"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr ""
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "Gráfica"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "Ambos"
+
+msgid "cpu"
+msgstr ""
+
+#: extension.js:811
+msgid "mem"
+msgstr ""
+
+msgid "swap"
+msgstr ""
+
+msgid "net"
+msgstr ""
+
+msgid "disk"
+msgstr "disco"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Preferencias..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Monitor de sistema..."
+
+msgid "System monitor"
+msgstr "Monitor de sistema"
+
+msgid "user"
+msgstr "usuario"
+
+msgid "system"
+msgstr "sistema"
+
+msgid "other"
+msgstr "otro"
+
+msgid "nice"
+msgstr "nice"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "programa"
+
+msgid "cache"
+msgstr "cache"
+
+msgid "buffer"
+msgstr "buffer"
+
+msgid "used"
+msgstr "usado"
+
+msgid "up"
+msgstr "arriba"
+
+msgid "down"
+msgstr "abajo"
+
+msgid "uperrors"
+msgstr ""
+
+msgid "downerrors"
+msgstr ""
+
+msgid "write"
+msgstr "escribir"
+
+msgid "read"
+msgstr "leer"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr ""
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr ""
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr ""
+
+#: extension.js:1714
+msgid "GiB"
+msgstr "GiB"
+
+#: extension.js:184
+msgid "kB"
+msgstr ""
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr ""
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr ""
+
+#, fuzzy
+msgid "thermal"
+msgstr "Otro"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr ""
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr ""
+
+#: prefs.js:226 prefs.js:233
+#, fuzzy
+msgid "Hide System Icon"
+msgstr "Monitor de sistema"
+
+#: prefs.js:230 prefs.js:237
+#, fuzzy
+msgid "Usage Style"
+msgstr "Estilo de despliegue"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr ""
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+
+#: extension.js:97 extension.js:255
+#, fuzzy
+msgid "System Monitor Extension"
+msgstr "Monitor de sistema"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr ""
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr ""
+
+msgid "battery"
+msgstr ""
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr ""
+
+msgid "freq"
+msgstr ""
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr ""
+
+msgid "fan"
+msgstr ""
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr ""
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr "Umbral de temperatura (0 para desactivar)"
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "Configurador del applet de monitor de systema"
diff --git a/po/fa/system-monitor.po b/po/fa/system-monitor.po
new file mode 100644
index 0000000..673814f
--- /dev/null
+++ b/po/fa/system-monitor.po
@@ -0,0 +1,374 @@
+# Copyright (C) 2011 Iranian Free Software Users Group (IFSUG.org)translation team.
+# This file is distributed under the same license as the PACKAGE package.
+# Arash Mousavi , 2011.
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Arash Mousavi \n"
+"Language-Team: Persian \n"
+"Language: fa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Persian\n"
+"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ""
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "نمایش"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "زمان نوسازی"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "طول گراف"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "نمایش متن"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "سبک نمایش"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "نمایش شمایل"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "نمایش در وسط"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "رنگ پسزمینه"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr ""
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr ""
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr ""
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr ""
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr ""
+
+#: prefs.js:286 prefs.js:289
+#, fuzzy
+msgid "Compact Display"
+msgstr "نمایش"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "سیپییو"
+
+msgid "User"
+msgstr "کاربر"
+
+msgid "System"
+msgstr "سیستم"
+
+msgid "Other"
+msgstr "دیگر"
+
+msgid "Nice"
+msgstr "نایس"
+
+msgid "Iowait"
+msgstr ""
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "حافظه"
+
+msgid "Program"
+msgstr "برنامه"
+
+msgid "Cache"
+msgstr "حافظهنهان"
+
+msgid "Buffer"
+msgstr "بافر"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "سوئپ"
+
+msgid "Used"
+msgstr "استفاده شده"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "شبکه"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "آپلود"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "دانلود"
+
+msgid "Uperrors"
+msgstr ""
+
+msgid "Downerrors"
+msgstr ""
+
+msgid "collisions"
+msgstr ""
+
+msgid "Collisions"
+msgstr ""
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "دیسک"
+
+msgid "Write"
+msgstr "نوشتن"
+
+msgid "Read"
+msgstr "خواندن"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr ""
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "گراف"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "عددی"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "هر دو"
+
+msgid "cpu"
+msgstr "سیپییو"
+
+#: extension.js:811
+msgid "mem"
+msgstr "حافظه"
+
+msgid "swap"
+msgstr "سوئپ"
+
+msgid "net"
+msgstr "شبکه"
+
+msgid "disk"
+msgstr "دیسک"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "ترجیحات..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "پایشگر سیستم..."
+
+msgid "System monitor"
+msgstr "پایشگر سیستم"
+
+msgid "user"
+msgstr "کاربر"
+
+msgid "system"
+msgstr "سیستم"
+
+msgid "other"
+msgstr "دیگر"
+
+msgid "nice"
+msgstr "نایس"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "برنامه"
+
+msgid "cache"
+msgstr "حافظهنهان"
+
+msgid "buffer"
+msgstr "بافر"
+
+msgid "used"
+msgstr "استفاده شده"
+
+msgid "up"
+msgstr "آپلود"
+
+msgid "down"
+msgstr "دانلود"
+
+msgid "uperrors"
+msgstr ""
+
+msgid "downerrors"
+msgstr ""
+
+msgid "write"
+msgstr "نوشتن"
+
+msgid "read"
+msgstr "خواندن"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr ""
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr ""
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr ""
+
+#: extension.js:1714
+msgid "GiB"
+msgstr ""
+
+#: extension.js:184
+msgid "kB"
+msgstr ""
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr ""
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr ""
+
+#, fuzzy
+msgid "thermal"
+msgstr "دیگر"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr ""
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr ""
+
+#: prefs.js:226 prefs.js:233
+#, fuzzy
+msgid "Hide System Icon"
+msgstr "پایشگر سیستم"
+
+#: prefs.js:230 prefs.js:237
+#, fuzzy
+msgid "Usage Style"
+msgstr "سبک نمایش"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr ""
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+
+#: extension.js:97 extension.js:255
+#, fuzzy
+msgid "System Monitor Extension"
+msgstr "پایشگر سیستم"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr ""
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr ""
+
+msgid "battery"
+msgstr ""
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr ""
+
+msgid "freq"
+msgstr ""
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr ""
+
+msgid "fan"
+msgstr ""
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr ""
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "پیکربندی برنامک پایشگر سیستم"
diff --git a/po/fi/system-monitor.po b/po/fi/system-monitor.po
new file mode 100644
index 0000000..6874850
--- /dev/null
+++ b/po/fi/system-monitor.po
@@ -0,0 +1,374 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-09-06 21:38+0300\n"
+"PO-Revision-Date: 2017-09-06 21:57+0300\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Jiri Grönroos \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: fi\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ":"
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Näytä"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Päivitysväli"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Käyrän leveys"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Näytä teksti"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Esitystyyli"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Näytä kuvake"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Näytä keskellä"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Taustaväri"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Näytä yksittäiset ytimet"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Näytä verkon nopeus biteissä"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Sensori"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Asenna lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Siirrä kello"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Kompakti näyttö"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Suoritin"
+
+msgid "User"
+msgstr "Käyttäjä"
+
+msgid "System"
+msgstr "Järjestelmä"
+
+msgid "Other"
+msgstr "Muu"
+
+msgid "Nice"
+msgstr "Nice"
+
+msgid "Iowait"
+msgstr "Iowait"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Muisti"
+
+msgid "Program"
+msgstr "Ohjelma"
+
+msgid "Cache"
+msgstr "Välimuisti"
+
+msgid "Buffer"
+msgstr "Puskuri"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Swap"
+
+msgid "Used"
+msgstr "Käytetty"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Verkko"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Lähetys"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Lataus"
+
+msgid "Uperrors"
+msgstr "Lähetysvirheet"
+
+msgid "Downerrors"
+msgstr "Latausvirheet"
+
+msgid "collisions"
+msgstr "törmäykset"
+
+msgid "Collisions"
+msgstr "Törmäykset"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Levy"
+
+msgid "Write"
+msgstr "Kirjoitus"
+
+msgid "Read"
+msgstr "Luku"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr "R"
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr "W"
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "käyrä"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "lukuarvo"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "molemmat"
+
+msgid "cpu"
+msgstr "cpu"
+
+#: extension.js:811
+msgid "mem"
+msgstr "mem"
+
+msgid "swap"
+msgstr "swap"
+
+msgid "net"
+msgstr "verkko"
+
+msgid "disk"
+msgstr "levy"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Asetukset..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Järjestelmän valvonta..."
+
+msgid "System monitor"
+msgstr "Järjestelmän valvonta"
+
+msgid "user"
+msgstr "käyttäjä"
+
+msgid "system"
+msgstr "järjestelmä"
+
+msgid "other"
+msgstr "muu"
+
+msgid "nice"
+msgstr "nice"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "ohjelma"
+
+msgid "cache"
+msgstr "välimuisti"
+
+msgid "buffer"
+msgstr "puskuri"
+
+msgid "used"
+msgstr "käytetty"
+
+msgid "up"
+msgstr "ulos"
+
+msgid "down"
+msgstr "sisään"
+
+msgid "uperrors"
+msgstr "lähetysvirheet"
+
+msgid "downerrors"
+msgstr "latausvirheet"
+
+msgid "write"
+msgstr "kirjoitus"
+
+msgid "read"
+msgstr "luku"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: extension.js:178 extension.js:1597 extension.js:1605
+msgid "kbit/s"
+msgstr "kbit/s"
+
+#: extension.js:179 extension.js:1600 extension.js:1608
+msgid "Mbit/s"
+msgstr "Mbit/s"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "MiB"
+
+#: extension.js:1714
+msgid "GiB"
+msgstr "GiB"
+
+#: extension.js:184
+msgid "kB"
+msgstr "kt"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "Mt"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Lämpötila"
+
+msgid "thermal"
+msgstr "lämpötila"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Näytä valikossa"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Näytä jäljellä oleva aika"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Piilota järjestelmäkuvake"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Käytön tyyli"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "piirakka"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "palkki"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "ei mitään"
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Järjestelmän valvonnan laajennus"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Peru"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Akku"
+
+msgid "battery"
+msgstr "akku"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Taajuus"
+
+msgid "freq"
+msgstr "taajuus"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Tuuletin"
+
+msgid "fan"
+msgstr "tuuletin"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "rpm"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr "Näytä työkaluvihje"
+
+#: extension.js:1097
+msgid "CPU"
+msgstr "Suoritin"
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr "Näytä lämpötila Fahrenheiteissa"
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
diff --git a/po/fr/system-monitor.po b/po/fr/system-monitor.po
new file mode 100644
index 0000000..c56b4c0
--- /dev/null
+++ b/po/fr/system-monitor.po
@@ -0,0 +1,375 @@
+# French translation.
+# Copyright (C) 2011 Florian Mounier aka paradoxxxzero
+# This file is distributed under the same license as the
+# GNOME shell system monitor extension.
+# Guillaume Ayoub , 2011.
+#
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-shell-system-monitor-applet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: 2017-04-16 13:37+0200\n"
+"Last-Translator: Davy Defaud \n"
+"Language-Team: French \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n >= 2;\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr " :"
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Affichage"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Rafraîchissement"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Largeur du graphe"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Afficher le texte"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Type d’affichage"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Afficher l’icône"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Afficher au milieu"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Couleur de fond"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Afficher tous les cœurs"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Afficher le débit réseau en bits"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Capteur"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Veuillez installer lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Déplacer l’horloge"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Affichage compact"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Processeur"
+
+msgid "User"
+msgstr "Utilisateur"
+
+msgid "System"
+msgstr "Système"
+
+msgid "Other"
+msgstr "Autre"
+
+msgid "Nice"
+msgstr "Politesse"
+
+msgid "Iowait"
+msgstr "Latence d’E‐S"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Mémoire"
+
+msgid "Program"
+msgstr "Programme"
+
+msgid "Cache"
+msgstr "Cache"
+
+msgid "Buffer"
+msgstr "Tampon"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Échange (swap)"
+
+msgid "Used"
+msgstr "Utilisé"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Réseau"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Montant"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Descendant"
+
+msgid "Uperrors"
+msgstr "Erreurs montantes"
+
+msgid "Downerrors"
+msgstr "Erreurs descendantes"
+
+msgid "collisions"
+msgstr "collisions"
+
+msgid "Collisions"
+msgstr "Collisions"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Disque"
+
+msgid "Write"
+msgstr "Écriture"
+
+msgid "Read"
+msgstr "Lecture"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr "en lecture"
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr "en écriture"
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "graphe"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "chiffres"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "les deux"
+
+msgid "cpu"
+msgstr "processeur"
+
+#: extension.js:811
+msgid "mem"
+msgstr "mém."
+
+msgid "swap"
+msgstr "échange"
+
+msgid "net"
+msgstr "réseau"
+
+msgid "disk"
+msgstr "disque"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Préférences…"
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Moniteur système…"
+
+msgid "System monitor"
+msgstr "Moniteur système"
+
+msgid "user"
+msgstr "utilisateur"
+
+msgid "system"
+msgstr "système"
+
+msgid "other"
+msgstr "autre"
+
+msgid "nice"
+msgstr "politesse"
+
+msgid "iowait"
+msgstr "latence d’E‐S"
+
+msgid "program"
+msgstr "programme"
+
+msgid "cache"
+msgstr "cache"
+
+msgid "buffer"
+msgstr "tampon"
+
+msgid "used"
+msgstr "utilisé"
+
+msgid "up"
+msgstr "montant"
+
+msgid "down"
+msgstr "descendant"
+
+msgid "uperrors"
+msgstr "erreurs montantes"
+
+msgid "downerrors"
+msgstr "erreurs descendantes"
+
+msgid "write"
+msgstr "écriture"
+
+msgid "read"
+msgstr "lecture"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "Kio/s"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "Mio/s"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "Mio"
+
+#: extension.js:1714
+msgid "GiB"
+msgstr "Gio"
+
+#: extension.js:184
+msgid "kB"
+msgstr "ko"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "Mo"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Température"
+
+msgid "thermal"
+msgstr "température"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Afficher dans le menu"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Afficher le temps restant"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Cacher l’icône système"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Type d’affichage"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "circulaire"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "en barres"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "aucun"
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+"Dépendances manquantes\n"
+"\n"
+"Veuillez installer libgtop, Network Manager et les bibliothèques de liaisons "
+"gir :\n"
+"\t- sur Ubuntu : gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 ;\n"
+"\t- sur Fedora : libgtop2-devel, NetworkManager-glib-devel ;\n"
+"\t- sur Arch : libgtop, networkmanager ;\n"
+"\t- sur openSUSE : typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0.\n"
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Extension de surveillance système"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Annuler"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Batterie"
+
+msgid "battery"
+msgstr "batterie"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Fréquence"
+
+msgid "freq"
+msgstr "fréquence"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Ventilateur"
+
+msgid "fan"
+msgstr "ventilateur"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "tr/min"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr "Afficher les infos‐bulles"
+
+#: extension.js:1097
+msgid "CPU"
+msgstr "Processeur"
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr "Afficher les températures en degrés Fahrenheit"
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr "Seuil de température (0 pour désactiver)"
diff --git a/po/it/system-monitor.po b/po/it/system-monitor.po
new file mode 100644
index 0000000..aa84b0a
--- /dev/null
+++ b/po/it/system-monitor.po
@@ -0,0 +1,375 @@
+# Traduzione italiana per il pacchetto system-monitor.
+# Copyright (C) 2012 THE system-monitor'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the system-monitor package.
+# Federico Piazza fede.piazza92@gmail.com, 2012
+# Paolo Paterna paolo.paterna@gmail.com, 2015
+#: extension.js:751
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-shell-system-monitor-applet-translation-2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: 2013-11-26 14:15+0100\n"
+"Last-Translator: Paolo Paterna \n"
+"Language-Team: Italian\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ":"
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Visualizza"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Tempo di Aggiornamento"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Larghezza del Grafico"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Mostra Testo"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Modalità di Visualizzazione"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Visualizza Icona"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Visualizza nel Centro"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Colore di Sfondo"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Mostra Ogni Core"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Mostra velocità della rete in bits"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Sensore"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Si prega di installare lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Sposta l'orologio"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Display Compatto"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Processore"
+
+msgid "User"
+msgstr "Utente"
+
+msgid "System"
+msgstr "Sistema"
+
+msgid "Other"
+msgstr "Altro"
+
+msgid "Nice"
+msgstr "Nice"
+
+msgid "Iowait"
+msgstr "IOwait"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Memoria"
+
+msgid "Program"
+msgstr "Programma"
+
+msgid "Cache"
+msgstr "Cache"
+
+msgid "Buffer"
+msgstr "Buffer"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Swap"
+
+msgid "Used"
+msgstr "Usato"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Rete"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Upload"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Download"
+
+msgid "Uperrors"
+msgstr "Errori in upload"
+
+msgid "Downerrors"
+msgstr "Errori in download"
+
+msgid "collisions"
+msgstr "collisioni"
+
+msgid "Collisions"
+msgstr "Collisioni"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Disco"
+
+msgid "Write"
+msgstr "Scrittura"
+
+msgid "Read"
+msgstr "Lettura"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr "L"
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr "S"
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "grafico"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "digitale"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "entrambi"
+
+msgid "cpu"
+msgstr "cpu"
+
+#: extension.js:811
+msgid "mem"
+msgstr "ram"
+
+msgid "swap"
+msgstr "swap"
+
+msgid "net"
+msgstr "rete"
+
+msgid "disk"
+msgstr "disco"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Preferenze..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Monitor di Sistema..."
+
+msgid "System monitor"
+msgstr "Monitor di sistema"
+
+msgid "user"
+msgstr "utente"
+
+msgid "system"
+msgstr "sistema"
+
+msgid "other"
+msgstr "altro"
+
+msgid "nice"
+msgstr "nice"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "programma"
+
+msgid "cache"
+msgstr "cache"
+
+msgid "buffer"
+msgstr "buffer"
+
+msgid "used"
+msgstr "usato"
+
+msgid "up"
+msgstr "upload"
+
+msgid "down"
+msgstr "download"
+
+msgid "uperrors"
+msgstr "errori in upload"
+
+msgid "downerrors"
+msgstr "errori in download"
+
+msgid "write"
+msgstr "scrittura"
+
+msgid "read"
+msgstr "lettura"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "MiB"
+
+#: extension.js:1714
+#, fuzzy
+msgid "GiB"
+msgstr "MiB"
+
+#: extension.js:184
+msgid "kB"
+msgstr "kB"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "MB"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Temperatura"
+
+msgid "thermal"
+msgstr "temperatura"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Mostra nel Menu"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Mostra Autonomia Residua"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Nascondi Icona di Sistema"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Visualizzazione Uso"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "torta"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "barra"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "nessuno"
+
+#: extension.js:68
+#, fuzzy
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+"Dipendenze Mancanti\n"
+"Si prega di installare: \n"
+"libgtop, Network Manager e gir bindings \n"
+"\t su Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t su Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t su Arch: libgtop, networkmanager\n"
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Estensione per System Monitor"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Annulla"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Batteria"
+
+#, fuzzy
+msgid "battery"
+msgstr "Batteria"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Frequenza"
+
+msgid "freq"
+msgstr "frequenza"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Ventola"
+
+msgid "fan"
+msgstr "ventola"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "giri/min"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr "Mostra Tooltip"
+
+#: extension.js:1097
+msgid "CPU"
+msgstr "Processore"
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
diff --git a/po/merge.sh b/po/merge.sh
new file mode 100755
index 0000000..051d82c
--- /dev/null
+++ b/po/merge.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+for p in */
+do
+ echo $p
+ `msgmerge -U ./$p/system-monitor.po system-monitor.pot`
+done
diff --git a/po/pl/system-monitor.po b/po/pl/system-monitor.po
new file mode 100644
index 0000000..301bb4d
--- /dev/null
+++ b/po/pl/system-monitor.po
@@ -0,0 +1,372 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Anna Warzecha , 2011.
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: 2011-07-21 23:52+0100\n"
+"Last-Translator: Anna Warzecha \n"
+"Language-Team: Polish \n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ""
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Aktywny"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Częstostliwość odświeżania"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Szerokość"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Pokaż tekst"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Styl wyświetlania"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Wyświetl ikonę"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Wyświetl na środku"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Kolor tła"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr ""
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr ""
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr ""
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr ""
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr ""
+
+#: prefs.js:286 prefs.js:289
+#, fuzzy
+msgid "Compact Display"
+msgstr "Aktywny"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Cpu"
+
+msgid "User"
+msgstr "Użytkownik"
+
+msgid "System"
+msgstr "System"
+
+msgid "Other"
+msgstr "Inne"
+
+msgid "Nice"
+msgstr ""
+
+msgid "Iowait"
+msgstr "Operacje we/wy"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Pamięć"
+
+msgid "Program"
+msgstr "Program"
+
+msgid "Cache"
+msgstr "Pamięć podręczna"
+
+msgid "Buffer"
+msgstr "Bufor"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Przestrzeń wymiany"
+
+msgid "Used"
+msgstr "Zużycie"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Sieć"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Góra"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Dół"
+
+msgid "Uperrors"
+msgstr ""
+
+msgid "Downerrors"
+msgstr ""
+
+msgid "collisions"
+msgstr ""
+
+msgid "Collisions"
+msgstr ""
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Dysk"
+
+msgid "Write"
+msgstr "Zapis"
+
+msgid "Read"
+msgstr "Odczyt"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr ""
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "wykres"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "wartość liczbowa"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "oba"
+
+msgid "cpu"
+msgstr "cpu"
+
+#: extension.js:811
+msgid "mem"
+msgstr "pamięć"
+
+msgid "swap"
+msgstr "przestrzeń wymiany"
+
+msgid "net"
+msgstr "sieć"
+
+msgid "disk"
+msgstr "dysk"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Preferencje..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Monitor systemu..."
+
+#, fuzzy
+msgid "System monitor"
+msgstr "Monitor systemu..."
+
+msgid "user"
+msgstr "użytkownik"
+
+msgid "system"
+msgstr "system"
+
+msgid "other"
+msgstr "inne"
+
+msgid "nice"
+msgstr ""
+
+msgid "iowait"
+msgstr "operacje we/wy"
+
+msgid "program"
+msgstr "program"
+
+msgid "cache"
+msgstr "pamięć podręczna"
+
+msgid "buffer"
+msgstr "bufor"
+
+msgid "used"
+msgstr "zużycie"
+
+msgid "up"
+msgstr "góra"
+
+msgid "down"
+msgstr "dół"
+
+msgid "uperrors"
+msgstr ""
+
+msgid "downerrors"
+msgstr ""
+
+msgid "write"
+msgstr "zapis"
+
+msgid "read"
+msgstr "odczyt"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr ""
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr ""
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr ""
+
+#: extension.js:1714
+msgid "GiB"
+msgstr ""
+
+#: extension.js:184
+msgid "kB"
+msgstr ""
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr ""
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr ""
+
+#, fuzzy
+msgid "thermal"
+msgstr "Inne"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr ""
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr ""
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr ""
+
+#: prefs.js:230 prefs.js:237
+#, fuzzy
+msgid "Usage Style"
+msgstr "Styl wyświetlania"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr ""
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+
+#: extension.js:97 extension.js:255
+#, fuzzy
+msgid "System Monitor Extension"
+msgstr "Monitor systemu..."
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr ""
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr ""
+
+msgid "battery"
+msgstr ""
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr ""
+
+msgid "freq"
+msgstr ""
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr ""
+
+msgid "fan"
+msgstr ""
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr ""
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "Konfigurator Apletu System Monitor"
diff --git a/po/pt/system-monitor.po b/po/pt/system-monitor.po
new file mode 100644
index 0000000..88f6381
--- /dev/null
+++ b/po/pt/system-monitor.po
@@ -0,0 +1,374 @@
+# Portuguese translation for the system-monitor-applet.
+# Copyright (C) 2011
+# This file is distributed under the same license as the PACKAGE package.
+# Emanuel Angelo , 2011.
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: 2017-08-05 12:10+0100\n"
+"Last-Translator: Waldir Pimenta \n"
+"Language-Team: pt_PT \n"
+"Language: Portuguese\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ":"
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Mostrar"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Frequência de atualização"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Largura do gráfico"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Mostrar abreviatura"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Aparência"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Mostrar ícone"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Posicionar no centro"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Cor de fundo"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Mostrar núcleos individuais"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Mostrar velocidade em bits/s"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Sensor"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Por favor instalar lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Deslocar o relógio"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Modo compacto"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Processador (CPU)"
+
+msgid "User"
+msgstr "Utilizador"
+
+msgid "System"
+msgstr "Sistema"
+
+msgid "Other"
+msgstr "Outro"
+
+msgid "Nice"
+msgstr "Nice"
+
+msgid "Iowait"
+msgstr "IOwait"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Memória (RAM)"
+
+msgid "Program"
+msgstr "Programas"
+
+msgid "Cache"
+msgstr "Reserva (cache)"
+
+msgid "Buffer"
+msgstr "Tampão (buffer)"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Memória virtual (swap)"
+
+msgid "Used"
+msgstr "Em uso"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Rede"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Enviados"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Recebidos"
+
+msgid "Uperrors"
+msgstr "Erros ao enviar"
+
+msgid "Downerrors"
+msgstr "Erros ao receber"
+
+msgid "collisions"
+msgstr "colisões"
+
+msgid "Collisions"
+msgstr "Colisões"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Disco"
+
+msgid "Write"
+msgstr "Escrita"
+
+msgid "Read"
+msgstr "Leitura"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr "L"
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr "E"
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "gráfico"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "valor"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "ambos"
+
+msgid "cpu"
+msgstr "cpu"
+
+#: extension.js:811
+msgid "mem"
+msgstr "mem"
+
+msgid "swap"
+msgstr "swap"
+
+msgid "net"
+msgstr "rede"
+
+msgid "disk"
+msgstr "disco"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Preferências..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Monitor do Sistema..."
+
+msgid "System monitor"
+msgstr "Monitor do sistema"
+
+msgid "user"
+msgstr "utilizador"
+
+msgid "system"
+msgstr "sistema"
+
+msgid "other"
+msgstr "outro"
+
+msgid "nice"
+msgstr "nice"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "programa"
+
+msgid "cache"
+msgstr "cache"
+
+msgid "buffer"
+msgstr "buffer"
+
+msgid "used"
+msgstr "usado"
+
+msgid "up"
+msgstr "enviado"
+
+msgid "down"
+msgstr "recebido"
+
+msgid "uperrors"
+msgstr "erros ao enviar"
+
+msgid "downerrors"
+msgstr "erros ao receber"
+
+msgid "write"
+msgstr "escrita"
+
+msgid "read"
+msgstr "leitura"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "MiB"
+
+#: extension.js:1714
+msgid "GiB"
+msgstr ""
+
+#: extension.js:184
+msgid "kB"
+msgstr "kB"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "MB"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Temperatura"
+
+msgid "thermal"
+msgstr "temp"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Mostrar no menu"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Mostrar tempo restante"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Esconder ícone do sistema"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Estilo de uso"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "circular"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "barras"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "nenhum"
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+"Dependências em falta\n"
+"Por favor instale:\n"
+"libgtop, Network Manager e bindings de gir\n"
+"\t no Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0\n"
+"\t no Fedora: libgtop2-devel, NetworkManager-glib-devel\n"
+"\t no Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Extensão do Monitor do sistema"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Bateria"
+
+msgid "battery"
+msgstr "bateria"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Freq"
+
+msgid "freq"
+msgstr "freq"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Ventoinha"
+
+msgid "fan"
+msgstr "vent"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "rpm"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr "Mostrar tooltip"
+
+#: extension.js:1097
+msgid "CPU"
+msgstr "CPU"
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr "Mostrar temperatura em Fahrenheit"
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr "Limite de temperatura (0 para desativar)"
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "Configurador do System Monitor Applet"
diff --git a/po/pt_BR/system-monitor.po b/po/pt_BR/system-monitor.po
new file mode 100644
index 0000000..ce7efd2
--- /dev/null
+++ b/po/pt_BR/system-monitor.po
@@ -0,0 +1,376 @@
+# Brazilian Portuguese translation for system-monitor-applet.
+# Copyright (C) 2017 darkxst
+# This file is distributed under the same license as the system-monitor-applet package.
+# Rafael Fontenelle , 2012, 2017.
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: system-monitor\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: 2017-01-31 02:54-0200\n"
+"Last-Translator: Rafael Fontenelle \n"
+"Language-Team: Brazilian Portuguese \n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Virtaal 1.0.0-beta1\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ":"
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Exibir"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Tempo de atualização"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Largura do gráfico"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Mostrar identificador"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Estilo de apresentação"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Mostrar ícone"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Posicionar no centro"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Cor de fundo"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Exibir núcleos individuais"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Apresentar velocidade em bits por segundo"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Sensor"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Por favor, instale lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Deslocar o relógio"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Modo compactado"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Processador (CPU)"
+
+msgid "User"
+msgstr "Utilizador"
+
+msgid "System"
+msgstr "Sistema"
+
+msgid "Other"
+msgstr "Outro"
+
+msgid "Nice"
+msgstr "Nice"
+
+msgid "Iowait"
+msgstr "IOwait"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Memória (RAM)"
+
+msgid "Program"
+msgstr "Programa"
+
+msgid "Cache"
+msgstr "Cache"
+
+msgid "Buffer"
+msgstr "Buffer"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Memória virtual (swap)"
+
+msgid "Used"
+msgstr "Em utilização"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Rede"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Enviados"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Recebidos"
+
+msgid "Uperrors"
+msgstr "Erros ao enviar"
+
+msgid "Downerrors"
+msgstr "Erros ao receber"
+
+msgid "collisions"
+msgstr "colisões"
+
+msgid "Collisions"
+msgstr "Colisões"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Disco"
+
+msgid "Write"
+msgstr "Escrita"
+
+msgid "Read"
+msgstr "Leitura"
+
+# Leitura
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr "L"
+
+# Escrita
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr "E"
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "gráfico"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "valor"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "ambos"
+
+msgid "cpu"
+msgstr "cpu"
+
+#: extension.js:811
+msgid "mem"
+msgstr "mem"
+
+msgid "swap"
+msgstr "swap"
+
+msgid "net"
+msgstr "rede"
+
+msgid "disk"
+msgstr "disco"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Preferências…"
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Monitor do Sistema…"
+
+msgid "System monitor"
+msgstr "Monitor do sistema"
+
+msgid "user"
+msgstr "usuário"
+
+msgid "system"
+msgstr "sistema"
+
+msgid "other"
+msgstr "outro"
+
+msgid "nice"
+msgstr "nice"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "programa"
+
+msgid "cache"
+msgstr "cache"
+
+msgid "buffer"
+msgstr "buffer"
+
+msgid "used"
+msgstr "usado"
+
+msgid "up"
+msgstr "enviado"
+
+msgid "down"
+msgstr "recebido"
+
+msgid "uperrors"
+msgstr "erros envio"
+
+msgid "downerrors"
+msgstr "erros recebimento"
+
+msgid "write"
+msgstr "escrita"
+
+msgid "read"
+msgstr "leitura"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "KB/s"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "MB/s"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "MB"
+
+#: extension.js:1714
+#, fuzzy
+msgid "GiB"
+msgstr "MB"
+
+#: extension.js:184
+msgid "kB"
+msgstr "kB"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "MB"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Temperatura"
+
+msgid "thermal"
+msgstr "temp"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Mostrar no menu"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Mostrar tempo restante"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Ocultar ícone de sistema"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Estilo de uso"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "setores"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "barra"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "nenhum"
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+"Dependências faltando\n"
+"Por favor instale: \n"
+"libgtop, Network Manager e bindings de gir \n"
+"\t no Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t no Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t no Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Extensão de monitor do sistema"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Bateria"
+
+msgid "battery"
+msgstr "bateria"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Freq"
+
+msgid "freq"
+msgstr "freq"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Ventoinha"
+
+msgid "fan"
+msgstr "vent"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "rpm"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr "Mostrar dicas da ferramenta"
+
+#: extension.js:1097
+msgid "CPU"
+msgstr "CPU"
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr "Exibir temperatura em Fahrenheit"
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
diff --git a/po/ro/system-monitor.po b/po/ro/system-monitor.po
new file mode 100644
index 0000000..49f7304
--- /dev/null
+++ b/po/ro/system-monitor.po
@@ -0,0 +1,376 @@
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome shell system monitor applet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: zamox \n"
+"Language-Team: \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ""
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Afișează"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Perioadă Recitire Date"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Lățime Grafic"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Arată Titlu"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Tip Afișaj"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Afișează Pictogramă"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Afișează la Centru"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Culoare Fundal"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr ""
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr ""
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr ""
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr ""
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr ""
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: prefs.js:286 prefs.js:289
+#, fuzzy
+msgid "Compact Display"
+msgstr "Afișează"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Cpu"
+
+msgid "User"
+msgstr "Utilizator"
+
+msgid "System"
+msgstr "Sistem"
+
+msgid "Other"
+msgstr "Altele"
+
+msgid "Nice"
+msgstr "Nice"
+
+msgid "Iowait"
+msgstr "Iowait"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Memorie"
+
+msgid "Program"
+msgstr "Aplicații"
+
+msgid "Cache"
+msgstr "Cache"
+
+msgid "Buffer"
+msgstr "Buffer"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Swap"
+
+msgid "Used"
+msgstr "Folosit"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Net"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Incărcare"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Descărcare"
+
+msgid "Uperrors"
+msgstr ""
+
+msgid "Downerrors"
+msgstr ""
+
+msgid "collisions"
+msgstr ""
+
+msgid "Collisions"
+msgstr ""
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Disc"
+
+msgid "Write"
+msgstr "Scriere"
+
+msgid "Read"
+msgstr "Citire"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr ""
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "grafic"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "cifre"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "ambele"
+
+msgid "cpu"
+msgstr "cpu"
+
+#: extension.js:811
+msgid "mem"
+msgstr "mem"
+
+msgid "swap"
+msgstr "swap"
+
+msgid "net"
+msgstr "net"
+
+msgid "disk"
+msgstr "disc"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Preferințe..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Monitor Sistem..."
+
+#, fuzzy
+msgid "System monitor"
+msgstr "Monitor Sistem..."
+
+msgid "user"
+msgstr "utilizator"
+
+msgid "system"
+msgstr "sistem"
+
+msgid "other"
+msgstr "altele"
+
+msgid "nice"
+msgstr "nice"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "aplicații"
+
+msgid "cache"
+msgstr "cache"
+
+msgid "buffer"
+msgstr "buffer"
+
+msgid "used"
+msgstr "folosit"
+
+msgid "up"
+msgstr "incărcare"
+
+msgid "down"
+msgstr "descărcare"
+
+msgid "uperrors"
+msgstr ""
+
+msgid "downerrors"
+msgstr ""
+
+msgid "write"
+msgstr "scriere"
+
+msgid "read"
+msgstr "citire"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr ""
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr ""
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr ""
+
+#: extension.js:1714
+msgid "GiB"
+msgstr ""
+
+#: extension.js:184
+msgid "kB"
+msgstr ""
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr ""
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr ""
+
+#, fuzzy
+msgid "thermal"
+msgstr "Altele"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr ""
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr ""
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr ""
+
+#: prefs.js:230 prefs.js:237
+#, fuzzy
+msgid "Usage Style"
+msgstr "Tip Afișaj"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr ""
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+
+#: extension.js:97 extension.js:255
+#, fuzzy
+msgid "System Monitor Extension"
+msgstr "Monitor Sistem..."
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr ""
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr ""
+
+msgid "battery"
+msgstr ""
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr ""
+
+msgid "freq"
+msgstr ""
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr ""
+
+msgid "fan"
+msgstr ""
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr ""
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "Configurator al Monitorului de Sistem"
diff --git a/po/ru/system-monitor.po b/po/ru/system-monitor.po
new file mode 100644
index 0000000..3c05d1f
--- /dev/null
+++ b/po/ru/system-monitor.po
@@ -0,0 +1,367 @@
+# Russian translation.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Viacheslav Dikonov , 2011.
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: system-monitor-applet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: 2017-11-08 22:30-0500\n"
+"Last-Translator: Georgii Iesaulov \n"
+"Language-Team: Russian \n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ""
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Показывать"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Частота обновления"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Ширина графика"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Текст"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Стиль"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Показывать значок"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Поместить в центр"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Цвет фона"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Показать отдельные ядра"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Скорость сети в битах"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Датчик"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Установите lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Переместить часы"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Компактный"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Процессор"
+
+msgid "User"
+msgstr "Пользователь"
+
+msgid "System"
+msgstr "Система"
+
+msgid "Other"
+msgstr "Прочие"
+
+msgid "Nice"
+msgstr "Приоритет"
+
+msgid "Iowait"
+msgstr "IOwait"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Память"
+
+msgid "Program"
+msgstr "Процессы"
+
+msgid "Cache"
+msgstr "Кэш"
+
+msgid "Buffer"
+msgstr "Буфер записи"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Подкачка"
+
+msgid "Used"
+msgstr "Используется"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Сеть"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Передача"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Приём"
+
+msgid "Uperrors"
+msgstr "Ошибки передачи"
+
+msgid "Downerrors"
+msgstr "Ошибки приёма"
+
+msgid "collisions"
+msgstr "коллизии"
+
+msgid "Collisions"
+msgstr "Коллизии"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Диск"
+
+msgid "Write"
+msgstr "Запись"
+
+msgid "Read"
+msgstr "Чтение"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr ""
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "график"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "цифровой"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "вместе"
+
+msgid "cpu"
+msgstr "процессор"
+
+#: extension.js:811
+msgid "mem"
+msgstr "память"
+
+msgid "swap"
+msgstr "подкачка"
+
+msgid "net"
+msgstr "сеть"
+
+msgid "disk"
+msgstr "диск"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Настройка..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Системный монитор..."
+
+msgid "System monitor"
+msgstr "Системный монитор"
+
+msgid "user"
+msgstr "пользователь"
+
+msgid "system"
+msgstr "система"
+
+msgid "other"
+msgstr "прочие"
+
+msgid "nice"
+msgstr "приоритет"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "процессы"
+
+msgid "cache"
+msgstr "кэш"
+
+msgid "buffer"
+msgstr "буфер записи"
+
+msgid "used"
+msgstr "используется"
+
+msgid "up"
+msgstr "передача"
+
+msgid "down"
+msgstr "приём"
+
+msgid "uperrors"
+msgstr "ошибки передачи"
+
+msgid "downerrors"
+msgstr "ошибки приёма"
+
+msgid "write"
+msgstr "запись"
+
+msgid "read"
+msgstr "чтение"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr ""
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr ""
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr ""
+
+#: extension.js:1714
+msgid "GiB"
+msgstr ""
+
+#: extension.js:184
+msgid "kB"
+msgstr ""
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr ""
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Температура"
+
+msgid "thermal"
+msgstr "температура"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Показывать в меню"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Оставшееся время"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Скрыть системный значок"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Стиль"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "круговая"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "гистограмма"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "нет"
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Расширение системного монитора"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Отмена"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Батарея"
+
+msgid "battery"
+msgstr "батарея"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Частота"
+
+msgid "freq"
+msgstr "частота"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Вентилятор"
+
+msgid "fan"
+msgstr "вентилятор"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr ""
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr "Показывать подсказку"
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr "Температура в Фаренгейтах"
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr "Температурный порог (0 для отключения)"
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "Настройка апплета системных параметров"
diff --git a/po/sk/system-monitor.po b/po/sk/system-monitor.po
new file mode 100644
index 0000000..b745165
--- /dev/null
+++ b/po/sk/system-monitor.po
@@ -0,0 +1,376 @@
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Dušan Kazik \n"
+"Language-Team: \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ""
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Zobraziť"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Obnovovací interval"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Šírka grafu"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Zobraziť text"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Štýl zobrazenia"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Zobraziť ikonu"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Zobraziť v strede"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Farba pozadia"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr ""
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr ""
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr ""
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr ""
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr ""
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: prefs.js:286 prefs.js:289
+#, fuzzy
+msgid "Compact Display"
+msgstr "Zobraziť"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Procesor"
+
+msgid "User"
+msgstr "Užívateľ"
+
+msgid "System"
+msgstr "Systém"
+
+msgid "Other"
+msgstr "Ostatné"
+
+msgid "Nice"
+msgstr ""
+
+msgid "Iowait"
+msgstr "I/O čakanie"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Pamäť"
+
+msgid "Program"
+msgstr "Programy"
+
+msgid "Cache"
+msgstr "Vyrovnávacia pamäť"
+
+msgid "Buffer"
+msgstr "Zásobník"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Odkladací priestor"
+
+msgid "Used"
+msgstr "Použité"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Sieť"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Odosielanie"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Sťahovanie"
+
+msgid "Uperrors"
+msgstr ""
+
+msgid "Downerrors"
+msgstr ""
+
+msgid "collisions"
+msgstr ""
+
+msgid "Collisions"
+msgstr ""
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Disk"
+
+msgid "Write"
+msgstr "Zápis"
+
+msgid "Read"
+msgstr "Čítanie"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr ""
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "graf"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "číslo"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "oboje"
+
+msgid "cpu"
+msgstr "procesor"
+
+#: extension.js:811
+msgid "mem"
+msgstr "pamäť"
+
+msgid "swap"
+msgstr "odkladací priestor"
+
+msgid "net"
+msgstr "sieť"
+
+msgid "disk"
+msgstr "disk"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Vlastnosti..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Monitor systému..."
+
+msgid "System monitor"
+msgstr "Monitor systému"
+
+msgid "user"
+msgstr "užívateľ"
+
+msgid "system"
+msgstr "systém"
+
+msgid "other"
+msgstr "ostatné"
+
+msgid "nice"
+msgstr ""
+
+msgid "iowait"
+msgstr "I/O čakanie"
+
+msgid "program"
+msgstr "programy"
+
+msgid "cache"
+msgstr "vyrovnávacia pamäť"
+
+msgid "buffer"
+msgstr "zásobník"
+
+msgid "used"
+msgstr "použité"
+
+msgid "up"
+msgstr "odosielanie"
+
+msgid "down"
+msgstr "sťahovanie"
+
+msgid "uperrors"
+msgstr ""
+
+msgid "downerrors"
+msgstr ""
+
+msgid "write"
+msgstr "zápis"
+
+msgid "read"
+msgstr "čítanie"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr ""
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr ""
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr ""
+
+#: extension.js:1714
+msgid "GiB"
+msgstr ""
+
+#: extension.js:184
+msgid "kB"
+msgstr ""
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr ""
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr ""
+
+#, fuzzy
+msgid "thermal"
+msgstr "Ostatné"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr ""
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr ""
+
+#: prefs.js:226 prefs.js:233
+#, fuzzy
+msgid "Hide System Icon"
+msgstr "Monitor systému"
+
+#: prefs.js:230 prefs.js:237
+#, fuzzy
+msgid "Usage Style"
+msgstr "Štýl zobrazenia"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr ""
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+
+#: extension.js:97 extension.js:255
+#, fuzzy
+msgid "System Monitor Extension"
+msgstr "Monitor systému"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr ""
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr ""
+
+msgid "battery"
+msgstr ""
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr ""
+
+msgid "freq"
+msgstr ""
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr ""
+
+msgid "fan"
+msgstr ""
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr ""
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "Konfigurátor apletu systémového monitoru"
diff --git a/po/system-monitor.pot b/po/system-monitor.pot
new file mode 100644
index 0000000..dad580d
--- /dev/null
+++ b/po/system-monitor.pot
@@ -0,0 +1,375 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#: extension.js:751
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ""
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr ""
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr ""
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr ""
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr ""
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr ""
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr ""
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr ""
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr ""
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr ""
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr ""
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr ""
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr ""
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr ""
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr ""
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "System"
+msgstr ""
+
+msgid "Other"
+msgstr ""
+
+msgid "Nice"
+msgstr ""
+
+msgid "Iowait"
+msgstr ""
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr ""
+
+msgid "Program"
+msgstr ""
+
+msgid "Cache"
+msgstr ""
+
+msgid "Buffer"
+msgstr ""
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr ""
+
+msgid "Used"
+msgstr ""
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr ""
+
+#: extension.js:1589
+msgid "Up"
+msgstr ""
+
+#: extension.js:1586
+msgid "Down"
+msgstr ""
+
+msgid "Uperrors"
+msgstr ""
+
+msgid "Downerrors"
+msgstr ""
+
+msgid "collisions"
+msgstr ""
+
+msgid "Collisions"
+msgstr ""
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr ""
+
+msgid "Write"
+msgstr ""
+
+msgid "Read"
+msgstr ""
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr ""
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr ""
+
+msgid "cpu"
+msgstr ""
+
+#: extension.js:811
+msgid "mem"
+msgstr ""
+
+msgid "swap"
+msgstr ""
+
+msgid "net"
+msgstr ""
+
+msgid "disk"
+msgstr ""
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr ""
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr ""
+
+msgid "System monitor"
+msgstr ""
+
+msgid "user"
+msgstr ""
+
+msgid "system"
+msgstr ""
+
+msgid "other"
+msgstr ""
+
+msgid "nice"
+msgstr ""
+
+msgid "iowait"
+msgstr ""
+
+msgid "program"
+msgstr ""
+
+msgid "cache"
+msgstr ""
+
+msgid "buffer"
+msgstr ""
+
+msgid "used"
+msgstr ""
+
+msgid "up"
+msgstr ""
+
+msgid "down"
+msgstr ""
+
+msgid "uperrors"
+msgstr ""
+
+msgid "downerrors"
+msgstr ""
+
+msgid "write"
+msgstr ""
+
+msgid "read"
+msgstr ""
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr ""
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr ""
+
+#: extension.js:178 extension.js:1597 extension.js:1605
+msgid "kbit/s"
+msgstr ""
+
+#: extension.js:179 extension.js:1600 extension.js:1608
+msgid "Mbit/s"
+msgstr ""
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr ""
+
+#: extension.js:1714
+msgid "GiB"
+msgstr ""
+
+#: extension.js:184
+msgid "kB"
+msgstr ""
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr ""
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr ""
+
+msgid "thermal"
+msgstr ""
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr ""
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr ""
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr ""
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr ""
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr ""
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr ""
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr ""
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr ""
+
+msgid "battery"
+msgstr ""
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr ""
+
+msgid "freq"
+msgstr ""
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr ""
+
+msgid "fan"
+msgstr ""
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr ""
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
+
diff --git a/po/uk/system-monitor.po b/po/uk/system-monitor.po
new file mode 100644
index 0000000..ea48ce5
--- /dev/null
+++ b/po/uk/system-monitor.po
@@ -0,0 +1,366 @@
+# Ukrainian translation.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Georgii Iesaulov , 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: system-monitor-applet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-11-07 00:00+0500\n"
+"PO-Revision-Date: 2017-11-07 00:00+0500\n"
+"Last-Translator: Georgii Iesaulov \n"
+"Language-Team: \n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"MIME-Version: 1.0\n"
+"Language: uk\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ""
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "Показувати"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "Частота оновлення"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "Ширина графіка"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "Показувати текст"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "Стиль відображення"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "Показувати значок"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "Показувати у центрі"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "Колір фону"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "Показати окремі ядра"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "Видобразити швидкість мережі у бітах"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "Датчик"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "Встановіть lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "Перемістіти годинник"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "Компактний показ"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "Процесор"
+
+msgid "User"
+msgstr "Користувач"
+
+msgid "System"
+msgstr "Система"
+
+msgid "Other"
+msgstr "Інше"
+
+msgid "Nice"
+msgstr "Пріоритет"
+
+msgid "Iowait"
+msgstr "IOwait"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "Пам'ять"
+
+msgid "Program"
+msgstr "Програми"
+
+msgid "Cache"
+msgstr "Кеш"
+
+msgid "Buffer"
+msgstr "Буфер"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "Підкачка"
+
+msgid "Used"
+msgstr "Використовується"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "Мережа"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "Передача"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "Завантаження"
+
+msgid "Uperrors"
+msgstr "Помилки передачі"
+
+msgid "Downerrors"
+msgstr "Помилки завантаження"
+
+msgid "collisions"
+msgstr "колізії"
+
+msgid "Collisions"
+msgstr "Колізії"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "Диск"
+
+msgid "Write"
+msgstr "Запис"
+
+msgid "Read"
+msgstr "Читання"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr ""
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr ""
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "графік"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "цифровий"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "разом"
+
+msgid "cpu"
+msgstr "процесор"
+
+#: extension.js:811
+msgid "mem"
+msgstr "пам'ять"
+
+msgid "swap"
+msgstr "підкачка"
+
+msgid "net"
+msgstr "мережа"
+
+msgid "disk"
+msgstr "диск"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "Налаштування..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "Системний монітор..."
+
+msgid "System monitor"
+msgstr "Системний монітор"
+
+msgid "user"
+msgstr "користувач"
+
+msgid "system"
+msgstr "система"
+
+msgid "other"
+msgstr "інше"
+
+msgid "nice"
+msgstr "пріоритет"
+
+msgid "iowait"
+msgstr "iowait"
+
+msgid "program"
+msgstr "програми"
+
+msgid "cache"
+msgstr "кеш"
+
+msgid "buffer"
+msgstr "буфер"
+
+msgid "used"
+msgstr "використовується"
+
+msgid "up"
+msgstr "передача"
+
+msgid "down"
+msgstr "завантаження"
+
+msgid "uperrors"
+msgstr "помилки передачі"
+
+msgid "downerrors"
+msgstr "помилки завантаження"
+
+msgid "write"
+msgstr "запис"
+
+msgid "read"
+msgstr "читання"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr ""
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr ""
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr ""
+
+#: extension.js:1714
+msgid "GiB"
+msgstr ""
+
+#: extension.js:184
+msgid "kB"
+msgstr ""
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr ""
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "Температура"
+
+msgid "thermal"
+msgstr "температура"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "Показувати у меню"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "Показати час роботи на батареї"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "Сховати системний значок"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "Стиль"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "кругова"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "гістограма"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "немає"
+
+#: extension.js:68
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "Розширення системного монитора"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "Скасувати"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "Батарея"
+
+msgid "battery"
+msgstr "батарея"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "Частота"
+
+msgid "freq"
+msgstr "частота"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "Вентилятор"
+
+msgid "fan"
+msgstr "вентилятор"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr ""
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr "Показувати підказку"
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr "Видобразити температуру у Фаренгейтах"
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr "Температурний поріг (0 щоб вимкнути)"
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "Конфігуратор аплетів системного монітора"
diff --git a/po/zh_CN/system-monitor.po b/po/zh_CN/system-monitor.po
new file mode 100644
index 0000000..01e50f5
--- /dev/null
+++ b/po/zh_CN/system-monitor.po
@@ -0,0 +1,376 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#: extension.js:751
+msgid ""
+msgstr ""
+"Project-Id-Version: 0.99\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-12-22 15:04+0100\n"
+"PO-Revision-Date: 2014-07-07 12:17+0800\n"
+"Last-Translator: Star Brilliant \n"
+"Language-Team: LANGUAGE \n"
+"Language: Chinese\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.6.5\n"
+
+#: prefs.js:69 prefs.js:90 prefs.js:110 prefs.js:67 prefs.js:87 prefs.js:107
+msgid ":"
+msgstr ":"
+
+#: prefs.js:161 prefs.js:159
+msgid "Display"
+msgstr "显示"
+
+#: prefs.js:166 prefs.js:164
+msgid "Refresh Time"
+msgstr "刷新时间"
+
+#: prefs.js:171 prefs.js:169
+msgid "Graph Width"
+msgstr "图形宽度"
+
+#: prefs.js:176 prefs.js:174
+msgid "Show Text"
+msgstr "显示文字"
+
+#: prefs.js:184 prefs.js:182
+msgid "Display Style"
+msgstr "显示风格"
+
+#: prefs.js:267 prefs.js:274
+msgid "Display Icon"
+msgstr "显示图标"
+
+#: prefs.js:276 prefs.js:283
+msgid "Display in the Middle"
+msgstr "居中显示"
+
+#: prefs.js:288 prefs.js:306
+msgid "Background Color"
+msgstr "背景色"
+
+#: prefs.js:197 prefs.js:195
+msgid "Display Individual Cores"
+msgstr "单独显示每个核心"
+
+#: prefs.js:193 prefs.js:191
+msgid "Show network speed in bits"
+msgstr "以位为单位显示网络速度"
+
+#: prefs.js:205 prefs.js:208
+msgid "Sensor"
+msgstr "传感器"
+
+#: prefs.js:207 prefs.js:210
+msgid "Please install lm-sensors"
+msgstr "请安装 lm-sensors"
+
+#: prefs.js:282 prefs.js:300
+msgid "Move the clock"
+msgstr "移走时钟"
+
+#: prefs.js:286 prefs.js:289
+msgid "Compact Display"
+msgstr "紧凑显示"
+
+#: extension.js:746 extension.js:1117
+msgid "Cpu"
+msgstr "处理器"
+
+msgid "User"
+msgstr "用户"
+
+msgid "System"
+msgstr "系统"
+
+msgid "Other"
+msgstr "其他"
+
+msgid "Nice"
+msgstr "优先级"
+
+msgid "Iowait"
+msgstr "IO 等待"
+
+#: extension.js:941 extension.js:1378
+msgid "Memory"
+msgstr "内存"
+
+msgid "Program"
+msgstr "程序"
+
+msgid "Cache"
+msgstr "缓存"
+
+msgid "Buffer"
+msgstr "缓冲"
+
+#: extension.js:1134 extension.js:1598
+msgid "Swap"
+msgstr "交换分区"
+
+msgid "Used"
+msgstr "已用"
+
+#: extension.js:1010 extension.js:1428
+msgid "Net"
+msgstr "网络"
+
+#: extension.js:1589
+msgid "Up"
+msgstr "上传"
+
+#: extension.js:1586
+msgid "Down"
+msgstr "下载"
+
+msgid "Uperrors"
+msgstr "上传错误"
+
+msgid "Downerrors"
+msgstr "下载错误"
+
+msgid "collisions"
+msgstr "冲突"
+
+msgid "Collisions"
+msgstr "冲突"
+
+#: extension.js:836 extension.js:1264
+msgid "Disk"
+msgstr "硬盘"
+
+msgid "Write"
+msgstr "写入"
+
+msgid "Read"
+msgstr "读取"
+
+#: extension.js:1182 extension.js:1312 extension.js:1322
+msgid "R"
+msgstr "读"
+
+#: extension.js:1185 extension.js:1315 extension.js:1325
+msgid "W"
+msgstr "写"
+
+#: prefs.js:185 prefs.js:183
+msgid "graph"
+msgstr "图形"
+
+#: prefs.js:185 prefs.js:183
+msgid "digit"
+msgstr "数字"
+
+#: prefs.js:185 prefs.js:183
+msgid "both"
+msgstr "同时"
+
+msgid "cpu"
+msgstr "处理器"
+
+#: extension.js:811
+msgid "mem"
+msgstr "内存"
+
+msgid "swap"
+msgstr "交换"
+
+msgid "net"
+msgstr "网络"
+
+msgid "disk"
+msgstr "硬盘"
+
+#: extension.js:1346 extension.js:1900
+msgid "Preferences..."
+msgstr "首选项..."
+
+#: extension.js:1340 extension.js:1894
+msgid "System Monitor..."
+msgstr "系统监视器..."
+
+msgid "System monitor"
+msgstr "系统监视器"
+
+msgid "user"
+msgstr "用户"
+
+msgid "system"
+msgstr "系统"
+
+msgid "other"
+msgstr "其他"
+
+msgid "nice"
+msgstr "优先级"
+
+msgid "iowait"
+msgstr "IO 等待"
+
+msgid "program"
+msgstr "程序"
+
+msgid "cache"
+msgstr "缓存"
+
+msgid "buffer"
+msgstr "缓冲"
+
+msgid "used"
+msgstr "已用"
+
+msgid "up"
+msgstr "上传"
+
+msgid "down"
+msgstr "下载"
+
+msgid "uperrors"
+msgstr "上传错误"
+
+msgid "downerrors"
+msgstr "下载错误"
+
+msgid "write"
+msgstr "写入"
+
+msgid "read"
+msgstr "读取"
+
+#: extension.js:167 extension.js:1454 extension.js:1545 extension.js:1554
+#: extension.js:1577 extension.js:1581 extension.js:1585 extension.js:1588
+msgid "KiB/s"
+msgstr "KiB/s"
+
+#: extension.js:166 extension.js:168 extension.js:1277 extension.js:1321
+#: extension.js:1324 extension.js:1549 extension.js:1558
+msgid "MiB/s"
+msgstr "MiB/s"
+
+#: extension.js:1419 extension.js:1635
+msgid "MiB"
+msgstr "MiB"
+
+#: extension.js:1714
+#, fuzzy
+msgid "GiB"
+msgstr "MiB"
+
+#: extension.js:184
+msgid "kB"
+msgstr "kB"
+
+#: extension.js:183 extension.js:185
+msgid "MB"
+msgstr "MB"
+
+#: extension.js:1179 extension.js:1644
+msgid "Thermal"
+msgstr "温度"
+
+msgid "thermal"
+msgstr "温度"
+
+#: prefs.js:180 prefs.js:178
+msgid "Show In Menu"
+msgstr "在菜单中显示"
+
+#: prefs.js:222 prefs.js:229
+msgid "Show Time Remaining"
+msgstr "显示剩余时间"
+
+#: prefs.js:226 prefs.js:233
+msgid "Hide System Icon"
+msgstr "隐藏系统图标"
+
+#: prefs.js:230 prefs.js:237
+msgid "Usage Style"
+msgstr "用量显示风格"
+
+#: prefs.js:231 prefs.js:238
+msgid "pie"
+msgstr "扇形图"
+
+#: prefs.js:231 prefs.js:238
+msgid "bar"
+msgstr "条形图"
+
+#: prefs.js:231 prefs.js:238
+msgid "none"
+msgstr "无"
+
+#: extension.js:68
+#, fuzzy
+msgid ""
+"Dependencies Missing\n"
+"Please install: \n"
+"libgtop, Network Manager and gir bindings \n"
+"\t on Ubuntu: gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t on Fedora: libgtop2-devel, NetworkManager-glib-devel \n"
+"\t on Arch: libgtop, networkmanager\n"
+"\t on openSUSE: typelib-1_0-GTop-2_0, typelib-1_0-NetworkManager-1_0\n"
+msgstr ""
+"缺失依赖项\n"
+"请安装:\n"
+"libgtop、Network Manager 及其 gir 绑定\n"
+"\t 于 Ubuntu:gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 \n"
+"\t 于 Fedora:libgtop2-devel, NetworkManager-glib-devel \n"
+"\t 于 Arch:libgtop, networkmanager\n"
+
+#: extension.js:97 extension.js:255
+msgid "System Monitor Extension"
+msgstr "系统监视器扩展"
+
+#: extension.js:113 extension.js:271
+msgid "Cancel"
+msgstr "取消"
+
+#: extension.js:601 extension.js:875
+msgid "Battery"
+msgstr "电池"
+
+msgid "battery"
+msgstr "电池"
+
+#: extension.js:896 extension.js:1334
+msgid "Freq"
+msgstr "主频"
+
+msgid "freq"
+msgstr "主频"
+
+#: extension.js:1540 extension.js:1692
+msgid "Fan"
+msgstr "风扇"
+
+msgid "fan"
+msgstr "风扇"
+
+#: extension.js:1542 extension.js:1566 extension.js:1574 extension.js:1698
+#: extension.js:1722 extension.js:1730
+msgid "rpm"
+msgstr "rpm"
+
+#: prefs.js:294
+msgid "Show tooltip"
+msgstr ""
+
+#: extension.js:1097
+msgid "CPU"
+msgstr ""
+
+#: prefs.js:267
+msgid "Display temperature in Fahrenheit"
+msgstr ""
+
+#: prefs.js:277
+msgid "Temperature threshold (0 to disable)"
+msgstr ""
+
+#~ msgid "System Monitor Applet Configurator"
+#~ msgstr "面板系统监视器配置"