changes for the current iso
|
@ -52,7 +52,6 @@ ffmpegthumbnailer
|
|||
linux510-headers
|
||||
gnome-firmware
|
||||
manjaro-printer
|
||||
linux-latest
|
||||
rebuild-detector
|
||||
|
||||
|
||||
|
@ -102,7 +101,6 @@ gnome-font-viewer
|
|||
gnome-keyring
|
||||
fprintd #need for finger id reader
|
||||
gnome-session
|
||||
gnome-initial-setup
|
||||
gnome-settings-daemon
|
||||
gnome-shell
|
||||
gnome-system-log
|
||||
|
|
60
tromjaro/gnome/desktop-overlay/etc/default/grub
Normal file
|
@ -0,0 +1,60 @@
|
|||
GRUB_DEFAULT=saved
|
||||
GRUB_TIMEOUT=5
|
||||
GRUB_TIMEOUT_STYLE=hidden
|
||||
GRUB_DISTRIBUTOR="TROMjaro"
|
||||
GRUB_CMDLINE_LINUX_DEFAULT="quiet udev.log_priority=3"
|
||||
GRUB_CMDLINE_LINUX=""
|
||||
|
||||
# If you want to enable the save default function, uncomment the following
|
||||
# line, and set GRUB_DEFAULT to saved.
|
||||
GRUB_SAVEDEFAULT=true
|
||||
|
||||
# Preload both GPT and MBR modules so that they are not missed
|
||||
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
|
||||
|
||||
# Uncomment to enable booting from LUKS encrypted devices
|
||||
#GRUB_ENABLE_CRYPTODISK=y
|
||||
|
||||
# Uncomment to use basic console
|
||||
GRUB_TERMINAL_INPUT=console
|
||||
|
||||
# Uncomment to disable graphical terminal
|
||||
#GRUB_TERMINAL_OUTPUT=console
|
||||
|
||||
# The resolution used on graphical terminal
|
||||
# note that you can use only modes which your graphic card supports via VBE
|
||||
# you can see them in real GRUB with the command 'videoinfo'
|
||||
GRUB_GFXMODE=auto
|
||||
|
||||
# Uncomment to allow the kernel use the same resolution used by grub
|
||||
GRUB_GFXPAYLOAD_LINUX=keep
|
||||
|
||||
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
|
||||
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
|
||||
#GRUB_DISABLE_LINUX_UUID=true
|
||||
|
||||
# Uncomment to disable generation of recovery mode menu entries
|
||||
GRUB_DISABLE_RECOVERY=true
|
||||
|
||||
# Uncomment this option to enable os-prober execution in the grub-mkconfig command
|
||||
GRUB_DISABLE_OS_PROBER=false
|
||||
|
||||
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
|
||||
# modes only. Entries specified as foreground/background.
|
||||
GRUB_COLOR_NORMAL="light-gray/black"
|
||||
GRUB_COLOR_HIGHLIGHT="green/black"
|
||||
|
||||
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
|
||||
#GRUB_BACKGROUND="/usr/share/grub/background.png"
|
||||
#GRUB_THEME="/path/to/gfxtheme"
|
||||
|
||||
# Uncomment to get a beep at GRUB start
|
||||
#GRUB_INIT_TUNE="480 440 1"
|
||||
|
||||
# Uncomment to ensure that the root filesystem is mounted read-only so that
|
||||
# systemd-fsck can run the check automatically. We use 'fsck' by default, which
|
||||
# needs 'rw' as boot parameter, to avoid delay in boot-time. 'fsck' needs to be
|
||||
# removed from 'mkinitcpio.conf' to make 'systemd-fsck' work.
|
||||
# See also Arch-Wiki: https://wiki.archlinux.org/index.php/Fsck#Boot_time_checking
|
||||
#GRUB_ROOT_FS_RO=true
|
||||
|
|
@ -23,13 +23,162 @@ const { Atk, St, GObject, GLib } = imports.gi;
|
|||
|
||||
const Gvc = imports.gi.Gvc;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Config = imports.misc.config;
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
const Lib = Me.imports.convenience;
|
||||
const _d = Lib._log;
|
||||
const Prefs = Me.imports.prefs;
|
||||
const SignalManager = Lib.SignalManager;
|
||||
|
||||
let maxId = -1;
|
||||
function _isDeviceInValid(uidevice) {
|
||||
return (!uidevice || (uidevice.description != null && uidevice.description.match(/Dummy\s+(Output|Input)/gi)));
|
||||
}
|
||||
|
||||
function getMixerControl() {
|
||||
return VolumeMenu.getMixerControl();
|
||||
}
|
||||
|
||||
var ProfileMenuItem = class ProfileMenuItem
|
||||
extends PopupMenu.PopupMenuItem {
|
||||
constructor(id, title, profileName, callback) {
|
||||
super(title);
|
||||
this._init(id, title, profileName, callback);
|
||||
}
|
||||
|
||||
_init(id, title, profileName, callback) {
|
||||
if (super._init) {
|
||||
super._init(title);
|
||||
}
|
||||
_d("ProfileMenuItem: _init:" + title);
|
||||
this.id = id;
|
||||
this.profileName = profileName;
|
||||
this._ornamentLabel.set_style("min-width: 3em;margin-left: 3em;");
|
||||
this.setProfileActive(false);
|
||||
this.connect('activate', () => {
|
||||
_d("Activating Profile:" + id + profileName);
|
||||
callback(this.id, this.profileName);
|
||||
});
|
||||
}
|
||||
|
||||
setProfileActive(active) {
|
||||
if (active) {
|
||||
this.setOrnament(PopupMenu.Ornament.DOT);
|
||||
// this._ornamentLabel.text = "\u2727";
|
||||
this._ornamentLabel.text = "\u266A";
|
||||
if (this.add_style_pseudo_class) {
|
||||
this.remove_style_pseudo_class('insensitive');
|
||||
}
|
||||
else {
|
||||
this.actor.remove_style_pseudo_class('insensitive');
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.setOrnament(PopupMenu.Ornament.NONE);
|
||||
if (this.add_style_pseudo_class) {
|
||||
this.add_style_pseudo_class('insensitive');
|
||||
}
|
||||
else {
|
||||
this.actor.add_style_pseudo_class('insensitive');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setVisibility(visibility) {
|
||||
this.actor.visible = visibility;
|
||||
}
|
||||
}
|
||||
|
||||
var SoundDeviceMenuItem = class SoundDeviceMenuItem extends PopupMenu.PopupImageMenuItem {
|
||||
constructor(id, title, icon_name, profiles, callback, profileCallback) {
|
||||
super(title, icon_name);
|
||||
this._init(id, title, icon_name, profiles, callback, profileCallback);
|
||||
}
|
||||
|
||||
_init(id, title, icon_name, profiles, callback, profileCallback) {
|
||||
if (super._init) {
|
||||
super._init(title, icon_name);
|
||||
}
|
||||
_d("SoundDeviceMenuItem: _init:" + title);
|
||||
this.id = id;
|
||||
this.title = title;
|
||||
this.icon_name = icon_name;
|
||||
this.profiles = (profiles) ? profiles : [];
|
||||
|
||||
this.profilesitems = new Map();
|
||||
for (let profile of this.profiles) {
|
||||
if (!this.profilesitems.has(profile.name)) {
|
||||
this.profilesitems.set(profile.name, new ProfileMenuItem(id, "Profile: " + profile.human_name, profile.name, profileCallback));
|
||||
}
|
||||
}
|
||||
|
||||
this.connect('activate', () => {
|
||||
_d("Device Change request for " + id);
|
||||
callback(this.id);
|
||||
});
|
||||
this.available = true;
|
||||
this.activeProfile = "";
|
||||
this.activeDevice = false;
|
||||
this.visible = false;
|
||||
}
|
||||
|
||||
isAvailable() {
|
||||
return this.available;
|
||||
}
|
||||
|
||||
setAvailable(_ac) {
|
||||
this.available = _ac;
|
||||
}
|
||||
|
||||
setActiveProfile(_p) {
|
||||
if (_p && this.activeProfile != _p) {
|
||||
if (this.profilesitems.has(this.activeProfile)) {
|
||||
this.profilesitems.get(this.activeProfile).setProfileActive(false);
|
||||
}
|
||||
this.activeProfile = _p;
|
||||
if (this.profilesitems.has(_p)) {
|
||||
this.profilesitems.get(_p).setProfileActive(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setVisibility(_v) {
|
||||
this.actor.visible = _v;
|
||||
if (!_v) {
|
||||
this.profilesitems.forEach((p) => p.setVisibility(false));
|
||||
}
|
||||
this.visible = _v;
|
||||
};
|
||||
|
||||
isVisible() {
|
||||
return this.visible;
|
||||
}
|
||||
|
||||
setActiveDevice(_a) {
|
||||
this.activeDevice = _a;
|
||||
if (!_a) {
|
||||
this.setOrnament(PopupMenu.Ornament.NONE);
|
||||
}
|
||||
else {
|
||||
this.setOrnament(PopupMenu.Ornament.CHECK);
|
||||
this._ornamentLabel.text = '\u266B';
|
||||
}
|
||||
}
|
||||
|
||||
setProfileVisibility(_v) {
|
||||
this.profilesitems.forEach(p =>
|
||||
p.setVisibility(_v && this.canShowProfile()));
|
||||
}
|
||||
|
||||
canShowProfile() {
|
||||
return (this.isVisible() && this.profilesitems.size > 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (parseFloat(Config.PACKAGE_VERSION) >= 3.34) {
|
||||
ProfileMenuItem = GObject.registerClass({ GTypeName: 'ProfileMenuItem' }, ProfileMenuItem);
|
||||
|
||||
SoundDeviceMenuItem = GObject.registerClass({ GTypeName: 'SoundDeviceMenuItem' }, SoundDeviceMenuItem);
|
||||
}
|
||||
|
||||
var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
||||
|
||||
|
@ -37,37 +186,35 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
|||
_d("SDC: init");
|
||||
this.menuItem = new PopupMenu.PopupSubMenuMenuItem('Extension initialising...', true);
|
||||
this.deviceType = deviceType;
|
||||
this._devices = {};
|
||||
this._cards = [];
|
||||
this._availableDevicesIds = {};
|
||||
this._control = VolumeMenu.getMixerControl();
|
||||
this._devices = new Map();
|
||||
let _control = this._getMixerControl();
|
||||
this._settings = Lib.getSettings(Prefs.SETTINGS_SCHEMA);
|
||||
_d("Constructor" + deviceType);
|
||||
_d("Constructor:" + deviceType);
|
||||
|
||||
this._setLog();
|
||||
this._signalManager = new SignalManager();
|
||||
this._signalManager.addSignal(this._settings, "changed::" + Prefs.ENABLE_LOG, this._setLog.bind(this));
|
||||
|
||||
if (this._control.get_state() == Gvc.MixerControlState.READY) {
|
||||
this._onControlStateChanged();
|
||||
if (_control.get_state() == Gvc.MixerControlState.READY) {
|
||||
this._onControlStateChanged(_control);
|
||||
}
|
||||
else {
|
||||
this._controlStateChangeSignal = this._signalManager.addSignal(this._control, "state-changed", this._onControlStateChanged.bind(this));
|
||||
this._controlStateChangeSignal = this._signalManager.addSignal(_control, "state-changed", this._onControlStateChanged.bind(this));
|
||||
}
|
||||
}
|
||||
|
||||
_getMixerControl() { return getMixerControl(); }
|
||||
|
||||
_setLog() { Lib.setLog(this._settings.get_boolean(Prefs.ENABLE_LOG)); }
|
||||
|
||||
_onControlStateChanged() {
|
||||
if (this._control.get_state() == Gvc.MixerControlState.READY) {
|
||||
_onControlStateChanged(control) {
|
||||
if (control.get_state() == Gvc.MixerControlState.READY) {
|
||||
if (!this._initialised) {
|
||||
this._initialised = true;
|
||||
|
||||
this._signalManager.addSignal(this._control, this.deviceType + "-added", this._deviceAdded.bind(this));
|
||||
this._signalManager.addSignal(this._control, this.deviceType + "-removed", this._deviceRemoved.bind(this));
|
||||
this._signalManager.addSignal(this._control, "active-" + this.deviceType + "-update", this._deviceActivated.bind(this));
|
||||
this._signalManager.addSignal(this._control, "card-removed", this._updateCards.bind(this));
|
||||
this._signalManager.addSignal(this._control, "card-added", this._updateCards.bind(this));
|
||||
this._signalManager.addSignal(control, this.deviceType + "-added", this._deviceAdded.bind(this));
|
||||
this._signalManager.addSignal(control, this.deviceType + "-removed", this._deviceRemoved.bind(this));
|
||||
this._signalManager.addSignal(control, "active-" + this.deviceType + "-update", this._deviceActivated.bind(this));
|
||||
|
||||
this._signalManager.addSignal(this._settings, "changed::" + Prefs.HIDE_ON_SINGLE_DEVICE, this._setChooserVisibility.bind(this));
|
||||
this._signalManager.addSignal(this._settings, "changed::" + Prefs.SHOW_PROFILES, this._setProfileVisibility.bind(this));
|
||||
|
@ -79,7 +226,6 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
|||
|
||||
this._signalManager.addSignal(this._settings, "changed::" + this._show_device_signal, this._setVisibility.bind(this));
|
||||
|
||||
//this._portsSettings = JSON.parse(this._settings.get_string(Prefs.PORT_SETTINGS));
|
||||
this._portsSettings = Prefs.getPortsFromSettings(this._settings);
|
||||
|
||||
/**
|
||||
|
@ -91,33 +237,25 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
|||
*/
|
||||
|
||||
let id = 0;
|
||||
if (maxId < 0) {
|
||||
let dummyDevice = new Gvc.MixerUIDevice();
|
||||
maxId = dummyDevice.get_id();
|
||||
}
|
||||
|
||||
let dummyDevice = new Gvc.MixerUIDevice();
|
||||
let maxId = dummyDevice.get_id();
|
||||
|
||||
_d("Max Id:" + maxId);
|
||||
|
||||
let defaultDevice = this.getDefaultDevice();
|
||||
while (++id < maxId) {
|
||||
let uidevice = this._deviceAdded(this._control, id);
|
||||
if (uidevice) {
|
||||
let stream = this._control.get_stream_from_device(uidevice);
|
||||
if (stream) {
|
||||
let stream_port = stream.get_port();
|
||||
let uidevice_port = uidevice.get_port();
|
||||
|
||||
if (((!stream_port && !uidevice_port) ||
|
||||
(stream_port && stream_port.port === uidevice_port)) &&
|
||||
stream == defaultDevice) {
|
||||
this._deviceActivated(this._control, id);
|
||||
}
|
||||
}
|
||||
this._deviceAdded(control, id);
|
||||
}
|
||||
let defaultStream = this.getDefaultStream(control);
|
||||
if (defaultStream) {
|
||||
let defaultDevice = control.lookup_device_from_stream(defaultStream);
|
||||
if (defaultDevice) {
|
||||
this._deviceActivated(control, defaultDevice.get_id());
|
||||
}
|
||||
}
|
||||
//We dont have any way to understand that the profile has changed in the settings
|
||||
//Just an useless workaround and potentially crashes shell
|
||||
this.activeProfileTimeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 2000,
|
||||
this._setActiveProfile.bind(this));
|
||||
|
||||
let profileVisibility = this._settings.get_boolean(Prefs.SHOW_PROFILES);
|
||||
this._setProfileTimer(profileVisibility);
|
||||
|
||||
if (this._controlStateChangeSignal) {
|
||||
this._controlStateChangeSignal.disconnect();
|
||||
|
@ -128,197 +266,131 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
|||
}
|
||||
}
|
||||
|
||||
_updateCards(control, cardId) {
|
||||
this._cards = [];
|
||||
let cards = this._control.get_cards();
|
||||
for (let card of cards) {
|
||||
this._cards.push(card.index);
|
||||
_setProfileTimer(v) {
|
||||
//We dont have any way to understand that the profile has changed in the settings
|
||||
//Just an useless workaround
|
||||
if (v) {
|
||||
if (!this.activeProfileTimeout) {
|
||||
this.activeProfileTimeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 2000,
|
||||
this._setActiveProfile.bind(this));
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this.activeProfileTimeout) {
|
||||
GLib.source_remove(this.activeProfileTimeout);
|
||||
this.activeProfileTimeout = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_deviceAdded(control, id, dontcheck) {
|
||||
let obj = this._devices[id];
|
||||
let uidevice = null;
|
||||
|
||||
_d("Added - "+ id);
|
||||
_deviceAdded(control, id, dontcheck) {
|
||||
let obj = this._devices.get(id);
|
||||
let uidevice = this.lookupDeviceById(control, id);
|
||||
|
||||
_d("Added - " + id);
|
||||
|
||||
if (!obj) {
|
||||
uidevice = this.lookupDeviceById(id);
|
||||
if (!uidevice || uidevice.description.match(/Dummy\s+(Output|Input)/gi)) {
|
||||
if (_isDeviceInValid(uidevice)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
obj = new Object();
|
||||
obj.id = id;
|
||||
obj.uidevice = uidevice;
|
||||
obj.text = uidevice.description;
|
||||
let title = uidevice.description;
|
||||
if (uidevice.origin != "")
|
||||
obj.text += " - " + uidevice.origin;
|
||||
|
||||
/*
|
||||
* obj.item = this.menu.addAction( obj.text, function() {
|
||||
* this.changeDevice(uidevice); }.bind(this)); let icon =
|
||||
* uidevice.get_icon_name(); if(icon == null || icon.trim() == "")
|
||||
* icon = this.getDefaultIcon(); obj.item._icon = new St.Icon({
|
||||
* style_class: 'popup-menu-icon', icon_name: this._getIcon(icon)});
|
||||
* obj.item.actor.insert_child_at_index(obj.item._icon,1);
|
||||
*/
|
||||
title += " - " + uidevice.origin;
|
||||
|
||||
let icon = uidevice.get_icon_name();
|
||||
if (icon == null || icon.trim() == "")
|
||||
icon = this.getDefaultIcon();
|
||||
let icon_name = this._getIcon(icon);
|
||||
icon = this._getIcon(icon);
|
||||
|
||||
obj.item = this.menuItem.menu.addAction(obj.text, function() {
|
||||
_d("Device Change request");
|
||||
this.changeDevice(uidevice);
|
||||
}.bind(this), icon_name);
|
||||
obj = new SoundDeviceMenuItem(id, title, icon, Lib.getProfiles(control, uidevice), this._changeDeviceBase.bind(this), this._profileChangeCallback.bind(this));
|
||||
|
||||
if (!obj.profiles) {
|
||||
obj.profiles = Lib.getProfiles(control, uidevice);
|
||||
}
|
||||
this.menuItem.menu.addMenuItem(obj);
|
||||
obj.profilesitems.forEach(i => this.menuItem.menu.addMenuItem(i));
|
||||
|
||||
if (!obj.profilesitems) {
|
||||
obj.profilesitems = [];
|
||||
}
|
||||
this._devices[id] = obj;
|
||||
this._devices.set(id, obj);
|
||||
}
|
||||
else if (obj.isAvailable()) {
|
||||
return //uidevice;
|
||||
}
|
||||
else {
|
||||
uidevice = obj.uidevice;
|
||||
obj.setAvailable(true);
|
||||
}
|
||||
|
||||
_d("Device Name:" + obj.text);
|
||||
|
||||
if (obj.profiles) {
|
||||
for (let profile of obj.profiles) {
|
||||
_d("Profile:" + profile.name);
|
||||
}
|
||||
}
|
||||
|
||||
if (obj.active) {
|
||||
return uidevice;
|
||||
}
|
||||
_d("Device Name:" + obj.title);
|
||||
|
||||
_d("Added: " + id + ":" + uidevice.description + ":" + uidevice.port_name + ":" + uidevice.origin);
|
||||
if (!this._availableDevicesIds[id]) {
|
||||
this._availableDevicesIds[id] = 0;
|
||||
}
|
||||
this._availableDevicesIds[id]++;
|
||||
|
||||
obj.active = true;
|
||||
let stream = this._control.get_stream_from_device(uidevice);
|
||||
let stream = control.get_stream_from_device(uidevice);
|
||||
if (stream) {
|
||||
obj.activeProfile = uidevice.get_active_profile();
|
||||
obj.setActiveProfile(uidevice.get_active_profile());
|
||||
}
|
||||
else {
|
||||
obj.activeProfile = "";
|
||||
}
|
||||
//let showProfiles = this._settings.get_boolean(Prefs.SHOW_PROFILES);
|
||||
if (obj.profiles) {
|
||||
for (let profile of obj.profiles) {
|
||||
let profileItem = obj.profilesitems[profile.name];
|
||||
if (!profileItem) {
|
||||
let profileName = profile.name;
|
||||
profileItem = this.menuItem.menu.addAction("Profile: " + profile.human_name, function() {
|
||||
_d("i am setting profile, " + profile.human_name + ":" + uidevice.description + ":" + uidevice.port_name);
|
||||
let stream = this._control.get_stream_from_device(uidevice);
|
||||
//No Active stream probably inactive port
|
||||
if (!stream) {
|
||||
return;
|
||||
}
|
||||
if (this._activeDevice && this._activeDevice.uidevice !== uidevice) {
|
||||
_d("Changing active device to " + uidevice.description + ":" + uidevice.port_name);
|
||||
this.changeDevice(uidevice);
|
||||
}
|
||||
this._control.change_profile_on_selected_device(uidevice, profileName);
|
||||
this._setDeviceActiveProfile(obj);
|
||||
}.bind(this));
|
||||
|
||||
obj.profilesitems[profileName] = profileItem;
|
||||
profileItem.setProfileActive = function(active) {
|
||||
if (active) {
|
||||
// this._ornamentLabel.text = "\u2727";
|
||||
this._ornamentLabel.text = "\u266A";
|
||||
if (this.add_style_pseudo_class) {
|
||||
this.add_style_pseudo_class('checked');
|
||||
this.remove_style_pseudo_class('insensitive');
|
||||
}
|
||||
else {
|
||||
this.actor.add_style_pseudo_class('checked');
|
||||
this.actor.remove_style_pseudo_class('insensitive');
|
||||
}
|
||||
}
|
||||
else {
|
||||
this._ornamentLabel.text = "";
|
||||
if (this.add_style_pseudo_class) {
|
||||
this.remove_style_pseudo_class('checked');
|
||||
this.add_style_pseudo_class('insensitive');
|
||||
}
|
||||
else {
|
||||
this.actor.remove_style_pseudo_class('checked');
|
||||
this.actor.add_style_pseudo_class('insensitive');
|
||||
}
|
||||
}
|
||||
};
|
||||
// profileItem._ornamentLabel.width = "500em";
|
||||
profileItem._ornamentLabel.set_style("min-width: 3em;margin-left: 3em;");
|
||||
}
|
||||
profileItem.setProfileActive(obj.activeProfile == profile.name);
|
||||
}
|
||||
}
|
||||
if (!dontcheck && !this._canShowDevice(uidevice, uidevice.port_available)) {
|
||||
if (!dontcheck && !this._canShowDevice(control, uidevice, uidevice.port_available)) {
|
||||
this._deviceRemoved(control, id, true);
|
||||
}
|
||||
|
||||
this._setChooserVisibility();
|
||||
this._setVisibility();
|
||||
return uidevice;
|
||||
return //uidevice;
|
||||
}
|
||||
|
||||
_profileChangeCallback(id, profileName) {
|
||||
let control = this._getMixerControl();
|
||||
let uidevice = this.lookupDeviceById(control, id);
|
||||
if (!uidevice) {
|
||||
this._deviceRemoved(control, id);
|
||||
}
|
||||
else {
|
||||
_d("i am setting profile, " + profileName + ":" + uidevice.description + ":" + uidevice.port_name);
|
||||
if (id != this._activeDeviceId) {
|
||||
_d("Changing active device to " + uidevice.description + ":" + uidevice.port_name);
|
||||
this._changeDeviceBase(id, control);
|
||||
}
|
||||
control.change_profile_on_selected_device(uidevice, profileName);
|
||||
this._setDeviceActiveProfile(control, this._devices.get(id));
|
||||
}
|
||||
}
|
||||
|
||||
_deviceRemoved(control, id, dontcheck) {
|
||||
let obj = this._devices[id];
|
||||
//delete this._devices[id];
|
||||
if (obj && obj.active) {
|
||||
_d("Removed: " + id + ":" + obj.uidevice.description + ":" + obj.uidevice.port_name + ":" + obj.uidevice.origin);
|
||||
if (!dontcheck && this._canShowDevice(obj.uidevice, false)) {
|
||||
let obj = this._devices.get(id);
|
||||
//let uidevice = this.lookupDeviceById(control,id);
|
||||
if (obj && obj.isAvailable()) {
|
||||
_d("Removed: " + id + ":" + obj.title);
|
||||
/*
|
||||
if (!dontcheck && this._canShowDevice(control, uidevice, false)) {
|
||||
_d('Device removed, but not hiding as its set to be shown always');
|
||||
return;
|
||||
}
|
||||
delete this._availableDevicesIds[id];
|
||||
obj.item.actor.visible = false;
|
||||
obj.active = false;
|
||||
if (obj.profiles) {
|
||||
for (let profile of obj.profiles) {
|
||||
let profileItem = obj.profilesitems[profile.name];
|
||||
if (profileItem) {
|
||||
profileItem.actor.visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
obj.setVisibility(false);
|
||||
obj.setAvailable(false);
|
||||
|
||||
/*
|
||||
if (this.deviceRemovedTimout) {
|
||||
GLib.source_remove(this.deviceRemovedTimout);
|
||||
this.deviceRemovedTimout = null;
|
||||
}
|
||||
*/
|
||||
/**
|
||||
* If the active uidevice is removed, then need to activate the
|
||||
* first available uidevice. However for some cases like Headphones,
|
||||
* when the uidevice is removed, Speakers are automatically
|
||||
* activated. So, lets wait for sometime before activating.
|
||||
*/
|
||||
this.deviceRemovedTimout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1500, function() {
|
||||
_d("Device Removed timeout");
|
||||
if (obj === this._activeDevice) {
|
||||
for (let id in this._devices) {
|
||||
let device = this._devices[id];
|
||||
if (device.active == true) {
|
||||
this.changeDevice(device.uidevice);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.deviceRemovedTimout = null;
|
||||
return false;
|
||||
}.bind(this));
|
||||
/* THIS MAY NOT BE NEEDED AS SHELL SEEMS TO ACTIVATE NEXT DEVICE
|
||||
this.deviceRemovedTimout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1500, function() {
|
||||
_d("Device Removed timeout");
|
||||
if (obj === this._activeDevice) {
|
||||
let device = Object.keys(this._devices).map((id) => this._devices[id]).find(({active}) => active === true);
|
||||
if(device){
|
||||
this._changeDeviceBase(this._getMixerControl(), device.id);
|
||||
}
|
||||
}
|
||||
this.deviceRemovedTimout = null;
|
||||
return false;
|
||||
}.bind(this));
|
||||
*/
|
||||
this._setChooserVisibility();
|
||||
this._setVisibility();
|
||||
}
|
||||
|
@ -326,76 +398,77 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
|||
|
||||
_deviceActivated(control, id) {
|
||||
_d("Activated:- " + id);
|
||||
let obj = this._devices[id];
|
||||
if (obj && obj !== this._activeDevice) {
|
||||
_d("Activated: " + id + ":" + obj.uidevice.description + ":" + obj.uidevice.port_name + ":" + obj.uidevice.origin);
|
||||
if (this._activeDevice) {
|
||||
this._activeDevice.item.setOrnament(PopupMenu.Ornament.NONE);
|
||||
if (this._activeDevice.item.remove_style_pseudo_class) {
|
||||
this._activeDevice.item.remove_style_pseudo_class('checked');
|
||||
}
|
||||
else {
|
||||
this._activeDevice.item.actor.remove_style_pseudo_class('checked');
|
||||
}
|
||||
}
|
||||
this._activeDevice = obj;
|
||||
obj.item.setOrnament(PopupMenu.Ornament.CHECK);
|
||||
if (obj.item.add_style_pseudo_class) {
|
||||
obj.item.add_style_pseudo_class('checked');
|
||||
}
|
||||
else {
|
||||
obj.item.actor.add_style_pseudo_class('checked');
|
||||
let obj = this._devices.get(id);
|
||||
if (!obj) {
|
||||
_d("Activated device not found in the list of devices, try to add");
|
||||
this._deviceAdded(control, id);
|
||||
obj = this._devices.get(id);
|
||||
}
|
||||
if (obj && id != this._activeDeviceId) {
|
||||
_d("Activated: " + id + ":" + obj.title);
|
||||
if (this._activeDeviceId) {
|
||||
this._devices.get(this._activeDeviceId).setActiveDevice(false);
|
||||
}
|
||||
this._activeDeviceId = id;
|
||||
obj.setActiveDevice(true);
|
||||
|
||||
obj.item._ornamentLabel.text = '\u266B';
|
||||
this.menuItem.label.text = obj.text;
|
||||
this.menuItem.label.text = obj.title;
|
||||
|
||||
if (!this._settings.get_boolean(Prefs.HIDE_MENU_ICONS)) {
|
||||
let icon = obj.uidevice.get_icon_name();
|
||||
if (icon == null || icon.trim() == "")
|
||||
icon = this.getDefaultIcon();
|
||||
this.menuItem.icon.icon_name = this._getIcon(icon);
|
||||
this.menuItem.icon.icon_name = obj.icon_name;
|
||||
} else {
|
||||
this.menuItem.icon.gicon = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_setActiveProfile() {
|
||||
//_d("Setting Active Profile");
|
||||
/*for (let id in this._devices) {
|
||||
let device = this._devices[id];
|
||||
if (device.active) {
|
||||
this._setDeviceActiveProfile(device);
|
||||
}
|
||||
}*/
|
||||
if(this._activeDevice){
|
||||
this._setDeviceActiveProfile(this._activeDevice);
|
||||
_changeDeviceBase(id, control) {
|
||||
if (!control) {
|
||||
control = this._getMixerControl();
|
||||
}
|
||||
let uidevice = this.lookupDeviceById(control, id);
|
||||
if (uidevice) {
|
||||
this.changeDevice(control, uidevice);
|
||||
}
|
||||
else {
|
||||
this._deviceRemoved(control, id);
|
||||
}
|
||||
}
|
||||
|
||||
_setActiveProfile() {
|
||||
if (!this.menuItem._getOpenState()) {
|
||||
return;
|
||||
}
|
||||
let control = this._getMixerControl();
|
||||
//_d("Setting Active Profile");
|
||||
this._devices.forEach(device => {
|
||||
if (device.isAvailable()) {
|
||||
this._setDeviceActiveProfile(control, device);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
_setDeviceActiveProfile(device) {
|
||||
if (!device.uidevice.port_name || !this._availableDevicesIds[device.id]) {
|
||||
_setDeviceActiveProfile(control, device) {
|
||||
if (!device || !device.isAvailable()) {
|
||||
return;
|
||||
}
|
||||
let stream = this._control.get_stream_from_device(device.uidevice);
|
||||
if (stream) {
|
||||
return;
|
||||
|
||||
let uidevice = this.lookupDeviceById(control, device.id);
|
||||
if (!uidevice) {
|
||||
this._deviceRemoved(control, device.id);
|
||||
}
|
||||
let activeProfile = device.uidevice.get_active_profile();
|
||||
if (activeProfile && device.activeProfile != activeProfile) {
|
||||
device.activeProfile = activeProfile;
|
||||
for (let profile of device.profiles) {
|
||||
device.profilesitems[profile.name].setProfileActive(profile.name == device.activeProfile);
|
||||
}
|
||||
else {
|
||||
let activeProfile = uidevice.get_active_profile();
|
||||
_d("Active Profile:" + activeProfile);
|
||||
device.setActiveProfile(activeProfile);
|
||||
}
|
||||
}
|
||||
|
||||
_getDeviceVisibility() {
|
||||
let hideChooser = this._settings.get_boolean(Prefs.HIDE_ON_SINGLE_DEVICE);
|
||||
if (hideChooser) {
|
||||
return (Object.keys(this._availableDevicesIds).length > 1);
|
||||
return (Array.from(this._devices.values()).filter(x => x.isAvailable()).length > 1);
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
|
@ -404,24 +477,16 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
|||
|
||||
_setChooserVisibility() {
|
||||
let visibility = this._getDeviceVisibility();
|
||||
for (let id in this._availableDevicesIds) {
|
||||
this._devices[id].item.actor.visible = visibility;
|
||||
}
|
||||
Array.from(this._devices.values()).filter(x => x.isAvailable()).forEach(x => x.setVisibility(visibility))
|
||||
|
||||
this.menuItem._triangleBin.visible = visibility;
|
||||
this._setProfileVisibility();
|
||||
}
|
||||
|
||||
_setProfileVisibility() {
|
||||
let visibility = this._settings.get_boolean(Prefs.SHOW_PROFILES);
|
||||
for (let id in this._availableDevicesIds) {
|
||||
let device = this._devices[id];
|
||||
if (device.profiles) {
|
||||
for (let profile of device.profiles) {
|
||||
device.profilesitems[profile.name].actor.visible =
|
||||
(visibility && device.item.actor.visible && Object.keys(device.profilesitems).length > 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
Array.from(this._devices.values()).filter(x => x.isAvailable()).forEach(device => device.setProfileVisibility(visibility));
|
||||
this._setProfileTimer(visibility);
|
||||
}
|
||||
|
||||
_getIcon(name) {
|
||||
|
@ -432,40 +497,39 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
|||
case Prefs.ICON_THEME_MONOCHROME:
|
||||
return name + "-symbolic";
|
||||
default:
|
||||
return "none";
|
||||
//return "none";
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
_setIcons() {
|
||||
// Set the icons in the selection list
|
||||
for (let id in this._devices) {
|
||||
let device = this._devices[id];
|
||||
let icon = device.uidevice.get_icon_name();
|
||||
if (icon == null || icon.trim() == "")
|
||||
icon = this.getDefaultIcon();
|
||||
// device.item._icon.icon_name = this._getIcon(icon);
|
||||
device.item.setIcon(this._getIcon(icon));
|
||||
}
|
||||
let control = this._getMixerControl();
|
||||
this._devices.forEach((device, id) => {
|
||||
let uidevice = this.lookupDeviceById(control, id);
|
||||
if (uidevice) {
|
||||
let icon = uidevice.get_icon_name();
|
||||
if (icon == null || icon.trim() == "")
|
||||
icon = this.getDefaultIcon();
|
||||
_d(icon + " _setIcons")
|
||||
device.setIcon(this._getIcon(icon));
|
||||
}
|
||||
});
|
||||
|
||||
// These indicate the active device, which is displayed directly in the
|
||||
// Gnome menu, not in the list.
|
||||
if (!this._settings.get_boolean(Prefs.HIDE_MENU_ICONS)) {
|
||||
let icon = this._activeDevice.uidevice.get_icon_name();
|
||||
if (icon == null || icon.trim() == "")
|
||||
icon = this.getDefaultIcon();
|
||||
|
||||
this.menuItem.icon.icon_name = this._getIcon(icon);
|
||||
this.menuItem.icon.icon_name = this._getIcon(this._devices.get(this._activeDeviceId).icon_name);
|
||||
} else {
|
||||
this.menuItem.icon.gicon = null;
|
||||
this.menuItem.icon.icon_name = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
_canShowDevice(uidevice, defaultValue) {
|
||||
_canShowDevice(control, uidevice, defaultValue) {
|
||||
if (!uidevice || !this._portsSettings || uidevice.port_name == null || uidevice.description == null) {
|
||||
return defaultValue;
|
||||
}
|
||||
let stream = this._control.get_stream_from_device(uidevice);
|
||||
let stream = control.get_stream_from_device(uidevice);
|
||||
let cardName = null;
|
||||
if (stream) {
|
||||
let cardId = stream.get_card_index();
|
||||
|
@ -489,10 +553,8 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
|||
switch (port.display_option) {
|
||||
case 1:
|
||||
return true;
|
||||
|
||||
case 2:
|
||||
return false;
|
||||
|
||||
default:
|
||||
return defaultValue;
|
||||
}
|
||||
|
@ -504,20 +566,21 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
|||
_resetDevices() {
|
||||
//this._portsSettings = JSON.parse(this._settings.get_string(Prefs.PORT_SETTINGS));
|
||||
this._portsSettings = Prefs.getPortsFromSettings(this._settings);
|
||||
for (let id in this._devices) {
|
||||
let device = this._devices[id];
|
||||
let uidevice = device.uidevice;
|
||||
if (uidevice.port_name == null || uidevice.description == null) {
|
||||
_d("Device port_name null or description null");
|
||||
continue;
|
||||
let control = this._getMixerControl();
|
||||
for (let id of this._devices.keys()) {
|
||||
let uidevice = this.lookupDeviceById(control, id);
|
||||
if (_isDeviceInValid(uidevice)) {
|
||||
_d("Device is invalid");
|
||||
}
|
||||
switch (this._canShowDevice(uidevice, uidevice.port_available)) {
|
||||
case true:
|
||||
this._deviceAdded(this._control, uidevice.get_id(), true);
|
||||
break;
|
||||
case false:
|
||||
this._deviceRemoved(this._control, uidevice.get_id(), true);
|
||||
break;
|
||||
else {
|
||||
switch (this._canShowDevice(control, uidevice, uidevice.port_available)) {
|
||||
case true:
|
||||
this._deviceAdded(control, id, true);
|
||||
break;
|
||||
case false:
|
||||
this._deviceRemoved(control, id, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -528,7 +591,7 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
|
|||
else
|
||||
// if setting says to show device, check for any device, otherwise
|
||||
// hide the "actor"
|
||||
this.menuItem.actor.visible = (Object.keys(this._availableDevicesIds).length > 0);
|
||||
this.menuItem.actor.visible = (Array.from(this._devices.values()).some(x => x.isAvailable()));
|
||||
}
|
||||
|
||||
destroy() {
|
||||
|
|
|
@ -40,12 +40,12 @@ else {
|
|||
* @schema: (optional): the GSettings schema id Builds and return a GSettings
|
||||
* schema for
|
||||
* @schema, using schema files in extensions dir/schemas. If
|
||||
* @schema is not provided, it is taken from metadata['settings-schema'].
|
||||
* @schema is not provided, it is taken from metadata["settings-schema"].
|
||||
*/
|
||||
function getSettings(schema) {
|
||||
// let extension = ExtensionUtils.getCurrentExtension();
|
||||
|
||||
schema = schema || Me.metadata['settings-schema'];
|
||||
schema = schema || Me.metadata["settings-schema"];
|
||||
|
||||
const GioSSS = Gio.SettingsSchemaSource;
|
||||
|
||||
|
@ -54,7 +54,7 @@ function getSettings(schema) {
|
|||
// otherwise assume that extension has been installed in the
|
||||
// same prefix as gnome-shell (and therefore schemas are available
|
||||
// in the standard folders)
|
||||
let schemaDir = Me.dir.get_child('schemas');
|
||||
let schemaDir = Me.dir.get_child("schemas");
|
||||
let schemaSource;
|
||||
if (schemaDir.query_exists(null))
|
||||
schemaSource = GioSSS.new_from_directory(schemaDir.get_path(), GioSSS.get_default(), false);
|
||||
|
@ -63,8 +63,8 @@ function getSettings(schema) {
|
|||
|
||||
let schemaObj = schemaSource.lookup(schema, true);
|
||||
if (!schemaObj)
|
||||
throw new Error('Schema ' + schema + ' could not be found for extension '
|
||||
+ Me.metadata.uuid + '. Please check your installation.');
|
||||
throw new Error("Schema " + schema + " could not be found for extension "
|
||||
+ Me.metadata.uuid + ". Please check your installation.");
|
||||
|
||||
let _settings = new Gio.Settings({ settings_schema: schemaObj });
|
||||
return _settings;
|
||||
|
@ -83,7 +83,7 @@ function getCardByName(card_name) {
|
|||
if (!cards || Object.keys(cards).length == 0) {
|
||||
refreshCards();
|
||||
}
|
||||
return Object.keys(cards).map((index) => cards[index]).find(({name}) => name === card_name)
|
||||
return Object.keys(cards).map((index) => cards[index]).find(({ name }) => name === card_name);
|
||||
}
|
||||
|
||||
function getProfiles(control, uidevice) {
|
||||
|
@ -95,22 +95,25 @@ function getProfiles(control, uidevice) {
|
|||
|
||||
if (cards && cards[stream.card_index]) {
|
||||
_log("Getting profile form stream id " + uidevice.port_name);
|
||||
return getProfilesForPort(uidevice.port_name, cards[stream.card_index]);
|
||||
let profiles;
|
||||
if ((profiles = getProfilesForPort(uidevice.port_name, cards[stream.card_index]))) {
|
||||
return profiles;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* Device is not active device, lets try match with port name */
|
||||
refreshCards();
|
||||
for (let id in cards) {
|
||||
for(let card of Object.values(cards)) {
|
||||
let profiles;
|
||||
_log("Getting profile from cards " + uidevice.port_name + " for card id " + id);
|
||||
if ((profiles = getProfilesForPort(uidevice.port_name, cards[id]))) {
|
||||
_log("Getting profile from cards " + uidevice.port_name + " for card id " + card.id);
|
||||
if ((profiles = getProfilesForPort(uidevice.port_name, card))) {
|
||||
return profiles;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return [];
|
||||
}
|
||||
|
||||
let ports;
|
||||
|
@ -127,7 +130,7 @@ function isCmdFound(cmd) {
|
|||
return true;
|
||||
}
|
||||
catch (e) {
|
||||
_log('ERROR: ' + cmd + ' execution failed. ' + e);
|
||||
_log("ERROR: " + cmd + " execution failed. " + e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -141,18 +144,18 @@ function refreshCards() {
|
|||
let newProfLogic = _settings.get_boolean(Prefs.NEW_PROFILE_ID);
|
||||
if (newProfLogic) {
|
||||
_log("New logic");
|
||||
let pyLocation = Me.dir.get_child('utils/pa_helper.py').get_path();
|
||||
let pythonExec = ['python', 'python3', 'python2'].find(cmd => isCmdFound(cmd));
|
||||
let pyLocation = Me.dir.get_child("utils/pa_helper.py").get_path();
|
||||
let pythonExec = ["python", "python3", "python2"].find(cmd => isCmdFound(cmd));
|
||||
if (!pythonExec) {
|
||||
_log('ERROR: Python not found. fallback to default mode');
|
||||
_log("ERROR: Python not found. fallback to default mode");
|
||||
_settings.set_boolean(Prefs.NEW_PROFILE_ID, false);
|
||||
Gio.Settings.sync();
|
||||
newProfLogic = false;
|
||||
}
|
||||
else {
|
||||
try {
|
||||
_log('Python found.' + pythonExec);
|
||||
let [result, out, err, exit_code] = GLib.spawn_command_line_sync(pythonExec + ' ' + pyLocation);
|
||||
_log("Python found." + pythonExec);
|
||||
let [result, out, err, exit_code] = GLib.spawn_command_line_sync(pythonExec + " " + pyLocation);
|
||||
// _log("result" + result +" out"+out + " exit_code" +
|
||||
// exit_code + "err" +err);
|
||||
if (result && !exit_code) {
|
||||
|
@ -160,13 +163,13 @@ function refreshCards() {
|
|||
out = ByteArray.toString(out);
|
||||
}
|
||||
let obj = JSON.parse(out);
|
||||
cards = obj['cards'];
|
||||
ports = obj['ports'];
|
||||
cards = obj["cards"];
|
||||
ports = obj["ports"];
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
error = true;
|
||||
_log('ERROR: Python execution failed. fallback to default mode' + e);
|
||||
_log("ERROR: Python execution failed. fallback to default mode" + e);
|
||||
_settings.set_boolean(Prefs.NEW_PROFILE_ID, false);
|
||||
Gio.Settings.sync();
|
||||
}
|
||||
|
@ -176,13 +179,16 @@ function refreshCards() {
|
|||
if (!newProfLogic || error) {
|
||||
_log("Old logic");
|
||||
try {
|
||||
let [result, out, err, exit_code] = GLib.spawn_command_line_sync('pactl list cards');
|
||||
let env = GLib.get_environ();
|
||||
env = GLib.environ_setenv(env, "LANG", "C", true);
|
||||
let [result, out, err, exit_code] = GLib.spawn_sync(null, ["pactl", "list", "cards"], env, GLib.SpawnFlags.SEARCH_PATH, null);
|
||||
//_log(result+"--"+out+"--"+ err+"--"+ exit_code)
|
||||
if (result && !exit_code) {
|
||||
parseOutput(out);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
_log('ERROR: pactl execution failed. No ports/profiles will be displayed');
|
||||
_log("ERROR: pactl execution failed. No ports/profiles will be displayed." + e);
|
||||
}
|
||||
}
|
||||
//_log(Array.isArray(cards));
|
||||
|
@ -194,9 +200,9 @@ function refreshCards() {
|
|||
function parseOutput(out) {
|
||||
let lines;
|
||||
if (out instanceof Uint8Array) {
|
||||
lines = ByteArray.toString(out).split('\n');
|
||||
lines = ByteArray.toString(out).split("\n");
|
||||
} else {
|
||||
lines = out.toString().split('\n');
|
||||
lines = out.toString().split("\n");
|
||||
}
|
||||
|
||||
let cardIndex;
|
||||
|
@ -210,7 +216,7 @@ function parseOutput(out) {
|
|||
if ((matches = /^Card\s#(\d+)$/.exec(line))) {
|
||||
cardIndex = matches[1];
|
||||
if (!cards[cardIndex]) {
|
||||
cards[cardIndex] = { 'index': cardIndex, 'profiles': [], 'ports': [] };
|
||||
cards[cardIndex] = { "index": cardIndex, "profiles": [], "ports": [] };
|
||||
}
|
||||
}
|
||||
else if ((matches = /^\t*Name:\s+(.*?)$/.exec(line)) && cards[cardIndex]) {
|
||||
|
@ -232,30 +238,35 @@ function parseOutput(out) {
|
|||
if ((matches = /alsa\.card_name\s+=\s+"(.*?)"/.exec(line))) {
|
||||
cards[cardIndex].alsa_name = matches[1];
|
||||
}
|
||||
else if((matches = /device\.description\s+=\s+"(.*?)"/.exec(line))) {
|
||||
else if ((matches = /device\.description\s+=\s+"(.*?)"/.exec(line))) {
|
||||
cards[cardIndex].card_description = matches[1];
|
||||
}
|
||||
break;
|
||||
case "PROFILES":
|
||||
if ((matches = /.*?((?:output|input)[^+]*?):\s(.*?)\s\(sinks:/.exec(line))) {
|
||||
cards[cardIndex].profiles.push({ 'name': matches[1], 'human_name': matches[2] });
|
||||
cards[cardIndex].profiles.push({ "name": matches[1], "human_name": matches[2] });
|
||||
}
|
||||
break;
|
||||
case "PORTS":
|
||||
if ((matches = /\t*(.*?):\s(.*)\s\(.*?priority:/.exec(line))) {
|
||||
port = { 'name': matches[1], 'human_name': matches[2], 'card_name': cards[cardIndex].name, 'card_description' : cards[cardIndex].card_description };
|
||||
port = { "name": matches[1], "human_name": matches[2], "card_name": cards[cardIndex].name, "card_description": cards[cardIndex].card_description };
|
||||
cards[cardIndex].ports.push(port);
|
||||
ports.push(port);
|
||||
}
|
||||
else if (port && (matches = /\t*Part of profile\(s\):\s(.*)/.exec(line))) {
|
||||
let profileStr = matches[1];
|
||||
port.profiles = profileStr.split(', ');
|
||||
port.profiles = profileStr.split(", ");
|
||||
port = null;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ports) {
|
||||
ports.forEach(p => {
|
||||
p.direction = p.profiles.filter(pr => pr.indexOf("+input:") == -1).some(pr => (pr.indexOf("output:") >= 0)) ? "Output" : "Input";
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var Signal = class Signal {
|
||||
|
@ -280,8 +291,7 @@ var Signal = class Signal {
|
|||
|
||||
var SignalManager = class SignalManager {
|
||||
constructor() {
|
||||
this._signals = [];
|
||||
this._signalsBySource = {};
|
||||
this._signalsBySource = new Map();
|
||||
}
|
||||
|
||||
addSignal(signalSource, signalName, callback) {
|
||||
|
@ -289,29 +299,31 @@ var SignalManager = class SignalManager {
|
|||
if (signalSource && signalName && callback) {
|
||||
obj = new Signal(signalSource, signalName, callback);
|
||||
obj.connect();
|
||||
this._signals.push(obj);
|
||||
let sourceSignals = this._signalsBySource[signalSource]
|
||||
if (!sourceSignals) {
|
||||
sourceSignals = [];
|
||||
this._signalsBySource[signalSource] = sourceSignals;
|
||||
|
||||
if (!this._signalsBySource.has(signalSource)) {
|
||||
this._signalsBySource.set(signalSource, []);
|
||||
}
|
||||
// this._signalsBySource[signalSource].push(obj)
|
||||
sourceSignals.push(obj);
|
||||
this._signalsBySource.get(signalSource).push(obj)
|
||||
//_log(this._signalsBySource.get(signalSource).length + "Signal length");
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
disconnectAll() {
|
||||
for (let signal of this._signals) {
|
||||
signal.disconnect();
|
||||
}
|
||||
this._signalsBySource.forEach(signals => this._disconnectSignals(signals));
|
||||
}
|
||||
|
||||
disconnectBySource(signalSource) {
|
||||
if (this._signalsBySource[signalSource]) {
|
||||
for (let signal of this._signalsBySource[signalSource]) {
|
||||
signal.disconnect();
|
||||
}
|
||||
if (this._signalsBySource.has(signalSource)) {
|
||||
this._disconnectSignals(this._signalsBySource.get(signalSource));
|
||||
}
|
||||
}
|
||||
|
||||
_disconnectSignals(signals) {
|
||||
while (signals.length) {
|
||||
var signal = signals.shift();
|
||||
signal.disconnect();
|
||||
signal = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -319,21 +331,10 @@ var SignalManager = class SignalManager {
|
|||
|
||||
function getProfilesForPort(portName, card) {
|
||||
if (card.ports) {
|
||||
for (let port of card.ports) {
|
||||
if (portName === port.name) {
|
||||
let profiles = [];
|
||||
if (port.profiles) {
|
||||
for (let profile of port.profiles) {
|
||||
if (profile.indexOf('+input:') == -1) {
|
||||
for (let cardProfile of card.profiles) {
|
||||
if (profile === cardProfile.name) {
|
||||
profiles.push(cardProfile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return profiles;
|
||||
let port = card.ports.find(port => (portName === port.name));
|
||||
if (port) {
|
||||
if (port.profiles) {
|
||||
return card.profiles.filter(profile => (profile.name.indexOf("+input:") == -1 && port.profiles.includes(profile.name)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -356,7 +357,7 @@ function dump(obj) {
|
|||
for (var propName in obj) {
|
||||
try {
|
||||
propValue = obj[propName];
|
||||
_log(propName + "=" + propValue);
|
||||
_log(propName + "=" + propValue);
|
||||
}
|
||||
catch (e) { _log(propName + "!!!Error!!!"); }
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
******************************************************************************/
|
||||
/* jshint moz:true */
|
||||
|
||||
const {GObject} = imports.gi;
|
||||
const { GObject } = imports.gi;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
const Base = Me.imports.base;
|
||||
|
@ -26,64 +26,59 @@ const SignalManager = Lib.SignalManager;
|
|||
const Prefs = Me.imports.prefs;
|
||||
const Main = imports.ui.main;
|
||||
|
||||
var SoundOutputDeviceChooser = class SoundOutputDeviceChooser
|
||||
extends Base.SoundDeviceChooserBase {
|
||||
var SoundOutputDeviceChooser = class SoundOutputDeviceChooser
|
||||
extends Base.SoundDeviceChooserBase {
|
||||
constructor() {
|
||||
super("output");
|
||||
}
|
||||
lookupDeviceById(id) {
|
||||
return this._control.lookup_output_id(id);
|
||||
lookupDeviceById(control, id) {
|
||||
return control.lookup_output_id(id);
|
||||
}
|
||||
changeDevice(uidevice) {
|
||||
this._control.change_output(uidevice);
|
||||
changeDevice(control, uidevice) {
|
||||
control.change_output(uidevice);
|
||||
}
|
||||
getDefaultDevice() {
|
||||
return this._control.get_default_sink();
|
||||
getDefaultStream(control) {
|
||||
return control.get_default_sink();
|
||||
}
|
||||
getDefaultIcon() {
|
||||
return "audio-card";
|
||||
}
|
||||
getStreams() {
|
||||
return this._control.get_sinks();
|
||||
}
|
||||
};
|
||||
|
||||
var SoundInputDeviceChooser = class SoundInputDeviceChooser
|
||||
extends Base.SoundDeviceChooserBase {
|
||||
var SoundInputDeviceChooser = class SoundInputDeviceChooser
|
||||
extends Base.SoundDeviceChooserBase {
|
||||
constructor() {
|
||||
super("input");
|
||||
}
|
||||
lookupDeviceById(id) {
|
||||
return this._control.lookup_input_id(id);
|
||||
lookupDeviceById(control, id) {
|
||||
return control.lookup_input_id(id);
|
||||
}
|
||||
changeDevice(uidevice) {
|
||||
this._control.change_input(uidevice);
|
||||
changeDevice(control, uidevice) {
|
||||
control.change_input(uidevice);
|
||||
}
|
||||
getDefaultDevice() {
|
||||
return this._control.get_default_source();
|
||||
getDefaultStream(control) {
|
||||
return control.get_default_source();
|
||||
}
|
||||
getDefaultIcon() {
|
||||
return "audio-input-microphone";
|
||||
}
|
||||
getStreams() {
|
||||
return this._control.get_sources();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var InputSliderInstance = class InputSliderInstance {
|
||||
constructor(volumeMenu, settings ) {
|
||||
constructor(volumeMenu, settings) {
|
||||
this._input = volumeMenu._input;
|
||||
this._settings = settings;
|
||||
this._signalManager = new SignalManager();
|
||||
this._signalManager.addSignal(this._settings, "changed::"
|
||||
+ Prefs.SHOW_INPUT_SLIDER, this._setSliderVisiblity.bind(this));
|
||||
+ Prefs.SHOW_INPUT_SLIDER, this._setSliderVisiblity.bind(this));
|
||||
this._overrideFunction();
|
||||
this._setSliderVisiblity();
|
||||
}
|
||||
_overrideFunction() {
|
||||
this._input._shouldBeVisibleOriginal = this._input._shouldBeVisible;
|
||||
this._input._shouldBeVisibleCustom = function() {
|
||||
return this._stream != null;
|
||||
return this._stream != null;
|
||||
};
|
||||
}
|
||||
_setSliderVisiblity() {
|
||||
|
@ -104,18 +99,18 @@ var InputSliderInstance = class InputSliderInstance {
|
|||
};
|
||||
|
||||
var SDCInstance = class SDCInstance {
|
||||
constructor(){
|
||||
constructor() {
|
||||
this._settings = Lib.getSettings(Prefs.SETTINGS_SCHEMA);
|
||||
this._aggregateMenu = Main.panel.statusArea.aggregateMenu;
|
||||
this._volumeMenu = this._aggregateMenu._volume._volumeMenu;
|
||||
this._aggregateLayout = this._aggregateMenu.menu.box.get_layout_manager();
|
||||
}
|
||||
|
||||
enable(){
|
||||
enable() {
|
||||
let theme = imports.gi.Gtk.IconTheme.get_default();
|
||||
if(theme != null) {
|
||||
if (theme != null) {
|
||||
let iconPath = Me.dir.get_child('icons');
|
||||
if (iconPath != null && iconPath.query_exists(null)){
|
||||
if (iconPath != null && iconPath.query_exists(null)) {
|
||||
theme.append_search_path(iconPath.get_path());
|
||||
}
|
||||
}
|
||||
|
@ -139,13 +134,11 @@ var SDCInstance = class SDCInstance {
|
|||
this._expandVolMenu();
|
||||
}
|
||||
|
||||
_addMenuItem(_volumeMenu, checkItem, menuItem){
|
||||
_addMenuItem(_volumeMenu, checkItem, menuItem) {
|
||||
let menuItems = _volumeMenu._getMenuItems();
|
||||
let i = 0;
|
||||
for (; i < menuItems.length; i++) {
|
||||
if (menuItems[i] === checkItem) {
|
||||
break;
|
||||
}
|
||||
let i = menuItems.findIndex(elem => elem === checkItem);
|
||||
if (i < 0) {
|
||||
i = menuItems.length;
|
||||
}
|
||||
_volumeMenu.addMenuItem(menuItem, ++i);
|
||||
}
|
||||
|
@ -163,15 +156,21 @@ var SDCInstance = class SDCInstance {
|
|||
this._aggregateLayout.layout_changed();
|
||||
}
|
||||
|
||||
disable(){
|
||||
disable() {
|
||||
this._revertVolMenuChanges();
|
||||
this._outputInstance.destroy();
|
||||
this._outputInstance = null;
|
||||
this._inputInstance.destroy();
|
||||
this._inputInstance = null;
|
||||
this._inputSliderInstance.destroy();
|
||||
this._inputSliderInstance = null;
|
||||
if(this._expSignalId) {
|
||||
if (this._outputInstance) {
|
||||
this._outputInstance.destroy();
|
||||
this._outputInstance = null;
|
||||
}
|
||||
if (this._inputInstance) {
|
||||
this._inputInstance.destroy();
|
||||
this._inputInstance = null;
|
||||
}
|
||||
if (this._inputSliderInstance) {
|
||||
this._inputSliderInstance.destroy();
|
||||
this._inputSliderInstance = null;
|
||||
}
|
||||
if (this._expSignalId) {
|
||||
this._settings.disconnect(this._expSignalId);
|
||||
this._expSignalId = null;
|
||||
}
|
||||
|
|
|
@ -7,9 +7,10 @@
|
|||
"3.34",
|
||||
"3.32",
|
||||
"3.36",
|
||||
"3.38"
|
||||
"3.38",
|
||||
"40"
|
||||
],
|
||||
"url": "https://github.com/kgshank/gse-sound-output-device-chooser",
|
||||
"uuid": "sound-output-device-chooser@kgshank.net",
|
||||
"version": 34
|
||||
"version": 38
|
||||
}
|
|
@ -28,7 +28,7 @@ const _d = Lib._log;
|
|||
const SignalManager = Lib.SignalManager;
|
||||
|
||||
const Gettext = imports.gettext;
|
||||
Gettext.bindtextdomain("sound-output-device-chooser", Me.path + '/locale');
|
||||
Gettext.bindtextdomain("sound-output-device-chooser", Me.path + "/locale");
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
var SETTINGS_SCHEMA = "org.gnome.shell.extensions.sound-output-device-chooser";
|
||||
|
@ -64,8 +64,8 @@ function getPortsFromSettings(_settings) {
|
|||
return obj.ports;
|
||||
}
|
||||
|
||||
function setPortsSettings(ports,_settings) {
|
||||
let settingsObj = { 'version': PORT_SETTINGS_VERSION };
|
||||
function setPortsSettings(ports, _settings) {
|
||||
let settingsObj = { "version": PORT_SETTINGS_VERSION };
|
||||
settingsObj.ports = ports;
|
||||
//_d(JSON.stringify(settingsObj));
|
||||
_settings.set_string(PORT_SETTINGS, JSON.stringify(settingsObj));
|
||||
|
@ -97,45 +97,52 @@ function migratePortSettings(currVersion, currSettings, _settings) {
|
|||
}
|
||||
break;
|
||||
}
|
||||
return setPortsSettings(ports,_settings);
|
||||
return setPortsSettings(ports, _settings);
|
||||
}
|
||||
|
||||
|
||||
const SDCSettingsWidget = new GObject.Class({
|
||||
Name: 'SDC.Prefs.Widget',
|
||||
GTypeName: 'SDCSettingsWidget',
|
||||
Name: "SDC.Prefs.Widget",
|
||||
GTypeName: "SDCSettingsWidget",
|
||||
Extends: Gtk.Box,
|
||||
|
||||
_init: function(params) {
|
||||
this.parent(params);
|
||||
this.orientation = Gtk.Orientation.VERTICAL;
|
||||
this.spacing = 0;
|
||||
let uiFileSuffix = "";
|
||||
|
||||
if (Gtk.get_major_version() >= "4") {
|
||||
uiFileSuffix = "40";
|
||||
this.__addFn = this.append;
|
||||
this.__showFn = this.show;
|
||||
}
|
||||
else {
|
||||
this.__addFn = x => this.pack_start(x, true, true, 0);
|
||||
this.__showFn = this.show_all;
|
||||
}
|
||||
// creates the settings
|
||||
this._settings = Lib.getSettings(SETTINGS_SCHEMA);
|
||||
|
||||
Lib.setLog(this._settings.get_boolean(ENABLE_LOG));
|
||||
|
||||
// creates the ui builder and add the main resource file
|
||||
let uiFilePath = Me.path + "/ui/prefs-dialog.gtkbuilder";
|
||||
let uiFilePath = Me.path + "/ui/prefs-dialog" +uiFileSuffix +".glade";
|
||||
let builder = new Gtk.Builder();
|
||||
builder.set_translation_domain('sound-output-device-chooser');
|
||||
builder.set_translation_domain("sound-output-device-chooser");
|
||||
|
||||
if (builder.add_from_file(uiFilePath) == 0) {
|
||||
_d("JS LOG: could not load the ui file: %s".format(uiFilePath));
|
||||
|
||||
let label = new Gtk.Label({
|
||||
label: _("Could not load the preferences UI file"),
|
||||
vexpand: true
|
||||
});
|
||||
|
||||
this.pack_start(label, true, true, 0);
|
||||
this.__addFn(label);
|
||||
} else {
|
||||
_d('JS LOG:_UI file receive and load: ' + uiFilePath);
|
||||
_d("JS LOG:_UI file receive and load: " + uiFilePath);
|
||||
|
||||
let mainContainer = builder.get_object("main-container");
|
||||
|
||||
this.pack_start(mainContainer, true, true, 0);
|
||||
this.__addFn(mainContainer);
|
||||
|
||||
this._signalManager = new SignalManager();
|
||||
|
||||
|
@ -179,9 +186,9 @@ const SDCSettingsWidget = new GObject.Class({
|
|||
|
||||
_populatePorts: function() {
|
||||
let ports = Lib.getPorts(true);
|
||||
for (let port of ports) {
|
||||
this._portsStore.set(this._portsStore.append(), [0, 1, 2, 3, 4, 5, 6, 7], [port.human_name, false, false, true, port.name, 3, port.card_name, getPortDisplayName(port)]);
|
||||
}
|
||||
ports.sort((a, b) => (b.direction.localeCompare(a.direction)) || getPortDisplayName(a).localeCompare(getPortDisplayName(b))).forEach(port => {
|
||||
this._portsStore.set(this._portsStore.append(), [0, 1, 2, 3, 4, 5, 6, 7, 8], [port.human_name, false, false, true, port.name, 3, port.card_name, getPortDisplayName(port), port.direction]);
|
||||
});
|
||||
},
|
||||
|
||||
_showAlwaysToggleRenderCallback: function(widget, path) {
|
||||
|
@ -207,7 +214,7 @@ const SDCSettingsWidget = new GObject.Class({
|
|||
}
|
||||
/*Dont support non-pci cards for show always*/
|
||||
let card_name = this._portsStore.get_value(iter, 6);
|
||||
if(!/\.pci-/.exec(card_name) && activeCol == 1){
|
||||
if (!/\.pci-/.exec(card_name) && activeCol == 1) {
|
||||
this._toggleCallback(widget, path, 3, [1, 2]);
|
||||
return;
|
||||
}
|
||||
|
@ -222,20 +229,21 @@ const SDCSettingsWidget = new GObject.Class({
|
|||
_commitSettings: function() {
|
||||
let ports = [];
|
||||
let [success, iter] = this._portsStore.get_iter_first();
|
||||
|
||||
while (iter && success) {
|
||||
if (!this._portsStore.get_value(iter, 3)) {
|
||||
ports.push({
|
||||
human_name: this._portsStore.get_value(iter, 0),
|
||||
name: this._portsStore.get_value(iter, 4),
|
||||
display_option: this._portsStore.get_value(iter, 5),
|
||||
card_name: this._portsStore.get_value(iter, 6),
|
||||
display_name: this._portsStore.get_value(iter, 7)
|
||||
});
|
||||
let display_option = this._portsStore.get_value(iter, 5);
|
||||
if (display_option != 3) {//Dont store default value
|
||||
ports.push({
|
||||
human_name: this._portsStore.get_value(iter, 0),
|
||||
name: this._portsStore.get_value(iter, 4),
|
||||
display_option: display_option,
|
||||
card_name: this._portsStore.get_value(iter, 6),
|
||||
display_name: this._portsStore.get_value(iter, 7)
|
||||
});
|
||||
}
|
||||
}
|
||||
success = this._portsStore.iter_next(iter);
|
||||
}
|
||||
|
||||
setPortsSettings(ports, this._settings);
|
||||
},
|
||||
|
||||
|
@ -268,8 +276,8 @@ const SDCSettingsWidget = new GObject.Class({
|
|||
|
||||
if (!found) {
|
||||
iter = this._portsStore.append();
|
||||
this._portsStore.set(iter, [0, 1, 2, 3, 4, 5, 6, 7],
|
||||
[port.human_name, false, false, false, port.name, port.display_option, port.card_name, port.display_name]);
|
||||
this._portsStore.set(iter, [0, 1, 2, 3, 4, 5, 6, 7, 8],
|
||||
[port.human_name, false, false, false, port.name, port.display_option, port.card_name, port.display_name, ""]);
|
||||
this._portsStore.set_value(iter, port.display_option, true);
|
||||
}
|
||||
}
|
||||
|
@ -279,7 +287,7 @@ const SDCSettingsWidget = new GObject.Class({
|
|||
|
||||
function buildPrefsWidget() {
|
||||
let _settingsWidget = new SDCSettingsWidget();
|
||||
_settingsWidget.show_all();
|
||||
_settingsWidget.__showFn();
|
||||
|
||||
return _settingsWidget;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,808 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.38.2 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.12"/>
|
||||
<object class="GtkListStore" id="icon-theme-store">
|
||||
<columns>
|
||||
<!-- column-name Key -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Value -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0">monochrome</col>
|
||||
<col id="1" translatable="yes">Monochrome</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">colored</col>
|
||||
<col id="1" translatable="yes">Colored</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">none</col>
|
||||
<col id="1" translatable="yes">None</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkListStore" id="ports-store">
|
||||
<columns>
|
||||
<!-- column-name Port -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name ShowAlways -->
|
||||
<column type="gboolean"/>
|
||||
<!-- column-name HideAlways -->
|
||||
<column type="gboolean"/>
|
||||
<!-- column-name ShowOnActive -->
|
||||
<column type="gboolean"/>
|
||||
<!-- column-name PortRealName -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name SelectedColumn -->
|
||||
<column type="gint"/>
|
||||
<!-- column-name CardName -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name DisplayName -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name DeviceType -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkBox" id="main-container">
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">12</property>
|
||||
<property name="margin-bottom">12</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-start">10</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="label-xalign">0.029999999329447746</property>
|
||||
<property name="shadow-type">out</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Hide selector if there's only one device</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="single-device">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Display audio profiles for selection</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-profile">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Extend Volume Menu to fit device names</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="expand-volume-menu">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">General Settings</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-start">10</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="label-xalign">0.029999999329447746</property>
|
||||
<property name="shadow-type">out</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Show output devices</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-output-devices">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Output Devices</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-start">10</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="label-xalign">0.029999999329447746</property>
|
||||
<property name="shadow-type">out</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Show input devices</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-input-devices">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="valign">center</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Show volume control for default device</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-input-slider">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Input Devices</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-start">10</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="label-xalign">0.029999999329447746</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="name">6</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Icon Theme</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="icon-theme">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="model">icon-theme-store</property>
|
||||
<property name="id-column">0</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="Text"/>
|
||||
<attributes>
|
||||
<attribute name="text">1</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Display icons only in selection list</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="hide-menu-icons">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Icons</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-start">10</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="label-xalign">0.029999999329447746</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="name">6</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Enable Log messages</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="enable-log">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Enable new profile identification </property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="new-profile-identification">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Miscellaneous</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">12</property>
|
||||
<property name="margin-bottom">12</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-start">10</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="label-xalign">0.029999999329447746</property>
|
||||
<property name="shadow-type">out</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-bottom">4</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="opacity">0.9999999986588954</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="resize-mode">queue</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<property name="min-content-width">500</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="port-treeview">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="model">ports-store</property>
|
||||
<property name="headers-clickable">False</property>
|
||||
<property name="enable-grid-lines">both</property>
|
||||
<child internal-child="selection">
|
||||
<object class="GtkTreeSelection" id="treeview-selection1"/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="PortNameColumn">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="min-width">100</property>
|
||||
<property name="title" translatable="yes">Name</property>
|
||||
<property name="expand">True</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="PortNameRenderer"/>
|
||||
<attributes>
|
||||
<attribute name="text">7</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="DeviceTypeColumn">
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="min-width">100</property>
|
||||
<property name="title" translatable="yes">Device Type</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="sort-order">descending</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="DeviceTypeRenderer"/>
|
||||
<attributes>
|
||||
<attribute name="text">8</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ShowAlwaysColumn">
|
||||
<property name="visible">False</property>
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="title" translatable="yes">Show</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle" id="ShowAlwaysToggleRender">
|
||||
<property name="radio">True</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">1</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="HideAlwaysColumn">
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="title" translatable="yes">Hide</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle" id="HideAlwaysToggleRender">
|
||||
<property name="radio">True</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">2</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ShowOnActiveColumn">
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="title" translatable="yes">Default</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle" id="ShowActiveToggleRender">
|
||||
<property name="radio">True</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">3</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Port Settings</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
|
@ -1,835 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.38.2 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.16"/>
|
||||
<object class="GtkListStore" id="icon-theme-store">
|
||||
<columns>
|
||||
<!-- column-name Key -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Value -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0">monochrome</col>
|
||||
<col id="1" translatable="yes">Monochrome</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">colored</col>
|
||||
<col id="1" translatable="yes">Colored</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">none</col>
|
||||
<col id="1" translatable="yes">None</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkListStore" id="ports-store">
|
||||
<columns>
|
||||
<!-- column-name Port -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name ShowAlways -->
|
||||
<column type="gboolean"/>
|
||||
<!-- column-name HideAlways -->
|
||||
<column type="gboolean"/>
|
||||
<!-- column-name ShowOnActive -->
|
||||
<column type="gboolean"/>
|
||||
<!-- column-name PortRealName -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name SelectedColumn -->
|
||||
<column type="gint"/>
|
||||
<!-- column-name CardName -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name DisplayName -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkBox" id="main-container">
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-left">6</property>
|
||||
<property name="margin-right">6</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-left">12</property>
|
||||
<property name="margin-right">6</property>
|
||||
<property name="margin-top">12</property>
|
||||
<property name="margin-bottom">12</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label-xalign">0</property>
|
||||
<property name="shadow-type">out</property>
|
||||
<child>
|
||||
<object class="GtkAlignment">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="label" translatable="yes">Hide selector if there's only one device</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="single-device">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-right">5</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="label" translatable="yes">Display audio profiles for selection</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-profile">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-right">5</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="margin-right">20</property>
|
||||
<property name="label" translatable="yes">Extend Volume Menu to fit device names</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="expand-volume-menu">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-right">5</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">General Settings</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label-xalign">0</property>
|
||||
<property name="shadow-type">out</property>
|
||||
<child>
|
||||
<object class="GtkAlignment">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="label" translatable="yes">Show output devices</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-output-devices">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-right">5</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Output Devices</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label-xalign">0</property>
|
||||
<property name="shadow-type">out</property>
|
||||
<child>
|
||||
<object class="GtkAlignment">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="label" translatable="yes">Show input devices</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-input-devices">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-right">5</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="valign">center</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="label" translatable="yes">Show volume control for default device</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-input-slider">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-right">5</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Input Devices</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label-xalign">0</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<child>
|
||||
<object class="GtkAlignment">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="name">6</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="label" translatable="yes">Icon Theme</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="icon-theme">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-right">5</property>
|
||||
<property name="model">icon-theme-store</property>
|
||||
<property name="id-column">0</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="Text"/>
|
||||
<attributes>
|
||||
<attribute name="text">1</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="label" translatable="yes">Display icons only in selection list</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="hide-menu-icons">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="margin-right">5</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Icons</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label-xalign">0</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<child>
|
||||
<object class="GtkAlignment">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="name">6</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="label" translatable="yes">Enable Log messages</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="enable-log">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="label" translatable="yes">Enable new profile identification </property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="new-profile-identification">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Miscellaneous</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-left">6</property>
|
||||
<property name="margin-right">12</property>
|
||||
<property name="margin-top">12</property>
|
||||
<property name="margin-bottom">12</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="label-xalign">0</property>
|
||||
<property name="shadow-type">out</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-left">4</property>
|
||||
<property name="margin-right">4</property>
|
||||
<property name="margin-bottom">4</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="opacity">0.9999999986588954</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="resize-mode">queue</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<property name="min-content-width">500</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="port-treeview">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="model">ports-store</property>
|
||||
<child internal-child="selection">
|
||||
<object class="GtkTreeSelection" id="treeview-selection1"/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="PortNameColumn">
|
||||
<property name="resizable">True</property>
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="min-width">100</property>
|
||||
<property name="title" translatable="yes">Name</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="sort-order">descending</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="PortNameRenderer"/>
|
||||
<attributes>
|
||||
<attribute name="text">7</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ShowAlwaysColumn">
|
||||
<property name="visible">False</property>
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="title" translatable="yes">Show</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle" id="ShowAlwaysToggleRender">
|
||||
<property name="radio">True</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">1</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="HideAlwaysColumn">
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="title" translatable="yes">Hide</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle" id="HideAlwaysToggleRender">
|
||||
<property name="radio">True</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">2</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ShowOnActiveColumn">
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="title" translatable="yes">Default</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle" id="ShowActiveToggleRender">
|
||||
<property name="radio">True</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">3</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Port Settings</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
|
@ -0,0 +1,538 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk+" version="4.0"/>
|
||||
<object class="GtkListStore" id="icon-theme-store">
|
||||
<columns>
|
||||
<!-- column-name Key -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name Value -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0">monochrome</col>
|
||||
<col id="1" translatable="yes">Monochrome</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">colored</col>
|
||||
<col id="1" translatable="yes">Colored</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">none</col>
|
||||
<col id="1" translatable="yes">None</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkListStore" id="ports-store">
|
||||
<columns>
|
||||
<!-- column-name Port -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name ShowAlways -->
|
||||
<column type="gboolean"/>
|
||||
<!-- column-name HideAlways -->
|
||||
<column type="gboolean"/>
|
||||
<!-- column-name ShowOnActive -->
|
||||
<column type="gboolean"/>
|
||||
<!-- column-name PortRealName -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name SelectedColumn -->
|
||||
<column type="gint"/>
|
||||
<!-- column-name CardName -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name DisplayName -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name DeviceType -->
|
||||
<column type="gchararray"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkBox" id="main-container">
|
||||
<property name="visible">1</property>
|
||||
<property name="margin-start">6</property>
|
||||
<property name="margin-end">6</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="vexpand">1</property>
|
||||
<property name="homogeneous">1</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-start">12</property>
|
||||
<property name="margin-end">6</property>
|
||||
<property name="margin-top">12</property>
|
||||
<property name="margin-bottom">12</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="can-focus">0</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="label" translatable="yes">Hide selector if there's only one device</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="single-device">
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-end">5</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="label" translatable="yes">Display audio profiles for selection</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-profile">
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-end">5</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="margin-end">20</property>
|
||||
<property name="label" translatable="yes">Extend Volume Menu to fit device names</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="expand-volume-menu">
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-end">5</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">General Settings</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<child>
|
||||
|
||||
<object class="GtkListBox">
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="valign">center</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="label" translatable="yes">Show output devices</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-output-devices">
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-end">5</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Output Devices</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<child>
|
||||
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="valign">center</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="label" translatable="yes">Show input devices</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-input-devices">
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-end">5</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="label" translatable="yes">Show volume control for default device</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show-input-slider">
|
||||
<property name="halign">end</property>
|
||||
<property name="margin-end">5</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Input Devices</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<child>
|
||||
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="name">6</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="label" translatable="yes">Icon Theme</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="icon-theme">
|
||||
<property name="width-request">100</property>
|
||||
<property name="margin-end">5</property>
|
||||
<property name="model">icon-theme-store</property>
|
||||
<property name="id-column">0</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="Text" />
|
||||
<attributes>
|
||||
<attribute name="text">1</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="label" translatable="yes">Display icons only in selection list</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="hide-menu-icons">
|
||||
<property name="margin-end">5</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Icons</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<child>
|
||||
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="name">6</property>
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="label" translatable="yes">Enable Log messages</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="enable-log" />
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="width-request">100</property>
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">6</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="label" translatable="yes">Enable new profile identification</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="new-profile-identification">
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Miscellaneous</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-start">6</property>
|
||||
<property name="margin-end">12</property>
|
||||
<property name="margin-top">12</property>
|
||||
<property name="margin-bottom">12</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkFrame">
|
||||
<property name="vexpand">1</property>
|
||||
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="margin-start">4</property>
|
||||
<property name="margin-end">4</property>
|
||||
<property name="margin-bottom">4</property>
|
||||
<property name="vexpand">1</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
||||
<property name="opacity">0.9999999986588954</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="vexpand">1</property>
|
||||
<property name="min-content-width">500</property>
|
||||
<property name="child">
|
||||
<object class="GtkTreeView" id="port-treeview">
|
||||
<property name="vexpand">1</property>
|
||||
<property name="model">ports-store</property>
|
||||
<child internal-child="selection">
|
||||
<object class="GtkTreeSelection" id="treeview-selection1" />
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="PortNameColumn">
|
||||
<property name="resizable">1</property>
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="min-width">100</property>
|
||||
<property name="title" translatable="yes">Name</property>
|
||||
<property name="expand">1</property>
|
||||
<property name="sort-order">descending</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="PortNameRenderer" />
|
||||
<attributes>
|
||||
<attribute name="text">7</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ShowAlwaysColumn">
|
||||
<property name="visible">1</property>
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="title" translatable="yes">Show</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle" id="ShowAlwaysToggleRender">
|
||||
<property name="radio">1</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">1</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="HideAlwaysColumn">
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="title" translatable="yes">Hide</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle" id="HideAlwaysToggleRender">
|
||||
<property name="radio">1</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">2</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn" id="ShowOnActiveColumn">
|
||||
<property name="sizing">autosize</property>
|
||||
<property name="title" translatable="yes">Default</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle" id="ShowActiveToggleRender">
|
||||
<property name="radio">1</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">3</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
<child type="label">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Port Settings</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
|
@ -33,11 +33,6 @@
|
|||
import ctypes
|
||||
from ctypes.util import find_library
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
c_int128 = ctypes.c_ubyte*16
|
||||
c_uint128 = c_int128
|
||||
void = None
|
||||
|
@ -498,7 +493,8 @@ pa_proplist_to_string.argtypes = [POINTER_T(struct_pa_proplist)]
|
|||
pa_proplist_gets = _libraries['libpulse.so'].pa_proplist_gets
|
||||
pa_proplist_gets.restype = POINTER_T(ctypes.c_char)
|
||||
pa_proplist_gets.argtypes = [POINTER_T(struct_pa_proplist), POINTER_T(ctypes.c_char)]
|
||||
|
||||
PA_DIRECTION_OUTPUT = 0x0001
|
||||
PA_DIRECTION_INPUT = 0x0002
|
||||
|
||||
|
||||
__all__ = \
|
||||
|
@ -545,4 +541,4 @@ __all__ = \
|
|||
'struct_pa_mainloop_api', 'struct_pa_operation',
|
||||
'struct_pa_proplist', 'struct_pa_sample_spec',
|
||||
'struct_pa_spawn_api', 'struct_pa_time_event', 'struct_pollfd',
|
||||
'struct_timeval', 'uint32_t','pa_proplist_to_string','pa_proplist_gets']
|
||||
'struct_timeval', 'uint32_t','pa_proplist_to_string','pa_proplist_gets','PA_DIRECTION_OUTPUT', 'PA_DIRECTION_INPUT']
|
||||
|
|
|
@ -57,9 +57,7 @@ class PAHelper():
|
|||
self._pa_card_info_cb_t , None)
|
||||
|
||||
pa.pa_mainloop_iterate(self.mainloop, 0, byref(retVal))
|
||||
|
||||
|
||||
print(dumps({'cards': self._cards, 'ports':self._ports}, indent = 5))
|
||||
print(dumps({'cards': self._cards, 'ports':self._ports}, indent = 5))
|
||||
|
||||
try:
|
||||
if operation:
|
||||
|
@ -105,7 +103,7 @@ class PAHelper():
|
|||
obj = {}
|
||||
obj['name'] = port.name.decode('utf8') if port.name else ''
|
||||
obj['human_name'] = port.description.decode('utf8') if port.description else ''
|
||||
obj['direction'] = port.direction
|
||||
obj['direction'] = 'Output' if (port.direction & pa.PA_DIRECTION_OUTPUT) else 'Input'
|
||||
obj['available'] = port.available
|
||||
obj['n_profiles'] = port.n_profiles
|
||||
obj['profiles'] = []
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// tweaks-system-menu - Put Gnome Tweaks in the system menu.
|
||||
// Copyright (C) 2019, 2020 Philippe Troin (F-i-f on Github)
|
||||
// Copyright (C) 2019-2021 Philippe Troin (F-i-f on Github)
|
||||
//
|
||||
// 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
|
||||
|
@ -14,6 +14,7 @@
|
|||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
const Lang = imports.lang;
|
||||
const BoxPointer = imports.ui.boxpointer;
|
||||
const Main = imports.ui.main;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
@ -34,6 +35,45 @@ const TweaksSystemMenuExtension = class TweaksSystemMenuExtension {
|
|||
this._positionSettingChangedConnection = null;
|
||||
this._systemMenu = null;
|
||||
|
||||
this._applications = {
|
||||
'tweaks': {
|
||||
appName: 'org.gnome.tweaks.desktop',
|
||||
check: Lang.bind(this, function() {
|
||||
return true;
|
||||
}),
|
||||
getDefaultPosition: Lang.bind(this, function() {
|
||||
return this._findMenuItemPosition(this._systemMenu._settingsItem)+1;
|
||||
}),
|
||||
preUpdatePosition: Lang.bind(this, function () {
|
||||
if (this._applications['extensions'].menuItem !== undefined) {
|
||||
this._moveMenuItemToEnd(this._applications['extensions'].menuItem);
|
||||
}
|
||||
}),
|
||||
postUpdatePosition: Lang.bind(this, function () {
|
||||
if (this._applications['extensions'].menuItem !== undefined) {
|
||||
this._on_position_change('extensions');
|
||||
}
|
||||
})
|
||||
},
|
||||
'extensions': {
|
||||
appName: 'org.gnome.Extensions.desktop',
|
||||
check: Lang.bind(this, function() {
|
||||
let gnome_shell_version = imports.misc.config.PACKAGE_VERSION;
|
||||
let gnome_shell_major = /^([0-9]+)\.([0-9]+)(\.([0-9]+)(\..*)?)?$/.exec(gnome_shell_version)[1];
|
||||
return gnome_shell_major >= 40;
|
||||
}),
|
||||
getDefaultPosition: Lang.bind(this, function() {
|
||||
if (this._applications['tweaks'].menuItem !== undefined) {
|
||||
return this._findMenuItemPosition(this._applications['tweaks'].menuItem)+1;
|
||||
} else {
|
||||
return this._applications['tweaks'].getDefaultPosition();
|
||||
}
|
||||
}),
|
||||
preUpdatePosition: Lang.bind(this, function () { return; }),
|
||||
postUpdatePosition: Lang.bind(this, function () { return; })
|
||||
}
|
||||
};
|
||||
|
||||
this._tweaksApp = null;
|
||||
this._tweaksItem = null;
|
||||
this._tweaksActivateConnection = null;
|
||||
|
@ -52,6 +92,18 @@ const TweaksSystemMenuExtension = class TweaksSystemMenuExtension {
|
|||
return null;
|
||||
}
|
||||
|
||||
_moveMenuItemToEnd(item) {
|
||||
this._systemMenu.menu.moveMenuItem(item, this._systemMenu.menu._getMenuItems().length-1);
|
||||
}
|
||||
|
||||
_getEnableSettingsName(appKey) {
|
||||
return appKey+'-enable';
|
||||
}
|
||||
|
||||
_getPositionSettingsName(appKey) {
|
||||
return appKey+'-position';
|
||||
}
|
||||
|
||||
// Enable/disable
|
||||
enable() {
|
||||
this._logger = new Logger.Logger('Tweaks-System-Menu');
|
||||
|
@ -63,26 +115,43 @@ const TweaksSystemMenuExtension = class TweaksSystemMenuExtension {
|
|||
|
||||
this._debugSettingChangedConnection = this._settings.connect('changed::debug',
|
||||
this._on_debug_change.bind(this));
|
||||
this._positionSettingChangedConnection = this._settings.connect('changed::position',
|
||||
this._on_position_change.bind(this));
|
||||
|
||||
this._systemMenu = Main.panel.statusArea.aggregateMenu._system;
|
||||
this._showItem();
|
||||
|
||||
for (let appKey in this._applications) {
|
||||
this._enableApp(appKey);
|
||||
}
|
||||
|
||||
this._logger.log_debug('extension enabled');
|
||||
}
|
||||
|
||||
_enableApp(appKey) {
|
||||
let appData = this._applications[appKey];
|
||||
if (! appData.check()) return;
|
||||
this._logger.log_debug('_enableApp('+appKey+')');
|
||||
appData.enableSettingChangedConnection = this._settings.connect('changed::'+this._getEnableSettingsName(appKey),
|
||||
Lang.bind(this, function() {
|
||||
this._on_enable_change(appKey);
|
||||
}));
|
||||
appData.positionSettingChangedConnection = this._settings.connect('changed::'+this._getPositionSettingsName(appKey),
|
||||
Lang.bind(this, function() {
|
||||
this._on_position_change(appKey);
|
||||
}));
|
||||
if (this._settings.get_boolean(this._getEnableSettingsName(appKey))) {
|
||||
this._showItem(appKey);
|
||||
}
|
||||
}
|
||||
|
||||
disable() {
|
||||
this._logger.log_debug('disable()');
|
||||
|
||||
this._hideItem();
|
||||
for (let appKey in this._applications) {
|
||||
this._disableApp(appKey);
|
||||
}
|
||||
|
||||
this._systemMenu = null;
|
||||
|
||||
this._settings.disconnect(this._debugSettingChangedConnection);
|
||||
this._debugSettingChangedConnection = null;
|
||||
this._settings.disconnect(this._positionSettingChangedConnection);
|
||||
this._positionSettingChangedConnection = null;
|
||||
|
||||
this._settings = null;
|
||||
|
||||
|
@ -90,34 +159,50 @@ const TweaksSystemMenuExtension = class TweaksSystemMenuExtension {
|
|||
this._logger = null;
|
||||
}
|
||||
|
||||
// Show/hide item
|
||||
_showItem() {
|
||||
this._logger.log_debug('_showItem()');
|
||||
|
||||
this._tweaksApp = Shell.AppSystem.get_default().lookup_app('org.gnome.tweaks.desktop');
|
||||
if (this._tweaksApp) {
|
||||
let [icon, name] = [this._tweaksApp.app_info.get_icon().names[0],
|
||||
this._tweaksApp.get_name()];
|
||||
this._tweaksItem = new PopupMenu.PopupImageMenuItem(name, icon);
|
||||
this._tweaksActivateConnection = this._tweaksItem.connect('activate', this._on_activate.bind(this));
|
||||
this._systemMenu.menu.addMenuItem(this._tweaksItem);
|
||||
this._on_position_change();
|
||||
} else {
|
||||
this._logger.log('Missing Gnome Tweaks, expect trouble…');
|
||||
_disableApp(appKey) {
|
||||
let appData = this._applications[appKey];
|
||||
if (! appData.check()) return;
|
||||
this._logger.log_debug('_disableApp('+appKey+')');
|
||||
this._hideItem(appKey);
|
||||
if (appData.enableSettingChangedConnection !== undefined) {
|
||||
this._settings.disconnect(appData.enableSettingChangedConnection);
|
||||
delete appData.enableSettingChangedConnection;
|
||||
}
|
||||
if (appData.positionSettingChangedConnection !== undefined) {
|
||||
this._settings.disconnect(appData.positionSettingChangedConnection);
|
||||
delete appData.positionSettingChangedConnection;
|
||||
}
|
||||
}
|
||||
|
||||
_hideItem() {
|
||||
this._logger.log_debug('_hideItem()');
|
||||
if (this._tweaksItem !== null) {
|
||||
this._tweaksItem.disconnect(this._tweaksActivateConnection);
|
||||
this._tweaksActivateConnection = null;
|
||||
|
||||
this._systemMenu.menu._getMenuItems().splice(this._findMenuItemPosition(this._tweaksItem), 1);
|
||||
this._tweaksItem.destroy();
|
||||
this._tweaksItem = null;
|
||||
// Show/hide item
|
||||
_showItem(appKey) {
|
||||
this._logger.log_debug('_showItem('+appKey+')');
|
||||
let appData = this._applications[appKey];
|
||||
appData.appInfo = Shell.AppSystem.get_default().lookup_app(appData.appName);
|
||||
if (appData.appInfo) {
|
||||
let name = appData.appInfo.get_name();
|
||||
let icon = appData.appInfo.app_info.get_icon().names[0];
|
||||
appData.menuItem = new PopupMenu.PopupImageMenuItem(name, icon);
|
||||
appData.activateConnection = appData.menuItem.connect('activate', Lang.bind(this, function() {
|
||||
this._on_activate(appKey);
|
||||
}));
|
||||
this._systemMenu.menu.addMenuItem(appData.menuItem);
|
||||
this._on_position_change(appKey);
|
||||
} else {
|
||||
this._logger.log(appData.appName+' is missing');
|
||||
}
|
||||
}
|
||||
|
||||
_hideItem(appKey) {
|
||||
this._logger.log_debug('_hideItem('+appKey+')');
|
||||
let appData = this._applications[appKey];
|
||||
if (appData.menuItem !== undefined) {
|
||||
appData.menuItem.disconnect(appData.activateConnection);
|
||||
delete appData.activateConnection;
|
||||
this._systemMenu.menu._getMenuItems().splice(this._findMenuItemPosition(appData.menuItem), 1);
|
||||
appData.menuItem.destroy();
|
||||
delete appData.menuItem;
|
||||
}
|
||||
this._tweaksApp = null;
|
||||
}
|
||||
|
||||
// Event handlers
|
||||
|
@ -126,25 +211,42 @@ const TweaksSystemMenuExtension = class TweaksSystemMenuExtension {
|
|||
this._logger.log_debug('debug = '+this._logger.get_debug());
|
||||
}
|
||||
|
||||
_on_position_change() {
|
||||
let position = this._settings.get_int('position');
|
||||
this._logger.log_debug('_on_position_change(): settings position=' + position);
|
||||
if (position == -1) {
|
||||
position = this._findMenuItemPosition(this._systemMenu._settingsItem);
|
||||
let tweaksPosition = this._findMenuItemPosition(this._tweaksItem);
|
||||
if (tweaksPosition > position) {
|
||||
position += 1;
|
||||
}
|
||||
this._logger.log_debug('_on_position_change(): automatic position=' + position);
|
||||
_on_enable_change(appKey) {
|
||||
let appData = this._applications[appKey];
|
||||
let enable = this._settings.get_boolean(this._getEnableSettingsName(appKey));
|
||||
this._logger.log_debug('_on_enable_change('+appKey+'): enable=' + enable);
|
||||
if (enable) {
|
||||
this._showItem(appKey);
|
||||
} else {
|
||||
this._hideItem(appKey);
|
||||
}
|
||||
this._systemMenu.menu.moveMenuItem(this._tweaksItem, position);
|
||||
}
|
||||
|
||||
_on_activate() {
|
||||
this._logger.log_debug('_on_activate()');
|
||||
_on_position_change(appKey) {
|
||||
let appData = this._applications[appKey];
|
||||
let position = this._settings.get_int(this._getPositionSettingsName(appKey));
|
||||
this._logger.log_debug('_on_position_change('+appKey+'): settings position=' + position);
|
||||
this._moveMenuItemToEnd(appData.menuItem);
|
||||
appData.preUpdatePosition();
|
||||
if (position == -1) {
|
||||
position = appData.getDefaultPosition();
|
||||
this._logger.log_debug('_on_position_change('+appKey+'): automatic position=' + position);
|
||||
}
|
||||
// let curPosition = this._findMenuItemPosition(appData.menuItem);
|
||||
// if (curPosition < position) {
|
||||
// position -= 1;
|
||||
// }
|
||||
// this._logger.log_debug('_on_position_change('+appKey+'): ajusted position=' + position);
|
||||
this._systemMenu.menu.moveMenuItem(appData.menuItem, position);
|
||||
appData.postUpdatePosition();
|
||||
}
|
||||
|
||||
_on_activate(appKey) {
|
||||
let appData = this._applications[appKey];
|
||||
this._logger.log_debug('_on_activate('+appKey+')');
|
||||
this._systemMenu.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
|
||||
Main.overview.hide();
|
||||
this._tweaksApp.activate();
|
||||
appData.appInfo.activate();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// meson-gse - Library for gnome-shell extensions
|
||||
// Copyright (C) 2019 Philippe Troin (F-i-f on Github)
|
||||
// Copyright (C) 2019-2021 Philippe Troin (F-i-f on Github)
|
||||
//
|
||||
// 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
|
||||
|
@ -37,14 +37,24 @@ var Logger = class MesonGseLogger {
|
|||
let gnomeShellVersion = imports.misc.config.PACKAGE_VERSION;
|
||||
if (gnomeShellVersion != undefined) {
|
||||
msg += ' on Gnome-Shell ' + gnomeShellVersion;
|
||||
}
|
||||
}
|
||||
let gjsVersion = imports.system.version;
|
||||
if (gjsVersion != undefined) {
|
||||
let gjsVersionMajor = Math.floor(gjsVersion / 10000);
|
||||
let gjsVersionMinor = Math.floor((gjsVersion % 10000) / 100);
|
||||
let gjsVersionPatch = gjsVersion % 100;
|
||||
msg +=( ' / gjs ' + gjsVersionMajor
|
||||
+ '.' +gjsVersionMinor
|
||||
+ '.' +gjsVersionPatch
|
||||
+ ' ('+gjsVersion+')');
|
||||
}
|
||||
let sessionType = GLib.getenv('XDG_SESSION_TYPE');
|
||||
if (sessionType != undefined) {
|
||||
msg += ' / ' + sessionType;
|
||||
}
|
||||
if (sessionType != undefined) {
|
||||
msg += ' / ' + sessionType;
|
||||
}
|
||||
this.log(msg);
|
||||
}
|
||||
global.log(''+this._title+': '+text);
|
||||
log(''+this._title+': '+text);
|
||||
}
|
||||
|
||||
log_debug(text) {
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
{
|
||||
"_generated": "Generated by SweetTooth, do not edit",
|
||||
"description": "Put Gnome Tweaks in the System menu. Optionally, collapse Settings and Tweaks into a single button.",
|
||||
"description": "Put Gnome Tweaks and Extensions (on Shell 40 and later) in the System menu.",
|
||||
"gettext-domain": "tweaks-system-menu",
|
||||
"name": "Tweaks in System Menu",
|
||||
"name": "Tweaks & Extensions in System Menu",
|
||||
"settings-schema": "org.gnome.shell.extensions.tweaks-system-menu",
|
||||
"shell-version": [
|
||||
"3.36",
|
||||
"3.35.92",
|
||||
"3.38"
|
||||
"3.38",
|
||||
"40.0"
|
||||
],
|
||||
"url": "https://github.com/F-i-f/tweaks-system-menu",
|
||||
"uuid": "tweaks-system-menu@extensions.gnome-shell.fifi.org",
|
||||
"vcs_revision": "v11-0-ga9fac83",
|
||||
"version": 11
|
||||
"vcs_revision": "v15-0-ge3b04c7",
|
||||
"version": 15
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
// Tweaks-system-menu - Put Gnome Tweaks in the system menu.
|
||||
// Copyright (C) 2019, 2020 Philippe Troin (F-i-f on Github)
|
||||
// Copyright (C) 2019-2021 Philippe Troin (F-i-f on Github)
|
||||
//
|
||||
// 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
|
||||
|
@ -14,6 +14,7 @@
|
|||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
const Lang = imports.lang;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
|
@ -29,7 +30,61 @@ const Logger = Me.imports.logger;
|
|||
|
||||
const TweaksSystemMenuSettings = GObject.registerClass(class TweaksSystemMenuSettings extends Gtk.Grid {
|
||||
|
||||
_addEntry(ypos, setting_prefix, enable_label_val, position_label_val) {
|
||||
let enable_setting = setting_prefix + '-enable';
|
||||
let enable_sschema = this._settings.settings_schema.get_key(enable_setting);
|
||||
let descr = _(enable_sschema.get_description());
|
||||
let enable_label = new Gtk.Label({
|
||||
label: enable_label_val,
|
||||
halign: Gtk.Align.START
|
||||
});
|
||||
enable_label.set_tooltip_text(descr);
|
||||
let enable_control = new Gtk.Switch({halign: Gtk.Align.END});
|
||||
enable_control.set_tooltip_text(descr);
|
||||
this.attach(enable_label, 1, ypos, 1, 1);
|
||||
this.attach(enable_control, 2, ypos, 1, 1);
|
||||
this._settings.bind(enable_setting, enable_control,
|
||||
'active', Gio.SettingsBindFlags.DEFAULT);
|
||||
ypos += 1
|
||||
|
||||
let position_setting = setting_prefix + '-position';
|
||||
let position_sschema = this._settings.settings_schema.get_key(position_setting);
|
||||
descr = _(position_sschema.get_description());
|
||||
let position_label = new Gtk.Label({
|
||||
label: position_label_val,
|
||||
halign: Gtk.Align.START,
|
||||
margin_start: 25
|
||||
});
|
||||
position_label.set_tooltip_text(descr);
|
||||
let position_range = position_sschema.get_range().deep_unpack()[1].deep_unpack()
|
||||
let position_control = new Gtk.SpinButton({
|
||||
adjustment: new Gtk.Adjustment({
|
||||
lower: position_range[0],
|
||||
upper: position_range[1],
|
||||
step_increment: 1
|
||||
}),
|
||||
halign: Gtk.Align.END
|
||||
});
|
||||
position_control.set_tooltip_text(descr);
|
||||
this.attach(position_label, 1, ypos, 1, 1);
|
||||
this.attach(position_control, 2, ypos, 1, 1);
|
||||
this._settings.bind(position_setting, position_control,
|
||||
'value', Gio.SettingsBindFlags.DEFAULT);
|
||||
ypos += 1
|
||||
|
||||
this._settings.connect('changed::'+enable_setting, Lang.bind(this, function(settings, name) {
|
||||
let val = settings.get_boolean(name);
|
||||
position_label.set_sensitive(val);
|
||||
position_control.set_sensitive(val);
|
||||
}));
|
||||
|
||||
return ypos;
|
||||
}
|
||||
|
||||
setup() {
|
||||
let gnome_shell_version = imports.misc.config.PACKAGE_VERSION;
|
||||
let gnome_shell_major = /^([0-9]+)\.([0-9]+)(\.([0-9]+)(\..*)?)?$/.exec(gnome_shell_version)[1];
|
||||
|
||||
this.margin_top = 12;
|
||||
this.margin_bottom = this.margin_top;
|
||||
this.margin_start = 48;
|
||||
|
@ -48,7 +103,7 @@ const TweaksSystemMenuSettings = GObject.registerClass(class TweaksSystemMenuSet
|
|||
this.title_label = new Gtk.Label({
|
||||
use_markup: true,
|
||||
label: '<span size="large" weight="heavy">'
|
||||
+_('Tweaks in System Menu')+'</span>',
|
||||
+_('Tweaks & Extensions in System Menu')+'</span>',
|
||||
hexpand: true,
|
||||
halign: Gtk.Align.CENTER
|
||||
});
|
||||
|
@ -79,29 +134,10 @@ const TweaksSystemMenuSettings = GObject.registerClass(class TweaksSystemMenuSet
|
|||
|
||||
ypos += 1;
|
||||
|
||||
let sschema = this._settings.settings_schema.get_key('position');
|
||||
descr = _(sschema.get_description());
|
||||
this.position_label = new Gtk.Label({
|
||||
label: _("Menu position:"),
|
||||
halign: Gtk.Align.START
|
||||
});
|
||||
this.position_label.set_tooltip_text(descr);
|
||||
let position_range = sschema.get_range().deep_unpack()[1].deep_unpack()
|
||||
this.position_control = new Gtk.SpinButton({
|
||||
adjustment: new Gtk.Adjustment({
|
||||
lower: position_range[0],
|
||||
upper: position_range[1],
|
||||
step_increment: 1
|
||||
}),
|
||||
halign: Gtk.Align.END
|
||||
});
|
||||
this.position_control.set_tooltip_text(descr);
|
||||
this.attach(this.position_label, 1, ypos, 1, 1);
|
||||
this.attach(this.position_control, 2, ypos, 1, 1);
|
||||
this._settings.bind('position', this.position_control,
|
||||
'value', Gio.SettingsBindFlags.DEFAULT);
|
||||
|
||||
ypos += 1;
|
||||
ypos = this._addEntry(ypos, 'tweaks', _("Show Tweaks:"), _("Tweaks position:"));
|
||||
if (gnome_shell_major >= 40) {
|
||||
ypos = this._addEntry(ypos, 'extensions', _("Show Extensions:"), _("Extensions position:"));
|
||||
}
|
||||
|
||||
descr = _(this._settings.settings_schema.get_key('debug').get_description());
|
||||
this.debug_label = new Gtk.Label({label: _("Debug:"), halign: Gtk.Align.START});
|
||||
|
@ -117,7 +153,7 @@ const TweaksSystemMenuSettings = GObject.registerClass(class TweaksSystemMenuSet
|
|||
this.copyright_label = new Gtk.Label({
|
||||
use_markup: true,
|
||||
label: '<span size="small">'
|
||||
+ _('Copyright © 2019, 2020 Philippe Troin (<a href="https://github.com/F-i-f">F-i-f</a> on GitHub)')
|
||||
+ _('Copyright © 2019-2021 Philippe Troin (<a href="https://github.com/F-i-f">F-i-f</a> on GitHub)')
|
||||
+ '</span>',
|
||||
hexpand: true,
|
||||
halign: Gtk.Align.CENTER,
|
||||
|
@ -136,7 +172,10 @@ function init() {
|
|||
function buildPrefsWidget() {
|
||||
let widget = new TweaksSystemMenuSettings();
|
||||
widget.setup();
|
||||
widget.show_all();
|
||||
// show_all() is only available/necessary on GTK < 4.0.
|
||||
if (widget.show_all !== undefined) {
|
||||
widget.show_all();
|
||||
}
|
||||
|
||||
return widget;
|
||||
}
|
||||
|
|
|
@ -1,13 +1,34 @@
|
|||
<schemalist gettext-domain="tweaks-system-menu">
|
||||
<schema id="org.gnome.shell.extensions.tweaks-system-menu" path="/org/gnome/shell/extensions/tweaks-system-menu/">
|
||||
<key name="position" type="i">
|
||||
<key name="tweaks-enable" type="b">
|
||||
<default>true</default>
|
||||
<summary>Tweaks should be shown.</summary>
|
||||
<description>If set, the Gnome Tweaks button is
|
||||
shown.</description>
|
||||
</key>
|
||||
<key name="tweaks-position" type="i">
|
||||
<default>-1</default>
|
||||
<range min="-1" max="99"/>
|
||||
<summary>Position of the button.</summary>
|
||||
<summary>Position of the Tweaks button.</summary>
|
||||
<description>If set to -1, the position is automatic: Tweaks
|
||||
will show up after Settings. If set to zero or more, the actual
|
||||
launcher position on the system menu.</description>
|
||||
</key>
|
||||
<key name="extensions-enable" type="b">
|
||||
<default>true</default>
|
||||
<summary>Extensions should be shown.</summary>
|
||||
<description>If set, the Shell Extensions button is
|
||||
shown.</description>
|
||||
</key>
|
||||
<key name="extensions-position" type="i">
|
||||
<default>-1</default>
|
||||
<range min="-1" max="99"/>
|
||||
<summary>Position of the Extensions button.</summary>
|
||||
<description>If set to -1, the position is automatic: Extensions
|
||||
will show up after Tweaks (if shown), or Settings. If set to
|
||||
zero or more, the actual launcher position on the system
|
||||
menu.</description>
|
||||
</key>
|
||||
<key name="debug" type="b">
|
||||
<default>false</default>
|
||||
<summary>Debugging.</summary>
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
var VERSION = parseInt(imports.misc.config.PACKAGE_VERSION.replace(/^3\./, '').split('.')[0])
|
|
@ -9,7 +9,8 @@ const SETTINGS = Convenience.getSettings()
|
|||
const WM_PREFS = Convenience.getPreferences()
|
||||
|
||||
const USER_CONFIG = GLib.get_user_config_dir()
|
||||
const USER_STYLES = `${USER_CONFIG}/gtk-3.0/gtk.css`
|
||||
const USER_STYLES_GTK3 = `${USER_CONFIG}/gtk-3.0/gtk.css`
|
||||
const USER_STYLES_GTK4 = `${USER_CONFIG}/gtk-4.0/gtk.css`
|
||||
|
||||
function fileExists(path) {
|
||||
return GLib.file_test(path, GLib.FileTest.EXISTS)
|
||||
|
@ -33,16 +34,21 @@ function getFileContents(path) {
|
|||
}
|
||||
|
||||
function setFileContents(path, contents) {
|
||||
if (!fileExists(path)) {
|
||||
const dirname = GLib.path_get_dirname(path)
|
||||
GLib.mkdir_with_parents(dirname, parseInt('0700', 8))
|
||||
}
|
||||
|
||||
GLib.file_set_contents(path, contents)
|
||||
}
|
||||
|
||||
function resetGtkStyles() {
|
||||
let style = getFileContents(USER_STYLES)
|
||||
function resetGtkStyles(filepath) {
|
||||
let style = getFileContents(filepath)
|
||||
|
||||
style = style.replace(/\/\* UNITE ([\s\S]*?) UNITE \*\/\n/g, '')
|
||||
style = style.replace(/@import.*unite@hardpixel\.eu.*css['"]\);\n/g, '')
|
||||
|
||||
setFileContents(USER_STYLES, style)
|
||||
setFileContents(filepath, style)
|
||||
}
|
||||
|
||||
var Signals = class Signals {
|
||||
|
@ -154,22 +160,23 @@ var WidgetStyle = class WidgetStyle {
|
|||
}
|
||||
|
||||
var GtkStyle = class GtkStyle {
|
||||
constructor(name, contents) {
|
||||
constructor(filepath, name, contents) {
|
||||
this.filepath = filepath
|
||||
this.contents = `/* UNITE ${name} */\n${contents}\n/* ${name} UNITE */\n`
|
||||
}
|
||||
|
||||
get existing() {
|
||||
return getFileContents(USER_STYLES)
|
||||
return getFileContents(this.filepath)
|
||||
}
|
||||
|
||||
load() {
|
||||
const style = this.contents + this.existing
|
||||
setFileContents(USER_STYLES, style)
|
||||
setFileContents(this.filepath, style)
|
||||
}
|
||||
|
||||
unload() {
|
||||
const style = this.existing.replace(this.contents, '')
|
||||
setFileContents(USER_STYLES, style)
|
||||
setFileContents(this.filepath, style)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -214,9 +221,14 @@ var Styles = class Styles {
|
|||
this.setStyle(name, WidgetStyle, widget, styles)
|
||||
}
|
||||
|
||||
addGtkStyle(name, contents) {
|
||||
addGtk3Style(name, contents) {
|
||||
this.deleteStyle(name)
|
||||
this.setStyle(name, GtkStyle, name, contents)
|
||||
this.setStyle(name, GtkStyle, USER_STYLES_GTK3, name, contents)
|
||||
}
|
||||
|
||||
addGtk4Style(name, contents) {
|
||||
this.deleteStyle(name)
|
||||
this.setStyle(name, GtkStyle, USER_STYLES_GTK4, name, contents)
|
||||
}
|
||||
|
||||
removeAll() {
|
||||
|
@ -226,4 +238,5 @@ var Styles = class Styles {
|
|||
}
|
||||
}
|
||||
|
||||
resetGtkStyles()
|
||||
resetGtkStyles(USER_STYLES_GTK3)
|
||||
resetGtkStyles(USER_STYLES_GTK4)
|
||||
|
|
|
@ -3,13 +3,11 @@ const St = imports.gi.St
|
|||
const Clutter = imports.gi.Clutter
|
||||
const GtkSettings = imports.gi.Gtk.Settings.get_default()
|
||||
const Main = imports.ui.main
|
||||
const Config = imports.misc.config
|
||||
const Unite = imports.misc.extensionUtils.getCurrentExtension()
|
||||
const AppMenu = Main.panel.statusArea.appMenu
|
||||
const AggMenu = Main.panel.statusArea.aggregateMenu
|
||||
const Handlers = Unite.imports.handlers
|
||||
|
||||
const VERSION = parseInt(Config.PACKAGE_VERSION.split('.')[1])
|
||||
const VERSION = Unite.imports.constants.VERSION
|
||||
|
||||
function actorHasClass(actor, name) {
|
||||
return actor.has_style_class_name && actor.has_style_class_name(name)
|
||||
|
@ -81,27 +79,29 @@ var LayoutManager = GObject.registerClass(
|
|||
'hide-app-menu-icon', this._onHideAppMenuIcon.bind(this)
|
||||
)
|
||||
|
||||
this.settings.connect(
|
||||
'hide-app-menu-arrow', this._onHideAppMenuArrow.bind(this)
|
||||
)
|
||||
if (VERSION < 40) {
|
||||
this.settings.connect(
|
||||
'hide-app-menu-arrow', this._onHideAppMenuArrow.bind(this)
|
||||
)
|
||||
|
||||
this.settings.connect(
|
||||
'hide-aggregate-menu-arrow', this._onHideAggMenuArrow.bind(this)
|
||||
)
|
||||
this.settings.connect(
|
||||
'hide-aggregate-menu-arrow', this._onHideAggMenuArrow.bind(this)
|
||||
)
|
||||
|
||||
this.settings.connect(
|
||||
'hide-dropdown-arrows', this._onHideDropdownArrows.bind(this)
|
||||
)
|
||||
|
||||
this.settings.connect(
|
||||
'use-system-fonts', this._onChangeStyles.bind(this)
|
||||
)
|
||||
this.settings.connect(
|
||||
'hide-dropdown-arrows', this._onHideDropdownArrows.bind(this)
|
||||
)
|
||||
}
|
||||
|
||||
this.settings.connect(
|
||||
'reduce-panel-spacing', this._onChangeStyles.bind(this)
|
||||
)
|
||||
|
||||
if (VERSION < 36) {
|
||||
this.settings.connect(
|
||||
'use-system-fonts', this._onChangeStyles.bind(this)
|
||||
)
|
||||
|
||||
this.signals.connect(
|
||||
GtkSettings, 'notify::gtk-font-name', this._onChangeStyles.bind(this)
|
||||
)
|
||||
|
@ -245,18 +245,26 @@ var LayoutManager = GObject.registerClass(
|
|||
activate() {
|
||||
this._onNotificationsChange()
|
||||
this._onHideAppMenuIcon()
|
||||
this._onHideAppMenuArrow()
|
||||
this._onHideAggMenuArrow()
|
||||
this._onHideDropdownArrows()
|
||||
|
||||
if (VERSION < 40) {
|
||||
this._onHideAppMenuArrow()
|
||||
this._onHideAggMenuArrow()
|
||||
this._onHideDropdownArrows()
|
||||
}
|
||||
|
||||
this._onChangeStyles()
|
||||
}
|
||||
|
||||
destroy() {
|
||||
this._resetNotifications()
|
||||
this._resetAppMenuIcon()
|
||||
this._resetAppMenuArrow()
|
||||
this._resetAggMenuArrow()
|
||||
this._resetDropdownArrows()
|
||||
|
||||
if (VERSION < 40) {
|
||||
this._resetAppMenuArrow()
|
||||
this._resetAggMenuArrow()
|
||||
this._resetDropdownArrows()
|
||||
}
|
||||
|
||||
this._resetStyles()
|
||||
this._syncStyles()
|
||||
|
||||
|
|
|
@ -8,9 +8,10 @@
|
|||
"3.34",
|
||||
"3.32",
|
||||
"3.36",
|
||||
"3.38"
|
||||
"3.38",
|
||||
"40.0"
|
||||
],
|
||||
"url": "https://github.com/hardpixel/unite-shell",
|
||||
"uuid": "unite@hardpixel.eu",
|
||||
"version": 45
|
||||
"version": 48
|
||||
}
|
|
@ -10,14 +10,12 @@ const Shell = imports.gi.Shell
|
|||
const AppSystem = imports.gi.Shell.AppSystem.get_default()
|
||||
const WinTracker = imports.gi.Shell.WindowTracker.get_default()
|
||||
const Main = imports.ui.main
|
||||
const Config = imports.misc.config
|
||||
const Unite = imports.misc.extensionUtils.getCurrentExtension()
|
||||
const AppMenu = Main.panel.statusArea.appMenu
|
||||
const Activities = Main.panel.statusArea.activities
|
||||
const Buttons = Unite.imports.buttons
|
||||
const Handlers = Unite.imports.handlers
|
||||
|
||||
const VERSION = parseInt(Config.PACKAGE_VERSION.split('.')[1])
|
||||
const VERSION = Unite.imports.constants.VERSION
|
||||
|
||||
var PanelExtension = class PanelExtension {
|
||||
constructor(settings, key, callback) {
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
const GObject = imports.gi.GObject
|
||||
const Gtk = imports.gi.Gtk
|
||||
const Config = imports.misc.config
|
||||
const Unite = imports.misc.extensionUtils.getCurrentExtension()
|
||||
const Convenience = Unite.imports.convenience
|
||||
|
||||
const VERSION = parseInt(Config.PACKAGE_VERSION.split('.')[1])
|
||||
const VERSION = Unite.imports.constants.VERSION
|
||||
const TEMPLATE = VERSION < 40 ? 'settings-gtk3.ui' : 'settings-gtk4.ui'
|
||||
|
||||
var PrefsWidget = GObject.registerClass(
|
||||
class UnitePrefsWidget extends Gtk.Box {
|
||||
|
@ -13,17 +12,14 @@ var PrefsWidget = GObject.registerClass(
|
|||
super._init(params)
|
||||
|
||||
this._buildable = new Gtk.Builder()
|
||||
this._buildable.add_from_file(`${Unite.path}/settings.ui`)
|
||||
this._buildable.add_from_file(`${Unite.path}/${TEMPLATE}`)
|
||||
|
||||
this._container = this._getWidget('prefs_widget')
|
||||
this.add(this._container)
|
||||
|
||||
if (VERSION >= 36) {
|
||||
const fonts = this._getWidget('use_system_fonts_section')
|
||||
|
||||
fonts.set_no_show_all(true)
|
||||
fonts.set_visible(false)
|
||||
fonts.set_sensitive(false)
|
||||
if (VERSION < 40) {
|
||||
this.add(this._container)
|
||||
} else {
|
||||
this.append(this._container)
|
||||
}
|
||||
|
||||
this._bindStrings()
|
||||
|
@ -33,11 +29,37 @@ var PrefsWidget = GObject.registerClass(
|
|||
this._bindIntegers()
|
||||
}
|
||||
|
||||
startup() {
|
||||
if (VERSION < 40) {
|
||||
this.show_all()
|
||||
}
|
||||
|
||||
if (VERSION >= 36) {
|
||||
this._hideSetting('use-system-fonts')
|
||||
}
|
||||
|
||||
if (VERSION >= 40) {
|
||||
this._disableSetting('hide-dropdown-arrows')
|
||||
this._disableSetting('hide-aggregate-menu-arrow')
|
||||
this._disableSetting('hide-app-menu-arrow')
|
||||
}
|
||||
}
|
||||
|
||||
_getWidget(name) {
|
||||
let widgetName = name.replace(/-/g, '_')
|
||||
return this._buildable.get_object(widgetName)
|
||||
}
|
||||
|
||||
_hideSetting(name) {
|
||||
const widget = this._getWidget(`${name}_section`)
|
||||
widget.set_visible(false)
|
||||
}
|
||||
|
||||
_disableSetting(name) {
|
||||
const widget = this._getWidget(`${name}_section`)
|
||||
widget.set_sensitive(false)
|
||||
}
|
||||
|
||||
_bindInput(setting, prop) {
|
||||
let widget = this._getWidget(setting)
|
||||
this._settings.bind(setting, widget, prop, this._settings.DEFAULT_BINDING)
|
||||
|
@ -85,7 +107,7 @@ function init() {
|
|||
|
||||
function buildPrefsWidget() {
|
||||
let widget = new PrefsWidget()
|
||||
widget.show_all()
|
||||
widget.startup()
|
||||
|
||||
return widget
|
||||
}
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
<value value="18" nick="breeze" />
|
||||
<value value="19" nick="prof-gnome" />
|
||||
<value value="20" nick="flat-remix" />
|
||||
<value value="21" nick="adwaita-dark" />
|
||||
<value value="22" nick="canta" />
|
||||
</enum>
|
||||
|
||||
<enum id="org.gnome.shell.extensions.unite.hideTitlebars">
|
||||
|
|
|
@ -47,11 +47,12 @@
|
|||
<object class="GtkSwitch" id="extend_left_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -86,11 +87,12 @@
|
|||
<object class="GtkSwitch" id="autofocus_windows">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -125,11 +127,12 @@
|
|||
<object class="GtkSwitch" id="show_legacy_tray">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -164,11 +167,12 @@
|
|||
<object class="GtkSwitch" id="show_desktop_name">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -203,11 +207,12 @@
|
|||
<object class="GtkSwitch" id="enable_titlebar_actions">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -242,11 +247,12 @@
|
|||
<object class="GtkSwitch" id="restrict_to_primary_screen">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -282,6 +288,7 @@
|
|||
<property name="width-request">170</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">1</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Never</item>
|
||||
|
@ -290,7 +297,7 @@
|
|||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -326,6 +333,7 @@
|
|||
<property name="width-request">170</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">2</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Never</item>
|
||||
|
@ -336,7 +344,7 @@
|
|||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -372,6 +380,7 @@
|
|||
<property name="width-request">170</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">2</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Never</item>
|
||||
|
@ -382,7 +391,7 @@
|
|||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -418,6 +427,7 @@
|
|||
<property name="width-request">170</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">2</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Never</item>
|
||||
|
@ -428,7 +438,7 @@
|
|||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -464,6 +474,7 @@
|
|||
<property name="width-request">170</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">2</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Center</item>
|
||||
|
@ -472,7 +483,7 @@
|
|||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -486,19 +497,14 @@
|
|||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="tab-expand">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child type="tab">
|
||||
<object class="GtkLabel" id="general_label">
|
||||
<property name="hexpand">True</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">General</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="tab-fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="appearance_prefs">
|
||||
|
@ -534,11 +540,12 @@
|
|||
<object class="GtkSwitch" id="use_system_fonts">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -573,10 +580,11 @@
|
|||
<object class="GtkSwitch" id="greyscale_tray_icons">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -611,11 +619,12 @@
|
|||
<object class="GtkSwitch" id="hide_dropdown_arrows">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -650,10 +659,11 @@
|
|||
<object class="GtkSwitch" id="hide_aggregate_menu_arrow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -688,11 +698,12 @@
|
|||
<object class="GtkSwitch" id="hide_app_menu_arrow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -727,11 +738,12 @@
|
|||
<object class="GtkSwitch" id="hide_app_menu_icon">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -766,11 +778,12 @@
|
|||
<object class="GtkSwitch" id="reduce_panel_spacing">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -806,10 +819,11 @@
|
|||
<property name="width-request">170</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="text" translatable="yes">GNOME Desktop</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -844,11 +858,12 @@
|
|||
<property name="width-request">170</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="text" translatable="yes">0</property>
|
||||
<property name="adjustment">maxwidth_appmenu_adjustment</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -883,6 +898,7 @@
|
|||
<property name="width-request">170</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">2</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Start</item>
|
||||
|
@ -891,7 +907,7 @@
|
|||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -908,7 +924,6 @@
|
|||
<object class="GtkBox" id="window_buttons_placement_section">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="no-show-all">True</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
|
@ -928,6 +943,7 @@
|
|||
<property name="width-request">170</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">auto</property>
|
||||
<items>
|
||||
<item id="auto" translatable="yes">Auto</item>
|
||||
|
@ -938,7 +954,7 @@
|
|||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -955,7 +971,6 @@
|
|||
<object class="GtkBox" id="window_buttons_theme_section">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="no-show-all">True</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
|
@ -975,6 +990,7 @@
|
|||
<property name="width-request">170</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">0</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Default Dark</item>
|
||||
|
@ -998,10 +1014,12 @@
|
|||
<item id="18" translatable="yes">Breeze</item>
|
||||
<item id="19" translatable="yes">Prof-Gnome</item>
|
||||
<item id="20" translatable="yes">Flat Remix</item>
|
||||
<item id="21" translatable="yes">Adwaita Dark</item>
|
||||
<item id="22" translatable="yes">Canta</item>
|
||||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
|
@ -1015,21 +1033,14 @@
|
|||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
<property name="tab-expand">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child type="tab">
|
||||
<object class="GtkLabel" id="appearance_label">
|
||||
<property name="hexpand">True</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Appearance</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
<property name="tab-fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
|
@ -0,0 +1,618 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="unite">
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="GtkAdjustment" id="maxwidth_appmenu_adjustment">
|
||||
<property name="upper">1000</property>
|
||||
<property name="step-increment">1</property>
|
||||
<property name="page-increment">10</property>
|
||||
</object>
|
||||
<object class="GtkNotebook" id="prefs_widget">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="show-border">0</property>
|
||||
<property name="scrollable">1</property>
|
||||
<child>
|
||||
<object class="GtkNotebookPage">
|
||||
<property name="child">
|
||||
<object class="GtkBox" id="general_prefs">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="margin-start">20</property>
|
||||
<property name="margin-end">20</property>
|
||||
<property name="margin-top">20</property>
|
||||
<property name="margin-bottom">20</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">15</property>
|
||||
<property name="homogeneous">1</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="extend_left_box_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Extend top bar left box</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="extend_left_box">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="autofocus_windows_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Auto focus new windows</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="autofocus_windows">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="show_legacy_tray_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Show system tray in top bar</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show_legacy_tray">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="show_desktop_name_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Show desktop name in top bar</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="show_desktop_name">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="enable_titlebar_actions_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Enable titlebar actions on top bar click</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="enable_titlebar_actions">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="restrict_to_primary_screen_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Restrict functionalities to the primary screen</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="restrict_to_primary_screen">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="hide_activities_button_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Hide activities button</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="hide_activities_button">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="width-request">170</property>
|
||||
<property name="can-focus">0</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">1</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Never</item>
|
||||
<item id="1" translatable="yes">Auto</item>
|
||||
<item id="2" translatable="yes">Always</item>
|
||||
</items>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="hide_window_titlebars_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Hide window titlebars</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="hide_window_titlebars">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="width-request">170</property>
|
||||
<property name="can-focus">0</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">2</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Never</item>
|
||||
<item id="1" translatable="yes">Tiled</item>
|
||||
<item id="2" translatable="yes">Maximized</item>
|
||||
<item id="3" translatable="yes">Both</item>
|
||||
<item id="4" translatable="yes">Always</item>
|
||||
</items>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="show_window_title_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Show window title in app menu</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="show_window_title">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="width-request">170</property>
|
||||
<property name="can-focus">0</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">2</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Never</item>
|
||||
<item id="1" translatable="yes">Tiled</item>
|
||||
<item id="2" translatable="yes">Maximized</item>
|
||||
<item id="3" translatable="yes">Both</item>
|
||||
<item id="4" translatable="yes">Always</item>
|
||||
</items>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="show_window_buttons_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Show window buttons in top bar</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="show_window_buttons">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="width-request">170</property>
|
||||
<property name="can-focus">0</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">2</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Never</item>
|
||||
<item id="1" translatable="yes">Tiled</item>
|
||||
<item id="2" translatable="yes">Maximized</item>
|
||||
<item id="3" translatable="yes">Both</item>
|
||||
<item id="4" translatable="yes">Always</item>
|
||||
</items>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="notifications_position_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Notification messages position</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="notifications_position">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="width-request">170</property>
|
||||
<property name="can-focus">0</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">2</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Center</item>
|
||||
<item id="1" translatable="yes">Left</item>
|
||||
<item id="2" translatable="yes">Right</item>
|
||||
</items>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
<property name="tab">
|
||||
<object class="GtkLabel" id="general_label">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="can-focus">0</property>
|
||||
<property name="label" translatable="yes">General</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkNotebookPage">
|
||||
<property name="child">
|
||||
<object class="GtkBox" id="appearance_prefs">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="margin-start">20</property>
|
||||
<property name="margin-end">20</property>
|
||||
<property name="margin-top">20</property>
|
||||
<property name="margin-bottom">20</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">15</property>
|
||||
<property name="homogeneous">1</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="use_system_fonts_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Apply system fonts to shell theme</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="use_system_fonts">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="greyscale_tray_icons_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Convert tray icons to greyscale</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="greyscale_tray_icons">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="hide_dropdown_arrows_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Hide top bar dropdown arrows</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="hide_dropdown_arrows">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="hide_aggregate_menu_arrow_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Hide aggregate menu dropdown arrow</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="hide_aggregate_menu_arrow">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="hide_app_menu_arrow_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Hide app menu dropdown arrow</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="hide_app_menu_arrow">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="hide_app_menu_icon_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Hide app menu application icon</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="hide_app_menu_icon">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="reduce_panel_spacing_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Reduce top bar items spacing</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="reduce_panel_spacing">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="active">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="desktop_name_text_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Top bar desktop name text</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="desktop_name_text">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="width-request">170</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="text" translatable="yes">GNOME Desktop</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="app_menu_max_width_section">
|
||||
<property name="can-focus">0</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Max width for the app menu</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="app_menu_max_width">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="width-request">170</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="text" translatable="yes">0</property>
|
||||
<property name="adjustment">maxwidth_appmenu_adjustment</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="app_menu_ellipsize_mode_section">
|
||||
<property name="can-focus">0</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Ellipsis mode for app menu</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="app_menu_ellipsize_mode">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="width-request">170</property>
|
||||
<property name="can-focus">0</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">2</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Start</item>
|
||||
<item id="1" translatable="yes">Middle</item>
|
||||
<item id="2" translatable="yes">End</item>
|
||||
</items>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="window_buttons_placement_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Top bar window buttons position</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="window_buttons_placement">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="width-request">170</property>
|
||||
<property name="can-focus">0</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">auto</property>
|
||||
<items>
|
||||
<item id="auto" translatable="yes">Auto</item>
|
||||
<item id="left" translatable="yes">Left</item>
|
||||
<item id="right" translatable="yes">Right</item>
|
||||
<item id="first" translatable="yes">First</item>
|
||||
<item id="last" translatable="yes">Last</item>
|
||||
</items>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="window_buttons_theme_section">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="spacing">50</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="can-focus">0</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="label" translatable="yes">Top bar window buttons theme</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="window_buttons_theme">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="width-request">170</property>
|
||||
<property name="can-focus">0</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="active-id">0</property>
|
||||
<items>
|
||||
<item id="0" translatable="yes">Default Dark</item>
|
||||
<item id="1" translatable="yes">Default Light</item>
|
||||
<item id="2" translatable="yes">Ambiance</item>
|
||||
<item id="3" translatable="yes">Radiance</item>
|
||||
<item id="4" translatable="yes">Arc Dark</item>
|
||||
<item id="5" translatable="yes">Arc Light</item>
|
||||
<item id="6" translatable="yes">United Dark</item>
|
||||
<item id="7" translatable="yes">United Light</item>
|
||||
<item id="8" translatable="yes">Materia Dark</item>
|
||||
<item id="9" translatable="yes">Materia Light</item>
|
||||
<item id="10" translatable="yes">OSX Arc</item>
|
||||
<item id="11" translatable="yes">Vertex</item>
|
||||
<item id="12" translatable="yes">Pop Dark</item>
|
||||
<item id="13" translatable="yes">Pop Light</item>
|
||||
<item id="14" translatable="yes">Vimix</item>
|
||||
<item id="15" translatable="yes">Yaru</item>
|
||||
<item id="16" translatable="yes">Arrongin</item>
|
||||
<item id="17" translatable="yes">Telinkrin</item>
|
||||
<item id="18" translatable="yes">Breeze</item>
|
||||
<item id="19" translatable="yes">Prof-Gnome</item>
|
||||
<item id="20" translatable="yes">Flat Remix</item>
|
||||
<item id="21" translatable="yes">Adwaita Dark</item>
|
||||
<item id="22" translatable="yes">Canta</item>
|
||||
</items>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
<property name="tab">
|
||||
<object class="GtkLabel" id="appearance_label">
|
||||
<property name="hexpand">1</property>
|
||||
<property name="can-focus">0</property>
|
||||
<property name="label" translatable="yes">Appearance</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
|
@ -3,10 +3,10 @@ window .titlebar:not(.selection-mode) {
|
|||
padding-left: 0;
|
||||
}
|
||||
|
||||
window headerbar ~ headerbar:not(.selection-mode),
|
||||
window headerbar ~ .titlebar:not(.selection-mode),
|
||||
window .titlebar ~ .titlebar:not(.selection-mode),
|
||||
window .titlebar ~ headerbar:not(.selection-mode) {
|
||||
window headerbar ~ headerbar:not(.selection-mode):not(.windowhandle),
|
||||
window headerbar ~ .titlebar:not(.selection-mode):not(.windowhandle),
|
||||
window .titlebar ~ .titlebar:not(.selection-mode):not(.windowhandle),
|
||||
window .titlebar ~ headerbar:not(.selection-mode):not(.windowhandle) {
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
|
@ -3,10 +3,10 @@
|
|||
padding-left: 0;
|
||||
}
|
||||
|
||||
.maximized headerbar ~ headerbar:not(.selection-mode),
|
||||
.maximized headerbar ~ .titlebar:not(.selection-mode),
|
||||
.maximized .titlebar ~ .titlebar:not(.selection-mode),
|
||||
.maximized .titlebar ~ headerbar:not(.selection-mode) {
|
||||
.maximized headerbar ~ headerbar:not(.selection-mode):not(.windowhandle),
|
||||
.maximized headerbar ~ .titlebar:not(.selection-mode):not(.windowhandle),
|
||||
.maximized .titlebar ~ .titlebar:not(.selection-mode):not(.windowhandle),
|
||||
.maximized .titlebar ~ headerbar:not(.selection-mode):not(.windowhandle) {
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
|
@ -3,10 +3,10 @@
|
|||
padding-left: 0;
|
||||
}
|
||||
|
||||
.tiled headerbar ~ headerbar:not(.selection-mode),
|
||||
.tiled headerbar ~ .titlebar:not(.selection-mode),
|
||||
.tiled .titlebar ~ .titlebar:not(.selection-mode),
|
||||
.tiled .titlebar ~ headerbar:not(.selection-mode) {
|
||||
.tiled headerbar ~ headerbar:not(.selection-mode):not(.windowhandle),
|
||||
.tiled headerbar ~ .titlebar:not(.selection-mode):not(.windowhandle),
|
||||
.tiled .titlebar ~ .titlebar:not(.selection-mode):not(.windowhandle),
|
||||
.tiled .titlebar ~ headerbar:not(.selection-mode):not(.windowhandle) {
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
|
@ -4,7 +4,8 @@ window > headerbar > headerbar:not(.selection-mode),
|
|||
window > .titlebar > .titlebar:not(.selection-mode),
|
||||
window > .titlebar > stack > headerbar:not(.selection-mode),
|
||||
window headerbar:last-child:not(.selection-mode),
|
||||
window .titlebar:last-child:not(.selection-mode) {
|
||||
window .titlebar:last-child:not(.selection-mode),
|
||||
window .windowhandle:not(.selection-mode) {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
|
@ -4,7 +4,8 @@
|
|||
.maximized > .titlebar > .titlebar:not(.selection-mode),
|
||||
.maximized > .titlebar > stack > headerbar:not(.selection-mode),
|
||||
.maximized headerbar:last-child:not(.selection-mode),
|
||||
.maximized .titlebar:last-child:not(.selection-mode) {
|
||||
.maximized .titlebar:last-child:not(.selection-mode),
|
||||
.maximized .windowhandle:not(.selection-mode) {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
|
@ -4,7 +4,8 @@
|
|||
.tiled > .titlebar > .titlebar:not(.selection-mode),
|
||||
.tiled > .titlebar > stack > headerbar:not(.selection-mode),
|
||||
.tiled headerbar:last-child:not(.selection-mode),
|
||||
.tiled .titlebar:last-child:not(.selection-mode) {
|
||||
.tiled .titlebar:last-child:not(.selection-mode),
|
||||
.tiled .windowhandle:not(.selection-mode) {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
window headerbar windowhandle {
|
||||
margin-left: -6px;
|
||||
}
|
||||
|
||||
window headerbar windowcontrols.start {
|
||||
margin: 0 0 0 -200px;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
window .titlebar.default-decoration {
|
||||
margin: -200px 0 0;
|
||||
opacity: 0;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
.maximized headerbar windowhandle {
|
||||
margin-left: -6px;
|
||||
}
|
||||
|
||||
.maximized headerbar windowcontrols.start {
|
||||
margin: 0 0 0 -200px;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.maximized .titlebar.default-decoration {
|
||||
margin: -200px 0 0;
|
||||
opacity: 0;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
.tiled headerbar windowhandle {
|
||||
margin-left: -6px;
|
||||
}
|
||||
|
||||
.tiled headerbar windowcontrols.start {
|
||||
margin: 0 0 0 -200px;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.tiled .titlebar.default-decoration {
|
||||
margin: -200px 0 0;
|
||||
opacity: 0;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
window headerbar windowhandle {
|
||||
margin-right: -6px;
|
||||
}
|
||||
|
||||
window headerbar windowcontrols.end {
|
||||
margin: 0 -200px 0 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
window .titlebar.default-decoration {
|
||||
margin: -200px 0 0;
|
||||
opacity: 0;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
.maximized headerbar windowhandle {
|
||||
margin-right: -6px;
|
||||
}
|
||||
|
||||
.maximized headerbar windowcontrols.end {
|
||||
margin: 0 -200px 0 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.maximized .titlebar.default-decoration {
|
||||
margin: -200px 0 0;
|
||||
opacity: 0;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
.tiled headerbar windowhandle {
|
||||
margin-right: -6px;
|
||||
}
|
||||
|
||||
.tiled headerbar windowcontrols.end {
|
||||
margin: 0 -200px 0 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.tiled .titlebar.default-decoration {
|
||||
margin: -200px 0 0;
|
||||
opacity: 0;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" xmlns:v="https://vecta.io/nano"><defs><linearGradient y2="2.4013" x2="16.02" y1="15.5601" x1="16.02" id="A" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d1d1d" stop-opacity="0"/><stop offset="1" stop-opacity=".2008"/></linearGradient></defs><g transform="matrix(.73333333 0 0 .73333333 .26666748 .26666666)"><circle cx="16" cy="16" r="14.5" fill="#0e0e0e" stroke="#1d1d1d"/><path d="M2.4992 16a13.5008 13.5008 0 0 1 27.0015 0" fill="none" stroke="url(#A)"/></g><path d="M8.2857 7.384l.4654.0005c.255.011.4397.1993.6177.3833l2.6345 2.6323 2.6656-2.6334c.266-.231.3764-.3769.6174-.3839l.4346.0004.0002 1.0347c0 .286-.1047-.1208-.3207.0792l-2.6346 2.6354 2.6035 2.6033c.188.188.3513.3837.3513.6487l.0002.9342-.4344.0002c-.265 0-.4589-.6645-.6479-.8525l-2.6345-2.6343-2.635 2.6339c-.1932.1851-.3814.8569-.6488.8525l-.4344.0006.0002-.935c.0001-.265.1636-.4594.3516-.6484l2.6351-2.6039L8.639 8.4975c-.205-.1929-.3804.2016-.3532-.0786z" fill="#070707"/><path d="M8.2861 8.2841l.4653.0005c.255.011.4397.1993.6177.3833l2.6343 2.6323 2.6654-2.6334c.266-.231.3764-.3769.6174-.3839l.4345.0004.0002.4347c0 .286-.1047.4793-.3207.6793l-2.6344 2.6354 2.6033 2.6033c.188.188.3513.3837.3513.6487l.0002.4339-.4344.0002c-.265 0-.4588-.1642-.6478-.3522l-2.6343-2.6343-2.6349 2.6339c-.1931.1851-.3813.3566-.6488.3522l-.4344.0006.0002-.4347c.0001-.265.1636-.4594.3516-.6484l2.6349-2.6039-2.6333-2.6343c-.205-.1929-.3804-.3986-.3532-.6788z" fill="#eeeeec"/></svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" xmlns:v="https://vecta.io/nano"><defs><linearGradient y2="-23.604" x2="45.021" y1="-9.472" x1="45.021" id="A" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d1d1d" stop-opacity="0"/><stop offset="1"/></linearGradient><linearGradient y2="-4.599" x2="45.02" y1="8.56" x1="45.02" id="B" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d1d1d" stop-opacity="0"/><stop offset="1" stop-color="#737373" stop-opacity=".322"/></linearGradient></defs><g transform="matrix(.733292 0 0 .733292 -20.998122 5.400376)"><circle cx="45" cy="9" r="14.501" fill="#373737" stroke="#1d1d1d"/><g fill="none"><path d="M31.498 9a13.502 13.502 0 1 1 27.003 0" stroke="url(#B)"/><path d="M30.501-9c0-8.007 6.491-14.499 14.499-14.499A14.5 14.5 0 0 1 59.499-9" transform="scale(1 -1)" stroke="url(#A)" stroke-width="1.002"/></g></g><path d="M8.286 7.384l.465.001c.255.011.44.199.618.383l2.634 2.632 2.666-2.633c.266-.231.376-.377.617-.384h.435v1.035c0 .286-.105-.121-.321.079l-2.635 2.635 2.603 2.603c.188.188.351.384.351.649v.934h-.434c-.265 0-.459-.664-.648-.852l-2.634-2.634-2.635 2.634c-.193.185-.381.857-.649.852h-.434v-.935c0-.265.164-.459.352-.648l2.635-2.604-2.633-2.634c-.205-.193-.38.202-.353-.079z" fill="#070707"/><path d="M8.286 8.284l.465.001c.255.011.44.199.618.383l2.634 2.632 2.665-2.633c.266-.231.376-.377.617-.384h.435v.435c0 .286-.105.479-.321.679l-2.634 2.635 2.603 2.603c.188.188.351.384.351.649v.434h-.434c-.265 0-.459-.164-.648-.352l-2.634-2.634-2.635 2.634c-.193.185-.381.357-.649.352l-.434.001v-.435c0-.265.164-.459.352-.648l2.635-2.604-2.633-2.634c-.205-.193-.38-.399-.353-.679z" fill="#eeeeec"/></svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" xmlns:v="https://vecta.io/nano"><path d="M8.2857 7.384l.4654.0005c.255.011.4397.1993.6177.3833l2.6345 2.6323 2.6656-2.6334c.266-.231.3764-.3769.6174-.3839l.4346.0004.0002 1.0347c0 .286-.1047-.1208-.3207.0792l-2.6346 2.6354 2.6035 2.6033c.188.188.3513.3837.3513.6487l.0002.9342-.4344.0002c-.265 0-.4589-.6645-.6479-.8525l-2.6345-2.6343-2.635 2.6339c-.1932.1851-.3814.8569-.6488.8525l-.4344.0006.0002-.935c.0001-.265.1636-.4594.3516-.6484l2.6351-2.6039L8.639 8.4975c-.205-.1929-.3804.2016-.3532-.0786z" fill="#070707"/><path d="M8.2861 8.2841l.4653.0005c.255.011.4397.1993.6177.3833l2.6343 2.6323 2.6654-2.6334c.266-.231.3764-.3769.6174-.3839l.4345.0004.0002.4347c0 .286-.1047.4793-.3207.6793l-2.6344 2.6354 2.6033 2.6033c.188.188.3513.3837.3513.6487l.0002.4339-.4344.0002c-.265 0-.4588-.1642-.6478-.3522l-2.6343-2.6343-2.6349 2.6339c-.1931.1851-.3813.3566-.6488.3522l-.4344.0006.0002-.4347c.0001-.265.1636-.4594.3516-.6484l2.6349-2.6039-2.6333-2.6343c-.205-.1929-.3804-.3986-.3532-.6788z" fill="#eeeeec"/></svg>
|
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" xmlns:v="https://vecta.io/nano"><defs><linearGradient y2="2.401" x2="16.02" y1="15.56" x1="16.02" id="A" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d1d1d" stop-opacity="0"/><stop offset="1" stop-opacity=".201"/></linearGradient></defs><g transform="matrix(.733333 0 0 .733333 .266667 .266667)"><circle cx="16" cy="16" r="14.5" fill="#0e0e0e" stroke="#1d1d1d"/><path d="M2.499 16a13.501 13.501 0 0 1 27.002 0" fill="none" stroke="url(#A)"/></g><path d="M8 7v8h8V7zm1 1h6v6H9z" fill="#070707"/><path d="M8 8v8h8V8zm1 1h6v6H9z" fill="#eeeeec"/></svg>
|
After Width: | Height: | Size: 630 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" xmlns:v="https://vecta.io/nano"><defs><linearGradient y2="-23.604" x2="45.021" y1="-9.472" x1="45.021" id="A" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d1d1d" stop-opacity="0"/><stop offset="1"/></linearGradient><linearGradient y2="-4.599" x2="45.02" y1="8.56" x1="45.02" id="B" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d1d1d" stop-opacity="0"/><stop offset="1" stop-color="#737373" stop-opacity=".322"/></linearGradient></defs><g transform="matrix(.733292 0 0 .733292 -20.998122 5.400376)"><circle cx="45" cy="9" r="14.501" fill="#373737" stroke="#1d1d1d"/><g fill="none"><path d="M31.498 9a13.502 13.502 0 1 1 27.003 0" stroke="url(#B)"/><path d="M30.501-9c0-8.007 6.491-14.499 14.499-14.499A14.5 14.5 0 0 1 59.499-9" transform="scale(1 -1)" stroke="url(#A)" stroke-width="1.002"/></g></g><path d="M8 7v8h8V7zm1 1h6v6H9z" fill="#070707"/><path d="M8 8v8h8V8zm1 1h6v6H9z" fill="#eeeeec"/></svg>
|
After Width: | Height: | Size: 1000 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" xmlns:v="https://vecta.io/nano"><path d="M8 7v8h8V7zm1 1h6v6H9z" fill="#070707"/><path d="M8 8v8h8V8zm1 1h6v6H9z" fill="#eeeeec"/></svg>
|
After Width: | Height: | Size: 200 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" xmlns:v="https://vecta.io/nano"><defs><linearGradient y2="2.4013" x2="16.02" y1="15.5601" x1="16.02" id="A" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d1d1d" stop-opacity="0"/><stop offset="1" stop-opacity=".2008"/></linearGradient></defs><g transform="matrix(.73333333 0 0 .73333333 .26666748 .26666666)"><circle cx="16" cy="16" r="14.5" fill="#0e0e0e" stroke="#1d1d1d"/><path d="M2.4992 16a13.5008 13.5008 0 0 1 27.0015 0" fill="none" stroke="url(#A)"/></g><g fill-rule="evenodd"><path d="M8 14h8v1H8z" fill="#070707"/><path d="M8 15h8v1H8z" fill="#eeeeec"/></g></svg>
|
After Width: | Height: | Size: 653 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" xmlns:v="https://vecta.io/nano"><defs><linearGradient y2="-23.604" x2="45.0214" y1="-9.4725" x1="45.0214" id="A" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d1d1d" stop-opacity="0"/><stop offset="1"/></linearGradient><linearGradient y2="-4.5994" x2="45.02" y1="8.56" x1="45.02" id="B" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d1d1d" stop-opacity="0"/><stop offset="1" stop-color="#737373" stop-opacity=".3216"/></linearGradient></defs><g transform="matrix(.73329161 0 0 .73329161 -20.998122 5.4003755)"><circle cx="45" cy="9" r="14.5009" fill="#373737" stroke="#1d1d1d"/><g fill="none"><path d="M31.4985 9a13.5015 13.5015 0 1 1 27.0031 0" stroke="url(#B)"/><path d="M30.5011-9c0-8.0075 6.4914-14.4989 14.4989-14.4989A14.499 14.499 0 0 1 59.4989-9" transform="scale(1 -1)" stroke="url(#A)" stroke-width="1.0023"/></g></g><g fill-rule="evenodd"><path d="M8 14h8v1H8z" fill="#070707"/><path d="M8 15h8v1H8z" fill="#eeeeec"/></g></svg>
|
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill-rule="evenodd" xmlns:v="https://vecta.io/nano"><path d="M8 14h8v1H8z" fill="#070707"/><path d="M8 15h8v1H8z" fill="#eeeeec"/></svg>
|
After Width: | Height: | Size: 200 B |
|
@ -0,0 +1,40 @@
|
|||
.window-button .icon {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.close .icon {
|
||||
background-image: url("close.svg");
|
||||
}
|
||||
|
||||
.close:hover .icon {
|
||||
background-image: url("close-hover.svg");
|
||||
}
|
||||
|
||||
.close:active .icon {
|
||||
background-image: url("close-active.svg");
|
||||
}
|
||||
|
||||
.minimize .icon {
|
||||
background-image: url("minimize.svg");
|
||||
}
|
||||
|
||||
.minimize:hover .icon {
|
||||
background-image: url("minimize-hover.svg");
|
||||
}
|
||||
|
||||
.minimize:active .icon {
|
||||
background-image: url("minimize-active.svg");
|
||||
}
|
||||
|
||||
.maximize .icon {
|
||||
background-image: url("maximize.svg");
|
||||
}
|
||||
|
||||
.maximize:hover .icon {
|
||||
background-image: url("maximize-hover.svg");
|
||||
}
|
||||
|
||||
.maximize:active .icon {
|
||||
background-image: url("maximize-active.svg");
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 4.233 4.233"><g style="display:inline"><g transform="matrix(.26458 0 0 .26458 -342.37 -65.352)" style="display:inline;opacity:1"><circle style="display:inline;opacity:.95;fill:#dc9a00;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" cx="1302" cy="255" r="7"/></g><path d="M91.626-150.638h.774a.778.778 0 0 1 .515.235l1.711 1.71 1.735-1.71c.199-.173.335-.23.515-.235h.75v.75c0 .215-.026.413-.187.563l-1.711 1.71 1.687 1.688a.76.76 0 0 1 .211.54v.75h-.75a.761.761 0 0 1-.539-.212l-1.71-1.71-1.712 1.71a.761.761 0 0 1-.539.211h-.75v-.75c0-.199.07-.398.211-.539l1.711-1.687-1.71-1.711a.681.681 0 0 1-.212-.563v-.75z" style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:.65;fill:#000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78125;marker:none;enable-background:new" transform="matrix(.26458 0 0 .26458 -22.92 41.18)"/><path style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" d="M86.625-155.638h16v16h-16z" transform="matrix(.26458 0 0 .26458 -22.92 41.18)"/></g></svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 4.233 4.233"><defs><linearGradient id="a"><stop stop-color="#FFAC00"/></linearGradient><linearGradient xlink:href="#a" id="b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.16667 0 0 1.16667 -217 -42.5)" x1="1296" y1="255" x2="1308" y2="255"/></defs><g style="display:inline"><g style="display:inline;opacity:1" transform="matrix(.26458 0 0 .26458 -342.37 -65.352)"><circle cy="255" cx="1302" style="display:inline;opacity:.95;fill:url(#b);fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" r="7"/></g><path style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:.5;fill:#000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78125;marker:none;enable-background:new" d="M91.626-150.638h.774a.778.778 0 0 1 .515.235l1.711 1.71 1.735-1.71c.199-.173.335-.23.515-.235h.75v.75c0 .215-.026.413-.187.563l-1.711 1.71 1.687 1.688a.76.76 0 0 1 .211.54v.75h-.75a.761.761 0 0 1-.539-.212l-1.71-1.71-1.712 1.71a.761.761 0 0 1-.539.211h-.75v-.75c0-.199.07-.398.211-.539l1.711-1.687-1.71-1.711a.681.681 0 0 1-.212-.563v-.75z" transform="matrix(.26458 0 0 .26458 -22.92 41.18)"/><path style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" d="M86.625-155.638h16v16h-16z" transform="matrix(.26458 0 0 .26458 -22.92 41.18)"/></g></svg>
|
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 4.233 4.233"><defs><linearGradient id="a"><stop stop-color="#FFAC00"/></linearGradient><linearGradient xlink:href="#a" id="b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.16667 0 0 1.16667 -217 -42.5)" x1="1296" y1="255" x2="1308" y2="255"/></defs><g style="display:inline"><g transform="matrix(.26458 0 0 .26458 -342.37 -65.352)" style="display:inline;opacity:1"><circle style="display:inline;opacity:.95;fill:url(#b);fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" cx="1302" cy="255" r="7"/></g><path style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" d="M86.625-155.638h16v16h-16z" transform="matrix(.26458 0 0 .26458 -22.92 41.18)"/></g></svg>
|
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 4.233 4.233"><g style="display:inline"><g style="display:inline;opacity:1" transform="matrix(.26458 0 0 .26458 -342.37 -65.352)"><circle cy="255" cx="1302" style="display:inline;opacity:.95;fill:#999;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" r="7"/><g style="fill:#c0e3ff;fill-opacity:1"><g style="display:inline;fill:#c0e3ff;fill-opacity:1"><path d="M87.8 972h3.381c.45 0 .817.368.82.819v3.382zm2.407 6.007h-3.395a.821.821 0 0 1-.819-.819v-3.395l4.214 4.214" style="opacity:.65;fill:#000;fill-opacity:1;fill-rule:evenodd;stroke:none" transform="translate(1213 -720)"/></g></g></g><path style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" d="M513-185.638h16v16h-16z" transform="matrix(.26458 0 0 .26458 -135.731 49.117)"/></g></svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 4.233 4.233"><g style="display:inline"><g transform="matrix(.26458 0 0 .26458 -342.37 -65.352)" style="display:inline;opacity:1"><circle style="display:inline;opacity:.95;fill:#b2b2b2;fill-opacity:.968379;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" cx="1302" cy="255" r="7"/><g style="fill:#c0e3ff;fill-opacity:1"><g style="display:inline;fill:#c0e3ff;fill-opacity:1"><path style="opacity:.5;fill:#000;fill-opacity:1;fill-rule:evenodd;stroke:none" d="M87.8 972h3.381c.45 0 .817.368.82.819v3.382zm2.407 6.007h-3.395a.821.821 0 0 1-.819-.819v-3.395l4.214 4.214" transform="translate(1213 -720)"/></g></g></g><path style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" d="M513-185.638h16v16h-16z" transform="matrix(.26458 0 0 .26458 -135.731 49.117)"/></g></svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 4.233 4.233"><g style="display:inline"><g style="display:inline;opacity:1" transform="matrix(.26458 0 0 .26458 -342.37 -65.352)"><circle cy="255" cx="1302" style="display:inline;opacity:.95;fill:#b2b2b2;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" r="7"/></g><path style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" d="M513-185.638h16v16h-16z" transform="matrix(.26458 0 0 .26458 -135.731 49.117)"/></g></svg>
|
After Width: | Height: | Size: 759 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 4.233 4.233"><g style="display:inline"><g style="display:inline;opacity:1" transform="matrix(.26458 0 0 .26458 -334.698 -65.352)"><circle cy="255" cx="1273" style="display:inline;opacity:.95;fill:#999;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" r="7"/><g style="display:inline;opacity:1;fill:#c0e3ff;fill-opacity:1"><g style="display:inline;fill:#c0e3ff;fill-opacity:1"><path style="color:#000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:.65;fill:#000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" d="M86 974v2h6v-2z" transform="translate(1184 -720)"/></g></g></g><path style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" d="M484-185.638h16v16h-16z" transform="matrix(.26458 0 0 .26458 -128.058 49.117)"/></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 4.233 4.233"><g style="display:inline"><g transform="matrix(.26458 0 0 .26458 -334.698 -65.352)" style="display:inline;opacity:1"><circle style="display:inline;opacity:.95;fill:#b2b2b2;fill-opacity:.968379;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" cx="1273" cy="255" r="7"/><g style="display:inline;opacity:1;fill:#c0e3ff;fill-opacity:1"><g style="display:inline;fill:#c0e3ff;fill-opacity:1"><path d="M86 974v2h6v-2z" style="color:#000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:.5;fill:#000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" transform="translate(1184 -720)"/></g></g></g><path style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" d="M484-185.638h16v16h-16z" transform="matrix(.26458 0 0 .26458 -128.058 49.117)"/></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 4.233 4.233"><g style="display:inline"><g style="display:inline;opacity:1" transform="matrix(.26458 0 0 .26458 -334.698 -65.352)"><circle cy="255" cx="1273" style="display:inline;opacity:.95;fill:#b2b2b2;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" r="7"/></g><path style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" d="M484-185.638h16v16h-16z" transform="matrix(.26458 0 0 .26458 -128.058 49.117)"/></g></svg>
|
After Width: | Height: | Size: 760 B |
|
@ -0,0 +1,40 @@
|
|||
.window-button .icon {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.close .icon {
|
||||
background-image: url("close.svg");
|
||||
}
|
||||
|
||||
.close:hover .icon {
|
||||
background-image: url("close-hover.svg");
|
||||
}
|
||||
|
||||
.close:active .icon {
|
||||
background-image: url("close-active.svg");
|
||||
}
|
||||
|
||||
.minimize .icon {
|
||||
background-image: url("minimize.svg");
|
||||
}
|
||||
|
||||
.minimize:hover .icon {
|
||||
background-image: url("minimize-hover.svg");
|
||||
}
|
||||
|
||||
.minimize:active .icon {
|
||||
background-image: url("minimize-active.svg");
|
||||
}
|
||||
|
||||
.maximize .icon {
|
||||
background-image: url("maximize.svg");
|
||||
}
|
||||
|
||||
.maximize:hover .icon {
|
||||
background-image: url("maximize-hover.svg");
|
||||
}
|
||||
|
||||
.maximize:active .icon {
|
||||
background-image: url("maximize-active.svg");
|
||||
}
|
|
@ -4,13 +4,11 @@ const GObject = imports.gi.GObject
|
|||
const Meta = imports.gi.Meta
|
||||
const WinTracker = imports.gi.Shell.WindowTracker.get_default()
|
||||
const Main = imports.ui.main
|
||||
const Config = imports.misc.config
|
||||
const Util = imports.misc.util
|
||||
const Unite = imports.misc.extensionUtils.getCurrentExtension()
|
||||
const AppMenu = Main.panel.statusArea.appMenu
|
||||
const Handlers = Unite.imports.handlers
|
||||
|
||||
const VERSION = parseInt(Config.PACKAGE_VERSION.split('.')[1])
|
||||
const VERSION = Unite.imports.constants.VERSION
|
||||
|
||||
const VALID_TYPES = [
|
||||
Meta.WindowType.NORMAL,
|
||||
|
@ -25,6 +23,14 @@ const MOTIF_HINTS = '_MOTIF_WM_HINTS'
|
|||
const _SHOW_FLAGS = ['0x2', '0x0', '0x1', '0x0', '0x0']
|
||||
const _HIDE_FLAGS = ['0x2', '0x0', '0x2', '0x0', '0x0']
|
||||
|
||||
function safeSpawn(command) {
|
||||
try {
|
||||
return GLib.spawn_command_line_sync(command)
|
||||
} catch (e) {
|
||||
return [false, Bytes.fromString('')]
|
||||
}
|
||||
}
|
||||
|
||||
function isValid(win) {
|
||||
return win && VALID_TYPES.includes(win.window_type)
|
||||
}
|
||||
|
@ -41,7 +47,7 @@ function getXid(win) {
|
|||
}
|
||||
|
||||
function getHint(xid, name, fallback) {
|
||||
const result = GLib.spawn_command_line_sync(`xprop -id ${xid} ${name}`)
|
||||
const result = safeSpawn(`xprop -id ${xid} ${name}`)
|
||||
const string = Bytes.toString(result[1])
|
||||
|
||||
if (!string.match(/=/)) {
|
||||
|
@ -381,7 +387,7 @@ var WindowManager = GObject.registerClass(
|
|||
)
|
||||
|
||||
this.settings.connect(
|
||||
'window-buttons-position', this._onStylesChange.bind(this)
|
||||
'button-layout', this._onStylesChange.bind(this)
|
||||
)
|
||||
|
||||
if (VERSION < 36) {
|
||||
|
@ -470,12 +476,14 @@ var WindowManager = GObject.registerClass(
|
|||
_onStylesChange() {
|
||||
if (this.hideTitlebars != 'never') {
|
||||
const variant = this.settings.get('window-buttons-position')
|
||||
const folder = `${Unite.path}/styles/buttons-${variant}`
|
||||
const content = `@import url('${folder}/${this.hideTitlebars}.css');`
|
||||
const folder = path => `${Unite.path}/styles/${path}/buttons-${variant}`
|
||||
const content = path => `@import url('${folder(path)}/${this.hideTitlebars}.css');`
|
||||
|
||||
this.styles.addGtkStyle('windowDecorations', content)
|
||||
this.styles.addGtk3Style('windowDecorationsGTK3', content('gtk3'))
|
||||
this.styles.addGtk4Style('windowDecorationsGTK4', content('gtk4'))
|
||||
} else {
|
||||
this.styles.deleteStyle('windowDecorations')
|
||||
this.styles.deleteStyle('windowDecorationsGTK3')
|
||||
this.styles.deleteStyle('windowDecorationsGTK4')
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
firefox.settings.services.mozilla.com:HSTS 0 18700 1647218225303,1,0,2
|
|
@ -1 +1 @@
|
|||
{"version":1,"listeners":{"remote-settings/monitor_changes":{"version":"\"1615665497160\"","sourceInfo":{"moduleURI":"resource://services-settings/remote-settings.js","symbolName":"remoteSettingsBroadcastHandler"}}}}
|
||||
{"version":1,"listeners":{"remote-settings/monitor_changes":{"version":"\"1617989709562\"","sourceInfo":{"moduleURI":"resource://services-settings/remote-settings.js","symbolName":"remoteSettingsBroadcastHandler"}}}}
|
|
@ -1,5 +1,5 @@
|
|||
[Compatibility]
|
||||
LastVersion=86.0.1_20210313191229/20210313191229
|
||||
LastVersion=87.0_20210322115435/20210322115435
|
||||
LastOSABI=Linux_x86_64-gcc3
|
||||
LastPlatformDir=/usr/lib/firefox
|
||||
LastAppDir=/usr/lib/firefox/browser
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"chrome-gnome-shell@gnome.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"wayback_machine@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"{9350bc42-47fb-4598-ae0f-825e3dd9ceba}":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"jid1-MnnxcxisBPnSXQ@jetpack":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"yayanotherspeeddial@bakadev.fr":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"uBlock0@raymondhill.net":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"formautofill@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"screenshots@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"webcompat@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"fxmonitor@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"default-theme@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"amazondotcom@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"bing@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"google@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"twitter@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"wikipedia@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"ddg@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"doh-rollout@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"ebay@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"reset-search-defaults@mozilla.com":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]}}
|
||||
{"chrome-gnome-shell@gnome.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"wayback_machine@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"{9350bc42-47fb-4598-ae0f-825e3dd9ceba}":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"jid1-MnnxcxisBPnSXQ@jetpack":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"yayanotherspeeddial@bakadev.fr":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"uBlock0@raymondhill.net":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"formautofill@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"screenshots@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"webcompat@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"fxmonitor@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"default-theme@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"bing@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"google@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"twitter@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"wikipedia@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"ddg@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"doh-rollout@mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"ebay@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"reset-search-defaults@mozilla.com":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]},"amazon@search.mozilla.org":{"permissions":["internal:privateBrowsingAllowed"],"origins":[]}}
|
|
@ -1 +1 @@
|
|||
{"version":2,"prefs":{"websites.hyperlinkAuditingEnabled":{"initialValue":{},"precedenceList":[{"id":"jid1-MnnxcxisBPnSXQ@jetpack","installDate":1542628050000,"value":false,"enabled":true},{"id":"uBlock0@raymondhill.net","installDate":1542627999000,"value":false,"enabled":true}]},"network.networkPredictionEnabled":{"initialValue":{},"precedenceList":[{"id":"jid1-MnnxcxisBPnSXQ@jetpack","installDate":1542628050000,"value":false,"enabled":true},{"id":"uBlock0@raymondhill.net","installDate":1542627999000,"value":false,"enabled":true}]},"homepage_override":{"initialValue":{},"precedenceList":[{"id":"yayanotherspeeddial@bakadev.fr","installDate":1552785444000,"value":"moz-extension://f393b4c4-359a-4d1e-b377-fd4b41112e16/index.html","enabled":true}]}},"url_overrides":{"newTabURL":{"initialValue":"about:newtab","precedenceList":[{"id":"yayanotherspeeddial@bakadev.fr","installDate":1552785444000,"value":"moz-extension://f393b4c4-359a-4d1e-b377-fd4b41112e16/index.html","enabled":true},{"id":"michal.simonfy@gmail.com","installDate":1542628426000,"value":"moz-extension://981c6be9-159a-4b60-a87e-0e77059e9e1a/newtab.html","enabled":false}]}},"default_search":{"engineAdded":{"precedenceList":[{"id":"ddg@search.mozilla.org","installDate":1569709371053,"value":"DuckDuckGo","enabled":true},{"id":"wikipedia@search.mozilla.org","installDate":1569709371001,"value":"Wikipedia (en)","enabled":true},{"id":"google@search.mozilla.org","installDate":1569709370845,"value":"Google","enabled":true},{"id":"bing@search.mozilla.org","installDate":1569709370787,"value":"Bing","enabled":true},{"id":"amazondotcom@search.mozilla.org","installDate":1569709370692,"value":"Amazon.com","enabled":true}]}},"commands":{},"newTabNotification":{"yayanotherspeeddial@bakadev.fr":{"initialValue":false,"precedenceList":[{"id":"yayanotherspeeddial@bakadev.fr","installDate":1552785444000,"value":true,"enabled":true}]}},"homepageNotification":{},"tabHideNotification":{}}
|
||||
{"version":2,"prefs":{"websites.hyperlinkAuditingEnabled":{"initialValue":{},"precedenceList":[{"id":"jid1-MnnxcxisBPnSXQ@jetpack","installDate":1542628050000,"value":false,"enabled":true},{"id":"uBlock0@raymondhill.net","installDate":1542627999000,"value":false,"enabled":true}]},"network.networkPredictionEnabled":{"initialValue":{},"precedenceList":[{"id":"jid1-MnnxcxisBPnSXQ@jetpack","installDate":1542628050000,"value":false,"enabled":true},{"id":"uBlock0@raymondhill.net","installDate":1542627999000,"value":false,"enabled":true}]},"homepage_override":{"initialValue":{},"precedenceList":[{"id":"yayanotherspeeddial@bakadev.fr","installDate":1552785444000,"value":"moz-extension://f393b4c4-359a-4d1e-b377-fd4b41112e16/index.html","enabled":true}]}},"url_overrides":{"newTabURL":{"initialValue":"about:newtab","precedenceList":[{"id":"yayanotherspeeddial@bakadev.fr","installDate":1552785444000,"value":"moz-extension://f393b4c4-359a-4d1e-b377-fd4b41112e16/index.html","enabled":true},{"id":"michal.simonfy@gmail.com","installDate":1542628426000,"value":"moz-extension://981c6be9-159a-4b60-a87e-0e77059e9e1a/newtab.html","enabled":false}]}},"default_search":{"engineAdded":{"precedenceList":[{"id":"ddg@search.mozilla.org","installDate":1569709371053,"value":"DuckDuckGo","enabled":true},{"id":"wikipedia@search.mozilla.org","installDate":1569709371001,"value":"Wikipedia (en)","enabled":true},{"id":"google@search.mozilla.org","installDate":1569709370845,"value":"Google","enabled":true},{"id":"bing@search.mozilla.org","installDate":1569709370787,"value":"Bing","enabled":true}]}},"commands":{},"newTabNotification":{"yayanotherspeeddial@bakadev.fr":{"initialValue":false,"precedenceList":[{"id":"yayanotherspeeddial@bakadev.fr","installDate":1552785444000,"value":true,"enabled":true}]}},"homepageNotification":{},"tabHideNotification":{}}
|
|
@ -19,16 +19,16 @@ user_pref("app.normandy.startupRolloutPrefs.doh-rollout.profileCreationThreshold
|
|||
user_pref("app.normandy.startupRolloutPrefs.services.sync.bookmarks.buffer.enabled", true);
|
||||
user_pref("app.normandy.user_id", "f6151ad0-fece-4d81-9d5c-67449843ccf0");
|
||||
user_pref("app.shield.optoutstudies.enabled", false);
|
||||
user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1613762580);
|
||||
user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1618001917);
|
||||
user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1588540518);
|
||||
user_pref("app.update.lastUpdateTime.browser-cleanup-thumbnails", 1615682011);
|
||||
user_pref("app.update.lastUpdateTime.recipe-client-addon-run", 1615681985);
|
||||
user_pref("app.update.lastUpdateTime.region-update-timer", 1613761980);
|
||||
user_pref("app.update.lastUpdateTime.recipe-client-addon-run", 1617984710);
|
||||
user_pref("app.update.lastUpdateTime.region-update-timer", 1618002157);
|
||||
user_pref("app.update.lastUpdateTime.rs-experiment-loader-timer", 1608565076);
|
||||
user_pref("app.update.lastUpdateTime.search-engine-update-timer", 1615682131);
|
||||
user_pref("app.update.lastUpdateTime.services-settings-poll-changes", 1613762220);
|
||||
user_pref("app.update.lastUpdateTime.services-settings-poll-changes", 1618001797);
|
||||
user_pref("app.update.lastUpdateTime.telemetry_modules_ping", 1573002408);
|
||||
user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1613762700);
|
||||
user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1618002037);
|
||||
user_pref("browser.bookmarks.defaultLocation", "unfiled");
|
||||
user_pref("browser.bookmarks.restore_default_bookmarks", false);
|
||||
user_pref("browser.cache.disk.amount_written", 1754406);
|
||||
|
@ -48,44 +48,45 @@ user_pref("browser.engagement.library-button.has-used", true);
|
|||
user_pref("browser.laterrun.bookkeeping.profileCreationTime", 1542627881);
|
||||
user_pref("browser.laterrun.bookkeeping.sessionCount", 51);
|
||||
user_pref("browser.messaging-system.whatsNewPanel.enabled", false);
|
||||
user_pref("browser.migration.version", 104);
|
||||
user_pref("browser.migration.version", 107);
|
||||
user_pref("browser.newtab.extensionControlled", true);
|
||||
user_pref("browser.newtab.privateAllowed", true);
|
||||
user_pref("browser.newtabpage.activity-stream.impressionId", "{7b66b9fa-c166-4db7-9cd2-1f61e10923fd}");
|
||||
user_pref("browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned", "google");
|
||||
user_pref("browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned", "google,amazon");
|
||||
user_pref("browser.newtabpage.activity-stream.migrationExpired", true);
|
||||
user_pref("browser.newtabpage.activity-stream.migrationLastShownDate", 1542582000);
|
||||
user_pref("browser.newtabpage.activity-stream.migrationRemainingDays", 3);
|
||||
user_pref("browser.newtabpage.pinned", "[{\"url\":\"https://google.com\",\"label\":\"@google\",\"searchTopSite\":true}]");
|
||||
user_pref("browser.newtabpage.pinned", "[{\"url\":\"https://google.com\",\"label\":\"@google\",\"searchTopSite\":true},{\"url\":\"https://amazon.com\",\"label\":\"@amazon\",\"searchTopSite\":true}]");
|
||||
user_pref("browser.newtabpage.storageVersion", 1);
|
||||
user_pref("browser.pageActions.persistedActions", "{\"version\":1,\"ids\":[\"bookmark\",\"bookmarkSeparator\",\"copyURL\",\"emailLink\",\"addSearchEngine\",\"screenshots_mozilla_org\",\"pinTab\"],\"idsInUrlbar\":[\"bookmark\"]}");
|
||||
user_pref("browser.pagethumbnails.storage_version", 3);
|
||||
user_pref("browser.region.update.first-seen", 1613761980);
|
||||
user_pref("browser.region.update.region", "GB");
|
||||
user_pref("browser.region.update.updated", 1613761980);
|
||||
user_pref("browser.region.update.updated", 1618002158);
|
||||
user_pref("browser.rights.3.shown", true);
|
||||
user_pref("browser.safebrowsing.provider.google4.lastupdatetime", "1613763738699");
|
||||
user_pref("browser.safebrowsing.provider.google4.nextupdatetime", "1613765555699");
|
||||
user_pref("browser.safebrowsing.provider.mozilla.lastupdatetime", "1615681989433");
|
||||
user_pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1615703589433");
|
||||
user_pref("browser.search.region", "ES");
|
||||
user_pref("browser.sessionstore.upgradeBackup.latestBuildID", "20210313191229");
|
||||
user_pref("browser.safebrowsing.provider.google4.lastupdatetime", "1618003568665");
|
||||
user_pref("browser.safebrowsing.provider.google4.nextupdatetime", "1618005341665");
|
||||
user_pref("browser.safebrowsing.provider.mozilla.lastupdatetime", "1617984718577");
|
||||
user_pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1618006318577");
|
||||
user_pref("browser.search.region", "GB");
|
||||
user_pref("browser.sessionstore.upgradeBackup.latestBuildID", "20210322115435");
|
||||
user_pref("browser.shell.checkDefaultBrowser", true);
|
||||
user_pref("browser.shell.didSkipDefaultBrowserCheckOnFirstRun", true);
|
||||
user_pref("browser.shell.mostRecentDateSetAsDefault", "1615682225");
|
||||
user_pref("browser.slowStartup.averageTime", 2467);
|
||||
user_pref("browser.slowStartup.samples", 4);
|
||||
user_pref("browser.shell.mostRecentDateSetAsDefault", "1618001768");
|
||||
user_pref("browser.slowStartup.averageTime", 1565);
|
||||
user_pref("browser.slowStartup.samples", 1);
|
||||
user_pref("browser.startup.homepage", "moz-extension://f393b4c4-359a-4d1e-b377-fd4b41112e16/index.html");
|
||||
user_pref("browser.startup.homepage_override.buildID", "20210313191229");
|
||||
user_pref("browser.startup.homepage_override.buildID", "20210322115435");
|
||||
user_pref("browser.startup.homepage_override.extensionControlled", true);
|
||||
user_pref("browser.startup.homepage_override.mstone", "86.0.1");
|
||||
user_pref("browser.startup.homepage_override.mstone", "87.0");
|
||||
user_pref("browser.startup.homepage_override.privateAllowed", true);
|
||||
user_pref("browser.startup.lastColdStartupCheck", 1615682224);
|
||||
user_pref("browser.startup.lastColdStartupCheck", 1618001768);
|
||||
user_pref("browser.startup.page", 3);
|
||||
user_pref("browser.tabs.drawInTitlebar", false);
|
||||
user_pref("browser.tabs.extraDragSpace", true);
|
||||
user_pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[\"browser-mon_xdman_sourceforge_net-browser-action\",\"_dda50e18-7461-4146-b781-2594b84c65d3_-browser-action\",\"_be4c6348-e64f-4ff9-9e48-47468de8aa64_-browser-action\",\"_f209234a-76f0-4735-9920-eb62507a54cd_-browser-action\",\"_471e7731-bf47-4ec7-afbc-053e98433943_-browser-action\",\"keepassxc-browser_keepassxc_org-browser-action\",\"_b9db16a4-6edc-47ec-a1f4-b86292ed211d_-browser-action\",\"ublock0_raymondhill_net-browser-action\",\"michal_simonfy_gmail_com-browser-action\",\"iridium_particlecore_github_io-browser-action\",\"https-everywhere_eff_org-browser-action\",\"jid1-bofifl9vbdl2zq_jetpack-browser-action\",\"jid1-mnnxcxisbpnsxq_jetpack-browser-action\",\"jid1-f9uj2thwoam5gq_jetpack-browser-action\",\"_9350bc42-47fb-4598-ae0f-825e3dd9ceba_-browser-action\"],\"nav-bar\":[\"sidebar-button\",\"back-button\",\"forward-button\",\"stop-reload-button\",\"urlbar-container\",\"downloads-button\",\"library-button\",\"add-ons-button\",\"chrome-gnome-shell_gnome_org-browser-action\",\"_a655a6b2-69a5-40de-a3b8-3f7f200c95a7_-browser-action\",\"aleks-v97_ro_ru-browser-action\",\"_b7f9d2cd-d772-4302-8c3f-eb941af36f76_-browser-action\",\"_5173bfae-59df-4a20-a9dd-0ab3e8c82e36_-browser-action\",\"wayback_machine_mozilla_org-browser-action\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"PersonalToolbar\":[\"personal-bookmarks\",\"managed-bookmarks\"]},\"seen\":[\"developer-button\",\"ublock0_raymondhill_net-browser-action\",\"keepassxc-browser_keepassxc_org-browser-action\",\"jid1-mnnxcxisbpnsxq_jetpack-browser-action\",\"_9350bc42-47fb-4598-ae0f-825e3dd9ceba_-browser-action\",\"jid1-bofifl9vbdl2zq_jetpack-browser-action\",\"chrome-gnome-shell_gnome_org-browser-action\",\"https-everywhere_eff_org-browser-action\",\"webide-button\",\"iridium_particlecore_github_io-browser-action\",\"_2e5ff8c8-32fe-46d0-9fc8-6b8986621f3c_-browser-action\",\"michal_simonfy_gmail_com-browser-action\",\"wayback_machine_mozilla_org-browser-action\",\"_a655a6b2-69a5-40de-a3b8-3f7f200c95a7_-browser-action\",\"_b9db16a4-6edc-47ec-a1f4-b86292ed211d_-browser-action\",\"feed-button\",\"jid1-f9uj2thwoam5gq_jetpack-browser-action\",\"yayanotherspeeddial_bakadev_fr-browser-action\",\"_be4c6348-e64f-4ff9-9e48-47468de8aa64_-browser-action\",\"_f209234a-76f0-4735-9920-eb62507a54cd_-browser-action\",\"browser-mon_xdman_sourceforge_net-browser-action\",\"_471e7731-bf47-4ec7-afbc-053e98433943_-browser-action\",\"aleks-v97_ro_ru-browser-action\",\"_dda50e18-7461-4146-b781-2594b84c65d3_-browser-action\",\"_af37054b-3ace-46a2-ac59-709e4412bec6_-browser-action\",\"_b7f9d2cd-d772-4302-8c3f-eb941af36f76_-browser-action\",\"_5173bfae-59df-4a20-a9dd-0ab3e8c82e36_-browser-action\"],\"dirtyAreaCache\":[\"PersonalToolbar\",\"nav-bar\",\"toolbar-menubar\",\"TabsToolbar\",\"widget-overflow-fixed-list\"],\"currentVersion\":16,\"newElementCount\":20}");
|
||||
user_pref("browser.uidensity", 2);
|
||||
user_pref("browser.urlbar.resultBuckets", "{\"children\":[{\"maxResultCount\":1,\"children\":[{\"group\":\"heuristicTest\"},{\"group\":\"heuristicExtension\"},{\"group\":\"heuristicSearchTip\"},{\"group\":\"heuristicOmnibox\"},{\"group\":\"heuristicUnifiedComplete\"},{\"group\":\"heuristicAutofill\"},{\"group\":\"heuristicTokenAliasEngine\"},{\"group\":\"heuristicFallback\"}]},{\"group\":\"extension\",\"maxResultCount\":5},{\"flexChildren\":true,\"children\":[{\"flexChildren\":true,\"children\":[{\"flex\":2,\"group\":\"formHistory\"},{\"flex\":4,\"group\":\"remoteSuggestion\"},{\"flex\":0,\"group\":\"tailSuggestion\"}],\"flex\":2},{\"group\":\"general\",\"flex\":1}]}]}");
|
||||
user_pref("browser.urlbar.suggest.topsites", false);
|
||||
user_pref("browser.urlbar.timesBeforeHidingSuggestionsHint", 0);
|
||||
user_pref("datareporting.healthreport.uploadEnabled", false);
|
||||
|
@ -102,7 +103,7 @@ user_pref("devtools.toolsidebar-width.inspector.splitsidebar", 350);
|
|||
user_pref("devtools.webextensions.https-everywhere@eff.org.enabled", true);
|
||||
user_pref("distribution.Manjaro.bookmarksProcessed", true);
|
||||
user_pref("distribution.archlinux.bookmarksProcessed", true);
|
||||
user_pref("distribution.iniFile.exists.appversion", "86.0.1");
|
||||
user_pref("distribution.iniFile.exists.appversion", "87.0");
|
||||
user_pref("distribution.iniFile.exists.value", true);
|
||||
user_pref("distribution.manjaro.bookmarksProcessed", true);
|
||||
user_pref("doh-rollout.balrog-migration-done", true);
|
||||
|
@ -110,7 +111,7 @@ user_pref("doh-rollout.doneFirstRun", true);
|
|||
user_pref("doh-rollout.doorhanger-decision", "UIOk");
|
||||
user_pref("doh-rollout.mode", 2);
|
||||
user_pref("doh-rollout.self-enabled", true);
|
||||
user_pref("dom.push.userAgentID", "abe24c5a23784d76ac28f48d28cf81ab");
|
||||
user_pref("dom.push.userAgentID", "014c400361cf45dc864c5f3d35de5bb3");
|
||||
user_pref("dom.security.https_only_mode", true);
|
||||
user_pref("dom.security.https_only_mode_ever_enabled", true);
|
||||
user_pref("extensions.activeThemeID", "default-theme@mozilla.org");
|
||||
|
@ -118,18 +119,19 @@ user_pref("extensions.blocklist.lastModified", "Sat, 09 Nov 2019 17:49:50 GMT");
|
|||
user_pref("extensions.blocklist.pingCountTotal", 34);
|
||||
user_pref("extensions.blocklist.pingCountVersion", -1);
|
||||
user_pref("extensions.databaseSchema", 33);
|
||||
user_pref("extensions.getAddons.cache.lastUpdate", 1613762581);
|
||||
user_pref("extensions.getAddons.cache.lastUpdate", 1618001918);
|
||||
user_pref("extensions.getAddons.databaseSchema", 6);
|
||||
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
|
||||
user_pref("extensions.incognito.migrated", true);
|
||||
user_pref("extensions.lastAppBuildId", "20210313191229");
|
||||
user_pref("extensions.lastAppVersion", "86.0.1");
|
||||
user_pref("extensions.lastPlatformVersion", "86.0.1");
|
||||
user_pref("extensions.lastAppBuildId", "20210322115435");
|
||||
user_pref("extensions.lastAppVersion", "87.0");
|
||||
user_pref("extensions.lastPlatformVersion", "87.0");
|
||||
user_pref("extensions.pendingOperations", false);
|
||||
user_pref("extensions.pocket.enabled", false);
|
||||
user_pref("extensions.pocket.settings.test.panelSignUp", "control");
|
||||
user_pref("extensions.reset_default_search.runonce.1", true);
|
||||
user_pref("extensions.systemAddonSet", "{\"schema\":1,\"addons\":{}}");
|
||||
user_pref("extensions.reset_default_search.runonce.3", false);
|
||||
user_pref("extensions.systemAddonSet", "{\"schema\":1,\"directory\":\"{6d47fd85-d9b2-4d7f-ad25-67b50b8330f5}\",\"addons\":{\"reset-search-defaults@mozilla.com\":{\"version\":\"1.0.6\"}}}");
|
||||
user_pref("extensions.ui.dictionary.hidden", true);
|
||||
user_pref("extensions.ui.extension.hidden", false);
|
||||
user_pref("extensions.ui.lastCategory", "addons://list/extension");
|
||||
|
@ -149,7 +151,7 @@ user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{5173bfae-59df-
|
|||
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{9350bc42-47fb-4598-ae0f-825e3dd9ceba}", true);
|
||||
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{b7f9d2cd-d772-4302-8c3f-eb941af36f76}", true);
|
||||
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{b9db16a4-6edc-47ec-a1f4-b86292ed211d}", true);
|
||||
user_pref("extensions.webextensions.uuids", "{\"formautofill@mozilla.org\":\"a4d7ec28-e851-41cc-919e-4b6abfc4ac31\",\"webcompat@mozilla.org\":\"67be70b1-004e-4ced-a5cb-abcdb80ecc30\",\"screenshots@mozilla.org\":\"8889019e-8528-4d46-b076-7c13a2232811\",\"uBlock0@raymondhill.net\":\"90be17cd-7169-4943-9a04-3cd8bf7fec41\",\"jid1-MnnxcxisBPnSXQ@jetpack\":\"d439fe79-e9bd-449b-b9ec-cc2b271f80c0\",\"{9350bc42-47fb-4598-ae0f-825e3dd9ceba}\":\"dbb00a92-98b5-481a-8acc-56821f5c1539\",\"chrome-gnome-shell@gnome.org\":\"256c7ceb-2fd8-4e47-bdc3-cb06c28a2511\",\"wayback_machine@mozilla.org\":\"2f4890c9-7ffb-4c51-a3fe-9d7425f7ed15\",\"webcompat-reporter@mozilla.org\":\"2e83e420-d979-4787-9557-97f647d6315f\",\"fxmonitor@mozilla.org\":\"bd2839c5-8e0a-4e41-8c53-eefcc4875ae8\",\"yayanotherspeeddial@bakadev.fr\":\"f393b4c4-359a-4d1e-b377-fd4b41112e16\",\"baidu-code-update@mozillaonline.com\":\"f61cd0cf-a1d5-4113-8587-06e29e05637e\",\"default-theme@mozilla.org\":\"d2155536-c685-43df-be0f-018f123a12ed\",\"amazondotcom@search.mozilla.org\":\"8c0e7741-4192-47e1-9708-c9e259d0eaca\",\"bing@search.mozilla.org\":\"f5fe6ae3-339f-451e-984b-978668f8d2c4\",\"google@search.mozilla.org\":\"67356cdf-8ebd-41fd-b1cf-1c7c9584f8cc\",\"twitter@search.mozilla.org\":\"428eea81-75ef-4cb4-a60c-214f60fd583a\",\"wikipedia@search.mozilla.org\":\"8fa903b1-4c90-43ff-b079-874114d35423\",\"ddg@search.mozilla.org\":\"99023558-25b2-45f6-80b1-163f50505cd4\",\"doh-rollout@mozilla.org\":\"e6166d48-3218-457c-98d3-9b70f0b85e32\",\"{b9db16a4-6edc-47ec-a1f4-b86292ed211d}\":\"26d6ad01-a771-4b46-9e35-342122037141\",\"ebay@search.mozilla.org\":\"868d2b79-8a51-44b4-9543-d98ddc3608d7\",\"{b7f9d2cd-d772-4302-8c3f-eb941af36f76}\":\"c4a416bf-fe77-41cc-92a4-402cc6c6f9c9\",\"{5173bfae-59df-4a20-a9dd-0ab3e8c82e36}\":\"5fa9f4d9-b1b6-436a-976d-16c0d1f6a207\",\"keepassxc-browser@keepassxc.org\":\"ac01c99c-ee6d-49f3-bbce-5ef76b0c7c04\",\"reset-search-defaults@mozilla.com\":\"624a06c5-a250-496d-a0ac-dab6e94b4ce6\"}");
|
||||
user_pref("extensions.webextensions.uuids", "{\"formautofill@mozilla.org\":\"a4d7ec28-e851-41cc-919e-4b6abfc4ac31\",\"webcompat@mozilla.org\":\"67be70b1-004e-4ced-a5cb-abcdb80ecc30\",\"screenshots@mozilla.org\":\"8889019e-8528-4d46-b076-7c13a2232811\",\"uBlock0@raymondhill.net\":\"90be17cd-7169-4943-9a04-3cd8bf7fec41\",\"jid1-MnnxcxisBPnSXQ@jetpack\":\"d439fe79-e9bd-449b-b9ec-cc2b271f80c0\",\"{9350bc42-47fb-4598-ae0f-825e3dd9ceba}\":\"dbb00a92-98b5-481a-8acc-56821f5c1539\",\"chrome-gnome-shell@gnome.org\":\"256c7ceb-2fd8-4e47-bdc3-cb06c28a2511\",\"wayback_machine@mozilla.org\":\"2f4890c9-7ffb-4c51-a3fe-9d7425f7ed15\",\"webcompat-reporter@mozilla.org\":\"2e83e420-d979-4787-9557-97f647d6315f\",\"fxmonitor@mozilla.org\":\"bd2839c5-8e0a-4e41-8c53-eefcc4875ae8\",\"yayanotherspeeddial@bakadev.fr\":\"f393b4c4-359a-4d1e-b377-fd4b41112e16\",\"baidu-code-update@mozillaonline.com\":\"f61cd0cf-a1d5-4113-8587-06e29e05637e\",\"default-theme@mozilla.org\":\"d2155536-c685-43df-be0f-018f123a12ed\",\"bing@search.mozilla.org\":\"f5fe6ae3-339f-451e-984b-978668f8d2c4\",\"google@search.mozilla.org\":\"67356cdf-8ebd-41fd-b1cf-1c7c9584f8cc\",\"twitter@search.mozilla.org\":\"428eea81-75ef-4cb4-a60c-214f60fd583a\",\"wikipedia@search.mozilla.org\":\"8fa903b1-4c90-43ff-b079-874114d35423\",\"ddg@search.mozilla.org\":\"99023558-25b2-45f6-80b1-163f50505cd4\",\"doh-rollout@mozilla.org\":\"e6166d48-3218-457c-98d3-9b70f0b85e32\",\"{b9db16a4-6edc-47ec-a1f4-b86292ed211d}\":\"26d6ad01-a771-4b46-9e35-342122037141\",\"ebay@search.mozilla.org\":\"868d2b79-8a51-44b4-9543-d98ddc3608d7\",\"{b7f9d2cd-d772-4302-8c3f-eb941af36f76}\":\"c4a416bf-fe77-41cc-92a4-402cc6c6f9c9\",\"{5173bfae-59df-4a20-a9dd-0ab3e8c82e36}\":\"5fa9f4d9-b1b6-436a-976d-16c0d1f6a207\",\"keepassxc-browser@keepassxc.org\":\"ac01c99c-ee6d-49f3-bbce-5ef76b0c7c04\",\"reset-search-defaults@mozilla.com\":\"624a06c5-a250-496d-a0ac-dab6e94b4ce6\",\"amazon@search.mozilla.org\":\"4ea06089-15aa-499a-af68-ad01c328549d\"}");
|
||||
user_pref("fission.experiment.max-origins.last-disqualified", 0);
|
||||
user_pref("fission.experiment.max-origins.last-qualified", 1615681990);
|
||||
user_pref("fission.experiment.max-origins.qualified", true);
|
||||
|
@ -161,15 +163,15 @@ user_pref("gfx.blacklist.layers.opengl", 4);
|
|||
user_pref("gfx.blacklist.layers.opengl.failureid", "FEATURE_FAILURE_SOFTWARE_GL");
|
||||
user_pref("identity.fxaccounts.enabled", false);
|
||||
user_pref("identity.fxaccounts.toolbar.accessed", true);
|
||||
user_pref("idle.lastDailyNotification", 1613762080);
|
||||
user_pref("idle.lastDailyNotification", 1618001939);
|
||||
user_pref("lightweightThemes.usedThemes", "[]");
|
||||
user_pref("media.benchmark.vp9.fps", 102);
|
||||
user_pref("media.benchmark.vp9.versioncheck", 5);
|
||||
user_pref("media.gmp-gmpopenh264.abi", "x86_64-gcc3");
|
||||
user_pref("media.gmp-gmpopenh264.lastUpdate", 1572996640);
|
||||
user_pref("media.gmp-gmpopenh264.version", "1.8.1.1");
|
||||
user_pref("media.gmp-manager.buildID", "20210210003430");
|
||||
user_pref("media.gmp-manager.lastCheck", 1613761988);
|
||||
user_pref("media.gmp-manager.buildID", "20210322115435");
|
||||
user_pref("media.gmp-manager.lastCheck", 1618001900);
|
||||
user_pref("media.gmp.storage.version.observed", 1);
|
||||
user_pref("network.cookie.cookieBehavior", 5);
|
||||
user_pref("network.dns.disablePrefetch", true);
|
||||
|
@ -182,14 +184,14 @@ user_pref("pdfjs.enabledCache.state", true);
|
|||
user_pref("pdfjs.migrationVersion", 2);
|
||||
user_pref("pdfjs.previousHandler.alwaysAskBeforeHandling", true);
|
||||
user_pref("pdfjs.previousHandler.preferredAction", 4);
|
||||
user_pref("places.database.lastMaintenance", 1613762080);
|
||||
user_pref("places.database.lastMaintenance", 1618001939);
|
||||
user_pref("places.history.expiration.transient_current_max_pages", 112348);
|
||||
user_pref("plugin.disable_full_page_plugin_for_types", "application/pdf");
|
||||
user_pref("privacy.annotate_channels.strict_list.enabled", true);
|
||||
user_pref("privacy.cpd.offlineApps", true);
|
||||
user_pref("privacy.cpd.siteSettings", true);
|
||||
user_pref("privacy.purge_trackers.date_in_cookie_database", "0");
|
||||
user_pref("privacy.purge_trackers.last_purge", "1613762080553");
|
||||
user_pref("privacy.purge_trackers.last_purge", "1618001939340");
|
||||
user_pref("privacy.sanitize.pending", "[]");
|
||||
user_pref("privacy.sanitize.timeSpan", 0);
|
||||
user_pref("privacy.trackingprotection.enabled", true);
|
||||
|
@ -198,40 +200,41 @@ user_pref("security.remote_settings.crlite_filters.checked", 1613762220);
|
|||
user_pref("security.remote_settings.intermediates.checked", 1613762220);
|
||||
user_pref("security.sandbox.content.tempDirSuffix", "62ec57d4-3516-41bf-957e-19cd307d5b61");
|
||||
user_pref("security.sandbox.plugin.tempDirSuffix", "851284ee-3855-4de7-86af-976adc3a2c11");
|
||||
user_pref("services.blocklist.addons-mlbf.checked", 1615682676);
|
||||
user_pref("services.blocklist.addons-mlbf.checked", 1618001769);
|
||||
user_pref("services.blocklist.addons.checked", 1598664411);
|
||||
user_pref("services.blocklist.gfx.checked", 1615682676);
|
||||
user_pref("services.blocklist.gfx.checked", 1618001769);
|
||||
user_pref("services.blocklist.onecrl.checked", 1565793602);
|
||||
user_pref("services.blocklist.pinning.checked", 1613762220);
|
||||
user_pref("services.blocklist.plugins.checked", 1615682676);
|
||||
user_pref("services.settings.clock_skew_seconds", -693);
|
||||
user_pref("services.settings.last_etag", "\"1615665497160\"");
|
||||
user_pref("services.settings.last_update_seconds", 1615682676);
|
||||
user_pref("services.settings.main.anti-tracking-url-decoration.last_check", 1615682676);
|
||||
user_pref("services.settings.main.cfr-fxa.last_check", 1615682676);
|
||||
user_pref("services.settings.main.cfr.last_check", 1615682676);
|
||||
user_pref("services.settings.main.fxmonitor-breaches.last_check", 1615682676);
|
||||
user_pref("services.settings.main.hijack-blocklists.last_check", 1615682676);
|
||||
user_pref("services.settings.main.language-dictionaries.last_check", 1615682676);
|
||||
user_pref("services.settings.main.message-groups.last_check", 1615682676);
|
||||
user_pref("services.blocklist.plugins.checked", 1618001769);
|
||||
user_pref("services.settings.clock_skew_seconds", -1170);
|
||||
user_pref("services.settings.last_etag", "\"1617989709562\"");
|
||||
user_pref("services.settings.last_update_seconds", 1618002966);
|
||||
user_pref("services.settings.main.anti-tracking-url-decoration.last_check", 1618001769);
|
||||
user_pref("services.settings.main.cfr-fxa.last_check", 1618001769);
|
||||
user_pref("services.settings.main.cfr.last_check", 1618001769);
|
||||
user_pref("services.settings.main.fxmonitor-breaches.last_check", 1618001769);
|
||||
user_pref("services.settings.main.hijack-blocklists.last_check", 1618001769);
|
||||
user_pref("services.settings.main.language-dictionaries.last_check", 1618001769);
|
||||
user_pref("services.settings.main.message-groups.last_check", 1618001769);
|
||||
user_pref("services.settings.main.messaging-experiments.last_check", 1604995344);
|
||||
user_pref("services.settings.main.nimbus-desktop-experiments.last_check", 1615682676);
|
||||
user_pref("services.settings.main.normandy-recipes-capabilities.last_check", 1615682676);
|
||||
user_pref("services.settings.main.nimbus-desktop-experiments.last_check", 1618001769);
|
||||
user_pref("services.settings.main.normandy-recipes-capabilities.last_check", 1618001769);
|
||||
user_pref("services.settings.main.normandy-recipes.last_check", 1573409021);
|
||||
user_pref("services.settings.main.onboarding.last_check", 1565793602);
|
||||
user_pref("services.settings.main.partitioning-exempt-urls.last_check", 1615682676);
|
||||
user_pref("services.settings.main.password-recipes.last_check", 1615682676);
|
||||
user_pref("services.settings.main.pioneer-study-addons-v1.last_check", 1615682676);
|
||||
user_pref("services.settings.main.pioneer-study-addons.last_check", 1615682676);
|
||||
user_pref("services.settings.main.public-suffix-list.last_check", 1615682676);
|
||||
user_pref("services.settings.main.search-config.last_check", 1615682676);
|
||||
user_pref("services.settings.main.search-default-override-allowlist.last_check", 1615682676);
|
||||
user_pref("services.settings.main.search-telemetry.last_check", 1615682676);
|
||||
user_pref("services.settings.main.sites-classification.last_check", 1615682676);
|
||||
user_pref("services.settings.main.tippytop.last_check", 1615682676);
|
||||
user_pref("services.settings.main.top-sites.last_check", 1615682676);
|
||||
user_pref("services.settings.main.url-classifier-skip-urls.last_check", 1615682676);
|
||||
user_pref("services.settings.main.whats-new-panel.last_check", 1615682676);
|
||||
user_pref("services.settings.main.partitioning-exempt-urls.last_check", 1618001769);
|
||||
user_pref("services.settings.main.password-recipes.last_check", 1618001769);
|
||||
user_pref("services.settings.main.pioneer-study-addons-v1.last_check", 1618001769);
|
||||
user_pref("services.settings.main.pioneer-study-addons.last_check", 1618001769);
|
||||
user_pref("services.settings.main.public-suffix-list.last_check", 1618001769);
|
||||
user_pref("services.settings.main.search-config.last_check", 1618001769);
|
||||
user_pref("services.settings.main.search-default-override-allowlist.last_check", 1618001769);
|
||||
user_pref("services.settings.main.search-telemetry.last_check", 1618001769);
|
||||
user_pref("services.settings.main.sites-classification.last_check", 1618001769);
|
||||
user_pref("services.settings.main.tippytop.last_check", 1618001769);
|
||||
user_pref("services.settings.main.top-sites.last_check", 1618001769);
|
||||
user_pref("services.settings.main.url-classifier-skip-urls.last_check", 1618001769);
|
||||
user_pref("services.settings.main.websites-with-shared-credential-backends.last_check", 1618001769);
|
||||
user_pref("services.settings.main.whats-new-panel.last_check", 1618001769);
|
||||
user_pref("services.settings.security.onecrl.checked", 1613762220);
|
||||
user_pref("services.sync.clients.lastSync", "0");
|
||||
user_pref("services.sync.declinedEngines", "");
|
||||
|
@ -241,8 +244,8 @@ user_pref("services.sync.tabs.lastSync", "0");
|
|||
user_pref("signon.importedFromSqlite", true);
|
||||
user_pref("signon.usage.hasEntry", false);
|
||||
user_pref("storage.vacuum.last.index", 0);
|
||||
user_pref("storage.vacuum.last.places.sqlite", 1613762080);
|
||||
user_pref("toolkit.startup.last_success", 1615682223);
|
||||
user_pref("storage.vacuum.last.places.sqlite", 1618001939);
|
||||
user_pref("toolkit.startup.last_success", 1618001766);
|
||||
user_pref("toolkit.telemetry.archive.enabled", false);
|
||||
user_pref("toolkit.telemetry.bhrPing.enabled", false);
|
||||
user_pref("toolkit.telemetry.cachedClientID", "c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0");
|
||||
|
|