#
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
const Gio = imports.gi.Gio
|
||||
const GLib = imports.gi.GLib
|
||||
const St = imports.gi.St
|
||||
const Meta = imports.gi.Meta
|
||||
const Config = imports.misc.config
|
||||
const Unite = imports.misc.extensionUtils.getCurrentExtension()
|
||||
const Settings = Unite.imports.convenience.getSettings()
|
||||
|
||||
const USER_CONFIG = GLib.get_user_config_dir()
|
||||
const USER_STYLES = `${USER_CONFIG}/gtk-3.0/gtk.css`
|
||||
|
||||
var minorVersion = parseInt(Config.PACKAGE_VERSION.split('.')[1])
|
||||
|
||||
function fileExists(path) {
|
||||
return GLib.file_test(path, GLib.FileTest.EXISTS)
|
||||
}
|
||||
|
||||
function getUserStyles() {
|
||||
if (!fileExists(USER_STYLES)) return ''
|
||||
|
||||
let file = GLib.file_get_contents(USER_STYLES)
|
||||
let style = String.fromCharCode.apply(null, file[1])
|
||||
|
||||
return style.replace(/@import.*unite@hardpixel\.eu.*css['"]\);\n/g, '')
|
||||
}
|
||||
|
||||
function loadUserStyles(styles) {
|
||||
let existing = getUserStyles()
|
||||
GLib.file_set_contents(USER_STYLES, styles + existing)
|
||||
}
|
||||
|
||||
function getThemeContext() {
|
||||
return St.ThemeContext.get_for_stage(global.stage)
|
||||
}
|
||||
|
||||
function getTheme() {
|
||||
let context = getThemeContext()
|
||||
return context.get_theme()
|
||||
}
|
||||
|
||||
function getGioFile(filePath) {
|
||||
let absPath = GLib.build_filenamev([Unite.path, filePath])
|
||||
|
||||
if (fileExists(absPath))
|
||||
return Gio.file_new_for_path(absPath)
|
||||
}
|
||||
|
||||
function loadStyles(filePath) {
|
||||
let gioFile = getGioFile(filePath)
|
||||
if (!gioFile) return
|
||||
|
||||
let theme = getTheme()
|
||||
theme.load_stylesheet(gioFile)
|
||||
|
||||
return gioFile
|
||||
}
|
||||
|
||||
function unloadStyles(gioFile) {
|
||||
let theme = getTheme()
|
||||
theme.unload_stylesheet(gioFile)
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
function scaleSize(initialSize) {
|
||||
let context = getThemeContext()
|
||||
return initialSize * context.scale_factor
|
||||
}
|
||||
|
||||
function getWindowXID(win) {
|
||||
let desc = win.get_description() || ''
|
||||
let match = desc.match(/0x[0-9a-f]+/) || [null]
|
||||
|
||||
return match[0]
|
||||
}
|
||||
|
||||
function isWindow(win) {
|
||||
if (!win) return
|
||||
|
||||
let meta = Meta.WindowType
|
||||
let types = [meta.NORMAL, meta.DIALOG, meta.MODAL_DIALOG, meta.UTILITY]
|
||||
|
||||
return types.includes(win.window_type)
|
||||
}
|
||||
|
||||
function isMaximized(win, matchState) {
|
||||
if (!win) return
|
||||
|
||||
let flags = Meta.MaximizeFlags
|
||||
let maximized = win.get_maximized()
|
||||
let primaryScreen = win.is_on_primary_monitor() || !(Settings.getSetting('restrict-to-primary-screen'))
|
||||
let tileMaximized = maximized == flags.HORIZONTAL || maximized == flags.VERTICAL
|
||||
let fullMaximized = maximized == flags.BOTH
|
||||
let bothMaximized = fullMaximized || tileMaximized
|
||||
|
||||
switch (matchState) {
|
||||
case 'both': return primaryScreen && bothMaximized
|
||||
case 'maximized': return primaryScreen && fullMaximized
|
||||
case 'tiled': return primaryScreen && tileMaximized
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user