making awesome more awesome

This commit is contained in:
Chris Cochrun 2020-06-03 21:27:00 -05:00
parent 0a7fe89729
commit 3643ba277e
361 changed files with 41182 additions and 26 deletions

View file

@ -97,7 +97,7 @@ font:
# - (macOS) Menlo # - (macOS) Menlo
# - (Linux/BSD) monospace # - (Linux/BSD) monospace
# - (Windows) Consolas # - (Windows) Consolas
family: MesloLGS NF family: VictorMono Nerd Font
# The `style` can be specified to pick a specific face. # The `style` can be specified to pick a specific face.
style: Regular style: Regular
@ -108,7 +108,7 @@ font:
# #
# If the bold family is not specified, it will fall back to the # If the bold family is not specified, it will fall back to the
# value specified for the normal font. # value specified for the normal font.
family: MesloLGS NF family: VictorMono Nerd Font
# The `style` can be specified to pick a specific face. # The `style` can be specified to pick a specific face.
style: Bold style: Bold
@ -119,7 +119,7 @@ font:
# #
# If the italic family is not specified, it will fall back to the # If the italic family is not specified, it will fall back to the
# value specified for the normal font. # value specified for the normal font.
family: MesloLGS NF family: VictorMono Nerd Font
# The `style` can be specified to pick a specific face. # The `style` can be specified to pick a specific face.
style: Italic style: Italic
@ -315,7 +315,7 @@ colors:
# #
# Window opacity as a floating point number from `0.0` to `1.0`. # Window opacity as a floating point number from `0.0` to `1.0`.
# The value `0.0` is completely transparent and `1.0` is opaque. # The value `0.0` is completely transparent and `1.0` is opaque.
background_opacity: 0.45 background_opacity: 0.60
#selection: #selection:
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"

@ -0,0 +1 @@
Subproject commit 4204fa824181a90c09c4306481a7fa2538bcce52

35
awesome/binaries/profile-image Executable file
View file

@ -0,0 +1,35 @@
#!/usr/bin/env bash
# Depends: Mugshot
# Written by manilarome
awesome_dir="${HOME}/.config/awesome/"
user_profile_dir="${awesome_dir}/configuration/user-profile/"
accountsservice_user_icons="/var/lib/AccountsService/icons/${USER}"
# Check if user image exists
if [ -f "${user_profile_dir}${USER}.png" ];
then
if [ -f "${accountsservice_user_icons}" ];
then
if ! cmp --silent "${user_profile_dir}${USER}.png" "${accountsservice_user_icons}";
then
cp "${accountsservice_user_icons}" "${user_profile_dir}${USER}.png"
fi
printf "${user_profile_dir}${USER}.png"
else
printf "${user_profile_dir}${USER}.png"
fi
exit;
else
if [ -f "${accountsservice_user_icons}" ];
then
cp "${accountsservice_user_icons}" "${user_profile_dir}${USER}.png"
printf "${user_profile_dir}${USER}.png"
exit;
else
printf "default"
exit;
fi
fi

120
awesome/binaries/snap Executable file
View file

@ -0,0 +1,120 @@
#!/usr/bin/env bash
# ----------------------------------------------------------------------------
# --- Simple screenshot script using maim and AwesomeWM API
# --
# -- Accepts `area` and `full` string args
# --
# -- For more details check `man maim`
# --
# -- @author manilarome &lt;gerome.matilla07@gmail.com&gt;
# -- @copyright 2020 manilarome
# -- @script snap
# ----------------------------------------------------------------------------
screenshot_dir=$(xdg-user-dir PICTURES)/Screenshots/
# Check save directory
# Create it if it doesn't exist
function check_dir() {
if [ ! -d "$screenshot_dir" ];
then
mkdir -p "$screenshot_dir"
fi
}
# Main function
function shot() {
check_dir
file_loc="${screenshot_dir}$(date +%Y%m%d_%H%M%S).png"
maim_command="$1"
notif_message="$2"
# Execute maim command
${maim_command} "${file_loc}"
# Exit if the user cancels the screenshot
# So it means there's no new screenshot image file
if [ ! -f "${file_loc}" ];
then
exit;
fi
# Copy to clipboard
xclip -selection clipboard -t image/png -i "${screenshot_dir}"/`ls -1 -t "${screenshot_dir}" | head -1` &
awesome-client "
-- IMPORTANT NOTE: THIS PART OF THE SCRIPT IS LUA!
naughty = require('naughty')
awful = require('awful')
beautiful = require('beautiful')
dpi = beautiful.xresources.apply_dpi
local open_image = naughty.action {
name = 'Open',
icon_only = false,
}
local open_folder = naughty.action {
name = 'Open Folder',
icon_only = false,
}
local delete_image = naughty.action {
name = 'Delete',
icon_only = false,
}
-- Execute the callback when 'Open' is pressed
open_image:connect_signal('invoked', function()
awful.spawn('xdg-open ' .. '${file_loc}', false)
end)
open_folder:connect_signal('invoked', function()
awful.spawn('xdg-open ' .. '${screenshot_dir}', false)
end)
-- Execute the callback when 'Delete' is pressed
delete_image:connect_signal('invoked', function()
awful.spawn('gio trash ' .. '${file_loc}', false)
end)
-- Show notification
naughty.notification ({
app_name = 'Screenshot Tool',
icon = '${file_loc}',
timeout = 10,
title = '<b>Snap!</b>',
message = '${notif_message}',
actions = { open_image, open_folder, delete_image }
})
"
}
# Check the args passed
if [ -z "$1" ] || ([ "$1" != 'full' ] && [ "$1" != 'area' ]);
then
echo "
Requires an argument:
area - Area screenshot
full - Fullscreen screenshot
Example:
./snap area
./snap full
"
elif [ "$1" = 'full' ];
then
msg="Full screenshot saved and copied to clipboard!"
shot 'maim -u -m 1' "${msg}"
elif [ "$1" = 'area' ];
then
msg='Area screenshot saved and copied to clipboard!'
shot 'maim -u -s -n -m 1' "${msg}"
fi

View file

@ -0,0 +1,67 @@
local filesystem = require('gears.filesystem')
local config_dir = filesystem.get_configuration_dir()
local bin_dir = config_dir .. 'binaries/'
return {
-- The default applications that we will use in keybindings and widgets
default = {
terminal = 'kitty', -- Terminal Emulator
text_editor = 'subl3', -- GUI Text Editor
web_browser = 'firefox', -- Web browser
file_manager = 'dolphin', -- GUI File manager
network_manager = 'nm-connection-editor', -- Network manager
bluetooth_manager = 'blueman-manager', -- Bluetooth manager
power_manager = 'xfce4-power-manager', -- Power manager
package_manager = 'pamac-manager', -- GUI Package manager
lock = 'awesome-client "awesome.emit_signal(\'module::lockscreen_show\')"', -- Lockscreen
quake = 'kitty --name QuakeTerminal', -- Quake-like Terminal
rofiglobal = 'rofi -dpi ' .. screen.primary.dpi ..
' -show "Global Search" -modi "Global Search":' .. config_dir ..
'/configuration/rofi/sidebar/rofi-spotlight.sh' ..
' -theme ' .. config_dir ..
'/configuration/rofi/sidebar/rofi.rasi', -- Rofi Web Search
rofiappmenu = 'rofi -dpi ' .. screen.primary.dpi ..
' -show drun -theme ' .. config_dir ..
'/configuration/rofi/appmenu/rofi.rasi' -- Application Menu
-- You can add more default applications here
},
-- List of apps to start once on start-up
-- auto-start.lua module will start these
run_on_start_up = {
'picom -b --experimental-backends --dbus --config ' ..
config_dir .. '/configuration/picom.conf', -- Compositor
'blueman-applet', -- Bluetooth tray icon
'mpd', -- Music Server
'xfce4-power-manager', -- Power manager
'/usr/lib/polkit-kde-authentication-agent-1 &' ..
' eval $(gnome-keyring-daemon -s --components=pkcs11,secrets,ssh,gpg)', -- Credential manager
'xrdb $HOME/.Xresources', -- Load X Colors
'nm-applet', -- NetworkManager Applet
'pulseeffects --gapplication-service', -- Sound Equalizer
[[
xidlehook --not-when-fullscreen --not-when-audio --timer 600 \
"awesome-client 'awesome.emit_signal(\"module::lockscreen_show\")'" ""
]] -- Auto lock timer
-- You can add more start-up applications here
},
-- List of binaries/shell scripts that will execute a certain task
bins = {
full_screenshot = bin_dir .. 'snap full', -- Full Screenshot
area_screenshot = bin_dir .. 'snap area', -- Area Selected Screenshot
update_profile = bin_dir .. 'profile-image' -- Update profile picture
}
}

View file

@ -0,0 +1,30 @@
local awful = require('awful')
local modkey = require('configuration.keys.mod').modKey
return awful.util.table.join(
awful.button(
{},
1,
function(c)
_G.client.focus = c
c:raise()
end
),
awful.button({modkey}, 1, awful.mouse.client.move),
awful.button({modkey}, 3, awful.mouse.client.resize),
awful.button(
{modkey},
4,
function()
awful.layout.inc(1)
end
),
awful.button(
{modkey},
5,
function()
awful.layout.inc(-1)
end
)
)

View file

@ -0,0 +1 @@
require('configuration.client.rules')

View file

@ -0,0 +1,256 @@
local awful = require('awful')
local gears = require('gears')
require('awful.autofocus')
local modkey = require('configuration.keys.mod').modKey
local altkey = require('configuration.keys.mod').altKey
local dpi = require('beautiful').xresources.apply_dpi
local clientKeys =
awful.util.table.join(
-- toggle fullscreen
awful.key(
{modkey},
'f',
function(c)
-- Toggle fullscreen
c.fullscreen = not c.fullscreen
c:raise()
end,
{description = 'toggle fullscreen', group = 'client'}
),
-- close client
awful.key(
{modkey},
'q',
function(c)
c:kill()
end,
{description = 'close', group = 'client'}
),
-- Default client focus
awful.key(
{modkey},
'd',
function()
awful.client.focus.byidx(1)
end,
{description = 'focus next by index', group = 'client'}
),
awful.key(
{modkey},
'a',
function()
awful.client.focus.byidx(-1)
end,
{description = 'focus previous by index', group = 'client'}
),
awful.key(
{ modkey, "Shift" },
"d",
function ()
awful.client.swap.byidx(1)
end,
{description = "swap with next client by index", group = "client"}
),
awful.key(
{ modkey, "Shift" },
"a",
function ()
awful.client.swap.byidx(-1)
end,
{description = "swap with next client by index", group = "client"}
),
awful.key(
{modkey},
'u',
awful.client.urgent.jumpto,
{description = 'jump to urgent client', group = 'client'}
),
awful.key(
{modkey},
'Tab',
function()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end,
{description = 'go back', group = 'client'}
),
awful.key(
{modkey},
'n',
function(c)
c.minimized = true
end,
{description = "minimize client", group = 'client'}
),
-- move floating client to center
awful.key(
{ modkey, "Shift" },
"c",
function(c)
local focused = awful.screen.focused()
awful.placement.centered(c, {
honor_workarea = true
})
end,
{description = 'align a client to the center of the focused screen.', group = "client"}
),
-- toggle client floating mode
awful.key(
{modkey},
'c',
function(c)
c.fullscreen = false
c.maximized = false
c.floating = not c.floating
c:raise()
end,
{description = 'toggle floating', group = 'client'}
),
-- move client position
awful.key(
{modkey},
'Up',
function(c)
if c.floating then
c:relative_move(0, dpi(-10), 0, 0)
end
end,
{description = 'move floating client up by 10 px', group = 'client'}
),
awful.key(
{modkey},
'Down',
function(c)
if c.floating then
c:relative_move(0, dpi(10), 0, 0)
end
end,
{description = 'move floating client down by 10 px', group = 'client'}
),
awful.key(
{modkey},
'Left',
function(c)
if c.floating then
c:relative_move(dpi(-10), 0, 0, 0)
end
end,
{description = 'move floating client to the left by 10 px', group = 'client'}
),
awful.key(
{modkey},
'Right',
function(c)
if c.floating then
c:relative_move(dpi(10), 0, 0, 0)
end
end,
{description = 'move floating client to the right by 10 px', group = 'client'}
),
-- Increasing floating client size
awful.key(
{modkey, 'Shift'},
'Up',
function(c)
if c.floating then
c:relative_move(0, dpi(-10), 0, dpi(10))
end
end,
{description = 'increase floating client size vertically by 10 px up', group = 'client'}
),
awful.key(
{modkey, 'Shift'},
'Down',
function(c)
if c.floating then
c:relative_move(0, 0, 0, dpi(10))
end
end,
{description = 'increase floating client size vertically by 10 px down', group = 'client'}
),
awful.key(
{modkey, 'Shift'},
'Left',
function(c)
if c.floating then
c:relative_move(dpi(-10), 0, dpi(10), 0)
end
end,
{description = 'increase floating client size horizontally by 10 px left', group = 'client'}
),
awful.key(
{modkey, 'Shift'},
'Right',
function(c)
if c.floating then
c:relative_move(0, 0, dpi(10), 0)
end
end,
{description = 'increase floating client size horizontally by 10 px right', group = 'client'}
),
-- Decreasing floating client size
awful.key(
{modkey, 'Control'},
'Up',
function(c)
if c.floating and c.height > 10 then
c:relative_move(0, 0, 0, dpi(-10))
end
end,
{description = 'decrease floating client size vertically by 10 px up', group = 'client'}
),
awful.key(
{modkey, 'Control'},
'Down',
function(c)
if c.floating then
local c_height = c.height
c:relative_move(0, 0, 0, dpi(-10))
if c.height ~= c_height and c.height > 10 then
c:relative_move(0, dpi(10), 0, 0)
end
end
end,
{description = 'decrease floating client size vertically by 10 px down', group = 'client'}
),
awful.key(
{modkey, 'Control'},
'Left',
function(c)
if c.floating and c.width > 10 then
c:relative_move(0, 0, dpi(-10), 0)
end
end,
{description = 'decrease floating client size horizontally by 10 px left', group = 'client'}
),
awful.key(
{modkey, 'Control'},
'Right',
function(c)
if c.floating then
local c_width = c.width
c:relative_move(0, 0, dpi(-10), 0)
if c.width ~= c_width and c.width > 10 then
c:relative_move(dpi(10), 0 , 0, 0)
end
end
end,
{description = 'decrease floating client size horizontally by 10 px right', group = 'client'}
)
)
return clientKeys

View file

@ -0,0 +1,415 @@
local awful = require('awful')
local gears = require('gears')
local ruled = require("ruled")
local beautiful = require('beautiful')
local client_keys = require('configuration.client.keys')
local client_buttons = require('configuration.client.buttons')
ruled.client.connect_signal(
"request::rules",
function()
-- All clients will match this rule.
ruled.client.append_rule {
id = "global",
rule = { },
properties = {
focus = awful.client.focus.filter,
raise = true,
floating = false,
maximized = false,
above = false,
below = false,
ontop = false,
sticky = false,
maximized_horizontal = false,
maximized_vertical = false,
round_corners = true,
keys = client_keys,
buttons = client_buttons,
screen = awful.screen.preferred,
placement = awful.placement.no_overlap + awful.placement.no_offscreen
}
}
-- Dialogs
ruled.client.append_rule {
id = "dialog",
rule_any = {
type = { "dialog" },
class = { "Wicd-client.py", "calendar.google.com" }
},
properties = {
titlebars_enabled = true,
floating = true,
above = true,
draw_backdrop = true,
skip_decoration = true,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, beautiful.client_radius)
end,
placement = awful.placement.centered
}
}
-- Modals
ruled.client.append_rule {
id = "dialog",
rule_any = {
type = { "modal" }
},
properties = {
titlebars_enabled = true,
floating = true,
above = true,
draw_backdrop = true,
skip_decoration = true,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, beautiful.client_radius)
end,
placement = awful.placement.centered
}
}
-- Utilities
ruled.client.append_rule {
id = "utility",
rule_any = {
type = { "utility" }
},
properties = {
titlebars_enabled = false,
floating = true,
hide_titlebars = true,
draw_backdrop = false,
skip_decoration = true,
placement = awful.placement.centered
}
}
-- Splash
ruled.client.append_rule {
id = "splash",
rule_any = {
type = { "splash" }
},
properties = {
titlebars_enabled = false,
floating = true,
above = true,
hide_titlebars = true,
draw_backdrop = false,
skip_decoration = true,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, beautiful.client_radius)
end,
placement = awful.placement.centered
}
}
-- terminal emulators
ruled.client.append_rule {
id = "terminals",
rule_any = {
class = {
"URxvt",
"XTerm",
"UXTerm",
"kitty",
"K3rmit"
}
},
except_any = {
instance = { "QuakeTerminal" }
},
properties = {
tag = '1',
switchtotag = true,
draw_backdrop = false,
size_hints_honor = false
}
}
-- Browsers
ruled.client.append_rule {
id = "web_browsers",
rule_any = {
class = {
"firefox",
"Tor Browser",
"discord",
"Chromium",
"Google-chrome"
}
},
properties = {
tag = '2'
}
}
-- text editors
ruled.client.append_rule {
id = "text_editors",
rule_any = {
class = {
"Geany",
"Atom",
"Subl3",
"code-oss"
},
name = {
"LibreOffice",
"libreoffice"
}
},
properties = {
tag = '3'
}
}
-- File managers
ruled.client.append_rule {
id = "file_managers",
rule_any = {
class = {
"dolphin",
"ark",
"Nemo",
"File-roller"
}
},
properties = {
tag = '4',
switchtotag = true
}
}
-- Multimedia
ruled.client.append_rule {
id = "multimedia",
rule_any = {
class = {
"vlc",
"Spotify"
}
},
properties = {
tag = '5',
switchtotag = true,
draw_backdrop = false
}
}
-- Gaming
ruled.client.append_rule {
id = "gaming",
rule_any = {
class = {
"Wine",
"dolphin-emu",
"Steam",
"Citra",
"SuperTuxKart"
},
name = { "Steam" }
},
properties = {
tag = '6',
skip_decoration = true,
draw_backdrop = false,
switchtotag = true,
floating = true,
hide_titlebars = true,
placement = awful.placement.centered
}
}
-- Graphics Editing
ruled.client.append_rule {
id = "graphics_editors",
rule_any = {
class = {
"Gimp-2.10",
"Inkscape",
"Flowblade"
}
},
properties = {
tag = '7'
}
}
-- Sandboxes and VMs
ruled.client.append_rule {
id = "sandbox",
rule_any = {
class = {
"VirtualBox Manage",
"VirtualBox Machine"
}
},
properties = {
tag = '8'
}
}
-- IDEs and Tools
ruled.client.append_rule {
id = "ide",
rule_any = {
class = {
"Oomox",
"Unity",
"UnityHub",
"jetbrains-studio"
}
},
properties = {
tag = '9',
skip_decoration = true
}
}
-- Image viewers with splash-like behaviour
ruled.client.append_rule {
id = "splash_like",
rule_any = {
class = {
"feh",
"Pqiv",
"Sxiv"
},
name = {"Discord Updater"}
},
properties = {
skip_decoration = true,
hide_titlebars = true,
floating = true,
ontop = true,
placement = awful.placement.centered
}
}
-- Splash-like but with titlebars enabled
ruled.client.append_rule {
id = "instances",
rule_any = {
instance = {
"file_progress",
"Popup",
"nm-connection-editor",
},
class = {
"scrcpy" ,
"Mugshot",
"Pulseeffects"
}
},
properties = {
skip_decoration = true,
round_corners = true,
ontop = true,
floating = true,
draw_backdrop = false,
focus = awful.client.focus.filter,
raise = true,
keys = client_keys,
buttons = client_buttons,
placement = awful.placement.centered
}
}
-- Fullsreen
ruled.client.append_rule {
id = "fullscreen",
rule_any = {
class = {
"SuperTuxKart"
}
},
properties = {
skip_decoration = true,
round_corners = false,
ontop = true,
floating = false,
fullscreen = true,
draw_backdrop = false,
raise = true,
keys = client_keys,
buttons = client_buttons,
placement = awful.placement.centered
}
}
end
)
-- Normally we'd do this with a rule, but other apps like spotify and supertuxkart doesn't set its class or name
-- until after it starts up, so we need to catch that signal.
-- If the application is fullscreen in its settings, make sure to set `c.fullscreen = false` first
-- before moving to the desired tag or else the tag where the program spawn will cause panels to hide.
-- After moving the program to specified tag you can set `c.fullscreen = true` now
-- See what I did in `SuperTuxKart`
client.connect_signal(
"property::class",
function(c)
if c.class == "Spotify" then
-- Check if Spotify is already open
local spotify = function (c)
return ruled.client.match(c, { class = "Spotify" })
end
local spotify_count = 0
for c in awful.client.iterate(spotify) do
spotify_count = spotify_count + 1
end
-- If Spotify is already open, don't open a new instance
if spotify_count > 1 then
c:kill()
-- Switch to previous instance
for c in awful.client.iterate(spotify) do
c:jump_to(false)
end
else
-- Move the Spotify instance to "5" tag on this screen
local t = awful.tag.find_by_name(awful.screen.focused(), "5")
c:move_to_tag(t)
end
elseif c.class == "SuperTuxKart" then
-- Disable fullscreen first
c.fullscreen = false
-- Check if SuperTuxKart is already open
local stk = function (c)
return ruled.client.match(c, { class = "SuperTuxKart" })
end
local stk_count = 0
for c in awful.client.iterate(stk) do
stk_count = stk_count + 1
end
-- If SuperTuxKart is already open, don't open a new instance
if stk_count > 1 then
c:kill()
-- Switch to previous instance
for c in awful.client.iterate(stk) do
c:jump_to(false)
end
else
-- Move the instance to specified tag tag on this screen
local t = awful.tag.find_by_name(awful.screen.focused(), "6")
c:move_to_tag(t)
t:view_only()
-- Enable fullscreeen again
c.fullscreen = true
end
end
end
)

View file

@ -0,0 +1,4 @@
return {
keys = require('configuration.keys'),
apps = require('configuration.apps')
}

View file

@ -0,0 +1,564 @@
local awful = require('awful')
local beautiful = require('beautiful')
require('awful.autofocus')
local hotkeys_popup = require('awful.hotkeys_popup').widget
local modkey = require('configuration.keys.mod').modKey
local altkey = require('configuration.keys.mod').altKey
local apps = require('configuration.apps')
-- Key bindings
local globalKeys = awful.util.table.join(
-- Hotkeys
awful.key(
{modkey},
'F1',
hotkeys_popup.show_help,
{description = 'show help', group = 'awesome'}
),
awful.key({modkey, 'Control'},
'r',
awesome.restart,
{description = 'reload awesome', group = 'awesome'}
),
awful.key({modkey, 'Control'},
'q',
awesome.quit,
{description = 'quit awesome', group = 'awesome'}
),
awful.key(
{altkey, 'Shift'},
'l',
function()
awful.tag.incmwfact(0.05)
end,
{description = 'increase master width factor', group = 'layout'}
),
awful.key(
{altkey, 'Shift'},
'h',
function()
awful.tag.incmwfact(-0.05)
end,
{description = 'decrease master width factor', group = 'layout'}
),
awful.key(
{modkey, 'Shift'},
'h',
function()
awful.tag.incnmaster(1, nil, true)
end,
{description = 'increase the number of master clients', group = 'layout'}
),
awful.key(
{modkey, 'Shift'},
'l',
function()
awful.tag.incnmaster(-1, nil, true)
end,
{description = 'decrease the number of master clients', group = 'layout'}
),
awful.key(
{modkey, 'Control'},
'h',
function()
awful.tag.incncol(1, nil, true)
end,
{description = 'increase the number of columns', group = 'layout'}
),
awful.key(
{modkey, 'Control'},
'l',
function()
awful.tag.incncol(-1, nil, true)
end,
{description = 'decrease the number of columns', group = 'layout'}
),
awful.key(
{modkey},
'space',
function()
awful.layout.inc(1)
end,
{description = 'select next layout', group = 'layout'}
),
awful.key(
{modkey, 'Shift'},
'space',
function()
awful.layout.inc(-1)
end,
{description = 'select previous layout', group = 'layout'}
),
awful.key(
{modkey},
'w',
awful.tag.viewprev,
{description = 'view previous tag', group = 'tag'}
),
awful.key(
{modkey},
's',
awful.tag.viewnext,
{description = 'view next tag', group = 'tag'}
),
awful.key(
{modkey},
'Escape',
awful.tag.history.restore,
{description = 'alternate between current and previous tag', group = 'tag'}
),
awful.key({ modkey, "Control" },
"w",
function ()
-- tag_view_nonempty(-1)
local focused = awful.screen.focused()
for i = 1, #focused.tags do
awful.tag.viewidx(-1, focused)
if #focused.clients > 0 then
return
end
end
end,
{description = "view previous non-empty tag", group = "tag"}
),
awful.key({ modkey, "Control" },
"s",
function ()
-- tag_view_nonempty(1)
local focused = awful.screen.focused()
for i = 1, #focused.tags do
awful.tag.viewidx(1, focused)
if #focused.clients > 0 then
return
end
end
end,
{description = "view next non-empty tag", group = "tag"}
),
awful.key(
{modkey, 'Shift'},
"F1",
function()
awful.screen.focus_relative(-1)
end,
{ description = "focus the previous screen", group = "screen"}
),
awful.key(
{modkey, 'Shift'},
"F2",
function()
awful.screen.focus_relative(1)
end,
{ description = "focus the next screen", group = "screen"}
),
awful.key(
{modkey, 'Control'},
'n',
function()
local c = awful.client.restore()
-- Focus restored client
if c then
client.focus = c
c:raise()
end
end,
{description = 'restore minimized', group = 'screen'}
),
awful.key(
{},
'XF86MonBrightnessUp',
function()
awful.spawn('light -A 10', false)
awesome.emit_signal('widget::brightness')
awesome.emit_signal('module::brightness_osd:show', true)
end,
{description = 'increase brightness by 10%', group = 'hotkeys'}
),
awful.key(
{},
'XF86MonBrightnessDown',
function()
awful.spawn('light -U 10', false)
awesome.emit_signal('widget::brightness')
awesome.emit_signal('module::brightness_osd:show', true)
end,
{description = 'decrease brightness by 10%', group = 'hotkeys'}
),
-- ALSA volume control
awful.key(
{},
'XF86AudioRaiseVolume',
function()
awful.spawn('amixer -D pulse sset Master 5%+', false)
awesome.emit_signal('widget::volume')
awesome.emit_signal('module::volume_osd:show', true)
end,
{description = 'increase volume up by 5%', group = 'hotkeys'}
),
awful.key(
{},
'XF86AudioLowerVolume',
function()
awful.spawn('amixer -D pulse sset Master 5%-', false)
awesome.emit_signal('widget::volume')
awesome.emit_signal('module::volume_osd:show', true)
end,
{description = 'decrease volume up by 5%', group = 'hotkeys'}
),
awful.key(
{},
'XF86AudioMute',
function()
awful.spawn('amixer -D pulse set Master 1+ toggle', false)
end,
{description = 'toggle mute', group = 'hotkeys'}
),
awful.key(
{},
'XF86AudioNext',
function()
awful.spawn('mpc next', false)
end,
{description = 'next music', group = 'hotkeys'}
),
awful.key(
{},
'XF86AudioPrev',
function()
awful.spawn('mpc prev', false)
end,
{description = 'previous music', group = 'hotkeys'}
),
awful.key(
{},
'XF86AudioPlay',
function()
awful.spawn('mpc toggle', false)
end,
{description = 'play/pause music', group = 'hotkeys'}
),
awful.key(
{},
'XF86AudioMicMute',
function()
awful.spawn('amixer set Capture toggle', false)
end,
{description = 'mute microphone', group = 'hotkeys'}
),
awful.key(
{},
'XF86PowerDown',
function()
--
end,
{description = 'shutdown skynet', group = 'hotkeys'}
),
awful.key(
{},
'XF86PowerOff',
function()
awesome.emit_signal("module::exit_screen_show")
end,
{description = 'toggle exit screen', group = 'hotkeys'}
),
awful.key(
{},
'XF86Display',
function()
awful.spawn.single_instance('arandr', false)
end,
{description = 'arandr', group = 'hotkeys'}
),
awful.key(
{modkey},
'`',
function()
_G.toggle_quake()
end,
{description = 'dropdown application', group = 'launcher'}
),
awful.key(
{modkey},
'm',
function()
if awful.screen.focused().musicpop then
awesome.emit_signal('widget::music', 'keyboard')
end
end,
{description = "toggle music widget", group = 'launcher'}
),
awful.key(
{ },
"Print",
function ()
awful.spawn.easy_async_with_shell(apps.bins.full_screenshot,function() end)
end,
{description = "fullscreen screenshot", group = 'Utility'}
),
awful.key(
{modkey, "Shift"},
's',
function ()
awful.spawn.easy_async_with_shell(apps.bins.area_screenshot,function() end)
end,
{description = "area/selected screenshot", group = 'Utility'}
),
awful.key(
{modkey},
'x',
function()
awesome.emit_signal("widget::blur:toggle")
end,
{description = "toggle blur effects", group = 'Utility'}
),
awful.key(
{modkey},
']',
function()
awesome.emit_signal("widget::blur:increase")
end,
{description = "increase blur effect by 10%", group = 'Utility'}
),
awful.key(
{modkey},
'[',
function()
awesome.emit_signal("widget::blur:decrease")
end,
{description = "decrease blur effect by 10%", group = 'Utility'}
),
awful.key(
{modkey},
't',
function()
awesome.emit_signal("widget::blue_light:toggle")
end,
{description = "toggle redshift filter", group = 'Utility'}
),
awful.key(
{ 'Control' },
'Escape',
function ()
if screen.primary.systray then
if not screen.primary.tray_toggler then
local systray = screen.primary.systray
systray.visible = not systray.visible
else
awesome.emit_signal("widget::systray:toggle")
end
end
end,
{description = "toggle systray visibility", group = 'Utility'}
),
awful.key(
{modkey},
'l',
function()
awful.spawn(apps.default.lock, false)
end,
{description = "lock the screen", group = 'Utility'}
),
awful.key(
{modkey},
'Return',
function()
awful.spawn(apps.default.terminal)
end,
{description = "open default terminal", group = 'launcher'}
),
awful.key(
{modkey, "Shift"},
'e',
function()
awful.spawn(apps.default.file_manager)
end,
{description = "open default file manager", group = 'launcher'}
),
awful.key(
{modkey, "Shift"},
'f',
function()
awful.spawn(apps.default.web_browser)
end,
{description = "open default web browser", group = 'launcher'}
),
awful.key(
{"Control", "Shift"},
'Escape',
function()
awful.spawn(apps.default.terminal .. ' ' .. 'htop')
end,
{description = "open system monitor", group = 'launcher'}
),
awful.key(
{modkey},
'e',
function()
local focused = awful.screen.focused()
if focused.left_panel then
focused.left_panel:HideDashboard()
focused.left_panel.opened = false
end
if focused.right_panel then
focused.right_panel:HideDashboard()
focused.right_panel.opened = false
end
awful.spawn(apps.default.rofiappmenu, false)
end,
{description = "open application drawer", group = 'launcher'}
),
awful.key(
{modkey},
'r',
function()
local focused = awful.screen.focused()
if focused.right_panel and focused.right_panel.visible then
focused.right_panel.visible = false
end
screen.primary.left_panel:toggle()
end,
{description = 'open sidebar', group = 'launcher'}
),
awful.key(
{modkey, 'Shift'},
'r',
function()
local focused = awful.screen.focused()
if focused.right_panel and focused.right_panel.visible then
focused.right_panel.visible = false
end
screen.primary.left_panel:toggle(true)
end,
{description = 'open sidebar and global search', group = 'launcher'}
),
awful.key(
{modkey},
'F2',
function()
local focused = awful.screen.focused()
if focused.left_panel and focused.left_panel.opened then
focused.left_panel:toggle()
end
if focused.right_panel then
if _G.right_panel_mode == 'today_mode' or not focused.right_panel.visible then
focused.right_panel:toggle()
switch_rdb_pane('today_mode')
else
switch_rdb_pane('today_mode')
end
_G.right_panel_mode = 'today_mode'
end
end,
{description = "open notification center", group = 'launcher'}
),
awful.key(
{modkey},
'F3',
function()
local focused = awful.screen.focused()
if focused.left_panel and focused.left_panel.opened then
focused.left_panel:toggle()
end
if focused.right_panel then
if _G.right_panel_mode == 'notif_mode' or not focused.right_panel.visible then
focused.right_panel:toggle()
switch_rdb_pane('notif_mode')
else
switch_rdb_pane('notif_mode')
end
_G.right_panel_mode = 'notif_mode'
end
end,
{description = "open today pane", group = 'launcher'}
)
)
-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it work on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, 9 do
-- Hack to only show tags 1 and 9 in the shortcut window (mod+s)
local descr_view, descr_toggle, descr_move, descr_toggle_focus
if i == 1 or i == 9 then
descr_view = {description = 'view tag #', group = 'tag'}
descr_toggle = {description = 'toggle tag #', group = 'tag'}
descr_move = {description = 'move focused client to tag #', group = 'tag'}
descr_toggle_focus = {description = 'toggle focused client on tag #', group = 'tag'}
end
globalKeys =
awful.util.table.join(
globalKeys,
-- View tag only.
awful.key(
{modkey},
'#' .. i + 9,
function()
local focused = awful.screen.focused()
local tag = focused.tags[i]
if tag then
tag:view_only()
end
end,
descr_view
),
-- Toggle tag display.
awful.key(
{modkey, 'Control'},
'#' .. i + 9,
function()
local focused = awful.screen.focused()
local tag = focused.tags[i]
if tag then
awful.tag.viewtoggle(tag)
end
end,
descr_toggle
),
-- Move client to tag.
awful.key(
{modkey, 'Shift'},
'#' .. i + 9,
function()
if client.focus then
local tag = client.focus.screen.tags[i]
if tag then
client.focus:move_to_tag(tag)
end
end
end,
descr_move
),
-- Toggle tag on focused client.
awful.key(
{modkey, 'Control', 'Shift'},
'#' .. i + 9,
function()
if client.focus then
local tag = client.focus.screen.tags[i]
if tag then
client.focus:toggle_tag(tag)
end
end
end,
descr_toggle_focus
)
)
end
return globalKeys

View file

@ -0,0 +1,4 @@
return {
mod = require('configuration.keys.mod'),
global = require('configuration.keys.global')
}

View file

@ -0,0 +1,4 @@
return {
modKey = 'Mod4',
altKey = 'Mod1'
}

View file

@ -0,0 +1,152 @@
# ▀ ▄▀▀
# ▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄ ▄▄ ▄▄█▄▄
# █▀ ▀█ █ █▀ ▀ █▀ ▀█ █ █ █ █▀ ▀ █▀ ▀█ █▀ █ █
# █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
# ██▄█▀ ▄▄█▄▄ ▀█▄▄▀ ▀█▄█▀ █ █ █ █ ▀█▄▄▀ ▀█▄█▀ █ █ █
# █
# ▀
# Shadow
shadow = true;
shadow-radius = 12;
shadow-offset-x = -12;
shadow-offset-y = -12;
shadow-opacity = 0.7;
# shadow-red = 0.0;
# shadow-green = 0.0;
# shadow-blue = 0.0;
# shadow-exclude-reg = "x10+0+0";
# xinerama-shadow-crop = true;
shadow-exclude = [
"name = 'Notification'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g = 'Cairo-clock'",
"class_g = 'slop'",
"class_g = 'Firefox' && argb",
"class_g = 'Rofi'",
"_GTK_FRAME_EXTENTS@:c",
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
];
# Logs
log-level = "ERROR";
log-file = "~/.cache/picom-log.log";
# Opacity
# inactive-opacity = 0.8;
# active-opacity = 0.8;
# frame-opacity = 0.7;
inactive-opacity-override = false;
opacity-rule = [
"80:class_g = 'URxvt'",
"80:class_g = 'UXTerm'",
"80:class_g = 'XTerm'"
];
# inactive-dim = 0.2;
# inactive-dim-fixed = true;
# Blur
blur: {
method = "dual_kawase";
strength = 3.2;
# deviation = 1.0;
# kernel = "11x11gaussian";
}
# blur-background = true;
blur-background-frame = true;
blur-background-fixed = true;
# blur-kern = "3x3box";
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
blur-background-exclude = [
"window_type = 'desktop'",
"window_type = 'utility'",
"window_type = 'notification'",
"class_g = 'slop'",
"class_g = 'Firefox' && argb",
"name = 'rofi - Global Search'",
"_GTK_FRAME_EXTENTS@:c"
];
# max-brightness = 0.66
# Fading
fading = true;
fade-delta = 3;
fade-in-step = 0.03;
fade-out-step = 0.03;
# no-fading-openclose = true;
# no-fading-destroyed-argb = true;
fade-exclude = [ ];
# Other
backend = "glx";
mark-wmwin-focused = true;
mark-ovredir-focused = true;
# use-ewmh-active-win = true;
detect-rounded-corners = true;
detect-client-opacity = true;
refresh-rate = 0;
vsync = true;
# sw-opti = true;
unredir-if-possible = false;
# unredir-if-possible-delay = 5000;
# unredir-if-possible-exclude = [ ];
# focus-exclude = [ "class_g = 'Cairo-clock'" ];
focus-exclude = [
"class_g = 'Cairo-clock'",
"class_g ?= 'rofi'",
"class_g ?= 'slop'",
"class_g ?= 'Steam'"
];
detect-transient = true;
detect-client-leader = true;
invert-color-include = [ ];
# resize-damage = 1;
# GLX backend
glx-no-stencil = true;
# glx-no-rebind-pixmap = true;
# xrender-sync-fence = true;
use-damage = true;
# Window type settings
wintypes:
{
tooltip = { fade = true; shadow = false; focus = false; };
normal = { shadow = false; };
dock = { shadow = false; };
dnd = { shadow = false; };
popup_menu = { shadow = true; focus = false; opacity = 0.90; };
dropdown_menu = { shadow = false; focus = false; };
above = { shadow = true; };
splash = { shadow = false; };
utility = { focus = false; shadow = false; };
notification = { shadow = false; };
desktop = { shadow = false };
menu = { focus = false };
dialog = { shadow = true; };
};

View file

@ -0,0 +1,152 @@
configuration {
font: "SF Pro Text Regular 10";
show-icons: true;
drun-display-format: "{name}";
fullscreen: false;
threads: 0;
matching: "fuzzy";
scroll-method: 0;
disable-history: false;
monitor: "primary";
window-thumbnail: true;
}
* {
background: #00000000;
background-color: #00000066;
background-entry: #00000033;
background-alt: #f2f2f215;
foreground: #f2f2f2EE;
foreground-selected: #ffffffFF;
urgent: #E91E6366;
urgent-selected: #E91E6377;
}
window {
transparency: "real";
background-color: @background;
text-color: @foreground;
height: 740px;
width: 1321px;
location: northwest;
anchor: northwest;
x-offset: 45;
y-offset: 28;
}
prompt {
enabled: false;
}
button {
action: "ok";
str: " ";
font: "FantasqueSansMono Nerd Font 11";
expand: false;
text-color: @foreground;
background-color: @background;
vertical-align: 0.5;
horizontal-align: 0.5;
}
entry {
font: "SF Pro Text Regular 11";
background-color: @background;
text-color: @foreground;
expand: true;
vertical-align: 0.5;
horizontal-align: 0.0;
placeholder: "Type to search";
placeholder-color: @foreground;
blink: true;
}
case-indicator {
background-color: @background;
text-color: @foreground;
vertical-align: 0.5;
horizontal-align: 0.5;
}
entry-wrapper {
orientation: horizontal;
vertical-align: 0.5;
spacing: 4px;
background-color: @background;
children: [ case-indicator, entry, button ];
}
inputbar {
background-color: @background-alt;
text-color: @foreground;
expand: false;
border-radius: 6px;
margin: 0px 405px 0px 405px;
padding: 10px 10px 10px 10px;
position: north;
children: [ entry-wrapper ];
}
listview {
background-color: @background;
columns: 7;
spacing: 4px;
cycle: false;
dynamic: true;
layout: vertical;
}
mainbox {
background-color: @background-color;
children: [ inputbar, listview ];
spacing: 25px;
padding: 45px 135px 45px 135px;
}
element {
background-color: @background;
text-color: @foreground;
orientation: vertical;
border-radius: 9px;
padding: 25px 0px 25px 0px;
}
element-icon {
size: 64px;
border: 0px;
}
element-text {
expand: true;
horizontal-align: 0.5;
vertical-align: 0.5;
margin: 5px 10px 0px 10px;
}
element normal.urgent,
element alternate.urgent {
background-color: @urgent;
text-color: @foreground;
border-radius: 9px;
}
element normal.active,
element alternate.active {
background-color: @background-alt;
text-color: @foreground;
}
element selected {
background-color: @background-alt;
text-color: @foreground-selected;
}
element selected.urgent {
background-color: @urgent-selected;
text-color: @foreground;
}
element selected.active {
background-color: @background-alt;
color: @foreground-selected;
}

View file

@ -0,0 +1,615 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="240"
height="240"
viewBox="0 0 240 240"
sodipodi:docname="ddg.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview4"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.4609375"
inkscape:cx="296.6541"
inkscape:cy="256"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<image
width="230.37288"
height="230.37288"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,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
RU5ErkJggg==
"
id="image10"
x="4.8135605"
y="4.8135605" />
</svg>

After

Width:  |  Height:  |  Size: 43 KiB

View file

@ -0,0 +1,365 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="240"
height="240"
viewBox="0 0 240 240"
sodipodi:docname="google.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview4"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.49166667"
inkscape:cx="-87.457627"
inkscape:cy="240"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<image
width="200"
height="200"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,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
6HBxqQyct9XIGLbXSE1RnYnaroPeGB7g3b+2p6h97XT/xid46RA5TM+2MQAAAtJJREFUCQuYHO2J
eSMn10nvH/aaKeN3GhntQ5yqtrQsLSx76bXlnfT6pfme4BNnTdqwWHUmokThwYhc48V5vTIbEbik
UgZ+sdtIH1xspAVMvgWUSoGBXp6a2s56w8qO3oaXBnfb8I/evRFSnYsoGXj0Idd6YtHA9qGGwK8b
hOeUvUbq0GIzLTfCEXJCpYmIPEKvq87XQ+sKRdO84d6y/xt84t5y1bmIVODBhuhbRc9NSMlvX3t+
vek9o8b0jdgrUzuWGwEPb4vTNjokOusN4Y5aw65cT/DzdjL4Vn7K+jkTJyKqOhuRFbCAiQ7jH3MG
dq3XfWfUIGX8fsM3pMr0d90nU1Kjkpcgf1+qiKK91tiUq4VKskRkY56naWlf1L5y9Ek7t6vORmRV
LGCiVipaNCGlfbD6+KgUxzdI34ga09+7SvralRuBVKffXtGvRWV70dSUrwX3Zonw5gw9tCxgyvd/
efLaT4SAqTofkZ2wgIniRUI8/MGIfnoURxtSG9oET58m03NEvfQU1ElfZq30+hpNr6Xfc5laWOaI
UDBTRGrSRLQsVYvu8GuRjX6J1aaMLLv0lK+3qs5I5BSWPhgQOc0/3x2cE/VovetNvXcUWreoQJeQ
4etgSOQaQsuKAukRqaWFoXlD0uNvkh5dAiIqNT0iNQEhBQA0SY/4bgW3XxjS8+3gM0UYhgYpBSBT
hBEFAE3KSECLhP0w6/zCrPVqZqUPxj5dmuUeYZZqArt0KbZnaaFN505Zx5sWEBERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERxeD/A07OTjCrltYIAAAAAElFTkSuQmCC
"
id="image10"
x="20"
y="20" />
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="Capa_1"
enable-background="new 0 0 515.556 515.556"
height="240"
viewBox="0 0 240 240"
width="240"
class=""
version="1.1"
sodipodi:docname="history.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata13">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs11" />
<sodipodi:namedview
pagecolor="#252525"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview9"
showgrid="false"
inkscape:zoom="0.4609375"
inkscape:cx="-322.41898"
inkscape:cy="256"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="Capa_1"
inkscape:pagecheckerboard="true" />
<g
id="g6"
style="opacity:0.8"
transform="matrix(0.3879307,0,0,0.3879307,20,20)">
<path
d="m 290,32.222 c -113.405,0 -207.262,84.222 -222.981,193.333 H 0 l 96.667,96.667 96.667,-96.667 H 132.146 C 147.118,152.111 212.202,96.666 290,96.666 c 88.832,0 161.111,72.28 161.111,161.111 0,88.831 -72.279,161.112 -161.111,161.112 -51.684,0 -100.6,-25.079 -130.84,-67.056 l -52.298,37.635 c 42.323,58.78 110.78,93.866 183.138,93.866 124.373,0 225.556,-101.198 225.556,-225.556 C 515.556,133.42 414.373,32.222 290,32.222 Z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path2"
style="fill:#ffffff"
inkscape:connector-curvature="0" />
<path
d="M 257.778,161.111 V 292.14 l 96.195,57.711 33.166,-55.256 -64.917,-38.956 v -94.527 z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path4"
style="fill:#ffffff"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 24 24"
id="svg4"
sodipodi:docname="result.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="-43.728814"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4"
inkscape:pagecheckerboard="true" />
<path
d="m 9.428571,2 a 7.4285714,7.4285714 0 0 1 7.428572,7.4285714 c 0,1.8399996 -0.674286,3.5314286 -1.782857,4.8342856 l 0.308571,0.308572 h 0.902857 L 22,20.285714 20.285714,22 14.571429,16.285714 V 15.382857 L 14.262857,15.074286 C 12.96,16.182857 11.268571,16.857143 9.428571,16.857143 A 7.4285714,7.4285714 0 0 1 2,9.4285714 7.4285714,7.4285714 0 0 1 9.428571,2 m 0,2.2857143 c -2.8571424,0 -5.1428567,2.2857143 -5.1428567,5.1428571 0,2.8571426 2.2857143,5.1428576 5.1428567,5.1428576 2.857143,0 5.142858,-2.285715 5.142858,-5.1428576 0,-2.8571428 -2.285715,-5.1428571 -5.142858,-5.1428571 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:1.14285707" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></svg>

After

Width:  |  Height:  |  Size: 569 B

View file

@ -0,0 +1,745 @@
#!/usr/bin/env bash
# ----------------------------------------------------------------------------
# --- Rofi File Browser
# --
# --
# -- @author manilarome &lt;gerome.matilla07@gmail.com&gt;
# -- @copyright 2020 manilarome
# -- @script rofi-spotlight.sh
# ----------------------------------------------------------------------------
TMP_DIR="/tmp/rofi/${USER}/"
PREV_LOC_FILE="${TMP_DIR}rofi_fb_prevloc"
CURRENT_FILE="${TMP_DIR}rofi_fb_current_file"
MY_PATH="$(dirname "${0}")"
HIST_FILE="${MY_PATH}/history.txt"
OPENER=xdg-open
TERM_EMU=kitty
TEXT_EDITOR=${EDITOR}
FILE_MANAGER=dolphin
BLUETOOTH_SEND=blueman-sendto
CUR_DIR=$PWD
NEXT_DIR=""
SHOW_HIDDEN=false
declare -a SHELL_OPTIONS=(
"Run"
"Execute in ${TERM_EMU}"
"Edit"
"Open file location in ${TERM_EMU}"
"Open file location in ${FILE_MANAGER}"
"Move to trash"
"Delete"
"Back"
)
declare -a SHELL_NO_X_OPTIONS=(
"Edit"
"Open file location in ${TERM_EMU}"
"Open file location in ${FILE_MANAGER}"
"Move to trash"
"Delete"
"Back"
)
declare -a BIN_OPTIONS=(
"Run"
"Execute in ${TERM_EMU}"
"Open file location in ${TERM_EMU}"
"Open file location in ${FILE_MANAGER}"
"Back"
)
declare -a BIN_NO_X_OPTIONS=(
"Open file location in ${TERM_EMU}"
"Open file location in ${FILE_MANAGER}"
"Back"
)
declare -a TEXT_OPTIONS=(
"Edit"
"Open file location in ${TERM_EMU}"
"Open file location in ${FILE_MANAGER}"
"Move to trash"
"Delete"
"Back"
)
declare -a XCF_SVG_OPTIONS=(
"Open"
"Open file location in ${TERM_EMU}"
"Open file location in ${FILE_MANAGER}"
"Move to trash"
"Delete"
"Back"
)
declare -a IMAGE_OPTIONS=(
"Open"
"Send via Bluetooth"
"Open file location in ${TERM_EMU}"
"Open file location in ${FILE_MANAGER}"
"Move to trash"
"Delete"
"Back"
)
declare -a ALL_OPTIONS=()
# Combine all context menu
COMBINED_OPTIONS=(
"${SHELL_OPTIONS[@]}"
"${SHELL_NO_X_OPTIONS[@]}"
"${BIN_OPTIONS[@]}"
"${BIN_NO_X_OPTIONS[@]}"
"${TEXT_OPTIONS[@]}"
"${XCF_SVG_OPTIONS[@]}"
"${IMAGE_OPTIONS[@]}"
)
# Remove duplicates
while IFS= read -r -d '' x; do
ALL_OPTIONS+=("$x")
done < <(printf "%s\0" "${COMBINED_OPTIONS[@]}" | sort -uz)
# Create tmp dir for rofi
if [ ! -d "${TMP_DIR}" ]
then
mkdir -p "${TMP_DIR}";
fi
# Create hist file if it doesn't exist
if [ ! -f "${HIST_FILE}" ]
then
touch "${HIST_FILE}"
fi
# Help message
if [[ ! -z "$@" ]] && [[ "$@" == ":help" ]]
then
echo "Rofi Spotlight"
echo "A Rofi with file and web searching functionality"
echo " "
echo "Commands:"
echo ":help to print this help message"
echo ":h or :hidden to show hidden files/dirs"
echo ":sh or :show_hist to show search history"
echo ":ch or :clear_hist to clear search history"
echo ":xdg to jump to an xdg directory"
echo "Examples:"
echo " :xdg DOCUMENTS"
echo " :xdg DOWNLOADS"
echo "Also supports incomplete path:"
echo "Examples:"
echo " :xdg doc"
echo " :xdg down"
echo "For more info about XDG dirs, see:"
echo "\`man xdg-user-dir\`"
echo " "
echo "File search syntaxes:"
echo "!<search_query> to search for a file and web suggestions"
echo "?<search_query> to search parent directories"
echo "Examples:"
echo " !half-life 3"
echo " ?portal 3"
echo " "
echo "Web search syntaxes:"
echo "!<search_query> to gets search suggestions"
echo ":web/:w <search_query> to also to gets search suggestions"
echo ":webbro/:wb <search_query> to search directly from your browser"
echo "Examples:"
echo " !how to install archlinux"
echo " :web how to install gentoo"
echo " :w how to make a nuclear fission"
echo " :webbro how to install wine in windowsxp"
exit;
fi
# Return the icon string
function icon_file_type(){
icon_name=""
mime_type=$(file --mime-type -b "${1}")
case "${mime_type}" in
"inode/directory")
case "${1}" in
"Desktop/" )
icon_name='folder-blue-desktop'
;;
"Documents/" )
icon_name='folder-blue-documents'
;;
"Downloads/" )
icon_name='folder-blue-downloads'
;;
"Music/" )
icon_name='folder-blue-music'
;;
"Pictures/" )
icon_name='folder-blue-pictures'
;;
"Public/" )
icon_name='folder-blue-public'
;;
"Templates/" )
icon_name='folder-blue-templates'
;;
"Videos/" )
icon_name='folder-blue-videos'
;;
"root/" )
icon_name='folder-root'
;;
"home/" | "${USER}/")
icon_name='folder-home'
;;
*"$" )
icon_name='folder-blue'
;;
*)
icon_name='folder-blue'
;;
esac
;;
"inode/symlink" )
icon_name='inode-symlink'
;;
"audio/flac" | "audio/mpeg" )
icon_name='music'
;;
"video/mp4" )
icon_name='video-mp4'
;;
"video/x-matroska" )
icon_name=video-x-matroska
;;
"image/x-xcf" )
# notify-send '123'
icon_name='image-x-xcf'
;;
"image/jpeg" | "image/png" | "image/svg+xml")
icon_name="${CUR_DIR}/${1}"
;;
"image/gif" )
icon_name='gif'
;;
"image/vnd.adobe.photoshop" )
icon_name='image-vnd.adobe.photoshop'
;;
"image/webp" )
icon_name='gif'
;;
"application/x-pie-executable" )
icon_name='binary'
;;
"application/pdf" )
icon_name='pdf'
;;
"application/zip" )
icon_name='application-zip'
;;
"application/x-xz" )
icon_name='application-x-xz-compressed-tar'
;;
"application/x-7z-compressed" )
icon_name='application-x-7zip'
;;
"application/x-rar" )
icon_name='application-x-rar'
;;
"application/octet-stream" | "application/x-iso9660-image" )
icon_name='application-x-iso'
;;
"application/x-dosexec" )
icon_name='application-x-ms-dos-executable'
;;
"text/plain" )
icon_name='application-text'
;;
"text/x-shellscript" )
icon_name='application-x-shellscript'
;;
"font/sfnt" | "application/vnd.ms-opentype" )
icon_name='application-x-font-ttf'
;;
* )
case "${1}" in
*."docx" | *".doc" )
icon_name='application-msword'
;;
*."apk" )
icon_name='android-package-archive'
;;
* )
icon_name='unknown'
;;
esac
;;
esac
echo "${1}""\0icon\x1f""${icon_name}""\n"
}
# Pass the argument to python scrupt
function web_search() {
# Pass the search query to web-search script
python "${MY_PATH}/web-search.py" "${1}"
exit;
}
# Handles the web search method
if [ ! -z "$@" ] && ([[ "$@" == ":webbro"* ]] || [[ "$@" == ":wb"* ]])
then
remove=''
if [[ "$@" == ":webbro"* ]]
then
remove=":webbro"
else
remove=":wb"
fi
# Search directly from your web browser
web_search "$(printf '%s\n' "${1//$remove/}")"
exit;
elif [ ! -z "$@" ] && ([[ "$@" == ":web"* ]] || [[ "$@" == ":w"* ]])
then
remove=''
if [[ "$@" == ":web"* ]]
then
remove=":web"
else
remove=":w"
fi
# Get search suggestions
web_search "!$(printf '%s\n' "${1//$remove/}")"
exit;
fi
# File and calls to the web search
if [ ! -z "$@" ] && ([[ "$@" == /* ]] || [[ "$@" == \?* ]] || [[ "$@" == \!* ]])
then
QUERY=$@
echo "${QUERY}" >> "${HIST_FILE}"
if [[ "$@" == /* ]]
then
if [[ "$@" == *\?\? ]]
then
coproc ( ${OPENER} "${QUERY%\/* \?\?}" > /dev/null 2>&1 )
exec 1>&-
exit;
else
coproc ( ${OPENER} "$@" > /dev/null 2>&1 )
exec 1>&-
exit;
fi
elif [[ "$@" == \?* ]]
then
while read -r line
do
echo "$line" \?\?
done <<< $(find "${HOME}" -iname *"${QUERY#\?}"* 2>&1 | grep -v 'Permission denied\|Input/output error')
else
# Find the file
find "${HOME}" -iname *"${QUERY#!}"* -exec echo -ne \
"{}\0icon\x1f${MY_PATH}/icons/result.svg\n" \; 2>&1 |
grep -av 'Permission denied\|Input/output error'
# Web search
web_search "${QUERY}"
fi
exit;
fi
# Create notification if there's an error
function create_notification() {
if [[ "${1}" == "denied" ]]
then
notify-send -a "Global Search" "<b>Permission denied!</b>" \
'You have no permission to access '"<b>${CUR_DIR}</b>!"
elif [[ "${1}" == "deleted" ]]
then
notify-send -a "Global Search" "<b>Success!</b>" \
'File deleted!'
elif [[ "${1}" == "trashed" ]]
then
notify-send -a "Global Search" "<b>Success!</b>" \
'The file has been moved to trash!'
elif [[ "${1}" == "cleared" ]]
then
notify-send -a "Global Search" "<b>Success!</b>" \
'Search history has been successfully cleared!'
else
notify-send -a "Global Search" "<b>Somethings wrong I can feel it!</b>" \
'This incident will be reported!'
fi
}
# Show the files in the current directory
function navigate_to() {
# process current dir.
if [ -n "${CUR_DIR}" ]
then
CUR_DIR=$(readlink -e "${CUR_DIR}")
if [ ! -d "${CUR_DIR}" ] || [ ! -r "${CUR_DIR}" ]
then
echo "${HOME}" > "${PREV_LOC_FILE}"
create_notification "denied"
else
echo "${CUR_DIR}/" > "${PREV_LOC_FILE}"
fi
pushd "${CUR_DIR}" >/dev/null
fi
printf "..\0icon\x1fup\n"
if [[ ${SHOW_HIDDEN} == true ]]
then
for i in .*/
do
if [[ -d "${i}" ]] && ([[ "${i}" != "./" ]] && [[ "${i}" != "../"* ]])
then
printf "$(icon_file_type "${i}")";
fi
done
for i in .*
do
if [[ -f "${i}" ]]
then
printf "$(icon_file_type "${i}")";
fi
done
fi
for i in */
do
if [[ -d "${i}" ]]
then
printf "$(icon_file_type "${i}")";
fi
done
for i in *
do
if [[ -f "${i}" ]]
then
printf "$(icon_file_type "${i}")";
fi
done
}
# Set XDG dir
function return_xdg_dir() {
target_dir=$(echo "$1" | tr "[:lower:]" "[:upper:]")
if [[ "HOME" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir)
elif [[ "DESKTOP" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir DESKTOP)
elif [[ "DOCUMENTS" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir DOCUMENTS)
elif [[ "DOWNLOADS" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir DOWNLOAD)
elif [[ "MUSIC" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir MUSIC)
elif [[ "PICTURES" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir PICTURES)
elif [[ "PUBLICSHARE" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir PUBLICSHARE)
elif [[ "TEMPLATES" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir TEMPLATES)
elif [[ "VIDEOS" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir VIDEOS)
elif [[ "ROOT" == *"${target_dir}"* ]]
then
CUR_DIR="/"
else
CUR_DIR="${HOME}"
fi
navigate_to
exit;
}
# Show and Clear History
if [ ! -z "$@" ] && ([[ "$@" == ":sh" ]] || [[ "$@" == ":show_hist" ]])
then
hist=$(tac "${HIST_FILE}")
if [ ! -n "${hist}" ]
then
printf ".\0icon\x1fback\n"
printf "No history, yet.\0icon\x1ftext-plain\n"
fi
while IFS= read -r line;
do
printf "${line}\0icon\x1f${MY_PATH}/icons/history.svg\n";
done <<< "${hist}"
exit;
elif [ ! -z "$@" ] && ([[ "$@" == ":ch" ]] || [[ "$@" == ":clear_hist" ]])
then
:> "${HIST_FILE}"
create_notification "cleared"
CUR_DIR="${HOME}"
navigate_to
exit;
fi
# Accepts XDG command
if [[ ! -z "$@" ]] && [[ "$@" == ":xdg"* ]]
then
NEXT_DIR=$(echo "$@" | awk '{print $2}')
if [[ ! -z "$NEXT_DIR" ]]
then
return_xdg_dir "${NEXT_DIR}"
else
return_xdg_dir "${HOME}"
fi
fi
# Read last location, otherwise we default to PWD.
if [ -f "${PREV_LOC_FILE}" ]
then
CUR_DIR=$(cat "${PREV_LOC_FILE}")
fi
if [[ ! -z "$@" ]] && ([[ "$@" == ":h" ]] || [[ "$@" == ":hidden" ]])
then
SHOW_HIDDEN=true
navigate_to
exit;
fi
# Handle argument.
if [ -n "$@" ]
then
CUR_DIR="${CUR_DIR}/$@"
fi
# Context Menu
if [[ ! -z "$@" ]] && [[ "${ALL_OPTIONS[*]} " == *"${1}"* ]]
then
case "${1}" in
"Run" )
coproc ( eval "$(cat "${CURRENT_FILE}")" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Execute in ${TERM_EMU}" )
coproc ( eval "${TERM_EMU} "$(cat "${CURRENT_FILE}")"" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Open" )
coproc ( eval "${OPENER} "$(cat "${CURRENT_FILE}")"" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Open file location in ${TERM_EMU}" )
file_path="$(cat "${CURRENT_FILE}")"
coproc ( ${TERM_EMU} bash -c "cd "${file_path%/*}" ; ${SHELL}" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Open file location in ${FILE_MANAGER}" )
file_path="$(cat "${CURRENT_FILE}")"
coproc ( eval "${FILE_MANAGER} "${file_path%/*}"" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Edit" )
coproc ( eval "${TERM_EMU} ${TEXT_EDITOR} $(cat "${CURRENT_FILE}")" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Move to trash" )
coproc( gio trash "$(cat "${CURRENT_FILE}")" & > /dev/null 2>&1 )
create_notification "trashed"
CUR_DIR="$(dirname $(cat "${CURRENT_FILE}"))"
navigate_to
;;
"Delete" )
shred "$(cat "${CURRENT_FILE}")"
rm "$(cat "${CURRENT_FILE}")"
create_notification "deleted"
CUR_DIR="$(dirname $(cat "${CURRENT_FILE}"))"
navigate_to
;;
"Send via Bluetooth" )
rfkill unblock bluetooth && bluetoothctl power on
sleep 1
blueman-sendto "$(cat "${CURRENT_FILE}")" & > /dev/null 2>&1
kill -9 $(pgrep rofi)
;;
"Back" )
CUR_DIR=$(cat "${PREV_LOC_FILE}")
navigate_to
;;
esac
exit;
fi
function context_menu_icons() {
if [[ "${1}" == "Run" ]]
then
echo '\0icon\x1fsystem-run\n'
elif [[ "${1}" == "Execute in ${TERM_EMU}" ]]
then
echo "\0icon\x1f${TERM_EMU}\n"
elif [[ "${1}" == "Open" ]]
then
echo "\0icon\x1futilities-x-terminal\n"
elif [[ "${1}" == "Open file location in ${TERM_EMU}" ]]
then
echo "\0icon\x1f${TERM_EMU}\n"
elif [[ "${1}" == "Open file location in ${FILE_MANAGER}" ]]
then
echo "\0icon\x1fblue-folder-open\n"
elif [[ "${1}" == "Edit" ]]
then
echo "\0icon\x1faccessories-text-editor\n"
elif [[ "${1}" == "Move to trash" ]]
then
echo "\0icon\x1fapplication-x-trash\n"
elif [[ "${1}" == "Delete" ]]
then
echo "\0icon\x1findicator-trashindicator\n"
elif [[ "${1}" == "Send via Bluetooth" ]]
then
echo "\0icon\x1fbluetooth\n"
elif [[ "${1}" == "Back" ]]
then
echo "\0icon\x1fback\n"
fi
}
function print_context_menu() {
declare -a arg_arr=("${!1}")
for menu in "${arg_arr[@]}"
do
printf "$menu$(context_menu_icons "${menu}")\n"
done
}
function context_menu() {
type=$(file --mime-type -b "${CUR_DIR}")
if [ -w "${CUR_DIR}" ] && [[ "${type}" == "text/x-shellscript" ]]
then
if [ -x "${CUR_DIR}" ];
then
print_context_menu SHELL_OPTIONS[@]
else
print_context_menu SHELL_NO_X_OPTIONS[@]
fi
elif [[ "${type}" == "application/x-executable" ]] || [[ "${type}" == "application/x-pie-executable" ]]
then
if [ -x "${CUR_DIR}" ]
then
print_context_menu BIN_OPTIONS[@]
else
print_context_menu BIN_NO_X_OPTIONS[@]
fi
elif [[ "${type}" == "text/plain" ]]
then
print_context_menu TEXT_OPTIONS[@]
elif [[ "${type}" == "image/jpeg" ]] || [[ "${type}" == "image/png" ]]
then
print_context_menu IMAGE_OPTIONS[@]
elif [[ "${type}" == "image/x-xcf" ]] || [[ "${type}" == "image/svg+xml" ]]
then
print_context_menu XCF_SVG_OPTIONS[@]
elif [ ! -w "${CUR_DIR}" ] && [[ "${type}" == "text/x-shellscript" ]]
then
coproc ( exec "${CUR_DIR}" & > /dev/null 2>&1 )
else
if [ ! -d "${CUR_DIR}" ] && [ ! -f "${CUR_DIR}" ]
then
QUERY="${CUR_DIR//*\/\//}"
echo "${QUERY}" >> "${HIST_FILE}"
find "${HOME}" -iname *"${QUERY#!}"* -exec echo -ne \
"{}\0icon\x1f${MY_PATH}/icons/result.svg\n" \; 2>&1 |
grep -av 'Permission denied\|Input/output error'
web_search "!${QUERY}"
else
coproc ( ${OPENER} "${CUR_DIR}" & > /dev/null 2>&1 )
fi
fi
exit;
}
# If argument is not a directory/folder
if [ ! -d "${CUR_DIR}" ]
then
echo "${CUR_DIR}" > "${CURRENT_FILE}"
context_menu
exit;
fi
navigate_to

View file

@ -0,0 +1,155 @@
configuration {
font: "SF Pro Text Regular 10";
show-icons: true;
fullscreen: false;
sidebar-mode: true;
threads: 0;
matching: "fuzzy";
scroll-method: 0;
monitor: "primary";
}
* {
background: #00000000;
background-color: #00000000;
background-entry: #00000033;
background-alt: #f2f2f215;
foreground: #f2f2f2EE;
foreground-selected: #ffffffFF;
urgent: #E91E6366;
urgent-selected: #E91E6377;
}
window {
transparency: "real";
background: @background;
location: west;
anchor: west;
x-offset: 0px;
height: 100%;
width: 350px;
orientation: vertical;
}
mainbox {
background-color: @background;
spacing: 0px;
padding: 5px 5px 5px 5px;
width: 200px;
expand: true;
spacing: 12px;
children: [ inputbar, listview];
}
scrollbar {
background-color: @background-alt;
handle-width: 10px;
margin: 0px 0px 5px 0px;
border-radius: 9px;
}
listview {
background-color: @background;
spacing: 0px;
dynamic: true;
cycle: true;
scrollbar: true;
}
prompt {
enabled: false;
}
button {
action: "ok";
str: " ";
font: "FantasqueSansMono Nerd Font 16";
expand: false;
text-color: @foreground;
background-color: @background;
vertical-align: 0.5;
horizontal-align: 0.5;
}
entry {
font: "SF Pro Text Regular 12";
background-color: @background;
placeholder-color: @foreground;
placeholder: "Global Search";
blink: true;
expand: true;
text-color: @foreground;
vertical-align: 0.5;
}
entry-wrapper {
orientation: horizontal;
vertical-align: 0.5;
spacing: 4px;
background-color: @background;
children: [ button, entry ];
}
inputbar {
padding: 14px;
margin: 10px 10px 14px 10px;
background-color: @background-alt;
text-color: @foreground;
expand: false;
border-radius: 9px;
position: north;
children: [ entry-wrapper ];
}
element {
margin: 0px 12px 0px 12px;
background-color: @background;
text-color: @foreground;
orientation: horizontal;
border-radius: 0px;
padding: 10px 12px 10px 12px;
border: 0 0 2px;
border-color: @background-alt;
}
element-icon {
size: 16px;
border-color: @background;
border: 2px;
}
element-text {
font: "SF Pro Text Regular 11";
expand: true;
horizontal-align: 0.0;
vertical-align: 0.5;
}
element normal.urgent,
element alternate.urgent {
background-color: @urgent;
text-color: @foreground;
border-radius: 9px;
}
element normal.active,
element alternate.active {
background-color: @background-alt;
text-color: @foreground;
}
element selected {
background-color: @background-alt;
text-color: @foreground-selected;
}
element selected.urgent {
background-color: @urgent-selected;
text-color: @foreground;
}
element selected.active {
background-color: @background-alt;
color: @foreground-selected;
}

View file

@ -0,0 +1,167 @@
#!/usr/bin/env python3
# MIT License
# Copyright (c) 2019 Paolo Donadeo
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
import json
import re
import urllib.parse
import urllib.request
import sys
import os
import datetime
import gzip
import subprocess as sp
import html
################################################################################
##### C O N F I G U R A T I O N ######
################################################################################
SEARCH_ENGINE = 'google' # or 'duckduckgo'
BROWSER = 'firefox' # or 'firefox', 'chromium', 'brave', 'lynx'
TERMINAL = ['kitty', '--'] # or ['st', '-e'] or something like that
################################################################################
CONFIG = {
'BROWSER_PATH' : {
'chrome' : ['google-chrome-stable'],
'firefox' : ['firefox'],
'chromium' : ['chromium-browser'],
'brave' : ['brave-browser'],
'lynx' : TERMINAL + ['lynx']
},
'USER_AGENT' : {
'chrome' : 'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
'firefox' : 'Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0',
'chromium' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/76.0.3809.100 Chrome/76.0.3809.100 Safari/537.36',
'brave' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36',
'lynx' : 'Lynx/2.8.9rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.1.1d'
},
'SEARCH_ENGINE_NAME' : {
'google' : 'Google',
'duckduckgo' : 'DuckDuckGo'
},
'SEARCH_URL' : {
'google' : 'https://www.google.com/search?q=',
'duckduckgo' : 'https://duckduckgo.com/?q='
},
'SUGGESTION_URL' : {
'google' : 'https://www.google.com/complete/search?',
'duckduckgo' : 'https://duckduckgo.com/ac/?'
}
}
def cleanhtml(txt):
return re.sub(r'<.*?>', '', txt)
def fetch_suggestions(search_string):
if SEARCH_ENGINE == 'google':
r = {
'q' : search_string,
'cp' : '11',
'client' : 'psy-ab',
'xssi' : 't',
'gs_ri' : 'gws-wiz',
'hl' : 'en-IT',
'authuser' : '0'
}
url = CONFIG['SUGGESTION_URL'][SEARCH_ENGINE] + urllib.parse.urlencode(r)
headers = {
'sec-fetch-mode' : 'cors',
'dnt' : '1',
'accept-encoding' : 'gzip',
'accept-language' : 'en-US;q=0.9,en;q=0.8',
'pragma' : 'no-cache',
'user-agent' : CONFIG['USER_AGENT'][BROWSER],
'accept' : '*/*',
'cache-control' : 'no-cache',
'authority' : 'www.google.com',
'referer' : 'https://www.google.com/',
'sec-fetch-site' : 'same-origin'
}
req = urllib.request.Request(url, headers=headers, method='GET')
reply_data = gzip.decompress(urllib.request.urlopen(req).read()).split(b'\n')[1]
reply_data = json.loads(reply_data)
return [ cleanhtml(res[0]).strip() for res in reply_data[0] ]
else: # 'duckduckgo'
if search_string.startswith('!'):
bang_search = True
search_string = search_string.lstrip('!')
else:
bang_search = False
r = {
'q' : search_string,
'callback' : 'autocompleteCallback',
'kl' : 'wt-wt',
'_' : str(int((datetime.datetime.now().timestamp())*1000))
}
url = CONFIG['SUGGESTION_URL'][SEARCH_ENGINE] + urllib.parse.urlencode(r)
if bang_search:
url = url.replace('?q=', '?q=!')
headers = {
'pragma' : 'no-cache',
'dnt' : '1',
'accept-encoding' : 'gzip',
'accept-language' : 'en-US;q=0.9,en;q=0.8',
'user-agent' : CONFIG['USER_AGENT'][BROWSER],
'sec-fetch-mode' : 'no-cors',
'accept' : '*/*',
'cache-control' : 'no-cache',
'authority' : 'duckduckgo.com',
'referer' : 'https://duckduckgo.com/',
'sec-fetch-site' : 'same-origin',
}
req = urllib.request.Request(url, headers=headers, method='GET')
reply_data = gzip.decompress(urllib.request.urlopen(req).read()).decode('utf8')
reply_data = json.loads(re.match(r'autocompleteCallback\((.*)\);', reply_data).group(1))
return [ cleanhtml(res['phrase']).strip() for res in reply_data ]
def main():
search_string = html.unescape((' '.join(sys.argv[1:])).strip())
path_str = os.path.dirname(os.path.realpath(__file__)) + '/'
icon_path_str = path_str + 'icons/'
icon_name = icon_path_str
if SEARCH_ENGINE == 'google':
icon_name += 'google.svg'
else:
icon_name += 'ddg.svg'
if search_string.startswith('!'):
search_string = search_string.rstrip('!').strip()
results = fetch_suggestions(search_string)
for r in results:
print(":wb " + html.unescape(r) + "\0icon\x1f"+icon_name+"\n")
else:
url = CONFIG['SEARCH_URL'][SEARCH_ENGINE] + urllib.parse.quote_plus(search_string)
sp.Popen(CONFIG['BROWSER_PATH'][BROWSER] + [url], stdout=sp.DEVNULL, stderr=sp.DEVNULL, shell=False)
if __name__ == "__main__":
try:
main()
except Exception as e:
if e:
sys.exit(1)

View file

@ -0,0 +1,84 @@
local gears = require('gears')
local awful = require('awful')
local apps = require('configuration.apps')
root.buttons(
gears.table.join(
awful.button(
{},
1,
function()
if mymainmenu then
mymainmenu:hide()
end
end
),
awful.button(
{},
3,
function ()
if mymainmenu then
mymainmenu:toggle()
end
end
),
awful.button(
{},
2,
function ()
awful.util.spawn(apps.default.rofiappmenu)
end
),
awful.button(
{'Control'},
2,
function ()
awesome.emit_signal("module::exit_screen_show")
end
),
awful.button(
{'Shift'},
2,
function ()
awesome.emit_signal("widget::blue_light:toggle")
end
),
awful.button(
{},
4,
function()
awful.spawn('light -A 10',false)
awesome.emit_signal('widget::brightness')
awesome.emit_signal('module::brightness_osd:show',true)
end
),
awful.button(
{},
5,
function()
awful.spawn('light -U 10',false)
awesome.emit_signal('widget::brightness')
awesome.emit_signal('module::brightness_osd:show',true)
end
),
awful.button(
{'Control'},
4,
function()
awful.spawn('amixer -D pulse sset Master 5%+',false)
awesome.emit_signal('widget::volume')
awesome.emit_signal('module::volume_osd:show',true)
end
),
awful.button(
{'Control'},
5,
function()
awful.spawn('amixer -D pulse sset Master 5%-',false)
awesome.emit_signal('widget::volume')
awesome.emit_signal('module::volume_osd:show',true)
end
)
)
)

View file

@ -0,0 +1,45 @@
-- Credentials Manager
-- How to get a valid credentials for email widget?
-- The widget uses an IMAP.
-- So it means any email service provider that provides an IMAP support is supported by the widget.
-- First, you need an email_address.
-- Second, you must generate an app password for your account. Your account password WILL NOT WORK!
-- Just search in the internet on how to generate for your email service provider.
-- For example `create app password for gmail account`
-- Third, you need an imap_server.
-- Just get your email service provider's imap server. Gmail's imap server is `imap.gmail.com`
-- Fourth, provide the port.
-- Just search it in the internet. Gmail's port is `993`
-- How to get a credentials for weather widget?
-- OpenWeatherMap is our weather provider. So go to `https://home.openweathermap.org/`
-- Register, log-in, and then go to `https://home.openweathermap.org/api_keys`
-- You can create your API keys there.
-- For `units`, you have to choose for yourself.
-- `metric` or 'imperial'
-- metric uses °C, while imperial uses °F
return {
email = {
address = '',
app_password = '',
imap_server = 'imap.gmail.com',
port = '993'
},
weather = {
key = '',
city_id = '',
units = 'metric'
}
}

View file

@ -0,0 +1,109 @@
local awful = require('awful')
local gears = require('gears')
local beautiful = require('beautiful')
local icons = require('theme.icons')
local tags = {
{
icon = icons.terminal,
type = 'terminal',
default_app = 'kitty',
screen = 1
},
{
icon = icons.web_browser,
type = 'chrome',
default_app = 'firefox',
screen = 1
},
{
icon = icons.text_editor,
type = 'code',
default_app = 'subl3',
screen = 1
},
{
icon = icons.file_manager,
type = 'files',
default_app = 'nemo',
screen = 1
},
{
icon = icons.multimedia,
type = 'music',
default_app = 'vlc',
screen = 1
},
{
icon = icons.games,
type = 'game',
default_app = 'supertuxkart',
screen = 1
},
{
icon = icons.graphics,
type = 'art',
default_app = 'gimp-2.10',
screen = 1
},
{
icon = icons.sandbox,
type = 'virtualbox',
default_app = 'virtualbox',
screen = 1
},
{
icon = icons.development,
type = 'any',
default_app = '',
screen = 1
}
-- {
-- icon = icons.social,
-- type = 'social',
-- default_app = 'discord',
-- screen = 1
-- }
}
tag.connect_signal("request::default_layouts", function()
awful.layout.append_default_layouts({
awful.layout.suit.spiral.dwindle,
awful.layout.suit.tile,
awful.layout.suit.max
})
end)
screen.connect_signal("request::desktop_decoration", function(s)
for i, tag in pairs(tags) do
awful.tag.add(
i,
{
icon = tag.icon,
icon_only = true,
layout = awful.layout.suit.spiral.dwindle,
gap_single_client = false,
gap = beautiful.useless_gap,
screen = s,
default_app = tag.default_app,
selected = i == 1
}
)
end
end)
tag.connect_signal(
'property::layout',
function(t)
local currentLayout = awful.tag.getproperty(t, 'layout')
if (currentLayout == awful.layout.suit.max) then
t.gap = 0
else
t.gap = beautiful.useless_gap
end
end
)

View file

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="Capa_1"
enable-background="new 0 0 515.556 515.556"
height="512"
viewBox="0 0 515.556 515.556"
width="512"
version="1.1"
sodipodi:docname="user.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata11">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs9" />
<sodipodi:namedview
pagecolor="#252525"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview7"
showgrid="false"
inkscape:zoom="1.3037281"
inkscape:cx="375.24778"
inkscape:cy="241.48712"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="Capa_1"
units="in" />
<g
id="g850">
<rect
y="-1.5136719e-05"
x="-1.5136719e-05"
height="515.55603"
width="515.55603"
id="rect843"
style="opacity:1;fill:#556080;fill-opacity:1;stroke-width:0.99224943" />
<path
style="fill:#e7eced;fill-opacity:1"
id="path2"
d="m 348.918,37.751 c 50.334,50.334 50.334,131.942 0,182.276 -50.334,50.334 -131.942,50.334 -182.276,0 -50.334,-50.334 -50.334,-131.942 0,-182.276 50.334,-50.335 131.942,-50.335 182.276,0"
inkscape:connector-curvature="0" />
<path
style="fill:#e7eced;fill-opacity:1"
id="path4"
d="m 455.486,350.669 c -117.498,-79.391 -277.917,-79.391 -395.415,0 -17.433,11.769 -27.848,31.656 -27.848,53.211 V 515.556 H 483.334 V 403.88 c 0,-21.555 -10.416,-41.442 -27.848,-53.211 z"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

49
awesome/evil/battery.lua Normal file
View file

@ -0,0 +1,49 @@
-- Provides:
-- evil::battery
-- percentage (integer)
-- evil::charger
-- plugged (boolean)
local awful = require("awful")
local update_interval = 60
local battery_script = [[
sh -c "
upower -i $(upower -e | grep BAT) | grep percentage | awk '{print $2}'
"
]]
-- Subscribe to power supply status changes with acpi_listen
local charger_script = [[
sh -c '
acpi_listen | grep --line-buffered ac_adapter
'
]]
-- Periodically get battery info
awful.widget.watch(battery_script, update_interval, function(widget, stdout)
local battery = stdout:gsub("%%", "")
awesome.emit_signal("evil::battery", tonumber(battery))
end)
local emit_charger_info = function()
awful.spawn.easy_async_with_shell("cat /sys/class/power_supply/*/online", function (out)
local status = tonumber(out) == 1
awesome.emit_signal("evil::charger", status)
end)
end
-- Run once to initialize widgets
emit_charger_info()
-- Kill old acpi_listen process
awful.spawn.easy_async_with_shell("ps x | grep \"acpi_listen\" | grep -v grep | awk '{print $1}' | xargs kill", function ()
-- Update charger status with each line printed
awful.spawn.with_line_callback(charger_script, {
stdout = function(_)
emit_charger_info()
end
})
end)

118
awesome/glorious.rc.lua Normal file
View file

@ -0,0 +1,118 @@
-- ▄▄ ▄ ▄ ▄ ▄
-- ██ ▄ ▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄ ▄▄▄ █ █ █ ██ ██
-- █ █ ▀▄ ▄ ▄▀ █▀ █ █ ▀ █▀ ▀█ █ █ █ █▀ █ ▀ █▀█ █ █ ██ █
-- █▄▄█ █▄█▄█ █▀▀▀▀ ▀▀▀▄ █ █ █ █ █ █▀▀▀▀ ██ ██▀ █ ▀▀ █
-- █ █ █ █ ▀█▄▄▀ ▀▄▄▄▀ ▀█▄█▀ █ █ █ ▀█▄▄▀ █ █ █ █
-- Banner generated using `toilet -f mono9 AwesomeWM"
local gears = require('gears')
local awful = require('awful')
local beautiful = require('beautiful')
require('awful.autofocus')
-- ========================================
-- Theme
-- Load the Aesthetics
-- ========================================
beautiful.init(require('theme'))
-- ========================================
-- Layouts
-- Load the Panels
-- ========================================
require('layout')
-- ========================================
-- Modules
-- Load all the modules
-- ========================================
require('module.notifications')
require('module.auto-start')
require('module.decorate-client')
-- require('module.backdrop')
require('module.exit-screen')
require('module.quake-terminal')
require('module.titlebar')
require('module.menu')
require('module.volume-osd')
require('module.brightness-osd')
require('module.dynamic-wallpaper')
require('module.battery-notifier')
require('module.lockscreen')
-- ========================================
-- Configuration
-- Load your prefrences
-- ========================================
require('configuration.client')
require('configuration.root')
require('configuration.tags')
root.keys(require('configuration.keys.global'))
-- ========================================
-- Signals
-- Signals Listeners and Senders
-- ========================================
screen.connect_signal("request::wallpaper", function(s)
-- If wallpaper is a function, call it with the screen
if beautiful.wallpaper then
if type(beautiful.wallpaper) == "string" then
if beautiful.wallpaper:sub(1, #"#") == "#" then
gears.wallpaper.set(beautiful.wallpaper)
elseif beautiful.wallpaper:sub(1, #"/") == "/" then
gears.wallpaper.maximized(beautiful.wallpaper, s)
end
else
beautiful.wallpaper(s)
end
end
end)
-- Signal function to execute when a new client appears.
client.connect_signal(
'manage',
function(c)
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
if not _G.awesome.startup then
awful.client.setslave(c)
end
if _G.awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then
-- Prevent clients from being unreachable after screen count changes.
awful.placement.no_offscreen(c)
end
end
)
-- Enable sloppy focus, so that focus follows mouse.
client.connect_signal(
'mouse::enter',
function(c)
c:emit_signal('request::activate', 'mouse_enter', {raise = true})
end
)
client.connect_signal(
'focus',
function(c)
c.border_color = beautiful.border_focus
end
)
client.connect_signal(
'unfocus',
function(c)
c.border_color = beautiful.border_normal
end
)

72
awesome/layout/init.lua Normal file
View file

@ -0,0 +1,72 @@
local awful = require('awful')
local left_panel = require('layout.left-panel')
local top_panel = require('layout.top-panel')
local right_panel = require('layout.right-panel')
-- Create a wibox panel for each screen and add it
screen.connect_signal("request::desktop_decoration", function(s)
if s.index == 1 then
-- Create the left_panel
s.left_panel = left_panel(s)
-- Create the Top bar
s.top_panel = top_panel(s, true)
else
-- Create the Top bar
s.top_panel = top_panel(s, false)
end
s.right_panel = right_panel(s)
s.right_panel_show_again = false
end)
-- Hide bars when app go fullscreen
function updateBarsVisibility()
for s in screen do
focused = awful.screen.focused()
if s.selected_tag then
local fullscreen = s.selected_tag.fullscreenMode
-- Order matter here for shadow
s.top_panel.visible = not fullscreen
if s.left_panel then
s.left_panel.visible = not fullscreen
end
if s.right_panel then
if fullscreen and focused.right_panel.visible then
focused.right_panel:toggle()
focused.right_panel_show_again = true
elseif not fullscreen and not focused.right_panel.visible and focused.right_panel_show_again then
focused.right_panel:toggle()
focused.right_panel_show_again = false
end
end
end
end
end
tag.connect_signal(
'property::selected',
function(t)
updateBarsVisibility()
end
)
client.connect_signal(
'property::fullscreen',
function(c)
if c.first_tag then
c.first_tag.fullscreenMode = c.fullscreen
end
updateBarsVisibility()
end
)
client.connect_signal(
'unmanage',
function(c)
if c.fullscreen then
c.screen.selected_tag.fullscreenMode = false
updateBarsVisibility()
end
end
)

View file

@ -0,0 +1,74 @@
local awful = require('awful')
local beautiful = require('beautiful')
local wibox = require('wibox')
local gears = require('gears')
local dpi = beautiful.xresources.apply_dpi
local icons = require('theme.icons')
local tag_list = require('widget.tag-list')
local clickable_container = require('widget.clickable-container')
return function(s, panel, action_bar_width)
local menu_icon = wibox.widget {
{
id = 'menu_btn',
image = icons.menu,
resize = true,
widget = wibox.widget.imagebox
},
margins = dpi(10),
widget = wibox.container.margin
}
local home_button = wibox.widget {
{
menu_icon,
widget = clickable_container
},
bg = beautiful.background .. '66',
widget = wibox.container.background
}
home_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
panel:toggle()
end
)
)
)
panel:connect_signal(
'opened',
function()
menu_icon.menu_btn:set_image(gears.surface(icons.close_small))
end
)
panel:connect_signal(
'closed',
function()
menu_icon.menu_btn:set_image(gears.surface(icons.menu))
end
)
return wibox.widget {
id = 'action_bar',
layout = wibox.layout.align.vertical,
forced_width = action_bar_width,
{
require('widget.search-apps')(),
tag_list(s),
require("widget.xdg-folders"),
layout = wibox.layout.fixed.vertical,
},
nil,
home_button
}
end

View file

@ -0,0 +1,72 @@
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = require('beautiful').xresources.apply_dpi
local hardware_header = wibox.widget
{
text = 'Hardware Monitor',
font = 'SF Pro Text Regular 12',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
return wibox.widget {
layout = wibox.layout.fixed.vertical,
{
{
hardware_header,
left = dpi(24),
right = dpi(24),
widget = wibox.container.margin
},
bg = beautiful.groups_title_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, true, true, false, false, beautiful.groups_radius)
end,
forced_height = dpi(35),
widget = wibox.container.background
},
{
require('widget.cpu.cpu-meter'),
bg = beautiful.groups_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, false, false, beautiful.groups_radius)
end,
forced_height = dpi(48),
widget = wibox.container.background
},
{
require('widget.ram.ram-meter'),
bg = beautiful.groups_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, false, false, beautiful.groups_radius)
end,
forced_height = dpi(48),
widget = wibox.container.background
},
{
require('widget.temperature.temperature-meter'),
bg = beautiful.groups_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, false, false, beautiful.groups_radius)
end,
forced_height = dpi(48),
widget = wibox.container.background
},
{
require('widget.harddrive.harddrive-meter'),
bg = beautiful.groups_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, true, true, beautiful.groups_radius)
end,
forced_height = dpi(48),
widget = wibox.container.background
},
}

View file

@ -0,0 +1,137 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local icons = require('theme.icons')
return function(_, panel)
local search_widget = wibox.widget {
{
{
{
image = icons.search,
resize = true,
widget = wibox.widget.imagebox
},
top = dpi(12),
bottom = dpi(12),
widget = wibox.container.margin
},
{
text = 'Global Search',
font = 'SF Pro Text Regular 12',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
},
spacing = dpi(24),
layout = wibox.layout.fixed.horizontal
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
search_button = wibox.widget {
{
search_widget,
widget = clickable_container
},
bg = beautiful.groups_bg,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, beautiful.groups_radius)
end,
widget = wibox.container.background
}
search_button:buttons(
awful.util.table.join(
awful.button(
{},
1,
function()
panel:run_rofi()
end
)
)
)
local exit_widget = {
{
{
{
image = icons.logout,
resize = true,
widget = wibox.widget.imagebox
},
top = dpi(12),
bottom = dpi(12),
widget = wibox.container.margin
},
{
text = 'End work session',
font = 'SF Pro Text Regular 12',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
},
spacing = dpi(24),
layout = wibox.layout.fixed.horizontal
},
left = dpi(24),
right = dpi(24),
forced_height = dpi(48),
widget = wibox.container.margin
}
exit_button = wibox.widget {
{
exit_widget,
widget = clickable_container
},
bg = beautiful.groups_bg,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, beautiful.groups_radius)
end,
widget = wibox.container.background
}
exit_button:buttons(
awful.util.table.join(
awful.button(
{},
1,
function()
panel:toggle()
awesome.emit_signal("module::exit_screen_show")
end
)
)
)
return wibox.widget {
{
{
layout = wibox.layout.fixed.vertical,
spacing = dpi(7),
search_button,
require('layout.left-panel.dashboard.hardware-monitor'),
require('layout.left-panel.dashboard.quick-settings'),
},
nil,
exit_button,
layout = wibox.layout.align.vertical
},
margins = dpi(16),
widget = wibox.container.margin
}
end

View file

@ -0,0 +1,105 @@
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = require('beautiful').xresources.apply_dpi
local bar_color = beautiful.groups_bg
local quick_header = wibox.widget
{
text = 'Quick Settings',
font = 'SF Pro Text Regular 12',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
return wibox.widget {
layout = wibox.layout.fixed.vertical,
spacing = dpi(7),
{
layout = wibox.layout.fixed.vertical,
{
{
quick_header,
left = dpi(24),
right = dpi(24),
widget = wibox.container.margin
},
forced_height = dpi(35),
bg = beautiful.groups_title_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, true, true, false, false, beautiful.groups_radius)
end,
widget = wibox.container.background
},
{
require('widget.brightness.brightness-slider'),
bg = bar_color,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, false, false, beautiful.groups_radius) end,
forced_height = dpi(48),
widget = wibox.container.background
},
{
require('widget.volume.volume-slider'),
bg = bar_color,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, false, false, beautiful.groups_radius) end,
forced_height = dpi(48),
widget = wibox.container.background
},
{
require('widget.network.network-toggle'),
bg = bar_color,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, false, false, beautiful.groups_radius) end,
forced_height = dpi(48),
widget = wibox.container.background
},
{
require('widget.bluetooth.bluetooth-toggle'),
bg = bar_color,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, false, false, beautiful.groups_radius) end,
forced_height = dpi(48),
widget = wibox.container.background
},
{
require('widget.blue-light'),
bg = bar_color,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, true, true, beautiful.groups_radius) end,
forced_height = dpi(48),
widget = wibox.container.background
}
},
{
layout = wibox.layout.fixed.vertical,
{
require('widget.window-effects.blur-toggle'),
bg = bar_color,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, true, true, false, false, beautiful.groups_radius) end,
forced_height = dpi(48),
widget = wibox.container.background
},
{
require('widget.window-effects.blur-strength-slider'),
bg = bar_color,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(cr, width, height, false, false, true, true, beautiful.groups_radius) end,
forced_height = dpi(48),
widget = wibox.container.background
}
}
}

View file

@ -0,0 +1,124 @@
local awful = require('awful')
local beautiful = require('beautiful')
local wibox = require('wibox')
local apps = require('configuration.apps')
local dpi = require('beautiful').xresources.apply_dpi
local left_panel = function(screen)
local action_bar_width = dpi(45)
local panel_content_width = dpi(350)
local panel =
wibox {
screen = screen,
width = action_bar_width,
type = 'dock',
height = screen.geometry.height - 500,
x = screen.geometry.x,
y = screen.geometry.y + 250,
ontop = false,
bg = beautiful.background,
fg = beautiful.fg_normal
}
panel.opened = false
panel:struts(
{
left = action_bar_width
}
)
local backdrop = wibox {
ontop = true,
screen = screen,
bg = beautiful.transparent,
type = 'utility',
x = screen.geometry.x,
y = screen.geometry.y,
width = screen.geometry.width,
height = screen.geometry.height
}
function panel:run_rofi()
_G.awesome.spawn(
apps.default.rofiglobal,
false,
false,
false,
false,
function()
panel:toggle()
end
)
-- Hide panel content if rofi global search is opened
panel:get_children_by_id('panel_content')[1].visible = false
end
local openPanel = function(should_run_rofi)
panel.width = action_bar_width + panel_content_width
backdrop.visible = true
panel.visible = false
panel.visible = true
panel:get_children_by_id('panel_content')[1].visible = true
if should_run_rofi then
panel:run_rofi()
end
panel:emit_signal('opened')
end
local closePanel = function()
panel.width = action_bar_width
panel:get_children_by_id('panel_content')[1].visible = false
backdrop.visible = false
panel:emit_signal('closed')
end
-- Hide this panel when app dashboard is called.
function panel:HideDashboard()
closePanel()
end
function panel:toggle(should_run_rofi)
self.opened = not self.opened
if self.opened then
openPanel(should_run_rofi)
else
closePanel()
end
end
backdrop:buttons(
awful.util.table.join(
awful.button(
{},
1,
function()
panel:toggle()
end
)
)
)
panel:setup {
layout = wibox.layout.align.horizontal,
nil,
{
id = 'panel_content',
bg = beautiful.transparent,
widget = wibox.container.background,
visible = false,
forced_width = panel_content_width,
{
require('layout.left-panel.dashboard')(screen, panel),
layout = wibox.layout.stack
}
},
require('layout.left-panel.action-bar')(screen, panel, action_bar_width)
}
return panel
end
return left_panel

View file

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="Capa_1"
enable-background="new 0 0 374.706 374.706"
height="240"
viewBox="0 0 175.64344 175.64344"
width="240"
class=""
version="1.1"
sodipodi:docname="notification.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata16">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs14" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview12"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.4609375"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="Capa_1" />
<g
id="g9"
transform="matrix(0.38752239,0,0,0.38752239,14.249432,12.505775)">
<path
id="path-1_59_"
d="m 80.294,53.529 h 294.412 v 53.529 H 80.294 Z"
transform="translate(4,3)"
data-original="#000000"
class="active-path"
data-old_color="#000000"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 80.294,160.588 h 267.647 v 53.529 H 80.294 Z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path3"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path-1_58_"
d="m 80.294,267.647 h 294.412 v 53.529 H 80.294 Z"
transform="translate(4,11)"
data-original="#000000"
class="active-path"
data-old_color="#000000"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path-2_11_"
d="m 0,53.529 h 53.529 v 53.529 H 0 Z"
transform="translate(1,3)"
data-original="#000000"
class="active-path"
data-old_color="#000000"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path-2_10_"
d="m 0,160.588 h 53.529 v 53.529 H 0 Z"
transform="translate(1,7)"
data-original="#000000"
class="active-path"
data-old_color="#000000"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path-2_9_"
d="m 0,267.647 h 53.529 v 53.529 H 0 Z"
transform="translate(1,11)"
data-original="#000000"
class="active-path"
data-old_color="#000000"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,175 @@
local awful = require('awful')
local wibox = require('wibox')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
panel_visible = false
local right_panel = function(s)
-- Set right panel geometry
local panel_width = dpi(350)
local panel_x = s.geometry.x + s.geometry.width - panel_width
local panel = wibox {
ontop = true,
screen = s,
type = 'dock',
width = panel_width,
height = s.geometry.height,
x = panel_x,
y = s.geometry.y,
bg = beautiful.background,
fg = beautiful.fg_normal
}
panel.opened = false
s.backdrop_rdb = wibox
{
ontop = true,
screen = s,
bg = beautiful.transparent,
type = 'utility',
x = s.geometry.x,
y = s.geometry.y,
width = s.geometry.width,
height = s.geometry.height
}
panel:struts
{
right = 0
}
open_panel = function()
local focused = awful.screen.focused()
panel_visible = true
focused.backdrop_rdb.visible = true
focused.right_panel.visible = true
panel:emit_signal('opened')
end
close_panel = function()
local focused = awful.screen.focused()
panel_visible = false
focused.right_panel.visible = false
focused.backdrop_rdb.visible = false
panel:emit_signal('closed')
end
-- Hide this panel when app dashboard is called.
function panel:HideDashboard()
close_panel()
end
function panel:toggle()
self.opened = not self.opened
if self.opened then
open_panel()
else
close_panel()
end
end
function panel:switch_pane(mode)
if mode == 'notif_mode' then
-- Update Content
panel:get_children_by_id('notif_id')[1].visible = true
panel:get_children_by_id('pane_id')[1].visible = false
elseif mode == 'today_mode' then
-- Update Content
panel:get_children_by_id('notif_id')[1].visible = false
panel:get_children_by_id('pane_id')[1].visible = true
end
end
s.backdrop_rdb:buttons(
awful.util.table.join(
awful.button(
{},
1,
function()
panel:toggle()
end
)
)
)
local separator = wibox.widget {
orientation = 'horizontal',
opacity = 0.0,
forced_height = 15,
widget = wibox.widget.separator,
}
local line_separator = wibox.widget {
orientation = 'horizontal',
forced_height = dpi(1),
span_ratio = 1.0,
color = beautiful.groups_title_bg,
widget = wibox.widget.separator
}
panel : setup {
{
expand = 'none',
layout = wibox.layout.fixed.vertical,
{
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
require('layout.right-panel.panel-mode-switcher'),
nil
},
separator,
line_separator,
separator,
{
layout = wibox.layout.stack,
-- Today Pane
{
id = 'pane_id',
visible = true,
layout = wibox.layout.fixed.vertical,
{
layout = wibox.layout.fixed.vertical,
spacing = dpi(7),
require('widget.user-profile'),
require('widget.weather'),
require('widget.email'),
require('widget.social-media'),
require('widget.calculator')
},
},
-- Notification Center
{
id = 'notif_id',
visible = false,
require('widget.notif-center')(s),
layout = wibox.layout.fixed.vertical,
}
},
},
margins = dpi(16),
widget = wibox.container.margin
}
return panel
end
return right_panel

View file

@ -0,0 +1,135 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = require('beautiful').xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
-- Variable used for switching panel modes
right_panel_mode = 'today_mode'
local active_button = beautiful.groups_title_bg
local inactive_button = beautiful.transparent
local notif_text = wibox.widget
{
text = 'Notifications',
font = 'SF Pro Text Bold 11',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local notif_button = clickable_container(
wibox.container.margin(
notif_text, dpi(0), dpi(0), dpi(7), dpi(7)
)
)
local wrap_notif = wibox.widget {
notif_button,
forced_width = dpi(140),
bg = inactive_button,
border_width = dpi(1),
border_color = beautiful.groups_title_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(
cr, width, height, false, true, true, false, beautiful.groups_radius
)
end,
widget = wibox.container.background
}
local today_text = wibox.widget
{
text = 'Today',
font = 'SF Pro Text Bold 11',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local today_button = clickable_container(
wibox.container.margin(
today_text, dpi(0), dpi(0), dpi(7), dpi(7)
)
)
local wrap_today = wibox.widget {
today_button,
forced_width = dpi(140),
bg = active_button,
border_width = dpi(1),
border_color = beautiful.groups_title_bg,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(
cr, width, height, true, false, false, true, beautiful.groups_radius
)
end,
widget = wibox.container.background
}
local switcher = wibox.widget {
expand = 'none',
layout = wibox.layout.fixed.horizontal,
wrap_today,
wrap_notif
}
function switch_rdb_pane(right_panel_mode)
local focused = awful.screen.focused()
if right_panel_mode == 'notif_mode' then
-- Update button color
wrap_notif.bg = active_button
wrap_today.bg = inactive_button
-- Change panel content of right-panel.lua
focused.right_panel:switch_pane(right_panel_mode)
elseif right_panel_mode == 'today_mode' then
-- Update button color
wrap_notif.bg = inactive_button
wrap_today.bg = active_button
-- Change panel content of right-panel.lua
focused.right_panel:switch_pane(right_panel_mode)
end
end
notif_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
switch_rdb_pane('notif_mode')
end
)
)
)
today_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
switch_rdb_pane('today_mode')
end
)
)
)
return switcher

View file

@ -0,0 +1,62 @@
local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local dpi = require('beautiful').xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local config_dir = gears.filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'layout/right-panel/icons/'
-- ▄▄▄▄▄ ▄ ▄
-- █ █ ▄ ▄ ▄▄█▄▄ ▄▄█▄▄ ▄▄▄ ▄ ▄▄
-- █▄▄▄▄▀ █ █ █ █ █▀ ▀█ █▀ █
-- █ █ █ █ █ █ █ █ █ █
-- █▄▄▄▄▀ ▀▄▄▀█ ▀▄▄ ▀▄▄ ▀█▄█▀ █ █
-- The button in top panel
local return_button = function()
local widget =
wibox.widget {
{
id = 'icon',
image = widget_icon_dir .. 'notification' .. '.svg',
widget = wibox.widget.imagebox,
resize = true
},
layout = wibox.layout.align.horizontal
}
local widget_button = wibox.widget {
{
widget,
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
widget_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.screen.focused().right_panel:toggle()
end
)
)
)
return widget_button
end
return return_button

336
awesome/layout/top-panel.lua Executable file
View file

@ -0,0 +1,336 @@
local awful = require('awful')
local beautiful = require('beautiful')
local wibox = require('wibox')
local gears = require('gears')
local icons = require('theme.icons')
local dpi = beautiful.xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local task_list = require('widget.task-list')
local TopPanel = function(s, offset)
local offsetx = 0
if offset == true then
offsetx = dpi(45)
end
local panel = wibox
{
ontop = true,
screen = s,
type = 'dock',
height = dpi(28),
width = s.geometry.width - offsetx,
x = s.geometry.x + offsetx,
y = s.geometry.y,
stretch = false,
bg = beautiful.background,
fg = beautiful.fg_normal
}
panel:struts
{
top = dpi(28)
}
panel:connect_signal(
'mouse::enter',
function()
local w = mouse.current_wibox
if w then
w.cursor = 'left_ptr'
end
end
)
s.add_button = wibox.widget {
{
{
{
{
image = icons.plus,
resize = true,
widget = wibox.widget.imagebox
},
margins = dpi(4),
widget = wibox.container.margin
},
widget = clickable_container
},
bg = beautiful.transparent,
shape = gears.shape.circle,
widget = wibox.container.background
},
margins = dpi(4),
widget = wibox.container.margin
}
s.add_button:buttons(
gears.table.join(
awful.button(
{},
1,
nil,
function()
awful.spawn(
awful.screen.focused().selected_tag.default_app,
{
tag = mouse.screen.selected_tag,
placement = awful.placement.bottom_right
}
)
end
)
)
)
local layout_box = function(s)
local layoutbox = wibox.widget {
{
awful.widget.layoutbox(s),
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
layoutbox:buttons(
awful.util.table.join(
awful.button(
{},
1,
function()
awful.layout.inc(1)
end
),
awful.button(
{},
3,
function()
awful.layout.inc(-1)
end
),
awful.button(
{},
4,
function()
awful.layout.inc(1)
end
),
awful.button(
{},
5,
function()
awful.layout.inc(-1)
end
)
)
)
return layoutbox
end
s.clock_widget = wibox.widget.textclock(
'<span font="SF Pro Text Bold 11">%l:%M %p</span>',
1
)
s.clock_widget = wibox.widget {
{
s.clock_widget,
margins = dpi(7),
widget = wibox.container.margin
},
widget = clickable_container
}
s.clock_widget:connect_signal(
'mouse::enter',
function()
local w = mouse.current_wibox
if w then
old_cursor, old_wibox = w.cursor, w
w.cursor = 'hand1'
end
end
)
s.clock_widget:connect_signal(
'mouse::leave',
function()
if old_wibox then
old_wibox.cursor = old_cursor
old_wibox = nil
end
end
)
s.clock_tooltip = awful.tooltip
{
objects = {s.clock_widget},
mode = 'outside',
delay_show = 1,
preferred_positions = {'right', 'left', 'top', 'bottom'},
preferred_alignments = {'middle'},
margin_leftright = dpi(8),
margin_topbottom = dpi(8),
timer_function = function()
local ordinal = nil
local day = os.date('%d')
local month = os.date('%B')
local first_digit = string.sub(day, 0, 1)
local last_digit = string.sub(day, -1)
if first_digit == '0' then
day = last_digit
end
if last_digit == '1' and day ~= '11' then
ordinal = 'st'
elseif last_digit == '2' and day ~= '12' then
ordinal = 'nd'
elseif last_digit == '3' and day ~= '13' then
ordinal = 'rd'
else
ordinal = 'th'
end
local date_str = 'Today is the ' ..
'<b>' .. day .. ordinal ..
' of ' .. month .. '</b>.\n' ..
'And it\'s ' .. os.date('%A') .. ' ya idiot!'
return date_str
end,
}
s.clock_widget:connect_signal(
'button::press',
function(self, lx, ly, button)
-- Hide the tooltip when you press the clock widget
if s.clock_tooltip.visible and button == 1 then
s.clock_tooltip.visible = false
end
end
)
s.month_calendar = awful.widget.calendar_popup.month({
start_sunday = true,
spacing = dpi(5),
font = 'SF Pro Text Regular 10',
long_weekdays = true,
margin = dpi(5),
screen = s,
style_month = {
border_width = dpi(0),
padding = dpi(20),
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(
cr, width, height, true, true, true, true, beautiful.groups_radius
)
end
},
style_header = {
border_width = 0,
bg_color = beautiful.transparent
},
style_weekday = {
border_width = 0,
bg_color = beautiful.transparent
},
style_normal = {
border_width = 0,
bg_color = beautiful.transparent
},
style_focus = {
border_width = dpi(0),
border_color = beautiful.fg_normal,
bg_color = beautiful.accent,
shape = function(cr, width, height)
gears.shape.partially_rounded_rect(
cr, width, height, true, true, true, true, dpi(4))
end,
},
})
s.month_calendar:attach(
s.clock_widget,
'tc',
{
on_pressed = true,
on_hover = false
}
)
s.systray = wibox.widget {
visible = false,
base_size = dpi(20),
horizontal = true,
screen = 'primary',
widget = wibox.widget.systray
}
s.tray_toggler = require('widget.tray-toggler')
s.updater = require('widget.package-updater')()
s.screen_rec = require('widget.screen-recorder')()
s.music = require('widget.music')()
s.bluetooth = require('widget.bluetooth')()
s.network = require('widget.network')()
s.battery = require('widget.battery')()
s.r_dashboard = require('layout.right-panel.right-panel-opener')()
panel : setup {
layout = wibox.layout.align.horizontal,
expand = "none",
{
layout = wibox.layout.fixed.horizontal,
task_list(s),
s.add_button
},
s.clock_widget,
{
layout = wibox.layout.fixed.horizontal,
spacing = dpi(5),
{
s.systray,
margins = dpi(5),
widget = wibox.container.margin
},
s.tray_toggler,
s.updater,
s.screen_rec,
s.music,
s.bluetooth,
s.network,
s.battery,
layout_box(s),
s.r_dashboard
}
}
return panel
end
return TopPanel

BIN
awesome/library/liblua_pam.so Executable file

Binary file not shown.

View file

@ -0,0 +1,35 @@
-- MODULE AUTO-START
-- Run all the apps listed in configuration/apps.lua as run_on_start_up only once when awesome start
local awful = require('awful')
local apps = require('configuration.apps')
local debugger_mode = false
local run_once = function(cmd)
local findme = cmd
local firstspace = cmd:find(' ')
if firstspace then
findme = cmd:sub(0, firstspace - 1)
end
awful.spawn.easy_async_with_shell(
string.format('pgrep -u $USER -x %s > /dev/null || (%s)', findme, cmd),
function(stdout, stderr)
-- Debugger
if not stderr or stderr == '' or not debugger_mode then
return
end
require('naughty').notification({
app_name = 'Start-up Applications',
title = '<b>Oof! Error detected when starting an application!</b>',
message = stderr:gsub('%\n', ''),
timeout = 20,
icon = require('beautiful').awesome_icon
})
end
)
end
for _, app in ipairs(apps.run_on_start_up) do
run_once(app)
end

View file

@ -0,0 +1,83 @@
local wibox = require('wibox')
local gears = require('gears')
local awful = require('awful')
local function update_backdrop(w, c)
local cairo = require('lgi').cairo
local geo = c.screen.geometry
w.x = geo.x
w.y = geo.y
w.width = geo.width
w.height = geo.height
-- Create an image surface that is as large as the wibox
local shape = cairo.ImageSurface.create(cairo.Format.A1, geo.width, geo.height)
local cr = cairo.Context(shape)
-- Fill with "completely opaque"
cr.operator = 'SOURCE'
cr:set_source_rgba(1, 1, 1, 1)
cr:paint()
-- Remove the shape of the client
local c_geo = c:geometry()
local c_shape = gears.surface(c.shape_bounding)
cr:set_source_rgba(0, 0, 0, 0)
cr:mask_surface(c_shape, c_geo.x + c.border_width - geo.x, c_geo.y + c.border_width - geo.y)
c_shape:finish()
w.shape_bounding = shape._native
shape:finish()
w:draw()
end
local function backdrop(c)
local function update()
update_backdrop(c.backdrop, c)
end
if not c.backdrop then
c.backdrop = wibox {ontop = true, bg = '#00000054', type = 'splash'}
c.backdrop:buttons(
awful.util.table.join(
awful.button(
{},
1,
function()
c:kill()
end
)
)
)
c:connect_signal('property::geometry', update)
c:connect_signal(
'property::shape_client_bounding',
function()
gears.timer.delayed_call(update)
end
)
c:connect_signal(
'unmanage',
function()
c.backdrop.visible = false
end
)
c:connect_signal(
'property::shape_bounding',
function()
gears.timer.delayed_call(update)
end
)
end
update()
c.backdrop.visible = true
end
client.connect_signal(
'manage',
function(c)
if c.draw_backdrop == true then
backdrop(c)
end
end
)

View file

@ -0,0 +1,157 @@
-- Battery notification module
-- Dependencies:
-- acpid, upower, acpi_listens, acpi_call
-- enabled acpid service
local awful = require('awful')
local naughty = require('naughty')
local icons = require('theme.icons')
local update_interval = 30
-- Periodically get battery info
awful.widget.watch(
[[
sh -c "
upower -i $(upower -e | grep BAT) | grep percentage | awk '{print $2}'
"]],
update_interval,
function(widget, stdout)
local battery = stdout:gsub("%%", "")
awesome.emit_signal("module::battery", tonumber(battery))
end
)
local emit_charger_info = function()
awful.spawn.easy_async_with_shell(
"cat /sys/class/power_supply/*/online",
function (stdout)
status = tonumber(stdout)
if status == 1 then
awesome.emit_signal("module::charger", true)
else
awesome.emit_signal("module::charger", false)
end
end
)
end
emit_charger_info()
awful.spawn.easy_async_with_shell(
"ps x | grep \"acpi_listen\" | grep -v grep | awk '{print $1}' | xargs kill",
function ()
awful.spawn.with_line_callback(
[[
sh -c '
acpi_listen | grep --line-buffered ac_adapter
']],
{
stdout = function(_)
emit_charger_info()
end
}
)
end
)
local charger_plugged = true
local battery_full_already_notified = true
local battery_low_already_notified = false
local battery_critical_already_notified = false
local last_notification
local function send_notification(title, text, icon, timeout, urgency)
local args = {
title = title,
text = text,
icon = icon,
timeout = timeout,
urgency = urgency,
app_name = 'Power Notification'
}
if last_notification and not last_notification.is_expired then
last_notification.title = args.title
last_notification.text = args.text
last_notification.icon = args.icon
else
last_notification = naughty.notification(args)
end
last_notification = notification
end
-- Full / Low / Critical notifications
awesome.connect_signal("module::battery", function(battery)
local text
local icon
local timeout
if not charger_plugged then
icon = icons.batt_discharging
if battery < 6 and not battery_critical_already_notified then
battery_critical_already_notified = true
text = "Battery Critical!"
timeout = 0
urgency = 'critical'
elseif battery < 16 and not battery_low_already_notified then
battery_low_already_notified = true
text = "Battery Full!"
timeout = 6
urgency = 'normal'
end
else
icon = icons.batt_charging
if battery ~= nil then
if battery > 99 and not battery_full_already_notified then
battery_full_already_notified = true
text = "Battery Full!"
timeout = 6
urgency = 'normal'
end
end
end
-- If text has been initialized, then we need to send a
-- notification
if text then
send_notification("Battery status", text, icon, timeout, urgency)
end
end)
-- Charger notifications
local charger_first_time = true
awesome.connect_signal("module::charger", function(plugged)
charger_plugged = plugged
local text
local icon
-- TODO if charger is plugged and battery is full, then set
-- battery_full_already_notified to true
if plugged then
battery_critical_already_notified = false
battery_low_already_notified = false
text = "Plugged"
icon = icons.batt_charging
urgency = 'normal'
else
battery_full_already_notified = false
text = "Unplugged"
icon = icons.batt_discharging
urgency = 'normal'
end
-- Do not send a notification the first time (when AwesomeWM (re)starts)
if charger_first_time then
charger_first_time = false
else
send_notification("Charger Status", text, icon, 3, urgency)
end
end)

View file

@ -0,0 +1,272 @@
local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
local beautiful = require('beautiful')
local dpi = require('beautiful').xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local icons = require('theme.icons')
local spawn = require('awful.spawn')
screen.connect_signal("request::desktop_decoration", function(s)
s.show_bri_osd = false
local osd_header = wibox.widget {
text = 'Brightness',
font = 'VictorMono Nerd Font 12',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local osd_value = wibox.widget {
text = '0%',
font = 'VictorMono Nerd Font 12',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local slider_osd = wibox.widget {
nil,
{
id = 'bri_osd_slider',
bar_shape = gears.shape.rounded_rect,
bar_height = dpi(2),
bar_color = '#ffffff20',
bar_active_color = '#f2f2f2EE',
handle_color = '#ffffff',
handle_shape = gears.shape.circle,
handle_width = dpi(15),
handle_border_color = '#00000012',
handle_border_width = dpi(1),
maximum = 100,
widget = wibox.widget.slider,
},
nil,
expand = 'none',
layout = wibox.layout.align.vertical
}
local bri_osd_slider = slider_osd.bri_osd_slider
-- Update brightness level using slider value
bri_osd_slider:connect_signal(
'property::value',
function()
local brightness_level = bri_osd_slider:get_value()
spawn('light -S ' .. math.max(brightness_level, 5), false)
-- Update textbox widget text
osd_value.text = brightness_level .. '%'
-- Update the brightness slider if values here change
awesome.emit_signal('widget::brightness:update', brightness_level)
if s.show_bri_osd then
awesome.emit_signal(
'module::brightness_osd:show',
true
)
end
end
)
bri_osd_slider:connect_signal(
'button::press',
function()
s.show_bri_osd = true
end
)
bri_osd_slider:connect_signal(
'button::release',
function()
s.show_bri_osd = false
end
)
bri_osd_slider:connect_signal(
'mouse::enter',
function()
s.show_bri_osd = true
end
)
-- The emit will come from brightness slider
awesome.connect_signal(
'module::brightness_osd',
function(brightness)
bri_osd_slider:set_value(brightness)
end
)
local icon = wibox.widget {
{
image = icons.brightness,
resize = true,
widget = wibox.widget.imagebox
},
top = dpi(12),
bottom = dpi(12),
widget = wibox.container.margin
}
local brightness_slider_osd = wibox.widget {
icon,
slider_osd,
spacing = dpi(24),
layout = wibox.layout.fixed.horizontal
}
-- Create the box
local osd_height = dpi(100)
local osd_width = dpi(300)
local osd_margin = dpi(10)
s.brightness_osd_overlay = awful.popup {
widget = {
-- Removing this block will cause an error...
},
ontop = true,
visible = false,
type = 'notification',
screen = s,
height = osd_height,
width = osd_width,
maximum_height = osd_height,
maximum_width = osd_width,
offset = dpi(5),
shape = gears.shape.rectangle,
bg = beautiful.transparent,
preferred_anchors = 'middle',
preferred_positions = {'left', 'right', 'top', 'bottom'},
}
s.brightness_osd_overlay : setup {
{
{
{
layout = wibox.layout.align.horizontal,
expand = 'none',
forced_height = dpi(48),
osd_header,
nil,
osd_value
},
brightness_slider_osd,
layout = wibox.layout.fixed.vertical
},
left = dpi(24),
right = dpi(24),
widget = wibox.container.margin
},
bg = beautiful.background,
shape = gears.shape.rounded_rect,
widget = wibox.container.background()
}
local hide_osd = gears.timer {
timeout = 2,
autostart = true,
callback = function()
awful.screen.focused().brightness_osd_overlay.visible = false
end
}
local timer_rerun = function()
if hide_osd.started then
hide_osd:again()
else
hide_osd:start()
end
end
-- Reset timer on mouse hover
s.brightness_osd_overlay:connect_signal(
'mouse::enter',
function()
s.show_bri_osd = true
timer_rerun()
end
)
s.brightness_osd_overlay:connect_signal(
'mouse::enter',
function()
s.show_bri_osd = false
timer_rerun()
end
)
local placement_placer = function()
local focused = awful.screen.focused()
local right_panel = focused.right_panel
local left_panel = focused.left_panel
local volume_osd = focused.brightness_osd_overlay
if right_panel and left_panel then
if right_panel.visible then
awful.placement.bottom_left(focused.brightness_osd_overlay, { margins = {
left = osd_margin + left_panel.width,
right = 0,
top = 0,
bottom = osd_margin,
},
parent = focused }
)
return
end
end
if right_panel then
if right_panel.visible then
awful.placement.bottom_left(focused.brightness_osd_overlay, { margins = {
left = osd_margin,
right = 0,
top = 0,
bottom = osd_margin,
},
parent = focused }
)
return
end
end
awful.placement.bottom_right(focused.brightness_osd_overlay, { margins = {
left = 0,
right = osd_margin,
top = 0,
bottom = osd_margin,
},
parent = focused }
)
end
awesome.connect_signal(
'module::brightness_osd:show',
function(bool)
placement_placer()
awful.screen.focused().brightness_osd_overlay.visible = bool
if bool then
timer_rerun()
awesome.emit_signal(
'module::volume_osd:show',
false
)
else
if hide_osd.started then
hide_osd:stop()
end
end
end
)
end)

View file

@ -0,0 +1,112 @@
local awful = require('awful')
local gears = require('gears')
local beautiful = require('beautiful')
local function render_client(client, mode)
if client.skip_decoration or (client.rendering_mode == mode) then
return
end
client.rendering_mode = mode
client.floating = false
client.maximized = false
client.above = false
client.below = false
client.ontop = false
client.sticky = false
client.maximized_horizontal = false
client.maximized_vertical = false
if client.rendering_mode == 'maximized' then
client.border_width = 0
client.shape = function(cr, w, h)
gears.shape.rectangle(cr, w, h)
end
elseif client.rendering_mode ~= 'maximized' then
client.border_width = beautiful.border_width
client.shape = function(cr, w, h)
gears.shape.rounded_rect(cr, w, h, beautiful.client_radius)
end
end
end
local changes_on_screen_called = false
local function changes_on_screen(current_screen)
local tag_is_max = current_screen.selected_tag ~= nil and
current_screen.selected_tag.layout == awful.layout.suit.max
local clients_to_manage = {}
for _, client in pairs(current_screen.clients) do
if not client.skip_decoration and not client.hidden then
table.insert(clients_to_manage, client)
end
end
if (tag_is_max or #clients_to_manage == 1) then
current_screen.client_mode = 'maximized'
else
current_screen.client_mode = 'dwindle'
end
for _, client in pairs(clients_to_manage) do
render_client(client, current_screen.client_mode)
end
changes_on_screen_called = false
end
function client_callback(client)
if not changes_on_screen_called then
if not client.skip_decoration and client.screen then
changes_on_screen_called = true
local screen = client.screen
gears.timer.delayed_call(
function()
changes_on_screen(screen)
end
)
end
end
end
function tag_callback(tag)
if not changes_on_screen_called then
if tag.screen then
changes_on_screen_called = true
local screen = tag.screen
gears.timer.delayed_call(
function()
changes_on_screen(screen)
end
)
end
end
end
client.connect_signal('manage', client_callback)
client.connect_signal('unmanage', client_callback)
client.connect_signal('property::hidden', client_callback)
client.connect_signal('property::minimized', client_callback)
client.connect_signal(
'property::fullscreen',
function(c)
if c.fullscreen then
render_client(c, 'maximized')
else
client_callback(c)
end
end
)
tag.connect_signal('property::selected', tag_callback)
tag.connect_signal('property::layout', tag_callback)

View file

@ -0,0 +1,225 @@
----------------------------------------------------------------------------
--- Wallpaper changer module
--
-- @author Gerome Matilla &lt;gerome.matilla07@gmail.com&gt;
-- @copyright 2019 Gerome Matilla
-- @module wallchange
--
--- Nevermind this. Do what you want.
----------------------------------------------------------------------------
-- This module changes wallpaper based on declared time
-- It checks the difference between the current time and the next scheduled time
-- Then convert it to seconds to set it as a timeout value
-- Limitations:
-- Timeout paused when laptop/pc is suspended or in sleep mode, and there's probably some bugs too so whatever
local awful = require('awful')
local filesystem = require('gears.filesystem')
local gears = require('gears')
local beautiful = require('beautiful')
-- ========================================
-- Configuration
-- Change your preference here
-- ========================================
-- Wallpaper directory. The default is:
local wall_dir = filesystem.get_configuration_dir() .. 'theme/wallpapers/'
-- local wall_dir = os.getenv('HOME') .. 'Pictures/Wallpapers/'
-- Wallpapers filename
-- Note:
-- Default image format is jpg
wallpaper_morning = 'morning-wallpaper.jpg'
wallpaper_noon = 'noon-wallpaper.jpg'
wallpaper_night = 'night-wallpaper.jpg'
wallpaper_midnight = 'midnight-wallpaper.jpg'
-- Change the wallpaper on scheduled time
morning_schedule = '06:22:00'
noon_schedule = '12:00:00'
night_schedule = '17:58:00'
midnight_schedule = '24:00:00'
-- Update lockscreen background
local update_ls_bg = false
-- Update lockscreen background command
local update_ls_cmd = 'mantablockscreen --image'
-- ========================================
-- Processes
-- Don't touch it if it's working
-- ========================================
-- Get current time
local current_time = function()
return os.date("%H:%M:%S")
end
-- Countdown variable
-- In seconds
the_countdown = nil
-- We will use an array for hour change and wallpaper string
-- Element 0 errm 1 will store the incoming/next scheduled time
-- Geez why the f is lua's array starts with `1`? lol
-- Element 2 will have the wallpaper file name
local wall_data = {}
-- > Why array, you say?
-- Because why not? I'm new to lua and I'm experimenting with it
-- Parse HH:MM:SS to seconds
local parse_to_seconds = function(time)
-- Convert HH in HH:MM:SS
hour_sec = tonumber(string.sub(time, 1, 2)) * 3600
-- Convert MM in HH:MM:SS
min_sec = tonumber(string.sub(time, 4, 5)) * 60
-- Get SS in HH:MM:SS
get_sec = tonumber(string.sub(time, 7, 8))
-- Return computed seconds
return (hour_sec + min_sec + get_sec)
end
-- Get time difference
local time_diff = function(current, schedule)
local diff = parse_to_seconds(current) - parse_to_seconds(schedule)
return diff
end
-- Update wallpaper (used by the manage_timer function)
-- I think the gears.wallpaper.maximized is too fast or being ran asynchronously
-- So the wallpaper is not being updated on awesome (re)start without this timer
-- We need some delay.
-- Hey it's working, so whatever
local update_wallpaper = function(wall_name)
gears.timer.start_new(0, function()
local wall_dir = wall_dir .. wall_name
gears.wallpaper.maximized (wall_dir, s)
-- Overwrite the default wallpaper
-- This is important in case we add an extra monitor
beautiful.wallpaper = wall_dir
if update_ls_bg then
awful.spawn.easy_async_with_shell(update_ls_cmd .. ' ' .. wall_dir, function()
--
end)
end
end)
end
-- Updates variables
local manage_timer = function()
-- Get current time
local time_now = parse_to_seconds(current_time())
-- Parse the schedules to seconds
local parsed_morning = parse_to_seconds(morning_schedule)
local parsed_noon = parse_to_seconds(noon_schedule)
local parsed_night = parse_to_seconds(night_schedule)
local parsed_midnight = parse_to_seconds('00:00:00')
-- Note that we will use '00:00:00' instead of '24:00:00' as midnight
-- As the latter causes an error. The time_diff() returns a negative value
if time_now >= parsed_midnight and time_now < parsed_morning then
-- Midnight time
-- Update Wallpaper
update_wallpaper(wallpaper_midnight)
-- Set the data for the next scheduled time
wall_data = {morning_schedule, wallpaper_morning}
elseif time_now >= parsed_morning and time_now < parsed_noon then
-- Morning time
-- Update Wallpaper
update_wallpaper(wallpaper_morning)
-- Set the data for the next scheduled time
wall_data = {noon_schedule, wallpaper_noon}
elseif time_now >= parsed_noon and time_now < parsed_night then
-- Noon time
-- Update Wallpaper
update_wallpaper(wallpaper_noon)
-- Set the data for the next scheduled time
wall_data = {night_schedule, wallpaper_night}
else
-- Night time
-- Update Wallpaper
update_wallpaper(wallpaper_night)
-- Set the data for the next scheduled time
wall_data = {midnight_schedule, wallpaper_midnight}
end
-- Get the time difference to set as timeout for the wall_updater timer below
the_countdown = time_diff(wall_data[1], current_time())
end
-- Update values at startup
manage_timer()
local wall_updater = gears.timer {
-- The timeout is the difference of current time and the scheduled time we set above.
timeout = the_countdown,
autostart = true,
call_now = true,
callback = function()
-- Emit signal to update wallpaper
awesome.emit_signal("module::change_wallpaper")
end
}
-- Update wallpaper here and update the timeout for the next schedule
awesome.connect_signal("module::change_wallpaper", function()
-- Update wallpaper based on the data in the array
gears.wallpaper.maximized (wall_dir .. wall_data[2], s)
-- Update values for the next specified schedule
manage_timer()
-- Update timer timeout for the next specified schedule
wall_updater.timeout = the_countdown
-- Restart timer
wall_updater:again()
end)

View file

@ -0,0 +1,351 @@
local awful = require('awful')
local gears = require('gears')
local wibox = require('wibox')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local icons = require('theme.icons')
local apps = require('configuration.apps')
local clickable_container = require('widget.clickable-container')
local filesystem = gears.filesystem
local config_dir = filesystem.get_configuration_dir()
local widget_icon_dir = config_dir .. 'configuration/user-profile/'
local greeter_message = wibox.widget {
markup = 'Choose wisely!',
font = 'SF Pro Text UltraLight 48',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local profile_name = wibox.widget {
markup = 'user@hostname',
font = 'SF Pro Text Regular 12',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local profile_imagebox = wibox.widget {
image = widget_icon_dir .. 'default.svg',
resize = true,
forced_height = dpi(110),
clip_shape = gears.shape.circle,
widget = wibox.widget.imagebox
}
local profile_imagebox_bg = wibox.widget {
bg = beautiful.groups_bg,
forced_width = dpi(120),
forced_height = dpi(120),
shape = gears.shape.circle,
widget = wibox.container.background
}
local update_profile_pic = function()
awful.spawn.easy_async_with_shell(
apps.bins.update_profile,
function(stdout)
stdout = stdout:gsub('%\n','')
if not stdout:match("default") then
profile_imagebox:set_image(stdout)
else
profile_imagebox:set_image(widget_icon_dir .. 'default.svg')
end
end
)
end
update_profile_pic()
local update_user_name = function()
awful.spawn.easy_async_with_shell(
"printf \"$(whoami)@$(hostname)\"",
function(stdout)
local stdout = stdout:gsub('%\n','')
local username = stdout:match("(.*)@")
username = username:sub(1, 1):upper() .. username:sub(2)
greeter_message:set_markup('Choose wisely, ' .. username .. '!')
profile_name:set_markup(stdout)
end
)
end
update_user_name()
local build_button = function(icon, name)
local button_text = wibox.widget {
text = name,
font = beautiful.font,
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local a_button = wibox.widget {
{
{
{
{
image = icon,
widget = wibox.widget.imagebox
},
margins = dpi(16),
widget = wibox.container.margin
},
bg = beautiful.groups_bg,
widget = wibox.container.background
},
shape = gears.shape.rounded_rect,
forced_width = dpi(90),
forced_height = dpi(90),
widget = clickable_container
},
left = dpi(24),
right = dpi(24),
widget = wibox.container.margin
}
local build_a_button = wibox.widget {
layout = wibox.layout.fixed.vertical,
spacing = dpi(5),
a_button,
button_text
}
return build_a_button
end
local suspend_command = function()
awesome.emit_signal("module::exit_screen_hide")
awful.spawn.with_shell(apps.default.lock .. ' & systemctl suspend')
end
local exit_command = function()
awesome.quit()
end
local lock_command = function()
awesome.emit_signal("module::exit_screen_hide")
awful.spawn.with_shell('sleep 1 && ' .. apps.default.lock)
end
local poweroff_command = function()
awful.spawn.with_shell('poweroff')
awesome.emit_signal("module::exit_screen_hide")
end
local reboot_command = function()
awful.spawn.with_shell('reboot')
awesome.emit_signal("module::exit_screen_hide")
end
local poweroff = build_button(icons.power, 'Shutdown')
poweroff:connect_signal(
'button::release',
function()
poweroff_command()
end
)
local reboot = build_button(icons.restart, 'Restart')
reboot:connect_signal(
'button::release',
function()
reboot_command()
end
)
local suspend = build_button(icons.sleep, 'Sleep')
suspend:connect_signal(
'button::release',
function()
suspend_command()
end
)
local exit = build_button(icons.logout, 'Logout')
exit:connect_signal(
'button::release',
function()
exit_command()
end
)
local lock = build_button(icons.lock, 'Lock')
lock:connect_signal(
'button::release',
function()
lock_command()
end
)
screen.connect_signal(
"request::desktop_decoration",
function(s)
s.exit_screen = wibox
{
screen = s,
type = 'splash',
visible = false,
ontop = true,
bg = beautiful.background,
fg = beautiful.fg_normal,
height = s.geometry.height,
width = s.geometry.width,
x = s.geometry.x,
y = s.geometry.y
}
local exit_screen_hide = function()
awesome.emit_signal("module::exit_screen_hide")
end
local exit_screen_grabber = awful.keygrabber {
auto_start = true,
stop_event = 'release',
keypressed_callback = function(self, mod, key, command)
if key == 's' then
suspend_command()
elseif key == 'e' then
exit_command()
elseif key == 'l' then
lock_command()
elseif key == 'p' then
poweroff_command()
elseif key == 'r' then
reboot_command()
elseif key == 'Escape' or key == 'q' or key == 'x' then
awesome.emit_signal("module::exit_screen_hide")
end
end
}
awesome.connect_signal(
"module::exit_screen_show",
function()
for s in screen do
s.exit_screen.visible = false
end
awful.screen.focused().exit_screen.visible = true
exit_screen_grabber:start()
end
)
awesome.connect_signal(
"module::exit_screen_hide",
function()
exit_screen_grabber:stop()
for s in screen do
s.exit_screen.visible = false
end
end
)
s.exit_screen : buttons(
gears.table.join(
awful.button(
{},
2,
function()
awesome.emit_signal("module::exit_screen_hide")
end
),
awful.button(
{},
3,
function()
awesome.emit_signal("module::exit_screen_hide")
end
)
)
)
s.exit_screen : setup {
nil,
{
nil,
{
{
nil,
{
layout = wibox.layout.fixed.vertical,
spacing = dpi(5),
{
profile_imagebox_bg,
{
layout = wibox.layout.align.vertical,
expand = 'none',
nil,
{
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
profile_imagebox,
nil
},
nil
},
layout = wibox.layout.stack
},
profile_name
},
nil,
expand = 'none',
layout = wibox.layout.align.horizontal
},
{
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
{
{
greeter_message,
{
poweroff,
reboot,
suspend,
exit,
lock,
layout = wibox.layout.fixed.horizontal
},
spacing = dpi(30),
layout = wibox.layout.fixed.vertical
},
spacing = dpi(40),
layout = wibox.layout.fixed.vertical
},
nil
},
spacing = dpi(40),
layout = wibox.layout.fixed.vertical
},
nil,
expand = 'none',
layout = wibox.layout.align.horizontal
},
nil,
expand = 'none',
layout = wibox.layout.align.vertical
}
end
)

896
awesome/module/lockscreen.lua Executable file
View file

@ -0,0 +1,896 @@
local wibox = require('wibox')
local gears = require('gears')
local awful = require('awful')
local naughty = require('naughty')
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local filesystem = require('gears.filesystem')
local config_dir = filesystem.get_configuration_dir()
local apps = require('configuration.apps')
local widget_icon_dir = config_dir .. 'configuration/user-profile/'
package.cpath = package.cpath .. ";" .. config_dir .. "/library/?.so;"
local pam = require('liblua_pam')
-- General Configuration
local capture_intruder = true -- Capture a picture using webcam
local face_capture_dir = '$(xdg-user-dir PICTURES)/Intruders/' -- Save location, auto creates
-- Background Mode Configuration
local background_mode = 'blur' -- Available background mode: `image`, `blur`, `root`, `bg_color`
local wall_dir = config_dir .. 'theme/wallpapers/' -- Wallpaper directory
local default_wall_name = 'morning-wallpaper.jpg' -- Default wallpaper
local tmp_wall_dir = '/tmp/awesomewm/' .. os.getenv('USER') .. '/' -- /tmp directory
-- Useful variables (DO NOT TOUCH)
local input_password = nil
local lock_again = nil
local type_again = true
local capture_now = capture_intruder
local locked_tag = nil
-- Processes
local locker = function(s)
local lockscreen = wibox {
screen = s,
visible = false,
ontop = true,
type = "splash",
width = s.geometry.width,
height = s.geometry.height,
bg = beautiful.background,
fg = beautiful.fg_normal
}
local uname_text = wibox.widget {
id = 'uname_text',
markup = '$USER',
font = 'SF Pro Display Bold 17',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local uname_text_shadow = wibox.widget {
id = 'uname_text_shadow',
markup = '<span foreground="#00000066">' .. '$USER' .. "</span>",
font = 'SF Pro Display Bold 17',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local caps_text = wibox.widget {
id = 'uname_text',
markup = 'Caps Lock is on',
font = 'SF Pro Display Italic 10',
align = 'center',
valign = 'center',
opacity = 0.0,
widget = wibox.widget.textbox
}
local caps_text_shadow = wibox.widget {
id = 'uname_text',
markup = '<span foreground="#00000066">' .. 'Caps Lock is on' .. "</span>",
font = 'SF Pro Display Italic 10',
align = 'center',
valign = 'center',
opacity = 0.0,
widget = wibox.widget.textbox
}
-- Update username textbox
awful.spawn.easy_async_with_shell('whoami | tr -d "\\n"', function(stdout)
uname_text.markup = stdout
uname_text_shadow.markup = '<span foreground="#00000066">' .. stdout .. "</span>"
end)
local profile_imagebox = wibox.widget {
id = 'user_icon',
image = widget_icon_dir .. 'default' .. '.svg',
resize = true,
forced_height = dpi(100),
forced_width = dpi(100),
clip_shape = gears.shape.circle,
widget = wibox.widget.imagebox
}
local update_profile_pic = function()
awful.spawn.easy_async_with_shell(
apps.bins.update_profile,
function(stdout)
stdout = stdout:gsub('%\n','')
if not stdout:match("default") then
profile_imagebox:set_image(stdout)
else
profile_imagebox:set_image(widget_icon_dir .. 'default.svg')
end
end
)
end
-- Update image
gears.timer.start_new(
2,
function()
update_profile_pic()
end
)
local time = wibox.widget.textclock(
'<span font="SF Pro Display Bold 56">%H:%M</span>',
1
)
local time_shadow = wibox.widget.textclock(
'<span foreground="#00000066" font="SF Pro Display Bold 56">%H:%M</span>',
1
)
local wanted_text = wibox.widget {
markup = 'INTRUDER ALERT!',
font = 'SFNS Pro Text Bold 12',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local msg_table = {
'We are watching you.',
'We know where you live.',
'This incident will be reported.',
'RUN!',
'Yamete, Oniichan~ uwu',
'This will self-destruct in 5 seconds!',
'Image successfully sent!',
'You\'re doomed!'
}
local wanted_msg = wibox.widget {
markup = 'This incident will be reported!',
font = 'SFNS Pro Text Regular 10',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local wanted_image = wibox.widget {
image = widget_icon_dir .. 'default.svg',
resize = true,
forced_height = dpi(100),
clip_shape = gears.shape.rounded_rect,
widget = wibox.widget.imagebox
}
local wanted_poster = awful.popup {
widget = {
{
{
wanted_text,
{
nil,
wanted_image,
nil,
expand = 'none',
layout = wibox.layout.align.horizontal
},
wanted_msg,
spacing = dpi(10),
layout = wibox.layout.fixed.vertical
},
margins = dpi(20),
widget = wibox.container.margin
},
bg = beautiful.background,
shape = gears.shape.rounded_rect,
widget = wibox.container.background
},
bg = beautiful.transparent,
type = 'utility',
ontop = true,
shape = gears.shape.rectangle,
maximum_width = dpi(250),
maximum_height = dpi(200),
hide_on_right_click = false,
preferred_anchors = {'middle'},
visible = false
}
awful.placement.bottom(wanted_poster,
{
margins =
{
bottom = dpi(10),
},
parent = screen.primary
}
)
local date_value = function()
local date_val = {}
local ordinal = nil
local day = os.date('%d')
local month = os.date('%B')
local first_digit = string.sub(day, 0, 1)
local last_digit = string.sub(day, -1)
if first_digit == '0' then
day = last_digit
end
if last_digit == '1' and day ~= '11' then
ordinal = 'st'
elseif last_digit == '2' and day ~= '12' then
ordinal = 'nd'
elseif last_digit == '3' and day ~= '13' then
ordinal = 'rd'
else
ordinal = 'th'
end
date_val.day = day
date_val.month = month
date_val.ordinal= ordinal
return date_val
end
local date = wibox.widget {
markup = date_value().day .. date_value().ordinal .. ' of ' .. date_value().month,
font = 'SF Pro Display Bold 20',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local date_shadow = wibox.widget {
markup = "<span foreground='#00000066'>" .. date_value().day .. date_value().ordinal .. " of " ..
date_value().month .. "</span>",
font = 'SF Pro Display Bold 20',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local circle_container = wibox.widget {
bg = '#f2f2f233',
forced_width = dpi(110),
forced_height = dpi(110),
shape = gears.shape.circle,
widget = wibox.container.background
}
local locker_arc = wibox.widget {
bg = beautiful.transparent,
forced_width = dpi(110),
forced_height = dpi(110),
shape = function(cr, width, height)
gears.shape.arc(cr, width, height, dpi(5), 0, math.pi/2, true, true)
end,
widget = wibox.container.background
}
-- Check Capslock state
local check_caps = function()
awful.spawn.easy_async_with_shell(
'xset q | grep Caps | cut -d: -f3 | cut -d0 -f1 | tr -d " "',
function(stdout)
status = stdout
if status:match('on') then
caps_text.opacity = 1.0
caps_text_shadow.opacity = 1.0
else
caps_text.opacity = 0.0
caps_text_shadow.opacity = 0.0
end
caps_text:emit_signal('widget::redraw_needed')
caps_text_shadow:emit_signal('widget::redraw_needed')
end
)
end
local rotate_container = wibox.container.rotate()
local locker_widget = wibox.widget {
{
locker_arc,
widget = rotate_container
},
layout = wibox.layout.fixed.vertical
}
-- Rotation direction table
local rotation_direction = {"north", "west", "south", "east"}
-- Red, Green, Yellow, Blue
local red = beautiful.system_red_dark
local green = beautiful.system_green_dark
local yellow = beautiful.system_yellow_dark
local blue = beautiful.system_blue_dark
-- Color table
local arc_color = {red, green, yellow, blue}
local locker_widget_rotate = function()
local direction = rotation_direction[math.random(#rotation_direction)]
local color = arc_color[math.random(#arc_color)]
rotate_container.direction = direction
locker_arc.bg = color
rotate_container:emit_signal("widget:redraw_needed")
locker_arc:emit_signal("widget::redraw_needed")
locker_widget:emit_signal("widget::redraw_needed")
end
local check_webcam = function()
awful.spawn.easy_async_with_shell(
[[
ls -l /dev/video* | grep /dev/video0
]],
function(stdout)
if not capture_intruder then
capture_now = false
return
end
if not stdout:match('/dev/video0') then
capture_now = false
else
capture_now = true
end
end
)
end
check_webcam()
local intruder_capture = function()
local capture_image = [[
save_dir=]] .. face_capture_dir .. [[
date=$(date +%Y%m%d_%H%M%S)
file_loc=${save_dir}SUSPECT-${date}.png
if [ ! -d $save_dir ]; then
mkdir -p $save_dir;
fi
ffmpeg -f video4linux2 -s 800x600 -i /dev/video0 -ss 0:0:2 -frames 1 ${file_loc}
canberra-gtk-play -i camera-shutter &
echo ${file_loc}
]]
-- Capture the filthy intruder face
awful.spawn.easy_async_with_shell(
capture_image,
function(stdout)
circle_container.bg = beautiful.groups_title_bg
-- Humiliate the intruder by showing his/her hideous face
wanted_image:set_image(stdout:gsub('%\n',''))
wanted_poster.visible= true
wanted_msg:set_markup(msg_table[math.random(#msg_table)])
awful.placement.bottom(wanted_poster,
{
margins =
{
bottom = dpi(10),
},
parent = screen.primary
}
)
wanted_image:emit_signal('widget::redraw_needed')
type_again = true
end
)
end
local stoprightthereyoucriminalscum = function()
circle_container.bg = red .. 'AA'
if capture_now then
intruder_capture()
else
gears.timer.start_new(
1,
function()
circle_container.bg = beautiful.groups_title_bg
type_again = true
end
)
end
end
local generalkenobi_ohhellothere = function()
circle_container.bg = green .. 'AA'
-- Add a little delay before unlocking completely
gears.timer.start_new(
1,
function()
if capture_now then
-- Hide wanted poster
wanted_poster.visible = false
end
-- Hide all the lockscreen on all screen
for s in screen do
if s.index == 1 then
s.lockscreen.visible = false
else
s.lockscreen_extended.visible = false
end
end
circle_container.bg = beautiful.groups_title_bg
-- Enable locking again
lock_again = true
-- Enable validation again
type_again = true
-- Select old tag
-- And restore minimized focused client if there's any
if locked_tag then
locked_tag.selected = true
locked_tag = nil
end
local c = awful.client.restore()
if c then
client.focus = c
c:raise()
end
end
)
end
-- A backdoor
local back_door = function()
generalkenobi_ohhellothere()
end
local password_grabber = awful.keygrabber {
auto_start = true,
stop_event = 'release',
mask_event_callback = true,
keybindings = {
awful.key {
modifiers = {'Control'},
key = 'u',
on_press = function()
input_password = nil
end
},
awful.key {
modifiers = {'Mod1', 'Mod4', 'Shift', 'Control'},
key = 'Return',
on_press = function(self)
if not type_again then
return
end
self:stop()
back_door()
end
}
},
keypressed_callback = function(self, mod, key, command)
if not type_again then
return
end
-- Clear input string
if key == 'Escape' then
-- Clear input threshold
input_password = nil
return
end
-- Accept only the single charactered key
-- Ignore 'Shift', 'Control', 'Return', 'F1', 'F2', etc., etc.
if #key == 1 then
locker_widget_rotate()
if input_password == nil then
input_password = key
return
end
input_password = input_password .. key
end
end,
keyreleased_callback = function(self, mod, key, command)
locker_arc.bg = beautiful.transparent
locker_arc:emit_signal('widget::redraw_needed')
if key == 'Caps_Lock' then
check_caps()
return
end
if not type_again then
return
end
-- Validation
if key == 'Return' then
-- Validate password
local pam_auth = false
if input_password ~= nil then
pam_auth = pam:auth_current_user(input_password)
else
return
end
if pam_auth then
-- Come in!
self:stop()
generalkenobi_ohhellothere()
else
-- F*ck off, you [REDACTED]!
stoprightthereyoucriminalscum()
end
type_again = false
input_password = nil
end
end
}
lockscreen : setup {
layout = wibox.layout.align.vertical,
expand = 'none',
nil,
{
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
{
layout = wibox.layout.fixed.vertical,
expand = 'none',
spacing = dpi(20),
{
{
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
{
time_shadow,
time,
vertical_offset = dpi(-1),
widget = wibox.layout.stack
},
nil
},
{
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
{
date_shadow,
date,
vertical_offset = dpi(-1),
widget = wibox.layout.stack
},
nil
},
expand = 'none',
layout = wibox.layout.fixed.vertical
},
{
layout = wibox.layout.fixed.vertical,
{
circle_container,
locker_widget,
{
layout = wibox.layout.align.vertical,
expand = 'none',
nil,
{
layout = wibox.layout.align.horizontal,
expand = 'none',
nil,
profile_imagebox,
nil
},
nil,
},
layout = wibox.layout.stack
},
{
uname_text_shadow,
uname_text,
vertical_offset = dpi(-1),
widget = wibox.layout.stack
},
{
caps_text_shadow,
caps_text,
vertical_offset = dpi(-1),
widget = wibox.layout.stack
}
},
},
nil
},
nil
}
local show_lockscreen = function()
-- Unselect all tags and minimize the focused client
-- Will also fix the problem with virtualbox or any other program that has keygrabbing enabled
if client.focus then
client.focus.minimized = true
end
for _, t in ipairs(mouse.screen.selected_tags) do
locked_tag = t
t.selected = false
end
-- Why is there a lock_again variable?
-- Well, it fixes a bug.
-- What is the bug?
-- It's a secret.
if lock_again == true or lock_again == nil then
-- Check capslock status
check_caps()
-- Check webcam status
check_webcam()
-- Show all the lockscreen on each screen
for s in screen do
if s.index == 1 then
s.lockscreen.visible = true
else
s.lockscreen_extended.visible = true
end
end
-- Start key grabbing for password
password_grabber:start()
-- Dont lock again
lock_again = false
end
end
awesome.connect_signal(
"module::lockscreen_show",
function()
if lock_again == true or lock_again == nil then
show_lockscreen()
end
end
)
return lockscreen
end
-- This lockscreen is for the extra/multi monitor
local locker_ext = function(s)
local extended_lockscreen = wibox {
screen = s,
visible = false,
ontop = true,
ontype = 'true',
x = s.geometry.x,
y = s.geometry.y,
width = s.geometry.width,
height = s.geometry.height,
bg = beautiful.background,
fg = beautiful.fg_normal
}
return extended_lockscreen
end
local cycle_through_screens = function(s)
if s.index == 1 then
s.lockscreen = locker(s)
else
s.lockscreen_extended = locker_ext(s)
end
end
-- Create a lockscreen for each screen
screen.connect_signal(
"request::desktop_decoration",
function(s)
cycle_through_screens(s)
end
)
-- Regenerate lockscreens if a screen was added to avoid errors
screen.connect_signal(
'added',
function(s)
cycle_through_screens(s)
end
)
-- Regenerate lockscreens if a screen was removed to avoid errors
screen.connect_signal(
"removed",
function(s)
cycle_through_screens(s)
end
)
-- Dont show notification popups if the screen is locked
local check_lockscreen_visibility = function()
focused = awful.screen.focused()
if focused.lockscreen and focused.lockscreen.visible then
return true
end
if focused.lockscreen_extended and focused.lockscreen_extended.visible then
return true
end
return false
end
naughty.connect_signal(
"request::display",
function(_)
if check_lockscreen_visibility() then
naughty.destroy_all_notifications(nil, 1)
end
end
)
-- Background Mode Processes
local blur_resize_image = function(wall_name, index, ap, width, height)
local magic = [[
if [ ! -d ]] .. tmp_wall_dir ..[[ ]; then mkdir -p ]] .. tmp_wall_dir .. [[; fi
convert -quality 100 -filter Gaussian -blur 0x10 ]] .. wall_dir .. wall_name ..
[[ -gravity center -crop ]] .. ap .. [[:1 +repage -resize ]] .. width .. 'x' .. height ..
[[! ]] .. tmp_wall_dir .. index .. wall_name .. [[
]]
return magic
end
local resize_image = function(wall_name, index, ap, width, height)
local magic = [[
if [ ! -d ]] .. tmp_wall_dir ..[[ ]; then mkdir -p ]] .. tmp_wall_dir .. [[; fi
convert -quality 100 ]] .. wall_dir .. wall_name ..
[[ -gravity center -crop ]] .. ap .. [[:1 +repage -resize ]] .. width .. 'x' .. height ..
[[! ]] .. tmp_wall_dir .. index .. wall_name .. [[
]]
return magic
end
local apply_ls_bg_image = function(wall_name)
for s in screen do
local index = s.index .. '-'
local screen_width = s.geometry.width
local screen_height = s.geometry.height
local aspect_ratio = screen_width / screen_height
aspect_ratio = math.floor(aspect_ratio * 100) / 100
local cmd = nil
if background_mode == 'blur' then
cmd = blur_resize_image(wall_name, index, aspect_ratio, screen_width, screen_height)
else
cmd = resize_image(wall_name, index, aspect_ratio, screen_width, screen_height)
end
if s.index == 1 then
awful.spawn.easy_async_with_shell(
cmd,
function(stdout, stderr)
s.lockscreen.bgimage = tmp_wall_dir .. index .. wall_name
end
)
else
awful.spawn.easy_async_with_shell(
cmd,
function()
s.lockscreen_extended.bgimage = tmp_wall_dir .. index .. wall_name
end
)
end
end
end
local check_background_mode = function()
if background_mode == 'root' then
for s in screen do
if s.index == 1 then
s.lockscreen.bgimage = root.wallpaper()
else
s.lockscreen_extended.bgimage = root.wallpaper()
end
end
elseif background_mode == 'bg_color' then
for s in screen do
if s.index == 1 then
s.lockscreen.bg = beautiful.background
else
s.lockscreen_extended.bg = beautiful.background
end
end
elseif background_mode == 'blur' or background_mode == 'image' then
apply_ls_bg_image(default_wall_name)
else
for s in screen do
if s.index == 1 then
s.lockscreen.bgimage = root.wallpaper()
else
s.lockscreen_extended.bgimage = root.wallpaper()
end
end
end
end
check_background_mode()
-- Regenerate lockscreen's background if a screen was added
screen.connect_signal(
'added',
function()
check_background_mode()
end
)
-- Regenerate lockscreen's background if a screen was removed
screen.connect_signal(
"removed",
function()
check_background_mode()
end
)

206
awesome/module/menu.lua Normal file
View file

@ -0,0 +1,206 @@
-- An applications menu
-- Required depends: awesome-freedesktop
local awful = require("awful")
local gears = require("gears")
local beautiful = require("beautiful")
local apps = require('configuration.apps')
local menubar = require("menubar")
local hotkeys_popup = require('awful.hotkeys_popup').widget
local terminal = apps.default.terminal
local web_browser = apps.default.web_browser
local file_manager = apps.default.file_manager
local text_editor = apps.default.text_editor
local editor_cmd = terminal .. " -e " .. (os.getenv("EDITOR") or "nano")
local function is_module_available(name)
if package.loaded[name] then
return true
else
for _, searcher in ipairs(package.searchers or package.loaders) do
local loader = searcher(name)
if type(loader) == 'function' then
package.preload[name] = loader
return true
end
end
return false
end
end
-- Create a launcher widget and a main menu
awesome_menu = {
{
"Hotkeys",
function()
hotkeys_popup.show_help(nil, awful.screen.focused())
end,
menubar.utils.lookup_icon("keyboard")
},
{
"Edit config",
editor_cmd .. " " .. awesome.conffile,
menubar.utils.lookup_icon("accessories-text-editor")
},
{
"Restart",
awesome.restart,
menubar.utils.lookup_icon("system-restart")
},
{
"Quit",
function() awesome.quit() end,
menubar.utils.lookup_icon("system-log-out")
}
}
local default_app_menu = {
{
"Terminal",
terminal,
menubar.utils.lookup_icon("utilities-terminal")
},
{
"Web browser",
web_browser,
menubar.utils.lookup_icon("webbrowser-app")
},
{
"File Manager",
file_manager,
menubar.utils.lookup_icon("system-file-manager")
},
{
"Text Editor",
text_editor,
menubar.utils.lookup_icon("accessories-text-editor")
}
}
-- Screenshot menu
local screenshot_menu = {
{
"Full",
function()
gears.timer.start_new(
0.1,
function()
awful.spawn.easy_async_with_shell(apps.bins.full_screenshot)
end
)
end,
menubar.utils.lookup_icon("accessories-screenshot")
},
{
"Area",
function()
gears.timer.start_new(
0.1,
function()
awful.spawn.easy_async_with_shell(apps.bins.area_screenshot)
end,
menubar.utils.lookup_icon("accessories-screenshot")
)
end,
menubar.utils.lookup_icon("accessories-screenshot")
}
}
local tools_menu = {
{
"Awesome",
awesome_menu,
beautiful.awesome_icon
},
{
"Take a Screenshot",
screenshot_menu,
menubar.utils.lookup_icon("accessories-screenshot")
},
{
"End Session",
function()
awesome.emit_signal("module::exit_screen_show")
end,
menubar.utils.lookup_icon("system-shutdown")
}
}
-- A menu generated by awesome-freedesktop
-- https://github.com/lcpz/awesome-freedesktop
if is_module_available("freedesktop") then
local freedesktop = require("freedesktop")
mymainmenu = freedesktop.menu.build({
-- Not actually the size, but the quality of the icon
icon_size = 48,
before = default_app_menu,
after = tools_menu
})
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu })
else
mymainmenu = awful.menu({
items = {
{
"Instructions",
function()
local naughty = require('naughty')
local open_github = naughty.action {
name = 'Open Github Page',
icon_only = false,
}
open_github:connect_signal('invoked', function()
awful.spawn.easy_async_with_shell("xdg-open https://github.com/lcpz/awesome-freedesktop")
end)
local open_aur = naughty.action {
name = 'Open AUR Page',
icon_only = false,
}
open_aur:connect_signal('invoked', function()
awful.spawn.easy_async_with_shell("xdg-open https://aur.archlinux.org/packages/awesome-freedesktop-git/")
end)
naughty.notification({
title = 'A dependency is missing!',
message = "You need to install <b>awesome-freedesktop.</b> " ..
"This will populate the menu with your installed applications automatically. " ..
"It is also available in AUR, it is called <b>awesome-freedesktop-git</b>.",
app_name = 'System Notification',
timeout = 0,
urgency = 'normal',
actions = { open_github, open_aur }
})
end,
menubar.utils.lookup_icon("accessories-text-editor")
},
{
"Awesome",
awesome_menu,
beautiful.awesome_icon
},
{
"Take a Screenshot",
screenshot_menu,
menubar.utils.lookup_icon("accessories-screenshot")
},
{
"End Session",
function()
awesome.emit_signal("module::exit_screen_show")
end,
menubar.utils.lookup_icon("system-shutdown")
}
}
})
end

View file

@ -0,0 +1,262 @@
local gears = require('gears')
local wibox = require('wibox')
local awful = require('awful')
local ruled = require('ruled')
local naughty = require('naughty')
local menubar = require("menubar")
local beautiful = require('beautiful')
local dpi = beautiful.xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
-- Defaults
naughty.config.defaults.ontop = true
naughty.config.defaults.icon_size = dpi(32)
naughty.config.defaults.timeout = 5
naughty.config.defaults.title = 'System Notification'
naughty.config.defaults.margin = dpi(16)
naughty.config.defaults.border_width = 0
naughty.config.defaults.position = 'top_right'
naughty.config.defaults.shape = function(cr, w, h) gears.shape.rounded_rect(cr, w, h, dpi(6)) end
-- Apply theme variables
naughty.config.padding = 8
naughty.config.spacing = 8
naughty.config.icon_dirs = {
"/usr/share/icons/Tela",
"/usr/share/icons/Tela-blue-dark",
"/usr/share/icons/Papirus/",
"/usr/share/icons/la-capitaine-icon-theme/",
"/usr/share/icons/gnome/",
"/usr/share/icons/hicolor/",
"/usr/share/pixmaps/"
}
naughty.config.icon_formats = { "svg", "png", "jpg", "gif" }
-- Presets / rules
ruled.notification.connect_signal('request::rules', function()
-- Critical notifs
ruled.notification.append_rule {
rule = { urgency = 'critical' },
properties = {
font = 'SF Pro Text Bold 10',
bg = '#ff0000',
fg = '#ffffff',
margin = dpi(16),
position = 'top_right',
implicit_timeout = 0
}
}
-- Normal notifs
ruled.notification.append_rule {
rule = { urgency = 'normal' },
properties = {
font = 'SF Pro Text Regular 10',
bg = beautiful.transparent,
fg = beautiful.fg_normal,
margin = dpi(16),
position = 'top_right',
implicit_timeout = 5
}
}
-- Low notifs
ruled.notification.append_rule {
rule = { urgency = 'low' },
properties = {
font = 'SF Pro Text Regular 10',
bg = beautiful.transparent,
fg = beautiful.fg_normal,
margin = dpi(16),
position = 'top_right',
implicit_timeout = 5
}
}
end)
-- Error handling
naughty.connect_signal(
"request::display_error",
function(message, startup)
naughty.notification {
urgency = "critical",
title = "Oops, an error happened"..(startup and " during startup!" or "!"),
message = message,
app_name = 'System Notification',
icon = beautiful.awesome_icon
}
end
)
-- XDG icon lookup
naughty.connect_signal(
"request::icon",
function(n, context, hints)
if context ~= "app_icon" then return end
local path = menubar.utils.lookup_icon(hints.app_icon) or
menubar.utils.lookup_icon(hints.app_icon:lower())
if path then
n.icon = path
end
end
)
-- Naughty template
naughty.connect_signal("request::display", function(n)
-- naughty.actions template
local actions_template = wibox.widget {
notification = n,
base_layout = wibox.widget {
spacing = dpi(0),
layout = wibox.layout.flex.horizontal
},
widget_template = {
{
{
{
{
id = 'text_role',
font = 'SF Pro Text Regular 10',
widget = wibox.widget.textbox
},
widget = wibox.container.place
},
widget = clickable_container
},
bg = beautiful.groups_bg,
shape = gears.shape.rounded_rect,
forced_height = dpi(30),
widget = wibox.container.background
},
margins = dpi(4),
widget = wibox.container.margin
},
style = { underline_normal = false, underline_selected = true },
widget = naughty.list.actions
}
-- Custom notification layout
naughty.layout.box {
notification = n,
type = "notification",
screen = awful.screen.preferred(),
shape = gears.shape.rectangle,
widget_template = {
{
{
{
{
{
{
{
{
{
{
{
markup = n.app_name or 'System Notification',
font = 'SF Pro Text Bold 10',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
},
margins = beautiful.notification_margin,
widget = wibox.container.margin,
},
bg = '#000000'.. '44',
widget = wibox.container.background,
},
{
{
{
resize_strategy = 'center',
widget = naughty.widget.icon,
},
margins = beautiful.notification_margin,
widget = wibox.container.margin,
},
{
{
layout = wibox.layout.align.vertical,
expand = 'none',
nil,
{
{
align = 'left',
widget = naughty.widget.title
},
{
align = "left",
widget = naughty.widget.message,
},
layout = wibox.layout.fixed.vertical
},
nil
},
margins = beautiful.notification_margin,
widget = wibox.container.margin,
},
layout = wibox.layout.fixed.horizontal,
},
fill_space = true,
spacing = beautiful.notification_margin,
layout = wibox.layout.fixed.vertical,
},
-- Margin between the fake background
-- Set to 0 to preserve the 'titlebar' effect
margins = dpi(0),
widget = wibox.container.margin,
},
bg = beautiful.transparent,
widget = wibox.container.background,
},
-- Notification action list
-- naughty.list.actions,
actions_template,
spacing = dpi(4),
layout = wibox.layout.fixed.vertical,
},
bg = beautiful.transparent,
id = "background_role",
widget = naughty.container.background,
},
strategy = "min",
width = dpi(160),
widget = wibox.container.constraint,
},
strategy = "max",
width = beautiful.notification_max_width or dpi(500),
widget = wibox.container.constraint,
},
-- Anti-aliasing container
-- Real BG
bg = beautiful.background,
-- This will be the anti-aliased shape of the notification
shape = gears.shape.rounded_rect,
widget = wibox.container.background
},
-- Margin of the fake BG to have a space between notification and the screen edge
margins = dpi(5),--beautiful.notification_margin,
widget = wibox.container.margin
}
}
-- Destroy popups if dont_disturb mode is on
-- Or if the right_panel is visible
local focused = awful.screen.focused()
if _G.dont_disturb or (focused.right_panel and focused.right_panel.visible) then
naughty.destroy_all_notifications(nil, 1)
end
end)

View file

@ -0,0 +1,73 @@
local gears = require('gears')
local spawn = require('awful.spawn')
local app = require('configuration.apps').default.quake
-- local awful = require('awful')
local quake_id = 'notnil'
local quake_client
local opened = false
function create_shell()
quake_id =
spawn(
app,
{
skip_decoration = true
}
)
end
function open_quake()
quake_client.hidden = false
quake_client:emit_signal('request::activate')
end
function close_quake()
quake_client.hidden = true
end
toggle_quake = function()
opened = not opened
if not quake_client then
create_shell()
else
if opened then
open_quake()
else
close_quake()
end
end
end
client.connect_signal(
'manage',
function(c)
if c.pid == quake_id then
quake_client = c
c.opacity = 0.95
c.floating = true
c.skip_taskbar = true
c.ontop = true
c.above = true
c.sticky = true
c.hidden = not opened
c.maximized_horizontal = true
c.hide_titlebars = true
c.skip_center = true
c.round_corners = false
c.shape = function(cr, w, h)
gears.shape.rectangle(cr, w, h)
end
-- awful.placement.top(c)
end
end
)
client.connect_signal(
'unmanage',
function(c)
if c.pid == quake_id then
opened = false
quake_client = nil
end
end
)

30
awesome/module/test.lua Normal file
View file

@ -0,0 +1,30 @@
-- Load these libraries (if you haven't already)
local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
-- Create the box
local anti_aliased_wibox = wibox({visible = true, ontop = true, type = "normal", height = 100, width = 100})
-- Place it at the center of the screen
awful.placement.centered(anti_aliased_wibox)
-- Set transparent bg
anti_aliased_wibox.bg = beautiful.transparent
-- Put its items in a shaped container
anti_aliased_wibox:setup {
-- Container
{
-- Items go here
--wibox.widget.textbox("Hello!"),
awful.spawn('urxvt'),
-- ...
layout = wibox.layout.fixed.vertical
},
-- The real background color
bg = "#111111",
-- The real, anti-aliased shape
shape = gears.shape.rounded_rect,
widget = wibox.container.background()
}

282
awesome/module/titlebar.lua Normal file
View file

@ -0,0 +1,282 @@
local awful = require("awful")
local gears = require("gears")
local beautiful = require("beautiful")
local wibox = require("wibox")
local dpi = beautiful.xresources.apply_dpi
awful.titlebar.enable_tooltip = false
awful.titlebar.fallback_name = 'Client\'s name'
local titlebar_size = beautiful.titlebar_size
-- ▄▄▄▄▄▄▄ ▀ ▄ ▀▀█ █
-- █ ▄▄▄ ▄▄█▄▄ █ ▄▄▄ █▄▄▄ ▄▄▄ ▄ ▄▄
-- █ █ █ █ █▀ █ █▀ ▀█ ▀ █ █▀ ▀
-- █ █ █ █ █▀▀▀▀ █ █ ▄▀▀▀█ █
-- █ ▄▄█▄▄ ▀▄▄ ▀▄▄ ▀█▄▄▀ ██▄█▀ ▀▄▄▀█ █
function double_click_event_handler(double_click_event)
if double_click_timer then
double_click_timer:stop()
double_click_timer = nil
double_click_event()
return
end
double_click_timer = gears.timer.start_new(0.20, function()
double_click_timer = nil
return false
end)
end
client.connect_signal("request::titlebars", function(c)
-- Buttons for moving/resizing functionality
local buttons = gears.table.join(
awful.button(
{},
1,
function()
double_click_event_handler(function()
if c.floating then
c.floating = false
return
end
c.maximized = not c.maximized
c:raise()
return
end)
c:activate {context = "titlebar", action = "mouse_move"}
end
),
awful.button(
{},
3,
function()
c:activate {context = "titlebar", action = "mouse_resize"}
end
)
)
local decorate_titlebar = function(c, pos, bg, size)
c.titlebar_position = pos
if pos == 'left' or pos == 'right' then
-- Creates left or right titlebars
awful.titlebar(c, {position = pos, bg = bg, size = size or titlebar_size}) : setup {
{
{
awful.titlebar.widget.closebutton(c),
awful.titlebar.widget.maximizedbutton(c),
awful.titlebar.widget.minimizebutton (c),
spacing = dpi(7),
layout = wibox.layout.fixed.vertical
},
margins = dpi(10),
widget = wibox.container.margin
},
{
buttons = buttons,
layout = wibox.layout.flex.vertical
},
{
awful.titlebar.widget.floatingbutton (c),
margins = dpi(10),
widget = wibox.container.margin
},
layout = wibox.layout.align.vertical
}
elseif pos == 'top' or pos == 'bottom' then
-- Creates top or bottom titlebars
awful.titlebar(c, {position = pos, bg = bg, size = size or titlebar_size}) : setup {
{
{
awful.titlebar.widget.closebutton(c),
awful.titlebar.widget.maximizedbutton(c),
awful.titlebar.widget.minimizebutton (c),
spacing = dpi(7),
layout = wibox.layout.fixed.horizontal
},
margins = dpi(10),
widget = wibox.container.margin
},
{
buttons = buttons,
layout = wibox.layout.flex.horizontal
},
{
awful.titlebar.widget.floatingbutton (c),
margins = dpi(10),
widget = wibox.container.margin
},
layout = wibox.layout.align.horizontal
}
else
-- Create a left titlebar (default in this setup)
awful.titlebar(c, {position = 'left', size = titlebar_size}) : setup {
{
{
awful.titlebar.widget.closebutton(c),
awful.titlebar.widget.maximizedbutton(c),
awful.titlebar.widget.minimizebutton (c),
spacing = dpi(7),
layout = wibox.layout.fixed.vertical
},
margins = dpi(10),
widget = wibox.container.margin
},
{
buttons = buttons,
layout = wibox.layout.flex.vertical
},
{
awful.titlebar.widget.floatingbutton (c),
margins = dpi(10),
widget = wibox.container.margin
},
layout = wibox.layout.align.vertical
}
end
end
-- ▄▄▄ ▄ ▀
-- ▄▀ ▀ ▄ ▄ ▄▄▄ ▄▄█▄▄ ▄▄▄ ▄▄▄▄▄ ▄▄▄ ▄▄▄▄▄ ▄▄▄
-- █ █ █ █ ▀ █ █▀ ▀█ █ █ █ █ ▄▀ █▀ █
-- █ █ █ ▀▀▀▄ █ █ █ █ █ █ █ ▄▀ █▀▀▀▀
-- ▀▄▄▄▀ ▀▄▄▀█ ▀▄▄▄▀ ▀▄▄ ▀█▄█▀ █ █ █ ▄▄█▄▄ █▄▄▄▄ ▀█▄▄▀
-- Generate a custom titlabar for each class, roles, type, etc., etc.
-- The titlebar's position can now be set differently
if c.class == 'dolphin' or c.class == 'firefox' or c.class == 'pavucontrol-qt' or
c.instance == 'transmission-qt' or c.class == 'ark' or c.class == 'polkit-kde-authentication-agent-1' or
c.class == 'partitionmanager' or c.class == 'discord' or c.class == 'kdesu' then
if c.type == 'dialog' or c.type == 'modal' then
decorate_titlebar(c, 'top', beautiful.background, titlebar_size)
else
decorate_titlebar(c, 'left', beautiful.background, titlebar_size)
end
elseif c.role == "GtkFileChooserDialog" or c.type == 'dialog' or c.type == 'modal' then
-- Let's use the gtk theme's bg_color as titlebar's bg then add some transparency
-- Let's set the titlebar's position to top
-- Isn't it neat? lol
decorate_titlebar(c, 'top', beautiful.gtk.get_theme_variables().bg_color:sub(1,7) .. '66', titlebar_size)
elseif c.class == "kitty" then
decorate_titlebar(c, 'left', '#000000AA', titlebar_size)
elseif c.class == 'XTerm' or c.class == 'UXTerm' then
-- Let's use the xresources' background color as the titlebar color for xterm
-- awesome is the shit boi!
decorate_titlebar(c, 'top', beautiful.xresources.get_current_theme().background, titlebar_size)
elseif c.class == 'Nemo' then
decorate_titlebar(c, 'left', beautiful.xresources.get_current_theme().background, titlebar_size)
else
-- Default titlebar
decorate_titlebar(c, 'left', beautiful.background, titlebar_size)
end
end)
-- ▄▄▄▄ ▀ ▀▀█
-- █▀ ▀ ▄▄▄ ▄▄▄▄ ▄ ▄▄ ▄▄▄ █ ▄▄▄
-- ▀█▄▄▄ █ █▀ ▀█ █▀ █ ▀ █ █ █ ▀
-- ▀█ █ █ █ █ █ ▄▀▀▀█ █ ▀▀▀▄
-- ▀▄▄▄█▀ ▄▄█▄▄ ▀█▄▀█ █ █ ▀▄▄▀█ ▀▄▄ ▀▄▄▄▀
-- ▄ █
-- ▀▀
client.connect_signal(
"manage",
function(c)
if not c.max and not c.hide_titlebars then
awful.titlebar.show(c, c.titlebar_position or 'left')
else
awful.titlebar.hide(c, c.titlebar_position or 'left')
end
end
)
-- Catch the signal when a client's layout is changed
screen.connect_signal(
"arrange",
function(s)
for _, c in pairs(s.clients) do
if (#s.tiled_clients > 1 or c.floating) and c.first_tag.layout.name ~= 'max' then
if not c.hide_titlebars then
awful.titlebar.show(c, c.titlebar_position or 'left')
else
awful.titlebar.hide(c, c.titlebar_position or 'left')
end
if c.maximized or not c.round_corners or c.fullscreen then
c.shape = function(cr, w, h)
gears.shape.rectangle(cr, w, h)
end
else
c.shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, beautiful.client_radius)
end
end
elseif (#s.tiled_clients == 1 or c.first_tag.layout.name == 'max') and not c.fullscreen then
awful.titlebar.hide(c, c.titlebar_position or 'left')
c.shape = function(cr, w, h)
gears.shape.rectangle(cr, w, h)
end
end
end
end
)
client.connect_signal("property::maximized", function(c)
c.shape = gears.shape.rectangle
if not c.maximized then
c.shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, beautiful.client_radius)
end
end
end)

View file

@ -0,0 +1,272 @@
local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
local beautiful = require('beautiful')
local dpi = require('beautiful').xresources.apply_dpi
local clickable_container = require('widget.clickable-container')
local icons = require('theme.icons')
local spawn = require('awful.spawn')
screen.connect_signal("request::desktop_decoration", function(s)
s.show_vol_osd = false
local osd_header = wibox.widget {
text = 'Volume',
font = 'VictorMono Nerd Font 12',
align = 'left',
valign = 'center',
widget = wibox.widget.textbox
}
local osd_value = wibox.widget {
text = '0%',
font = 'VictorMono Nerd Font 11',
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
local slider_osd = wibox.widget {
nil,
{
id = 'vol_osd_slider',
bar_shape = gears.shape.rounded_rect,
bar_height = dpi(2),
bar_color = '#ffffff20',
bar_active_color = '#f2f2f2EE',
handle_color = '#ffffff',
handle_shape = gears.shape.circle,
handle_width = dpi(15),
handle_border_color = '#00000012',
handle_border_width = dpi(1),
maximum = 100,
widget = wibox.widget.slider,
},
nil,
expand = 'none',
layout = wibox.layout.align.vertical
}
local vol_osd_slider = slider_osd.vol_osd_slider
-- Update volume level using slider value
vol_osd_slider:connect_signal(
'property::value',
function()
local volume_level = vol_osd_slider:get_value()
spawn('amixer -D pulse sset Master ' .. volume_level .. '%', false)
-- Update textbox widget text
osd_value.text = volume_level .. '%'
-- Update the volume slider if values here change
awesome.emit_signal('widget::volume:update', volume_level)
if s.show_vol_osd then
awesome.emit_signal(
'module::volume_osd:show',
true
)
end
end
)
vol_osd_slider:connect_signal(
'button::press',
function()
s.show_vol_osd = true
end
)
vol_osd_slider:connect_signal(
'button::release',
function()
s.show_vol_osd = false
end
)
vol_osd_slider:connect_signal(
'mouse::enter',
function()
s.show_vol_osd = true
end
)
-- The emit will come from the volume-slider
awesome.connect_signal(
'module::volume_osd',
function(volume)
vol_osd_slider:set_value(volume)
end
)
local icon = wibox.widget {
{
image = icons.volume,
resize = true,
widget = wibox.widget.imagebox
},
top = dpi(12),
bottom = dpi(12),
widget = wibox.container.margin
}
local volume_slider_osd = wibox.widget {
icon,
slider_osd,
spacing = dpi(24),
layout = wibox.layout.fixed.horizontal
}
-- Create the box
local osd_height = dpi(100)
local osd_width = dpi(300)
local osd_margin = dpi(10)
s.volume_osd_overlay = awful.popup {
widget = {
-- Removing this block will cause an error...
},
ontop = true,
visible = false,
type = 'notification',
screen = s,
height = osd_height,
width = osd_width,
maximum_height = osd_height,
maximum_width = osd_width,
offset = dpi(5),
shape = gears.shape.rectangle,
bg = beautiful.transparent,
preferred_anchors = 'middle',
preferred_positions = {'left', 'right', 'top', 'bottom'},
}
s.volume_osd_overlay : setup {
{
{
{
layout = wibox.layout.align.horizontal,
expand = 'none',
forced_height = dpi(48),
osd_header,
nil,
osd_value
},
volume_slider_osd,
layout = wibox.layout.fixed.vertical
},
left = dpi(24),
right = dpi(24),
widget = wibox.container.margin
},
bg = beautiful.background,
shape = gears.shape.rounded_rect,
widget = wibox.container.background()
}
local hide_osd = gears.timer {
timeout = 2,
autostart = true,
callback = function()
awful.screen.focused().volume_osd_overlay.visible = false
end
}
local timer_rerun = function()
if hide_osd.started then
hide_osd:again()
else
hide_osd:start()
end
end
-- Reset timer on mouse hover
s.volume_osd_overlay:connect_signal(
'mouse::enter',
function()
s.show_vol_osd = true
timer_rerun()
end
)
s.volume_osd_overlay:connect_signal(
'mouse::leave',
function()
s.show_vol_osd = false
end
)
local placement_placer = function()
local focused = awful.screen.focused()
local right_panel = focused.right_panel
local left_panel = focused.left_panel
local volume_osd = focused.volume_osd_overlay
if right_panel and left_panel then
if right_panel.visible then
awful.placement.bottom_left(focused.volume_osd_overlay, { margins = {
left = osd_margin + left_panel.width,
right = 0,
top = 0,
bottom = osd_margin,
},
parent = focused }
)
return
end
end
if right_panel then
if right_panel.visible then
awful.placement.bottom_left(focused.volume_osd_overlay, { margins = {
left = osd_margin,
right = 0,
top = 0,
bottom = osd_margin,
},
parent = focused }
)
return
end
end
awful.placement.bottom_right(focused.volume_osd_overlay, { margins = {
left = 0,
right = osd_margin,
top = 0,
bottom = osd_margin,
},
parent = focused }
)
end
awesome.connect_signal(
'module::volume_osd:show',
function(bool)
placement_placer()
awful.screen.focused().volume_osd_overlay.visible = bool
if bool then
timer_rerun()
awesome.emit_signal(
'module::brightness_osd:show',
false
)
else
if hide_osd.started then
hide_osd:stop()
end
end
end
)
end)

View file

@ -18,6 +18,39 @@ local hotkeys_popup = require("awful.hotkeys_popup")
-- when client with a matching name is opened: -- when client with a matching name is opened:
require("awful.hotkeys_popup.keys") require("awful.hotkeys_popup.keys")
-- Widgets to add
-- local batteryarc_widget = require("awesome-wm-widget.batteryarc-widget.batteryarc")
-- >> Daemons
-- Most widgets that display system/external info depend on evil.
-- Make sure to initialize it last in order to allow all widgets to connect to
-- their needed evil signals.
-- require("evil")
-- ===================================================================
-- ===================================================================
-- ========================================
-- Modules
-- Load all the modules
-- ========================================
require('module.notifications')
-- require('module.auto-start')
require('module.decorate-client')
require('module.backdrop')
-- require('module.exit-screen')
-- require('module.quake-terminal')
-- require('module.titlebar')
-- require('module.menu')
require('module.volume-osd')
require('module.brightness-osd')
require('module.dynamic-wallpaper')
-- require('module.battery-notifier')
-- require('module.lockscreen')
-- {{{ Error handling -- {{{ Error handling
-- Check if awesome encountered an error during startup and fell back to -- Check if awesome encountered an error during startup and fell back to
-- another config (This code will only ever execute for the fallback config) -- another config (This code will only ever execute for the fallback config)
@ -107,7 +140,7 @@ mykeyboardlayout = awful.widget.keyboardlayout()
-- {{{ Wibar -- {{{ Wibar
-- Create a textclock widget -- Create a textclock widget
mytextclock = wibox.widget.textclock() mytextclock = wibox.widget.textclock(" %a %b %d, %l:%M %p ")
-- Create a wibox for each screen and add it -- Create a wibox for each screen and add it
local taglist_buttons = gears.table.join( local taglist_buttons = gears.table.join(
@ -192,30 +225,91 @@ awful.screen.connect_for_each_screen(function(s)
s.mysystray = wibox.widget.systray() s.mysystray = wibox.widget.systray()
-- Create a tasklist widget -- Create a tasklist widget
-- s.mytasklist = awful.widget.tasklist {
-- screen = s,
-- filter = awful.widget.tasklist.filter.currenttags,
-- buttons = tasklist_buttons
-- style =
-- }
s.mytasklist = awful.widget.tasklist { s.mytasklist = awful.widget.tasklist {
screen = s, screen = s,
filter = awful.widget.tasklist.filter.currenttags, filter = awful.widget.tasklist.filter.currenttags,
buttons = tasklist_buttons buttons = tasklist_buttons,
} style = {
border_width = 0,
border_color = '#777777',
shape = gears.shape.rounded_bar,
},
layout = {
spacing = 20,
spacing_widget = {
{
forced_width = 5,
forced_height = 30,
-- shape = gears.shape.circle,
widget = wibox.widget.separator
},
valign = 'center',
halign = 'center',
widget = wibox.container.place,
},
layout = wibox.layout.flex.horizontal
},
-- notice that there is *no* wibox.wibox prefix, it is a template,
-- not a widget instance.
widget_template = {
{
{
{
{
id = 'icon_role',
widget = wibox.widget.imagebox,
},
margins = 4,
widget = wibox.container.margin,
},
{
id = 'text_role',
widget = wibox.widget.textbox,
},
layout = wibox.layout.align.horizontal,
},
left = 10,
right = 10,
widget = wibox.container.margin
},
id = 'background_role',
widget = wibox.container.background,
},
}
-- Create the wibox -- Create the wibox
s.mywibox = awful.wibar({ position = "bottom", screen = s }) s.mywibox = awful.wibar({ position = "bottom", screen = s })
-- Create Battery, Network, and Volume widget
s.battery = require('widget.battery')()
s.network = require('widget.network')()
-- s.volume = require('widget.volume-slider')()
s.updater = require('widget.package-updater')()
-- Add widgets to the wibox -- Add widgets to the wibox
s.mywibox:setup { s.mywibox:setup {
layout = wibox.layout.align.horizontal, layout = wibox.layout.align.horizontal,
{ -- Left widgets { -- Left widgets
layout = wibox.layout.fixed.horizontal, layout = wibox.layout.fixed.horizontal,
mylauncher, wibox.container.margin (s.mytaglist,25,0,0,0),
s.mytaglist,
s.mypromptbox, s.mypromptbox,
}, },
s.mytasklist, -- Middle widget wibox.container.margin (s.mytasklist,35,35,0,0), -- Middle widget
{ -- Right widgets { -- Right widgets
layout = wibox.layout.fixed.horizontal, layout = wibox.layout.fixed.horizontal,
s.mysystray, s.mysystray,
-- s.volume,
s.updater,
s.network,
s.battery,
mytextclock, mytextclock,
s.mylayoutbox, wibox.container.margin (s.mylayoutbox,0,25,0,0),
}, },
} }
end) end)
@ -275,6 +369,11 @@ globalkeys = gears.table.join(
end, end,
{description = "go back", group = "client"}), {description = "go back", group = "client"}),
-- Screenshots
awful.key({}, "Print", function() awful.util.spawn("flameshot gui") end,
{description = "take a screenshot", group = "screen"}),
-- Increase-Decrease Gap -- Increase-Decrease Gap
awful.key({ modkey, Mod1 }, "k", function () awful.tag.incgap ( 1, null) end, awful.key({ modkey, Mod1 }, "k", function () awful.tag.incgap ( 1, null) end,
@ -321,8 +420,42 @@ globalkeys = gears.table.join(
end, end,
{description = "restore minimized", group = "client"}), {description = "restore minimized", group = "client"}),
-- Volume Keys
awful.key({}, "XF86AudioLowerVolume", function ()
awful.util.spawn("amixer -q -D pulse sset Master 5%-", false)
end),
awful.key({}, "XF86AudioRaiseVolume", function ()
awful.util.spawn("amixer -q -D pulse sset Master 5%+", false)
end),
awful.key({}, "XF86AudioMute", function ()
awful.util.spawn("amixer -D pulse set Master 1+ toggle", false)
end),
-- Media Keys
awful.key({}, "XF86AudioPlay", function()
awful.util.spawn("playerctl play-pause", false)
end),
awful.key({}, "XF86AudioNext", function()
awful.util.spawn("playerctl next", false)
end),
awful.key({}, "XF86AudioPrev", function()
awful.util.spawn("playerctl previous", false)
end),
-- Brightness Keys
awful.key({}, "XF86MonBrightnessUp", function()
awful.util.spawn("brightnessctl set +10%", false)
awesome.emit_signal('widget::brightness')
awesome.emit_signal('module::brightness_osd:show', true)
end),
awful.key({}, "XF86MonBrightnessDown", function()
awful.util.spawn("brightnessctl set 10%-", false)
awesome.emit_signal('widget::brightness')
awesome.emit_signal('module::brightness_osd:show', true)
end),
-- Prompt -- Prompt
awful.key({ modkey }, "r", function () awful.key({ }, "Menu", function ()
awful.util.spawn("/home/chris/.dotfiles/rofi/launchers-git/launcher.sh") end, awful.util.spawn("/home/chris/.dotfiles/rofi/launchers-git/launcher.sh") end,
{description = "launch rofi", group = "launcher"}), {description = "launch rofi", group = "launcher"}),
@ -502,12 +635,15 @@ awful.rules.rules = {
-- Add titlebars to normal clients and dialogs -- Add titlebars to normal clients and dialogs
{ rule_any = {type = { "normal", "dialog" } { rule_any = {type = { "normal", "dialog" }
}, properties = { titlebars_enabled = true } }, properties = { titlebars_enabled = false }
}, },
-- Set Firefox to always map on the tag named "2" on screen 1. -- Set Firefox to always map on the tag named "2" on screen 1.
-- { rule = { class = "Firefox" }, { rule = { class = "Firefox" },
-- properties = { screen = 1, tag = "2" } }, properties = { screen = 1, tag = "2",
maximized_vertical = true,
maximized_horizontal = true,
} },
} }
-- }}} -- }}}
@ -578,5 +714,6 @@ client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_n
-- Autostart Applications -- Autostart Applications
awful.spawn.with_shell("picom") awful.spawn.with_shell("picom")
awful.spawn.with_shell("nitrogen --restore") awful.spawn.with_shell("feh --bg-fill /home/chris/Pictures/royalking.png")
-- awful.spawn.with_shell("polybarstart") awful.spawn.with_shell("libinput-gestures-setup start")
awful.spawn.with_shell("flameshot")

View file

@ -9,10 +9,12 @@ local gears = require('gears')
local gfs = require("gears.filesystem") local gfs = require("gears.filesystem")
local themes_path = gfs.get_themes_dir() local themes_path = gfs.get_themes_dir()
-- local theme_dir = filesystem.get_configuration_dir() .. '/theme'
local theme = {} local theme = {}
theme.font = "Rec Mono Linear 10" theme.font = "VictorMono Nerd Font 10"
-- theme.icons = theme_dir .. '/icons/'
theme.bg_normal = "#282a36" theme.bg_normal = "#282a36"
theme.bg_focus = "#43454f" theme.bg_focus = "#43454f"
@ -25,8 +27,10 @@ theme.fg_focus = "#e2e4e5"
theme.fg_urgent = "#e2e4e5" theme.fg_urgent = "#e2e4e5"
theme.fg_minimize = "#e2e4e5" theme.fg_minimize = "#e2e4e5"
theme.red = "#ff5c57"
theme.useless_gap = dpi(8) theme.useless_gap = dpi(8)
theme.border_width = dpi(1) theme.border_width = dpi(0)
theme.border_normal = "#00000000" theme.border_normal = "#00000000"
theme.border_focus = "#00000000" theme.border_focus = "#00000000"
theme.border_marked = "#00000000" theme.border_marked = "#00000000"
@ -45,7 +49,7 @@ theme.border_marked = "#00000000"
--theme.taglist_bg_focus = "#ff0000" --theme.taglist_bg_focus = "#ff0000"
-- Generate taglist squares: -- Generate taglist squares:
local taglist_square_size = dpi(4) local taglist_square_size = dpi(8)
theme.taglist_squares_sel = theme_assets.taglist_squares_sel( theme.taglist_squares_sel = theme_assets.taglist_squares_sel(
taglist_square_size, theme.fg_normal taglist_square_size, theme.fg_normal
) )
@ -53,6 +57,14 @@ theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
taglist_square_size, theme.fg_normal taglist_square_size, theme.fg_normal
) )
-- Tasklists
theme.tasklist_shape = gears.shape.rounded_bar
theme.tasklist_spacing = 40
theme.tasklist_align = "center"
theme.tasklist_bg = theme.red
-- Variables set for theming notifications: -- Variables set for theming notifications:
-- notification_font -- notification_font
-- notification_[bg|fg] -- notification_[bg|fg]
@ -77,7 +89,7 @@ theme.wibar_bg = theme.bg_normal
-- theme.wibar_y = 1030 -- theme.wibar_y = 1030
theme.wibar_x = 0 theme.wibar_x = 0
-- theme.wibar_stretch = false -- theme.wibar_stretch = false
theme.wibar_border_width = 3 theme.wibar_border_width = dpi(5)
theme.wibar_border_color = nil theme.wibar_border_color = nil
-- theme.wibar_ontop = nil -- theme.wibar_ontop = nil
-- theme.wibar_cursor = nil -- theme.wibar_cursor = nil
@ -142,6 +154,7 @@ theme.awesome_icon = theme_assets.awesome_icon(
theme.menu_height, theme.bg_focus, theme.fg_focus theme.menu_height, theme.bg_focus, theme.fg_focus
) )
-- theme.awesome_icon = theme.icons .. 'awesome.svg'
-- Define the icon theme for application icons. If not set then the icons -- Define the icon theme for application icons. If not set then the icons
-- from /usr/share/icons and /usr/share/icons/hicolor will be used. -- from /usr/share/icons and /usr/share/icons/hicolor will be used.
theme.icon_theme = nil theme.icon_theme = nil

View file

@ -0,0 +1,231 @@
local gears = require('gears')
local beautiful = require('beautiful')
local filesystem = require('gears.filesystem')
local dpi = require('beautiful').xresources.apply_dpi
local theme_dir = filesystem.get_configuration_dir() .. '/theme'
local titlebar_theme = "stoplight"
local titlebar_icon_path = theme_dir .. "/icons/titlebar/" .. titlebar_theme .. '/'
local tip = titlebar_icon_path
local theme = {}
theme.icons = theme_dir .. '/icons/'
-- Font
theme.font = 'SF Pro Text Regular 10'
theme.font_bold = 'SF Pro Text Bold 10'
-- Menu icon theme
theme.icon_theme = 'Tela-blue-dark'
local awesome_overrides = function(theme)
theme.dir = theme_dir
theme.icons = theme.dir .. '/icons/'
-- Wallpaper
theme.wallpaper = theme.dir .. '/wallpapers/morning-wallpaper.jpg'
-- Foreground
theme.font = 'SF Pro Text Regular 10'
theme.title_font = 'SF Pro Text Bold 14'
theme.fg_normal = '#ffffffde'
theme.fg_focus = '#e4e4e4'
theme.fg_urgent = '#CC9393'
theme.bat_fg_critical = '#232323'
theme.bg_normal = theme.background
theme.bg_focus = '#5a5a5a'
theme.bg_urgent = '#3F3F3F'
-- System tray
theme.bg_systray = theme.background
theme.systray_icon_spacing = dpi(16)
-- Titlebar
theme.titlebar_size = dpi(34)
theme.titlebar_bg_focus = beautiful.gtk.get_theme_variables().bg_color:sub(1,7) .. '66'
theme.titlebar_bg_normal = beautiful.gtk.get_theme_variables().base_color:sub(1,7) .. '66'
theme.titlebar_fg_focus = beautiful.gtk.get_theme_variables().fg_color .. '00'
theme.titlebar_fg_normal = beautiful.gtk.get_theme_variables().fg_color .. '00'
-- Close Button
theme.titlebar_close_button_normal = tip .. "close_normal.svg"
theme.titlebar_close_button_focus = tip .. "close_focus.svg"
-- Minimize Button
theme.titlebar_minimize_button_normal = tip .. "minimize_normal.svg"
theme.titlebar_minimize_button_focus = tip .. "minimize_focus.svg"
-- Ontop Button
theme.titlebar_ontop_button_normal_inactive = tip .. "ontop_normal_inactive.svg"
theme.titlebar_ontop_button_focus_inactive = tip .. "ontop_focus_inactive.svg"
theme.titlebar_ontop_button_normal_active = tip .. "ontop_normal_active.svg"
theme.titlebar_ontop_button_focus_active = tip .. "ontop_focus_active.svg"
-- Sticky Button
theme.titlebar_sticky_button_normal_inactive = tip .. "sticky_normal_inactive.svg"
theme.titlebar_sticky_button_focus_inactive = tip .. "sticky_focus_inactive.svg"
theme.titlebar_sticky_button_normal_active = tip .. "sticky_normal_active.svg"
theme.titlebar_sticky_button_focus_active = tip .. "sticky_focus_active.svg"
-- Floating Button
theme.titlebar_floating_button_normal_inactive = tip .. "floating_normal_inactive.svg"
theme.titlebar_floating_button_focus_inactive = tip .. "floating_focus_inactive.svg"
theme.titlebar_floating_button_normal_active = tip .. "floating_normal_active.svg"
theme.titlebar_floating_button_focus_active = tip .. "floating_focus_active.svg"
-- Maximized Button
theme.titlebar_maximized_button_normal_inactive = tip .. "maximized_normal_inactive.svg"
theme.titlebar_maximized_button_focus_inactive = tip .. "maximized_focus_inactive.svg"
theme.titlebar_maximized_button_normal_active = tip .. "maximized_normal_active.svg"
theme.titlebar_maximized_button_focus_active = tip .. "maximized_focus_active.svg"
-- Hovered Close Button
theme.titlebar_close_button_normal_hover = tip .. "close_normal_hover.svg"
theme.titlebar_close_button_focus_hover = tip .. "close_focus_hover.svg"
-- Hovered Minimize Buttin
theme.titlebar_minimize_button_normal_hover = tip .. "minimize_normal_hover.svg"
theme.titlebar_minimize_button_focus_hover = tip .. "minimize_focus_hover.svg"
-- Hovered Ontop Button
theme.titlebar_ontop_button_normal_inactive_hover = tip .. "ontop_normal_inactive_hover.svg"
theme.titlebar_ontop_button_focus_inactive_hover = tip .. "ontop_focus_inactive_hover.svg"
theme.titlebar_ontop_button_normal_active_hover = tip .. "ontop_normal_active_hover.svg"
theme.titlebar_ontop_button_focus_active_hover = tip .. "ontop_focus_active_hover.svg"
-- Hovered Sticky Button
theme.titlebar_sticky_button_normal_inactive_hover = tip .. "sticky_normal_inactive_hover.svg"
theme.titlebar_sticky_button_focus_inactive_hover = tip .. "sticky_focus_inactive_hover.svg"
theme.titlebar_sticky_button_normal_active_hover = tip .. "sticky_normal_active_hover.svg"
theme.titlebar_sticky_button_focus_active_hover = tip .. "sticky_focus_active_hover.svg"
-- Hovered Floating Button
theme.titlebar_floating_button_normal_inactive_hover = tip .. "floating_normal_inactive_hover.svg"
theme.titlebar_floating_button_focus_inactive_hover = tip .. "floating_focus_inactive_hover.svg"
theme.titlebar_floating_button_normal_active_hover = tip .. "floating_normal_active_hover.svg"
theme.titlebar_floating_button_focus_active_hover = tip .. "floating_focus_active_hover.svg"
-- Hovered Maximized Button
theme.titlebar_maximized_button_normal_inactive_hover = tip .. "maximized_normal_inactive_hover.svg"
theme.titlebar_maximized_button_focus_inactive_hover = tip .. "maximized_focus_inactive_hover.svg"
theme.titlebar_maximized_button_normal_active_hover = tip .. "maximized_normal_active_hover.svg"
theme.titlebar_maximized_button_focus_active_hover = tip .. "maximized_focus_active_hover.svg"
-- UI Groups
theme.groups_title_bg = "#ffffff" .. "15"
theme.groups_bg = "#ffffff" .. "10"
theme.groups_radius = dpi(9)
-- Client Decorations
-- Borders
theme.border_focus = beautiful.gtk.get_theme_variables().bg_color
theme.border_normal = beautiful.gtk.get_theme_variables().base_color
theme.border_marked = '#CC9393'
theme.border_width = dpi(0)
theme.border_radius = dpi(0)
-- Decorations
theme.client_radius = dpi(9)
theme.useless_gap = dpi(4)
-- Menu
theme.menu_font = "SF Pro Text Regular 11"
theme.menu_submenu = '' -- ➤
theme.menu_height = dpi(34)
theme.menu_width = dpi(200)
theme.menu_border_width = dpi(20)
theme.menu_bg_focus = theme.accent .. 'CC'
theme.menu_bg_normal = theme.background:sub(1,7) .. '33'
theme.menu_fg_normal = '#ffffff'
theme.menu_fg_focus = '#ffffff'
theme.menu_border_color = theme.background:sub(1,7) .. '5C'
-- Tooltips
theme.tooltip_bg = theme.background
theme.tooltip_border_color = theme.transparent
theme.tooltip_border_width = 0
theme.tooltip_gaps = dpi(5)
theme.tooltip_shape = function(cr, w, h)
gears.shape.rounded_rect(cr, w, h, dpi(6))
end
-- Separators
theme.separator_color = '#f2f2f244'
-- Layoutbox icons
theme.layout_max = theme.icons .. 'layouts/max.svg'
theme.layout_tile = theme.icons .. 'layouts/tile.svg'
theme.layout_dwindle = theme.icons .. 'layouts/dwindle.svg'
theme.layout_floating = theme.icons .. 'layouts/floating.svg'
-- Taglist
theme.taglist_bg_empty = theme.background .. '99'
theme.taglist_bg_occupied = '#ffffff' .. '1A'
theme.taglist_bg_urgent = "#E91E63" .. '99'
theme.taglist_bg_focus = theme.background
theme.taglist_spacing = dpi(0)
-- Tasklist
theme.tasklist_font = 'SF Pro Text Regular 10'
theme.tasklist_bg_normal = theme.background .. '99'
theme.tasklist_bg_focus = theme.background
theme.tasklist_bg_urgent = "#E91E63" .. '99'
theme.tasklist_fg_focus = '#DDDDDD'
theme.tasklist_fg_urgent = "#ffffff"
theme.tasklist_fg_normal = '#AAAAAA'
-- Notification
theme.notification_position = 'top_right'
theme.notification_bg = theme.transparent
theme.notification_margin = dpi(5)
theme.notification_border_width = dpi(0)
theme.notification_border_color = theme.transparent
theme.notification_spacing = dpi(0)
theme.notification_icon_resize_strategy = 'center'
theme.notification_icon_size = dpi(32)
-- Client Snap Theme
theme.snap_bg = theme.background
theme.snap_shape = gears.shape.rectangle
theme.snap_border_width = dpi(15)
-- Hotkey popup
theme.hotkeys_font = 'SF Pro Text Bold'
theme.hotkeys_description_font = 'SF Pro Text Regular Regular'
theme.hotkeys_bg = theme.background
theme.hotkeys_group_margin = dpi(20)
end
return {
theme = theme,
awesome_overrides = awesome_overrides
}

View file

@ -0,0 +1,54 @@
local filesystem = require('gears.filesystem')
local theme_dir = filesystem.get_configuration_dir() .. '/theme'
local theme = {}
theme.icons = theme_dir .. '/icons/'
theme.font = 'SF Pro Text Regular 10'
theme.font_bold = 'SF Pro Text Bold 10'
-- Colorscheme
theme.system_black_dark = '#3D4C5F'
theme.system_black_light = '#56687E'
theme.system_red_dark = '#EE4F84'
theme.system_red_light = '#F48FB1'
theme.system_green_dark = '#53E2AE'
theme.system_green_light = '#A1EFD3'
theme.system_yellow_dark = '#F1FF52'
theme.system_yellow_light = '#F1FA8C'
theme.system_blue_dark = '#6498EF'
theme.system_blue_light = '#92B6F4'
theme.system_magenta_dark = '#985EFF'
theme.system_magenta_light = '#BD99FF'
theme.system_cyan_dark = '#24D1E7'
theme.system_cyan_light = '#87DFEB'
theme.system_white_dark = '#E5E5E5'
theme.system_white_light = '#F8F8F2'
-- Accent color
theme.accent = theme.system_blue_dark
-- Background color
theme.background = '#000000' .. '66'
-- Transparent
theme.transparent = '#00000000'
-- Awesome icon
theme.awesome_icon = theme.icons .. 'awesome.svg'
local awesome_overrides = function(theme) end
return {
theme = theme,
awesome_overrides = awesome_overrides
}

View file

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg851"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="awesome.svg">
<defs
id="defs845" />
<sodipodi:namedview
id="base"
pagecolor="#252525"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="-141.42857"
inkscape:cy="560"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1321"
inkscape:window-height="740"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="1" />
<metadata
id="metadata848">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-161.53332)">
<image
width="134.26808"
height="134.26808"
preserveAspectRatio="none"
style="image-rendering:optimizeQuality"
xlink:href="data:image/png;base64,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 AAAASUVORK5CYII= "
id="image10"
x="0.59929252"
y="162.13261" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
viewBox="0 0 240 240"
xml:space="preserve"
width="240"
height="240"
sodipodi:docname="battery-charge.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14"><metadata
id="metadata15"><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></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs13" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview11"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.4609375"
inkscape:cx="-157.28814"
inkscape:cy="256"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="Capa_1" /><g
id="g8"
transform="matrix(0.390625,0,0,0.390625,20,20)"><g
id="g6">
<g
id="g4">
<path
d="M 384,64 H 341.333 V 10.68 C 341.333,4.777 337.27,0 331.375,0 H 181.333 c -5.896,0 -10.667,4.777 -10.667,10.68 V 64 H 128 C 104.469,64 85.333,82.62 85.333,106.18 V 469.283 C 85.333,492.842 104.469,512 128,512 h 256 c 23.531,0 42.667,-19.158 42.667,-42.718 V 106.18 C 426.667,82.62 407.531,64 384,64 Z m -44.25,208.26 -85.333,138.667 c -1.979,3.208 -5.448,5.073 -9.083,5.073 -0.969,0 -1.938,-0.135 -2.906,-0.406 -4.594,-1.292 -7.76,-5.49 -7.76,-10.26 V 320 h -53.333 c -3.865,0 -7.427,-2.094 -9.313,-5.458 -1.885,-3.375 -1.802,-7.51 0.229,-10.802 l 85.333,-138.667 c 2.5,-4.063 7.406,-5.927 11.99,-4.667 4.594,1.292 7.76,5.49 7.76,10.26 V 256 h 53.333 c 3.865,0 7.427,2.094 9.313,5.458 1.885,3.375 1.801,7.511 -0.23,10.802 z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g>
</g></g> </svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.7 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="brightness-7.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-267.45763"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 120,84.6331 A 35.366932,35.366932 0 0 0 84.6331,120 35.366932,35.366932 0 0 0 120,155.3669 35.366932,35.366932 0 0 0 155.3669,120 35.366932,35.366932 0 0 0 120,84.6331 m 0,88.4173 A 53.050398,53.050398 0 0 1 66.9496,120 53.050398,53.050398 0 0 1 120,66.9496 53.050398,53.050398 0 0 1 173.0504,120 53.050398,53.050398 0 0 1 120,173.0504 M 190.7339,90.7339 V 49.2661 H 149.2661 L 120,20 90.7339,49.2661 H 49.2661 V 90.7339 L 20,120 49.2661,149.2661 v 41.4678 H 90.7339 L 120,220 149.2661,190.7339 h 41.4678 V 149.2661 L 220,120 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:8.84173298" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="chart-areaspline.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-4.1277356"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 174.5,154.55 220,75.85 v 116.9 20 H 20 v -180 h 20 v 125.4 l 55,-95.4 65,37.8 42.4,-73.3 17.3,10 -52.3,90.5 -65.1,-37.5 -59.2,102.5 h 22.6 l 43.9,-75.6 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:10" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="close.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-267.45763"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 220,40.14286 199.85714,20 120,99.857143 40.142857,20 20,40.14286 99.85714,120 20,199.85714 40.142857,220 120,140.14286 199.85714,220 220,199.85714 140.14286,120 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:14.2857132" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="Capa_1"
enable-background="new 0 0 488.471 488.471"
height="240"
viewBox="0 0 240 240"
width="240"
class=""
version="1.1"
sodipodi:docname="effects.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata17">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs15" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview13"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.4609375"
inkscape:cx="-523.03664"
inkscape:cy="256"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="Capa_1"
scale-x="1" />
<g
transform="matrix(0.40944089,0,0,0.40944089,20,20)"
id="g10">
<path
d="m 427.412,122.118 c 0,-33.723 27.337,-61.059 61.059,-61.059 -33.721,0 -61.059,-27.337 -61.059,-61.059 0,33.721 -27.337,61.059 -61.059,61.059 33.721,0 61.059,27.335 61.059,61.059 z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 442.677,183.176 c 0,25.291 -20.503,45.794 -45.794,45.794 25.292,0 45.794,20.503 45.794,45.794 0,-25.292 20.503,-45.794 45.794,-45.794 -25.292,0.001 -45.794,-20.502 -45.794,-45.794 z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path4"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 213.706,183.176 c 0,-50.583 41.005,-91.588 91.588,-91.588 -50.583,0 -91.588,-41.005 -91.588,-91.588 0,50.583 -41.005,91.588 -91.588,91.588 50.583,0 91.588,41.006 91.588,91.588 z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path6"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="M 335.824,91.588 0,427.412 61.059,488.471 396.883,152.647 Z m -52.115,97.909 43.17,-43.17 15.265,15.265 -43.17,43.17 c 0,0 -15.265,-15.265 -15.265,-15.265 z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path8"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="harddisk.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-86.909593"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 60,20 h 120 a 20,20 0 0 1 20,20 v 160 a 20,20 0 0 1 -20,20 H 60 A 20,20 0 0 1 40,200 V 40 A 20,20 0 0 1 60,20 m 60,20 a 60,60 0 0 0 -60,60 c 0,33.1 26.9,60 61,60 l -8.8,-22.3 c -2.7,-4.8 -1.1,-10.9 3.7,-13.7 l 8.6,-5 c 4.8,-2.7 10.9,-1.1 13.7,3.7 l 19.2,24.2 C 171.2,135.9 180,119 180,100 A 60,60 0 0 0 120,40 m 0,50 a 10,10 0 0 1 10,10 10,10 0 0 1 -10,10 10,10 0 0 1 -10,-10 10,10 0 0 1 10,-10 m -50,90 a 10,10 0 0 0 -10,10 10,10 0 0 0 10,10 10,10 0 0 0 10,-10 10,10 0 0 0 -10,-10 m 50.9,-47.3 24.9,63.1 25.9,-15 -42.2,-53.1 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:10" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -0,0 +1,42 @@
-- Icons directory
local dir = os.getenv('HOME') .. '/.config/awesome/theme/icons/'
return {
-- Action Bar
web_browser = dir .. 'tag-list/' .. 'web-browser.svg',
text_editor = dir .. 'tag-list/' .. 'text-editor.svg',
social = dir .. 'tag-list/' .. 'social.svg',
file_manager = dir .. 'tag-list/' .. 'file-manager.svg',
multimedia = dir .. 'tag-list/' .. 'multimedia.svg',
games = dir .. 'tag-list/' .. 'games.svg',
development = dir .. 'tag-list/' .. 'development.svg',
sandbox = dir .. 'tag-list/' .. 'sandbox.svg',
terminal = dir .. 'tag-list/' .. 'terminal.svg',
graphics = dir .. 'tag-list/' .. 'graphics.svg',
menu = dir .. 'tag-list/' .. 'menu.svg',
close_small = dir .. 'tag-list/' .. 'close-small.svg',
-- Others/System UI
close = dir .. 'close.svg',
logout = dir .. 'logout.svg',
sleep = dir .. 'power-sleep.svg',
power = dir .. 'power.svg',
lock = dir .. 'lock.svg',
restart = dir .. 'restart.svg',
search = dir .. 'magnify.svg',
volume = dir .. 'volume-high.svg',
brightness = dir .. 'brightness-7.svg',
effects = dir .. 'effects.svg',
chart = dir .. 'chart-areaspline.svg',
memory = dir .. 'memory.svg',
harddisk = dir .. 'harddisk.svg',
thermometer = dir .. 'thermometer.svg',
plus = dir .. 'plus.svg',
batt_charging = dir .. 'battery-charge.svg',
batt_discharging = dir .. 'battery-discharge.svg',
toggled_on = dir .. 'toggled-on.svg',
toggled_off = dir .. 'toggled-off.svg'
}

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="240"
height="240"
viewBox="0 0 240 240"
sodipodi:docname="dwindle.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview4"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="3.4570311"
inkscape:cx="-12.438419"
inkscape:cy="34.133335"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<image
width="200"
height="200"
preserveAspectRatio="none"
style="image-rendering:optimizeQuality"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAC63pUWHRSYXcgcHJvZmlsZSB0eXBl IGV4aWYAAHja7ZdtktwoDIb/c4ocAUkIieNgPqpygz1+XrDd0z2Z3SS1+2er2pQBC1nI7wP0TBh/ fZ/hGy4qmUNS81xyjrhSSYUrOh7Pq+yaYtr1vtI1hOcXe3gMMEyCVs5Hq5d/hV0/XrjnoOPVHvwa Yb8CXQN3QFkzMzr9OUnY+bTTlUko4+zk4vac6sFn2+6U/eOed1p2Nus5PBuSQaWumEiYh5DEXfuZ gZx3xS27ZvhFMfSTaECD68oEgrx83t3G+CzQi8h3L3xW/9H7JD7Xyy6ftMyXRuh8OUD6tfhb4qeJ 5ZERvw6Y3KG+EHl2n3OcX1dThqL5WlFbbLrDwPGA5LJfyyiGW9G3XQqKxxobkPfY4oHSqBCDygyU qFOlSWO3jRpSTDzY0DI3lm1zMS7cQInACIUmmxTp4mDZeAQgS8KPXGjPW/Z8jRwzd4IrE4IRXvnb Ev5p8E9KmLMtiSj6QyvkxWtdI41FbtXwAhCaFzfdAt/lwh+f1s9aqgluS2bHB9Z4nCEOpY+1JZuz wE/RnluIgvUrACTC3IpkSEAgZhKlTNGYjQg6OgBVZM6S+AABUuWOJDmJ4Dwydl5z4x2j7cvKmZcZ Z9PaRZKxnxyEKmClpFg/lhxrqKpoUtWsph60aM2SU9acs+V1yFUTS6aWzcytWHXx5OrZzd2L18JF cAZqycWKl1Jq5VAxUUWsCv8Ky8GHHOnQIx92+FGO2rB8WmracrPmrbTauUvHMdFzt+699DooDJwU Iw0dedjwUUadWGtTZpo687Tps8z6oHZR/an8ATW6qPEmtfzsQQ3WYHaHoHWc6GIGYpwIxG0RwILm xSw6pcSL3GIWC2NTKCNJXWxCp0UMCNMg1kkPdh/kfotbUP8tbvwrcmGh+y/IBaD7mdsX1Pr6nWub 2LkLl6ZRsPvgU9kD7hhR/dv2Hegd6B3oHegd6B3oHej/H0gm/njAP7HhB1+WnbTC/M3iAAABhWlD Q1BJQ0MgcHJvZmlsZQAAeJx9kT1Iw1AUhU9TtSIVBwuKOGSoLloQFXHUKhShQqgVWnUweemP0KQh SXFxFFwLDv4sVh1cnHV1cBUEwR8QJ0cnRRcp8b6k0CLGC4/3cd49h/fuA4RaiWlW2xig6baZSsTF THZFDL0iiAD6MIIOmVnGrCQl4Vtf99RLdRfjWf59f1a3mrMYEBCJZ5hh2sTrxFObtsF5nzjCirJK fE48atIFiR+5rnj8xrngssAzI2Y6NUccIRYLLay0MCuaGvEkcVTVdMoXMh6rnLc4a6UKa9yTvzCc 05eXuE5rEAksYBESRCioYAMl2IjRrpNiIUXncR//gOuXyKWQawOMHPMoQ4Ps+sH/4PdsrfzEuJcU jgPtL47zMQSEdoF61XG+jx2nfgIEn4Ervekv14DpT9KrTS16BPRsAxfXTU3ZAy53gP4nQzZlVwrS EvJ54P2MvikL9N4CXave3BrnOH0A0jSr5A1wcAgMFyh7zefdna1z+7enMb8fKAtyidNZ3ucAAAAG YktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfkAwEXLSHLNxHFAAAB CklEQVR42u3aQQ6DIBCF4YfnME0v0y7ag3hpN2a8B266acBWYqEi/yQuYZLPOJBxnPdeLUenxgMA AMJ4Spol+cyPSXoUzB/N5yJF0CT1hV6ASboUzB/kiwGUPhZc4fyOGgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAIeIOePeVgPAkAnBXnu/xRH/DlMDAACgbYC7pFHfZ35GSbfI+rUZo80z Qv8ugpPCuaG1mCRdI9W+/3ASnG5GKHU9M0IAAAAAAAAAcF6AufZ+QK5+QjX9gL03QWoAAAC0DVB9 P2BvEUzqB3SJ5+ivw3bmtxyfwFAIIXouJ+RPXb/5HkARBACAdmIBSyGL2Z8T2C4AAAAASUVORK5C YII= "
id="image10"
x="20"
y="20" />
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="240"
height="240"
viewBox="0 0 240 240"
sodipodi:docname="floating.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview4"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="3.4570311"
inkscape:cx="-20.682487"
inkscape:cy="34.133335"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<image
width="200"
height="200"
preserveAspectRatio="none"
style="image-rendering:optimizeQuality"
xlink:href="data:image/png;base64,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 TkSuQmCC "
id="image10"
x="20"
y="20" />
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 240 240"
height="240"
width="240"
id="svg2"
version="1.1"
sodipodi:docname="fullscreen.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="3.6875"
inkscape:cx="-19.389831"
inkscape:cy="32.196194"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<image
y="20"
x="20"
id="image10"
xlink:href="data:image/png;base64,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 3+5uvgnyAAAAAElFTkSuQmCC "
style="image-rendering:optimizeQuality"
preserveAspectRatio="none"
height="200"
width="200" />
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 240 240"
height="240"
width="240"
id="svg2"
version="1.1"
sodipodi:docname="max.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.16296602"
inkscape:cx="-1772.3129"
inkscape:cy="60.603641"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<image
y="20"
x="20"
id="image10"
xlink:href="data:image/png;base64,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 AAAAAElFTkSuQmCC "
style="image-rendering:optimizeQuality"
preserveAspectRatio="none"
height="200"
width="200" />
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="240"
height="240"
viewBox="0 0 240 240"
sodipodi:docname="tile.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview4"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="3.4570311"
inkscape:cx="113.41698"
inkscape:cy="20.959299"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<image
width="200"
height="200"
preserveAspectRatio="none"
style="image-rendering:optimizeQuality"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAC63pUWHRSYXcgcHJvZmlsZSB0eXBl IGV4aWYAAHja7ZdtktwoDIb/c4ocAUkIieNgPqpygz1+XrDd0z2Z3SS1+2er2pQBC1nI7wP0TBh/ fZ/hGy4qmUNS81xyjrhSSYUrOh7Pq+yaYtr1vtI1hOcXe3gMMEyCVs5Hq5d/hV0/XrjnoOPVHvwa Yb8CXQN3QFkzMzr9OUnY+bTTlUko4+zk4vac6sFn2+6U/eOed1p2Nus5PBuSQaWumEiYh5DEXfuZ gZx3xS27ZvhFMfSTSEDD25VOQV4+725jfBboReS7Fz6r/+h9Ep/rZZdPWuZLI3S+HCD9Wvwt8dPE 8siIXwdM7lBfiDy7zznOr6spQ9F8ragtNt1h4HhActmvZRTDrejbLgXFY40NyHts8UBpVIhBZQZK 1KnSpLHbRg0pJh5saJkby7a5GBduoERghEKTTYp0ccBqPAJQJuFHLrTnLXu+Ro6ZO8GVCcEIr/xt Cf80+CclzNmWRBT9oRXy4rWukcYit2p4AQjNi5tuge9y4Y9P62ct1QS3JbPjA2s8zhCH0sfaks1Z 4Kdozy1EwfoVABJhbkUyJCAQM4lSpmjMRgQdHYAqMmdJfIAAqXJHkowNgvPI2HnNjXeMti8rZ15m nE0AoZKxnxyEKmClpFg/lhxrqKpoUtWsph60aM2SU9acs+V1yFUTS6aWzcytWHXx5OrZzd2L18JF cAZqycWKl1Jq5VAxUUWsCv8Ky8GHHOnQIx92+FGO2rB8WmracrPmrbTauUvHMdFzt+699DooDJwU Iw0dedjwUUadWGtTZpo687Tps8z6oHZR/an8ATW6qPEmtfzsQQ3WYHaHoHWc6GIGYpwIxG0RwILm xSw6pcSL3GIWC2NTKCNJXWxCp0UMCNMg1kkPdh/kfotbUP8tbvwrcmGh+y/IBaD7mdsX1Pr6nWub 2LkLl6ZRsPvgU9kD7hhR/dv2Hegd6B3oHegd6B3oHej/H0gm/njAP7HhB3u4nbY7yMH4AAABhWlD Q1BJQ0MgcHJvZmlsZQAAeJx9kT1Iw1AUhU9TtSIVBwuKOGSoLloQFXHUKhShQqgVWnUweemP0KQh SXFxFFwLDv4sVh1cnHV1cBUEwR8QJ0cnRRcp8b6k0CLGC4/3cd49h/fuA4RaiWlW2xig6baZSsTF THZFDL0iiAD6MIIOmVnGrCQl4Vtf99RLdRfjWf59f1a3mrMYEBCJZ5hh2sTrxFObtsF5nzjCirJK fE48atIFiR+5rnj8xrngssAzI2Y6NUccIRYLLay0MCuaGvEkcVTVdMoXMh6rnLc4a6UKa9yTvzCc 05eXuE5rEAksYBESRCioYAMl2IjRrpNiIUXncR//gOuXyKWQawOMHPMoQ4Ps+sH/4PdsrfzEuJcU jgPtL47zMQSEdoF61XG+jx2nfgIEn4Ervekv14DpT9KrTS16BPRsAxfXTU3ZAy53gP4nQzZlVwrS EvJ54P2MvikL9N4CXave3BrnOH0A0jSr5A1wcAgMFyh7zefdna1z+7enMb8fKAtyidNZ3ucAAAAG YktHRAAAAAAAAPlDu38AAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfkAwEXKxzFBfpSAAAA pUlEQVR42u3bQQpAIQgFwIzuf+X+Cdp8KgzHZaDQQC4eFHPOVrl6K14AqgOMxfnfxRCvzesbh696 U8+zAwAAAAAAAAAAAAAAAADgUMXm3q3zxiXoyDrPEwBQvG7tgKcywSyXX/XKBO0AAAAAAAAAAAAA AAAAvAAgE2wyQTsAQNaSCSa+/KpXJmgHAAAAAAAAAAAAAAAA4ARA6gxv97zwd9gTAFC6PgsFG4ct jyRYAAAAAElFTkSuQmCC "
id="image10"
x="20"
y="20" />
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="lock.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-216.62268"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 120,172.38095 a 19.047619,19.047619 0 0 0 19.04762,-19.04762 c 0,-10.57143 -8.57143,-19.04762 -19.04762,-19.04762 A 19.047619,19.047619 0 0 0 100.95238,153.33333 19.047619,19.047619 0 0 0 120,172.38095 m 57.14285,-85.71428 a 19.047619,19.047619 0 0 1 19.04762,19.04762 v 95.23809 A 19.047619,19.047619 0 0 1 177.14285,220 H 62.857146 a 19.047619,19.047619 0 0 1 -19.04762,-19.04762 v -95.23809 c 0,-10.57143 8.57143,-19.04762 19.04762,-19.04762 h 9.52381 V 67.61905 A 47.619048,47.619048 0 0 1 120,20 47.619048,47.619048 0 0 1 167.61904,67.61905 v 19.04762 h 9.52381 M 120,39.04762 A 28.571429,28.571429 0 0 0 91.428575,67.61905 V 86.66667 H 148.57142 V 67.61905 A 28.571429,28.571429 0 0 0 120,39.04762 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:9.52380943" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="logout.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-73.728814"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 160,170 V 140 H 90 v -40 h 70 V 70 l 50,50 -50,50 M 140,20 a 20,20 0 0 1 20,20 V 60 H 140 V 40 H 50 v 160 h 90 v -20 h 20 v 20 a 20,20 0 0 1 -20,20 H 50 A 20,20 0 0 1 30,200 V 40 A 20,20 0 0 1 50,20 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:10" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="magnify.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-267.45763"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 94.28571,20 a 74.285714,74.285714 0 0 1 74.28571,74.28571 c 0,18.40001 -6.74284,35.31429 -17.82856,48.34287 l 3.08572,3.0857 h 9.02856 L 220,202.85714 202.85714,220 145.71428,162.85714 v -9.02856 l -3.0857,-3.08572 C 129.6,161.82858 112.68572,168.57142 94.28571,168.57142 A 74.285714,74.285714 0 0 1 20,94.28571 74.285714,74.285714 0 0 1 94.28571,20 m 0,22.85714 c -28.571424,0 -51.428568,22.85715 -51.428568,51.42857 0,28.57143 22.857144,51.42857 51.428568,51.42857 28.57143,0 51.42857,-22.85714 51.42857,-51.42857 0,-28.57142 -22.85714,-51.42857 -51.42857,-51.42857 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:11.4285717" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="memory.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-202.89153"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 175.55556,175.55556 H 64.444444 V 64.44444 H 175.55556 M 220,108.88889 V 86.66667 H 197.77778 V 64.44444 c 0,-12.33333 -10,-22.22222 -22.22222,-22.22222 H 153.33333 V 20 H 131.11111 V 42.22222 H 108.88889 V 20 H 86.666667 V 42.22222 H 64.444444 c -12.333333,0 -22.222222,9.88889 -22.222222,22.22222 V 86.66667 H 20 v 22.22222 h 22.222222 v 22.22222 H 20 v 22.22222 h 22.222222 v 22.22223 a 22.222222,22.222222 0 0 0 22.222222,22.22222 H 86.666667 V 220 h 22.222223 v -22.22222 h 22.22222 V 220 h 22.22222 v -22.22222 h 22.22223 a 22.222222,22.222222 0 0 0 22.22222,-22.22222 V 153.33333 H 220 v -22.22222 h -22.22222 v -22.22222 m -66.66667,22.22222 h -22.22222 v -22.22222 h 22.22222 M 153.33333,86.66667 H 86.666667 v 66.66666 h 66.666663 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:11.11111164" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="plus.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.17383042"
inkscape:cx="-857.38095"
inkscape:cy="28.437009"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4"
units="px" />
<path
d="M 220,134.286 H 134.28571 V 220 H 105.71429 V 134.286 H 20 v -28.572 h 85.71429 V 20 h 28.57142 v 85.714 H 220 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:14.2857151" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="power-sleep.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-73.728814"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M 207.23606,186.8916 C 170.18613,227.94693 106.87858,231.39603 65.600723,194.01231 24.767912,156.96237 21.541341,93.65482 58.591276,52.59949 75.614217,33.90763 98.979041,22.22522 124.23531,20 c -36.82742,41.16659 -33.378327,104.47414 8.12206,141.41282 18.13555,16.46663 42.05668,25.47878 66.75664,25.47878 2.78152,0 5.56305,0 8.12205,0 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:11.12610626" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="power.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-267.45763"
inkscape:cy="69.564407"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 173.64706,48.70588 -17.05882,17.05883 c 20.35293,12.35294 33.99999,34.58823 33.99999,60.11764 A 70.588235,70.588235 0 0 1 120,196.47059 70.588235,70.588235 0 0 1 49.41177,125.88235 c 0,-25.52941 13.647059,-47.7647 33.882353,-60.23529 L 66.352946,48.70588 C 41.882358,65.64706 25.882358,93.88235 25.882358,125.88235 A 94.117647,94.117647 0 0 0 120,220 94.117647,94.117647 0 0 0 214.11764,125.88235 c 0,-32 -16,-60.23529 -40.47058,-77.17647 M 131.7647,20 h -23.52941 v 117.64706 h 23.52941"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:11.76470661" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="restart.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-267.45763"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 120.41073,55.11156 c 21.68655,0 42.34041,8.26155 57.83081,23.75194 32.01348,32.01348 32.01348,84.68083 0,116.69431 -18.58848,19.62117 -44.4058,26.85002 -69.19044,23.75194 l 5.16347,-20.65386 c 17.55578,2.06538 36.14425,-4.13077 49.56926,-17.55578 23.75194,-23.75194 23.75194,-62.99428 0,-87.77891 C 152.42421,81.96158 135.90112,75.76542 120.41073,75.76542 V 123.2693 L 68.776078,71.63465 120.41073,20 V 55.11156 M 61.547227,195.55781 C 34.697209,168.70779 30.566437,127.40007 49.154911,95.38659 l 15.490395,15.49039 c -11.359623,22.71925 -7.228851,51.63465 12.392316,70.22313 5.163465,5.16346 11.359623,9.29423 18.588475,12.39231 l -6.196159,20.65386 C 79.103008,210.01551 69.808771,203.81935 61.547227,195.55781 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:10.32693005" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="ship-wheel.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="433.55792"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 29.090909,110.9091 18.636364,0.9091 C 50,91.181816 60.909091,73.181815 76.818182,61.454545 L 66.636364,45.818185 C 64.181818,41.454545 65.454545,35.909085 70,33.363635 c 4.545455,-2.45455 9.909091,-1 12.454545,3.36364 l 8.454546,16.54545 c 8.909091,-3.81818 18.727269,-6 29.090909,-6 10.36364,0 20.18182,2.18182 29.09091,6 l 8.45454,-16.54545 c 2.54546,-4.36364 7.9091,-5.81819 12.45455,-3.36364 4.54545,2.54545 5.81818,8.09091 3.36364,12.45455 l -10.18182,15.63636 C 179.09091,73.181815 190,91.181816 192.27273,111.81819 l 18.63636,-0.9091 a 9.0909091,9.0909091 0 0 1 9.09091,9.09092 9.0909091,9.0909091 0 0 1 -9.09091,9.0909 l -18.63636,-0.9091 C 190,148.81819 179.09091,166.81819 163.18182,178.54546 l 10.18182,15.63636 c 2.45454,4.36364 1.18181,9.90909 -3.36364,12.45455 -4.54545,2.45454 -9.90909,1 -12.45455,-3.36364 l -8.45454,-16.54545 c -8.90909,3.81818 -18.72727,6 -29.09091,6 -10.36364,0 -20.181818,-2.18182 -29.090909,-6 l -8.454546,16.54545 c -2.545454,4.36364 -7.90909,5.81818 -12.454545,3.36364 -4.545455,-2.54546 -5.818182,-8.09091 -3.363636,-12.45455 L 76.818182,178.54546 C 60.909091,166.81819 50,148.81819 47.727273,128.18182 l -18.636364,0.9091 A 9.0909091,9.0909091 0 0 1 20,120.00001 9.0909091,9.0909091 0 0 1 29.090909,110.9091 m 64.272727,3.18181 c 1.181819,-5.54545 4.181819,-10.45454 8.454544,-14.181818 L 86.727273,76.818185 C 75.545455,85.363635 67.909091,98.181812 65.909091,112.72728 l 27.454545,1.36363 M 120,92.727272 c 2.90909,0 5.63636,0.4545 8.18182,1.27273 l 12.54545,-24.454547 c -6.36363,-2.63637 -13.36363,-4.09091 -20.72727,-4.09091 -7.36364,0 -14.36364,1.45454 -20.727273,4.09091 l 12.545453,24.454547 c 2.54546,-0.81819 5.27273,-1.27273 8.18182,-1.27273 m 26.63636,21.363638 27.45455,-1.36363 c -2,-14.545468 -9.63636,-27.363645 -20.81818,-35.909095 l -15.09091,23.090907 c 4.27273,3.727278 7.27273,8.636368 8.45454,14.181818 m 0,11.81819 c -1.18181,5.54545 -4.18181,10.45454 -8.45454,14.18181 l 15.09091,23.09091 c 11.18182,-8.54545 18.81818,-21.36363 20.81818,-35.90909 L 146.63636,125.9091 M 120,147.27273 c -2.90909,0 -5.63636,-0.4545 -8.27273,-1.27272 l -12.454543,24.45454 c 6.363633,2.63636 13.363633,4.09091 20.727273,4.09091 7.36364,0 14.36364,-1.45455 20.72727,-4.09091 l -12.45454,-24.45454 c -2.63637,0.81818 -5.36364,1.27272 -8.27273,1.27272 M 93.363636,125.9091 65.909091,127.27273 c 2,14.54546 9.636364,27.36364 20.818182,35.90909 l 15.090907,-23.09091 c -4.272725,-3.72727 -7.272725,-8.63636 -8.454544,-14.18181 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:9.090909" />
</svg>

After

Width:  |  Height:  |  Size: 4 KiB

View file

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
version="1.1"
viewBox="0 0 240 240"
id="svg21"
sodipodi:docname="no.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata25">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview23"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="1.28"
inkscape:cx="-63.397777"
inkscape:cy="116.47151"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg21" />
<defs
id="defs7">
<linearGradient
id="b"
x1="46.167999"
x2="46.167999"
y1="57"
y2="27.346001"
gradientTransform="matrix(0.26458,0,0,0.26458,0,280.07)"
gradientUnits="userSpaceOnUse">
<stop
offset="0"
id="stop2" />
<stop
stop-opacity="0"
offset="1"
id="stop4" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#b"
id="linearGradient831"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2751632,0,0,0.2751632,-0.339,46.22855)"
x1="46.167999"
y1="57"
x2="46.167999"
y2="27.346001" />
</defs>
<g
id="g844"
transform="matrix(14.536827,0,0,14.536827,-3.0711033,-679.9855)">
<rect
x="1.58708"
y="48.152565"
width="13.75816"
height="13.75816"
rx="0.79352003"
ry="0.79352003"
id="rect9"
style="fill:#ee4f84;fill-opacity:1;stroke-width:1.00048006;paint-order:markers stroke fill" />
<path
d="m 15.34524,53.74983 a 12.38224,12.38224 0 0 1 -5.96128,8.15984 h 5.13552 c 0.4576,0 0.82576,-0.36816 0.82576,-0.82576 z"
id="path11"
inkscape:connector-curvature="0"
style="opacity:0.25;fill:url(#linearGradient831);stroke-width:1.00048006;paint-order:markers stroke fill" />
<g
id="g8"
transform="matrix(0.52732028,0,0,0.52732028,0.29116898,-491.75087)"
style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1">
<path
inkscape:connector-curvature="0"
id="path6"
d="M 3.9902344,2.9902344 A 1.0000925,1.0000925 0 0 0 3.2929688,4.7070312 L 6.5859375,8 3.2929688,11.292969 a 1.0000925,1.0000925 0 1 0 1.4140624,1.414062 L 8,9.4140625 11.292969,12.707031 a 1.0003045,1.0003045 0 1 0 1.414062,-1.414062 L 9.4140625,8 12.707031,4.7070312 a 1.0000925,1.0000925 0 0 0 -0.726562,-1.7148437 1.0000925,1.0000925 0 0 0 -0.6875,0.3007813 L 8,6.5859375 4.7070312,3.2929688 A 1.0000925,1.0000925 0 0 0 3.9902344,2.9902344 Z"
transform="matrix(1.6250122,0,0,1.6250122,2.4976161,1023.8989)"
style="fill:#ffffff" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View file

@ -0,0 +1,174 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="development.svg"
id="svg42"
viewBox="0 0 63.49875 63.49875"
version="1.1"
height="240"
width="240">
<metadata
id="metadata48">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs46" />
<sodipodi:namedview
inkscape:current-layer="svg42"
inkscape:window-maximized="0"
inkscape:window-y="28"
inkscape:window-x="0"
inkscape:cy="6.3685474"
inkscape:cx="-600.5425"
inkscape:zoom="0.46200234"
inkscape:pagecheckerboard="true"
showgrid="false"
id="namedview44"
inkscape:window-height="692"
inkscape:window-width="1366"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<g
transform="matrix(3.571519,0,0,3.571519,1.5128951,1.5111096)"
id="g893">
<path
d="m 8.5145,3.1397 -5.59,5.591 1.58,1.581 5.592,-5.59 z"
fill="none"
font-weight="400"
overflow="visible"
stroke="#f5ce17"
stroke-width="1.058"
style="font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal"
id="path2" />
<path
d="m 1.058,14.287 h 6.615 v 1.059 H 1.058 Z"
fill="#424048"
id="path4" />
<path
d="m 2.712,7.9815 v 4.41 c 0,0.609 -0.494,1.102 -1.102,1.102 H 1.058 V 14.552 H 7.673 V 13.4935 H 7.122 c -0.60901,5.53e-4 -1.103,-0.49299 -1.103,-1.102 v -4.41 z"
fill="#808080"
font-weight="400"
overflow="visible"
style="font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal"
id="path6" />
<path
d="m 1.058,13.493 h 6.615 v 1.059 H 1.058 Z"
fill="#68676b"
id="path8" />
<path
d="m 10.842,10.588 2.236,-2.236 2.237,2.236"
fill="none"
stroke="#424048"
stroke-width="1.0583"
id="path10" />
<path
d="m 15.035,9.471 a 0.84,0.84 0 0 1 0.839,0.839 v 1.677 l -0.839,0.84 H 14.197 V 10.31 c 0,-0.463 0.375,-0.839 0.838,-0.839 z"
fill="#7a8599"
id="path12" />
<path
d="m 8.654,3.088 -5.59,5.592 1.58,1.58 5.592,-5.59 z"
fill="none"
font-weight="400"
overflow="visible"
style="font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal"
id="path14" />
<circle
cx="4.4980001"
cy="8.7309999"
r="3.175"
fill="#f9f06b"
id="circle16" />
<path
d="M 13.672,8.632 9.2,4.159"
fill="#424048"
stroke="#424048"
stroke-width="1.058"
id="path18" />
<circle
cx="9.1280003"
cy="4.1009998"
r="2.5139999"
fill="#f9f06b"
id="circle20" />
<circle
cx="12.965"
cy="8.2019997"
r="1.587"
fill="#f9f06b"
id="circle22" />
<circle
cx="9.1280003"
cy="4.1009998"
r="1.455"
fill="#4a4850"
id="circle24" />
<circle
cx="4.4980001"
cy="8.7309999"
r="1.852"
fill="#4a4850"
id="circle26" />
<circle
cx="4.4980001"
cy="8.7309999"
r="1.058"
fill="#1a1723"
id="circle28" />
<circle
cx="9.1280003"
cy="4.1009998"
r="0.66100001"
fill="#1a1723"
id="circle30" />
<circle
cx="12.965"
cy="8.2019997"
r="1.058"
fill="#4a4850"
id="circle32" />
<circle
cx="12.965"
cy="8.2019997"
r="0.52899998"
fill="#1a1723"
id="circle34" />
<circle
cx="15.035"
cy="10.31"
r="0.28"
fill="#2e3436"
id="circle36" />
<path
d="m 11.121,9.471 a 0.839,0.839 0 0 0 -0.838,0.839 v 1.677 l 0.838,0.84 h 0.84 V 10.31 a 0.839,0.839 0 0 0 -0.84,-0.839 z"
fill="#7a8599"
id="path38" />
<circle
transform="scale(-1,1)"
cx="-11.121"
cy="10.31"
r="0.28"
fill="#2e3436"
id="circle40" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 63.49875 63.49875"
version="1.1"
id="svg29"
sodipodi:docname="file-manager.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata33">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview31"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.23046875"
inkscape:cx="-703.45904"
inkscape:cy="-446.22747"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg29" />
<defs
id="defs11">
<linearGradient
id="a">
<stop
offset="0"
id="stop2" />
<stop
offset="1"
stop-opacity="0"
id="stop4" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="b">
<rect
ry="0.52899998"
y="285.358"
x="0.52899998"
height="9.5249996"
width="15.875"
transform="rotate(45)"
id="rect7"
style="fill:#5677fc;stroke-width:0.25099999;stroke-opacity:0.19599998;paint-order:markers stroke fill" />
</clipPath>
<linearGradient
xlink:href="#a"
id="c"
x1="-197.10201"
y1="217.681"
x2="-196.914"
y2="219.36501"
gradientUnits="userSpaceOnUse" />
</defs>
<g
transform="matrix(3.3330578,0,0,3.3330578,3.5283746,-930.38776)"
id="g27">
<path
d="m 3.44,282.448 c -0.294,0 -0.395,0.269 -0.53,0.53 H 2.117 a 0.528,0.528 0 0 0 -0.53,0.528 v 5.292 c 0,0.293 0.237,0.53 0.53,0.53 h 12.7 c 0.293,0 0.529,-0.237 0.529,-0.53 v -5.292 a 0.528,0.528 0 0 0 -0.53,-0.529 H 7.674 c -0.155,-0.249 -0.236,-0.53 -0.53,-0.53 z"
id="path13"
inkscape:connector-curvature="0"
style="fill:#5677fc;paint-order:markers stroke fill" />
<path
d="m 3.44,282.448 c -0.294,0 -0.395,0.269 -0.53,0.53 H 2.117 a 0.528,0.528 0 0 0 -0.53,0.528 v 5.292 c 0,0.293 0.237,0.53 0.53,0.53 h 12.7 c 0.293,0 0.529,-0.237 0.529,-0.53 v -5.292 a 0.528,0.528 0 0 0 -0.53,-0.529 H 7.674 c -0.155,-0.249 -0.236,-0.53 -0.53,-0.53 z"
id="path15"
inkscape:connector-curvature="0"
style="opacity:0.18000004;paint-order:markers stroke fill" />
<rect
width="12.171"
height="5.027"
x="2.381"
y="283.771"
ry="0.26499999"
id="rect17"
style="fill:#ffffff;paint-order:markers stroke fill" />
<rect
width="15.875"
height="9.5249996"
x="0.52899998"
y="285.358"
ry="0.52899998"
id="rect19"
style="fill:#5677fc;paint-order:markers stroke fill" />
<path
d="m 8.467,284.3 h 7.408 c 0.293,0 0.53,0.236 0.53,0.53 v 3.968 c 0,0.293 -0.237,0.529 -0.53,0.529 H 6.152 c -0.294,0 -0.677,-0.276 -0.53,-0.53 l 2.316,-3.968 C 8.085,284.576 8.174,284.3 8.467,284.3 Z"
id="path21"
inkscape:connector-curvature="0"
style="fill:#5677fc;paint-order:markers stroke fill" />
<rect
width="3.175"
height="0.52899998"
x="3.704"
y="282.71201"
ry="0.26499999"
id="rect23"
style="opacity:0.25;paint-order:stroke markers fill" />
<rect
width="5.2919998"
height="4.7620001"
x="-199.58701"
y="217.868"
ry="0.132"
transform="rotate(-45)"
clip-path="url(#b)"
id="rect25"
style="opacity:0.1;fill:url(#c);paint-order:stroke markers fill" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View file

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
version="1.1"
viewBox="0 0 63.49875 63.49875"
id="svg22"
sodipodi:docname="games.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata28">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs26" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview24"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.65186406"
inkscape:cx="-162.01565"
inkscape:cy="-4.0990234"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg22" />
<g
transform="matrix(3.7037086,0,0,3.7037086,0.39192509,-1036.8817)"
id="g20">
<circle
cx="8.4665003"
cy="288.53"
r="7.1436"
style="fill:#f88e45;paint-order:stroke markers fill"
id="circle2" />
<path
d="m 4.07,287.872 -0.344,2.688 a 0.697,0.697 0 0 0 -0.022,0.17 c 0,0.394 0.328,0.713 0.733,0.713 A 0.74,0.74 0 0 0 5,291.185 v 10e-4 l 2.001,-2.243 z m 8.793,0 -2.931,1.071 2,2.244 10e-4,-0.001 a 0.74,0.74 0 0 0 0.563,0.258 c 0.405,0 0.733,-0.32 0.733,-0.714 a 0.693,0.693 0 0 0 -0.021,-0.17 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 6.218,285.09 a 2.249,2.249 0 1 0 1.24,4.123 h 2.017 a 2.249,2.249 0 1 0 1.24,-4.123 H 8.092 Z"
id="path6"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 10.848,285.887 a 0.397,0.397 0 0 0 -0.397,0.397 0.397,0.397 0 0 0 0.397,0.397 0.397,0.397 0 0 0 0.397,-0.397 0.397,0.397 0 0 0 -0.397,-0.397 z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#27ae60" />
<path
d="m 10.054,286.681 a 0.397,0.397 0 0 0 -0.397,0.397 0.397,0.397 0 0 0 0.397,0.397 0.397,0.397 0 0 0 0.397,-0.397 0.397,0.397 0 0 0 -0.397,-0.397 z"
id="path10"
inkscape:connector-curvature="0"
style="fill:#f36137" />
<path
d="m 11.642,286.681 a 0.397,0.397 0 0 0 -0.397,0.397 0.397,0.397 0 0 0 0.397,0.397 0.397,0.397 0 0 0 0.397,-0.397 0.397,0.397 0 0 0 -0.397,-0.397 z"
id="path12"
inkscape:connector-curvature="0"
style="fill:#f05242" />
<path
d="m 10.848,287.475 a 0.397,0.397 0 0 0 -0.397,0.397 0.397,0.397 0 0 0 0.397,0.397 0.397,0.397 0 0 0 0.397,-0.397 0.397,0.397 0 0 0 -0.397,-0.397 z"
id="path14"
inkscape:connector-curvature="0"
style="fill:#2980b9" />
<circle
cx="6.085"
cy="286.95001"
r="0.79400003"
id="circle16"
style="fill:#f88e45;paint-order:stroke markers fill" />
<path
d="m 7.144,288.533 a 0.53,0.53 0 0 0 -0.53,0.53 0.53,0.53 0 0 0 0.53,0.529 0.53,0.53 0 0 0 0.529,-0.53 0.53,0.53 0 0 0 -0.53,-0.529 z m 2.646,0 a 0.53,0.53 0 0 0 -0.53,0.53 0.53,0.53 0 0 0 0.53,0.529 0.53,0.53 0 0 0 0.529,-0.53 0.53,0.53 0 0 0 -0.53,-0.529 z"
id="path18"
inkscape:connector-curvature="0"
style="fill:#666666;stroke:#e1e1e1;stroke-width:0.52899998;stroke-linecap:square;paint-order:markers stroke fill" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
version="1.1"
viewBox="0 0 63.49875 63.49875"
id="svg38"
sodipodi:docname="graphics.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata44">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs42" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview40"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.4609375"
inkscape:cx="-372.69869"
inkscape:cy="-33.755786"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg38" />
<g
id="g869"
transform="matrix(3.7035768,0,0,3.7035768,0.39191984,-172.06708)">
<g
style="stroke-width:0.96313"
id="g26"
transform="matrix(1.0382,0,0,1.0384,-0.32156,46.24383)">
<path
inkscape:connector-curvature="0"
id="path2"
style="isolation:isolate;fill:#46a926"
d="m 13.323,3.603 c -0.048,0.049 2.02,4.86 2.02,4.86 l -2.02,4.858 c 0,0 -4.86,-2.568 -4.86,-4.859 0,-2.29 4.86,-4.859 4.86,-4.859 z" />
<path
inkscape:connector-curvature="0"
id="path4"
style="isolation:isolate;fill:#f22c42"
d="M 3.604,13.321 C 3.653,13.272 1.584,8.462 1.584,8.462 l 2.02,-4.859 c 0,0 4.86,2.569 4.86,4.86 0,2.29 -4.86,4.858 -4.86,4.858 z" />
<path
inkscape:connector-curvature="0"
id="path6"
style="isolation:isolate;fill:#ffda64"
d="M 13.323,3.603 C 13.275,3.652 8.463,1.584 8.463,1.584 l -4.86,2.019 4.86,4.86 z" />
<path
inkscape:connector-curvature="0"
id="path8"
style="isolation:isolate;fill:#2f5fdd"
d="m 3.604,13.321 4.86,2.013 c 0,0 4.81,-2.062 4.86,-2.013 L 8.464,8.462 Z" />
<path
inkscape:connector-curvature="0"
id="path10"
style="isolation:isolate;fill:#a6d74f"
d="M 8.464,1.587 C 8.463,3.345 9.136,5.103 10.483,6.449 L 13.328,3.605 A 6.88,6.88 0 0 0 8.467,1.587 Z" />
<path
inkscape:connector-curvature="0"
id="path12"
style="isolation:isolate;fill:#76c22b"
d="M 13.328,3.605 10.483,6.449 A 6.84,6.84 0 0 0 15.346,8.461 6.88,6.88 0 0 0 13.328,3.605 Z" />
<path
inkscape:connector-curvature="0"
id="path14"
style="isolation:isolate;fill:#1463a5"
d="m 10.476,10.481 a 6.85,6.85 0 0 0 -2.019,4.862 h 0.069 a 6.88,6.88 0 0 0 4.8,-2.013 z" />
<path
inkscape:connector-curvature="0"
id="path16"
style="isolation:isolate;fill:#2b898f"
d="m 15.346,8.469 a 6.84,6.84 0 0 0 -4.87,2.012 l 2.85,2.85 a 6.88,6.88 0 0 0 2.02,-4.862 z" />
<path
inkscape:connector-curvature="0"
id="path18"
style="isolation:isolate;fill:#9b33ae"
d="m 1.587,8.463 a 6.88,6.88 0 0 0 0,0.003 6.88,6.88 0 0 0 2.014,4.857 l 2.85,-2.848 A 6.839,6.839 0 0 0 1.587,8.464 Z" />
<path
inkscape:connector-curvature="0"
id="path20"
style="isolation:isolate;fill:#7839b7"
d="M 6.45,10.475 3.6,13.323 a 6.88,6.88 0 0 0 4.826,2.02 H 8.469 A 6.85,6.85 0 0 0 6.45,10.475 Z" />
<path
inkscape:connector-curvature="0"
id="path22"
style="isolation:isolate;fill:#fdc92b"
d="M 8.467,1.587 A 6.88,6.88 0 0 0 3.609,3.602 l 2.848,2.847 a 6.85,6.85 0 0 0 2.019,-4.861 6.88,6.88 0 0 0 -0.01,0 z" />
<path
inkscape:connector-curvature="0"
id="path24"
style="isolation:isolate;fill:#f34f17"
d="M 3.609,3.602 A 6.88,6.88 0 0 0 1.588,8.461 6.84,6.84 0 0 0 6.457,6.449 Z" />
</g>
<circle
id="circle28"
style="opacity:0.35;fill:#ffffff;paint-order:fill markers stroke"
r="5.2916002"
cy="55.032249"
cx="8.4665003" />
<g
transform="translate(0,46.56575)"
style="fill:#ffffff"
id="g36">
<path
inkscape:connector-curvature="0"
id="path30"
style="color:#000000;overflow:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;paint-order:fill markers stroke"
overflow="visible"
d="m 9.59,9.589 a 1.588,1.588 0 0 1 -2.246,0 1.588,1.588 0 0 1 0,-2.245 1.588,1.588 0 0 1 2.245,0 1.588,1.588 0 0 1 0,2.245 z" />
<path
inkscape:connector-curvature="0"
id="path32"
style="color:#000000;overflow:visible;isolation:auto;mix-blend-mode:normal;paint-order:fill markers stroke"
overflow="visible"
d="M 8.467,4.031 A 0.126,0.126 0 0 0 8.379,4.069 L 6.277,6.171 a 3.175,3.175 0 0 0 -0.056,0.05 3.175,3.175 0 0 0 0,4.49 3.175,3.175 0 0 0 4.49,0 3.175,3.175 0 0 0 10e-4,-4.49 3.175,3.175 0 0 0 -0.076,-0.07 C 10.632,6.146 10.631,6.141 10.626,6.136 L 8.559,4.069 A 0.126,0.126 0 0 0 8.467,4.031 Z M 8.49,6.879 a 1.588,1.588 0 0 1 1.1,0.465 1.588,1.588 0 0 1 0,2.245 1.588,1.588 0 0 1 -2.246,0 1.588,1.588 0 0 1 0,-2.245 1.588,1.588 0 0 1 1.146,-0.465 z" />
<path
inkscape:connector-curvature="0"
id="path34"
style="color:#000000;overflow:visible;isolation:auto;mix-blend-mode:normal;paint-order:fill markers stroke"
overflow="visible"
d="M 9.022,7.718 8.461,8.279 7.9,7.718 7.712,7.905 8.274,8.466 7.724,9.039 7.9,9.215 8.46,8.653 9.022,9.215 9.221,9.039 8.648,8.466 9.209,7.906 Z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

View file

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
version="1"
id="svg6"
sodipodi:docname="menu.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata12">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10">
<linearGradient
id="a"
x1="47"
x2="59.998001"
y1="41"
y2="53.978001"
gradientTransform="matrix(3.5715443,0,0,3.5715443,4.6992759,27.852694)"
gradientUnits="userSpaceOnUse">
<stop
offset="0"
id="stop2" />
<stop
stop-color="#242424"
stop-opacity="0"
offset="1"
id="stop4" />
</linearGradient>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview8"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.94400003"
inkscape:cx="241.76729"
inkscape:cy="32.075325"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="g842" />
<g
id="g842">
<circle
style="opacity:1;fill:#4f4f4f;fill-opacity:1"
id="path825"
cx="120"
cy="120"
r="100" />
<g
id="g1274">
<circle
id="circle4"
r="52.426239"
cy="120"
cx="120"
style="opacity:0.15;stroke-width:15.24018574" />
<g
id="g10-3"
style="fill:#ffffff"
transform="matrix(15.240185,0,0,15.240185,-9.0386464,-4277.2658)">
<path
id="path6"
d="m 8.467,285.62 a 2.91,2.91 0 0 0 -2.91,2.91 2.91,2.91 0 0 0 2.91,2.91 2.91,2.91 0 0 0 2.91,-2.91 2.91,2.91 0 0 0 -2.91,-2.91 z m 0,1.323 a 1.587,1.587 0 0 1 1.587,1.587 1.587,1.587 0 0 1 -1.587,1.588 1.587,1.587 0 0 1 -1.588,-1.588 1.587,1.587 0 0 1 1.588,-1.587 z"
inkscape:connector-curvature="0" />
<path
id="path8"
d="m 7.938,284.43 h 1.058 v 1.852 H 7.938 Z m 0,6.35 h 1.058 v 1.852 H 7.938 Z m 4.63,-2.778 v 1.058 h -1.852 v -1.058 z m -6.35,0 v 1.058 H 4.366 v -1.058 z m 5.522,3.056 -0.747,0.747 -1.31,-1.31 0.748,-0.747 z m -4.49,-4.49 -0.747,0.747 -1.31,-1.31 0.748,-0.747 z m -1.309,5.237 -0.748,-0.748 1.31,-1.31 0.748,0.749 z m 4.49,-4.49 -0.748,-0.748 1.31,-1.31 0.748,0.749 z"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="240"
width="240"
version="1.1"
id="svg29"
sodipodi:docname="menu2.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata35">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs33" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview31"
showgrid="false"
inkscape:zoom="0.30729167"
inkscape:cx="-699.16019"
inkscape:cy="-124.28709"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg29"
inkscape:pagecheckerboard="true" />
<linearGradient
id="a"
gradientUnits="userSpaceOnUse"
x1="394.27609"
x2="394.27609"
y1="544.80457"
y2="498.95551"
gradientTransform="matrix(1.0833334,0,0,1.0833334,-410.89293,-359.17403)">
<stop
offset="0"
stop-color="#3889e9"
id="stop2" />
<stop
offset="1"
stop-color="#5ea5fb"
id="stop4" />
</linearGradient>
<linearGradient
id="b"
gradientUnits="userSpaceOnUse"
x1="408.69653"
x2="408.2634"
y1="546.47272"
y2="501.12332"
gradientTransform="matrix(1.0833334,0,0,1.0833334,-410.89293,-359.17403)">
<stop
offset="0"
stop-color="#4d4d4d"
id="stop7" />
<stop
offset="1"
stop-color="#808080"
id="stop9" />
</linearGradient>
<linearGradient
id="c"
gradientUnits="userSpaceOnUse"
x1="408.94928"
x2="408.51636"
y1="546.20947"
y2="500.88101"
gradientTransform="matrix(1.0833334,0,0,1.0833334,-410.89293,-535.17403)">
<stop
offset="0"
stop-color="#ccc"
id="stop12" />
<stop
offset="1"
stop-color="#f2f2f2"
id="stop14" />
</linearGradient>
<circle
style="fill:url(#a);stroke-width:1.08333337"
id="circle17"
r="0"
cy="206.19594"
cx="18.013336" />
<g
id="g825"
transform="matrix(4.0133777,0,0,4.0133777,-7.3290556,-715.88144)">
<circle
cx="31.726158"
cy="208.2738"
r="24.916668"
id="circle19"
style="fill:url(#b);stroke-width:1.08333337" />
<path
d="m 19.525299,210.26402 4.33589,-4.33589 3.876254,-0.76606 c 4.933403,-6.71066 14.371241,-10.066 17.787858,-10.066 0,3.41662 -3.355333,12.85446 -10.065999,17.78786 l -0.766057,3.87625 -4.33589,4.33589 -1.087797,-5.40836 c -2.160286,0 -2.160286,0 -3.248094,-1.0878 -1.087796,-1.08781 -1.087796,-1.08781 -1.087796,-3.24809 z m 4.33589,4.33589 2.160275,2.16027 -4.075424,4.09076 h -2.175604 v -2.17561 z m -2.175604,-2.16029 1.89982,0.26046 -3.769003,3.75368 v -2.1756 z m 6.23571,4.59635 0.260455,1.89982 -1.838536,1.86918 H 24.16761 Z m 7.216257,-13.85032 a 2.2981734,2.2981734 0 0 0 -2.298172,2.29817 2.2981734,2.2981734 0 0 0 2.298172,2.29817 2.2981734,2.2981734 0 0 0 2.298173,-2.29817 2.2981734,2.2981734 0 0 0 -2.298173,-2.29817 z"
id="path23"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:1.08333337" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 63.49875 63.49875"
version="1.1"
id="svg12"
sodipodi:docname="multimedia.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata18">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs16" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview14"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.23046875"
inkscape:cx="1278.7133"
inkscape:cy="471.35975"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg12" />
<g
id="g10"
style="paint-order:stroke markers fill"
transform="matrix(3.8458918,0,0,3.8458918,-0.81186792,-0.81186792)">
<path
d="M 1.587,2.91 H 15.345 V 14.023 H 1.587 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#6cce86" />
<path
d="m 1.587,2.91 13.759,8.732 V 2.91 Z"
id="path4"
inkscape:connector-curvature="0"
style="opacity:0.07999998" />
<path
d="M 15.346,5.292 1.588,14.022 H 15.346 Z"
id="path6"
inkscape:connector-curvature="0"
style="opacity:0.15;fill:#ffffff" />
<path
d="M 10.319,8.467 6.085,11.112 V 5.821 Z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
version="1.1"
viewBox="0 0 63.49875 63.49875"
id="svg14"
sodipodi:docname="sandbox.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata20">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs18" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview16"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="3.6875"
inkscape:cx="36.909869"
inkscape:cy="25.400542"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg14" />
<g
transform="matrix(3.6647708,0,0,3.6647708,0.72159302,0.72159302)"
id="g12">
<g
id="g8"
style="fill-rule:evenodd;stroke-width:0.015243">
<path
d="M 8.4658,15.671 15.081,11.9324 15.03597,4.8992 8.46587,8.4994 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#3585f3" />
<path
d="M 8.4672,15.686 1.852,11.9474 1.897025,4.9142 l 6.5701,3.6002 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#1c69d0" />
<path
d="M 1.878,4.9333 8.4985,1.247 15.0603,4.9348 8.463,8.5494 Z"
id="path6"
inkscape:connector-curvature="0"
style="fill:#5997f3" />
</g>
<path
d="M 9.4829,5.2897 C 9.431373,5.334381 9.33801,5.339732 9.27446,5.301327 L 8.57051,4.875727 C 8.513027,4.840976 8.498837,4.781903 8.537883,4.737177 l 0.60212,-0.70525 -2.1207,1.4692 C 6.969247,5.535652 6.890143,5.539698 6.831653,5.509197 6.828213,5.507417 6.825243,5.505997 6.821803,5.503857 6.77048,5.472819 6.75266,5.421671 6.779829,5.378127 l 0.70895,-1.1658 -0.93877,0.2713 C 6.493582,4.500012 6.426439,4.490157 6.385229,4.456647 6.342315,4.423878 6.331602,4.376278 6.357371,4.336607 l 0.40426,-0.6147 -0.86581,-0.52345 C 5.83256,3.16026 5.822831,3.092487 5.874299,3.047867 5.926004,3.003038 6.019599,2.998079 6.082829,3.036311 l 0.95538,0.57763 c 0.052678,0.031851 0.069763,0.085154 0.040742,0.12891 l -0.28859,0.43888 0.92318,-0.26653 c 0.05581,-0.016515 0.12159,-0.007 0.16307,0.025497 0.042617,0.031702 0.054837,0.07859 0.031405,0.11841 l -0.55304,0.9093 2.427,-1.6807 c 0.052868,-0.03685 0.13647,-0.038571 0.19555,-0.00394 0.060188,0.042972 0.073132,0.09461 0.034442,0.13999 l -1.1542,1.3504 0.60392,0.36512 c 0.06332,0.038334 0.072669,0.10582 0.021202,0.15045 z M 10.18461,5.57636 9.821,5.35653 C 9.75781,5.318327 9.66398,5.323488 9.61251,5.368157 c -0.051527,0.044681 -0.041739,0.1124 0.021451,0.1506 l 0.36361,0.21983 c 0.063059,0.038132 0.15695,0.033102 0.20849,-0.011627 0.0515,-0.044657 0.04162,-0.11247 -0.02145,-0.1506 z m 0.78297,0.47337 -0.38695,-0.23394 c -0.06306,-0.038132 -0.15702,-0.033042 -0.20848,0.011627 -0.05154,0.044681 -0.04162,0.11247 0.02145,0.1506 l 0.38695,0.23394 c 0.06302,0.038096 0.15695,0.033102 0.20848,-0.011627 0.0515,-0.044657 0.04157,-0.1125 -0.02145,-0.1506 z"
id="path10"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:0.044893" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 63.49875 63.49875"
version="1.1"
id="svg16"
sodipodi:docname="social.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata22">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs20" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview18"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="3.6875"
inkscape:cx="-19.661017"
inkscape:cy="32"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg16" />
<g
transform="matrix(3.8458913,0,0,3.8458913,-0.81186737,-1077.9194)"
id="g14">
<rect
width="11.642"
height="7.408"
x="1.587"
y="285.888"
ry="0.26499999"
id="rect2"
style="fill:#5ca4ed;paint-order:stroke markers fill" />
<path
d="m 6.085,281.919 a 0.264,0.264 0 0 0 -0.264,0.264 v 5.292 c 0,0.147 0.118,0.265 0.264,0.265 h 4.077 l 1.48,1.315 c 0.19,0.04 0.264,-0.07 0.264,-0.265 v -1.05 h 3.175 a 0.264,0.264 0 0 0 0.265,-0.265 v -5.292 a 0.264,0.264 0 0 0 -0.265,-0.264 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#a0ecff;paint-order:markers stroke fill" />
<path
d="m 4.233,290.642 h 2.91 c 0.147,0 0.304,0.123 0.265,0.265 L 6.9,292.754 c -0.04,0.141 -0.176,0.172 -0.285,0.27 l -2.382,2.116 c -0.19,0.04 -0.264,-0.07 -0.264,-0.265 v -3.968 c 0,-0.147 0.118,-0.265 0.264,-0.265 z"
id="path6"
inkscape:connector-curvature="0"
style="fill:#5ca4ed;paint-order:markers stroke fill" />
<circle
cx="4.763"
cy="289.59201"
r="0.66100001"
id="circle8"
style="opacity:0.35;fill:#ffffff;paint-order:markers stroke fill" />
<circle
r="0.66100001"
cy="289.59201"
cx="7.408"
id="circle10"
style="opacity:0.35;fill:#ffffff;paint-order:markers stroke fill" />
<circle
cx="10.054"
cy="289.59201"
r="0.66100001"
id="circle12"
style="opacity:0.35;fill:#ffffff;paint-order:markers stroke fill" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
version="1.1"
viewBox="0 0 63.49875 63.49875"
id="svg17"
sodipodi:docname="terminal.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata21">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview19"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="3.6875"
inkscape:cx="-2.0305085"
inkscape:cy="32"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg17" />
<defs
id="defs7">
<linearGradient
id="a"
x1="47"
x2="59.998001"
y1="41"
y2="53.978001"
gradientTransform="matrix(0.26458,0,0,0.26458,-0.004,46.83575)"
gradientUnits="userSpaceOnUse">
<stop
offset="0"
id="stop2" />
<stop
stop-color="#242424"
stop-opacity="0"
offset="1"
id="stop4" />
</linearGradient>
</defs>
<g
id="g835"
transform="matrix(3.571519,0,0,3.571519,1.5128953,-164.79935)">
<rect
style="fill:#72787e"
id="rect9"
ry="1.323"
rx="1.372"
height="12.171"
width="14.816"
y="48.946751"
x="1.058" />
<rect
style="fill:#ffffff;paint-order:stroke markers fill"
id="rect11"
ry="0.26499999"
height="0.52899998"
width="4.2329998"
y="55.555748"
x="5.2919998" />
<path
style="fill:#ffffff;paint-order:stroke markers fill"
inkscape:connector-curvature="0"
id="path13"
d="m 3.973,50.75575 a 0.264,0.264 0 0 0 -0.262,0.13 0.264,0.264 0 0 0 0.097,0.362 l 2.842,1.64 -2.842,1.641 a 0.264,0.264 0 0 0 -0.097,0.362 c 0.074,0.127 0.235,0.17 0.362,0.097 l 3.207,-1.852 a 0.26,0.26 0 0 0 0.127,-0.225 c 0.002,-0.008 0.001,-0.015 0.002,-0.022 0,-0.008 0,-0.015 -0.002,-0.023 a 0.26,0.26 0 0 0 -0.127,-0.224 l -3.207,-1.853 a 0.266,0.266 0 0 0 -0.1,-0.033 z" />
<path
style="opacity:0.15;fill:url(#a)"
inkscape:connector-curvature="0"
id="path15"
d="m 15.872,55.78075 -5.337,5.337 h 4.767 c 0.316,0 0.57,-0.238 0.57,-0.535 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
viewBox="0 0 63.49875 63.49875"
version="1.1"
id="svg10"
sodipodi:docname="text-editor.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata16">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs14" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview12"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="3.6875"
inkscape:cx="5.2977369"
inkscape:cy="32"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg10" />
<g
id="g827"
transform="matrix(3.8458912,0,0,3.8458912,-0.81378213,-179.89867)">
<path
style="fill:#aa55b9;paint-order:fill markers stroke"
inkscape:connector-curvature="0"
id="path2"
d="m 2.381,48.15375 h 12.171 c 0.147,0 0.265,0.118 0.265,0.264 v 13.23 a 0.264,0.264 0 0 1 -0.265,0.264 H 2.382 a 0.264,0.264 0 0 1 -0.265,-0.265 v -13.229 c 0,-0.146 0.118,-0.264 0.264,-0.264 z" />
<path
style="fill:#ffffff;fill-opacity:0.3;fill-rule:evenodd"
inkscape:connector-curvature="0"
id="path4"
d="m 3.704,60.85375 v -1.059 H 2.91 v -0.264 h 0.794 v -1.059 H 2.91 v -0.264 h 0.794 v -1.059 H 2.91 v -0.264 h 0.794 v -1.059 H 2.91 v -0.264 h 0.794 v -1.058 H 2.91 v -0.265 h 0.794 v -1.058 H 2.91 v -0.265 h 0.794 v -1.058 H 2.91 v -0.265 h 0.794 v -1.057 H 2.91 v -0.265 h 0.794 v -1.059 H 2.91 v -0.266 h 0.794 v -0.793 h 0.265 v 0.793 h 9.79 v 0.265 h -9.79 v 1.058 h 9.79 v 0.265 h -9.79 v 1.058 h 9.79 v 0.265 h -9.79 v 1.059 h 9.79 v 0.265 h -9.79 v 1.058 h 9.79 v 0.265 h -9.79 v 1.058 h 9.79 v 0.264 h -9.79 v 1.059 h 9.79 v 0.264 h -9.79 v 1.059 h 9.79 v 0.264 h -9.79 v 1.059 h 9.79 v 0.264 h -9.79 v 1.059 h 9.79 v 0.264 h -9.79 v 0.794 H 3.704 v -0.794 H 2.91 v -0.264 z" />
<path
style="fill:#aa55b9;fill-rule:evenodd;stroke:#aa55b9;stroke-width:0.52899998;paint-order:stroke markers fill"
inkscape:connector-curvature="0"
id="path6"
d="m 12.17,57.09475 c 0,0.388 -0.08,0.697 -0.24,0.928 -0.16,0.231 -0.407,0.38 -0.74,0.45 v -0.42 a 0.463,0.463 0 0 0 0.246,-0.334 h -0.245 v -1.146 h 0.98 z m -1.309,0 c 0,0.388 -0.08,0.697 -0.24,0.928 -0.161,0.231 -0.408,0.38 -0.74,0.45 v -0.42 a 0.537,0.537 0 0 0 0.177,-0.137 0.422,0.422 0 0 0 0.068,-0.197 H 9.881 v -1.146 h 0.98 z m -6.099,-5.51 v -1.049 h 1.984 v 2.308 H 6.25 a 0.933,0.933 0 0 0 0.496,0.672 v 0.844 c -0.672,-0.138 -1.171,-0.44 -1.496,-0.905 -0.325,-0.465 -0.488,-1.088 -0.488,-1.868 z m 2.651,0 v -1.049 h 1.984 v 2.308 H 8.9 a 0.848,0.848 0 0 0 0.137,0.396 c 0.068,0.092 0.188,0.184 0.359,0.276 v 0.844 c -0.673,-0.138 -1.172,-0.44 -1.497,-0.905 -0.325,-0.465 -0.487,-1.088 -0.487,-1.868 z" />
<path
style="fill:#ffffff;fill-rule:evenodd;paint-order:stroke markers fill"
inkscape:connector-curvature="0"
id="path8"
d="m 12.17,57.09475 c 0,0.388 -0.08,0.697 -0.24,0.928 -0.16,0.231 -0.407,0.38 -0.74,0.45 v -0.42 a 0.463,0.463 0 0 0 0.246,-0.334 h -0.245 v -1.146 h 0.98 z m -1.309,0 c 0,0.388 -0.08,0.697 -0.24,0.928 -0.161,0.231 -0.408,0.38 -0.74,0.45 v -0.42 a 0.537,0.537 0 0 0 0.177,-0.137 0.422,0.422 0 0 0 0.068,-0.197 H 9.881 v -1.146 h 0.98 z m -6.099,-5.51 v -1.049 h 1.984 v 2.308 H 6.25 a 0.933,0.933 0 0 0 0.496,0.672 v 0.844 c -0.672,-0.138 -1.171,-0.44 -1.496,-0.905 -0.325,-0.465 -0.488,-1.088 -0.488,-1.868 z m 2.651,0 v -1.049 h 1.984 v 2.308 H 8.9 a 0.848,0.848 0 0 0 0.137,0.396 c 0.068,0.092 0.188,0.184 0.359,0.276 v 0.844 c -0.673,-0.138 -1.172,-0.44 -1.497,-0.905 -0.325,-0.465 -0.487,-1.088 -0.487,-1.868 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View file

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
version="1.1"
viewBox="0 0 63.49875 63.49875"
id="svg24"
sodipodi:docname="web-browser.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata30">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs28" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview26"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="1.84375"
inkscape:cx="13.006794"
inkscape:cy="18.725658"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg24" />
<circle
cx="296.64999"
cy="52.322449"
r="0"
id="circle2"
style="fill:#d5d3cf;stroke-width:0.87151998;enable-background:new" />
<g
id="g20"
style="stroke-width:0.18455"
transform="matrix(3.5856974,0,0,3.5856974,1.3929164,2.2273188)">
<path
d="M 15.093,5.809 C 14.78222,5.06121 14.15184,4.2539 13.6581,3.9986 a 7.431,7.431 0 0 1 0.72435,2.1711 l 0.0013,0.012027 c -0.80869,-2.0162 -2.1801,-2.8291 -3.3001,-4.5993 -0.05666,-0.089506 -0.11332,-0.17919 -0.16849,-0.27387 -0.03156,-0.054034 -0.05684,-0.1028 -0.0788,-0.14764 a 1.3016,1.3016 0 0 1 -0.10667,-0.28328 0.018455,0.018455 0 0 0 -0.01624,-0.018476 0.025468,0.025468 0 0 0 -0.01347,0 c -9.59e-4,0 -0.0024,0.001743 -0.0035,0.001743 -0.0011,3.6604e-4 -0.0035,0.001743 -0.0051,0.002615 l 0.0028,-0.005229 c -1.7966,1.0519 -2.4062,2.9993 -2.4623,3.9734 A 3.5779,3.5779 0 0 0 6.26348,5.59037 2.1384,2.1384 0 0 0 6.07893,5.45048 3.316,3.316 0 0 1 6.058814,3.70218 5.2975,5.2975 0 0 0 4.337114,5.03278 H 4.333794 C 4.050244,4.67431 4.070174,3.48948 4.086414,3.24208 A 1.2785,1.2785 0 0 0 3.847604,3.36886 5.2089,5.2089 0 0 0 3.148534,3.96773 6.246,6.246 0 0 0 2.479914,4.76996 V 4.7708315 4.76996 a 6.0408,6.0408 0 0 0 -0.95964,2.1671 l -0.0096,0.047237 c -0.013472,0.062924 -0.062008,0.37814 -0.070313,0.4466 0,0.00523 -0.00111,0.010371 -0.00166,0.015688 a 6.8167,6.8167 0 0 0 -0.11608,0.98604 V 8.46949 a 7.1529,7.1529 0 0 0 14.201,1.2095 c 0.01199,-0.092277 0.02178,-0.18363 0.03248,-0.27682 a 7.3556,7.3556 0 0 0 -0.46395,-3.5929 z m -8.2438,5.5988 c 0.033403,0.01604 0.064777,0.03338 0.099101,0.04872 l 0.00499,0.0035 Q 6.901243,11.43508 6.849201,11.40815 Z M 8.4877,7.0938 M 14.3844,6.18323 V 6.17626 l 0.0013,0.00784 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#ff3944" />
<path
d="m 11.618,6.6457 c 0.0155,0.010894 0.02989,0.021788 0.04447,0.032682 a 3.894,3.894 0 0 0 -0.66438,-0.86645 c -2.2231,-2.2234 -0.58262,-4.821 -0.30598,-4.953 l 0.0028,-0.004358 c -1.7966,1.0519 -2.4062,2.9993 -2.4622,3.9734 0.083416,-0.0061 0.1661,-0.012724 0.25136,-0.012724 a 3.6098,3.6098 0 0 1 3.134,1.8302 z"
id="path6"
inkscape:connector-curvature="0"
style="fill:#ffcd34" />
<path
d="M 8.4881,7.0901 C 8.476289,7.268 7.84771,7.88163 7.62791,7.88163 c -2.0339,0 -2.3641,1.2304 -2.3641,1.2304 0.090063,1.0361 0.81202,1.8894 1.6847,2.3408 0.039863,0.02065 0.080279,0.03931 0.1207,0.05761 q 0.10501,0.04654 0.21002,0.08602 a 3.1807,3.1807 0 0 0 0.9307,0.17957 c 3.565,0.1672 4.2555,-4.2631 1.6829,-5.5486 a 2.4693,2.4693 0 0 1 1.7246,0.41874 3.6098,3.6098 0 0 0 -3.134,-1.8302 c -0.084893,0 -0.16794,0.00697 -0.25136,0.012724 a 3.5779,3.5779 0 0 0 -1.9684,0.75868 c 0.10907,0.092268 0.23217,0.21555 0.49145,0.47115 0.48536,0.47816 1.7301,0.97349 1.7329,1.0316 z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#9a46eb" />
<path
d="m 5.9303,5.3471 c 0.057949,0.036865 0.10575,0.069025 0.14764,0.097994 a 3.316,3.316 0 0 1 -0.020116,-1.7483 5.2975,5.2975 0 0 0 -1.7217,1.3306 c 0.03488,-8.715e-4 1.0724,-0.019522 1.5941,0.31964 z"
id="path10"
inkscape:connector-curvature="0"
style="fill:#ff9633" />
<path
d="m 1.3883,8.6327 c 0.55199,3.2617 3.5081,5.7521 6.8641,5.8471 3.1059,0.08784 5.0902,-1.7152 5.91,-3.4742 A 6.4777,6.4777 0 0 0 14.38497,6.1781 V 6.17113 c 0,-0.00523 -0.0011,-0.00872 0,-0.00697 l 0.0013,0.012027 c 0.25375,1.6567 -0.5889,3.2617 -1.9062,4.3471 l -0.0041,0.0092 c -2.5667,2.0904 -5.023,1.2612 -5.5202,0.92277 Q 6.903739,11.430365 6.8517,11.403435 c -1.4965,-0.71531 -2.1148,-2.0788 -1.9823,-3.2481 a 1.8368,1.8368 0 0 1 -1.6943,-1.0658 2.6977,2.6977 0 0 1 2.6296,-0.10557 3.5618,3.5618 0 0 0 2.6855,0.10557 C 8.4874285,7.031404 7.2426,6.535895 6.7573,6.057935 6.49801,5.802335 6.37492,5.679245 6.26585,5.586785 A 2.1384,2.1384 0 0 0 6.0813,5.446895 C 6.038853,5.41796 5.991054,5.386585 5.93366,5.348901 5.41194,5.009701 4.37446,5.028341 4.34006,5.029271 H 4.33674 C 4.05329,4.670201 4.07323,3.485371 4.08946,3.237971 a 1.2785,1.2785 0 0 0 -0.23881,0.12678 5.2089,5.2089 0 0 0 -0.69907,0.59886 6.246,6.246 0 0 0 -0.67139,0.80039 v 8.715e-4 -8.715e-4 a 6.0408,6.0408 0 0 0 -0.95964,2.1671 c -0.00351,0.014554 -0.25763,1.1256 -0.13232,1.7017 z"
id="path12"
inkscape:connector-curvature="0"
style="fill:#ff6333" />
<path
d="m 10.998,5.8177 a 3.894,3.894 0 0 1 0.66438,0.86738 c 0.0393,0.029719 0.07603,0.059264 0.10722,0.087841 1.6216,1.4948 0.77197,3.6079 0.70867,3.7584 1.3173,-1.0853 2.1592,-2.6904 1.9062,-4.3471 -0.80906,-2.0171 -2.1805,-2.83 -3.3005,-4.6003 -0.05666,-0.089506 -0.11332,-0.17919 -0.16849,-0.27387 -0.03156,-0.054034 -0.05684,-0.1028 -0.0788,-0.14764 a 1.3016,1.3016 0 0 1 -0.10667,-0.28328 0.018455,0.018455 0 0 0 -0.01624,-0.018476 0.025468,0.025468 0 0 0 -0.01347,0 c -9.59e-4,0 -0.0024,0.001743 -0.0035,0.001743 -0.0011,3.6604e-4 -0.0035,0.001743 -0.0051,0.002615 -0.27664,0.13121 -1.9171,2.7287 0.30635,4.9522 z"
id="path14"
inkscape:connector-curvature="0"
style="fill:#ff8619" />
<path
d="M 11.768,6.7677 C 11.73681,6.739114 11.70009,6.709569 11.66078,6.67985 11.6462,6.668956 11.6318,6.658062 11.61631,6.647168 a 2.4693,2.4693 0 0 0 -1.7246,-0.41874 c 2.5727,1.2863 1.8824,5.7158 -1.6829,5.5486 a 3.1807,3.1807 0 0 1 -0.9307,-0.17955 Q 7.1731,11.558172 7.06809,11.511458 c -0.040416,-0.01848 -0.080832,-0.03687 -0.1207,-0.05761 l 0.00499,0.0035 c 0.49718,0.33938 2.9528,1.1685 5.5202,-0.92277 l 0.0041,-0.0092 c 0.06404,-0.14948 0.91371,-2.2631 -0.70867,-3.7574 z"
id="path16"
inkscape:connector-curvature="0"
style="fill:#ffa316" />
<path
d="m 5.2638,9.1121 c 0,0 0.33016,-1.2304 2.3641,-1.2304 0.2198,0 0.84893,-0.61362 0.86019,-0.79153 a 3.5618,3.5618 0 0 1 -2.6855,-0.10556 2.6977,2.6977 0 0 0 -2.6296,0.10556 1.8368,1.8368 0 0 0 1.6943,1.0658 c -0.13251,1.1695 0.48574,2.5329 1.9823,3.2481 0.033403,0.01604 0.064777,0.03338 0.099101,0.04872 -0.87344,-0.45122 -1.5947,-1.3046 -1.6847,-2.3407 z"
id="path18"
inkscape:connector-curvature="0"
style="fill:#ffbb27" />
</g>
<circle
cx="-15.774"
cy="60.026749"
r="0"
id="circle22"
style="fill:#d5d3cf;stroke-width:0.87151998;enable-background:new" />
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 240 240"
id="svg4"
sodipodi:docname="thermometer.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.98333333"
inkscape:cx="-142.32954"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 170,170 a 50,50 0 0 1 -50,50 50,50 0 0 1 -50,-50 c 0,-16.4 7.9,-30.9 20,-40 V 50 a 30,30 0 0 1 30,-30 30,30 0 0 1 30,30 v 80 c 12.1,9.1 20,23.6 20,40 M 110,80 v 61.7 C 98.3,145.8 90,156.9 90,170 a 30,30 0 0 0 30,30 30,30 0 0 0 30,-30 c 0,-13.1 -8.3,-24.2 -20,-28.3 V 80 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:10" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240mm"
height="240mm"
viewBox="0 0 240 240"
version="1.1"
id="svg8"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="close_focus.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="79.70386"
inkscape:cy="560"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:window-width="1321"
inkscape:window-height="740"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-57)">
<circle
style="opacity:1;fill:#ee4f84;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path815"
cx="120"
cy="177"
r="100" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240mm"
height="240mm"
viewBox="0 0 240 240"
version="1.1"
id="svg8"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="close_focus (copy).svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.49497475"
inkscape:cx="527.165"
inkscape:cy="457.76221"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:window-width="1321"
inkscape:window-height="740"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-57)">
<circle
style="opacity:1;fill:#f48fb1;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path815"
cx="120"
cy="177"
r="100" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240mm"
height="240mm"
viewBox="0 0 240 240"
version="1.1"
id="svg8"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="close_normal.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="-464.58185"
inkscape:cy="560"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:window-width="1321"
inkscape:window-height="740"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-57)">
<circle
style="opacity:1;fill:#414458;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path815"
cx="120"
cy="177"
r="100" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240mm"
height="240mm"
viewBox="0 0 240 240"
version="1.1"
id="svg8"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="close_focus (copy).svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.49497475"
inkscape:cx="527.165"
inkscape:cy="457.76221"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:window-width="1321"
inkscape:window-height="740"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-57)">
<circle
style="opacity:1;fill:#f48fb1;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path815"
cx="120"
cy="177"
r="100" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

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