init commit for apt-widget
|
@ -0,0 +1,354 @@
|
||||||
|
-------------------------------------------------
|
||||||
|
-- APT Widget for Awesome Window Manager
|
||||||
|
-- Lists containers and allows to manage them
|
||||||
|
-- More details could be found here:
|
||||||
|
-- https://github.com/streetturtle/awesome-wm-widgets/tree/master/apt-widget
|
||||||
|
|
||||||
|
-- @author Pavel Makhov
|
||||||
|
-- @copyright 2020 Pavel Makhov
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
local awful = require("awful")
|
||||||
|
local wibox = require("wibox")
|
||||||
|
local spawn = require("awful.spawn")
|
||||||
|
local naughty = require("naughty")
|
||||||
|
local gears = require("gears")
|
||||||
|
local beautiful = require("beautiful")
|
||||||
|
|
||||||
|
local HOME_DIR = os.getenv("HOME")
|
||||||
|
local WIDGET_DIR = HOME_DIR .. '/.config/awesome/awesome-wm-widgets/apt-widget'
|
||||||
|
local ICONS_DIR = WIDGET_DIR .. '/icons/'
|
||||||
|
|
||||||
|
local LIST_PACKAGES = [[sh -c "apt list --upgradable 2>/dev/null"]]
|
||||||
|
|
||||||
|
--- Utility function to show warning messages
|
||||||
|
local function show_warning(message)
|
||||||
|
naughty.notify{
|
||||||
|
preset = naughty.config.presets.critical,
|
||||||
|
title = 'Docker Widget',
|
||||||
|
text = message}
|
||||||
|
end
|
||||||
|
|
||||||
|
local function ellipsize(text, length)
|
||||||
|
return (text:len() > length and length > 0)
|
||||||
|
and text:sub(0, length - 3) .. '...'
|
||||||
|
or text
|
||||||
|
end
|
||||||
|
|
||||||
|
local wibox_popup = wibox {
|
||||||
|
ontop = true,
|
||||||
|
visible = false,
|
||||||
|
shape = function(cr, width, height)
|
||||||
|
gears.shape.rounded_rect(cr, width, height, 4)
|
||||||
|
end,
|
||||||
|
border_width = 1,
|
||||||
|
border_color = beautiful.bg_focus,
|
||||||
|
max_widget_size = 500,
|
||||||
|
height = 500,
|
||||||
|
width = 300,
|
||||||
|
}
|
||||||
|
|
||||||
|
local apt_widget = wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
id = 'icon',
|
||||||
|
widget = wibox.widget.imagebox
|
||||||
|
},
|
||||||
|
margins = 4,
|
||||||
|
layout = wibox.container.margin
|
||||||
|
},
|
||||||
|
layout = wibox.layout.fixed.horizontal,
|
||||||
|
set_icon = function(self, new_icon)
|
||||||
|
self:get_children_by_id("icon")[1].image = new_icon
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
--yaru-theme-sound/focal-updates,focal-updates 20.04.10.1 all [upgradable from: 20.04.8]
|
||||||
|
local parse_package = function(line)
|
||||||
|
local name,one,nv,type,ov = line:match('(.*)%/(.*)%s(.*)%s(.*)%s%[upgradable from: (.*)]')
|
||||||
|
|
||||||
|
if name == nil then return nil end
|
||||||
|
|
||||||
|
local package = {
|
||||||
|
name = name,
|
||||||
|
new_version = nv,
|
||||||
|
type = type,
|
||||||
|
old_version = ov
|
||||||
|
}
|
||||||
|
return package
|
||||||
|
end
|
||||||
|
|
||||||
|
local function worker(user_args)
|
||||||
|
|
||||||
|
local args = user_args or {}
|
||||||
|
|
||||||
|
local icon = args.icon or ICONS_DIR .. 'white-black.svg'
|
||||||
|
|
||||||
|
apt_widget:set_icon(icon)
|
||||||
|
|
||||||
|
local pointer = 0
|
||||||
|
local min_widgets = 5
|
||||||
|
local carousel = false
|
||||||
|
|
||||||
|
local function rebuild_widget(containers, errors, _, _)
|
||||||
|
|
||||||
|
local to_update = {}
|
||||||
|
|
||||||
|
if errors ~= '' then
|
||||||
|
show_warning(errors)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local rows = wibox.layout.fixed.vertical()
|
||||||
|
rows:connect_signal("button::press", function(_,_,_,button)
|
||||||
|
if carousel then
|
||||||
|
if button == 4 then -- up scrolling
|
||||||
|
local cnt = #rows.children
|
||||||
|
local first_widget = rows.children[1]
|
||||||
|
rows:insert(cnt+1, first_widget)
|
||||||
|
rows:remove(1)
|
||||||
|
elseif button == 5 then -- down scrolling
|
||||||
|
local cnt = #rows.children
|
||||||
|
local last_widget = rows.children[cnt]
|
||||||
|
rows:insert(1, last_widget)
|
||||||
|
rows:remove(cnt+1)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if button == 5 then -- up scrolling
|
||||||
|
if pointer < #rows.children and ((#rows.children - pointer) >= min_widgets) then
|
||||||
|
pointer = pointer + 1
|
||||||
|
rows.children[pointer].visible = false
|
||||||
|
end
|
||||||
|
elseif button == 4 then -- down scrolling
|
||||||
|
if pointer > 0 then
|
||||||
|
rows.children[pointer].visible = true
|
||||||
|
pointer = pointer - 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
local i = 1
|
||||||
|
for line in containers:gmatch("[^\r\n]+") do
|
||||||
|
local package = parse_package(line)
|
||||||
|
|
||||||
|
if package ~= nil then
|
||||||
|
|
||||||
|
local refresh_button = wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
id = 'icon',
|
||||||
|
image = ICONS_DIR .. 'refresh-cw.svg',
|
||||||
|
resize = false,
|
||||||
|
widget = wibox.widget.imagebox
|
||||||
|
},
|
||||||
|
margins = 4,
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
shape = gears.shape.circle,
|
||||||
|
opacity = 0.5,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
local old_cursor, old_wibox
|
||||||
|
refresh_button:connect_signal("mouse::enter", function(c)
|
||||||
|
c:set_opacity(1)
|
||||||
|
c:emit_signal('widget::redraw_needed')
|
||||||
|
local wb = mouse.current_wibox
|
||||||
|
old_cursor, old_wibox = wb.cursor, wb
|
||||||
|
wb.cursor = "hand1"
|
||||||
|
end)
|
||||||
|
refresh_button:connect_signal("mouse::leave", function(c)
|
||||||
|
c:set_opacity(0.5)
|
||||||
|
c:emit_signal('widget::redraw_needed')
|
||||||
|
if old_wibox then
|
||||||
|
old_wibox.cursor = old_cursor
|
||||||
|
old_wibox = nil
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
local row = wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
id = 'checkbox',
|
||||||
|
checked = false,
|
||||||
|
color = beautiful.bg_normal,
|
||||||
|
paddings = 2,
|
||||||
|
shape = gears.shape.circle,
|
||||||
|
forced_width = 20,
|
||||||
|
forced_height = 20,
|
||||||
|
check_color = beautiful.fg_urgent,
|
||||||
|
border_color = beautiful.bg_urgent,
|
||||||
|
border_width = 1,
|
||||||
|
widget = wibox.widget.checkbox
|
||||||
|
},
|
||||||
|
valign = 'center',
|
||||||
|
layout = wibox.container.place,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
id = 'name',
|
||||||
|
markup = '<b>' .. package['name'] .. '</b>',
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
halign = 'left',
|
||||||
|
layout = wibox.container.place
|
||||||
|
},
|
||||||
|
{
|
||||||
|
refresh_button,
|
||||||
|
halign = 'right',
|
||||||
|
valigh = 'center',
|
||||||
|
fill_horizontal = true,
|
||||||
|
layout = wibox.container.place,
|
||||||
|
},
|
||||||
|
spacing = 8,
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
},
|
||||||
|
margins = 8,
|
||||||
|
layout = wibox.container.margin
|
||||||
|
},
|
||||||
|
id = 'row',
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
widget = wibox.container.background,
|
||||||
|
click = function(self, checked)
|
||||||
|
local a = self:get_children_by_id('checkbox')[1]
|
||||||
|
if checked == nil then
|
||||||
|
a:set_checked(not a.checked)
|
||||||
|
else
|
||||||
|
a:set_checked(checked)
|
||||||
|
end
|
||||||
|
|
||||||
|
if a.checked then
|
||||||
|
to_update[package['name']] = self
|
||||||
|
else
|
||||||
|
to_update[package['name']] = false
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
update = function(self)
|
||||||
|
refresh_button:get_children_by_id('icon')[1]:set_image(ICONS_DIR .. 'watch.svg')
|
||||||
|
self:get_children_by_id('name')[1]:set_opacity(0.4)
|
||||||
|
self:get_children_by_id('name')[1]:emit_signal('widget::redraw_needed')
|
||||||
|
|
||||||
|
spawn.easy_async(string.format([[sh -c 'yes | aptdcon --hide-terminal -u %s']], package['name']), function(stdout, stderr)
|
||||||
|
rows:remove_widgets(self)
|
||||||
|
end)
|
||||||
|
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
row:connect_signal("mouse::enter", function(c)
|
||||||
|
c:set_bg(beautiful.bg_focus)
|
||||||
|
end)
|
||||||
|
row:connect_signal("mouse::leave", function(c)
|
||||||
|
c:set_bg(beautiful.bg_normal)
|
||||||
|
end)
|
||||||
|
|
||||||
|
row:connect_signal("button::press", function(c, _, _, button)
|
||||||
|
if button == 1 then c:click() end
|
||||||
|
end)
|
||||||
|
|
||||||
|
refresh_button:buttons(awful.util.table.join(awful.button({}, 1, function()
|
||||||
|
row:update()
|
||||||
|
end)))
|
||||||
|
|
||||||
|
rows:add(row)
|
||||||
|
end
|
||||||
|
|
||||||
|
i = i + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local header_checkbox = wibox.widget {
|
||||||
|
checked = false,
|
||||||
|
color = beautiful.bg_normal,
|
||||||
|
paddings = 2,
|
||||||
|
shape = gears.shape.circle,
|
||||||
|
forced_width = 20,
|
||||||
|
forced_height = 20,
|
||||||
|
check_color = beautiful.fg_urgent,
|
||||||
|
border_color = beautiful.bg_urgent,
|
||||||
|
border_width = 1,
|
||||||
|
widget = wibox.widget.checkbox
|
||||||
|
}
|
||||||
|
header_checkbox:connect_signal("button::press", function(c)
|
||||||
|
c:set_checked(not c.checked)
|
||||||
|
local cbs = rows.children
|
||||||
|
for _,v in ipairs(cbs) do
|
||||||
|
v:click(c.checked)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
local header_refresh_icon = wibox.widget {
|
||||||
|
image = ICONS_DIR .. 'refresh-cw.svg',
|
||||||
|
resize = false,
|
||||||
|
widget = wibox.widget.imagebox
|
||||||
|
}
|
||||||
|
header_refresh_icon:buttons(awful.util.table.join(awful.button({}, 1, function()
|
||||||
|
for i,v in pairs(to_update) do
|
||||||
|
if v ~= nil then
|
||||||
|
v:update()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)))
|
||||||
|
|
||||||
|
local header_row = wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
header_checkbox,
|
||||||
|
valign = 'center',
|
||||||
|
layout = wibox.container.place,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
id = 'name',
|
||||||
|
markup = '<b>APT</b>',
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
halign = 'center',
|
||||||
|
layout = wibox.container.place
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header_refresh_icon,
|
||||||
|
halign = 'right',
|
||||||
|
valigh = 'center',
|
||||||
|
layout = wibox.container.place,
|
||||||
|
},
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
|
},
|
||||||
|
margins = 8,
|
||||||
|
layout = wibox.container.margin
|
||||||
|
},
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
wibox_popup:setup {
|
||||||
|
header_row,
|
||||||
|
rows,
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
apt_widget:buttons(
|
||||||
|
awful.util.table.join(
|
||||||
|
awful.button({}, 1, function()
|
||||||
|
if wibox_popup.visible then
|
||||||
|
wibox_popup.visible = not wibox_popup.visible
|
||||||
|
else
|
||||||
|
spawn.easy_async(LIST_PACKAGES,
|
||||||
|
function(stdout, stderr)
|
||||||
|
rebuild_widget(stdout, stderr)
|
||||||
|
wibox_popup.visible = true
|
||||||
|
awful.placement.top(wibox_popup, { margins = { top = 20 }, parent = mouse})
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return apt_widget
|
||||||
|
end
|
||||||
|
|
||||||
|
return setmetatable(apt_widget, { __call = function(_, ...) return worker(...) end })
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="circle_of_friends__x5F__black"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="425.197px"
|
||||||
|
height="425.197px" viewBox="0 0 425.197 425.197" enable-background="new 0 0 425.197 425.197" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<path d="M354.331,212.595c0,78.279-63.45,141.735-141.729,141.735c-78.279,0-141.735-63.456-141.735-141.735
|
||||||
|
c0-78.274,63.457-141.728,141.735-141.728C290.881,70.867,354.331,134.32,354.331,212.595z"/>
|
||||||
|
<path fill="#FFFFFF" d="M139.043,212.595c0,10.064-8.159,18.225-18.23,18.225c-10.059,0-18.218-8.16-18.218-18.225
|
||||||
|
c0-10.06,8.159-18.219,18.218-18.219C130.884,194.376,139.043,202.535,139.043,212.595z M242.717,301.201
|
||||||
|
c5.033,8.709,16.173,11.696,24.889,6.67c8.715-5.033,11.701-16.179,6.669-24.895c-5.032-8.715-16.173-11.695-24.888-6.663
|
||||||
|
C240.671,281.346,237.685,292.486,242.717,301.201z M274.274,142.219c5.032-8.717,2.052-19.86-6.669-24.887
|
||||||
|
c-8.71-5.032-19.855-2.046-24.889,6.667c-5.032,8.715-2.046,19.857,6.67,24.889C258.102,153.92,269.248,150.934,274.274,142.219z
|
||||||
|
M212.602,160.632c27.153,0,49.434,20.814,51.761,47.364l26.372-0.416c-1.252-19.727-9.809-37.469-22.995-50.551
|
||||||
|
c-6.98,2.693-15.079,2.327-22.066-1.71c-6.992-4.037-11.359-10.871-12.514-18.275c-6.554-1.78-13.448-2.733-20.558-2.733
|
||||||
|
c-12.471,0-24.259,2.916-34.727,8.103l12.832,23.043C197.357,162.367,204.784,160.632,212.602,160.632z M160.633,212.595
|
||||||
|
c0-17.577,8.734-33.121,22.097-42.52l-13.54-22.634c-15.684,10.474-27.367,26.451-32.296,45.183
|
||||||
|
c5.833,4.697,9.57,11.897,9.57,19.972c0,8.08-3.738,15.28-9.57,19.978c4.929,18.731,16.612,34.708,32.296,45.188l13.54-22.634
|
||||||
|
C169.367,245.722,160.633,230.184,160.633,212.595z M212.602,264.568c-7.817,0-15.244-1.734-21.895-4.83l-12.832,23.043
|
||||||
|
c10.468,5.191,22.255,8.104,34.727,8.104c7.109,0,14.004-0.946,20.558-2.729c1.154-7.409,5.521-14.243,12.514-18.273
|
||||||
|
c6.987-4.037,15.086-4.404,22.066-1.711c13.187-13.088,21.743-30.83,22.995-50.557l-26.372-0.409
|
||||||
|
C262.035,243.749,239.755,264.568,212.602,264.568z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
|
After Width: | Height: | Size: 365 B |
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="circle_of_friends__x5F__orange"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="425.197px"
|
||||||
|
height="425.197px" viewBox="0 0 425.197 425.197" enable-background="new 0 0 425.197 425.197" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<path fill="#E95420" d="M354.331,212.595c0,78.279-63.45,141.735-141.729,141.735c-78.279,0-141.735-63.456-141.735-141.735
|
||||||
|
c0-78.274,63.457-141.728,141.735-141.728C290.881,70.867,354.331,134.32,354.331,212.595z"/>
|
||||||
|
<path fill="#FFFFFF" d="M139.043,212.595c0,10.064-8.159,18.225-18.23,18.225c-10.059,0-18.218-8.16-18.218-18.225
|
||||||
|
c0-10.06,8.159-18.219,18.218-18.219C130.884,194.376,139.043,202.535,139.043,212.595z M242.717,301.201
|
||||||
|
c5.033,8.709,16.173,11.696,24.889,6.67c8.715-5.033,11.701-16.179,6.669-24.895c-5.032-8.715-16.173-11.695-24.888-6.663
|
||||||
|
C240.671,281.346,237.685,292.486,242.717,301.201z M274.274,142.219c5.032-8.717,2.052-19.86-6.669-24.887
|
||||||
|
c-8.71-5.032-19.855-2.046-24.889,6.667c-5.032,8.715-2.046,19.857,6.67,24.889C258.102,153.92,269.248,150.934,274.274,142.219z
|
||||||
|
M212.602,160.632c27.153,0,49.434,20.814,51.761,47.364l26.372-0.416c-1.252-19.727-9.809-37.469-22.995-50.551
|
||||||
|
c-6.98,2.693-15.079,2.327-22.066-1.71c-6.992-4.037-11.359-10.871-12.514-18.275c-6.554-1.78-13.448-2.733-20.558-2.733
|
||||||
|
c-12.471,0-24.259,2.916-34.727,8.103l12.832,23.043C197.357,162.367,204.784,160.632,212.602,160.632z M160.633,212.595
|
||||||
|
c0-17.577,8.734-33.121,22.097-42.52l-13.54-22.634c-15.684,10.474-27.367,26.451-32.296,45.183
|
||||||
|
c5.833,4.697,9.57,11.897,9.57,19.972c0,8.08-3.738,15.28-9.57,19.978c4.929,18.731,16.612,34.708,32.296,45.188l13.54-22.634
|
||||||
|
C169.367,245.722,160.633,230.184,160.633,212.595z M212.602,264.568c-7.817,0-15.244-1.734-21.895-4.83l-12.832,23.043
|
||||||
|
c10.468,5.191,22.255,8.104,34.727,8.104c7.109,0,14.004-0.946,20.558-2.729c1.154-7.409,5.521-14.243,12.514-18.273
|
||||||
|
c6.987-4.037,15.086-4.404,22.066-1.711c13.187-13.088,21.743-30.83,22.995-50.557l-26.372-0.409
|
||||||
|
C262.035,243.749,239.755,264.568,212.602,264.568z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#ECEFF4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-refresh-cw"><polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path></svg>
|
After Width: | Height: | Size: 395 B |
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#ECEFF4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-watch"><circle cx="12" cy="12" r="7"></circle><polyline points="12 9 12 12 13.5 13.5"></polyline><path d="M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83"></path></svg>
|
After Width: | Height: | Size: 457 B |
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="circle_of_friends__x5F__white"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="425.197px"
|
||||||
|
height="425.197px" viewBox="0 0 425.197 425.197" enable-background="new 0 0 425.197 425.197" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M354.331,212.595c0,78.279-63.45,141.735-141.729,141.735c-78.279,0-141.735-63.456-141.735-141.735
|
||||||
|
c0-78.274,63.457-141.728,141.735-141.728C290.881,70.867,354.331,134.32,354.331,212.595z"/>
|
||||||
|
<path d="M139.043,212.595c0,10.064-8.159,18.225-18.23,18.225c-10.059,0-18.218-8.16-18.218-18.225
|
||||||
|
c0-10.06,8.159-18.219,18.218-18.219C130.884,194.376,139.043,202.535,139.043,212.595z M242.717,301.201
|
||||||
|
c5.033,8.709,16.173,11.696,24.889,6.67c8.715-5.033,11.701-16.179,6.669-24.895c-5.032-8.715-16.173-11.695-24.888-6.663
|
||||||
|
C240.671,281.346,237.685,292.486,242.717,301.201z M274.274,142.219c5.032-8.717,2.052-19.86-6.669-24.887
|
||||||
|
c-8.71-5.032-19.855-2.046-24.889,6.667c-5.032,8.715-2.046,19.857,6.67,24.889C258.102,153.92,269.248,150.934,274.274,142.219z
|
||||||
|
M212.602,160.632c27.153,0,49.434,20.814,51.761,47.364l26.372-0.416c-1.252-19.727-9.809-37.469-22.995-50.551
|
||||||
|
c-6.98,2.693-15.079,2.327-22.066-1.71c-6.992-4.037-11.359-10.871-12.514-18.275c-6.554-1.78-13.448-2.733-20.558-2.733
|
||||||
|
c-12.471,0-24.259,2.916-34.727,8.103l12.832,23.043C197.357,162.367,204.784,160.632,212.602,160.632z M160.633,212.595
|
||||||
|
c0-17.577,8.734-33.121,22.097-42.52l-13.54-22.634c-15.684,10.474-27.367,26.451-32.296,45.183
|
||||||
|
c5.833,4.697,9.57,11.897,9.57,19.972c0,8.08-3.738,15.28-9.57,19.978c4.929,18.731,16.612,34.708,32.296,45.188l13.54-22.634
|
||||||
|
C169.367,245.722,160.633,230.184,160.633,212.595z M212.602,264.568c-7.817,0-15.244-1.734-21.895-4.83l-12.832,23.043
|
||||||
|
c10.468,5.191,22.255,8.104,34.727,8.104c7.109,0,14.004-0.946,20.558-2.729c1.154-7.409,5.521-14.243,12.514-18.273
|
||||||
|
c6.987-4.037,15.086-4.404,22.066-1.711c13.187-13.088,21.743-30.83,22.995-50.557l-26.372-0.409
|
||||||
|
C262.035,243.749,239.755,264.568,212.602,264.568z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="circle_of_friends__x5F__white_x26_orange"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="425.197px"
|
||||||
|
height="425.197px" viewBox="0 0 425.197 425.197" enable-background="new 0 0 425.197 425.197" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<path fill="#FFFFFF" d="M354.331,212.595c0,78.279-63.45,141.735-141.729,141.735c-78.279,0-141.735-63.456-141.735-141.735
|
||||||
|
c0-78.274,63.457-141.728,141.735-141.728C290.881,70.867,354.331,134.32,354.331,212.595z"/>
|
||||||
|
<path fill="#E95420" d="M139.043,212.595c0,10.064-8.159,18.225-18.23,18.225c-10.059,0-18.218-8.16-18.218-18.225
|
||||||
|
c0-10.06,8.159-18.219,18.218-18.219C130.884,194.376,139.043,202.535,139.043,212.595z M242.717,301.201
|
||||||
|
c5.033,8.709,16.173,11.696,24.889,6.67c8.715-5.033,11.701-16.179,6.669-24.895c-5.032-8.715-16.173-11.695-24.888-6.663
|
||||||
|
C240.671,281.346,237.685,292.486,242.717,301.201z M274.274,142.219c5.032-8.717,2.052-19.86-6.669-24.887
|
||||||
|
c-8.71-5.032-19.855-2.046-24.889,6.667c-5.032,8.715-2.046,19.857,6.67,24.889C258.102,153.92,269.248,150.934,274.274,142.219z
|
||||||
|
M212.602,160.632c27.153,0,49.434,20.814,51.761,47.364l26.372-0.416c-1.252-19.727-9.809-37.469-22.995-50.551
|
||||||
|
c-6.98,2.693-15.079,2.327-22.066-1.71c-6.992-4.037-11.359-10.871-12.514-18.275c-6.554-1.78-13.448-2.733-20.558-2.733
|
||||||
|
c-12.471,0-24.259,2.916-34.727,8.103l12.832,23.043C197.357,162.367,204.784,160.632,212.602,160.632z M160.633,212.595
|
||||||
|
c0-17.577,8.734-33.121,22.097-42.52l-13.54-22.634c-15.684,10.474-27.367,26.451-32.296,45.183
|
||||||
|
c5.833,4.697,9.57,11.897,9.57,19.972c0,8.08-3.738,15.28-9.57,19.978c4.929,18.731,16.612,34.708,32.296,45.188l13.54-22.634
|
||||||
|
C169.367,245.722,160.633,230.184,160.633,212.595z M212.602,264.568c-7.817,0-15.244-1.734-21.895-4.83l-12.832,23.043
|
||||||
|
c10.468,5.191,22.255,8.104,34.727,8.104c7.109,0,14.004-0.946,20.558-2.729c1.154-7.409,5.521-14.243,12.514-18.273
|
||||||
|
c6.987-4.037,15.086-4.404,22.066-1.711c13.187-13.088,21.743-30.83,22.995-50.557l-26.372-0.409
|
||||||
|
C262.035,243.749,239.755,264.568,212.602,264.568z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.3 KiB |