74 lines
1.9 KiB
JavaScript
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()
|
|
}
|
|
}
|