a few changes

This commit is contained in:
Tio 2021-01-20 03:42:26 +01:00
parent 8c0693f810
commit 25ecd01890
225 changed files with 1404 additions and 869 deletions

View File

@ -6,8 +6,9 @@ vimix-kde-git
vimix-gtk-themes-git vimix-gtk-themes-git
kvantum-theme-vimix-git kvantum-theme-vimix-git
imageburner imageburner
feathernotes-git
bitmask bitmask
gnome-fuzzy-app-search-git
openrgb
@ -88,6 +89,9 @@ dconf-editor
dmidecode dmidecode
gdm gdm
gedit gedit
feathernotes
gtksourceview-pkgbuild #highlight for PKGBUILD gtksourceview-pkgbuild #highlight for PKGBUILD
gnome-calculator gnome-calculator
gnome-control-center gnome-control-center
@ -102,7 +106,6 @@ gnome-settings-daemon
gnome-shell gnome-shell
gnome-system-log gnome-system-log
gnome-system-monitor gnome-system-monitor
gnome-terminal
gnome-themes-standard gnome-themes-standard
gnome-user-docs gnome-user-docs
gnome-tweaks gnome-tweaks
@ -130,6 +133,7 @@ inxi
kernel-alive kernel-alive
pacui pacui
mc mc
######## ########
manjaro-alsa manjaro-alsa
manjaro-hotfixes manjaro-hotfixes
@ -165,7 +169,6 @@ avahi
networkmanager networkmanager
ntp ntp
openssh openssh
terminus-font-otb
tracker tracker
tracker-miners tracker-miners
qgnomeplatform qgnomeplatform

View File

@ -4,6 +4,7 @@ autoReplace=false
autoSave=1 autoSave=1
noIndent=false noIndent=false
noWrap=false noWrap=false
openLastFile=true
scrollJumpWorkaround=false scrollJumpWorkaround=false
[window] [window]

View File

@ -19,7 +19,7 @@
const Main = imports.ui.main; const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const VolumeMenu = imports.ui.status.volume; const VolumeMenu = imports.ui.status.volume;
const {Atk, St, GObject, GLib} = imports.gi; const { Atk, St, GObject, GLib } = imports.gi;
const Gvc = imports.gi.Gvc; const Gvc = imports.gi.Gvc;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
@ -29,14 +29,16 @@ const _d = Lib._log;
const Prefs = Me.imports.prefs; const Prefs = Me.imports.prefs;
const SignalManager = Lib.SignalManager; const SignalManager = Lib.SignalManager;
let maxId = -1;
var SoundDeviceChooserBase = class SoundDeviceChooserBase{ var SoundDeviceChooserBase = class SoundDeviceChooserBase {
constructor(deviceType) { constructor(deviceType) {
_d("SDC: init"); _d("SDC: init");
this.menuItem = new PopupMenu.PopupSubMenuMenuItem ('Extension initialising...', true); this.menuItem = new PopupMenu.PopupSubMenuMenuItem('Extension initialising...', true);
this.deviceType = deviceType; this.deviceType = deviceType;
this._devices = {}; this._devices = {};
this._cards = [];
this._availableDevicesIds = {}; this._availableDevicesIds = {};
this._control = VolumeMenu.getMixerControl(); this._control = VolumeMenu.getMixerControl();
this._settings = Lib.getSettings(Prefs.SETTINGS_SCHEMA); this._settings = Lib.getSettings(Prefs.SETTINGS_SCHEMA);
@ -44,9 +46,9 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
this._setLog(); this._setLog();
this._signalManager = new SignalManager(); this._signalManager = new SignalManager();
this._signalManager.addSignal(this._settings,"changed::" + Prefs.ENABLE_LOG, this._setLog.bind(this)); this._signalManager.addSignal(this._settings, "changed::" + Prefs.ENABLE_LOG, this._setLog.bind(this));
if(this._control.get_state() == Gvc.MixerControlState.READY) { if (this._control.get_state() == Gvc.MixerControlState.READY) {
this._onControlStateChanged(); this._onControlStateChanged();
} }
else { else {
@ -54,28 +56,31 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
} }
} }
_setLog(){ Lib.setLog(this._settings.get_boolean(Prefs.ENABLE_LOG));} _setLog() { Lib.setLog(this._settings.get_boolean(Prefs.ENABLE_LOG)); }
_onControlStateChanged() { _onControlStateChanged() {
if(this._control.get_state() == Gvc.MixerControlState.READY) { if (this._control.get_state() == Gvc.MixerControlState.READY) {
if(!this._initialised) { if (!this._initialised) {
this._initialised = true; this._initialised = true;
this._signalManager.addSignal(this._control, this.deviceType + "-added", this._deviceAdded.bind(this)); 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, 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, "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(this._settings,"changed::" + Prefs.HIDE_ON_SINGLE_DEVICE,this._setChooserVisibility.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)); this._signalManager.addSignal(this._settings, "changed::" + Prefs.SHOW_PROFILES, this._setProfileVisibility.bind(this));
this._signalManager.addSignal(this._settings,"changed::" + Prefs.ICON_THEME , this._setIcons.bind(this)); this._signalManager.addSignal(this._settings, "changed::" + Prefs.ICON_THEME, this._setIcons.bind(this));
this._signalManager.addSignal(this._settings,"changed::" + Prefs.HIDE_MENU_ICONS , this._setIcons.bind(this)); this._signalManager.addSignal(this._settings, "changed::" + Prefs.HIDE_MENU_ICONS, this._setIcons.bind(this));
this._signalManager.addSignal(this._settings,"changed::" + Prefs.PORT_SETTINGS , this._resetDevices.bind(this)); this._signalManager.addSignal(this._settings, "changed::" + Prefs.PORT_SETTINGS, this._resetDevices.bind(this));
this._show_device_signal = Prefs["SHOW_" + this.deviceType.toUpperCase() + "_DEVICES"]; this._show_device_signal = Prefs["SHOW_" + this.deviceType.toUpperCase() + "_DEVICES"];
this._signalManager.addSignal(this._settings,"changed::" + this._show_device_signal, this._setVisibility.bind(this)); 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 = JSON.parse(this._settings.get_string(Prefs.PORT_SETTINGS));
this._portsSettings = Prefs.getPortsFromSettings(this._settings);
/** /**
* There is no direct way to get all the UI devices from * There is no direct way to get all the UI devices from
@ -86,33 +91,35 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
*/ */
let id = 0; let id = 0;
let maxId = -1; if (maxId < 0) {
let dummyDevice = new Gvc.MixerUIDevice(); let dummyDevice = new Gvc.MixerUIDevice();
maxId = dummyDevice.get_id(); maxId = dummyDevice.get_id();
}
_d("Max Id:" + maxId); _d("Max Id:" + maxId);
let defaultDevice = this.getDefaultDevice(); let defaultDevice = this.getDefaultDevice();
while(++id < maxId) { while (++id < maxId) {
let uidevice = this._deviceAdded(this._control, id); let uidevice = this._deviceAdded(this._control, id);
if(uidevice) { if (uidevice) {
let stream = this._control.get_stream_from_device(uidevice); let stream = this._control.get_stream_from_device(uidevice);
if(stream) { if (stream) {
let stream_port = stream.get_port(); let stream_port = stream.get_port();
let uidevice_port = uidevice.get_port(); let uidevice_port = uidevice.get_port();
if(((!stream_port && !uidevice_port) || if (((!stream_port && !uidevice_port) ||
(stream_port && stream_port.port === uidevice_port)) && (stream_port && stream_port.port === uidevice_port)) &&
stream == defaultDevice) { stream == defaultDevice) {
this._deviceActivated(this._control, id); this._deviceActivated(this._control, 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));
this.activeProfileTimeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, if (this._controlStateChangeSignal) {
this._setActiveProfile.bind(this));
if(this._controlStateChangeSignal) {
this._controlStateChangeSignal.disconnect(); this._controlStateChangeSignal.disconnect();
delete this._controlStateChangeSignal; delete this._controlStateChangeSignal;
} }
@ -121,20 +128,30 @@ 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);
}
}
_deviceAdded(control, id, dontcheck) { _deviceAdded(control, id, dontcheck) {
let obj = this._devices[id]; let obj = this._devices[id];
let uidevice = null; let uidevice = null;
if(!obj) { if (!obj) {
uidevice = this.lookupDeviceById(id); uidevice = this.lookupDeviceById(id);
if(!uidevice) { if (!uidevice || !uidevice.port_name || uidevice.description.match(/Dummy\s+(Output|Input)/gi)) {
return null; return null;
} }
obj = new Object(); obj = new Object();
obj.id = id;
obj.uidevice = uidevice; obj.uidevice = uidevice;
obj.text = uidevice.description; obj.text = uidevice.description;
if(uidevice.origin != "") if (uidevice.origin != "")
obj.text += " (" + uidevice.origin + ")"; obj.text += " - " + uidevice.origin;
/* /*
* obj.item = this.menu.addAction( obj.text, function() { * obj.item = this.menu.addAction( obj.text, function() {
@ -146,19 +163,20 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
*/ */
let icon = uidevice.get_icon_name(); let icon = uidevice.get_icon_name();
if(icon == null || icon.trim() == "") if (icon == null || icon.trim() == "")
icon = this.getDefaultIcon(); icon = this.getDefaultIcon();
let icon_name = this._getIcon(icon); let icon_name = this._getIcon(icon);
obj.item = this.menuItem.menu.addAction( obj.text, function() { obj.item = this.menuItem.menu.addAction(obj.text, function() {
_d("Device Change request");
this.changeDevice(uidevice); this.changeDevice(uidevice);
}.bind(this), icon_name); }.bind(this), icon_name);
if(!obj.profiles) { if (!obj.profiles) {
obj.profiles = Lib.getProfiles(control, uidevice); obj.profiles = Lib.getProfiles(control, uidevice);
} }
if(!obj.profilesitems) { if (!obj.profilesitems) {
obj.profilesitems = []; obj.profilesitems = [];
} }
this._devices[id] = obj; this._devices[id] = obj;
@ -175,27 +193,38 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
} }
} }
if(obj.active) { if (obj.active) {
return uidevice; return uidevice;
} }
_d("Added: " + id + ":" + uidevice.description + ":" + uidevice.port_name); _d("Added: " + id + ":" + uidevice.description + ":" + uidevice.port_name + ":" + obj.uidevice.origin);
if(!this._availableDevicesIds[id]){ if (!this._availableDevicesIds[id]) {
this._availableDevicesIds[id] = 0; this._availableDevicesIds[id] = 0;
} }
this._availableDevicesIds[id] ++; this._availableDevicesIds[id]++;
obj.active = true; obj.active = true;
obj.activeProfile = uidevice.get_active_profile(); let stream = this._control.get_stream_from_device(uidevice);
let showProfiles = this._settings.get_boolean(Prefs.SHOW_PROFILES); if (stream) {
obj.activeProfile = uidevice.get_active_profile();
}
else {
obj.activeProfile = "";
}
//let showProfiles = this._settings.get_boolean(Prefs.SHOW_PROFILES);
if (obj.profiles) { if (obj.profiles) {
for (let profile of obj.profiles) { for (let profile of obj.profiles) {
let profileItem = obj.profilesitems[profile.name]; let profileItem = obj.profilesitems[profile.name];
if(!profileItem) { if (!profileItem) {
let profileName = profile.name; let profileName = profile.name;
profileItem = this.menuItem.menu.addAction( "Profile: " + profile.human_name, function() { profileItem = this.menuItem.menu.addAction("Profile: " + profile.human_name, function() {
_d("i am setting profile, " + profile.human_name + ":" + uidevice.description + ":" + uidevice.port_name); _d("i am setting profile, " + profile.human_name + ":" + uidevice.description + ":" + uidevice.port_name);
if(this._activeDevice && this._activeDevice.uidevice !== uidevice) { 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); _d("Changing active device to " + uidevice.description + ":" + uidevice.port_name);
this.changeDevice(uidevice); this.changeDevice(uidevice);
} }
@ -205,10 +234,10 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
obj.profilesitems[profileName] = profileItem; obj.profilesitems[profileName] = profileItem;
profileItem.setProfileActive = function(active) { profileItem.setProfileActive = function(active) {
if(active) { if (active) {
// this._ornamentLabel.text = "\u2727"; // this._ornamentLabel.text = "\u2727";
this._ornamentLabel.text = "\u266A"; this._ornamentLabel.text = "\u266A";
if(this.add_style_pseudo_class) { if (this.add_style_pseudo_class) {
this.add_style_pseudo_class('checked'); this.add_style_pseudo_class('checked');
this.remove_style_pseudo_class('insensitive'); this.remove_style_pseudo_class('insensitive');
} }
@ -219,7 +248,7 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
} }
else { else {
this._ornamentLabel.text = ""; this._ornamentLabel.text = "";
if(this.add_style_pseudo_class) { if (this.add_style_pseudo_class) {
this.remove_style_pseudo_class('checked'); this.remove_style_pseudo_class('checked');
this.add_style_pseudo_class('insensitive'); this.add_style_pseudo_class('insensitive');
} }
@ -235,7 +264,7 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
profileItem.setProfileActive(obj.activeProfile == profile.name); profileItem.setProfileActive(obj.activeProfile == profile.name);
} }
} }
if (!dontcheck && !this._canShowDevice(uidevice, uidevice.port_available)) { if (!dontcheck && !this._canShowDevice(uidevice, uidevice.port_available)) {
this._deviceRemoved(control, id, true); this._deviceRemoved(control, id, true);
} }
this._setChooserVisibility(); this._setChooserVisibility();
@ -245,25 +274,26 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
_deviceRemoved(control, id, dontcheck) { _deviceRemoved(control, id, dontcheck) {
let obj = this._devices[id]; let obj = this._devices[id];
if(obj && obj.active) { //delete this._devices[id];
_d("Removed: " + id); if (obj && obj.active) {
if(!dontcheck && this._canShowDevice(obj.uidevice, false)) { _d("Removed: " + id + ":" + obj.uidevice.description + ":" + obj.uidevice.port_name + ":" + obj.uidevice.origin);
if (!dontcheck && this._canShowDevice(obj.uidevice, false)) {
_d('Device removed, but not hiding as its set to be shown always'); _d('Device removed, but not hiding as its set to be shown always');
return; return;
} }
delete this._availableDevicesIds[id] ; delete this._availableDevicesIds[id];
obj.item.actor.visible = false; obj.item.actor.visible = false;
obj.active = false; obj.active = false;
if (obj.profiles) { if (obj.profiles) {
for (let profile of obj.profiles) { for (let profile of obj.profiles) {
let profileItem = obj.profilesitems[profile.name]; let profileItem = obj.profilesitems[profile.name];
if(profileItem) { if (profileItem) {
profileItem.actor.visible = false; profileItem.actor.visible = false;
} }
} }
} }
if(this.deviceRemovedTimout) { if (this.deviceRemovedTimout) {
GLib.source_remove(this.deviceRemovedTimout); GLib.source_remove(this.deviceRemovedTimout);
this.deviceRemovedTimout = null; this.deviceRemovedTimout = null;
} }
@ -273,11 +303,12 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
* when the uidevice is removed, Speakers are automatically * when the uidevice is removed, Speakers are automatically
* activated. So, lets wait for sometime before activating. * activated. So, lets wait for sometime before activating.
*/ */
this.deviceRemovedTimout = GLib.timeout_add(GLib.PRIORITY_DEFAULT,1500, function() { this.deviceRemovedTimout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1500, function() {
_d("Device Removed timeout");
if (obj === this._activeDevice) { if (obj === this._activeDevice) {
for ( let id in this._devices) { for (let id in this._devices) {
let device = this._devices[id]; let device = this._devices[id];
if(device.active == true) { if (device.active == true) {
this.changeDevice(device.uidevice); this.changeDevice(device.uidevice);
break; break;
} }
@ -293,11 +324,11 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
_deviceActivated(control, id) { _deviceActivated(control, id) {
let obj = this._devices[id]; let obj = this._devices[id];
if(obj && obj !== this._activeDevice) { if (obj && obj !== this._activeDevice) {
_d("Activated: " + id); _d("Activated: " + id + ":" + obj.uidevice.description + ":" + obj.uidevice.port_name + ":" + obj.uidevice.origin);
if(this._activeDevice) { if (this._activeDevice) {
this._activeDevice.item.setOrnament(PopupMenu.Ornament.NONE); this._activeDevice.item.setOrnament(PopupMenu.Ornament.NONE);
if(this._activeDevice.item.remove_style_pseudo_class) { if (this._activeDevice.item.remove_style_pseudo_class) {
this._activeDevice.item.remove_style_pseudo_class('checked'); this._activeDevice.item.remove_style_pseudo_class('checked');
} }
else { else {
@ -306,7 +337,7 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
} }
this._activeDevice = obj; this._activeDevice = obj;
obj.item.setOrnament(PopupMenu.Ornament.CHECK); obj.item.setOrnament(PopupMenu.Ornament.CHECK);
if(obj.item.add_style_pseudo_class) { if (obj.item.add_style_pseudo_class) {
obj.item.add_style_pseudo_class('checked'); obj.item.add_style_pseudo_class('checked');
} }
else { else {
@ -318,7 +349,7 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
if (!this._settings.get_boolean(Prefs.HIDE_MENU_ICONS)) { if (!this._settings.get_boolean(Prefs.HIDE_MENU_ICONS)) {
let icon = obj.uidevice.get_icon_name(); let icon = obj.uidevice.get_icon_name();
if(icon == null || icon.trim() == "") if (icon == null || icon.trim() == "")
icon = this.getDefaultIcon(); icon = this.getDefaultIcon();
this.menuItem.icon.icon_name = this._getIcon(icon); this.menuItem.icon.icon_name = this._getIcon(icon);
} else { } else {
@ -328,21 +359,27 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
} }
_setActiveProfile() { _setActiveProfile() {
for (let id in this._devices) { //_d("Setting Active Profile");
/*for (let id in this._devices) {
let device = this._devices[id]; let device = this._devices[id];
if(device.active) { if (device.active) {
this._setDeviceActiveProfile(device); this._setDeviceActiveProfile(device);
} }
} }*/
this._setDeviceActiveProfile(this._activeDevice);
return true; return true;
} }
_setDeviceActiveProfile(device) { _setDeviceActiveProfile(device) {
if (!device.uidevice.port_name) { if (!device.uidevice.port_name || !this._availableDevicesIds[device.id]) {
return;
}
let stream = this._control.get_stream_from_device(device.uidevice);
if (stream) {
return; return;
} }
let activeProfile = device.uidevice.get_active_profile(); let activeProfile = device.uidevice.get_active_profile();
if(activeProfile && device.activeProfile != activeProfile) { if (activeProfile && device.activeProfile != activeProfile) {
device.activeProfile = activeProfile; device.activeProfile = activeProfile;
for (let profile of device.profiles) { for (let profile of device.profiles) {
device.profilesitems[profile.name].setProfileActive(profile.name == device.activeProfile); device.profilesitems[profile.name].setProfileActive(profile.name == device.activeProfile);
@ -373,7 +410,7 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
let visibility = this._settings.get_boolean(Prefs.SHOW_PROFILES); let visibility = this._settings.get_boolean(Prefs.SHOW_PROFILES);
for (let id in this._availableDevicesIds) { for (let id in this._availableDevicesIds) {
let device = this._devices[id]; let device = this._devices[id];
if ( device.profiles ) { if (device.profiles) {
for (let profile of device.profiles) { for (let profile of device.profiles) {
device.profilesitems[profile.name].actor.visible = device.profilesitems[profile.name].actor.visible =
(visibility && device.item.actor.visible && Object.keys(device.profilesitems).length > 1); (visibility && device.item.actor.visible && Object.keys(device.profilesitems).length > 1);
@ -385,12 +422,12 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
_getIcon(name) { _getIcon(name) {
let iconsType = this._settings.get_string(Prefs.ICON_THEME); let iconsType = this._settings.get_string(Prefs.ICON_THEME);
switch (iconsType) { switch (iconsType) {
case Prefs.ICON_THEME_COLORED: case Prefs.ICON_THEME_COLORED:
return name; return name;
case Prefs.ICON_THEME_MONOCHROME: case Prefs.ICON_THEME_MONOCHROME:
return name + "-symbolic"; return name + "-symbolic";
default: default:
return "none"; return "none";
} }
} }
@ -399,7 +436,7 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
for (let id in this._devices) { for (let id in this._devices) {
let device = this._devices[id]; let device = this._devices[id];
let icon = device.uidevice.get_icon_name(); let icon = device.uidevice.get_icon_name();
if(icon == null || icon.trim() == "") if (icon == null || icon.trim() == "")
icon = this.getDefaultIcon(); icon = this.getDefaultIcon();
// device.item._icon.icon_name = this._getIcon(icon); // device.item._icon.icon_name = this._getIcon(icon);
device.item.setIcon(this._getIcon(icon)); device.item.setIcon(this._getIcon(icon));
@ -409,7 +446,7 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
// Gnome menu, not in the list. // Gnome menu, not in the list.
if (!this._settings.get_boolean(Prefs.HIDE_MENU_ICONS)) { if (!this._settings.get_boolean(Prefs.HIDE_MENU_ICONS)) {
let icon = this._activeDevice.uidevice.get_icon_name(); let icon = this._activeDevice.uidevice.get_icon_name();
if(icon == null || icon.trim() == "") if (icon == null || icon.trim() == "")
icon = this.getDefaultIcon(); icon = this.getDefaultIcon();
this.menuItem.icon.icon_name = this._getIcon(icon); this.menuItem.icon.icon_name = this._getIcon(icon);
@ -420,21 +457,39 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
_canShowDevice(uidevice, defaultValue) { _canShowDevice(uidevice, defaultValue) {
if(!uidevice || !this._portsSettings || uidevice.port_name == null || uidevice.description == null) { if (!uidevice || !this._portsSettings || uidevice.port_name == null || uidevice.description == null) {
return defaultValue; return defaultValue;
} }
let stream = this._control.get_stream_from_device(uidevice);
let cardName = null;
if (stream) {
let cardId = stream.get_card_index();
if (cardId != null) {
_d("Card Index" + cardId);
let _card = Lib.getCard(cardId);
if (_card) {
cardName = _card.name;
}
else {
//card id found, but not available in list
return false;
}
_d("Card Name" + cardName);
}
}
for (let port of this._portsSettings) { for (let port of this._portsSettings) {
if(port && port.name == uidevice.port_name && port.human_name == uidevice.description) { //_d("P" + port.name + "==" + uidevice.port_name + "==" + port.human_name + "==" + uidevice.description + "==" + cardName + "==" + port.card_name)
switch(port.display_option) { if (port && port.name == uidevice.port_name && port.human_name == uidevice.description && (!cardName || cardName == port.card_name)) {
case 1: switch (port.display_option) {
return true; case 1:
return true;
case 2: case 2:
return false; return false;
default: default:
return defaultValue; return defaultValue;
} }
} }
} }
@ -442,25 +497,26 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
} }
_resetDevices() { _resetDevices() {
this._portsSettings = JSON.parse(this._settings.get_string(Prefs.PORT_SETTINGS)); //this._portsSettings = JSON.parse(this._settings.get_string(Prefs.PORT_SETTINGS));
this._portsSettings = Prefs.getPortsFromSettings(this._settings);
for (let id in this._devices) { for (let id in this._devices) {
let device = this._devices[id]; let device = this._devices[id];
let uidevice = device.uidevice; let uidevice = device.uidevice;
if(uidevice.port_name == null || uidevice.description == null) { if (uidevice.port_name == null || uidevice.description == null) {
continue; continue;
} }
switch(this._canShowDevice(uidevice, uidevice.port_available)) { switch (this._canShowDevice(uidevice, uidevice.port_available)) {
case true: case true:
this._deviceAdded(this._control, uidevice.get_id(), true); this._deviceAdded(this._control, uidevice.get_id(), true);
break; break;
case false: case false:
this._deviceRemoved(this._control, uidevice.get_id(), true); this._deviceRemoved(this._control, uidevice.get_id(), true);
break; break;
} }
} }
} }
_setVisibility () { _setVisibility() {
if (!this._settings.get_boolean(this._show_device_signal)) if (!this._settings.get_boolean(this._show_device_signal))
this.menuItem.actor.visible = false; this.menuItem.actor.visible = false;
else else
@ -471,11 +527,11 @@ var SoundDeviceChooserBase = class SoundDeviceChooserBase{
destroy() { destroy() {
this._signalManager.disconnectAll(); this._signalManager.disconnectAll();
if(this.deviceRemovedTimout) { if (this.deviceRemovedTimout) {
GLib.source_remove(this.deviceRemovedTimout); GLib.source_remove(this.deviceRemovedTimout);
this.deviceRemovedTimout = null; this.deviceRemovedTimout = null;
} }
if(this.activeProfileTimeout) { if (this.activeProfileTimeout) {
GLib.source_remove(this.activeProfileTimeout); GLib.source_remove(this.activeProfileTimeout);
this.activeProfileTimeout = null; this.activeProfileTimeout = null;
} }

View File

@ -27,11 +27,11 @@ const Prefs = Me.imports.prefs;
var DEBUG = false; var DEBUG = false;
var logWrap; var logWrap;
if(log != undefined){ if (log != undefined) {
logWrap = log; logWrap = log;
} }
else { else {
logWrap = global.log logWrap = global.log
} }
/** /**
@ -57,42 +57,48 @@ function getSettings(schema) {
let schemaDir = Me.dir.get_child('schemas'); let schemaDir = Me.dir.get_child('schemas');
let schemaSource; let schemaSource;
if (schemaDir.query_exists(null)) if (schemaDir.query_exists(null))
schemaSource = GioSSS.new_from_directory(schemaDir.get_path(),GioSSS.get_default(),false); schemaSource = GioSSS.new_from_directory(schemaDir.get_path(), GioSSS.get_default(), false);
else else
schemaSource = GioSSS.get_default(); schemaSource = GioSSS.get_default();
let schemaObj = schemaSource.lookup(schema, true); let schemaObj = schemaSource.lookup(schema, true);
if (!schemaObj) if (!schemaObj)
throw new Error('Schema ' + schema + ' could not be found for extension ' throw new Error('Schema ' + schema + ' could not be found for extension '
+ Me.metadata.uuid + '. Please check your installation.'); + Me.metadata.uuid + '. Please check your installation.');
let _settings = new Gio.Settings({ settings_schema: schemaObj }); let _settings = new Gio.Settings({ settings_schema: schemaObj });
return _settings; return _settings;
} }
let cards; let cards;
function getProfiles(control, uidevice)
{ function getCard(card_index) {
if (!cards || Object.keys(cards).length == 0) {
refreshCards();
}
return cards[card_index];
}
function getProfiles(control, uidevice) {
let stream = control.lookup_stream_id(uidevice.get_stream_id()); let stream = control.lookup_stream_id(uidevice.get_stream_id());
if(stream) { if (stream) {
if(!cards || Object.keys(cards).length == 0 || !cards[stream.card_index]) { if (!cards || Object.keys(cards).length == 0 || !cards[stream.card_index]) {
refreshCards(); refreshCards();
} }
if(cards && cards[stream.card_index]) { if (cards && cards[stream.card_index]) {
_log("Getting profile form stream id " + uidevice.port_name ); _log("Getting profile form stream id " + uidevice.port_name);
return getProfilesForPort(uidevice.port_name, cards[stream.card_index]); return getProfilesForPort(uidevice.port_name, cards[stream.card_index]);
} }
} }
else else {
{
/* Device is not active device, lets try match with port name */ /* Device is not active device, lets try match with port name */
refreshCards(); refreshCards();
for (let id in cards) { for (let id in cards) {
let profiles; let profiles;
_log("Getting profile from cards " + uidevice.port_name + " for card id " + id); _log("Getting profile from cards " + uidevice.port_name + " for card id " + id);
if((profiles = getProfilesForPort(uidevice.port_name, cards[id]))) if ((profiles = getProfilesForPort(uidevice.port_name, cards[id]))) {
{
return profiles; return profiles;
} }
} }
@ -103,20 +109,20 @@ function getProfiles(control, uidevice)
let ports; let ports;
function getPorts(refresh) { function getPorts(refresh) {
if(!ports || ports.length == 0 || refresh) { if (!ports || ports.length == 0 || refresh) {
refreshCards(); refreshCards();
} }
return ports; return ports;
} }
function isCmdFound(cmd){ function isCmdFound(cmd) {
try { try {
let [result, out, err, exit_code] = GLib.spawn_command_line_sync(cmd); let [result, out, err, exit_code] = GLib.spawn_command_line_sync(cmd);
return true; return true;
} }
catch(e) { catch (e) {
_log('ERROR: '+ cmd +' execution failed. ' + e); _log('ERROR: ' + cmd + ' execution failed. ' + e);
return false; return false;
} }
} }
@ -126,58 +132,60 @@ function refreshCards() {
// if(_settings == null) {getSettings(Prefs.SETTINGS_SCHEMA);} // if(_settings == null) {getSettings(Prefs.SETTINGS_SCHEMA);}
let _settings = getSettings(Prefs.SETTINGS_SCHEMA); let _settings = getSettings(Prefs.SETTINGS_SCHEMA);
let error = false; let error = false;
if(_settings.get_boolean(Prefs.NEW_PROFILE_ID)) { let newProfLogic = _settings.get_boolean(Prefs.NEW_PROFILE_ID);
if (newProfLogic) {
_log("New logic"); _log("New logic");
let pyLocation = Me.dir.get_child('utils/pa_helper.py').get_path(); let pyLocation = Me.dir.get_child('utils/pa_helper.py').get_path();
let pythonExec = 'python'; let pythonExec = 'python';
let pyVer = 3; let pyVer = 3;
while(!isCmdFound(pythonExec) && pyVer >=2){ while (!isCmdFound(pythonExec) && pyVer >= 2) {
_log(pythonExec + " is not found. Try next"); _log(pythonExec + " is not found. Try next");
pythonExec = 'python' + pyVer--; pythonExec = 'python' + pyVer--;
} }
if(pyVer <= 1) { if (pyVer <= 1) {
_log('ERROR: Python not found. fallback to default mode' + e); _log('ERROR: Python not found. fallback to default mode' + e);
_settings.set_boolean(Prefs.NEW_PROFILE_ID, false); _settings.set_boolean(Prefs.NEW_PROFILE_ID, false);
Gio.Settings.sync(); Gio.Settings.sync();
} }
else { else {
try { try {
let [result, out, err, exit_code] = GLib.spawn_command_line_sync(pythonExec+ ' ' + pyLocation); let [result, out, err, exit_code] = GLib.spawn_command_line_sync(pythonExec + ' ' + pyLocation);
// _log("result" + result +" out"+out + " exit_code" + // _log("result" + result +" out"+out + " exit_code" +
// exit_code + "err" +err); // exit_code + "err" +err);
if(result && !exit_code) { if (result && !exit_code) {
if (out instanceof Uint8Array) { if (out instanceof Uint8Array) {
out = ByteArray.toString(out); out = ByteArray.toString(out);
} }
let obj = JSON.parse(out); let obj = JSON.parse(out);
cards = obj['cards']; cards = obj['cards'];
ports = obj['ports']; ports = obj['ports'];
} }
} }
catch(e) { catch (e) {
error = true; 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); _settings.set_boolean(Prefs.NEW_PROFILE_ID, false);
Gio.Settings.sync(); Gio.Settings.sync();
}
}
}
if(!_settings.get_boolean(Prefs.NEW_PROFILE_ID) || error){
try {
let [result, out, err, exit_code] = GLib.spawn_command_line_sync('pactl list cards');
if(result && !exit_code) {
parseOutput(out);
} }
} }
catch(e) { }
_log('ERROR: pactl execution failed. No ports/profiles will be displayed'); //error = true;
if (!newProfLogic || error) {
try {
let [result, out, err, exit_code] = GLib.spawn_command_line_sync('pactl list cards');
if (result && !exit_code) {
parseOutput(out);
}
}
catch (e) {
_log('ERROR: pactl execution failed. No ports/profiles will be displayed');
} }
} }
// _log(JSON.stringify(cards)); //_log(Array.isArray(cards));
// _log(JSON.stringify(ports)); //_log(JSON.stringify(cards));
//_log(Array.isArray(ports));
//_log(JSON.stringify(ports));
} }
function parseOutput(out) { function parseOutput(out) {
@ -193,40 +201,55 @@ function parseOutput(out) {
let port; let port;
let matches; let matches;
// _log("Unmatched line:" + out); // _log("Unmatched line:" + out);
while(lines.length > 0) { while (lines.length > 0) {
let line = lines.shift(); let line = lines.shift();
if( (matches = /^Card\s#(\d+)$/.exec(line) )) { if ((matches = /^Card\s#(\d+)$/.exec(line))) {
cardIndex = matches[1]; cardIndex = matches[1];
if(!cards[cardIndex]) { if (!cards[cardIndex]) {
cards[cardIndex] = {'index':cardIndex,'profiles':[], 'ports':[]}; cards[cardIndex] = { 'index': cardIndex, 'profiles': [], 'ports': [] };
} }
} }
else if (line.match(/^\t*Profiles:$/) ) { else if ((matches = /^\t*Name:\s+(.*?)$/.exec(line)) && cards[cardIndex]) {
cards[cardIndex].name = matches[1];
parseSection = "CARDS"
}
else if (line.match(/^\tProperties:$/) && parseSection == "CARDS") {
parseSection = "PROPS";
}
else if (line.match(/^\t*Profiles:$/)) {
parseSection = "PROFILES"; parseSection = "PROFILES";
} }
else if (line.match(/^\t*Ports:$/)) { else if (line.match(/^\t*Ports:$/)) {
parseSection = "PORTS"; parseSection = "PORTS";
} }
else if(cards[cardIndex]) { else if (cards[cardIndex]) {
switch(parseSection) { switch (parseSection) {
case "PROFILES": case "PROPS":
if((matches = /.*?((?:output|input)[^+]*?):\s(.*?)\s\(sinks:/.exec(line))) { if ((matches = /alsa\.card_name\s+=\s+"(.*?)"/.exec(line))) {
cards[cardIndex].profiles.push({'name': matches[1], 'human_name': matches[2]}); cards[cardIndex].alsa_name = matches[1];
} }
break; else if((matches = /device\.description\s+=\s+"(.*?)"/.exec(line))) {
case "PORTS": cards[cardIndex].card_description = matches[1];
if((matches = /\t*(.*?):\s(.*?)\s\(priority:/.exec(line))) { }
port = {'name' : matches[1], 'human_name' : matches[2]}; break;
cards[cardIndex].ports.push(port); case "PROFILES":
ports.push({'name' : matches[1], 'human_name' : matches[2]}); if ((matches = /.*?((?:output|input)[^+]*?):\s(.*?)\s\(sinks:/.exec(line))) {
} cards[cardIndex].profiles.push({ 'name': matches[1], 'human_name': matches[2] });
else if( port && (matches = /\t*Part of profile\(s\):\s(.*)/.exec(line))) { }
let profileStr = matches[1]; break;
port.profiles = profileStr.split(', '); case "PORTS":
port = null; 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 };
break; 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 = null;
}
break;
} }
} }
} }
@ -245,7 +268,7 @@ var Signal = class Signal {
} }
disconnect() { disconnect() {
if(this._signalId) { if (this._signalId) {
this._signalSource.disconnect(this._signalId); this._signalSource.disconnect(this._signalId);
this._signalId = null; this._signalId = null;
} }
@ -260,12 +283,12 @@ var SignalManager = class SignalManager {
addSignal(signalSource, signalName, callback) { addSignal(signalSource, signalName, callback) {
let obj = null; let obj = null;
if(signalSource && signalName && callback) { if (signalSource && signalName && callback) {
obj = new Signal(signalSource, signalName, callback); obj = new Signal(signalSource, signalName, callback);
obj.connect(); obj.connect();
this._signals.push(obj); this._signals.push(obj);
let sourceSignals = this._signalsBySource[signalSource] let sourceSignals = this._signalsBySource[signalSource]
if(!sourceSignals) { if (!sourceSignals) {
sourceSignals = []; sourceSignals = [];
this._signalsBySource[signalSource] = sourceSignals; this._signalsBySource[signalSource] = sourceSignals;
} }
@ -276,13 +299,13 @@ var SignalManager = class SignalManager {
} }
disconnectAll() { disconnectAll() {
for (let signal of this._signals){ for (let signal of this._signals) {
signal.disconnect(); signal.disconnect();
} }
} }
disconnectBySource(signalSource) { disconnectBySource(signalSource) {
if(this._signalsBySource[signalSource]) { if (this._signalsBySource[signalSource]) {
for (let signal of this._signalsBySource[signalSource]) { for (let signal of this._signalsBySource[signalSource]) {
signal.disconnect(); signal.disconnect();
} }
@ -292,15 +315,15 @@ var SignalManager = class SignalManager {
function getProfilesForPort(portName, card) { function getProfilesForPort(portName, card) {
if(card.ports) { if (card.ports) {
for (let port of card.ports) { for (let port of card.ports) {
if(portName === port.name) { if (portName === port.name) {
let profiles = []; let profiles = [];
if (port.profiles) { if (port.profiles) {
for (let profile of port.profiles) { for (let profile of port.profiles) {
if(profile.indexOf('+input:') == -1) { if (profile.indexOf('+input:') == -1) {
for (let cardProfile of card.profiles) { for (let cardProfile of card.profiles) {
if(profile === cardProfile.name) { if (profile === cardProfile.name) {
profiles.push(cardProfile); profiles.push(cardProfile);
} }
} }
@ -319,7 +342,7 @@ function setLog(value) {
} }
function _log(msg) { function _log(msg) {
if ( DEBUG == true ) { if (DEBUG == true) {
// global.log("SDC Debug: " + msg); // global.log("SDC Debug: " + msg);
logWrap("SDC Debug: " + msg); logWrap("SDC Debug: " + msg);
} }
@ -327,11 +350,11 @@ function _log(msg) {
function dump(obj) { function dump(obj) {
var propValue; var propValue;
for(var propName in obj) { for (var propName in obj) {
try{ try {
propValue = obj[propName]; propValue = obj[propName];
_log(propName + propValue); _log(propName + "=" + propValue);
} }
catch(e){_log(propName + "!!!Error!!!");} catch (e) { _log(propName + "!!!Error!!!"); }
} }
} }

View File

@ -0,0 +1,107 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:47+0200\n"
"PO-Revision-Date: 2020-09-02 18:22+0200\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.1\n"
"Last-Translator: Heimen Stoffels <vistausss@outlook.com>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: nl\n"
#: prefs-dialog.gtkbuilder:15
msgid "Monochrome"
msgstr "Monochroom"
#: prefs-dialog.gtkbuilder:19
msgid "Colored"
msgstr "Gekleurd"
#: prefs-dialog.gtkbuilder:23
msgid "None"
msgstr "Geen"
#: prefs-dialog.gtkbuilder:100
msgid "Hide selector if there's only one device"
msgstr "Keuzemenu verbergen als er slechts één apparaat is"
#: prefs-dialog.gtkbuilder:142
msgid "Display audio profiles for selection"
msgstr "Audioprofielen tonen in keuzemenu"
#: prefs-dialog.gtkbuilder:175
msgid "General Settings"
msgstr "Algemene instellingen"
#: prefs-dialog.gtkbuilder:220
msgid "Show output devices"
msgstr "Uitvoerapparaten tonen"
#: prefs-dialog.gtkbuilder:253
msgid "Output Devices"
msgstr "Uitvoerapparaten"
#: prefs-dialog.gtkbuilder:300
msgid "Show input devices"
msgstr "Invoerapparaten tonen"
#: prefs-dialog.gtkbuilder:343
msgid "Show volume control for default device"
msgstr "Volumebediening van standaardapparaat tonen"
#: prefs-dialog.gtkbuilder:376
msgid "Input Devices"
msgstr "Invoerapparaten"
#: prefs-dialog.gtkbuilder:422
msgid "Icon Theme"
msgstr "Pictogramthema"
#: prefs-dialog.gtkbuilder:472
msgid "Display icons only in selection list"
msgstr "Alleen pictogrammen tonen in keuzelijst"
#: prefs-dialog.gtkbuilder:504
msgid "Icons"
msgstr "Pictogrammen"
#: prefs-dialog.gtkbuilder:549
msgid "Enable Log messages"
msgstr "Logboek bijhouden"
#: prefs-dialog.gtkbuilder:588
msgid "Enable new profile identification "
msgstr "Nieuwe profielidentificatie inschakelen "
#: prefs-dialog.gtkbuilder:620
msgid "Miscellaneous"
msgstr "Overig"
#: prefs-dialog.gtkbuilder:688
msgid "Name"
msgstr "Naam"
#: prefs-dialog.gtkbuilder:702
msgid "Show"
msgstr "Tonen"
#: prefs-dialog.gtkbuilder:716
msgid "Hide"
msgstr "Verbergen"
#: prefs-dialog.gtkbuilder:730
msgid "Default"
msgstr "Standaard"
#: prefs-dialog.gtkbuilder:756
msgid "Port Settings"
msgstr "Poortinstellingen"

View File

@ -11,5 +11,5 @@
], ],
"url": "https://github.com/kgshank/gse-sound-output-device-chooser", "url": "https://github.com/kgshank/gse-sound-output-device-chooser",
"uuid": "sound-output-device-chooser@kgshank.net", "uuid": "sound-output-device-chooser@kgshank.net",
"version": 32 "version": 33
} }

View File

@ -48,7 +48,55 @@ var ICON_THEME_COLORED = "colored";
var ICON_THEME_MONOCHROME = "monochrome"; var ICON_THEME_MONOCHROME = "monochrome";
var ICON_THEME_NONE = "none"; var ICON_THEME_NONE = "none";
function init(){} const PORT_SETTINGS_VERSION = 2;
function init() { }
function getPortsFromSettings(_settings) {
let obj = JSON.parse(_settings.get_string(PORT_SETTINGS));
let currentSettingsVersion = PORT_SETTINGS_VERSION;
if (Array.isArray(obj)) {
currentSettingsVersion = 1;
}
if (currentSettingsVersion < PORT_SETTINGS_VERSION) {
obj = migratePortSettings(currentSettingsVersion, obj, _settings);
}
return obj.ports;
}
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));
return settingsObj;
}
function getPortDisplayName(port) {
return port.card_description + " - " + port.human_name;
}
function migratePortSettings(currVersion, currSettings, _settings) {
let ports = [];
switch (currVersion) {
case 1:
let _lPorts = Lib.getPorts(true).slice();
for (let port of currSettings) {
for (var i = 0; i < _lPorts.length; i++) {
let _lPort = _lPorts[i];
if (port.human_name == _lPort.human_name && port.name == _lPort.name) {
port.card_name = _lPort.card_name;
port.display_name = getPortDisplayName(_lPort);
_lPorts.splice(i, 1);
ports.push(port);
break;
}
}
}
break;
}
return setPortsSettings(ports,_settings);
}
const SDCSettingsWidget = new GObject.Class({ const SDCSettingsWidget = new GObject.Class({
@ -64,12 +112,12 @@ const SDCSettingsWidget = new GObject.Class({
// creates the settings // creates the settings
this._settings = Lib.getSettings(SETTINGS_SCHEMA); this._settings = Lib.getSettings(SETTINGS_SCHEMA);
Lib.setLog(this._settings.get_boolean(ENABLE_LOG)); Lib.setLog(this._settings.get_boolean(ENABLE_LOG));
// creates the ui builder and add the main resource file // 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.gtkbuilder";
let builder = new Gtk.Builder(); 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) { if (builder.add_from_file(uiFilePath) == 0) {
_d("JS LOG: could not load the ui file: %s".format(uiFilePath)); _d("JS LOG: could not load the ui file: %s".format(uiFilePath));
@ -81,7 +129,7 @@ const SDCSettingsWidget = new GObject.Class({
this.pack_start(label, true, true, 0); this.pack_start(label, true, true, 0);
} else { } 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"); let mainContainer = builder.get_object("main-container");
@ -111,7 +159,7 @@ const SDCSettingsWidget = new GObject.Class({
this._settings.bind(NEW_PROFILE_ID, newProfileIdSwitch, "active", Gio.SettingsBindFlags.DEFAULT); this._settings.bind(NEW_PROFILE_ID, newProfileIdSwitch, "active", Gio.SettingsBindFlags.DEFAULT);
this._settings.bind(ICON_THEME, iconThemeCombo, "active-id", Gio.SettingsBindFlags.DEFAULT); this._settings.bind(ICON_THEME, iconThemeCombo, "active-id", Gio.SettingsBindFlags.DEFAULT);
//Show always is not working always, hidden in the UI directly
let showAlwaysToggleRender = builder.get_object("ShowAlwaysToggleRender"); let showAlwaysToggleRender = builder.get_object("ShowAlwaysToggleRender");
let hideAlwaysToggleRender = builder.get_object("HideAlwaysToggleRender"); let hideAlwaysToggleRender = builder.get_object("HideAlwaysToggleRender");
let showActiveToggleRender = builder.get_object("ShowActiveToggleRender"); let showActiveToggleRender = builder.get_object("ShowActiveToggleRender");
@ -127,11 +175,10 @@ const SDCSettingsWidget = new GObject.Class({
} }
}, },
_populatePorts: function (){ _populatePorts: function() {
let ports = Lib.getPorts(true); let ports = Lib.getPorts(true);
for (let port of ports) 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)]);
this._portsStore.set(this._portsStore.append(),[0,1,2,3,4,5],[port.human_name, false, false, true, port.name,3]);
} }
}, },
@ -149,18 +196,22 @@ const SDCSettingsWidget = new GObject.Class({
_toggleCallback: function(widget, path, activeCol, inactiveCols) { _toggleCallback: function(widget, path, activeCol, inactiveCols) {
let active = !widget.active; let active = !widget.active;
if(!active) if (!active) {
{
return; return;
} }
let [success, iter] = this._portsStore.get_iter_from_string(path); let [success, iter] = this._portsStore.get_iter_from_string(path);
if (!success) { if (!success) {
return; return;
} }
/*Dont support non-pci cards for show always*/
let card_name = this._portsStore.get_value(iter, 6);
if(!/\.pci-/.exec(card_name) && activeCol == 1){
this._toggleCallback(widget, path, 3, [1, 2]);
return;
}
this._portsStore.set_value(iter, activeCol, active); this._portsStore.set_value(iter, activeCol, active);
this._portsStore.set_value(iter, 5, activeCol); this._portsStore.set_value(iter, 5, activeCol);
for (let col of inactiveCols) for (let col of inactiveCols) {
{
this._portsStore.set_value(iter, col, !active); this._portsStore.set_value(iter, col, !active);
} }
this._commitSettings(); this._commitSettings();
@ -171,21 +222,23 @@ const SDCSettingsWidget = new GObject.Class({
let [success, iter] = this._portsStore.get_iter_first(); let [success, iter] = this._portsStore.get_iter_first();
while (iter && success) { while (iter && success) {
if(!this._portsStore.get_value(iter,3)) { if (!this._portsStore.get_value(iter, 3)) {
ports.push({ ports.push({
human_name: this._portsStore.get_value(iter, 0), human_name: this._portsStore.get_value(iter, 0),
name: this._portsStore.get_value(iter, 4), name: this._portsStore.get_value(iter, 4),
display_option: this._portsStore.get_value(iter, 5) display_option: this._portsStore.get_value(iter, 5),
card_name: this._portsStore.get_value(iter, 6),
display_name: this._portsStore.get_value(iter, 7)
}); });
} }
success = this._portsStore.iter_next(iter); success = this._portsStore.iter_next(iter);
} }
this._settings.set_string(PORT_SETTINGS, JSON.stringify(ports)); setPortsSettings(ports, this._settings);
}, },
_restorePortsFromSettings: function() { _restorePortsFromSettings: function() {
let ports = JSON.parse(this._settings.get_string(PORT_SETTINGS)); let ports = getPortsFromSettings(this._settings);
let found; let found;
for (let port of ports) { for (let port of ports) {
@ -199,8 +252,9 @@ const SDCSettingsWidget = new GObject.Class({
while (iter && success) { while (iter && success) {
let human_name = this._portsStore.get_value(iter, 0); let human_name = this._portsStore.get_value(iter, 0);
let name = this._portsStore.get_value(iter, 4); let name = this._portsStore.get_value(iter, 4);
let card_name = this._portsStore.get_value(iter, 6);
if(port.name == name && port.human_name == human_name) { if (port.name == name && port.human_name == human_name && port.card_name == card_name) {
this._portsStore.set_value(iter, 3, false); this._portsStore.set_value(iter, 3, false);
this._portsStore.set_value(iter, port.display_option, true); this._portsStore.set_value(iter, port.display_option, true);
this._portsStore.set_value(iter, 5, port.display_option); this._portsStore.set_value(iter, 5, port.display_option);
@ -210,10 +264,10 @@ const SDCSettingsWidget = new GObject.Class({
success = this._portsStore.iter_next(iter); success = this._portsStore.iter_next(iter);
} }
if(!found){ if (!found) {
iter = this._portsStore.append(); iter = this._portsStore.append();
this._portsStore.set(iter, [0,1,2,3,4,5], this._portsStore.set(iter, [0, 1, 2, 3, 4, 5, 6, 7],
[port.human_name, false, false, false, port.name,port.display_option]); [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); this._portsStore.set_value(iter, port.display_option, true);
} }
} }

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 --> <!-- Generated with glade 3.38.2 -->
<interface> <interface>
<requires lib="gtk+" version="3.16"/> <requires lib="gtk+" version="3.16"/>
<object class="GtkListStore" id="icon-theme-store"> <object class="GtkListStore" id="icon-theme-store">
@ -38,65 +38,69 @@
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name SelectedColumn --> <!-- column-name SelectedColumn -->
<column type="gint"/> <column type="gint"/>
<!-- column-name CardName -->
<column type="gchararray"/>
<!-- column-name DisplayName -->
<column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkBox" id="main-container"> <object class="GtkBox" id="main-container">
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_left">6</property> <property name="margin-left">6</property>
<property name="margin_right">6</property> <property name="margin-right">6</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">2</property> <property name="spacing">2</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="vexpand">True</property> <property name="vexpand">True</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_left">12</property> <property name="margin-left">12</property>
<property name="margin_right">6</property> <property name="margin-right">6</property>
<property name="margin_top">12</property> <property name="margin-top">12</property>
<property name="margin_bottom">12</property> <property name="margin-bottom">12</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">12</property> <property name="spacing">12</property>
<child> <child>
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label_xalign">0</property> <property name="label-xalign">0</property>
<property name="shadow_type">out</property> <property name="shadow-type">out</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkListBox"> <object class="GtkListBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="selection_mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkListBoxRow">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property> <property name="margin-left">5</property>
<property name="label" translatable="yes">Hide selector if there's only one device</property> <property name="label" translatable="yes">Hide selector if there's only one device</property>
</object> </object>
<packing> <packing>
@ -108,9 +112,9 @@
<child> <child>
<object class="GtkSwitch" id="single-device"> <object class="GtkSwitch" id="single-device">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="margin_right">5</property> <property name="margin-right">5</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -124,21 +128,21 @@
</child> </child>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkListBoxRow">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property> <property name="margin-left">5</property>
<property name="label" translatable="yes">Display audio profiles for selection</property> <property name="label" translatable="yes">Display audio profiles for selection</property>
</object> </object>
<packing> <packing>
@ -150,9 +154,9 @@
<child> <child>
<object class="GtkSwitch" id="show-profile"> <object class="GtkSwitch" id="show-profile">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="margin_right">5</property> <property name="margin-right">5</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -166,22 +170,22 @@
</child> </child>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkListBoxRow">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property> <property name="margin-left">5</property>
<property name="margin_right">20</property> <property name="margin-right">20</property>
<property name="label" translatable="yes">Extend Volume Menu to fit device names</property> <property name="label" translatable="yes">Extend Volume Menu to fit device names</property>
</object> </object>
<packing> <packing>
@ -193,9 +197,9 @@
<child> <child>
<object class="GtkSwitch" id="expand-volume-menu"> <object class="GtkSwitch" id="expand-volume-menu">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="margin_right">5</property> <property name="margin-right">5</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -214,7 +218,7 @@
<child type="label"> <child type="label">
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">General Settings</property> <property name="label" translatable="yes">General Settings</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
@ -231,35 +235,35 @@
<child> <child>
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label_xalign">0</property> <property name="label-xalign">0</property>
<property name="shadow_type">out</property> <property name="shadow-type">out</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkListBox"> <object class="GtkListBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkListBoxRow">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property> <property name="margin-left">5</property>
<property name="label" translatable="yes">Show output devices</property> <property name="label" translatable="yes">Show output devices</property>
</object> </object>
<packing> <packing>
@ -271,9 +275,9 @@
<child> <child>
<object class="GtkSwitch" id="show-output-devices"> <object class="GtkSwitch" id="show-output-devices">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="margin_right">5</property> <property name="margin-right">5</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -292,7 +296,7 @@
<child type="label"> <child type="label">
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Output Devices</property> <property name="label" translatable="yes">Output Devices</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
@ -309,37 +313,37 @@
<child> <child>
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label_xalign">0</property> <property name="label-xalign">0</property>
<property name="shadow_type">out</property> <property name="shadow-type">out</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkListBox"> <object class="GtkListBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="selection_mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkListBoxRow">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property> <property name="margin-left">5</property>
<property name="label" translatable="yes">Show input devices</property> <property name="label" translatable="yes">Show input devices</property>
</object> </object>
<packing> <packing>
@ -351,9 +355,9 @@
<child> <child>
<object class="GtkSwitch" id="show-input-devices"> <object class="GtkSwitch" id="show-input-devices">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="margin_right">5</property> <property name="margin-right">5</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -367,22 +371,22 @@
</child> </child>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkListBoxRow">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="valign">center</property> <property name="valign">center</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property> <property name="margin-left">5</property>
<property name="label" translatable="yes">Show volume control for default device</property> <property name="label" translatable="yes">Show volume control for default device</property>
</object> </object>
<packing> <packing>
@ -394,9 +398,9 @@
<child> <child>
<object class="GtkSwitch" id="show-input-slider"> <object class="GtkSwitch" id="show-input-slider">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="margin_right">5</property> <property name="margin-right">5</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -415,7 +419,7 @@
<child type="label"> <child type="label">
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Input Devices</property> <property name="label" translatable="yes">Input Devices</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
@ -432,36 +436,36 @@
<child> <child>
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label_xalign">0</property> <property name="label-xalign">0</property>
<property name="shadow_type">in</property> <property name="shadow-type">in</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkListBox"> <object class="GtkListBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="selection_mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkListBoxRow">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="name">6</property> <property name="name">6</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property> <property name="margin-left">5</property>
<property name="label" translatable="yes">Icon Theme</property> <property name="label" translatable="yes">Icon Theme</property>
</object> </object>
<packing> <packing>
@ -472,12 +476,12 @@
</child> </child>
<child> <child>
<object class="GtkComboBox" id="icon-theme"> <object class="GtkComboBox" id="icon-theme">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_right">5</property> <property name="margin-right">5</property>
<property name="model">icon-theme-store</property> <property name="model">icon-theme-store</property>
<property name="id_column">0</property> <property name="id-column">0</property>
<child> <child>
<object class="GtkCellRendererText" id="Text"/> <object class="GtkCellRendererText" id="Text"/>
<attributes> <attributes>
@ -497,21 +501,21 @@
</child> </child>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkListBoxRow">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property> <property name="margin-left">5</property>
<property name="label" translatable="yes">Display icons only in selection list</property> <property name="label" translatable="yes">Display icons only in selection list</property>
</object> </object>
<packing> <packing>
@ -523,8 +527,8 @@
<child> <child>
<object class="GtkSwitch" id="hide-menu-icons"> <object class="GtkSwitch" id="hide-menu-icons">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="margin_right">5</property> <property name="margin-right">5</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -543,7 +547,7 @@
<child type="label"> <child type="label">
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Icons</property> <property name="label" translatable="yes">Icons</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
@ -560,36 +564,36 @@
<child> <child>
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label_xalign">0</property> <property name="label-xalign">0</property>
<property name="shadow_type">in</property> <property name="shadow-type">in</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkListBox"> <object class="GtkListBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="selection_mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkListBoxRow">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="name">6</property> <property name="name">6</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property> <property name="margin-left">5</property>
<property name="label" translatable="yes">Enable Log messages</property> <property name="label" translatable="yes">Enable Log messages</property>
</object> </object>
<packing> <packing>
@ -601,7 +605,7 @@
<child> <child>
<object class="GtkSwitch" id="enable-log"> <object class="GtkSwitch" id="enable-log">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -615,21 +619,21 @@
</child> </child>
<child> <child>
<object class="GtkListBoxRow"> <object class="GtkListBoxRow">
<property name="width_request">100</property> <property name="width-request">100</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_top">6</property> <property name="margin-top">6</property>
<property name="margin_bottom">6</property> <property name="margin-bottom">6</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property> <property name="margin-left">5</property>
<property name="label" translatable="yes">Enable new profile identification </property> <property name="label" translatable="yes">Enable new profile identification </property>
</object> </object>
<packing> <packing>
@ -641,7 +645,7 @@
<child> <child>
<object class="GtkSwitch" id="new-profile-identification"> <object class="GtkSwitch" id="new-profile-identification">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="active">True</property> <property name="active">True</property>
</object> </object>
<packing> <packing>
@ -661,7 +665,7 @@
<child type="label"> <child type="label">
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Miscellaneous</property> <property name="label" translatable="yes">Miscellaneous</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
@ -685,41 +689,42 @@
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_left">6</property> <property name="margin-left">6</property>
<property name="margin_right">12</property> <property name="margin-right">12</property>
<property name="margin_top">12</property> <property name="margin-top">12</property>
<property name="margin_bottom">12</property> <property name="margin-bottom">12</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="vexpand">True</property> <property name="vexpand">True</property>
<property name="label_xalign">0</property> <property name="label-xalign">0</property>
<property name="shadow_type">out</property> <property name="shadow-type">out</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="margin_left">4</property> <property name="margin-left">4</property>
<property name="margin_right">4</property> <property name="margin-right">4</property>
<property name="margin_bottom">4</property> <property name="margin-bottom">4</property>
<property name="vexpand">True</property> <property name="vexpand">True</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkScrolledWindow" id="scrolledwindow1"> <object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="opacity">0.99999999865889544</property> <property name="opacity">0.9999999986588954</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="vexpand">True</property> <property name="vexpand">True</property>
<property name="resize_mode">queue</property> <property name="resize-mode">queue</property>
<property name="shadow_type">in</property> <property name="shadow-type">in</property>
<property name="min-content-width">500</property>
<child> <child>
<object class="GtkTreeView" id="port-treeview"> <object class="GtkTreeView" id="port-treeview">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can-focus">True</property>
<property name="vexpand">True</property> <property name="vexpand">True</property>
<property name="model">ports-store</property> <property name="model">ports-store</property>
<child internal-child="selection"> <child internal-child="selection">
@ -729,20 +734,21 @@
<object class="GtkTreeViewColumn" id="PortNameColumn"> <object class="GtkTreeViewColumn" id="PortNameColumn">
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="sizing">autosize</property> <property name="sizing">autosize</property>
<property name="min_width">100</property> <property name="min-width">100</property>
<property name="title" translatable="yes">Name</property> <property name="title" translatable="yes">Name</property>
<property name="expand">True</property> <property name="expand">True</property>
<property name="sort_order">descending</property> <property name="sort-order">descending</property>
<child> <child>
<object class="GtkCellRendererText" id="PortNameRenderer"/> <object class="GtkCellRendererText" id="PortNameRenderer"/>
<attributes> <attributes>
<attribute name="text">0</attribute> <attribute name="text">7</attribute>
</attributes> </attributes>
</child> </child>
</object> </object>
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn" id="ShowAlwaysColumn"> <object class="GtkTreeViewColumn" id="ShowAlwaysColumn">
<property name="visible">False</property>
<property name="sizing">autosize</property> <property name="sizing">autosize</property>
<property name="title" translatable="yes">Show</property> <property name="title" translatable="yes">Show</property>
<child> <child>
@ -797,7 +803,7 @@
<child type="label"> <child type="label">
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Port Settings</property> <property name="label" translatable="yes">Port Settings</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>

View File

@ -2,6 +2,7 @@
# '/usr/include/pulse/introspect.h' '/usr/include/pulse/mainloop.h' '/usr/include/pulse/context.h' # '/usr/include/pulse/introspect.h' '/usr/include/pulse/mainloop.h' '/usr/include/pulse/context.h'
# Refer additional licensing requirements for the files included # Refer additional licensing requirements for the files included
# sample commands used # sample commands used
# python3 /usr/bin/clang2py --clang-args="-I/usr/include/clang/6.0/include -I/usr/include/pulse" -l /usr/lib/libpulse.so '/usr/include/pulse/introspect.h' '/usr/include/pulse/mainloop.h' '/usr/include/pulse/proplist.h'
# python3 /usr/local/bin/clang2py --clang-args="-I/usr/include/clang/6.0/include -I/usr/include/pulse" -l /usr/lib/x86_64-linux-gnu/libpulse.so '/usr/include/pulse/introspect.h' '/usr/include/pulse/mainloop.h' # python3 /usr/local/bin/clang2py --clang-args="-I/usr/include/clang/6.0/include -I/usr/include/pulse" -l /usr/lib/x86_64-linux-gnu/libpulse.so '/usr/include/pulse/introspect.h' '/usr/include/pulse/mainloop.h'
# python3 /usr/local/bin/clang2py --clang-args="-I/usr/include/clang/6.0/include -I/usr/include/pulse" -l /usr/lib/x86_64-linux-gnu/libpulse.so '/usr/include/pulse/context.h' # python3 /usr/local/bin/clang2py --clang-args="-I/usr/include/clang/6.0/include -I/usr/include/pulse" -l /usr/lib/x86_64-linux-gnu/libpulse.so '/usr/include/pulse/context.h'
################################################################################ ################################################################################
@ -490,6 +491,16 @@ pa_operation_unref.argtypes = [POINTER_T(struct_pa_operation)]
# ('tv_usec', ctypes.c_int64), # ('tv_usec', ctypes.c_int64),
# ] # ]
pa_proplist_to_string = _libraries['libpulse.so'].pa_proplist_to_string
pa_proplist_to_string.restype = POINTER_T(ctypes.c_char)
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)]
__all__ = \ __all__ = \
['PA_CONTEXT_AUTHORIZING', 'PA_CONTEXT_CONNECTING', ['PA_CONTEXT_AUTHORIZING', 'PA_CONTEXT_CONNECTING',
'PA_CONTEXT_FAILED', 'PA_CONTEXT_NOAUTOSPAWN', 'PA_CONTEXT_FAILED', 'PA_CONTEXT_NOAUTOSPAWN',
@ -534,4 +545,4 @@ __all__ = \
'struct_pa_mainloop_api', 'struct_pa_operation', 'struct_pa_mainloop_api', 'struct_pa_operation',
'struct_pa_proplist', 'struct_pa_sample_spec', 'struct_pa_proplist', 'struct_pa_sample_spec',
'struct_pa_spawn_api', 'struct_pa_time_event', 'struct_pollfd', 'struct_pa_spawn_api', 'struct_pa_time_event', 'struct_pollfd',
'struct_timeval', 'uint32_t'] 'struct_timeval', 'uint32_t','pa_proplist_to_string','pa_proplist_gets']

View File

@ -18,7 +18,7 @@
import libpulse_introspect as pa import libpulse_introspect as pa
import sys import sys
from ctypes import c_int,byref from ctypes import c_int,byref, c_char_p, cast
import time import time
from json import dumps from json import dumps
@ -58,8 +58,8 @@ class PAHelper():
pa.pa_mainloop_iterate(self.mainloop, 0, byref(retVal)) pa.pa_mainloop_iterate(self.mainloop, 0, byref(retVal))
# print(dumps(self._ports, indent = 5))
print(dumps({'cards': self._cards, 'ports':self._ports}, indent = 5)) print(dumps({'cards': self._cards, 'ports':self._ports}, indent = 5))
try: try:
if operation: if operation:
@ -82,6 +82,13 @@ class PAHelper():
card_obj['index'] = str(card.index) card_obj['index'] = str(card.index)
self._cards[card.index] = card_obj self._cards[card.index] = card_obj
card_obj['profiles'] = [] card_obj['profiles'] = []
card_name = cast(pa.pa_proplist_gets(card.proplist,c_char_p(b'alsa.card_name')),c_char_p)
card_obj['alsa_name'] = card_name.value.decode('utf8') if card_name else ''
description = cast(pa.pa_proplist_gets(card.proplist,c_char_p(b'device.description')),c_char_p)
card_obj['card_description'] = description.value.decode('utf8') if description else ''
card_obj['name'] = card.name.decode('utf8') if card.name else ''
for k in range(0, card.n_profiles): for k in range(0, card.n_profiles):
if(card.profiles2[k]): if(card.profiles2[k]):
profile = card.profiles2[k].contents profile = card.profiles2[k].contents
@ -102,6 +109,7 @@ class PAHelper():
obj['available'] = port.available obj['available'] = port.available
obj['n_profiles'] = port.n_profiles obj['n_profiles'] = port.n_profiles
obj['profiles'] = [] obj['profiles'] = []
obj['card_name'] = card_obj['name']
for j in range(0, port.n_profiles): for j in range(0, port.n_profiles):
if(port.profiles2[j]): if(port.profiles2[j]):
profile = port.profiles2[j].contents profile = port.profiles2[j].contents

View File

@ -1 +0,0 @@
raw.githubusercontent.com:HSTS 0 18617 1640101514058,1,0,2

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":1,"listeners":{"remote-settings/monitor_changes":{"version":"\"1608559052107\"","sourceInfo":{"moduleURI":"resource://services-settings/remote-settings.js","symbolName":"remoteSettingsBroadcastHandler"}}}} {"version":1,"listeners":{"remote-settings/monitor_changes":{"version":"\"1611086252115\"","sourceInfo":{"moduleURI":"resource://services-settings/remote-settings.js","symbolName":"remoteSettingsBroadcastHandler"}}}}

View File

@ -1,5 +1,5 @@
[Compatibility] [Compatibility]
LastVersion=84.0_20201215210116/20201215210116 LastVersion=84.0.2_20210107154745/20210107154745
LastOSABI=Linux_x86_64-gcc3 LastOSABI=Linux_x86_64-gcc3
LastPlatformDir=/usr/lib/firefox LastPlatformDir=/usr/lib/firefox
LastAppDir=/usr/lib/firefox/browser LastAppDir=/usr/lib/firefox/browser

View File

@ -14,20 +14,22 @@ user_pref("app.normandy.first_run", false);
user_pref("app.normandy.migrationsApplied", 10); user_pref("app.normandy.migrationsApplied", 10);
user_pref("app.normandy.startupExperimentPrefs.dom.push.alwaysConnect", true); user_pref("app.normandy.startupExperimentPrefs.dom.push.alwaysConnect", true);
user_pref("app.normandy.startupRolloutPrefs.app.normandy.onsync_skew_sec", 3300); user_pref("app.normandy.startupRolloutPrefs.app.normandy.onsync_skew_sec", 3300);
user_pref("app.normandy.startupRolloutPrefs.browser.toolbars.bookmarks.2h2020", true);
user_pref("app.normandy.startupRolloutPrefs.doh-rollout.enabled", true); user_pref("app.normandy.startupRolloutPrefs.doh-rollout.enabled", true);
user_pref("app.normandy.startupRolloutPrefs.doh-rollout.profileCreationThreshold", "1896163212345"); user_pref("app.normandy.startupRolloutPrefs.doh-rollout.profileCreationThreshold", "1896163212345");
user_pref("app.normandy.startupRolloutPrefs.network.preload", true);
user_pref("app.normandy.startupRolloutPrefs.services.sync.bookmarks.buffer.enabled", true); 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.normandy.user_id", "f6151ad0-fece-4d81-9d5c-67449843ccf0");
user_pref("app.shield.optoutstudies.enabled", false); user_pref("app.shield.optoutstudies.enabled", false);
user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1606946507); user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1611097648);
user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1588540518); user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1588540518);
user_pref("app.update.lastUpdateTime.browser-cleanup-thumbnails", 1608565237); user_pref("app.update.lastUpdateTime.browser-cleanup-thumbnails", 1611097888);
user_pref("app.update.lastUpdateTime.recipe-client-addon-run", 1608565211); user_pref("app.update.lastUpdateTime.recipe-client-addon-run", 1611098008);
user_pref("app.update.lastUpdateTime.rs-experiment-loader-timer", 1608565076); user_pref("app.update.lastUpdateTime.rs-experiment-loader-timer", 1608565076);
user_pref("app.update.lastUpdateTime.search-engine-update-timer", 1608565357); user_pref("app.update.lastUpdateTime.search-engine-update-timer", 1608565357);
user_pref("app.update.lastUpdateTime.services-settings-poll-changes", 1608565477); user_pref("app.update.lastUpdateTime.services-settings-poll-changes", 1608565477);
user_pref("app.update.lastUpdateTime.telemetry_modules_ping", 1573002408); user_pref("app.update.lastUpdateTime.telemetry_modules_ping", 1573002408);
user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1606946627); user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1611097768);
user_pref("browser.bookmarks.defaultLocation", "unfiled"); user_pref("browser.bookmarks.defaultLocation", "unfiled");
user_pref("browser.bookmarks.restore_default_bookmarks", false); user_pref("browser.bookmarks.restore_default_bookmarks", false);
user_pref("browser.cache.disk.amount_written", 1754406); user_pref("browser.cache.disk.amount_written", 1754406);
@ -58,26 +60,24 @@ user_pref("browser.newtabpage.pinned", "[{\"url\":\"https://google.com\",\"label
user_pref("browser.newtabpage.storageVersion", 1); 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.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.pagethumbnails.storage_version", 3);
user_pref("browser.region.update.first-seen", 1608565077);
user_pref("browser.region.update.region", "DE");
user_pref("browser.rights.3.shown", true); user_pref("browser.rights.3.shown", true);
user_pref("browser.safebrowsing.provider.google4.lastupdatetime", "1608565082888"); user_pref("browser.safebrowsing.provider.google4.lastupdatetime", "1611099419825");
user_pref("browser.safebrowsing.provider.google4.nextupdatetime", "1608566904888"); user_pref("browser.safebrowsing.provider.google4.nextupdatetime", "1611101199825");
user_pref("browser.safebrowsing.provider.mozilla.lastupdatetime", "1608565088092"); user_pref("browser.safebrowsing.provider.mozilla.lastupdatetime", "1611097630263");
user_pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1608586688092"); user_pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1611119230263");
user_pref("browser.search.region", "ES"); user_pref("browser.search.region", "ES");
user_pref("browser.sessionstore.upgradeBackup.latestBuildID", "20201215210116"); user_pref("browser.sessionstore.upgradeBackup.latestBuildID", "20210107154745");
user_pref("browser.shell.checkDefaultBrowser", true); user_pref("browser.shell.checkDefaultBrowser", true);
user_pref("browser.shell.didSkipDefaultBrowserCheckOnFirstRun", true); user_pref("browser.shell.didSkipDefaultBrowserCheckOnFirstRun", true);
user_pref("browser.shell.mostRecentDateSetAsDefault", "1608565208"); user_pref("browser.shell.mostRecentDateSetAsDefault", "1611097620");
user_pref("browser.slowStartup.averageTime", 2223); user_pref("browser.slowStartup.averageTime", 0);
user_pref("browser.slowStartup.samples", 4); user_pref("browser.slowStartup.samples", 0);
user_pref("browser.startup.homepage", "moz-extension://f393b4c4-359a-4d1e-b377-fd4b41112e16/index.html"); user_pref("browser.startup.homepage", "moz-extension://f393b4c4-359a-4d1e-b377-fd4b41112e16/index.html");
user_pref("browser.startup.homepage_override.buildID", "20201215210116"); user_pref("browser.startup.homepage_override.buildID", "20210107154745");
user_pref("browser.startup.homepage_override.extensionControlled", true); user_pref("browser.startup.homepage_override.extensionControlled", true);
user_pref("browser.startup.homepage_override.mstone", "84.0"); user_pref("browser.startup.homepage_override.mstone", "84.0.2");
user_pref("browser.startup.homepage_override.privateAllowed", true); user_pref("browser.startup.homepage_override.privateAllowed", true);
user_pref("browser.startup.lastColdStartupCheck", 1608565208); user_pref("browser.startup.lastColdStartupCheck", 1611097619);
user_pref("browser.startup.page", 3); user_pref("browser.startup.page", 3);
user_pref("browser.tabs.drawInTitlebar", false); user_pref("browser.tabs.drawInTitlebar", false);
user_pref("browser.tabs.extraDragSpace", true); user_pref("browser.tabs.extraDragSpace", true);
@ -99,7 +99,7 @@ user_pref("devtools.toolsidebar-width.inspector.splitsidebar", 350);
user_pref("devtools.webextensions.https-everywhere@eff.org.enabled", true); user_pref("devtools.webextensions.https-everywhere@eff.org.enabled", true);
user_pref("distribution.Manjaro.bookmarksProcessed", true); user_pref("distribution.Manjaro.bookmarksProcessed", true);
user_pref("distribution.archlinux.bookmarksProcessed", true); user_pref("distribution.archlinux.bookmarksProcessed", true);
user_pref("distribution.iniFile.exists.appversion", "84.0"); user_pref("distribution.iniFile.exists.appversion", "84.0.2");
user_pref("distribution.iniFile.exists.value", true); user_pref("distribution.iniFile.exists.value", true);
user_pref("distribution.manjaro.bookmarksProcessed", true); user_pref("distribution.manjaro.bookmarksProcessed", true);
user_pref("doh-rollout.balrog-migration-done", true); user_pref("doh-rollout.balrog-migration-done", true);
@ -107,7 +107,7 @@ user_pref("doh-rollout.doneFirstRun", true);
user_pref("doh-rollout.doorhanger-decision", "UIOk"); user_pref("doh-rollout.doorhanger-decision", "UIOk");
user_pref("doh-rollout.mode", 2); user_pref("doh-rollout.mode", 2);
user_pref("doh-rollout.self-enabled", true); user_pref("doh-rollout.self-enabled", true);
user_pref("dom.push.userAgentID", "a50879c3826e4b92a407b2c491a9f9b9"); user_pref("dom.push.userAgentID", "f5abd17aff1a4d769a270e8ed28f9a91");
user_pref("dom.security.https_only_mode", true); user_pref("dom.security.https_only_mode", true);
user_pref("dom.security.https_only_mode_ever_enabled", true); user_pref("dom.security.https_only_mode_ever_enabled", true);
user_pref("extensions.activeThemeID", "default-theme@mozilla.org"); user_pref("extensions.activeThemeID", "default-theme@mozilla.org");
@ -115,13 +115,13 @@ user_pref("extensions.blocklist.lastModified", "Sat, 09 Nov 2019 17:49:50 GMT");
user_pref("extensions.blocklist.pingCountTotal", 34); user_pref("extensions.blocklist.pingCountTotal", 34);
user_pref("extensions.blocklist.pingCountVersion", -1); user_pref("extensions.blocklist.pingCountVersion", -1);
user_pref("extensions.databaseSchema", 33); user_pref("extensions.databaseSchema", 33);
user_pref("extensions.getAddons.cache.lastUpdate", 1606946508); user_pref("extensions.getAddons.cache.lastUpdate", 1611097649);
user_pref("extensions.getAddons.databaseSchema", 6); user_pref("extensions.getAddons.databaseSchema", 6);
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false); user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
user_pref("extensions.incognito.migrated", true); user_pref("extensions.incognito.migrated", true);
user_pref("extensions.lastAppBuildId", "20201126174332"); user_pref("extensions.lastAppBuildId", "20201126174332");
user_pref("extensions.lastAppVersion", "84.0"); user_pref("extensions.lastAppVersion", "84.0.2");
user_pref("extensions.lastPlatformVersion", "84.0"); user_pref("extensions.lastPlatformVersion", "84.0.2");
user_pref("extensions.pendingOperations", false); user_pref("extensions.pendingOperations", false);
user_pref("extensions.pocket.enabled", false); user_pref("extensions.pocket.enabled", false);
user_pref("extensions.pocket.settings.test.panelSignUp", "control"); user_pref("extensions.pocket.settings.test.panelSignUp", "control");
@ -154,15 +154,15 @@ user_pref("gfx.blacklist.layers.opengl", 4);
user_pref("gfx.blacklist.layers.opengl.failureid", "FEATURE_FAILURE_SOFTWARE_GL"); user_pref("gfx.blacklist.layers.opengl.failureid", "FEATURE_FAILURE_SOFTWARE_GL");
user_pref("identity.fxaccounts.enabled", false); user_pref("identity.fxaccounts.enabled", false);
user_pref("identity.fxaccounts.toolbar.accessed", true); user_pref("identity.fxaccounts.toolbar.accessed", true);
user_pref("idle.lastDailyNotification", 1608565394); user_pref("idle.lastDailyNotification", 1611097763);
user_pref("lightweightThemes.usedThemes", "[]"); user_pref("lightweightThemes.usedThemes", "[]");
user_pref("media.benchmark.vp9.fps", 102); user_pref("media.benchmark.vp9.fps", 102);
user_pref("media.benchmark.vp9.versioncheck", 5); user_pref("media.benchmark.vp9.versioncheck", 5);
user_pref("media.gmp-gmpopenh264.abi", "x86_64-gcc3"); user_pref("media.gmp-gmpopenh264.abi", "x86_64-gcc3");
user_pref("media.gmp-gmpopenh264.lastUpdate", 1572996640); user_pref("media.gmp-gmpopenh264.lastUpdate", 1572996640);
user_pref("media.gmp-gmpopenh264.version", "1.8.1.1"); user_pref("media.gmp-gmpopenh264.version", "1.8.1.1");
user_pref("media.gmp-manager.buildID", "20201215210116"); user_pref("media.gmp-manager.buildID", "20210107154745");
user_pref("media.gmp-manager.lastCheck", 1608565323); user_pref("media.gmp-manager.lastCheck", 1611097723);
user_pref("media.gmp.storage.version.observed", 1); user_pref("media.gmp.storage.version.observed", 1);
user_pref("network.dns.disablePrefetch", true); user_pref("network.dns.disablePrefetch", true);
user_pref("network.http.speculative-parallel-limit", 0); user_pref("network.http.speculative-parallel-limit", 0);
@ -174,13 +174,13 @@ user_pref("pdfjs.enabledCache.state", true);
user_pref("pdfjs.migrationVersion", 2); user_pref("pdfjs.migrationVersion", 2);
user_pref("pdfjs.previousHandler.alwaysAskBeforeHandling", true); user_pref("pdfjs.previousHandler.alwaysAskBeforeHandling", true);
user_pref("pdfjs.previousHandler.preferredAction", 4); user_pref("pdfjs.previousHandler.preferredAction", 4);
user_pref("places.database.lastMaintenance", 1608565394); user_pref("places.database.lastMaintenance", 1611097763);
user_pref("places.history.expiration.transient_current_max_pages", 112348); user_pref("places.history.expiration.transient_current_max_pages", 84803);
user_pref("plugin.disable_full_page_plugin_for_types", "application/pdf"); user_pref("plugin.disable_full_page_plugin_for_types", "application/pdf");
user_pref("privacy.cpd.offlineApps", true); user_pref("privacy.cpd.offlineApps", true);
user_pref("privacy.cpd.siteSettings", true); user_pref("privacy.cpd.siteSettings", true);
user_pref("privacy.purge_trackers.date_in_cookie_database", "0"); user_pref("privacy.purge_trackers.date_in_cookie_database", "0");
user_pref("privacy.purge_trackers.last_purge", "1608565394568"); user_pref("privacy.purge_trackers.last_purge", "1611097763522");
user_pref("privacy.sanitize.pending", "[]"); user_pref("privacy.sanitize.pending", "[]");
user_pref("privacy.sanitize.timeSpan", 0); user_pref("privacy.sanitize.timeSpan", 0);
user_pref("privacy.trackingprotection.enabled", true); user_pref("privacy.trackingprotection.enabled", true);
@ -189,40 +189,40 @@ user_pref("security.remote_settings.crlite_filters.checked", 1608567143);
user_pref("security.remote_settings.intermediates.checked", 1608567143); user_pref("security.remote_settings.intermediates.checked", 1608567143);
user_pref("security.sandbox.content.tempDirSuffix", "62ec57d4-3516-41bf-957e-19cd307d5b61"); user_pref("security.sandbox.content.tempDirSuffix", "62ec57d4-3516-41bf-957e-19cd307d5b61");
user_pref("security.sandbox.plugin.tempDirSuffix", "851284ee-3855-4de7-86af-976adc3a2c11"); user_pref("security.sandbox.plugin.tempDirSuffix", "851284ee-3855-4de7-86af-976adc3a2c11");
user_pref("services.blocklist.addons-mlbf.checked", 1608567143); user_pref("services.blocklist.addons-mlbf.checked", 1611097622);
user_pref("services.blocklist.addons.checked", 1598664411); user_pref("services.blocklist.addons.checked", 1598664411);
user_pref("services.blocklist.gfx.checked", 1608567143); user_pref("services.blocklist.gfx.checked", 1611097622);
user_pref("services.blocklist.onecrl.checked", 1565793602); user_pref("services.blocklist.onecrl.checked", 1565793602);
user_pref("services.blocklist.pinning.checked", 1608567143); user_pref("services.blocklist.pinning.checked", 1608567143);
user_pref("services.blocklist.plugins.checked", 1608567143); user_pref("services.blocklist.plugins.checked", 1611097622);
user_pref("services.settings.clock_skew_seconds", -1666); user_pref("services.settings.clock_skew_seconds", -1);
user_pref("services.settings.last_etag", "\"1608559052107\""); user_pref("services.settings.last_etag", "\"1611086252115\"");
user_pref("services.settings.last_update_seconds", 1608567143); user_pref("services.settings.last_update_seconds", 1611097622);
user_pref("services.settings.main.anti-tracking-url-decoration.last_check", 1608567143); user_pref("services.settings.main.anti-tracking-url-decoration.last_check", 1611097622);
user_pref("services.settings.main.cfr-fxa.last_check", 1608567143); user_pref("services.settings.main.cfr-fxa.last_check", 1611097622);
user_pref("services.settings.main.cfr.last_check", 1608567143); user_pref("services.settings.main.cfr.last_check", 1611097622);
user_pref("services.settings.main.fxmonitor-breaches.last_check", 1608567143); user_pref("services.settings.main.fxmonitor-breaches.last_check", 1611097622);
user_pref("services.settings.main.hijack-blocklists.last_check", 1608567143); user_pref("services.settings.main.hijack-blocklists.last_check", 1611097622);
user_pref("services.settings.main.language-dictionaries.last_check", 1608567143); user_pref("services.settings.main.language-dictionaries.last_check", 1611097622);
user_pref("services.settings.main.message-groups.last_check", 1608567143); user_pref("services.settings.main.message-groups.last_check", 1611097622);
user_pref("services.settings.main.messaging-experiments.last_check", 1604995344); user_pref("services.settings.main.messaging-experiments.last_check", 1604995344);
user_pref("services.settings.main.nimbus-desktop-experiments.last_check", 1608567143); user_pref("services.settings.main.nimbus-desktop-experiments.last_check", 1611097622);
user_pref("services.settings.main.normandy-recipes-capabilities.last_check", 1608567143); user_pref("services.settings.main.normandy-recipes-capabilities.last_check", 1611097622);
user_pref("services.settings.main.normandy-recipes.last_check", 1573409021); user_pref("services.settings.main.normandy-recipes.last_check", 1573409021);
user_pref("services.settings.main.onboarding.last_check", 1565793602); user_pref("services.settings.main.onboarding.last_check", 1565793602);
user_pref("services.settings.main.partitioning-exempt-urls.last_check", 1608567143); user_pref("services.settings.main.partitioning-exempt-urls.last_check", 1611097622);
user_pref("services.settings.main.password-recipes.last_check", 1608567143); user_pref("services.settings.main.password-recipes.last_check", 1611097622);
user_pref("services.settings.main.pioneer-study-addons-v1.last_check", 1608567143); user_pref("services.settings.main.pioneer-study-addons-v1.last_check", 1611097622);
user_pref("services.settings.main.pioneer-study-addons.last_check", 1608567143); user_pref("services.settings.main.pioneer-study-addons.last_check", 1611097622);
user_pref("services.settings.main.public-suffix-list.last_check", 1608567143); user_pref("services.settings.main.public-suffix-list.last_check", 1611097622);
user_pref("services.settings.main.search-config.last_check", 1608567143); user_pref("services.settings.main.search-config.last_check", 1611097622);
user_pref("services.settings.main.search-default-override-allowlist.last_check", 1608567143); user_pref("services.settings.main.search-default-override-allowlist.last_check", 1611097622);
user_pref("services.settings.main.search-telemetry.last_check", 1608567143); user_pref("services.settings.main.search-telemetry.last_check", 1611097622);
user_pref("services.settings.main.sites-classification.last_check", 1608567143); user_pref("services.settings.main.sites-classification.last_check", 1611097622);
user_pref("services.settings.main.tippytop.last_check", 1608567143); user_pref("services.settings.main.tippytop.last_check", 1611097622);
user_pref("services.settings.main.top-sites.last_check", 1608567143); user_pref("services.settings.main.top-sites.last_check", 1611097622);
user_pref("services.settings.main.url-classifier-skip-urls.last_check", 1608567143); user_pref("services.settings.main.url-classifier-skip-urls.last_check", 1611097622);
user_pref("services.settings.main.whats-new-panel.last_check", 1608567143); user_pref("services.settings.main.whats-new-panel.last_check", 1611097622);
user_pref("services.settings.security.onecrl.checked", 1608567143); user_pref("services.settings.security.onecrl.checked", 1608567143);
user_pref("services.sync.clients.lastSync", "0"); user_pref("services.sync.clients.lastSync", "0");
user_pref("services.sync.declinedEngines", ""); user_pref("services.sync.declinedEngines", "");
@ -231,9 +231,9 @@ user_pref("services.sync.nextSync", 0);
user_pref("services.sync.tabs.lastSync", "0"); user_pref("services.sync.tabs.lastSync", "0");
user_pref("signon.importedFromSqlite", true); user_pref("signon.importedFromSqlite", true);
user_pref("signon.usage.hasEntry", false); user_pref("signon.usage.hasEntry", false);
user_pref("storage.vacuum.last.index", 0); user_pref("storage.vacuum.last.index", 1);
user_pref("storage.vacuum.last.places.sqlite", 1608565394); user_pref("storage.vacuum.last.places.sqlite", 1608565394);
user_pref("toolkit.startup.last_success", 1608565206); user_pref("toolkit.startup.last_success", 1611097615);
user_pref("toolkit.telemetry.archive.enabled", false); user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.bhrPing.enabled", false); user_pref("toolkit.telemetry.bhrPing.enabled", false);
user_pref("toolkit.telemetry.cachedClientID", "c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0"); user_pref("toolkit.telemetry.cachedClientID", "c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0");

Some files were not shown because too many files have changed in this diff Show More