gconf-settings/skel/.local/share/gnome-shell/extensions/unite@hardpixel.eu/modules/desktopName.js

74 lines
1.9 KiB
JavaScript

const Shell = imports.gi.Shell
const Main = imports.ui.main
const Unite = imports.misc.extensionUtils.getCurrentExtension()
const Base = Unite.imports.module.BaseModule
const DesktopLabel = Unite.imports.panel.DesktopLabel
var DesktopName = class DesktopName extends Base {
_onSetup() {
this._enableKey = 'show-desktop-name'
this._enableValue = true
}
_onInitialize() {
this.appSystem = Shell.AppSystem.get_default()
this.winTracker = Shell.WindowTracker.get_default()
}
_onActivate() {
this._signals.connect(this.appSystem, 'app-state-changed', 'toggleLabel')
this._signals.connect(this.winTracker, 'notify::focus-app', 'toggleLabel')
this._signals.connect(Main.overview, 'showing', 'toggleLabel')
this._signals.connect(Main.overview, 'hiding', 'toggleLabel')
this._settings.connect('desktop-name-text', 'setLabelText')
this._createLabel()
}
_onDeactivate() {
if (!this._label) return
this._label.destroy()
this._label = null
}
_visibleWindows() {
let windows = global.get_window_actors().find(win => {
let visible = win.metaWindow.showing_on_its_workspace()
let skipped = win.metaWindow.skip_taskbar
return visible && !skipped
})
return windows
}
_setLabelText() {
let text = this._settings.get('desktop-name-text')
this._label.setText(text)
}
_toggleLabel() {
let appMenu = Main.panel.statusArea.appMenu._targetApp != null
let overview = Main.overview.visibleTarget
let visible = !appMenu && !overview
if (visible)
visible = visible && !this._visibleWindows()
this._label.setVisible(visible)
}
_createLabel() {
if (this._label) return
this._label = new DesktopLabel()
Main.panel.addToStatusArea('uniteDesktopLabel', this._label, 1, 'left')
this._setLabelText()
this._toggleLabel()
}
}