Merge branch 'master' into fix_2827
This commit is contained in:
commit
d1cf4958f9
26
CHANGELOG.md
26
CHANGELOG.md
|
|
@ -1,3 +1,29 @@
|
|||
# 1.1.17
|
||||
|
||||
* Add dark icons
|
||||
* Permit onboard profiles version 5
|
||||
* Update Russian and Polish translations
|
||||
* Add onboard profiles warning to sensitivity tooltip
|
||||
* Better error messages for solaar profile
|
||||
* Remove Solaar name for mice with WPID 4008
|
||||
* Prevent lock failure when showing debug messages
|
||||
* Replace color picker (#3028)
|
||||
* Add setting for HAPTIC feature
|
||||
* Add setting to adjust force needed for force-sensing buttons
|
||||
* Expand new settings type
|
||||
* Add new settings type for structure-backed setting
|
||||
* Use PATH instead of hardcoded absolute paths (#3014)
|
||||
* Add scroll ratchet force setting
|
||||
* Fix debug messages for MouseClick rule
|
||||
* Improve debug message for rule evaluation
|
||||
* App wrapper and launch agent scripts for MacOS
|
||||
* Ignore hidden features
|
||||
* Don't pop up window in response to ADC changes
|
||||
* Update bug report template
|
||||
* Fixed malformed doc file by adding closing tag
|
||||
* Fix error in low-level request for device with no recevier
|
||||
* Update documentation files
|
||||
|
||||
# 1.1.16
|
||||
|
||||
* Add new flags for reprogrammable keys feature
|
||||
|
|
|
|||
|
|
@ -1,5 +1,13 @@
|
|||
# Notes on Major Changes in Releases
|
||||
|
||||
## Version 1.1.17
|
||||
|
||||
* Several new features have been added related to the MX Master 4
|
||||
* The scroll ratchet force can be adjusted
|
||||
* The force required to click the button under your thumb can be adjusted
|
||||
* The haptic force can be adjusted
|
||||
* Haptic feeback can be triggered by commands like `solaar config 'mx master 4' haptic-play 'HAPPY ALER'`
|
||||
|
||||
## Version 1.1.16
|
||||
|
||||
* Two bugs that were affecting users in 1.1.15 are fixed.
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ For more information on Mouse Gestures rule conditions see
|
|||
|
||||
Solaar uses the standard Logitech names for keyboard keys. Some Logitech keyboards have different icons on some of their keys and have different functionality than suggested by these names.
|
||||
|
||||
Solaar is uses the standard US keyboard layout. This currently only matters for the `Per-key Lighting` setting. Users who want to have the key names for this setting reflect the keyboard layout that they use can create and edit `~/.config/solaar/keys.yaml` which contains a YAML dictionary of key names and locations. For example, switching the `Y` and `Z` keys can be done as:
|
||||
Solaar uses the standard US keyboard layout. This currently only matters for the `Per-key Lighting` setting. Users who want to have the key names for this setting reflect the keyboard layout that they use can create and edit `~/.config/solaar/keys.yaml` which contains a YAML dictionary of key names and locations. For example, switching the `Y` and `Z` keys can be done as:
|
||||
|
||||
Z: 25
|
||||
Y: 26
|
||||
|
|
|
|||
|
|
@ -7,8 +7,7 @@ layout: page
|
|||
|
||||
An easy way to install the most recent release version of Solaar is from the PyPI repository.
|
||||
First install pip, and then run
|
||||
`pip install --user solaar` or `pipx install --system-site-packages solaar` or
|
||||
If you are using pipx add the `` flag.
|
||||
`pip install --user solaar` or `pipx install --system-site-packages solaar`.
|
||||
|
||||
This will not install the Solaar udev rule, which you will need to install manually by copying
|
||||
`~/.local/lib/udev/rules.d/42-logitech-unify-permissions.rules`
|
||||
|
|
@ -31,12 +30,12 @@ brew install hidapi gtk+3 pygobject3
|
|||
* Option A (recommended): Configure a LaunchAgent to automatically start Solaar and keep it running in the background.
|
||||
It will also automatically restart Solaar if it crashed or closed.
|
||||
```
|
||||
bash <(curl -fsSL https://raw.githubusercontent.com/pwr-Solaar/Solaar/refs/heads/master/tools/create-macos-app.sh)
|
||||
bash <(curl -fsSL https://raw.githubusercontent.com/pwr-Solaar/Solaar/refs/heads/master/tools/create-macos-launchagent.sh)
|
||||
```
|
||||
* Option B: Create Solaar.app launcher in /Applications.
|
||||
It can be added to Login Items to start on login, but it will not automatically recover on crashes.
|
||||
```
|
||||
bash <(curl -fsSL https://raw.githubusercontent.com/pwr-Solaar/Solaar/refs/heads/master/tools/create-macos-launchagent.sh)
|
||||
bash <(curl -fsSL https://raw.githubusercontent.com/pwr-Solaar/Solaar/refs/heads/master/tools/create-macos-app.sh)
|
||||
```
|
||||
|
||||
# Installating from GitHub
|
||||
|
|
|
|||
|
|
@ -381,7 +381,7 @@ _D(
|
|||
),
|
||||
)
|
||||
_D("Couch Mouse M515", codename="M515", protocol=2.0, wpid="4007")
|
||||
_D("Wireless Mouse M175", codename="M175", protocol=2.0, wpid="4008")
|
||||
# _D("Wireless Mouse M175", codename="M175", protocol=2.0, wpid="4008")
|
||||
_D("Wireless Mouse M325", codename="M325", protocol=2.0, wpid="400A")
|
||||
_D("Wireless Mouse M525", codename="M525", protocol=2.0, wpid="4013")
|
||||
_D("Wireless Mouse M345", codename="M345", protocol=2.0, wpid="4017")
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ class Device:
|
|||
self._modelId = None # model id (contains identifiers for the transports of the device)
|
||||
self._tid_map = None # map from transports to product identifiers
|
||||
self._persister = None # persister holds settings
|
||||
self._led_effects = self._firmware = self._keys = self._remap_keys = self._gestures = None
|
||||
self._led_effects = self._firmware = self._keys = self._remap_keys = self._gestures = self._force_buttons = None
|
||||
self._profiles = self._backlight = self._settings = None
|
||||
self.registers = []
|
||||
self.notification_flags = None
|
||||
|
|
@ -346,6 +346,12 @@ class Device:
|
|||
self._profiles = _hidpp20.get_profiles(self)
|
||||
return self._profiles
|
||||
|
||||
def force_buttons(self):
|
||||
if self._force_buttons is None:
|
||||
if self.online and self.protocol >= 2.0:
|
||||
self._force_buttons = _hidpp20.get_force_buttons(self) or ()
|
||||
return self._force_buttons
|
||||
|
||||
def set_configuration(self, configuration_, no_reply=False):
|
||||
if self.online and self.protocol >= 2.0:
|
||||
_hidpp20.config_change(self, configuration_, no_reply=no_reply)
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ class Hidpp10:
|
|||
write_register(device, Registers.THREE_LEDS, v1, v2)
|
||||
|
||||
def get_notification_flags(self, device: Device):
|
||||
return self._get_register(device, Registers.NOTIFICATIONS)
|
||||
return NotificationFlag(self._get_register(device, Registers.NOTIFICATIONS))
|
||||
|
||||
def set_notification_flags(self, device: Device, *flag_bits: NotificationFlag):
|
||||
assert device is not None
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import socket
|
|||
import struct
|
||||
import threading
|
||||
|
||||
from collections import UserDict
|
||||
from enum import Flag
|
||||
from enum import IntEnum
|
||||
from typing import Any
|
||||
|
|
@ -1449,7 +1450,7 @@ class OnboardProfiles:
|
|||
device.ping()
|
||||
response = device.feature_request(SupportedFeature.ONBOARD_PROFILES, 0x00)
|
||||
memory, profile, _macro = struct.unpack("!BBB", response[0:3])
|
||||
if memory != 0x01 or profile > 0x04:
|
||||
if memory != 0x01 or profile > 0x05:
|
||||
return
|
||||
count, oob, buttons, sectors, size, shift = struct.unpack("!BBBBHB", response[3:10])
|
||||
gbuttons = buttons if (shift & 0x3 == 0x2) else 0
|
||||
|
|
@ -1713,6 +1714,12 @@ class Hidpp20:
|
|||
if SupportedFeature.BACKLIGHT2 in device.features:
|
||||
return Backlight(device)
|
||||
|
||||
def get_force_buttons(self, device: Device):
|
||||
if getattr(device, "_force_buttons", None) is not None:
|
||||
return device._force_buttons
|
||||
if SupportedFeature.FORCE_SENSING_BUTTON in device.features:
|
||||
return ForceSensingButtonArray(device)
|
||||
|
||||
def get_profiles(self, device: Device):
|
||||
if getattr(device, "_profiles", None) is not None:
|
||||
return device._profiles
|
||||
|
|
@ -2021,3 +2028,94 @@ def estimate_battery_level_percentage(value_millivolt: int) -> int | None:
|
|||
percent = p_low + (p_high - p_low) * (value_millivolt - v_low) / (v_high - v_low)
|
||||
return round(percent)
|
||||
return 0
|
||||
|
||||
|
||||
class ForceSensingButton:
|
||||
"""A button that has a force value at which to trigger the button"""
|
||||
|
||||
@classmethod
|
||||
def create(cls, device, number: int):
|
||||
buttondata = device.feature_request(SupportedFeature.FORCE_SENSING_BUTTON, 0x10, number)
|
||||
buttoncurrent = device.feature_request(SupportedFeature.FORCE_SENSING_BUTTON, 0x20, number)
|
||||
if buttondata is not None and buttoncurrent is not None:
|
||||
changeable, default, max_value, min_value = struct.unpack("!HHHH", buttondata[:8])
|
||||
changeable = changeable & 0x01
|
||||
current = struct.unpack("!H", buttoncurrent[:2])[0]
|
||||
return cls(device, number, changeable, default, max_value, min_value, current)
|
||||
|
||||
def __init__(self, device, number: int, changeable: bool, default: int, max_value: int, min_value: int, current: int):
|
||||
self._device = device
|
||||
self.number = number
|
||||
self.changeable = changeable
|
||||
self.default = default
|
||||
self.min_value = min_value
|
||||
self.max_value = max_value
|
||||
self._current = current
|
||||
|
||||
def get_current(self) -> int:
|
||||
return self._current
|
||||
|
||||
def set_current(self, current: int) -> None:
|
||||
if not self.changeable:
|
||||
logger.warning(f"FORCE_SENSING_BUTTON on device {self._device} does not allow changing force.")
|
||||
if self.min_value <= current <= self.max_value:
|
||||
ret = self._device.feature_request(
|
||||
SupportedFeature.FORCE_SENSING_BUTTON, 0x30, struct.pack("!BH", self.number, current)
|
||||
)
|
||||
if ret is None and logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug(f"FORCE_SENSING_BUTTON setButtonConfig on device {self._device} didn't respond.")
|
||||
|
||||
def acceptable_current(self, value: int) -> bool:
|
||||
return self.min_value <= value <= self.max_value
|
||||
|
||||
|
||||
class ForceSensingButtonArray(UserDict):
|
||||
"""A map of buttons supporting force sensing"""
|
||||
|
||||
def __new__(cls, device: Device):
|
||||
assert device is not None
|
||||
count = device.feature_request(SupportedFeature.FORCE_SENSING_BUTTON, 0x00)
|
||||
if count:
|
||||
instance = super().__new__(cls)
|
||||
instance._count = ord(count[:1])
|
||||
return instance
|
||||
|
||||
def __init__(self, device: Device):
|
||||
super().__init__(self)
|
||||
self.device = device
|
||||
for index in range(0, self._count):
|
||||
self[index] = None
|
||||
|
||||
def __getitem__(self, index: int):
|
||||
item = super().__getitem__(index)
|
||||
if item is None:
|
||||
self.query_key(index)
|
||||
return super().__getitem__(index)
|
||||
|
||||
def query_key(self, index):
|
||||
if index not in self:
|
||||
raise IndexError(index)
|
||||
button = ForceSensingButton.create(self.device, index)
|
||||
if button:
|
||||
self[index] = button
|
||||
return button
|
||||
|
||||
def query(self):
|
||||
for index in self:
|
||||
button = ForceSensingButton.create(self.device, index)
|
||||
if button:
|
||||
self[index] = button
|
||||
return self
|
||||
|
||||
# interface for single force button
|
||||
def get_current(self):
|
||||
return self[0].get_current()
|
||||
|
||||
def set_current(self, current: int) -> None:
|
||||
self[0].set_current(current)
|
||||
|
||||
def acceptable(self, value: int) -> bool:
|
||||
return self[0].acceptable(value)
|
||||
|
||||
def acceptable_current_key(self, index: int, value: int) -> bool:
|
||||
return self[index].acceptable(value)
|
||||
|
|
|
|||
|
|
@ -65,6 +65,8 @@ class SupportedFeature(IntEnum):
|
|||
BACKLIGHT2 = 0x1982
|
||||
BACKLIGHT3 = 0x1983
|
||||
ILLUMINATION = 0x1990
|
||||
FORCE_SENSING_BUTTON = 0x19C0
|
||||
HAPTIC = 0x19B0
|
||||
PRESENTER_CONTROL = 0x1A00
|
||||
SENSOR_3D = 0x1A01
|
||||
REPROG_CONTROLS = 0x1B00
|
||||
|
|
@ -276,3 +278,23 @@ class ParamId(IntEnum):
|
|||
PIXEL_ZONE = 2 # 4 2-byte integers, left, bottom, width, height; pixels
|
||||
RATIO_ZONE = 3 # 4 bytes, left, bottom, width, height; unit 1/240 pad size
|
||||
SCALE_FACTOR = 4 # 2-byte integer, with 256 as normal scale
|
||||
|
||||
|
||||
HapticWaveForms = NamedInts(
|
||||
SHARP_STATE_CHANGE=0x00,
|
||||
DAMP_STATE_CHANGE=0x01,
|
||||
SHARP_COLLISION=0x02,
|
||||
DAMP_COLLISION=0x03,
|
||||
SUBTLE_COLLISION=0x04,
|
||||
HAPPY_ALERT=0x05,
|
||||
ANGRY_ALERT=0x06,
|
||||
COMPLETED=0x07,
|
||||
SQUARE=0x08,
|
||||
WAVE=0x09,
|
||||
FIREWORK=0x0A,
|
||||
MAD=0x0B,
|
||||
KNOCK=0x0C,
|
||||
JINGLE=0x0D,
|
||||
RINGING=0xE,
|
||||
WHISPER_COLLISION=0x1B,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ SENSITIVITY_IGNORE = "ignore"
|
|||
|
||||
|
||||
class Kind(IntEnum):
|
||||
NONE = 0
|
||||
TOGGLE = 0x01
|
||||
CHOICE = 0x02
|
||||
RANGE = 0x04
|
||||
|
|
@ -43,6 +44,8 @@ class Kind(IntEnum):
|
|||
PACKED_RANGE = 0x20
|
||||
MULTIPLE_RANGE = 0x40
|
||||
HETERO = 0x80
|
||||
MAP_RANGE = 0x102
|
||||
COLOR = 0x200
|
||||
|
||||
|
||||
class Setting:
|
||||
|
|
@ -55,6 +58,7 @@ class Setting:
|
|||
rw_options = {}
|
||||
validator_class = None
|
||||
validator_options = {}
|
||||
display = True # display setting in UI
|
||||
|
||||
def __init__(self, device, rw, validator):
|
||||
self._device = device
|
||||
|
|
|
|||
|
|
@ -0,0 +1,206 @@
|
|||
## Copyright (C) 2025 Solaar contributors
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation; either version 2 of the License, or
|
||||
## (at your option) any later version.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public License along
|
||||
## with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
## A new way of supporting settings, using a feature-specifi device class to store, read, and write relevant information
|
||||
## The setting uses the device class to interact with the device feature.
|
||||
## The setting uses a persist class to keep track of the setting.
|
||||
|
||||
## Interface:
|
||||
|
||||
import logging
|
||||
|
||||
from .settings import Kind
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Setting:
|
||||
name = None # Solaar internal name for the setting
|
||||
label = None # Solaar user name for the setting (translatable)
|
||||
description = None # Solaar extra desciption for the setting (translatable)
|
||||
feature = None # Logitech feature that the setting uses
|
||||
min_version = 0 # Minimum version of the feature needed
|
||||
setup = None # method name on Device class to get the device object
|
||||
get = None # method name on the device object to get the setting value
|
||||
set = None # method name on the device object to set the setting value
|
||||
acceptable = None # method name on the device object to check for acceptable values
|
||||
choices_universe = None # All possible acceptable keys, for settings with keys
|
||||
kind = Kind.NONE # What GUI interface to use
|
||||
persist = True # Whether to remember the setting
|
||||
display = True # display setting in UI
|
||||
_device = None # The device that this setting is for
|
||||
_device_object = None # The object that interacts with the feature for the device
|
||||
_value = None # Stored value as maintained by Solaar, used for persistence
|
||||
|
||||
def __init__(self, device, device_object):
|
||||
self._device = device
|
||||
self._device_object = device_object
|
||||
|
||||
@classmethod
|
||||
def build(cls, device):
|
||||
cls.check_properties(cls)
|
||||
device_object = getattr(device, cls.setup)()
|
||||
if device_object:
|
||||
setting = cls(device, device_object)
|
||||
return setting
|
||||
|
||||
@classmethod
|
||||
def check_properties(cl, cls):
|
||||
assert cls.name and cls.label and cls.description, "New settings require a name, label, and description"
|
||||
assert cls.feature, "New settings require a feature"
|
||||
assert cls.setup, "New settings require a setup device method"
|
||||
assert cls.get and cls.set and cls.acceptable, "New settings require get, set, and acceptable methods"
|
||||
|
||||
def setup_from_class(self, clss):
|
||||
"""Copy settings methods for a new setting from a settting class"""
|
||||
self.name = clss.name
|
||||
self.label = clss.label
|
||||
self.description = clss.description
|
||||
self.feature = clss.feature
|
||||
self.min_version = clss.min_version
|
||||
self.setup = clss.setup
|
||||
self.get = clss.get
|
||||
self.set = clss.set
|
||||
self.acceptable = clss.acceptable
|
||||
self.choices_universe = clss.choices_universe
|
||||
self.kind = clss.kind
|
||||
self.persist = clss.persist
|
||||
|
||||
def _pre_read(self, cached):
|
||||
"""Get information from and save information to the persister"""
|
||||
# Get the persister map if available and not done already
|
||||
if self.persist and self._value is None and getattr(self._device, "persister", None):
|
||||
self._value = self._device.persister.get(self.name)
|
||||
# If this is new save its current value for the next time
|
||||
if cached and self._value is not None:
|
||||
if getattr(self._device, "persister", None) and self.name not in self._device.persister:
|
||||
self._device.persister[self.name] = self._value if self.persist else None
|
||||
|
||||
def read(self, cached=True):
|
||||
"""Get all the data for the setting. If cached is True the data in the _value can be used."""
|
||||
self._pre_read(cached)
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("%s: setting read %r from %s", self.name, self._value, self._device)
|
||||
if cached and self._value is not None:
|
||||
return self._value
|
||||
if cached:
|
||||
self._value = getattr(self._device_object, self.get)()
|
||||
return self._value
|
||||
if self._device.online:
|
||||
self._value = getattr(self._device_object.query(), self.get)()
|
||||
return self._value
|
||||
|
||||
def write(self, value, save=True):
|
||||
"""Write the value to the device. If saved is True also save in the persister"""
|
||||
pass ## fill out
|
||||
|
||||
def apply(self):
|
||||
"""Write saved data to the device, using persisted data if available"""
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("%s: apply (%s)", self.name, self._device)
|
||||
value = None
|
||||
try:
|
||||
value = self.read(self.persist) # Don't use persisted value if setting doesn't persist
|
||||
if self.persist and value is not None: # If setting doesn't persist no need to write value just read
|
||||
self.write(value, save=False)
|
||||
except Exception as e:
|
||||
if logger.isEnabledFor(logging.WARNING):
|
||||
logger.warning("%s: error applying %s so ignore it (%s): %s", self.name, value, self._device, repr(e))
|
||||
|
||||
@property
|
||||
def range(self):
|
||||
if self.kind == Kind.RANGE:
|
||||
return self.min_value, self.max_value
|
||||
|
||||
def val_to_string(self, value):
|
||||
return str(value)
|
||||
|
||||
|
||||
## key mapping from symbols to values????
|
||||
|
||||
|
||||
class Settings(Setting):
|
||||
"""A setting descriptor for multiple keys.
|
||||
Supported by a class that provides the interface to the device, see ForceSensingButtonArray in hidpp20.py
|
||||
Picks out a field from the mapped device feature objects."""
|
||||
|
||||
# setup creates a dictionary with entries for all the keys
|
||||
# _value is a map from keys to values
|
||||
# get, set, and acceptable are methods of dict value objects, not of the device object itself #### FIX THIS! MAYBE??
|
||||
|
||||
def __init__(self, device, device_object):
|
||||
super().__init__(device, device_object)
|
||||
self._value = {}
|
||||
|
||||
def read(self, cached=True):
|
||||
self._pre_read(cached)
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("%s: settings read %r from %s", self.name, self._value, self._device)
|
||||
for key in self._device_object:
|
||||
self.read_key(key, cached)
|
||||
return self._value
|
||||
|
||||
def read_key(self, key, cached=True):
|
||||
"""Get the data for the key. If cached is True the data in the device_object can be used."""
|
||||
self._pre_read(cached)
|
||||
if key not in self._device_object:
|
||||
logger.error("%s: settings illegal read key %r for %s", self.name, key, self._device)
|
||||
return None
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("%s: settings key %r read %r from %s", self.name, key, self._value, self._device)
|
||||
if cached and key in self._value and self._value[key] is not None:
|
||||
return self._value[key]
|
||||
if cached:
|
||||
data = self._device_object[key]
|
||||
self._value[key] = getattr(data, self.get)()
|
||||
return self._value[key]
|
||||
if self._device.online:
|
||||
data = self._device_object.query_key(key)
|
||||
self._value[key] = getattr(data, self.get)()
|
||||
return self._value[key]
|
||||
|
||||
def write(self, value, save=True):
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("%s: settings read %r from %s", self.name, self._value, self._device)
|
||||
if isinstance(value, dict):
|
||||
for key, val in value.items():
|
||||
self.write_key_value(key, val, save)
|
||||
else: # to mimic interface for non-dict setting
|
||||
key = next(iter(self._device_object))
|
||||
self.write_key_value(key, value, save)
|
||||
return value
|
||||
|
||||
def write_key_value(self, key, value, save=True):
|
||||
"""Write the data for the key. If saved is True also save in the persister"""
|
||||
if key not in self._device_object:
|
||||
logger.error("%s: settings illegal write key %r for %s", self.name, key, self._device)
|
||||
return None
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("%s: settings write key %r value %r to %s", self.name, key, value, self._device)
|
||||
if self._device.online:
|
||||
if self._device_object[key] is None:
|
||||
self.read_key(key)
|
||||
if self._device_object[key] is None:
|
||||
logger.error("%s: settings illegal write key %r for %s", self.name, key, self._device)
|
||||
return None
|
||||
if not getattr(self._device_object[key], self.acceptable)(value):
|
||||
logger.error("%s: settings illegal write key %r value %r for %s", self.name, key, value, self._device)
|
||||
return None
|
||||
self._value[key] = value
|
||||
if self._device.persister and self.persist and save:
|
||||
self._device.persister[self.name][key] = value
|
||||
getattr(self._device_object[key], self.set)(value)
|
||||
return value
|
||||
|
|
@ -36,6 +36,7 @@ from . import exceptions
|
|||
from . import hidpp20
|
||||
from . import hidpp20_constants
|
||||
from . import settings
|
||||
from . import settings_new
|
||||
from . import settings_validator
|
||||
from . import special_keys
|
||||
from .hidpp10_constants import Registers
|
||||
|
|
@ -1015,7 +1016,7 @@ def produce_dpi_list(feature, function, ignore, device, direction):
|
|||
class AdjustableDpi(settings.Setting):
|
||||
name = "dpi"
|
||||
label = _("Sensitivity (DPI)")
|
||||
description = _("Mouse movement sensitivity")
|
||||
description = _("Mouse movement sensitivity") + "\n" + _("May need Onboard Profiles set to Disable to be effective.")
|
||||
feature = _F.ADJUSTABLE_DPI
|
||||
rw_options = {"read_fnid": 0x20, "write_fnid": 0x30}
|
||||
choices_universe = common.NamedInts.range(100, 4000, str, 50)
|
||||
|
|
@ -1643,7 +1644,7 @@ class LEDZoneSetting(settings.Setting):
|
|||
label = _("LED Zone Effects")
|
||||
description = _("Set effect for LED Zone") + "\n" + _("LED Control needs to be set to Solaar to be effective.")
|
||||
feature = _F.COLOR_LED_EFFECTS
|
||||
color_field = {"name": _LEDP.color, "kind": settings.Kind.CHOICE, "label": None, "choices": colors}
|
||||
color_field = {"name": _LEDP.color, "kind": settings.Kind.COLOR, "label": _("Color")}
|
||||
speed_field = {"name": _LEDP.speed, "kind": settings.Kind.RANGE, "label": _("Speed"), "min": 0, "max": 255}
|
||||
period_field = {"name": _LEDP.period, "kind": settings.Kind.RANGE, "label": _("Period"), "min": 100, "max": 5000}
|
||||
intensity_field = {"name": _LEDP.intensity, "kind": settings.Kind.RANGE, "label": _("Intensity"), "min": 0, "max": 100}
|
||||
|
|
@ -1779,6 +1780,101 @@ class PerKeyLighting(settings.Settings):
|
|||
return result
|
||||
|
||||
|
||||
# Allow changes to force sensing buttons
|
||||
class ForceSensing(settings_new.Settings):
|
||||
name = "force-sensing"
|
||||
label = _("Force Sensing Buttons")
|
||||
description = _("Change the force required to activate button.")
|
||||
feature = _F.FORCE_SENSING_BUTTON
|
||||
setup = "force_buttons"
|
||||
get = "get_current"
|
||||
set = "set_current"
|
||||
acceptable = "acceptable_current_key"
|
||||
choices_universe = list(range(0, 256))
|
||||
kind = settings.Kind.MAP_RANGE
|
||||
|
||||
@classmethod
|
||||
def build(cls, device):
|
||||
cls.check_properties(cls)
|
||||
device_object = getattr(device, cls.setup)()
|
||||
if device_object:
|
||||
setting = cls(device, device_object)
|
||||
if setting and len(device_object) == 1:
|
||||
## If there is only one force button a simpler interface can be used
|
||||
setting.label = _("Force Sensing Button")
|
||||
setting.acceptable = "acceptable_current"
|
||||
setting.min_value = device_object[0].min_value
|
||||
setting.max_value = device_object[0].max_value
|
||||
setting.kind = settings.Kind.RANGE
|
||||
return setting
|
||||
|
||||
|
||||
class HapticLevel(settings.Setting):
|
||||
name = "haptic-level"
|
||||
label = _("Haptic Feeback Level")
|
||||
description = _("Change power of haptic feedback. (Zero to turn off.)")
|
||||
feature = _F.HAPTIC
|
||||
choices_universe = common.NamedInts(Off=0, Low=25, Medium=50, High=75, Maximum=100)
|
||||
min_value = 0
|
||||
max_value = 100
|
||||
|
||||
class rw_class(settings.FeatureRW):
|
||||
def __init__(self, feature):
|
||||
super().__init__(feature, read_fnid=0x10, write_fnid=0x20)
|
||||
|
||||
def read(self, device, data_bytes=b""):
|
||||
result = device.feature_request(self.feature, 0x10)
|
||||
if result[0] & 0x01 == 0: # disabled, return 0
|
||||
return b"\x00"
|
||||
else: # enabled, return second byte
|
||||
return result[1:2]
|
||||
|
||||
def write(self, device, data_bytes):
|
||||
if data_bytes == b"\x00":
|
||||
write_bytes = b"\x00\x32" # disable, at 50 percent
|
||||
else:
|
||||
write_bytes = b"\x01" + data_bytes
|
||||
reply = device.feature_request(self.feature, 0x20, write_bytes)
|
||||
return reply
|
||||
|
||||
@classmethod
|
||||
def build(cls, device):
|
||||
response = device.feature_request(cls.feature, 0x10)
|
||||
if response:
|
||||
rw = cls.rw_class(cls.feature)
|
||||
levels = response[2] & 0x01
|
||||
if levels: # device only has four levels
|
||||
validator = settings_validator.ChoicesValidator(choices=cls.choices_universe)
|
||||
else: # device has all levels
|
||||
validator = settings_validator.RangeValidator(min_value=cls.min_value, max_value=cls.max_value)
|
||||
return cls(device, rw, validator)
|
||||
|
||||
|
||||
# This setting is not displayed in the UI
|
||||
# Use `solaar config <device> haptic-play <form>` to play a haptic form
|
||||
class PlayHapticWaveForm(settings.Setting):
|
||||
name = "haptic-play"
|
||||
label = _("Play Haptic Waveform")
|
||||
description = _("Tell device to play a haptic waveform.")
|
||||
feature = _F.HAPTIC
|
||||
choices_universe = hidpp20_constants.HapticWaveForms
|
||||
rw_options = {"read_fnid": None, "write_fnid": 0x40} # nothing to read
|
||||
persist = False # persisting this setting is useless
|
||||
display = False # don't display in UI, interact using `solaar config ...`
|
||||
|
||||
class validator_class(settings_validator.ChoicesValidator):
|
||||
@classmethod
|
||||
def build(cls, setting_class, device):
|
||||
response = device.feature_request(_F.HAPTIC, 0x00)
|
||||
if response:
|
||||
waves = common.NamedInts()
|
||||
waveforms = int.from_bytes(response[4:8])
|
||||
for waveform in hidpp20_constants.HapticWaveForms:
|
||||
if (1 << int(waveform)) & waveforms:
|
||||
waves[int(waveform)] = str(waveform)
|
||||
return cls(choices=waves, byte_count=1)
|
||||
|
||||
|
||||
SETTINGS: list[settings.Setting] = [
|
||||
RegisterHandDetection, # simple
|
||||
RegisterSmoothScroll, # simple
|
||||
|
|
@ -1824,6 +1920,7 @@ SETTINGS: list[settings.Setting] = [
|
|||
PersistentRemappableAction,
|
||||
DivertKeys, # working
|
||||
DisableKeyboardKeys, # working
|
||||
ForceSensing,
|
||||
CrownSmooth, # working
|
||||
DivertCrown, # working
|
||||
DivertGkeys, # working
|
||||
|
|
@ -1835,6 +1932,8 @@ SETTINGS: list[settings.Setting] = [
|
|||
Gesture2Gestures, # working
|
||||
Gesture2Divert,
|
||||
Gesture2Params, # working
|
||||
HapticLevel,
|
||||
PlayHapticWaveForm,
|
||||
Sidetone,
|
||||
Equalizer,
|
||||
ADCPower,
|
||||
|
|
@ -1939,7 +2038,7 @@ def check_feature(device, settings_class: SettingsProtocol) -> None | bool | Set
|
|||
try:
|
||||
detected = settings_class.build(device)
|
||||
if logger.isEnabledFor(logging.DEBUG):
|
||||
logger.debug("check_feature %s [%s] detected %s", settings_class.name, settings_class.feature, detected)
|
||||
logger.debug("check_feature %s [%s] detected", settings_class.name, settings_class.feature)
|
||||
return detected
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
|
|
|
|||
|
|
@ -278,6 +278,8 @@ def set(dev, setting: SettingsProtocol, args, save):
|
|||
key = args.value_key
|
||||
all_keys = getattr(setting, "choices_universe", None)
|
||||
ikey = all_keys[int(key) if key.isdigit() else key] if isinstance(all_keys, NamedInts) else to_int(key)
|
||||
print("S", args.extra2, key, type(all_keys), ikey)
|
||||
print("SS", args)
|
||||
if args.extra2 is None or to_int(args.extra2) is None:
|
||||
raise Exception(f"{setting.name}: setting needs an integer value, not {args.extra2}")
|
||||
if not setting._value: # ensure that there are values to look through
|
||||
|
|
@ -295,7 +297,19 @@ def set(dev, setting: SettingsProtocol, args, save):
|
|||
result = setting.write_key_value(int(k), item, save=save)
|
||||
value = item
|
||||
|
||||
elif setting.kind == settings.Kind.MAP_RANGE:
|
||||
if args.extra_subkey is None:
|
||||
_print_setting_keyed(setting, args.value_key)
|
||||
return None, None, None
|
||||
key = int(args.value_key)
|
||||
value = int(args.extra_subkey)
|
||||
if key not in setting._device_object:
|
||||
raise Exception(f"{setting.name}: key '{key}' not in setting")
|
||||
message = f"Setting {setting.name} of {dev.name} key {key} to {value}"
|
||||
result = setting.write_key_value(key, value, save=save)
|
||||
|
||||
else:
|
||||
print("KIND", setting.kind)
|
||||
raise Exception("NotImplemented")
|
||||
|
||||
return result, message, value
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ def run(receivers, args, find_receiver, _ignore):
|
|||
assert receiver
|
||||
|
||||
# check if it's necessary to set the notification flags
|
||||
old_notification_flags = _hidpp10.get_notification_flags(receiver) or 0
|
||||
old_notification_flags = _hidpp10.get_notification_flags(receiver)
|
||||
if not (old_notification_flags & hidpp10_constants.NotificationFlag.WIRELESS):
|
||||
_hidpp10.set_notification_flags(receiver, old_notification_flags | hidpp10_constants.NotificationFlag.WIRELESS)
|
||||
|
||||
|
|
|
|||
|
|
@ -38,8 +38,10 @@ def run(receivers, args, find_receiver, find_device):
|
|||
if not dev:
|
||||
raise Exception(f"no online device found matching '{device_name}'")
|
||||
|
||||
if not (dev.online and dev.profiles):
|
||||
print(f"Device {dev.name} is either offline or has no onboard profiles")
|
||||
if not dev.online:
|
||||
print(f"Device {dev.name} is offline.")
|
||||
elif not dev.profiles:
|
||||
print(f"Device {dev.name} has no onboard profiles that Solaar supports.")
|
||||
elif not profiles_file:
|
||||
print(f"#Dumping profiles from {dev.name}")
|
||||
print(yaml.dump(dev.profiles))
|
||||
|
|
|
|||
|
|
@ -260,7 +260,8 @@ def _print_device(dev, num=None):
|
|||
v = setting.val_to_string(setting._device.persister.get(setting.name))
|
||||
print(f" {setting.label} (saved): {v}")
|
||||
try:
|
||||
v = setting.val_to_string(setting.read(False))
|
||||
v = setting.read(False)
|
||||
v = setting.val_to_string(v)
|
||||
except exceptions.FeatureCallError as e:
|
||||
v = "HID++ error " + str(e)
|
||||
except AssertionError as e:
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
import logging
|
||||
import traceback
|
||||
|
||||
from enum import Enum
|
||||
from threading import Timer
|
||||
|
|
@ -47,6 +46,7 @@ class GtkSignal(Enum):
|
|||
NOTIFY_ACTIVE = "notify::active"
|
||||
TOGGLED = "toggled"
|
||||
VALUE_CHANGED = "value-changed"
|
||||
COLOR_SET = "color-set"
|
||||
|
||||
|
||||
def _read_async(setting, force_read, sbox, device_is_online, sensitive):
|
||||
|
|
@ -70,7 +70,6 @@ def _write_async(setting, value, sbox, sensitive=True, key=None):
|
|||
v = setting.write_key_value(key, v)
|
||||
v = {key: v}
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
v = None
|
||||
if sb:
|
||||
GLib.idle_add(_update_setting_item, sb, v, True, sensitive, priority=99)
|
||||
|
|
@ -147,6 +146,11 @@ class SliderControl(Gtk.Scale, Control):
|
|||
self.set_increments(1, 5)
|
||||
self.connect(GtkSignal.VALUE_CHANGED.value, self.changed)
|
||||
|
||||
def set_value(self, value):
|
||||
if isinstance(value, dict):
|
||||
value = next(iter(value.values()))
|
||||
return super().set_value(value)
|
||||
|
||||
def get_value(self):
|
||||
return int(super().get_value())
|
||||
|
||||
|
|
@ -562,6 +566,10 @@ class HeteroKeyControl(Gtk.HBox, Control):
|
|||
item_box.set_active(0)
|
||||
item_box.connect(GtkSignal.CHANGED.value, self.changed)
|
||||
self.pack_start(item_box, False, False, 0)
|
||||
elif item["kind"] == settings.Kind.COLOR:
|
||||
item_box = Gtk.ColorButton()
|
||||
item_box.connect(GtkSignal.COLOR_SET.value, self.changed)
|
||||
self.pack_start(item_box, False, False, 0)
|
||||
elif item["kind"] == settings.Kind.RANGE:
|
||||
item_box = Scale()
|
||||
item_box.set_range(item["min"], item["max"])
|
||||
|
|
@ -576,7 +584,14 @@ class HeteroKeyControl(Gtk.HBox, Control):
|
|||
def get_value(self):
|
||||
result = {}
|
||||
for k, (_lblbox, box) in self._items.items():
|
||||
result[str(k)] = box.get_value()
|
||||
if isinstance(box, Gtk.ColorButton):
|
||||
rgba = box.get_rgba()
|
||||
r = int(rgba.red * 255)
|
||||
g = int(rgba.green * 255)
|
||||
b = int(rgba.blue * 255)
|
||||
result[str(k)] = (r << 16) | (g << 8) | b
|
||||
else:
|
||||
result[str(k)] = box.get_value()
|
||||
result = hidpp20.LEDEffectSetting(**result)
|
||||
return result
|
||||
|
||||
|
|
@ -586,7 +601,13 @@ class HeteroKeyControl(Gtk.HBox, Control):
|
|||
for k, v in value.__dict__.items():
|
||||
if k in self._items:
|
||||
(lblbox, box) = self._items[k]
|
||||
box.set_value(v)
|
||||
if isinstance(box, Gtk.ColorButton):
|
||||
rgba = Gdk.RGBA()
|
||||
color_string = f"#{v:06X}" # e.g. "#FF0000"
|
||||
rgba.parse(color_string)
|
||||
box.set_rgba(rgba)
|
||||
else:
|
||||
box.set_value(v)
|
||||
else:
|
||||
self.sbox._failed.set_visible(True)
|
||||
self.setup_visibles(value.ID if value is not None else 0)
|
||||
|
|
@ -655,6 +676,8 @@ def _change_icon(allowed, icon):
|
|||
|
||||
|
||||
def _create_sbox(s, _device):
|
||||
if not s.display:
|
||||
return
|
||||
sbox = Gtk.HBox(homogeneous=False, spacing=6)
|
||||
sbox.setting = s
|
||||
sbox.kind = s.kind
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
1.1.16
|
||||
1.1.17
|
||||
|
|
|
|||
531
po/solaar.pot
531
po/solaar.pot
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,190 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
width="100"
|
||||
height="100"
|
||||
id="svg5"
|
||||
sodipodi:docname="solaar-attention.svg"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
|
||||
id="namedview5"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
showguides="true"
|
||||
inkscape:zoom="6.355"
|
||||
inkscape:cx="-0.70810385"
|
||||
inkscape:cy="42.800944"
|
||||
inkscape:current-layer="g3-7" /><title
|
||||
id="title1">Solaar attention</title><defs
|
||||
id="defs4"><linearGradient
|
||||
id="gradient_blue"><stop
|
||||
style="stop-color:#009099;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1" /><stop
|
||||
style="stop-color:#00a899;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2" /></linearGradient><linearGradient
|
||||
id="gradient_yellow"><stop
|
||||
style="stop-color:#f0ff18;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3" /><stop
|
||||
style="stop-color:#f3ff2b;stop-opacity:0.94901961;"
|
||||
offset="0.49391085"
|
||||
id="stop6" /><stop
|
||||
style="stop-color:#f8ff40;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop4" /></linearGradient><linearGradient
|
||||
x1="5"
|
||||
y1="50"
|
||||
x2="95"
|
||||
y2="50"
|
||||
id="gradient_rect"
|
||||
xlink:href="#gradient_yellow"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
x1="37"
|
||||
y1="50"
|
||||
x2="63"
|
||||
y2="50"
|
||||
id="gradient_dot"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
id="gradient_black"><stop
|
||||
style="stop-color:#000000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1-47" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2-6" /></linearGradient><linearGradient
|
||||
x1="5"
|
||||
y1="50"
|
||||
x2="95"
|
||||
y2="50"
|
||||
id="gradient_rect-3"
|
||||
xlink:href="#gradient_black"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
x1="37"
|
||||
y1="50"
|
||||
x2="63"
|
||||
y2="50"
|
||||
id="gradient_dot-1"
|
||||
xlink:href="#gradient_black"
|
||||
gradientUnits="userSpaceOnUse" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-5"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-7"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect18"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><linearGradient
|
||||
x1="50"
|
||||
y1="5.5"
|
||||
x2="50"
|
||||
y2="94.5"
|
||||
id="gradient_rect-8"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-110.09871,-4.4507114)" /><linearGradient
|
||||
x1="50.01833"
|
||||
y1="5"
|
||||
x2="50.01833"
|
||||
y2="95"
|
||||
id="gradient_dot-5"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse" /></defs><metadata
|
||||
id="metadata4"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Solaar attention</dc:title><dc:creator><cc:Agent><dc:title>Daniel Pavel</dc:title></cc:Agent></dc:creator><cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /><dc:date>2013-06-25</dc:date><dc:identifier>solaar-attention</dc:identifier></cc:Work><cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><g
|
||||
id="g3-7"><rect
|
||||
style="fill:#f3ff2b;fill-opacity:0.94901961;stroke:none;stroke-width:3;stroke-linejoin:round;stroke-opacity:0.996078;paint-order:fill markers stroke"
|
||||
id="rect17"
|
||||
width="90"
|
||||
height="90"
|
||||
x="5"
|
||||
y="5"
|
||||
rx="10"
|
||||
ry="10" /><path
|
||||
id="path11-5"
|
||||
style="display:inline;fill:#131313;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.905882;paint-order:markers fill stroke"
|
||||
d="m 36.326172,18.050781 c -0.653587,3.07e-4 -1.295564,0.172759 -1.861328,0.5 l -3.260348,1.886206 c -0.369666,0.213862 -0.976947,0.555623 -1.294346,0.840227 -1.095169,0.982014 -1.50919,2.530927 -1.050063,3.928399 0.133086,0.405083 0.488934,1.004291 0.702637,1.37405 l 5.656751,9.787566 c 0.62092,1.074344 0.455955,2.70357 -0.225142,3.739812 -0.385108,0.585915 -0.736584,1.1959 -1.052473,1.826946 C 33.386764,43.042894 32.056577,44 30.815708,44 H 19.405457 c -0.377101,0 -0.99151,-0.0065 -1.361861,0.06167 C 16.311702,44.380584 14.999644,45.89844 15,47.722656 v 4.554688 C 14.999599,54.333476 16.666524,56.000401 18.722656,56 h 12.093052 c 1.240869,0 2.571057,0.957108 3.126154,2.066017 0.315889,0.631045 0.667365,1.24103 1.052473,1.826945 0.681096,1.03624 0.84606,2.665465 0.22514,3.739809 l -6.043694,10.457073 c -1.028907,1.779844 -0.420325,4.056781 1.359375,5.085937 l 3.929688,2.273438 c 1.779707,1.029944 4.057417,0.421155 5.085937,-1.359375 l 6.043694,-10.457073 c 0.62092,-1.074344 2.114654,-1.744293 3.352326,-1.666259 C 49.29502,67.988467 49.64608,68 50,68 c 0.353931,0 0.705,-0.01153 1.053229,-0.03349 1.237655,-0.07804 2.731376,0.591916 3.352296,1.66626 l 6.043694,10.457073 c 1.02852,1.78053 3.30623,2.389319 5.085937,1.359375 l 3.929688,-2.273438 c 1.7797,-1.029156 2.388282,-3.306093 1.359375,-5.085937 L 64.780525,63.632771 c -0.62092,-1.074344 -0.455955,-2.70357 0.225142,-3.739812 0.385108,-0.585915 0.736584,-1.1959 1.052473,-1.826946 C 66.613236,56.957106 67.943423,56 69.184291,56 H 81.277344 C 83.333476,56.000401 85.000401,54.333476 85,52.277344 V 47.722656 C 85.000401,45.666524 83.333476,43.999599 81.277344,44 H 69.184291 c -1.240868,0 -2.571056,-0.957108 -3.126153,-2.066017 -0.315889,-0.631045 -0.667365,-1.24103 -1.052473,-1.826945 -0.681096,-1.03624 -0.84606,-2.665465 -0.22514,-3.739809 l 6.043694,-10.457073 c 1.028907,-1.779844 0.420325,-4.056781 -1.359375,-5.085937 l -3.929688,-2.273438 c -1.779707,-1.029944 -4.057417,-0.421155 -5.085937,1.359375 l -6.043694,10.457073 c -0.62092,1.074344 -2.114654,1.744293 -3.352326,1.666259 C 50.70498,32.011533 50.35392,32 50,32 c -0.353931,0 -0.705,0.01153 -1.053229,0.03349 -1.237655,0.07804 -2.731376,-0.591916 -3.352296,-1.66626 L 39.550781,19.910156 C 38.885414,18.758657 37.656082,18.0498 36.326172,18.050781 Z M 50,38.746094 C 56.215539,38.745663 61.254337,43.784461 61.253906,50 61.254337,56.215539 56.215539,61.254337 50,61.253906 43.784461,61.254337 38.745663,56.215539 38.746094,50 38.745663,43.784461 43.784461,38.745663 50,38.746094 Z"
|
||||
inkscape:path-effect="#path-effect20-7"
|
||||
inkscape:original-d="m 36.326172,18.050781 a 3.721056,3.721056 0 0 0 -1.861328,0.5 l -3.929688,2.273438 a 3.7228036,3.7228036 0 0 0 -1.359375,5.085937 L 36.34375,38.3125 C 34.921877,39.972287 33.808215,41.898777 33.0625,44 H 18.722656 A 3.7219297,3.7219297 0 0 0 15,47.722656 v 4.554688 A 3.7219297,3.7219297 0 0 0 18.722656,56 H 33.0625 c 0.745715,2.101223 1.859377,4.027713 3.28125,5.6875 l -7.167969,12.402344 a 3.7228036,3.7228036 0 0 0 1.359375,5.085937 l 3.929688,2.273438 a 3.721056,3.721056 0 0 0 5.085937,-1.359375 L 46.71875,67.6875 C 47.784179,67.884035 48.877705,68 50,68 c 1.122295,0 2.215821,-0.115965 3.28125,-0.3125 l 7.167969,12.402344 a 3.721056,3.721056 0 0 0 5.085937,1.359375 l 3.929688,-2.273438 a 3.7228036,3.7228036 0 0 0 1.359375,-5.085937 L 63.65625,61.6875 C 65.078123,60.027713 66.191785,58.101223 66.9375,56 H 81.277344 A 3.7219297,3.7219297 0 0 0 85,52.277344 V 47.722656 A 3.7219297,3.7219297 0 0 0 81.277344,44 H 66.9375 c -0.745715,-2.101223 -1.859377,-4.027713 -3.28125,-5.6875 l 7.167969,-12.402344 a 3.7228036,3.7228036 0 0 0 -1.359375,-5.085937 l -3.929688,-2.273438 a 3.721056,3.721056 0 0 0 -5.085937,1.359375 L 53.28125,32.3125 C 52.215821,32.115965 51.122295,32 50,32 c -1.122295,0 -2.215821,0.115965 -3.28125,0.3125 L 39.550781,19.910156 A 3.721056,3.721056 0 0 0 36.326172,18.050781 Z M 50,38.746094 A 11.253125,11.253125 0 0 1 61.253906,50 11.253125,11.253125 0 0 1 50,61.253906 11.253125,11.253125 0 0 1 38.746094,50 11.253125,11.253125 0 0 1 50,38.746094 Z" /></g></svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -0,0 +1,129 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
width="100"
|
||||
height="100"
|
||||
id="svg3"
|
||||
sodipodi:docname="solaar.svg"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xml:space="preserve"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
|
||||
id="namedview3"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
showguides="true"
|
||||
inkscape:zoom="8"
|
||||
inkscape:cx="0.5625"
|
||||
inkscape:cy="79.25"
|
||||
inkscape:current-layer="svg3" /><title
|
||||
id="title1">Solaar</title><defs
|
||||
id="defs2"><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect18"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><linearGradient
|
||||
id="linearGradient17"
|
||||
inkscape:collect="always"><stop
|
||||
style="stop-color:#009099;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop17" /><stop
|
||||
style="stop-color:#00a899;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop18" /></linearGradient><linearGradient
|
||||
id="gradient_blue"><stop
|
||||
style="stop-color:#009099;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1" /><stop
|
||||
style="stop-color:#00a899;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2" /></linearGradient><linearGradient
|
||||
x1="50"
|
||||
y1="5.5"
|
||||
x2="50"
|
||||
y2="94.5"
|
||||
id="gradient_rect"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-110.09871,-4.4507114)" /><linearGradient
|
||||
x1="50.01833"
|
||||
y1="5"
|
||||
x2="50.01833"
|
||||
y2="95"
|
||||
id="gradient_dot"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient17"
|
||||
id="linearGradient18"
|
||||
x1="50"
|
||||
y1="5"
|
||||
x2="50"
|
||||
y2="95"
|
||||
gradientUnits="userSpaceOnUse" /></defs><metadata
|
||||
id="metadata2"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Solaar</dc:title><dc:creator><cc:Agent><dc:title>Daniel Pavel</dc:title></cc:Agent></dc:creator><cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /><dc:date>2013-06-25</dc:date><dc:identifier>solaar</dc:identifier></cc:Work><cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><g
|
||||
id="g3"><rect
|
||||
style="fill:url(#linearGradient18);fill-opacity:1;stroke:none;stroke-width:3;stroke-linejoin:round;stroke-opacity:0.996078;paint-order:fill markers stroke"
|
||||
id="rect17"
|
||||
width="90"
|
||||
height="90"
|
||||
x="5"
|
||||
y="5"
|
||||
rx="10"
|
||||
ry="10" /><path
|
||||
id="path11"
|
||||
style="display:inline;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.905882;paint-order:markers fill stroke"
|
||||
d="m 36.326172,18.050781 c -0.653587,3.07e-4 -1.295564,0.172759 -1.861328,0.5 l -3.260348,1.886206 c -0.369666,0.213862 -0.976947,0.555623 -1.294346,0.840227 -1.095169,0.982014 -1.50919,2.530927 -1.050063,3.928399 0.133086,0.405083 0.488934,1.004291 0.702637,1.37405 l 5.656751,9.787566 c 0.62092,1.074344 0.455955,2.70357 -0.225142,3.739812 -0.385108,0.585915 -0.736584,1.1959 -1.052473,1.826946 C 33.386764,43.042894 32.056577,44 30.815708,44 H 19.405457 c -0.377101,0 -0.99151,-0.0065 -1.361861,0.06167 C 16.311702,44.380584 14.999644,45.89844 15,47.722656 v 4.554688 C 14.999599,54.333476 16.666524,56.000401 18.722656,56 h 12.093052 c 1.240869,0 2.571057,0.957108 3.126154,2.066017 0.315889,0.631045 0.667365,1.24103 1.052473,1.826945 0.681096,1.03624 0.84606,2.665465 0.22514,3.739809 l -6.043694,10.457073 c -1.028907,1.779844 -0.420325,4.056781 1.359375,5.085937 l 3.929688,2.273438 c 1.779707,1.029944 4.057417,0.421155 5.085937,-1.359375 l 6.043694,-10.457073 c 0.62092,-1.074344 2.114654,-1.744293 3.352326,-1.666259 C 49.29502,67.988467 49.64608,68 50,68 c 0.353931,0 0.705,-0.01153 1.053229,-0.03349 1.237655,-0.07804 2.731376,0.591916 3.352296,1.66626 l 6.043694,10.457073 c 1.02852,1.78053 3.30623,2.389319 5.085937,1.359375 l 3.929688,-2.273438 c 1.7797,-1.029156 2.388282,-3.306093 1.359375,-5.085937 L 64.780525,63.632771 c -0.62092,-1.074344 -0.455955,-2.70357 0.225142,-3.739812 0.385108,-0.585915 0.736584,-1.1959 1.052473,-1.826946 C 66.613236,56.957106 67.943423,56 69.184291,56 H 81.277344 C 83.333476,56.000401 85.000401,54.333476 85,52.277344 V 47.722656 C 85.000401,45.666524 83.333476,43.999599 81.277344,44 H 69.184291 c -1.240868,0 -2.571056,-0.957108 -3.126153,-2.066017 -0.315889,-0.631045 -0.667365,-1.24103 -1.052473,-1.826945 -0.681096,-1.03624 -0.84606,-2.665465 -0.22514,-3.739809 l 6.043694,-10.457073 c 1.028907,-1.779844 0.420325,-4.056781 -1.359375,-5.085937 l -3.929688,-2.273438 c -1.779707,-1.029944 -4.057417,-0.421155 -5.085937,1.359375 l -6.043694,10.457073 c -0.62092,1.074344 -2.114654,1.744293 -3.352326,1.666259 C 50.70498,32.011533 50.35392,32 50,32 c -0.353931,0 -0.705,0.01153 -1.053229,0.03349 -1.237655,0.07804 -2.731376,-0.591916 -3.352296,-1.66626 L 39.550781,19.910156 C 38.885414,18.758657 37.656082,18.0498 36.326172,18.050781 Z M 50,38.746094 C 56.215539,38.745663 61.254337,43.784461 61.253906,50 61.254337,56.215539 56.215539,61.254337 50,61.253906 43.784461,61.254337 38.745663,56.215539 38.746094,50 38.745663,43.784461 43.784461,38.745663 50,38.746094 Z"
|
||||
inkscape:path-effect="#path-effect20"
|
||||
inkscape:original-d="m 36.326172,18.050781 a 3.721056,3.721056 0 0 0 -1.861328,0.5 l -3.929688,2.273438 a 3.7228036,3.7228036 0 0 0 -1.359375,5.085937 L 36.34375,38.3125 C 34.921877,39.972287 33.808215,41.898777 33.0625,44 H 18.722656 A 3.7219297,3.7219297 0 0 0 15,47.722656 v 4.554688 A 3.7219297,3.7219297 0 0 0 18.722656,56 H 33.0625 c 0.745715,2.101223 1.859377,4.027713 3.28125,5.6875 l -7.167969,12.402344 a 3.7228036,3.7228036 0 0 0 1.359375,5.085937 l 3.929688,2.273438 a 3.721056,3.721056 0 0 0 5.085937,-1.359375 L 46.71875,67.6875 C 47.784179,67.884035 48.877705,68 50,68 c 1.122295,0 2.215821,-0.115965 3.28125,-0.3125 l 7.167969,12.402344 a 3.721056,3.721056 0 0 0 5.085937,1.359375 l 3.929688,-2.273438 a 3.7228036,3.7228036 0 0 0 1.359375,-5.085937 L 63.65625,61.6875 C 65.078123,60.027713 66.191785,58.101223 66.9375,56 H 81.277344 A 3.7219297,3.7219297 0 0 0 85,52.277344 V 47.722656 A 3.7219297,3.7219297 0 0 0 81.277344,44 H 66.9375 c -0.745715,-2.101223 -1.859377,-4.027713 -3.28125,-5.6875 l 7.167969,-12.402344 a 3.7228036,3.7228036 0 0 0 -1.359375,-5.085937 l -3.929688,-2.273438 a 3.721056,3.721056 0 0 0 -5.085937,1.359375 L 53.28125,32.3125 C 52.215821,32.115965 51.122295,32 50,32 c -1.122295,0 -2.215821,0.115965 -3.28125,0.3125 L 39.550781,19.910156 A 3.721056,3.721056 0 0 0 36.326172,18.050781 Z M 50,38.746094 A 11.253125,11.253125 0 0 1 61.253906,50 11.253125,11.253125 0 0 1 50,61.253906 11.253125,11.253125 0 0 1 38.746094,50 11.253125,11.253125 0 0 1 50,38.746094 Z" /></g></svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
|
|
@ -0,0 +1,234 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
width="100"
|
||||
height="100"
|
||||
id="svg3"
|
||||
sodipodi:docname="solaar-init.svg"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
|
||||
id="namedview3"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
showguides="true"
|
||||
inkscape:zoom="7.297342"
|
||||
inkscape:cx="15.005464"
|
||||
inkscape:cy="46.86638"
|
||||
inkscape:current-layer="svg3"><sodipodi:guide
|
||||
position="33.74894,95"
|
||||
orientation="0,-1"
|
||||
id="guide3"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="5,53.923662"
|
||||
orientation="1,0"
|
||||
id="guide4"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="67.152677,5"
|
||||
orientation="0,-1"
|
||||
id="guide5"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="95,74.370155"
|
||||
orientation="1,0"
|
||||
id="guide6"
|
||||
inkscape:locked="false" /></sodipodi:namedview><title
|
||||
id="title1">Solaar init</title><defs
|
||||
id="defs2"><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect7"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><linearGradient
|
||||
id="gradient_gray"><stop
|
||||
style="stop-color:#848484;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1" /><stop
|
||||
style="stop-color:#9c9c9c;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2" /></linearGradient><linearGradient
|
||||
x1="5"
|
||||
y1="50"
|
||||
x2="95"
|
||||
y2="50"
|
||||
id="gradient_rect"
|
||||
xlink:href="#gradient_gray"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
x1="37"
|
||||
y1="50"
|
||||
x2="63"
|
||||
y2="50"
|
||||
id="gradient_dot"
|
||||
xlink:href="#gradient_gray"
|
||||
gradientUnits="userSpaceOnUse" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-7"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><linearGradient
|
||||
id="gradient_black"><stop
|
||||
style="stop-color:#000000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1-3" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2-3" /></linearGradient><linearGradient
|
||||
x1="5"
|
||||
y1="50"
|
||||
x2="95"
|
||||
y2="50"
|
||||
id="gradient_rect-3"
|
||||
xlink:href="#gradient_black"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
x1="37"
|
||||
y1="50"
|
||||
x2="63"
|
||||
y2="50"
|
||||
id="gradient_dot-8"
|
||||
xlink:href="#gradient_black"
|
||||
gradientUnits="userSpaceOnUse" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-5"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-7-6"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect18"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><linearGradient
|
||||
id="gradient_blue"><stop
|
||||
style="stop-color:#009099;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1-4" /><stop
|
||||
style="stop-color:#00a899;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2-1" /></linearGradient><linearGradient
|
||||
x1="50"
|
||||
y1="5.5"
|
||||
x2="50"
|
||||
y2="94.5"
|
||||
id="gradient_rect-8"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-110.09871,-4.4507114)" /><linearGradient
|
||||
x1="50.01833"
|
||||
y1="5"
|
||||
x2="50.01833"
|
||||
y2="95"
|
||||
id="gradient_dot-5"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse" /></defs><metadata
|
||||
id="metadata2"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Solaar init</dc:title><dc:creator><cc:Agent><dc:title>Daniel Pavel</dc:title></cc:Agent></dc:creator><cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /><dc:date>2013-06-25</dc:date><dc:identifier>solaar-init</dc:identifier></cc:Work><cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:3;stroke-linejoin:round;stroke-opacity:0.996078;paint-order:fill markers stroke"
|
||||
id="rect17"
|
||||
width="90"
|
||||
height="90"
|
||||
x="5"
|
||||
y="5"
|
||||
rx="10"
|
||||
ry="10" /><path
|
||||
id="path11-5"
|
||||
style="display:inline;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.905882;paint-order:markers fill stroke"
|
||||
d="m 36.326172,18.050781 c -0.653587,3.07e-4 -1.295564,0.172759 -1.861328,0.5 l -3.260348,1.886206 c -0.369666,0.213862 -0.976947,0.555623 -1.294346,0.840227 -1.095169,0.982014 -1.50919,2.530927 -1.050063,3.928399 0.133086,0.405083 0.488934,1.004291 0.702637,1.37405 l 5.656751,9.787566 c 0.62092,1.074344 0.455955,2.70357 -0.225142,3.739812 -0.385108,0.585915 -0.736584,1.1959 -1.052473,1.826946 C 33.386764,43.042894 32.056577,44 30.815708,44 H 19.405457 c -0.377101,0 -0.99151,-0.0065 -1.361861,0.06167 C 16.311702,44.380584 14.999644,45.89844 15,47.722656 v 4.554688 C 14.999599,54.333476 16.666524,56.000401 18.722656,56 h 12.093052 c 1.240869,0 2.571057,0.957108 3.126154,2.066017 0.315889,0.631045 0.667365,1.24103 1.052473,1.826945 0.681096,1.03624 0.84606,2.665465 0.22514,3.739809 l -6.043694,10.457073 c -1.028907,1.779844 -0.420325,4.056781 1.359375,5.085937 l 3.929688,2.273438 c 1.779707,1.029944 4.057417,0.421155 5.085937,-1.359375 l 6.043694,-10.457073 c 0.62092,-1.074344 2.114654,-1.744293 3.352326,-1.666259 C 49.29502,67.988467 49.64608,68 50,68 c 0.353931,0 0.705,-0.01153 1.053229,-0.03349 1.237655,-0.07804 2.731376,0.591916 3.352296,1.66626 l 6.043694,10.457073 c 1.02852,1.78053 3.30623,2.389319 5.085937,1.359375 l 3.929688,-2.273438 c 1.7797,-1.029156 2.388282,-3.306093 1.359375,-5.085937 L 64.780525,63.632771 c -0.62092,-1.074344 -0.455955,-2.70357 0.225142,-3.739812 0.385108,-0.585915 0.736584,-1.1959 1.052473,-1.826946 C 66.613236,56.957106 67.943423,56 69.184291,56 H 81.277344 C 83.333476,56.000401 85.000401,54.333476 85,52.277344 V 47.722656 C 85.000401,45.666524 83.333476,43.999599 81.277344,44 H 69.184291 c -1.240868,0 -2.571056,-0.957108 -3.126153,-2.066017 -0.315889,-0.631045 -0.667365,-1.24103 -1.052473,-1.826945 -0.681096,-1.03624 -0.84606,-2.665465 -0.22514,-3.739809 l 6.043694,-10.457073 c 1.028907,-1.779844 0.420325,-4.056781 -1.359375,-5.085937 l -3.929688,-2.273438 c -1.779707,-1.029944 -4.057417,-0.421155 -5.085937,1.359375 l -6.043694,10.457073 c -0.62092,1.074344 -2.114654,1.744293 -3.352326,1.666259 C 50.70498,32.011533 50.35392,32 50,32 c -0.353931,0 -0.705,0.01153 -1.053229,0.03349 -1.237655,0.07804 -2.731376,-0.591916 -3.352296,-1.66626 L 39.550781,19.910156 C 38.885414,18.758657 37.656082,18.0498 36.326172,18.050781 Z M 50,38.746094 C 56.215539,38.745663 61.254337,43.784461 61.253906,50 61.254337,56.215539 56.215539,61.254337 50,61.253906 43.784461,61.254337 38.745663,56.215539 38.746094,50 38.745663,43.784461 43.784461,38.745663 50,38.746094 Z"
|
||||
inkscape:path-effect="#path-effect20-7"
|
||||
inkscape:original-d="m 36.326172,18.050781 a 3.721056,3.721056 0 0 0 -1.861328,0.5 l -3.929688,2.273438 a 3.7228036,3.7228036 0 0 0 -1.359375,5.085937 L 36.34375,38.3125 C 34.921877,39.972287 33.808215,41.898777 33.0625,44 H 18.722656 A 3.7219297,3.7219297 0 0 0 15,47.722656 v 4.554688 A 3.7219297,3.7219297 0 0 0 18.722656,56 H 33.0625 c 0.745715,2.101223 1.859377,4.027713 3.28125,5.6875 l -7.167969,12.402344 a 3.7228036,3.7228036 0 0 0 1.359375,5.085937 l 3.929688,2.273438 a 3.721056,3.721056 0 0 0 5.085937,-1.359375 L 46.71875,67.6875 C 47.784179,67.884035 48.877705,68 50,68 c 1.122295,0 2.215821,-0.115965 3.28125,-0.3125 l 7.167969,12.402344 a 3.721056,3.721056 0 0 0 5.085937,1.359375 l 3.929688,-2.273438 a 3.7228036,3.7228036 0 0 0 1.359375,-5.085937 L 63.65625,61.6875 C 65.078123,60.027713 66.191785,58.101223 66.9375,56 H 81.277344 A 3.7219297,3.7219297 0 0 0 85,52.277344 V 47.722656 A 3.7219297,3.7219297 0 0 0 81.277344,44 H 66.9375 c -0.745715,-2.101223 -1.859377,-4.027713 -3.28125,-5.6875 l 7.167969,-12.402344 a 3.7228036,3.7228036 0 0 0 -1.359375,-5.085937 l -3.929688,-2.273438 a 3.721056,3.721056 0 0 0 -5.085937,1.359375 L 53.28125,32.3125 C 52.215821,32.115965 51.122295,32 50,32 c -1.122295,0 -2.215821,0.115965 -3.28125,0.3125 L 39.550781,19.910156 A 3.721056,3.721056 0 0 0 36.326172,18.050781 Z M 50,38.746094 A 11.253125,11.253125 0 0 1 61.253906,50 11.253125,11.253125 0 0 1 50,61.253906 11.253125,11.253125 0 0 1 38.746094,50 11.253125,11.253125 0 0 1 50,38.746094 Z" /></svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
|
@ -0,0 +1,241 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
width="100"
|
||||
height="100"
|
||||
id="svg3"
|
||||
sodipodi:docname="solaar-init.svg"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
|
||||
id="namedview3"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
showguides="true"
|
||||
inkscape:zoom="7.297342"
|
||||
inkscape:cx="15.005464"
|
||||
inkscape:cy="46.86638"
|
||||
inkscape:current-layer="svg3"><sodipodi:guide
|
||||
position="33.74894,95"
|
||||
orientation="0,-1"
|
||||
id="guide3"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="5,53.923662"
|
||||
orientation="1,0"
|
||||
id="guide4"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="67.152677,5"
|
||||
orientation="0,-1"
|
||||
id="guide5"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="95,74.370155"
|
||||
orientation="1,0"
|
||||
id="guide6"
|
||||
inkscape:locked="false" /></sodipodi:namedview><title
|
||||
id="title1">Solaar init</title><defs
|
||||
id="defs2"><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect7"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><linearGradient
|
||||
id="gradient_gray"><stop
|
||||
style="stop-color:#848484;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1" /><stop
|
||||
style="stop-color:#9c9c9c;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2" /></linearGradient><linearGradient
|
||||
x1="5"
|
||||
y1="50"
|
||||
x2="95"
|
||||
y2="50"
|
||||
id="gradient_rect"
|
||||
xlink:href="#gradient_gray"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
x1="37"
|
||||
y1="50"
|
||||
x2="63"
|
||||
y2="50"
|
||||
id="gradient_dot"
|
||||
xlink:href="#gradient_gray"
|
||||
gradientUnits="userSpaceOnUse" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-7"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><linearGradient
|
||||
id="gradient_black"><stop
|
||||
style="stop-color:#000000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1-3" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2-3" /></linearGradient><linearGradient
|
||||
x1="5"
|
||||
y1="50"
|
||||
x2="95"
|
||||
y2="50"
|
||||
id="gradient_rect-3"
|
||||
xlink:href="#gradient_black"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
x1="37"
|
||||
y1="50"
|
||||
x2="63"
|
||||
y2="50"
|
||||
id="gradient_dot-8"
|
||||
xlink:href="#gradient_black"
|
||||
gradientUnits="userSpaceOnUse" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-5"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-7-6"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect18"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><linearGradient
|
||||
id="gradient_blue"><stop
|
||||
style="stop-color:#009099;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1-4" /><stop
|
||||
style="stop-color:#00a899;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2-1" /></linearGradient><linearGradient
|
||||
x1="50"
|
||||
y1="5.5"
|
||||
x2="50"
|
||||
y2="94.5"
|
||||
id="gradient_rect-8"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-110.09871,-4.4507114)" /><linearGradient
|
||||
x1="50.01833"
|
||||
y1="5"
|
||||
x2="50.01833"
|
||||
y2="95"
|
||||
id="gradient_dot-5"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse" /></defs><metadata
|
||||
id="metadata2"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Solaar init</dc:title><dc:creator><cc:Agent><dc:title>Daniel Pavel</dc:title></cc:Agent></dc:creator><cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /><dc:date>2013-06-25</dc:date><dc:identifier>solaar-init</dc:identifier></cc:Work><cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:3;stroke-linejoin:round;stroke-opacity:0.996078;paint-order:fill markers stroke"
|
||||
id="rect17"
|
||||
width="90"
|
||||
height="90"
|
||||
x="5"
|
||||
y="5"
|
||||
rx="10"
|
||||
ry="10" /><path
|
||||
id="path6"
|
||||
style="display:inline;fill:#131313;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.880197;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.905882;paint-order:markers fill stroke"
|
||||
d="m 36.326172,18.050781 c -0.653587,3.07e-4 -1.295564,0.172759 -1.861328,0.5 l -3.260348,1.886206 c -0.369666,0.213862 -0.976947,0.555623 -1.294346,0.840227 -1.095169,0.982014 -1.50919,2.530927 -1.050063,3.928399 0.133086,0.405083 0.488934,1.004291 0.702637,1.37405 l 5.656751,9.787566 c 0.62092,1.074344 0.455955,2.70357 -0.225142,3.739812 -0.385108,0.585915 -0.736584,1.1959 -1.052473,1.826946 C 33.386764,43.042894 32.056577,44 30.815708,44 H 19.405457 c -0.377101,0 -0.99151,-0.0065 -1.361861,0.06167 C 16.311703,44.380584 14.999644,45.89844 15,47.722656 v 4.554688 C 14.999599,54.333476 16.666524,56.000401 18.722656,56 h 12.093052 c 1.240869,0 2.571057,0.957108 3.126154,2.066017 0.315889,0.631045 0.667365,1.24103 1.052473,1.826945 0.681096,1.03624 0.84606,2.665465 0.22514,3.739809 l -6.043694,10.457073 c -1.028907,1.779844 -0.420325,4.056781 1.359375,5.085937 l 3.929688,2.273438 c 1.779707,1.029944 4.057417,0.421155 5.085937,-1.359375 l 6.043694,-10.457073 c 0.62092,-1.074344 2.114654,-1.744293 3.352326,-1.666259 C 49.29502,67.988467 49.64608,68 50,68 c 0.353931,0 0.705,-0.01153 1.053229,-0.03349 1.237655,-0.07804 2.731376,0.591916 3.352296,1.66626 l 6.043694,10.457073 c 1.02852,1.78053 3.30623,2.389319 5.085937,1.359375 l 3.929688,-2.273438 c 1.7797,-1.029156 2.388282,-3.306093 1.359375,-5.085937 L 64.780525,63.632771 c -0.62092,-1.074344 -0.455955,-2.70357 0.225142,-3.739812 0.385108,-0.585915 0.736584,-1.1959 1.052473,-1.826946 C 66.613236,56.957106 67.943423,56 69.184291,56 H 81.277344 C 83.333476,56.000401 85.000401,54.333476 85,52.277344 V 47.722656 C 85.000401,45.666524 83.333476,43.999599 81.277344,44 H 69.184291 c -1.240868,0 -2.571056,-0.957108 -3.126153,-2.066017 -0.315889,-0.631045 -0.667365,-1.24103 -1.052473,-1.826945 -0.681096,-1.03624 -0.84606,-2.665465 -0.22514,-3.739809 l 6.043694,-10.457073 c 1.028907,-1.779844 0.420325,-4.056781 -1.359375,-5.085937 l -3.929688,-2.273438 c -1.779707,-1.029944 -4.057417,-0.421155 -5.085937,1.359375 l -6.043694,10.457073 c -0.62092,1.074344 -2.114654,1.744293 -3.352326,1.666259 C 50.70498,32.011533 50.35392,32 50,32 c -0.353931,0 -0.705,0.01153 -1.053229,0.03349 -1.237655,0.07804 -2.731376,-0.591916 -3.352296,-1.66626 L 39.550781,19.910156 C 38.885414,18.758657 37.656082,18.0498 36.326172,18.050781 Z m 13.347319,17.858481 c 6.215539,-4.32e-4 13.90713,7.251873 13.906698,13.467412 4.32e-4,6.21554 -7.19351,14.539222 -13.409049,14.538791 -6.215539,4.31e-4 -14.18,-6.257225 -14.179568,-12.472764 -4.32e-4,-6.215539 7.46638,-15.533871 13.681919,-15.533439 z"
|
||||
inkscape:path-effect="#path-effect7"
|
||||
inkscape:original-d="m 36.326172,18.050781 c -0.653587,3.07e-4 -1.295564,0.172759 -1.861328,0.5 l -3.929688,2.273438 c -1.7797,1.029156 -2.388282,3.306093 -1.359375,5.085937 L 36.34375,38.3125 C 34.921877,39.972287 33.808215,41.898777 33.0625,44 H 18.722656 C 16.666524,43.999599 14.999599,45.666524 15,47.722656 v 4.554688 C 14.999599,54.333476 16.666524,56.000401 18.722656,56 H 33.0625 c 0.745715,2.101223 1.859377,4.027713 3.28125,5.6875 l -7.167969,12.402344 c -1.028907,1.779844 -0.420325,4.056781 1.359375,5.085937 l 3.929688,2.273438 c 1.779707,1.029944 4.057417,0.421155 5.085937,-1.359375 L 46.71875,67.6875 C 47.784179,67.884035 48.877705,68 50,68 c 1.122295,0 2.215821,-0.115965 3.28125,-0.3125 l 7.167969,12.402344 c 1.02852,1.78053 3.30623,2.389319 5.085937,1.359375 l 3.929688,-2.273438 c 1.7797,-1.029156 2.388282,-3.306093 1.359375,-5.085937 L 63.65625,61.6875 C 65.078123,60.027713 66.191785,58.101223 66.9375,56 H 81.277344 C 83.333476,56.000401 85.000401,54.333476 85,52.277344 V 47.722656 C 85.000401,45.666524 83.333476,43.999599 81.277344,44 H 66.9375 c -0.745715,-2.101223 -1.859377,-4.027713 -3.28125,-5.6875 l 7.167969,-12.402344 c 1.028907,-1.779844 0.420325,-4.056781 -1.359375,-5.085937 l -3.929688,-2.273438 c -1.779707,-1.029944 -4.057417,-0.421155 -5.085937,1.359375 L 53.28125,32.3125 C 52.215821,32.115965 51.122295,32 50,32 c -1.122295,0 -2.215821,0.115965 -3.28125,0.3125 L 39.550781,19.910156 C 38.885414,18.758657 37.656082,18.0498 36.326172,18.050781 Z m 13.347319,17.858481 c 6.215539,-4.32e-4 13.90713,7.251873 13.906698,13.467412 4.32e-4,6.21554 -7.19351,14.539222 -13.409049,14.538791 -6.215539,4.31e-4 -14.18,-6.257225 -14.179568,-12.472764 -4.32e-4,-6.215539 7.46638,-15.533871 13.681919,-15.533439 z"
|
||||
transform="matrix(1.0973922,0.29404534,-0.29404534,1.0973922,9.8327959,-19.571815)"
|
||||
sodipodi:nodetypes="cccccccccccccccccsccccccccccccccccccscccccccc" /><path
|
||||
id="path11-5"
|
||||
style="display:inline;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.905882;paint-order:markers fill stroke"
|
||||
d="m 36.326172,18.050781 c -0.653587,3.07e-4 -1.295564,0.172759 -1.861328,0.5 l -3.260348,1.886206 c -0.369666,0.213862 -0.976947,0.555623 -1.294346,0.840227 -1.095169,0.982014 -1.50919,2.530927 -1.050063,3.928399 0.133086,0.405083 0.488934,1.004291 0.702637,1.37405 l 5.656751,9.787566 c 0.62092,1.074344 0.455955,2.70357 -0.225142,3.739812 -0.385108,0.585915 -0.736584,1.1959 -1.052473,1.826946 C 33.386764,43.042894 32.056577,44 30.815708,44 H 19.405457 c -0.377101,0 -0.99151,-0.0065 -1.361861,0.06167 C 16.311702,44.380584 14.999644,45.89844 15,47.722656 v 4.554688 C 14.999599,54.333476 16.666524,56.000401 18.722656,56 h 12.093052 c 1.240869,0 2.571057,0.957108 3.126154,2.066017 0.315889,0.631045 0.667365,1.24103 1.052473,1.826945 0.681096,1.03624 0.84606,2.665465 0.22514,3.739809 l -6.043694,10.457073 c -1.028907,1.779844 -0.420325,4.056781 1.359375,5.085937 l 3.929688,2.273438 c 1.779707,1.029944 4.057417,0.421155 5.085937,-1.359375 l 6.043694,-10.457073 c 0.62092,-1.074344 2.114654,-1.744293 3.352326,-1.666259 C 49.29502,67.988467 49.64608,68 50,68 c 0.353931,0 0.705,-0.01153 1.053229,-0.03349 1.237655,-0.07804 2.731376,0.591916 3.352296,1.66626 l 6.043694,10.457073 c 1.02852,1.78053 3.30623,2.389319 5.085937,1.359375 l 3.929688,-2.273438 c 1.7797,-1.029156 2.388282,-3.306093 1.359375,-5.085937 L 64.780525,63.632771 c -0.62092,-1.074344 -0.455955,-2.70357 0.225142,-3.739812 0.385108,-0.585915 0.736584,-1.1959 1.052473,-1.826946 C 66.613236,56.957106 67.943423,56 69.184291,56 H 81.277344 C 83.333476,56.000401 85.000401,54.333476 85,52.277344 V 47.722656 C 85.000401,45.666524 83.333476,43.999599 81.277344,44 H 69.184291 c -1.240868,0 -2.571056,-0.957108 -3.126153,-2.066017 -0.315889,-0.631045 -0.667365,-1.24103 -1.052473,-1.826945 -0.681096,-1.03624 -0.84606,-2.665465 -0.22514,-3.739809 l 6.043694,-10.457073 c 1.028907,-1.779844 0.420325,-4.056781 -1.359375,-5.085937 l -3.929688,-2.273438 c -1.779707,-1.029944 -4.057417,-0.421155 -5.085937,1.359375 l -6.043694,10.457073 c -0.62092,1.074344 -2.114654,1.744293 -3.352326,1.666259 C 50.70498,32.011533 50.35392,32 50,32 c -0.353931,0 -0.705,0.01153 -1.053229,0.03349 -1.237655,0.07804 -2.731376,-0.591916 -3.352296,-1.66626 L 39.550781,19.910156 C 38.885414,18.758657 37.656082,18.0498 36.326172,18.050781 Z M 50,38.746094 C 56.215539,38.745663 61.254337,43.784461 61.253906,50 61.254337,56.215539 56.215539,61.254337 50,61.253906 43.784461,61.254337 38.745663,56.215539 38.746094,50 38.745663,43.784461 43.784461,38.745663 50,38.746094 Z"
|
||||
inkscape:path-effect="#path-effect20-7"
|
||||
inkscape:original-d="m 36.326172,18.050781 a 3.721056,3.721056 0 0 0 -1.861328,0.5 l -3.929688,2.273438 a 3.7228036,3.7228036 0 0 0 -1.359375,5.085937 L 36.34375,38.3125 C 34.921877,39.972287 33.808215,41.898777 33.0625,44 H 18.722656 A 3.7219297,3.7219297 0 0 0 15,47.722656 v 4.554688 A 3.7219297,3.7219297 0 0 0 18.722656,56 H 33.0625 c 0.745715,2.101223 1.859377,4.027713 3.28125,5.6875 l -7.167969,12.402344 a 3.7228036,3.7228036 0 0 0 1.359375,5.085937 l 3.929688,2.273438 a 3.721056,3.721056 0 0 0 5.085937,-1.359375 L 46.71875,67.6875 C 47.784179,67.884035 48.877705,68 50,68 c 1.122295,0 2.215821,-0.115965 3.28125,-0.3125 l 7.167969,12.402344 a 3.721056,3.721056 0 0 0 5.085937,1.359375 l 3.929688,-2.273438 a 3.7228036,3.7228036 0 0 0 1.359375,-5.085937 L 63.65625,61.6875 C 65.078123,60.027713 66.191785,58.101223 66.9375,56 H 81.277344 A 3.7219297,3.7219297 0 0 0 85,52.277344 V 47.722656 A 3.7219297,3.7219297 0 0 0 81.277344,44 H 66.9375 c -0.745715,-2.101223 -1.859377,-4.027713 -3.28125,-5.6875 l 7.167969,-12.402344 a 3.7228036,3.7228036 0 0 0 -1.359375,-5.085937 l -3.929688,-2.273438 a 3.721056,3.721056 0 0 0 -5.085937,1.359375 L 53.28125,32.3125 C 52.215821,32.115965 51.122295,32 50,32 c -1.122295,0 -2.215821,0.115965 -3.28125,0.3125 L 39.550781,19.910156 A 3.721056,3.721056 0 0 0 36.326172,18.050781 Z M 50,38.746094 A 11.253125,11.253125 0 0 1 61.253906,50 11.253125,11.253125 0 0 1 50,61.253906 11.253125,11.253125 0 0 1 38.746094,50 11.253125,11.253125 0 0 1 50,38.746094 Z" /></svg>
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
|
@ -0,0 +1,182 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
width="100"
|
||||
height="100"
|
||||
id="svg3"
|
||||
sodipodi:docname="solaar-symbolic_dark.svg"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
|
||||
id="namedview3"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
showguides="true"
|
||||
inkscape:zoom="4.4936636"
|
||||
inkscape:cx="76.440969"
|
||||
inkscape:cy="79.445199"
|
||||
inkscape:current-layer="svg3"><sodipodi:guide
|
||||
position="40.341527,95"
|
||||
orientation="0,-1"
|
||||
id="guide3"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="5,55.07737"
|
||||
orientation="1,0"
|
||||
id="guide4"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="95,52.215267"
|
||||
orientation="1,0"
|
||||
id="guide5"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="61.950078,5"
|
||||
orientation="0,-1"
|
||||
id="guide6"
|
||||
inkscape:locked="false" /></sodipodi:namedview><title
|
||||
id="title1">Solaar</title><defs
|
||||
id="defs2"><linearGradient
|
||||
id="gradient_black"><stop
|
||||
style="stop-color:#000000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2" /></linearGradient><linearGradient
|
||||
x1="5"
|
||||
y1="50"
|
||||
x2="95"
|
||||
y2="50"
|
||||
id="gradient_rect"
|
||||
xlink:href="#gradient_black"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
x1="37"
|
||||
y1="50"
|
||||
x2="63"
|
||||
y2="50"
|
||||
id="gradient_dot"
|
||||
xlink:href="#gradient_black"
|
||||
gradientUnits="userSpaceOnUse" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-5"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-7"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect18"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><linearGradient
|
||||
id="gradient_blue"><stop
|
||||
style="stop-color:#009099;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1-4" /><stop
|
||||
style="stop-color:#00a899;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2-1" /></linearGradient><linearGradient
|
||||
x1="50"
|
||||
y1="5.5"
|
||||
x2="50"
|
||||
y2="94.5"
|
||||
id="gradient_rect-8"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-110.09871,-4.4507114)" /><linearGradient
|
||||
x1="50.01833"
|
||||
y1="5"
|
||||
x2="50.01833"
|
||||
y2="95"
|
||||
id="gradient_dot-5"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse" /></defs><metadata
|
||||
id="metadata2"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Solaar</dc:title><dc:creator><cc:Agent><dc:title>Daniel Pavel</dc:title></cc:Agent></dc:creator><cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /><dc:date>2013-06-25</dc:date><dc:identifier>solaar</dc:identifier></cc:Work><cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><g
|
||||
id="g3-7"><rect
|
||||
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:3;stroke-linejoin:round;stroke-opacity:0.996078;paint-order:fill markers stroke"
|
||||
id="rect17"
|
||||
width="90"
|
||||
height="90"
|
||||
x="5"
|
||||
y="5"
|
||||
rx="10"
|
||||
ry="10" /><path
|
||||
id="path11-5"
|
||||
style="display:inline;fill:#131313;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.905882;paint-order:markers fill stroke"
|
||||
d="m 36.326172,18.050781 c -0.653587,3.07e-4 -1.295564,0.172759 -1.861328,0.5 l -3.260348,1.886206 c -0.369666,0.213862 -0.976947,0.555623 -1.294346,0.840227 -1.095169,0.982014 -1.50919,2.530927 -1.050063,3.928399 0.133086,0.405083 0.488934,1.004291 0.702637,1.37405 l 5.656751,9.787566 c 0.62092,1.074344 0.455955,2.70357 -0.225142,3.739812 -0.385108,0.585915 -0.736584,1.1959 -1.052473,1.826946 C 33.386764,43.042894 32.056577,44 30.815708,44 H 19.405457 c -0.377101,0 -0.99151,-0.0065 -1.361861,0.06167 C 16.311702,44.380584 14.999644,45.89844 15,47.722656 v 4.554688 C 14.999599,54.333476 16.666524,56.000401 18.722656,56 h 12.093052 c 1.240869,0 2.571057,0.957108 3.126154,2.066017 0.315889,0.631045 0.667365,1.24103 1.052473,1.826945 0.681096,1.03624 0.84606,2.665465 0.22514,3.739809 l -6.043694,10.457073 c -1.028907,1.779844 -0.420325,4.056781 1.359375,5.085937 l 3.929688,2.273438 c 1.779707,1.029944 4.057417,0.421155 5.085937,-1.359375 l 6.043694,-10.457073 c 0.62092,-1.074344 2.114654,-1.744293 3.352326,-1.666259 C 49.29502,67.988467 49.64608,68 50,68 c 0.353931,0 0.705,-0.01153 1.053229,-0.03349 1.237655,-0.07804 2.731376,0.591916 3.352296,1.66626 l 6.043694,10.457073 c 1.02852,1.78053 3.30623,2.389319 5.085937,1.359375 l 3.929688,-2.273438 c 1.7797,-1.029156 2.388282,-3.306093 1.359375,-5.085937 L 64.780525,63.632771 c -0.62092,-1.074344 -0.455955,-2.70357 0.225142,-3.739812 0.385108,-0.585915 0.736584,-1.1959 1.052473,-1.826946 C 66.613236,56.957106 67.943423,56 69.184291,56 H 81.277344 C 83.333476,56.000401 85.000401,54.333476 85,52.277344 V 47.722656 C 85.000401,45.666524 83.333476,43.999599 81.277344,44 H 69.184291 c -1.240868,0 -2.571056,-0.957108 -3.126153,-2.066017 -0.315889,-0.631045 -0.667365,-1.24103 -1.052473,-1.826945 -0.681096,-1.03624 -0.84606,-2.665465 -0.22514,-3.739809 l 6.043694,-10.457073 c 1.028907,-1.779844 0.420325,-4.056781 -1.359375,-5.085937 l -3.929688,-2.273438 c -1.779707,-1.029944 -4.057417,-0.421155 -5.085937,1.359375 l -6.043694,10.457073 c -0.62092,1.074344 -2.114654,1.744293 -3.352326,1.666259 C 50.70498,32.011533 50.35392,32 50,32 c -0.353931,0 -0.705,0.01153 -1.053229,0.03349 -1.237655,0.07804 -2.731376,-0.591916 -3.352296,-1.66626 L 39.550781,19.910156 C 38.885414,18.758657 37.656082,18.0498 36.326172,18.050781 Z M 50,38.746094 C 56.215539,38.745663 61.254337,43.784461 61.253906,50 61.254337,56.215539 56.215539,61.254337 50,61.253906 43.784461,61.254337 38.745663,56.215539 38.746094,50 38.745663,43.784461 43.784461,38.745663 50,38.746094 Z"
|
||||
inkscape:path-effect="#path-effect20-7"
|
||||
inkscape:original-d="m 36.326172,18.050781 a 3.721056,3.721056 0 0 0 -1.861328,0.5 l -3.929688,2.273438 a 3.7228036,3.7228036 0 0 0 -1.359375,5.085937 L 36.34375,38.3125 C 34.921877,39.972287 33.808215,41.898777 33.0625,44 H 18.722656 A 3.7219297,3.7219297 0 0 0 15,47.722656 v 4.554688 A 3.7219297,3.7219297 0 0 0 18.722656,56 H 33.0625 c 0.745715,2.101223 1.859377,4.027713 3.28125,5.6875 l -7.167969,12.402344 a 3.7228036,3.7228036 0 0 0 1.359375,5.085937 l 3.929688,2.273438 a 3.721056,3.721056 0 0 0 5.085937,-1.359375 L 46.71875,67.6875 C 47.784179,67.884035 48.877705,68 50,68 c 1.122295,0 2.215821,-0.115965 3.28125,-0.3125 l 7.167969,12.402344 a 3.721056,3.721056 0 0 0 5.085937,1.359375 l 3.929688,-2.273438 a 3.7228036,3.7228036 0 0 0 1.359375,-5.085937 L 63.65625,61.6875 C 65.078123,60.027713 66.191785,58.101223 66.9375,56 H 81.277344 A 3.7219297,3.7219297 0 0 0 85,52.277344 V 47.722656 A 3.7219297,3.7219297 0 0 0 81.277344,44 H 66.9375 c -0.745715,-2.101223 -1.859377,-4.027713 -3.28125,-5.6875 l 7.167969,-12.402344 a 3.7228036,3.7228036 0 0 0 -1.359375,-5.085937 l -3.929688,-2.273438 a 3.721056,3.721056 0 0 0 -5.085937,1.359375 L 53.28125,32.3125 C 52.215821,32.115965 51.122295,32 50,32 c -1.122295,0 -2.215821,0.115965 -3.28125,0.3125 L 39.550781,19.910156 A 3.721056,3.721056 0 0 0 36.326172,18.050781 Z M 50,38.746094 A 11.253125,11.253125 0 0 1 61.253906,50 11.253125,11.253125 0 0 1 50,61.253906 11.253125,11.253125 0 0 1 38.746094,50 11.253125,11.253125 0 0 1 50,38.746094 Z" /></g></svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
|
@ -0,0 +1,182 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
width="100"
|
||||
height="100"
|
||||
id="svg3"
|
||||
sodipodi:docname="solaar-symbolic.svg"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
|
||||
id="namedview3"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
showguides="true"
|
||||
inkscape:zoom="6.355"
|
||||
inkscape:cx="8.5759245"
|
||||
inkscape:cy="34.618411"
|
||||
inkscape:current-layer="g3-7"><sodipodi:guide
|
||||
position="40.341527,95"
|
||||
orientation="0,-1"
|
||||
id="guide3"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="5,55.07737"
|
||||
orientation="1,0"
|
||||
id="guide4"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="95,52.215267"
|
||||
orientation="1,0"
|
||||
id="guide5"
|
||||
inkscape:locked="false" /><sodipodi:guide
|
||||
position="61.950078,5"
|
||||
orientation="0,-1"
|
||||
id="guide6"
|
||||
inkscape:locked="false" /></sodipodi:namedview><title
|
||||
id="title1">Solaar</title><defs
|
||||
id="defs2"><linearGradient
|
||||
id="gradient_black"><stop
|
||||
style="stop-color:#000000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2" /></linearGradient><linearGradient
|
||||
x1="5"
|
||||
y1="50"
|
||||
x2="95"
|
||||
y2="50"
|
||||
id="gradient_rect"
|
||||
xlink:href="#gradient_black"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
x1="37"
|
||||
y1="50"
|
||||
x2="63"
|
||||
y2="50"
|
||||
id="gradient_dot"
|
||||
xlink:href="#gradient_black"
|
||||
gradientUnits="userSpaceOnUse" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-5"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect20-7"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,0,1,0,0.77328184,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0.68280054,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,2.2467915,0,1 @ F,0,0,1,0,0,0,1 | F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect18"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,3.7219297,0,1 @ F,0,1,1,0,3.7219297,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /><linearGradient
|
||||
id="gradient_blue"><stop
|
||||
style="stop-color:#009099;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1-4" /><stop
|
||||
style="stop-color:#00a899;stop-opacity:0.9"
|
||||
offset="1"
|
||||
id="stop2-1" /></linearGradient><linearGradient
|
||||
x1="50"
|
||||
y1="5.5"
|
||||
x2="50"
|
||||
y2="94.5"
|
||||
id="gradient_rect-8"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-110.09871,-4.4507114)" /><linearGradient
|
||||
x1="50.01833"
|
||||
y1="5"
|
||||
x2="50.01833"
|
||||
y2="95"
|
||||
id="gradient_dot-5"
|
||||
xlink:href="#gradient_blue"
|
||||
gradientUnits="userSpaceOnUse" /></defs><metadata
|
||||
id="metadata2"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Solaar</dc:title><dc:creator><cc:Agent><dc:title>Daniel Pavel</dc:title></cc:Agent></dc:creator><cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /><dc:date>2013-06-25</dc:date><dc:identifier>solaar</dc:identifier></cc:Work><cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><g
|
||||
id="g3-7"><rect
|
||||
style="fill:#131313;fill-opacity:1;stroke:none;stroke-width:3;stroke-linejoin:round;stroke-opacity:0.996078;paint-order:fill markers stroke"
|
||||
id="rect17"
|
||||
width="90"
|
||||
height="90"
|
||||
x="5"
|
||||
y="5"
|
||||
rx="10"
|
||||
ry="10" /><path
|
||||
id="path11-5"
|
||||
style="display:inline;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.905882;paint-order:markers fill stroke"
|
||||
d="m 36.326172,18.050781 c -0.653587,3.07e-4 -1.295564,0.172759 -1.861328,0.5 l -3.260348,1.886206 c -0.369666,0.213862 -0.976947,0.555623 -1.294346,0.840227 -1.095169,0.982014 -1.50919,2.530927 -1.050063,3.928399 0.133086,0.405083 0.488934,1.004291 0.702637,1.37405 l 5.656751,9.787566 c 0.62092,1.074344 0.455955,2.70357 -0.225142,3.739812 -0.385108,0.585915 -0.736584,1.1959 -1.052473,1.826946 C 33.386764,43.042894 32.056577,44 30.815708,44 H 19.405457 c -0.377101,0 -0.99151,-0.0065 -1.361861,0.06167 C 16.311702,44.380584 14.999644,45.89844 15,47.722656 v 4.554688 C 14.999599,54.333476 16.666524,56.000401 18.722656,56 h 12.093052 c 1.240869,0 2.571057,0.957108 3.126154,2.066017 0.315889,0.631045 0.667365,1.24103 1.052473,1.826945 0.681096,1.03624 0.84606,2.665465 0.22514,3.739809 l -6.043694,10.457073 c -1.028907,1.779844 -0.420325,4.056781 1.359375,5.085937 l 3.929688,2.273438 c 1.779707,1.029944 4.057417,0.421155 5.085937,-1.359375 l 6.043694,-10.457073 c 0.62092,-1.074344 2.114654,-1.744293 3.352326,-1.666259 C 49.29502,67.988467 49.64608,68 50,68 c 0.353931,0 0.705,-0.01153 1.053229,-0.03349 1.237655,-0.07804 2.731376,0.591916 3.352296,1.66626 l 6.043694,10.457073 c 1.02852,1.78053 3.30623,2.389319 5.085937,1.359375 l 3.929688,-2.273438 c 1.7797,-1.029156 2.388282,-3.306093 1.359375,-5.085937 L 64.780525,63.632771 c -0.62092,-1.074344 -0.455955,-2.70357 0.225142,-3.739812 0.385108,-0.585915 0.736584,-1.1959 1.052473,-1.826946 C 66.613236,56.957106 67.943423,56 69.184291,56 H 81.277344 C 83.333476,56.000401 85.000401,54.333476 85,52.277344 V 47.722656 C 85.000401,45.666524 83.333476,43.999599 81.277344,44 H 69.184291 c -1.240868,0 -2.571056,-0.957108 -3.126153,-2.066017 -0.315889,-0.631045 -0.667365,-1.24103 -1.052473,-1.826945 -0.681096,-1.03624 -0.84606,-2.665465 -0.22514,-3.739809 l 6.043694,-10.457073 c 1.028907,-1.779844 0.420325,-4.056781 -1.359375,-5.085937 l -3.929688,-2.273438 c -1.779707,-1.029944 -4.057417,-0.421155 -5.085937,1.359375 l -6.043694,10.457073 c -0.62092,1.074344 -2.114654,1.744293 -3.352326,1.666259 C 50.70498,32.011533 50.35392,32 50,32 c -0.353931,0 -0.705,0.01153 -1.053229,0.03349 -1.237655,0.07804 -2.731376,-0.591916 -3.352296,-1.66626 L 39.550781,19.910156 C 38.885414,18.758657 37.656082,18.0498 36.326172,18.050781 Z M 50,38.746094 C 56.215539,38.745663 61.254337,43.784461 61.253906,50 61.254337,56.215539 56.215539,61.254337 50,61.253906 43.784461,61.254337 38.745663,56.215539 38.746094,50 38.745663,43.784461 43.784461,38.745663 50,38.746094 Z"
|
||||
inkscape:path-effect="#path-effect20-7"
|
||||
inkscape:original-d="m 36.326172,18.050781 a 3.721056,3.721056 0 0 0 -1.861328,0.5 l -3.929688,2.273438 a 3.7228036,3.7228036 0 0 0 -1.359375,5.085937 L 36.34375,38.3125 C 34.921877,39.972287 33.808215,41.898777 33.0625,44 H 18.722656 A 3.7219297,3.7219297 0 0 0 15,47.722656 v 4.554688 A 3.7219297,3.7219297 0 0 0 18.722656,56 H 33.0625 c 0.745715,2.101223 1.859377,4.027713 3.28125,5.6875 l -7.167969,12.402344 a 3.7228036,3.7228036 0 0 0 1.359375,5.085937 l 3.929688,2.273438 a 3.721056,3.721056 0 0 0 5.085937,-1.359375 L 46.71875,67.6875 C 47.784179,67.884035 48.877705,68 50,68 c 1.122295,0 2.215821,-0.115965 3.28125,-0.3125 l 7.167969,12.402344 a 3.721056,3.721056 0 0 0 5.085937,1.359375 l 3.929688,-2.273438 a 3.7228036,3.7228036 0 0 0 1.359375,-5.085937 L 63.65625,61.6875 C 65.078123,60.027713 66.191785,58.101223 66.9375,56 H 81.277344 A 3.7219297,3.7219297 0 0 0 85,52.277344 V 47.722656 A 3.7219297,3.7219297 0 0 0 81.277344,44 H 66.9375 c -0.745715,-2.101223 -1.859377,-4.027713 -3.28125,-5.6875 l 7.167969,-12.402344 a 3.7228036,3.7228036 0 0 0 -1.359375,-5.085937 l -3.929688,-2.273438 a 3.721056,3.721056 0 0 0 -5.085937,1.359375 L 53.28125,32.3125 C 52.215821,32.115965 51.122295,32 50,32 c -1.122295,0 -2.215821,0.115965 -3.28125,0.3125 L 39.550781,19.910156 A 3.721056,3.721056 0 0 0 36.326172,18.050781 Z M 50,38.746094 A 11.253125,11.253125 0 0 1 61.253906,50 11.253125,11.253125 0 0 1 50,61.253906 11.253125,11.253125 0 0 1 38.746094,50 11.253125,11.253125 0 0 1 50,38.746094 Z" /></g></svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
|
@ -48,6 +48,7 @@
|
|||
</screenshots>
|
||||
|
||||
<releases>
|
||||
<release version="1.1.17" date="2025-12-09"/>
|
||||
<release version="1.1.16" date="2025-10-23"/>
|
||||
<release version="1.1.14" date="2025-01-01"/>
|
||||
<release version="1.1.13" date="2024-05-11"/>
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@ def test_set_3leds_missing(device, mocker):
|
|||
def test_get_notification_flags(device):
|
||||
result = _hidpp10.get_notification_flags(device)
|
||||
|
||||
assert result == int("000900", 16)
|
||||
assert result == hidpp10_constants.NotificationFlag(int("000900", 16))
|
||||
|
||||
|
||||
def test_set_notification_flags(mocker):
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
from dataclasses import dataclass
|
||||
from dataclasses import field
|
||||
from typing import Any
|
||||
from typing import Callable
|
||||
from typing import List
|
||||
from typing import Optional
|
||||
from unittest import mock
|
||||
|
||||
import gi
|
||||
import pytest
|
||||
|
|
@ -26,7 +24,6 @@ class Device:
|
|||
|
||||
@dataclass
|
||||
class Receiver:
|
||||
find_paired_node_wpid_func: Callable[[str, int], Any]
|
||||
name: str
|
||||
receiver_kind: str
|
||||
_set_lock: bool = True
|
||||
|
|
@ -87,12 +84,12 @@ class Assistant:
|
|||
@pytest.mark.parametrize(
|
||||
"receiver, lock_open, discovering, page_type",
|
||||
[
|
||||
(Receiver(mock.Mock(), "unifying", "unifying", True), True, False, Gtk.AssistantPageType.PROGRESS),
|
||||
(Receiver(mock.Mock(), "unifying", "unifying", False), False, False, Gtk.AssistantPageType.SUMMARY),
|
||||
(Receiver(mock.Mock(), "nano", "nano", True, _remaining_pairings=5), True, False, Gtk.AssistantPageType.PROGRESS),
|
||||
(Receiver(mock.Mock(), "nano", "nano", False), False, False, Gtk.AssistantPageType.SUMMARY),
|
||||
(Receiver(mock.Mock(), "bolt", "bolt", True), False, True, Gtk.AssistantPageType.PROGRESS),
|
||||
(Receiver(mock.Mock(), "bolt", "bolt", False), False, False, Gtk.AssistantPageType.SUMMARY),
|
||||
(Receiver("unifying", "unifying", True), True, False, Gtk.AssistantPageType.PROGRESS),
|
||||
(Receiver("unifying", "unifying", False), False, False, Gtk.AssistantPageType.SUMMARY),
|
||||
(Receiver("nano", "nano", True, _remaining_pairings=5), True, False, Gtk.AssistantPageType.PROGRESS),
|
||||
(Receiver("nano", "nano", False), False, False, Gtk.AssistantPageType.SUMMARY),
|
||||
(Receiver("bolt", "bolt", True), False, True, Gtk.AssistantPageType.PROGRESS),
|
||||
(Receiver("bolt", "bolt", False), False, False, Gtk.AssistantPageType.SUMMARY),
|
||||
],
|
||||
)
|
||||
def test_create(receiver, lock_open, discovering, page_type):
|
||||
|
|
@ -108,10 +105,10 @@ def test_create(receiver, lock_open, discovering, page_type):
|
|||
@pytest.mark.parametrize(
|
||||
"receiver, expected_result, expected_error",
|
||||
[
|
||||
(Receiver(mock.Mock(), "unifying", "unifying", True), True, False),
|
||||
(Receiver(mock.Mock(), "unifying", "unifying", False), False, True),
|
||||
(Receiver(mock.Mock(), "bolt", "bolt", True), True, False),
|
||||
(Receiver(mock.Mock(), "bolt", "bolt", False), False, True),
|
||||
(Receiver("unifying", "unifying", True), True, False),
|
||||
(Receiver("unifying", "unifying", False), False, True),
|
||||
(Receiver("bolt", "bolt", True), True, False),
|
||||
(Receiver("bolt", "bolt", False), False, True),
|
||||
],
|
||||
)
|
||||
def test_prepare(receiver, expected_result, expected_error):
|
||||
|
|
@ -123,7 +120,7 @@ def test_prepare(receiver, expected_result, expected_error):
|
|||
|
||||
@pytest.mark.parametrize("assistant, expected_result", [(Assistant(True), True), (Assistant(False), False)])
|
||||
def test_check_lock_state_drawable(assistant, expected_result):
|
||||
r = Receiver(mock.Mock(), "succeed", "unifying", True, receiver.Pairing(lock_open=True))
|
||||
r = Receiver("succeed", "unifying", True, receiver.Pairing(lock_open=True))
|
||||
|
||||
result = pair_window.check_lock_state(assistant, r, 2)
|
||||
|
||||
|
|
@ -134,24 +131,23 @@ def test_check_lock_state_drawable(assistant, expected_result):
|
|||
@pytest.mark.parametrize(
|
||||
"receiver, count, expected_result",
|
||||
[
|
||||
(Receiver(mock.Mock(), "fail", "unifying", False, receiver.Pairing(lock_open=False)), 2, False),
|
||||
(Receiver(mock.Mock(), "succeed", "unifying", True, receiver.Pairing(lock_open=True)), 1, True),
|
||||
(Receiver(mock.Mock(), "error", "unifying", True, receiver.Pairing(error="error")), 0, False),
|
||||
(Receiver(mock.Mock(), "new device", "unifying", True, receiver.Pairing(new_device=Device())), 2, False),
|
||||
(Receiver(mock.Mock(), "closed", "unifying", True, receiver.Pairing()), 2, False),
|
||||
(Receiver(mock.Mock(), "closed", "unifying", True, receiver.Pairing()), 1, False),
|
||||
(Receiver(mock.Mock(), "closed", "unifying", True, receiver.Pairing()), 0, False),
|
||||
(Receiver(mock.Mock(), "fail bolt", "bolt", False), 1, False),
|
||||
(Receiver(mock.Mock(), "succeed bolt", "bolt", True, receiver.Pairing(lock_open=True)), 0, True),
|
||||
(Receiver(mock.Mock(), "error bolt", "bolt", True, receiver.Pairing(error="error")), 2, False),
|
||||
(Receiver(mock.Mock(), "new device", "bolt", True, receiver.Pairing(lock_open=True, new_device=Device())), 1, False),
|
||||
(Receiver(mock.Mock(), "discovering", "bolt", True, receiver.Pairing(lock_open=True)), 1, True),
|
||||
(Receiver(mock.Mock(), "closed", "bolt", True, receiver.Pairing()), 2, False),
|
||||
(Receiver(mock.Mock(), "closed", "bolt", True, receiver.Pairing()), 1, False),
|
||||
(Receiver(mock.Mock(), "closed", "bolt", True, receiver.Pairing()), 0, False),
|
||||
(Receiver("fail", "unifying", False, receiver.Pairing(lock_open=False)), 2, False),
|
||||
(Receiver("succeed", "unifying", True, receiver.Pairing(lock_open=True)), 1, True),
|
||||
(Receiver("error", "unifying", True, receiver.Pairing(error="error")), 0, False),
|
||||
(Receiver("new device", "unifying", True, receiver.Pairing(new_device=Device())), 2, False),
|
||||
(Receiver("closed", "unifying", True, receiver.Pairing()), 2, False),
|
||||
(Receiver("closed", "unifying", True, receiver.Pairing()), 1, False),
|
||||
(Receiver("closed", "unifying", True, receiver.Pairing()), 0, False),
|
||||
(Receiver("fail bolt", "bolt", False), 1, False),
|
||||
(Receiver("succeed bolt", "bolt", True, receiver.Pairing(lock_open=True)), 0, True),
|
||||
(Receiver("error bolt", "bolt", True, receiver.Pairing(error="error")), 2, False),
|
||||
(Receiver("new device", "bolt", True, receiver.Pairing(lock_open=True, new_device=Device())), 1, False),
|
||||
(Receiver("discovering", "bolt", True, receiver.Pairing(lock_open=True)), 1, True),
|
||||
(Receiver("closed", "bolt", True, receiver.Pairing()), 2, False),
|
||||
(Receiver("closed", "bolt", True, receiver.Pairing()), 1, False),
|
||||
(Receiver("closed", "bolt", True, receiver.Pairing()), 0, False),
|
||||
(
|
||||
Receiver(
|
||||
mock.Mock(),
|
||||
"pass1",
|
||||
"bolt",
|
||||
True,
|
||||
|
|
@ -162,7 +158,6 @@ def test_check_lock_state_drawable(assistant, expected_result):
|
|||
),
|
||||
(
|
||||
Receiver(
|
||||
mock.Mock(),
|
||||
"pass2",
|
||||
"bolt",
|
||||
True,
|
||||
|
|
@ -173,7 +168,6 @@ def test_check_lock_state_drawable(assistant, expected_result):
|
|||
),
|
||||
(
|
||||
Receiver(
|
||||
mock.Mock(),
|
||||
"adt",
|
||||
"bolt",
|
||||
True,
|
||||
|
|
@ -185,7 +179,6 @@ def test_check_lock_state_drawable(assistant, expected_result):
|
|||
),
|
||||
(
|
||||
Receiver(
|
||||
mock.Mock(),
|
||||
"adf",
|
||||
"bolt",
|
||||
True,
|
||||
|
|
@ -195,7 +188,7 @@ def test_check_lock_state_drawable(assistant, expected_result):
|
|||
2,
|
||||
False,
|
||||
),
|
||||
(Receiver(mock.Mock(), "add fail", "bolt", False, receiver.Pairing(device_address=2, device_passkey=5)), 2, False),
|
||||
(Receiver("add fail", "bolt", False, receiver.Pairing(device_address=2, device_passkey=5)), 2, False),
|
||||
],
|
||||
)
|
||||
def test_check_lock_state(receiver, count, expected_result):
|
||||
|
|
@ -210,22 +203,22 @@ def test_check_lock_state(receiver, count, expected_result):
|
|||
"receiver, pair_device, set_lock, discover, error",
|
||||
[
|
||||
(
|
||||
Receiver(mock.Mock(), "unifying", "unifying", pairing=receiver.Pairing(lock_open=False, error="error")),
|
||||
Receiver("unifying", "unifying", pairing=receiver.Pairing(lock_open=False, error="error")),
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
None,
|
||||
),
|
||||
(
|
||||
Receiver(mock.Mock(), "unifying", "unifying", pairing=receiver.Pairing(lock_open=True, error="error")),
|
||||
Receiver("unifying", "unifying", pairing=receiver.Pairing(lock_open=True, error="error")),
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
"error",
|
||||
),
|
||||
(Receiver(mock.Mock(), "bolt", "bolt", pairing=receiver.Pairing(lock_open=False, error="error")), 0, 0, 0, None),
|
||||
(Receiver(mock.Mock(), "bolt", "bolt", pairing=receiver.Pairing(lock_open=True, error="error")), 1, 0, 0, "error"),
|
||||
(Receiver(mock.Mock(), "bolt", "bolt", pairing=receiver.Pairing(discovering=True, error="error")), 0, 0, 1, "error"),
|
||||
(Receiver("bolt", "bolt", pairing=receiver.Pairing(lock_open=False, error="error")), 0, 0, 0, None),
|
||||
(Receiver("bolt", "bolt", pairing=receiver.Pairing(lock_open=True, error="error")), 1, 0, 0, "error"),
|
||||
(Receiver("bolt", "bolt", pairing=receiver.Pairing(discovering=True, error="error")), 0, 0, 1, "error"),
|
||||
],
|
||||
)
|
||||
def test_finish(receiver, pair_device, set_lock, discover, error, mocker):
|
||||
|
|
@ -247,6 +240,6 @@ def test_finish(receiver, pair_device, set_lock, discover, error, mocker):
|
|||
def test_create_failure_page(error, mocker):
|
||||
spy_create = mocker.spy(pair_window, "_create_page")
|
||||
|
||||
pair_window._pairing_failed(Assistant(True), Receiver(mock.Mock(), "nano", "nano"), error)
|
||||
pair_window._pairing_failed(Assistant(True), Receiver("nano", "nano"), error)
|
||||
|
||||
assert spy_create.call_count == 1
|
||||
|
|
|
|||
Loading…
Reference in New Issue