-
1.gitignore
-
4.ldoc.lua
-
31.luarc.json
-
49Rakefile
-
2desktop.conf
-
4extra/picom.conf
-
56libs/awmtk2.lua
-
13modules/binds.lua
-
83modules/desktop.lua
-
1themes/reno98/theme.lua
-
3themes/unity/WARNING.txt
-
32themes/unity/config/root_menu_test.json
-
1themes/unity/config/wibar_top.json
-
BINthemes/unity/icons/reno.png
-
BINthemes/unity/icons/volume-high-symbolic.png
-
BINthemes/unity/icons/volume-low-symbolic.png
-
BINthemes/unity/icons/volume-medium-symbolic.png
-
BINthemes/unity/icons/volume-muted-symbolic.png
-
BINthemes/unity/icons/volume.png
-
29themes/unity/theme.lua
-
30widgets/battery.lua
-
2widgets/clientbuttons.lua
-
19widgets/clientvolume.lua
-
106widgets/volume.lua
@ -0,0 +1,4 @@ |
|||||
|
file = {"libs","modules","widgets"} |
||||
|
format = "markdown" |
||||
|
title = "Reno Desktop documentation" |
||||
|
description = "Reno Desktop is an AwesomeWM config that harnesses the power of AwesomeWM to bring the essential functionality of a desktop environment." |
@ -0,0 +1,31 @@ |
|||||
|
{ |
||||
|
"diagnostics": { |
||||
|
"enable": true, |
||||
|
"globals": [ |
||||
|
"awesome", |
||||
|
"button", |
||||
|
"dbus", |
||||
|
"client", |
||||
|
"mouse", |
||||
|
"screen", |
||||
|
"root" |
||||
|
] |
||||
|
}, |
||||
|
"runtime": { |
||||
|
"version": "Lua 5.3", |
||||
|
"path": [ |
||||
|
"/usr/share/awesome/lib/?/?.lua" |
||||
|
], |
||||
|
"pathStrict": true |
||||
|
}, |
||||
|
"workspace": { |
||||
|
"library": [ |
||||
|
"runtime/lua", |
||||
|
"/usr/share/awesome/lib" |
||||
|
], |
||||
|
"checkThirdParty": false, |
||||
|
"maxPreload": 2000, |
||||
|
"preloadFileSize": 1000 |
||||
|
}, |
||||
|
"telemetry.enable": true |
||||
|
} |
@ -0,0 +1,49 @@ |
|||||
|
task default: [:install] |
||||
|
ConfigPath = (ENV["XDG_DATA_HOME"] or ENV["HOME"]+'/.config') |
||||
|
|
||||
|
desc "Copy files to .config" |
||||
|
file "copy-config" => ["rc.lua"] do |
||||
|
sh "mkdir -p #{ConfigPath}/awesome" |
||||
|
["libs","modules","themes","widgets","rc.lua","desktop.conf"].each { |x| |
||||
|
cp_r "./#{x}" "#{ConfigPath}/awesome" |
||||
|
} |
||||
|
end |
||||
|
|
||||
|
desc "Compile and install luapam" |
||||
|
file "build-luapam" => "#{ConfigPath}/libs/pam.so" do |
||||
|
sh "sh ./extra/install_luapam.sh" |
||||
|
end |
||||
|
|
||||
|
desc "Install config" |
||||
|
task install: ["copy-config","build-luapam"] |
||||
|
|
||||
|
desc "Build documentation" |
||||
|
task :doc do |
||||
|
sh "ldoc ./.ldoc.lua" |
||||
|
end |
||||
|
|
||||
|
desc "Install extras" |
||||
|
task "install-extra" do |
||||
|
if Process.euid != 0 |
||||
|
raise Exception, "You need to be root to install extras" |
||||
|
end |
||||
|
cp "./extra/udev/backlight.rules" "/etc/udev/rules.d" |
||||
|
mkdir "#{ConfigPath}/autostart" |
||||
|
begin |
||||
|
cp "/usr/share/applications/picom.desktop" "#{ConfigPath}/autostart/" |
||||
|
rescue |
||||
|
puts "picom not installed - ignoring" |
||||
|
else |
||||
|
cp "./extra/picom.conf" "#{ConfigPath}" |
||||
|
end |
||||
|
puts "Done! Reload awesome to complete installation" |
||||
|
end |
||||
|
|
||||
|
desc "Uninstall from .config" |
||||
|
task :clean do |
||||
|
rm_rf "#{ConfigPath}/awesome" |
||||
|
end |
||||
|
|
||||
|
desc "Wipe configuration and reinstall from scratch" |
||||
|
task reinstall: [:clean,:install] |
||||
|
|
@ -1,2 +1,3 @@ |
|||||
A compositor (like compton) is ***required*** for this theme to work as intended. |
A compositor (like compton) is ***required*** for this theme to work as intended. |
||||
This is in part due to the fact that it makes the top bar look less bland, and in part due to the fact that your titlebar corners will look weird otherwise. |
|
||||
|
This is in part due to the fact that it makes the top bar look less bland, and in part due to the fact that your titlebar corners will look weird otherwise (the corners won't be properly cut). |
||||
|
You may, of course, dismiss using a compositor, but don't tell me about not exactly round corners being a "bug" in this theme afterwards - it's the best you can get with Awesome. |
@ -0,0 +1,32 @@ |
|||||
|
{ |
||||
|
"list": [ |
||||
|
{ |
||||
|
"list": [ |
||||
|
{"widget": "widgets.base.popuptitle", |
||||
|
"options":{ |
||||
|
"title":"Reno Unity" |
||||
|
} |
||||
|
}, |
||||
|
{"widget": "widgets.rootcontrols"}, |
||||
|
{"widget": "widgets.xdgmenu", |
||||
|
"options": { |
||||
|
"exclude_category": [ |
||||
|
"Other" |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
], |
||||
|
"vertical": true |
||||
|
}, |
||||
|
{ |
||||
|
"list":[ |
||||
|
{"widget": "widgets.base.tagswitcher", |
||||
|
"screen":true |
||||
|
}, |
||||
|
{"widget": "widgets.rootbuttons"} |
||||
|
], |
||||
|
"vertical":true |
||||
|
} |
||||
|
], |
||||
|
"vertical":false |
||||
|
} |
After Width: 48 | Height: 48 | Size: 1.3 KiB |
After Width: 48 | Height: 48 | Size: 1.3 KiB |
After Width: 48 | Height: 48 | Size: 819 B |
After Width: 48 | Height: 48 | Size: 1.0 KiB |
After Width: 48 | Height: 48 | Size: 959 B |
After Width: 48 | Height: 48 | Size: 1.1 KiB |
@ -0,0 +1,106 @@ |
|||||
|
-- This file is part of Reno desktop. |
||||
|
-- |
||||
|
-- Reno desktop is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. |
||||
|
-- |
||||
|
-- Reno desktop is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
||||
|
-- |
||||
|
-- You should have received a copy of the GNU General Public License along with Reno desktop. If not, see <https://www.gnu.org/licenses/>. |
||||
|
-- Pulseaudio per-client volume setting |
||||
|
local awful = require("awful") |
||||
|
local gears = require("gears") |
||||
|
local wibox = require("wibox") |
||||
|
local awmtk2 = require("awmtk2") |
||||
|
local fastyaml = require("parsers").fast_split_yaml |
||||
|
local beautiful = require("beautiful") |
||||
|
local ask = require("asckey") |
||||
|
local pactl_data = {} |
||||
|
|
||||
|
local test_pactl = os.execute("pactl --version") |
||||
|
local pactl_found = test_pactl |
||||
|
if _VERSION:match("5.1") then |
||||
|
pactl_found = (test_pactl == 0) |
||||
|
end |
||||
|
local test_amixer = os.execute("amixer --version") |
||||
|
local amixer_found = test_amixer |
||||
|
if _VERSION:match("5.1") then |
||||
|
amixer_found = (test_amixer == 0) |
||||
|
end |
||||
|
if (not (amixer_found or pactl_found)) then |
||||
|
return |
||||
|
end |
||||
|
|
||||
|
local try_launch = [[which pavucontrol && pavucontrol || which pulsemixer && ]]..global.terminal..[[ -e pulsemixer || which alsamixer && ]]..global.terminal..[[ -e alsamixer ]] |
||||
|
|
||||
|
local function get_icon(percent) |
||||
|
if percent >= 66 then |
||||
|
return beautiful["volume-high-symbolic"] |
||||
|
elseif percent >= 33 then |
||||
|
return beautiful["volume-medium-symbolic"] |
||||
|
elseif percent > 0 then |
||||
|
return beautiful["volume-low-symbolic"] |
||||
|
else |
||||
|
return beautiful["volume-muted-symbolic"] |
||||
|
end |
||||
|
end |
||||
|
|
||||
|
return function(args) |
||||
|
local style = awmtk2.create_style("volume", |
||||
|
awmtk2.generic.oneline_widget, args.style) |
||||
|
local templates = awmtk2.create_template_lib("volume",awmtk2.templates,args.templates) |
||||
|
local t = awmtk2.build_templates(templates,style) |
||||
|
local widget = wibox.widget({ |
||||
|
t.button({ |
||||
|
image = get_icon(0), |
||||
|
id = "volume_icon", |
||||
|
resize = true, |
||||
|
widget = wibox.widget.imagebox |
||||
|
}), |
||||
|
t.container({ |
||||
|
t.slider({ |
||||
|
minimum = 0, |
||||
|
maximum = 100, |
||||
|
id = "volume", |
||||
|
value = -1 |
||||
|
}), |
||||
|
layout = wibox.layout.fixed.horizontal |
||||
|
},{ |
||||
|
visible = false, |
||||
|
id = "slidercontainer" |
||||
|
}), |
||||
|
layout = wibox.layout.fixed.horizontal |
||||
|
}) |
||||
|
local icon = widget:get_children_by_id("volume_icon")[1] |
||||
|
local slider = widget:get_children_by_id("volume")[1] |
||||
|
local container = widget:get_children_by_id("slidercontainer")[1] |
||||
|
-- Alsa master handle |
||||
|
args.device = args.device or "default" |
||||
|
gears.timer { |
||||
|
autostart = true, |
||||
|
timeout = 0.5, |
||||
|
call_now = true, |
||||
|
callback = function() |
||||
|
awful.spawn.easy_async_with_shell("amixer -D "..args.device.." sget Master",function(stdout) |
||||
|
local volume_percent = stdout:match("%[(%d+)%%%]") |
||||
|
volume_percent = tonumber(volume_percent) |
||||
|
if not volume_percent then |
||||
|
return |
||||
|
end |
||||
|
slider.value = volume_percent |
||||
|
icon.image = get_icon(volume_percent) |
||||
|
end) |
||||
|
end |
||||
|
} |
||||
|
slider:connect_signal("widget::redraw_needed",function() |
||||
|
awful.spawn("amixer -D "..args.device.." sset Master "..slider.value.."%") |
||||
|
icon.image = get_icon(slider.value) |
||||
|
end) |
||||
|
icon:connect_signal("button::press",function(self,lx,ly,button) |
||||
|
if button == 1 then |
||||
|
container.visible = not container.visible |
||||
|
end |
||||
|
if button == 2 then |
||||
|
awful.spawn.with_shell(args.mixer or try_launch) |
||||
|
end |
||||
|
end) |
||||
|
return widget |
||||
|
end |