summaryrefslogtreecommitdiffstats
path: root/extensions/46/hibernate-status
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/46/hibernate-status')
-rw-r--r--extensions/46/hibernate-status/.editorconfig12
-rw-r--r--extensions/46/hibernate-status/.github/workflows/release.yaml32
-rw-r--r--extensions/46/hibernate-status/.gitignore6
-rw-r--r--extensions/46/hibernate-status/.prettierrc8
-rw-r--r--extensions/46/hibernate-status/LICENSE340
-rw-r--r--extensions/46/hibernate-status/Makefile76
-rw-r--r--extensions/46/hibernate-status/README.md41
-rwxr-xr-xextensions/46/hibernate-status/buildforupload.sh2
-rw-r--r--extensions/46/hibernate-status/extension.js573
-rw-r--r--extensions/46/hibernate-status/locale/bg/LC_MESSAGES/hibernate-status-button.po75
-rw-r--r--extensions/46/hibernate-status/locale/cs/LC_MESSAGES/hibernate-status-button.po66
-rw-r--r--extensions/46/hibernate-status/locale/de/LC_MESSAGES/hibernate-status-button.po72
-rw-r--r--extensions/46/hibernate-status/locale/es/LC_MESSAGES/hibernate-status-button.po71
-rw-r--r--extensions/46/hibernate-status/locale/fa/LC_MESSAGES/hibernate-status-button.po72
-rw-r--r--extensions/46/hibernate-status/locale/fr/LC_MESSAGES/hibernate-status-button.po71
-rw-r--r--extensions/46/hibernate-status/locale/hu/LC_MESSAGES/hibernate-status-button.po72
-rw-r--r--extensions/46/hibernate-status/locale/it/LC_MESSAGES/hibernate-status-button.po71
-rw-r--r--extensions/46/hibernate-status/locale/nl/LC_MESSAGES/hibernate-status-button.po72
-rw-r--r--extensions/46/hibernate-status/locale/oc/LC_MESSAGES/hibernate-status-button.po71
-rw-r--r--extensions/46/hibernate-status/locale/pl/LC_MESSAGES/hibernate-status-button.po71
-rw-r--r--extensions/46/hibernate-status/locale/pt/LC_MESSAGES/hibernate-status-button.po71
-rw-r--r--extensions/46/hibernate-status/locale/pt_BR/LC_MESSAGES/hibernate-status-button.po73
-rw-r--r--extensions/46/hibernate-status/locale/ru/LC_MESSAGES/hibernate-status-button.po76
-rw-r--r--extensions/46/hibernate-status/locale/uk/LC_MESSAGES/hibernate-status-button.po74
-rw-r--r--extensions/46/hibernate-status/locale/zh_CN/LC_MESSAGES/hibernate-status-button.po67
-rw-r--r--extensions/46/hibernate-status/metadata.json9
-rw-r--r--extensions/46/hibernate-status/prefs.js171
-rw-r--r--extensions/46/hibernate-status/schemas/org.gnome.shell.extensions.hibernate-status-button.gschema.xml35
28 files changed, 2450 insertions, 0 deletions
diff --git a/extensions/46/hibernate-status/.editorconfig b/extensions/46/hibernate-status/.editorconfig
new file mode 100644
index 0000000..bf58f2f
--- /dev/null
+++ b/extensions/46/hibernate-status/.editorconfig
@@ -0,0 +1,12 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+charset = utf-8
+trim_trailing_whitespace = true
+end_of_line = lf
+insert_final_newline = true
+
+[*.js]
+quote_type = single
diff --git a/extensions/46/hibernate-status/.github/workflows/release.yaml b/extensions/46/hibernate-status/.github/workflows/release.yaml
new file mode 100644
index 0000000..80138f9
--- /dev/null
+++ b/extensions/46/hibernate-status/.github/workflows/release.yaml
@@ -0,0 +1,32 @@
+name: "Prepare GitHub release"
+
+on:
+ push:
+
+jobs:
+ zip:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ - name: zip
+ run: |
+ sudo apt-get install make gettext
+ make zip-file
+ - name: Upload artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: zip
+ path: "*.zip"
+ - name: Release (pre)
+ uses: softprops/action-gh-release@v1
+ with:
+ files: "*.zip"
+ prerelease: true
+ if: contains(github.ref_name,'rc') && github.ref_type == 'tag'
+ - name: Release
+ uses: softprops/action-gh-release@v1
+ with:
+ files: "*.zip"
+ if: "!contains(github.ref_name,'rc') && github.ref_type == 'tag'"
diff --git a/extensions/46/hibernate-status/.gitignore b/extensions/46/hibernate-status/.gitignore
new file mode 100644
index 0000000..68270f9
--- /dev/null
+++ b/extensions/46/hibernate-status/.gitignore
@@ -0,0 +1,6 @@
+**/*.compiled
+*.zip
+.~
+*~
+*.mo
+locale/hibernate-status-button.pot
diff --git a/extensions/46/hibernate-status/.prettierrc b/extensions/46/hibernate-status/.prettierrc
new file mode 100644
index 0000000..8da2b4c
--- /dev/null
+++ b/extensions/46/hibernate-status/.prettierrc
@@ -0,0 +1,8 @@
+tabWidth: 4
+useTabs: false
+semi: true
+singleQuote: true
+quoteProps: 'as-needed'
+trailingComma: 'es5'
+bracketSpacing: false
+arrowParens: 'avoid'
diff --git a/extensions/46/hibernate-status/LICENSE b/extensions/46/hibernate-status/LICENSE
new file mode 100644
index 0000000..d6a9326
--- /dev/null
+++ b/extensions/46/hibernate-status/LICENSE
@@ -0,0 +1,340 @@
+GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) 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
+this service 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 make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. 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.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+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
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the 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 a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE 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.
+
+ 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
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {description}
+ Copyright (C) {year} {fullname}
+
+ 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 2 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, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision 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, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ {signature of Ty Coon}, 1 April 1989
+ Ty Coon, President of Vice
+
+This 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.
+
diff --git a/extensions/46/hibernate-status/Makefile b/extensions/46/hibernate-status/Makefile
new file mode 100644
index 0000000..f74ed54
--- /dev/null
+++ b/extensions/46/hibernate-status/Makefile
@@ -0,0 +1,76 @@
+# Basic Makefile
+
+UUID = hibernate-status@dromi
+BASE_MODULES = extension.js metadata.json LICENSE README.md
+EXTRA_MODULES = prefs.js
+TOLOCALIZE = confirmDialog.js prefs.js
+PO_FILES := $(wildcard ./locale/*/*/*.po)
+MO_FILES := $(PO_FILES:.po=.mo)
+
+ifeq ($(strip $(DESTDIR)),)
+ INSTALLTYPE = local
+ INSTALLBASE = $(HOME)/.local/share/gnome-shell/extensions
+else
+ INSTALLTYPE = system
+ SHARE_PREFIX = $(DESTDIR)/usr/share
+ INSTALLBASE = $(SHARE_PREFIX)/gnome-shell/extensions
+endif
+INSTALLNAME = hibernate-status@dromi
+
+all: extension
+
+clean:
+ rm -f ./schemas/gschemas.compiled
+ rm -f ./**/*~
+ rm -f ./locale/*/*/*.mo
+ rm -f ./locale/hibernate-status-button.pot
+
+extension: ./schemas/gschemas.compiled $(MO_FILES)
+
+./schemas/gschemas.compiled: ./schemas/org.gnome.shell.extensions.hibernate-status-button.gschema.xml
+ glib-compile-schemas ./schemas/
+
+potfile: ./locale/hibernate-status-button.pot
+
+mergepo: potfile
+ for l in $(PO_FILES); do \
+ msgmerge -U $$l ./locale/hibernate-status-button.pot; \
+ done;
+
+./locale/hibernate-status-button.pot: $(TOLOCALIZE)
+ mkdir -p locale
+ xgettext -k --keyword=__ --keyword=N__ --add-comments='Translators:' -o locale/hibernate-status-button.pot --package-name "Hibernate Status Button" $(TOLOCALIZE)
+
+%.mo: %.po
+ msgfmt -c $< -o $@
+
+install: install-local
+
+install-local: _build
+ rm -rf $(INSTALLBASE)/$(INSTALLNAME)
+ mkdir -p $(INSTALLBASE)/$(INSTALLNAME)
+ cp -r ./_build/* $(INSTALLBASE)/$(INSTALLNAME)/
+ifeq ($(INSTALLTYPE),system)
+ # system-wide settings and locale files
+ rm -r $(INSTALLBASE)/$(INSTALLNAME)/schemas
+ rm -r $(INSTALLBASE)/$(INSTALLNAME)/locale
+ mkdir -p $(SHARE_PREFIX)/glib-2.0/schemas $(SHARE_PREFIX)/locale
+ cp -r ./schemas/*gschema.* $(SHARE_PREFIX)/glib-2.0/schemas
+ cp -r ./_build/locale/* $(SHARE_PREFIX)/locale
+endif
+ -rm -fR _build
+ echo done
+
+zip-file: _build
+ cd _build ; zip -qr "$(UUID).zip" . -x '*.po'
+ mv _build/$(UUID).zip ./
+ -rm -fR _build
+
+_build: all
+ -rm -fR ./_build
+ mkdir -p _build
+ cp $(BASE_MODULES) $(EXTRA_MODULES) _build
+ mkdir -p _build/schemas
+ cp schemas/*.xml _build/schemas/
+ cp schemas/gschemas.compiled _build/schemas/
+ cp -r locale/ _build/locale
diff --git a/extensions/46/hibernate-status/README.md b/extensions/46/hibernate-status/README.md
new file mode 100644
index 0000000..f356bd7
--- /dev/null
+++ b/extensions/46/hibernate-status/README.md
@@ -0,0 +1,41 @@
+# gnome-shell-extension-hibernate-status
+
+Gnome Shell extension that adds a hibernate/hybrid suspend button in Status menu.
+
+Originally developed by [@arelange](https://github.com/arelange) and then [@p91paul](https://github.com/p91paul). Now maintained by [@slaclau](https://github.com/slaclau).
+
+Supports GNOME 45 and 46.
+
+## FAQ
+
+### Hibernation does not work
+
+Try launching from your terminal
+
+ systemctl hibernate
+
+If it doesn't work, it means hibernation is disabled on your system. Please see:
+
+https://askubuntu.com/questions/1034185/ubuntu-18-04-cant-resume-after-hibernate/1064114#1064114
+
+or
+
+https://help.ubuntu.com/16.04/ubuntu-help/power-hibernate.html
+
+### Hibernation button does not show up, but systemctl hibernate works
+
+If you are running Ubuntu, try putting
+
+ [Enable hibernate in upower]
+ Identity=unix-user:*
+ Action=org.freedesktop.upower.hibernate
+ ResultActive=yes
+
+ [Enable hibernate in logind]
+ Identity=unix-user:*
+ Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
+ ResultActive=yes
+
+into /etc/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
+
+Otherwise check for similar settings for your distribution. Credit: https://github.com/arelange/gnome-shell-extension-hibernate-status/issues/41#issuecomment-565883599
diff --git a/extensions/46/hibernate-status/buildforupload.sh b/extensions/46/hibernate-status/buildforupload.sh
new file mode 100755
index 0000000..d2c705c
--- /dev/null
+++ b/extensions/46/hibernate-status/buildforupload.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+make zip-file
diff --git a/extensions/46/hibernate-status/extension.js b/extensions/46/hibernate-status/extension.js
new file mode 100644
index 0000000..d0c7708
--- /dev/null
+++ b/extensions/46/hibernate-status/extension.js
@@ -0,0 +1,573 @@
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
+
+import * as LoginManager from 'resource:///org/gnome/shell/misc/loginManager.js';
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
+import * as StatusSystem from 'resource:///org/gnome/shell/ui/status/system.js';
+import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
+import * as ExtensionSystem from 'resource:///org/gnome/shell/ui/extensionSystem.js';
+import * as ModalDialog from 'resource:///org/gnome/shell/ui/modalDialog.js';
+import * as Dialog from 'resource:///org/gnome/shell/ui/dialog.js';
+import * as CheckBoxImport from 'resource:///org/gnome/shell/ui/checkBox.js';
+import {loadInterfaceXML} from 'resource:///org/gnome/shell/misc/fileUtils.js';
+
+const CheckBox = CheckBoxImport.CheckBox;
+// Use __ () and N__() for the extension gettext domain, and reuse
+// the shell domain with the default _() and N_()
+import {Extension, gettext as __} from 'resource:///org/gnome/shell/extensions/extension.js';
+export {__};
+const N__ = function (e) {
+ return e;
+};
+
+const HIBERNATE_CHECK_TIMEOUT = 20000;
+
+export default class HibernateButtonExtension extends Extension {
+ _loginManagerCanHibernate(asyncCallback) {
+ if (this._loginManager._proxy) {
+ // systemd path
+ this._loginManager._proxy.call(
+ 'CanHibernate',
+ null,
+ Gio.DBusCallFlags.NONE,
+ -1,
+ null,
+ function (proxy, asyncResult) {
+ let result, error;
+
+ try {
+ result = proxy.call_finish(asyncResult).deep_unpack();
+ } catch (e) {
+ error = e;
+ }
+
+ if (error) asyncCallback(false);
+ else asyncCallback(!['no', 'na'].includes(result[0]));
+ }
+ );
+ } else {
+ this.can_hibernate_sourceID = GLib.idle_add(() => {
+ asyncCallback(false);
+ return false;
+ });
+ }
+ }
+
+ _loginManagerHibernate() {
+ if (this._setting.get_boolean('hibernate-works-check')) {
+ this._hibernateStarted = new Date();
+ this.hibernate_sourceID = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT,
+ HIBERNATE_CHECK_TIMEOUT,
+ () => this._checkDidHibernate()
+ );
+ }
+ if (this._loginManager._proxy) {
+ // systemd path
+ this._loginManager._proxy.call(
+ 'Hibernate',
+ GLib.Variant.new('(b)', [true]),
+ Gio.DBusCallFlags.NONE,
+ -1,
+ null,
+ null
+ );
+ } else {
+ // Can't do in ConsoleKit
+ this._loginManager.emit('prepare-for-sleep', true);
+ this._loginManager.emit('prepare-for-sleep', false);
+ }
+ }
+
+ _loginManagerCanHybridSleep(asyncCallback) {
+ if (this._loginManager._proxy) {
+ // systemd path
+ this._loginManager._proxy.call(
+ 'CanHybridSleep',
+ null,
+ Gio.DBusCallFlags.NONE,
+ -1,
+ null,
+ function (proxy, asyncResult) {
+ let result, error;
+
+ try {
+ result = proxy.call_finish(asyncResult).deep_unpack();
+ } catch (e) {
+ error = e;
+ }
+
+ if (error) asyncCallback(false);
+ else asyncCallback(!['no', 'na'].includes(result[0]));
+ }
+ );
+ } else {
+ this.can_hybrid_sleep_sourceID = GLib.idle_add(() => {
+ asyncCallback(false);
+ return false;
+ });
+ }
+ }
+
+ _loginManagerHybridSleep() {
+ if (this._loginManager._proxy) {
+ // systemd path
+ this._loginManager._proxy.call(
+ 'HybridSleep',
+ GLib.Variant.new('(b)', [true]),
+ Gio.DBusCallFlags.NONE,
+ -1,
+ null,
+ null
+ );
+ } else {
+ // Can't do in ConsoleKit
+ this._loginManager.emit('prepare-for-sleep', true);
+ this._loginManager.emit('prepare-for-sleep', false);
+ }
+ }
+
+ _loginManagerCanSuspendThenHibernate(asyncCallback) {
+ if (this._loginManager._proxy) {
+ // systemd path
+ this._loginManager._proxy.call(
+ 'CanSuspendThenHibernate',
+ null,
+ Gio.DBusCallFlags.NONE,
+ -1,
+ null,
+ function (proxy, asyncResult) {
+ let result, error;
+
+ try {
+ result = proxy.call_finish(asyncResult).deep_unpack();
+ } catch (e) {
+ error = e;
+ }
+
+ if (error) asyncCallback(false);
+ else asyncCallback(!['no', 'na'].includes(result[0]));
+ }
+ );
+ } else {
+ this.can_suspend_then_hibernate_sourceID = GLib.idle_add(() => {
+ asyncCallback(false);
+ return false;
+ });
+ }
+ }
+
+ _loginManagerSuspendThenHibernate() {
+ if (this._loginManager._proxy) {
+ // systemd path
+ this._loginManager._proxy.call(
+ 'SuspendThenHibernate',
+ GLib.Variant.new('(b)', [true]),
+ Gio.DBusCallFlags.NONE,
+ -1,
+ null,
+ null
+ );
+ } else {
+ // Can't do in ConsoleKit
+ this._loginManager.emit('prepare-for-sleep', true);
+ this._loginManager.emit('prepare-for-sleep', false);
+ }
+ }
+
+ _updateHaveHibernate() {
+ this._loginManagerCanHibernate(result => {
+ log(`Able to hibernate: ${result}`);
+ this._haveHibernate = result;
+ this._updateHibernate();
+ });
+ }
+
+ _updateHibernate() {
+ this._hibernateMenuItem.visible =
+ this._haveHibernate && !Main.sessionMode.isLocked && this._setting.get_boolean('show-hibernate');
+ }
+
+ _updateHaveHybridSleep() {
+ this._loginManagerCanHybridSleep(result => {
+ log(`Able to hybrid-sleep: ${result}`);
+ this._haveHybridSleep = result;
+ this._updateHybridSleep();
+ });
+ }
+
+ _updateHybridSleep() {
+ this._hybridSleepMenuItem.visible =
+ this._haveHybridSleep && !Main.sessionMode.isLocked && this._setting.get_boolean('show-hybrid-sleep');
+ }
+
+ _updateHaveSuspendThenHibernate() {
+ this._loginManagerCanSuspendThenHibernate(result => {
+ log(`Able to suspend then hibernate: ${result}`);
+ this._haveSuspendThenHibernate = result;
+ this._updateSuspendThenHibernate();
+ });
+ }
+
+ _updateSuspendThenHibernate() {
+ this._suspendThenHibernateMenuItem.visible =
+ this._haveSuspendThenHibernate && !Main.sessionMode.isLocked && this._setting.get_boolean('show-suspend-then-hibernate');
+ }
+
+ _updateDefaults() {
+ console.log("Update defaults");
+ }
+
+ _onHibernateClicked() {
+ this.systemMenu._systemItem.menu.itemActivated();
+
+ if (this._setting.get_boolean('show-hibernate-dialog')) {
+ let HibernateDialogContent = {
+ subject: C_('title', __('Hibernate')),
+ description: __('Do you really want to hibernate the system?'),
+ confirmButtons: [
+ {
+ signal: 'Cancel',
+ label: C_('button', __('Cancel')),
+ key: Clutter.Escape,
+ },
+ {
+ signal: 'ConfirmedHibernate',
+ label: C_('button', __('Hibernate')),
+ default: true,
+ },
+ ],
+ };
+
+ this._dialog = new ConfirmDialog(
+ HibernateDialogContent
+ );
+ this._dialog.connect('ConfirmedHibernate', () =>
+ this._loginManagerHibernate()
+ );
+ this._dialog.open();
+ } else {
+ this._loginManagerHibernate()
+ }
+ }
+
+ _onHybridSleepClicked() {
+ this.systemMenu._systemItem.menu.itemActivated();
+ this._loginManagerHybridSleep();
+ }
+
+ _onSuspendThenHibernateClicked() {
+ this.systemMenu._systemItem.menu.itemActivated();
+ this._loginManagerSuspendThenHibernate();
+ }
+
+ _disableExtension() {
+ Main.extensionManager.disableExtension('hibernate-status@dromi')
+ console.log('Disabled')
+ }
+
+ _cancelDisableExtension(notAgain) {
+ if (notAgain) this.setHibernateWorksCheckEnabled(false);
+ }
+
+ _checkRequirements() {
+ if (GLib.access('/run/systemd/seats', 0) < 0) {
+ let SystemdMissingDialogContent = {
+ subject: C_('title', __('Hibernate button: Systemd Missing')),
+ description: __('Systemd seems to be missing and is required.'),
+ confirmButtons: [
+ {
+ signal: 'Cancel',
+ label: C_('button', __('Cancel')),
+ key: Clutter.Escape,
+ },
+ {
+ signal: 'DisableExtension',
+ label: C_('button', __('Disable Extension')),
+ default: true,
+ },
+ ],
+ iconName: 'document-save-symbolic',
+ iconStyleClass: 'end-session-dialog-shutdown-icon',
+ };
+
+ this._dialog = new ConfirmDialog(
+ SystemdMissingDialogContent
+ );
+ this._dialog.connect('DisableExtension', this._disableExtension);
+ this._dialog.open();
+ }
+ }
+
+ _checkDidHibernate() {
+ /* This function is called HIBERNATE_CHECK_TIMEOUT ms after
+ * hibernate started. If it is successful, at that point the GS
+ * process is already frozen; so when this function is actually
+ * called, way more than HIBERNATE_CHECK_TIMEOUT ms are passed*/
+ if (
+ new Date() - this._hibernateStarted >
+ HIBERNATE_CHECK_TIMEOUT + 5000
+ ) {
+ // hibernate succeeded
+ return;
+ }
+ // hibernate failed
+
+ let HibernateFailedDialogContent = {
+ subject: C_('title', __('Hibernate button: Hibernate failed')),
+ description: __(
+ 'Looks like hibernation failed. On some linux distributions hibernation is disabled ' +
+ 'because not all hardware supports it well; ' +
+ 'please check your distribution documentation ' +
+ 'on how to enable it.'
+ ),
+ checkBox: __("You are wrong, don't check this anymore!"),
+ confirmButtons: [
+ {
+ signal: 'Cancel',
+ label: C_('button', __('Cancel')),
+ key: Clutter.Escape,
+ },
+ {
+ signal: 'DisableExtension',
+ label: C_('button', __('Disable Extension')),
+ default: true,
+ },
+ ],
+ iconName: 'document-save-symbolic',
+ iconStyleClass: 'end-session-dialog-shutdown-icon',
+ }
+ this._dialog = new ConfirmDialog(
+ HibernateFailedDialogContent
+ );
+ this._dialog.connect('DisableExtension', this._disableExtension);
+ this._dialog.connect('Cancel', this._cancelDisableExtension);
+ this._dialog.open();
+ }
+
+ setHibernateWorksCheckEnabled(enabled) {
+ let key = 'hibernate-works-check';
+ if (this._setting.is_writable(key)) {
+ if (this._setting.set_boolean(key, enabled)) {
+ Gio.Settings.sync();
+ } else {
+ throw this._errorSet(key);
+ }
+ } else {
+ throw this._errorWritable(key);
+ }
+ }
+
+ _modifySystemItem() {
+ this._setting = this.getSettings()
+ this._checkRequirements();
+ this._loginManager = LoginManager.getLoginManager();
+ this.systemMenu = Main.panel.statusArea.quickSettings._system;
+ this._hibernateMenuItem = new PopupMenu.PopupMenuItem(__('Hibernate'));
+ this._hibernateMenuItemId = this._hibernateMenuItem.connect(
+ 'activate',
+ () => this._onHibernateClicked()
+ );
+
+ this._hybridSleepMenuItem = new PopupMenu.PopupMenuItem(
+ __('Hybrid Sleep')
+ );
+ this._hybridSleepMenuItemId = this._hybridSleepMenuItem.connect(
+ 'activate',
+ () => this._onHybridSleepClicked()
+ );
+
+ this._suspendThenHibernateMenuItem = new PopupMenu.PopupMenuItem(
+ __('Suspend then Hibernate')
+ );
+ this._suspendThenHibernateMenuItemId = this._suspendThenHibernateMenuItem.connect(
+ 'activate',
+ () => this._onSuspendThenHibernateClicked()
+ );
+
+ let afterSuspendPosition =
+ this.systemMenu._systemItem.menu.numMenuItems - 5;
+
+ this.systemMenu._systemItem.menu.addMenuItem(
+ this._hybridSleepMenuItem,
+ afterSuspendPosition
+ );
+ this.systemMenu._systemItem.menu.addMenuItem(
+ this._hibernateMenuItem,
+ afterSuspendPosition
+ );
+ this.systemMenu._systemItem.menu.addMenuItem(
+ this._suspendThenHibernateMenuItem,
+ afterSuspendPosition
+ );
+
+ this._menuOpenStateChangedId = this.systemMenu._systemItem.menu.connect(
+ 'open-state-changed',
+ (menu, open) => {
+ if (!open) return;
+ this._updateDefaults();
+ this._updateHaveHibernate();
+ this._updateHaveHybridSleep();
+ this._updateHaveSuspendThenHibernate();
+ }
+ );
+ }
+
+ _queueModifySystemItem() {
+ this.sourceId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
+ if (!Main.panel.statusArea.quickSettings._system)
+ return GLib.SOURCE_CONTINUE;
+
+ this._modifySystemItem();
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+
+ enable() {
+ if (!Main.panel.statusArea.quickSettings._system) {
+ this._queueModifySystemItem();
+ } else {
+ this._modifySystemItem();
+ }
+ }
+
+ disable() {
+ this._setting = null;
+ if (this._menuOpenStateChangedId) {
+ this.systemMenu._systemItem.menu.disconnect(
+ this._menuOpenStateChangedId
+ );
+ this._menuOpenStateChangedId = 0;
+ }
+
+ if (this._suspendThenHibernateMenuItemId) {
+ this._suspendThenHibernateMenuItem.disconnect(this._suspendThenHibernateMenuItemId);
+ this._suspendThenHibernateMenuItemId = 0;
+ }
+
+ if (this._hybridSleepMenuItemId) {
+ this._hybridSleepMenuItem.disconnect(this._hybridSleepMenuItemId);
+ this._hybridSleepMenuItemId = 0;
+ }
+
+ if (this._hibernateMenuItemId) {
+ this._hibernateMenuItem.disconnect(this._hibernateMenuItemId);
+ this._hibernateMenuItemId = 0;
+ }
+
+ if (this._suspendThenHibernateMenuItem) {
+ this._suspendThenHibernateMenuItem.destroy();
+ this._suspendThenHibernateMenuItem = 0;
+ }
+
+ if (this._hybridSleepMenuItem) {
+ this._hybridSleepMenuItem.destroy();
+ this._hybridSleepMenuItem = 0;
+ }
+
+ if (this._hibernateMenuItem) {
+ this._hibernateMenuItem.destroy();
+ this._hibernateMenuItem = 0;
+ }
+
+ if (this.sourceId) {
+ GLib.Source.remove(this.sourceId);
+ this.sourceId = null;
+ }
+
+ if (this.can_suspend_then_hibernate_sourceID) {
+ GLib.Source.remove(this.can_suspend_then_hibernate_sourceID);
+ this.can_suspend_then_hibernate_sourceID = null;
+ }
+
+ if (this.can_hybrid_sleep_sourceID) {
+ GLib.Source.remove(this.can_hybrid_sleep_sourceID);
+ this.can_hybrid_sleep_sourceID = null;
+ }
+
+ if (this.can_hibernate_sourceID) {
+ GLib.Source.remove(this.can_hibernate_sourceID);
+ this.can_hibernate_sourceID = null;
+ }
+
+ if (this.hibernate_sourceID) {
+ GLib.Source.remove(this.hibernate_sourceID);
+ this.hibernate_sourceID = null;
+ }
+ };
+}
+
+var ConfirmDialog = GObject.registerClass(
+ {
+ Signals: {
+ ConfirmedHibernate: {param_types: [GObject.TYPE_BOOLEAN]},
+ DisableExtension: {param_types: [GObject.TYPE_BOOLEAN]},
+ Cancel: {param_types: [GObject.TYPE_BOOLEAN]},
+ },
+ },
+ class ConfirmDialog extends ModalDialog.ModalDialog {
+ _init(dialog) {
+ super._init({
+ styleClass: 'end-session-dialog',
+ destroyOnClose: true,
+ });
+
+
+ this._messageDialogContent = new Dialog.MessageDialogContent();
+
+
+ this._messageDialogContent.description = dialog.description;
+ this._messageDialogContent.title = dialog.subject;
+
+ if (dialog.iconName) {
+ this._icon = new St.Icon({
+ icon_name: dialog.iconName,
+ icon_size: _DIALOG_ICON_SIZE,
+ style_class: dialog.iconStyleClass,
+ });
+ }
+
+ if (dialog.checkBox) {
+ this._checkBox = new CheckBox(dialog.checkBox);
+ this._messageDialogContent.add(this._checkBox.actor);
+ }
+
+ this.contentLayout.add_child(this._messageDialogContent);
+
+ let buttons = [];
+ for (let i = 0; i < dialog.confirmButtons.length; i++) {
+ let signal = dialog.confirmButtons[i].signal;
+ let label = dialog.confirmButtons[i].label;
+ let keys = dialog.confirmButtons[i].key;
+ buttons.push({
+ action: () => {
+ let signalId = this.connect('closed', () => {
+ this.disconnect(signalId);
+ this._confirm(signal);
+ });
+ this.close();
+ },
+ label: label,
+ key: keys,
+ });
+ }
+
+ this.setButtons(buttons);
+ }
+
+ _confirm(signal) {
+ var checked;
+ if (this._checkBox) checked = this._checkBox.actor.get_checked();
+ this.emit(signal, checked);
+ }
+
+ cancel() {
+ this.close();
+ }
+ }
+);
+
+const _DIALOG_ICON_SIZE = 32;
diff --git a/extensions/46/hibernate-status/locale/bg/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/bg/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..689fee9
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/bg/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,75 @@
+# Bulgarian translation of hibernate-status-button
+# Copyright (C) 2023 Zetta1 Reid0
+# This file is distributed under the same license as the hibernate-status-button package.
+# Zetta1 Reid0, 2023.
+#
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 17.03.2023 12:41+0200\n"
+"PO-Revision-Date: 17.03.2023 12:41+0200\n"
+"Last-Translator: Zetta1 Reid0\n"
+"Language-Team: Bulgarian\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
+"X-Generator: Poedit 3.0\n"
+"X-Poedit-Basepath: .\n"
+
+#: extension.js:189 confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Хиберниране"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Хибридно Приспиване"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Наистина ли искате да хибернирате системата?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Отказ"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Бутон за Хибернация: Systemd Липсва."
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Systemd изглежда че липсва, а е задължително."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Изключване на Разширението"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Бутон за Хибернация: Хибернирането се провали."
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Изглежда че Хибернацията се провали.\n"
+"На някой Линукс дистрибуции хибернирането е изключено,\n"
+"защото не всеки хардуер го поддържа добре.\n"
+"Моля проверете документацията на вашата дистрибуция\n"
+"за това как да я включите"
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Вие сте в грешка, Не проверявайте това повече!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Това разширение няма налични настройки."
diff --git a/extensions/46/hibernate-status/locale/cs/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/cs/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..32e541d
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/cs/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,66 @@
+# Czech translation of hibernate-status-button
+# Copyright (C) 2021 Vojtěch Perník
+# This file is distributed under the same license as the hibernate-status-button package.
+# Vojtěch Perník <translations@pervoj.cz>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2021-05-06 16:15+0200\n"
+"Last-Translator: Vojtěch Perník <translations@pervoj.cz>\n"
+"Language-Team: Czech\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Uspat na disk"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Opravdu chcete systém uspat na disk?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Hibernate button: Systemd není nainstalován"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Zdá se, že Systemd není nainstalován, ale je vyžadován."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Zakázat rozšíření"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Hibernate button: Uspání na disk se nezdařilo"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Vypadá to, že se uspání na disk nezdařilo.\n"
+"U některých linuxových distribucí je uspání na disk\n"
+"zakázáno, protože ne všechny hardware ho podporují,\n"
+"podívejte se prosím do dokumentace své distribuce, jak ji povolit."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Mýlíte se, už to nekontrolujte!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Toto rozšíření nemá k dispozici žádná nastavení"
diff --git a/extensions/46/hibernate-status/locale/de/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/de/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..3fdb8c2
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/de/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,72 @@
+# German translation of hibernate-status-button
+# Copyright (C) 2022 Oskar Kirmis
+# This file is distributed under the same license as the hibernate-status-button package.
+# Oskar Kirmis <oskar.kirmis@posteo.de>, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-03-28 21:00+0200\n"
+"PO-Revision-Date: 2022-10-22 21:30+0200\n"
+"Last-Translator: Oskar Kirmis <oskar.kirmis@posteo.de>\n"
+"Language-Team: German\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 3.0.1\n"
+
+#: confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Ruhezustand"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Hybrider Standbymodus"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Wollen Sie das System wirklich in den Ruhezustand versetzen?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Hibernate button: Systemd fehlt"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Systemd fehlt offenbar, wird jedoch benötigt."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Erweiterung deaktivieren"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Hibernate button: Versetzen in den Ruhezustand fehlgeschlagen"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Offenbar konnte das System nicht in den Ruhezustand versetzt werden.\n"
+"Auf manchen Linuxdistributionen ist der Ruhezustand deaktiviert\n"
+"weil nicht jegliche Hardware dies unterstützt;\n"
+"bitte schauen Sie in der Dokumentation Ihrer\n"
+"Distribution nach, wie Sie ihn aktivieren können."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Das ist falsch, bitte nicht mehr prüfen!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Für diese Erweiterung gibt es keine Einstellungen"
diff --git a/extensions/46/hibernate-status/locale/es/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/es/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..92c14bc
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/es/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,71 @@
+# Spanish translation of hibernate-status-button
+# Copyright (C) 2022 slaythrax
+# This file is distributed under the same license as the hibernate-status-button package.
+# slaythrax <jbustamantec@unal.edu.co>, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2022-10-22 21:30+0200\n"
+"Last-Translator: slaythrax <jbustamantec@unal.edu.co>\n"
+"Language-Team: Spanish <jbustamantec@unal.edu.co>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Hibernar"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Suspensión Híbrida"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Desea hibernar el sistema?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Systemd no está instalado"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Parece que systemd no está instalado. Systemd es necesario"
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Deshabilitar extensión"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Hibernación fallida"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Parece que la hibernación falló\n"
+"En algunas distribuciones de linux la hibernación se encuentra deshabilitada\n"
+"pues no todo el hardware no la soporta correctamente;\n"
+"verifique la documentación de su distribución\n"
+"para habilitarla."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "No es necesario hacer esta verificación de nuevo! "
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Esta extensión no tiene ajustes disponibles"
diff --git a/extensions/46/hibernate-status/locale/fa/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/fa/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..e4edef0
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/fa/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,72 @@
+# Persian translation of hibernate-status-button
+# Copyright (C) 2021 MohammadSaleh Kamyab
+# This file is distributed under the same license as the hibernate-status-button package.
+# MohammadSaleh Kamyab <mskf1383@envs.net>, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2022-06-21 13:06+0430\n"
+"Last-Translator: MohammadSaleh Kamyab <mskf1383@envs.net>\n"
+"Language-Team: \n"
+"Language: fa\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==0 || n==1);\n"
+"X-Generator: Poedit 3.1\n"
+
+#: confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "خواب زمستانی"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "خواب ترکیبی"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "آیا مطمئنید که می‌خواهید سامانه را به خواب زمستانی ببرید؟"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "لغو"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "دکمهٔ خواب زمستانی: سیستم‌دی یافت نشد"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "به نظر می‌رسد سیستم‌دی که لازم است، وجود ندارد."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "از کار انداختن افزونه"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "دکمهٔ خواب زمستانی: خواب زمستانی شکست خورد"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"به نظر می‌رسد خواب زمستانی به شکست انجامید.\n"
+"در بعضی از توزیع‌های گنو/لینوکسی، خواب زمستانی از کار انداخته شده است؛\n"
+"زیرا تمامی سخت‌افزارها به‌خوبی از آن پشتیبانی نمی‌کنند.\n"
+"لطفاً مستندات توزیع خود را در مورد چگونگی به کار انداختن آن، بررسی کنید."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "اشتباه می‌کنید، دوباره بررسی نکنید!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "این افزونه هیچ تنظیماتی ندارد"
diff --git a/extensions/46/hibernate-status/locale/fr/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/fr/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..9dca80d
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/fr/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,71 @@
+# French translation of hibernate-status-button
+# Copyright (C) 2021 Jérôme de Bretagne
+# This file is distributed under the same license as the hibernate-status-button package.
+# Jérôme de Bretagne <jerome.debretagne@gmail.com>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2021-11-13 19:34+0200\n"
+"Last-Translator: Jérôme de Bretagne <jerome.debretagne@gmail.com>\n"
+"Language-Team: French <jerome.debretagne@gmail.com>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: extension.js:189 confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Mettre en veille prolongée"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Mettre en veille hybride"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Voulez-vous vraiment mettre l'appareil en veille prolongée ?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Annuler"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Extension de mise en veille prolongée : systemd manquant"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "systemd ne semble pas installé et est nécessaire."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Désactiver l'extension"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Extension de mise en veille prolongée : échec"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"La mise en veille prolongée a échoué.\n"
+"Sur certaines distributions Linux, la mise en veille prolongée est désactivée\n"
+"car elle ne fonctionne pas correctement pour quelques appareils;\n"
+"Veuillez vous reporter à la documentation de votre distribution\n"
+"pour savoir comment l'activer."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Il n'est pas utile de cocher cette case !"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Cette extension n'a pas de paramètres"
diff --git a/extensions/46/hibernate-status/locale/hu/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/hu/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..70da5aa
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/hu/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,72 @@
+# Hungarian translation of hibernate-status-button
+# Copyright (C) 2023 ViBE
+# This file is distributed under the same license as the hibernate-status-button package.
+# ViBE <vibe@protonmail.com>, 2023.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2023-02-25 00:00+0100\n"
+"Last-Translator: ViBE <vibe@protonmail.com>\n"
+"Language-Team: Hungarian <vibe@protonmail.com>\n"
+"Language: hu\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: Gtranslator 41.0\n"
+
+#: confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Hibernálás"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Hibrid felfüggesztés"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Valóban hibernálni szeretné a rendszert?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Mégse"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Hibernate button: systemd nem található"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Úgy tűnik, hogy a hibernáláshoz szükséges systemd nincs telepítve."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Kiterjesztés letiltása"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Hibernate button: Hibernálás meghiúsult"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Úgy tűnik, hogy a hibernálás sikertelen volt.\n"
+"Egyes Linux kiadások nem támogatják ezt a funkciót,\n"
+"mert nem minden eszköz támogatja a hibernálást;\n"
+"engedélyezéshez ellenőrizze a rendszer dokumentációját!"
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Ne ellenőrizd ezt többet!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Ennek a kiterjesztésnek nincsenek beállításai"
diff --git a/extensions/46/hibernate-status/locale/it/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/it/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..a41e5ac
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/it/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,71 @@
+# Italian translation of hibernate-status-button
+# Copyright (C) 2021 p91paul
+# This file is distributed under the same license as the hibernate-status-button package.
+# p91paul <p91paul@gmail.com>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2022-10-22 21:30+0200\n"
+"Last-Translator: p91paul <p91paul@gmail.com>\n"
+"Language-Team: Italian <p91paul@gmail.com>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Iberna"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Sospensione ibrida"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Vuoi davvero ibernare il sistema?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Cancella"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Systemd non installato"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Systemd non è installato ed è necessario"
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Disabilita estensione"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Ibernazione fallita"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Sembra che l'ibernazione sia fallita.\n"
+"In alcune distribuzioni Linux l'ibernazione è disabilitata\n"
+"perchè non ben supportata da tutte le tipologie di hardware;\n"
+"Verifica la documentazione della tua distribuzione\n"
+"per abilitarla."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Ti sbagli, va tutto bene, non fare più questa verifica"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Questa estensione non ha impostazioni disponibili"
diff --git a/extensions/46/hibernate-status/locale/nl/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/nl/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..3146d8a
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/nl/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,72 @@
+# Nederlands translation of hibernate-status-button
+# Copyright (C) 2021 tebaranowski
+# This file is distributed under the same license as the hibernate-status-button package.
+# tebaranowski <tomasz.baranowski@int.pl>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2021-09-13 17:56+0200\n"
+"Last-Translator: Heimen Stoffels <vistausss@fastmail.com>\n"
+"Language-Team: Dutch <vistausss@fastmail.com>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
+"X-Generator: Poedit 3.0\n"
+
+#: confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Slaapstand"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Hybride slaapstand"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Weet u zeker dat u het systeem in de slaapstand wilt zetten?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Slaapstandknop: Systemd ontbreekt"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Systemd is vereist, maar niet aangetroffen."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Uitbreiding uitschakelen"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Slaapstandknop: slaapstand mislukt"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Het lijkt er op dat de slaapstand niet kan worden ingeschakeld.\n"
+"Op sommige distributies is de slaapstand niet beschikbaar.\n"
+"Neem de documentatie van uw distributie door om te\n"
+"zien of u de slaapstand kunt activeren."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Dit klopt niet - negeer deze controle!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Deze uitbreiding bevat geen voorkeurenscherm"
diff --git a/extensions/46/hibernate-status/locale/oc/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/oc/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..25debf8
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/oc/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,71 @@
+# Occitan translation of hibernate-status-button
+# Copyright (C) 2022 Quentin
+# This file is distributed under the same license as the hibernate-status-button package.
+# Quentin
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2023-01-11 17:19+0200\n"
+"Last-Translator: Quentin PAGÈS <>\n"
+"Language-Team: Occitan\n"
+"Language: oc\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: extension.js:189 confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Metre en velha perlongada"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Metre en velha ibrida"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Volètz vertadièrament metre l'aparelh en velha perlongada ?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Anullar"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Extension de mesa en velha perlongada : systemd mancant"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "systemd sembla pas installat e es necessari."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Desactivar l'extension"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Extension de mesa en velha perlongada : fracàs"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"La mesa en velha perlongada a fracassat.\n"
+"Amb d'unas distribucions Linux, la mesa en velha perlongada es desactivada\n"
+"pr'amor que fonciona pas coma cal amb d'unes aparelhs ;\n"
+"Mercés de consultar la documentacion de la distribucion\n"
+"per saber cossí l'activar."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Es pas necessari de marcar aquesta casa !"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Aquesta extension a pas cap de paramètres"
diff --git a/extensions/46/hibernate-status/locale/pl/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/pl/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..57b735c
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/pl/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,71 @@
+# Polish translation of hibernate-status-button
+# Copyright (C) 2022 tebaranowski
+# This file is distributed under the same license as the hibernate-status-button package.
+# tebaranowski <tomasz.baranowski@int.pl>, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2022-11-01 20:31+0200\n"
+"Last-Translator: tebaranowski <tomasz.baranowski@int.pl>\n"
+"Language-Team: Polish <tomasz.baranowski@int.pl>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Hibernacja"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Uśpienie hybrydowe"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Czy na pewno chcesz zahibernować system?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Nie odnaleziono systemd"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Brak zainstalowanego systemd, wymaganego do hibernacji"
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Wyłącz rozszerzenie"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Hibernacja nie powiodła się"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Wygląda na to, że hibernacja się nie powiodła.\n"
+"W niektórych dystrybucjach Linuksa hibernacja jest wyłączona,\n"
+"ponieważ nie każdy sprzęt poprawnie ją obsługuje.\n"
+"Sprawdź jak ją włączyć w dokumentacji swojej\n"
+"dystrybucji."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Nie sprawdzaj tego ponownie!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "To rozszerzenie nie posiada możliwości zmiany ustawień"
diff --git a/extensions/46/hibernate-status/locale/pt/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/pt/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..143129c
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/pt/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,71 @@
+# Portuguese translation of hibernate-status-button
+# Copyright (C) 2021 p91paul
+# This file is distributed under the same license as the hibernate-status-button package.
+# mantonelli <matheus.antonelli@gmail.com>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2022-10-22 21:30+0200\n"
+"Last-Translator: mantonelli <matheus.antonelli@gmail.com>\n"
+"Language-Team: Portuguese <matheus.antonelli@gmail.com>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Hibernar"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Suspensão Híbrida"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Deseja realmente hibernar o sistema?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Systemd não está instalado"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Systemd não está instalado e é necessário"
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Desabilitar extensão"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Hibernação falhou"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Parece que a hibernação falhou.\n"
+"Em algumas distribuições Linux a hibernação é desabilitada\n"
+"já que nem todo hardware oferece suporte adequado à ela;\n"
+"Confira a documentação de sua distribuição\n"
+"para aprender como habilitá-la."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Você errou! Não selecione isso novamente!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Essa extensão não possui configurações disponíveis"
diff --git a/extensions/46/hibernate-status/locale/pt_BR/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/pt_BR/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..326481a
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/pt_BR/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,73 @@
+# Portuguese translation of hibernate-status-button
+# Copyright (C) 2021 p91paul
+# This file is distributed under the same license as the hibernate-status-button package.
+# mantonelli <matheus.antonelli@gmail.com>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2022-10-22 21:30+0200\n"
+"Last-Translator: Fabrício Müller <fabricio8800@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <fabricio8800@gmail.com>\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: Poedit 3.0.1\n"
+
+#: confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Hibernar"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Suspensão Híbrida"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Deseja realmente hibernar o sistema?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Systemd não está instalado"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Systemd não está instalado e é necessário."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Desabilitar extensão"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Hibernação falhou"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Parece que a hibernação falhou.\n"
+"Em algumas distribuições Linux a hibernação é desabilitada\n"
+"já que nem todo hardware oferece suporte adequado à ela;\n"
+"Confira a documentação de sua distribuição\n"
+"para aprender como habilitá-la."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Você errou! Não selecione isso novamente!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Essa extensão não possui configurações disponíveis"
diff --git a/extensions/46/hibernate-status/locale/ru/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/ru/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..c55e2c6
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/ru/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,76 @@
+# Russian translation of hibernate-status-button
+# Copyright (C) 2021 Serhii Riznychenko
+# Updated 2023 Dmitriy Sevastyuk
+# This file is distributed under the same license as the hibernate-status-button package.
+# Serhii Riznychenko, 2021.
+# Dmitriy Sevastyuk, 2023.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2023-04-01 07:00+0300\n"
+"Last-Translator: Dmitriy Sevastyuk\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"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
+"X-Generator: Poedit 3.0\n"
+"X-Poedit-Basepath: .\n"
+
+#: extension.js:189 confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Режим гибернации"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Гибридный сон"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Вы действительно хотите перевести систему в режим гибернации?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Отмена"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Не обнаружено systemd"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Кажется отсутствует systemd, но он необходим."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Отключить расширение"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Не удалось перевести систему в режим гибернации"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Похоже, перевод системы в режим гибернации завершился неудачей.\n"
+"На некоторых дистрибутивах режим гибернации отключён,\n"
+"так как не всё оборудование должным образом его поддерживает;\n"
+"пожалуйста, обратитесь к документации своего дистрибутива\n"
+"чтобы узнать как его включить."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Вы ошиблись, пожалуйста не трогайте это!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Это расширение не имеет параметров"
diff --git a/extensions/46/hibernate-status/locale/uk/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/uk/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..68c6b8c
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/uk/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,74 @@
+# Ukrainian translation of hibernate-status-button
+# Copyright (C) 2021 Serhii Riznychenko
+# This file is distributed under the same license as the hibernate-status-button package.
+# Serhii Riznychenko, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-04-11 18:31+0200\n"
+"PO-Revision-Date: 2021-11-11 02:00+0200\n"
+"Last-Translator: Serhii Riznychenko\n"
+"Language-Team: Ukraine\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
+"X-Generator: Poedit 3.0\n"
+"X-Poedit-Basepath: .\n"
+
+#: extension.js:189 confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "Перейти в сон"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "Перейти в гібридний сон"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "Ви дійсно хочете перевести систему в режим сну?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "Відміна"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "Не виявлено systemd"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "Здається відсутній systemd, необхідний режиму сну."
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "Вимкнути розширення"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "Не вдалося перевести систему в сон"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr ""
+"Спроба перевести систему в сон завершилася невдачею.\n"
+"На деяких дистрибутивах режим сну вимкнено\n"
+"оскільки не кожне обладнання має його підтримку,\n"
+"Будь ласка, зверніться до документації свого дистрибутива\n"
+"щоб дізнатися, як його включити."
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "Ви помилилися, будь ласка, не чіпайте це!"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "Це розширення не містить параметрів"
diff --git a/extensions/46/hibernate-status/locale/zh_CN/LC_MESSAGES/hibernate-status-button.po b/extensions/46/hibernate-status/locale/zh_CN/LC_MESSAGES/hibernate-status-button.po
new file mode 100644
index 0000000..d6a6ebe
--- /dev/null
+++ b/extensions/46/hibernate-status/locale/zh_CN/LC_MESSAGES/hibernate-status-button.po
@@ -0,0 +1,67 @@
+# Simplified Chinese translation of hibernate-status-button
+# Copyright (C) 2019 zhmars
+# This file is distributed under the same license as the hibernate-status-button package.
+# zhmars <1403122061@qq.com>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate Status Button\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-11-22 00:08+0800\n"
+"PO-Revision-Date: 2019-11-21 20:00+0800\n"
+"Last-Translator: zhmars <1403122061@qq.com>\n"
+"Language-Team: Chinese (Simplified) <>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: extension.js:189 confirmDialog.js:23 confirmDialog.js:32
+msgid "Hibernate"
+msgstr "休眠"
+
+#: extension.js:192
+msgid "Hybrid Sleep"
+msgstr "混合睡眠"
+
+#: confirmDialog.js:24
+msgid "Do you really want to hibernate the system?"
+msgstr "确定要休眠系统吗?"
+
+#: confirmDialog.js:27 confirmDialog.js:44 confirmDialog.js:67
+msgid "Cancel"
+msgstr "取消"
+
+#: confirmDialog.js:40
+msgid "Hibernate button: Systemd Missing"
+msgstr "无法找到 Systemd"
+
+#: confirmDialog.js:41
+msgid "Systemd seems to be missing and is required."
+msgstr "本功能依赖 Systemd,但目前无法找到。"
+
+#: confirmDialog.js:49 confirmDialog.js:72
+msgid "Disable Extension"
+msgstr "禁用扩展"
+
+#: confirmDialog.js:58
+msgid "Hibernate button: Hibernate failed"
+msgstr "休眠失败"
+
+#: confirmDialog.js:59
+msgid ""
+"Looks like hibernation failed.\n"
+"On some linux distributions hibernation is disabled\n"
+"because not all hardware supports it well;\n"
+"please check your distribution documentation\n"
+"on how to enable it."
+msgstr "休眠好像失败了。由于不是所有硬件都对该功能支持良好,"
+"某些发行版默认禁用了休眠,关于如何启用请查阅你所用的发行版文档"
+
+#: confirmDialog.js:64
+msgid "You are wrong, don't check this anymore!"
+msgstr "忽略本项检查"
+
+#: prefs.js:99
+msgid "This extension has no settings available"
+msgstr "这个扩展没有可用的设置" \ No newline at end of file
diff --git a/extensions/46/hibernate-status/metadata.json b/extensions/46/hibernate-status/metadata.json
new file mode 100644
index 0000000..581fb2c
--- /dev/null
+++ b/extensions/46/hibernate-status/metadata.json
@@ -0,0 +1,9 @@
+{
+ "uuid": "hibernate-status@dromi",
+ "name": "Hibernate Status Button",
+ "url": "https://github.com/arelange/gnome-shell-extension-hibernate-status",
+ "description": "Adds a Hibernate button in Status menu. Using Alt modifier, you can also select Hybrid Sleep instead.",
+ "shell-version": ["45", "46"],
+ "gettext-domain": "hibernate-status-button",
+ "settings-schema": "org.gnome.shell.extensions.hibernate-status-button"
+}
diff --git a/extensions/46/hibernate-status/prefs.js b/extensions/46/hibernate-status/prefs.js
new file mode 100644
index 0000000..1407a6b
--- /dev/null
+++ b/extensions/46/hibernate-status/prefs.js
@@ -0,0 +1,171 @@
+import Gio from 'gi://Gio';
+import Gtk from 'gi://Gtk';
+import Adw from 'gi://Adw';
+// Use __() and N__() for the extension gettext domain, and reuse
+// the shell domain with the default _() and N_()
+
+import {
+ ExtensionPreferences,
+ gettext as __,
+} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
+const N__ = function (e) {
+ return e;
+};
+
+export default class Prefs extends ExtensionPreferences {
+ /**
+ * Creates a new Settings-object to access the settings of this extension.
+ * @private
+ */
+ constructor(metadata) {
+ super(metadata);
+ this.KEY_HIBERNATE_WORKS_CHECK = 'hibernate-works-check';
+ this._schemaName = 'org.gnome.shell.extensions.hibernate-status-button';
+ this._setting = this.getSettings()
+ }
+ /**
+ * <p>Binds the given 'callback'-function to the "changed"-signal on the given
+ * key.</p>
+ * <p>The 'callback'-function is passed an argument which holds the new
+ * value of 'key'. The argument is of type "GLib.Variant". Given that the
+ * receiver knows the internal type, use one of the get_XX()-methods to get
+ * it's actual value.</p>
+ * @see http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/GLib.Variant.html
+ * @param key the key to watch for changes.
+ * @param callback the callback-function to call.
+ */
+ bindKey(key, callback) {
+ // Validate:
+ if (key === undefined || key === null || typeof key !== 'string') {
+ throw TypeError("The 'key' should be a string. Got: '" + key + "'");
+ }
+ if (
+ callback === undefined ||
+ callback === null ||
+ typeof callback !== 'function'
+ ) {
+ throw TypeError(
+ "'callback' needs to be a function. Got: " + callback
+ );
+ }
+ // Bind:
+ this._setting.connect('changed::' + key, function (source, key) {
+ callback(source.get_value(key));
+ });
+ }
+ /**
+ * Get if check for working hibernation is enabled. The user might
+ * choose to disable it if we happen to be wrong.
+ *
+ * @returns bool true if we need to check if hibernation works.
+ */
+ getHibernateWorksCheckEnabled() {
+ return this._setting.get_boolean(this.KEY_HIBERNATE_WORKS_CHECK);
+ }
+ /**
+ * Set if check for working hibernation is enabled. The user might
+ * choose to disable it if we happen to be wrong.
+ *
+ * @returns bool true if we need to check if hibernation works.
+ */
+ setHibernateWorksCheckEnabled(enabled) {
+ let key = this.KEY_HIBERNATE_WORKS_CHECK;
+ if (this._setting.is_writable(key)) {
+ if (this._setting.set_boolean(key, enabled)) {
+ Gio.Settings.sync();
+ } else {
+ throw this._errorSet(key);
+ }
+ } else {
+ throw this._errorWritable(key);
+ }
+ }
+ _errorWritable(key) {
+ return "The key '" + key + "' is not writable.";
+ }
+ _errorSet(key) {
+ return "Couldn't set the key '" + key + "'";
+ }
+ fillPreferencesWindow(window) {
+ const page = new Adw.PreferencesPage({
+ title: __('General'),
+ icon_name: 'dialog-information-symbolic',
+ });
+ window.add(page);
+
+ const modes_group = new Adw.PreferencesGroup({
+ title: __('Modes'),
+ description: __('Which buttons should be enabled'),
+ });
+ page.add(modes_group);
+
+ const suspend_row = new Adw.SwitchRow({
+ title: __('Suspend'),
+ subtitle: __('Not implemented yet'),
+ });
+ modes_group.add(suspend_row);
+ const hibernate_row = new Adw.SwitchRow({
+ title: __('Hibernate'),
+ });
+ modes_group.add(hibernate_row);
+ const hybrid_row = new Adw.SwitchRow({
+ title: __('Hybrid sleep'),
+ });
+ modes_group.add(hybrid_row);
+ const suspend_then_hibernate_row = new Adw.SwitchRow({
+ title: __('Suspend then hibernate'),
+ });
+ modes_group.add(suspend_then_hibernate_row);
+ const restart_row = new Adw.SwitchRow({
+ title: __('Restart...'),
+ subtitle: __('Not implemented yet'),
+ });
+ modes_group.add(restart_row);
+ const shutdown_row = new Adw.SwitchRow({
+ title: __('Shutdown...'),
+ subtitle: __('Not implemented yet'),
+ });
+ modes_group.add(shutdown_row);
+
+ const dialog_group = new Adw.PreferencesGroup({
+ title: __('Dialogs'),
+ description: __('Which dialogs should be enabled'),
+ });
+ page.add(dialog_group);
+
+ const hibernate_dialog_row = new Adw.SwitchRow({
+ title: __('Hibernate'),
+ });
+ dialog_group.add(hibernate_dialog_row);
+ const hybrid_dialog_row = new Adw.SwitchRow({
+ title: __('Hybrid sleep'),
+ subtitle: __('Not implemented yet'),
+ });
+ dialog_group.add(hybrid_dialog_row);
+ const suspend_then_hibernate_dialog_row = new Adw.SwitchRow({
+ title: __('Suspend then hibernate'),
+ subtitle: __('Not implemented yet'),
+ });
+ dialog_group.add(suspend_then_hibernate_dialog_row);
+
+ window._settings = this.getSettings();
+ window._settings.bind('show-suspend', suspend_row, 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ window._settings.bind('show-hibernate', hibernate_row, 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ window._settings.bind('show-hybrid-sleep', hybrid_row, 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ window._settings.bind('show-suspend-then-hibernate', suspend_then_hibernate_row, 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ window._settings.bind('show-restart', restart_row, 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ window._settings.bind('show-shutdown', shutdown_row, 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ window._settings.bind('show-hibernate-dialog', hibernate_dialog_row, 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ window._settings.bind('show-hybrid-sleep-dialog', hybrid_dialog_row, 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ window._settings.bind('show-suspend-then-hibernate-dialog', suspend_then_hibernate_dialog_row, 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ }
+}
diff --git a/extensions/46/hibernate-status/schemas/org.gnome.shell.extensions.hibernate-status-button.gschema.xml b/extensions/46/hibernate-status/schemas/org.gnome.shell.extensions.hibernate-status-button.gschema.xml
new file mode 100644
index 0000000..242d9cc
--- /dev/null
+++ b/extensions/46/hibernate-status/schemas/org.gnome.shell.extensions.hibernate-status-button.gschema.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist gettext-domain="hibernate-status-button">
+ <schema path="/org/gnome/shell/extensions/hibernate-status-button/" id="org.gnome.shell.extensions.hibernate-status-button">
+ <key type="b" name="hibernate-works-check">
+ <default>true</default>
+ </key>
+ <key type="b" name="show-suspend">
+ <default>true</default>
+ </key>
+ <key type="b" name="show-hibernate">
+ <default>true</default>
+ </key>
+ <key type="b" name="show-hybrid-sleep">
+ <default>true</default>
+ </key>
+ <key type="b" name="show-suspend-then-hibernate">
+ <default>true</default>
+ </key>
+ <key type="b" name="show-restart">
+ <default>true</default>
+ </key>
+ <key type="b" name="show-shutdown">
+ <default>true</default>
+ </key>
+ <key type="b" name="show-hibernate-dialog">
+ <default>true</default>
+ </key>
+ <key type="b" name="show-hybrid-sleep-dialog">
+ <default>false</default>
+ </key>
+ <key type="b" name="show-suspend-then-hibernate-dialog">
+ <default>false</default>
+ </key>
+ </schema>
+</schemalist>