Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Main = imports.ui.main
- const PanelMenu = imports.ui.panelMenu
- const PopupMenu = imports.ui.popupMenu
- const St = imports.gi.St
- const Lang = imports.lang
- const Meta = imports.gi.Meta
- const Shell = imports.gi.Shell
- const Util = imports.misc.util
- const ExtensionUtils = imports.misc.extensionUtils;
- /*Menu Functions \/*/
- function _aboutThisPoppy() {
- Util.spawn(['gnome-control-center', 'info'])
- }
- function _softwareUpdate() {
- Util.spawn(['update-manager'])
- }
- function _appStore() {
- Util.spawn(['gnome-software'])
- }
- function _missionControl() {
- Main.overview.toggle();
- }
- function _systemPreferences() {
- Util.spawn(['gnome-control-center', '--overview'])
- }
- function _forceQuit() {
- Util.spawn(['xkill'])
- }
- function _sleep() {
- Util.spawn(['systemctl', 'suspend'])
- }
- function _restart() {
- Util.spawn(['systemctl', 'reboot'])
- }
- function _shutdown() {
- Util.spawn(['systemctl', 'poweroff'])
- }
- function _logOut() {
- Util.spawn(['gnome-session-quit', '--no-prompt'])
- }
- /*Menu Functions /\*/
- /*Poppy Button Class \/*/
- /*
- function _hover() {
- button.actor.remove_actor(icon)
- const icon_hover = new St.Icon({
- style_class: 'poppy-button-hover'
- })
- button.actor.add_actor(icon_hover)
- }
- */
- const PoppyButton = new Lang.Class({
- Name: "PoppyButton",
- Extends: PanelMenu.Button,
- _init: function () {
- this.parent(null, "PoppyButton")
- // Icon
- this.icon = new St.Icon({
- reactive: true,
- track_hover: true,
- style_class: 'poppy-button'
- })
- this.actor.add_actor(this.icon)
- // Menu
- this.item1 = new PopupMenu.PopupMenuItem('About This Poppy')
- this.item2 = new PopupMenu.PopupMenuItem('Software Update...')
- this.item3 = new PopupMenu.PopupMenuItem('App Store...')
- this.item4 = new PopupMenu.PopupSeparatorMenuItem()
- this.item5 = new PopupMenu.PopupMenuItem('Mission Control...')
- this.item6 = new PopupMenu.PopupMenuItem('System Preferences...')
- this.item7 = new PopupMenu.PopupSeparatorMenuItem()
- this.item8 = new PopupMenu.PopupMenuItem('Force Quit...')
- this.item9 = new PopupMenu.PopupSeparatorMenuItem()
- this.item10 = new PopupMenu.PopupMenuItem('Sleep')
- this.item11 = new PopupMenu.PopupMenuItem('Restart...')
- this.item12 = new PopupMenu.PopupMenuItem('Shut Down...')
- this.item13 = new PopupMenu.PopupSeparatorMenuItem()
- this.item14 = new PopupMenu.PopupMenuItem('Log Out...')
- this.item1.connect('activate', Lang.bind(this, _aboutThisPoppy))
- this.item2.connect('activate', Lang.bind(this, _softwareUpdate))
- this.item3.connect('activate', Lang.bind(this, _appStore))
- this.item5.connect('activate', Lang.bind(this, _missionControl))
- this.item6.connect('activate', Lang.bind(this, _systemPreferences))
- this.item8.connect('activate', Lang.bind(this, _forceQuit))
- this.item10.connect('activate', Lang.bind(this, _sleep))
- this.item11.connect('activate', Lang.bind(this, _restart))
- this.item12.connect('activate', Lang.bind(this, _shutdown))
- this.item14.connect('activate', Lang.bind(this, _logOut))
- this.menu.addMenuItem(this.item1)
- this.menu.addMenuItem(this.item2)
- this.menu.addMenuItem(this.item3)
- this.menu.addMenuItem(this.item4)
- this.menu.addMenuItem(this.item5)
- this.menu.addMenuItem(this.item6)
- this.menu.addMenuItem(this.item7)
- this.menu.addMenuItem(this.item8)
- this.menu.addMenuItem(this.item9)
- this.menu.addMenuItem(this.item10)
- this.menu.addMenuItem(this.item11)
- this.menu.addMenuItem(this.item12)
- this.menu.addMenuItem(this.item13)
- this.menu.addMenuItem(this.item14)
- }
- })
- /*Poppy Button Class /\*/
- /*Disable all HotCorners Function \/*/
- let _id;
- function _disable_hot_corners() {
- Main.layoutManager.hotCorners.forEach(function(hot_corner) {
- if (!hot_corner) {
- return;
- }
- hot_corner._toggleOverview = function() {};
- hot_corner._pressureBarrier._trigger = function() {};
- });
- }
- /*Disable all HotCorners Function /\*/
- function init() {
- }
- function enable() {
- /*Hide activities button \/*/
- const activitiesButton = Main.panel.statusArea['activities']
- if (activitiesButton) {
- activitiesButton.container.hide()
- }
- /*Hide activities button /\*/
- /*Create Poppy button \/*/
- let indicator = new PoppyButton()
- Main.panel.addToStatusArea('poppyButton', indicator, 0, 'left')
- // change icon
- //Main.panel.statusArea['poppyButton'].icon.icon_name = "appointment-soon-symbolic"
- // show
- Main.panel.statusArea['poppyButton'].actor.visible = true
- /*Create Poppy button /\*/
- /*Disable all HotCorners \/*/
- _disable_hot_corners();
- // Hot corners may be re-created afterwards (for example, If there's a monitor change).
- // So we catch all changes.
- _id = Main.layoutManager.connect('hot-corners-changed', _disable_hot_corners);
- /*Disable all HotCorners /\*/
- }
- function disable() {
- /*Show activities button \/*/
- const activitiesButton = Main.panel.statusArea['activities']
- if (activitiesButton) {
- activitiesButton.container.show()
- }
- /*Show activities button /\*/
- /*Delete Poppy button \/*/
- Main.panel.statusArea['poppyButton'].destroy()
- /*Delete Poppy button /\*/
- /*Enable all HotCorners \/*/
- // Disconnects the callback and re-creates the hot corners
- Main.layoutManager.disconnect(_id);
- Main.layoutManager._updateHotCorners();
- /*Enable all HotCorners /\*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement