added brightness and rotation controls, still WIP
This commit is contained in:
parent
73299f770c
commit
5bbcf9d290
BIN
brightness-down.png
Normal file
BIN
brightness-down.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.6 KiB |
BIN
brightness-up.png
Normal file
BIN
brightness-up.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.4 KiB |
64
init.lua
64
init.lua
@ -1,6 +1,7 @@
|
|||||||
local awful = require "awful"
|
local awful = require "awful"
|
||||||
local wibox = require("wibox")
|
local wibox = require("wibox")
|
||||||
local gears = require("gears")
|
local gears = require("gears")
|
||||||
|
local naughty = require("naughty")
|
||||||
local beautiful = require("beautiful")
|
local beautiful = require("beautiful")
|
||||||
local powermenu = {
|
local powermenu = {
|
||||||
buttonsize = 128,
|
buttonsize = 128,
|
||||||
@ -15,6 +16,58 @@ local powermenu = {
|
|||||||
poweroff = function()
|
poweroff = function()
|
||||||
error("Power off requested, but no function specified")
|
error("Power off requested, but no function specified")
|
||||||
end,
|
end,
|
||||||
|
rotateLeft = function()
|
||||||
|
awful.spawn(gears.filesystem.get_configuration_dir() .. "/awesome-powermenu/rotate.lua left")
|
||||||
|
awesome.restart()
|
||||||
|
end,
|
||||||
|
rotateRight = function()
|
||||||
|
awful.spawn(gears.filesystem.get_configuration_dir() .. "/awesome-powermenu/rotate.lua right")
|
||||||
|
awesome.restart()
|
||||||
|
end,
|
||||||
|
brightnessUp = function()
|
||||||
|
awful.spawn.easy_async_with_shell("ls /sys/class/backlight/",function(stdout,stderr,_,_)
|
||||||
|
local devices = {}
|
||||||
|
for line in stdout:gmatch("%S+") do
|
||||||
|
local f = io.open(string.format("/sys/class/backlight/%s/brightness",line),"rb")
|
||||||
|
if not f then error("wtf") end
|
||||||
|
local brightness = tonumber(f:read("*a"))
|
||||||
|
f:close()
|
||||||
|
local f = io.open(string.format("/sys/class/backlight/%s/max_brightness",line),"rb")
|
||||||
|
local max_brightness = tonumber(f:read("*a"))
|
||||||
|
f:close()
|
||||||
|
devices[line]={["brightness"]=brightness,["max_brightness"]=max_brightness}
|
||||||
|
end
|
||||||
|
for k,v in pairs(devices) do
|
||||||
|
v.stepsize = math.floor(v.max_brightness / 10)
|
||||||
|
v.currentstep = math.floor(v.brightness / v.stepsize)
|
||||||
|
local f = io.open(string.format("/sys/class/backlight/%s/brightness",k),"wb")
|
||||||
|
f:write(v.stepsize * math.min(10,(v.currentstep+1)))
|
||||||
|
f:close()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
brightnessDown = function()
|
||||||
|
awful.spawn.easy_async_with_shell("ls /sys/class/backlight/",function(stdout,stderr,_,_)
|
||||||
|
local devices = {}
|
||||||
|
for line in stdout:gmatch("%S+") do
|
||||||
|
local f = io.open(string.format("/sys/class/backlight/%s/brightness",line),"rb")
|
||||||
|
if not f then error("wtf") end
|
||||||
|
local brightness = tonumber(f:read("*a"))
|
||||||
|
f:close()
|
||||||
|
local f = io.open(string.format("/sys/class/backlight/%s/max_brightness",line),"rb")
|
||||||
|
local max_brightness = tonumber(f:read("*a"))
|
||||||
|
f:close()
|
||||||
|
devices[line]={["brightness"]=brightness,["max_brightness"]=max_brightness}
|
||||||
|
end
|
||||||
|
for k,v in pairs(devices) do
|
||||||
|
v.stepsize = math.floor(v.max_brightness / 10)
|
||||||
|
v.currentstep = math.floor(v.brightness / v.stepsize)
|
||||||
|
local f = io.open(string.format("/sys/class/backlight/%s/brightness",k),"wb")
|
||||||
|
f:write(v.stepsize * math.max(1,(v.currentstep-1)))
|
||||||
|
f:close()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
function powermenu.new()
|
function powermenu.new()
|
||||||
@ -32,7 +85,8 @@ function powermenu.new()
|
|||||||
placement = awful.placement.centered,
|
placement = awful.placement.centered,
|
||||||
visible = false,
|
visible = false,
|
||||||
}
|
}
|
||||||
local function addButton(icon, fn)
|
local function addButton(icon, fn, hide)
|
||||||
|
if hide == nil then hide = true end
|
||||||
local newButton = awful.widget.button{
|
local newButton = awful.widget.button{
|
||||||
image = powermenu.iconPath .. "/" .. icon
|
image = powermenu.iconPath .. "/" .. icon
|
||||||
}
|
}
|
||||||
@ -42,7 +96,9 @@ function powermenu.new()
|
|||||||
newButton:buttons(),
|
newButton:buttons(),
|
||||||
awful.button({}, 1, nil, function()
|
awful.button({}, 1, nil, function()
|
||||||
fn()
|
fn()
|
||||||
powermenuPopup:hide()
|
if hide then
|
||||||
|
powermenuPopup:hide()
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
))
|
))
|
||||||
|
|
||||||
@ -52,6 +108,10 @@ function powermenu.new()
|
|||||||
addButton("suspend.png", powermenu.suspend)
|
addButton("suspend.png", powermenu.suspend)
|
||||||
addButton("restart.png", awesome.restart)
|
addButton("restart.png", awesome.restart)
|
||||||
addButton("lock.png", powermenu.lock)
|
addButton("lock.png", powermenu.lock)
|
||||||
|
addButton("rotate-left.png", powermenu.rotateLeft)
|
||||||
|
addButton("rotate-right.png", powermenu.rotateRight)
|
||||||
|
addButton("brightness-up.png", powermenu.brightnessUp, false)
|
||||||
|
addButton("brightness-down.png", powermenu.brightnessDown, false)
|
||||||
|
|
||||||
function powermenuPopup.show(self)
|
function powermenuPopup.show(self)
|
||||||
self.visible = true
|
self.visible = true
|
||||||
|
BIN
rotate-left.png
Normal file
BIN
rotate-left.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.1 KiB |
BIN
rotate-right.png
Normal file
BIN
rotate-right.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.0 KiB |
77
rotate.lua
Executable file
77
rotate.lua
Executable file
@ -0,0 +1,77 @@
|
|||||||
|
#!/usr/bin/env lua
|
||||||
|
local tA = {...}
|
||||||
|
local direction = tA[1]
|
||||||
|
local disp = tA[2] or "LVDS-0"
|
||||||
|
local orientations = {"normal", "right", "inverted", "left"}
|
||||||
|
local ctms = {["normal"]="1 0 0 0 1 0 0 0 1",
|
||||||
|
["inverted"]="-1 0 1 0 -1 1 0 0 1",
|
||||||
|
["left"]="0 -1 1 1 0 0 0 0 1",
|
||||||
|
["right"]="0 1 0 -1 0 1 0 0 1"}
|
||||||
|
--[[
|
||||||
|
xrandr -q --verbose
|
||||||
|
LVDS-0 connected 800x1280+0+0 (0x43) left (normal left inverted right x axis y axis) 0mm x 0mm
|
||||||
|
|
||||||
|
NEW_ROT="normal"
|
||||||
|
CTM="1 0 0 0 1 0 0 0 1"
|
||||||
|
|
||||||
|
NEW_ROT="inverted"
|
||||||
|
CTM="-1 0 1 0 -1 1 0 0 1"
|
||||||
|
|
||||||
|
NEW_ROT="left"
|
||||||
|
CTM="0 -1 1 1 0 0 0 0 1"
|
||||||
|
|
||||||
|
NEW_ROT="right"
|
||||||
|
CTM="0 1 0 -1 0 1 0 0 1"
|
||||||
|
]]
|
||||||
|
local function nextRight(o)
|
||||||
|
local current = 1
|
||||||
|
for k,v in pairs(orientations) do
|
||||||
|
if o == v then
|
||||||
|
current = k
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local ret = current + 1
|
||||||
|
if ret > #orientations then
|
||||||
|
ret = 1
|
||||||
|
end
|
||||||
|
return orientations[ret]
|
||||||
|
end
|
||||||
|
|
||||||
|
local function nextLeft(o)
|
||||||
|
local current = 1
|
||||||
|
for k,v in pairs(orientations) do
|
||||||
|
if o == v then
|
||||||
|
current = k
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local ret = current - 1
|
||||||
|
if ret < 1 then
|
||||||
|
ret = #orientations
|
||||||
|
end
|
||||||
|
return orientations[ret]
|
||||||
|
end
|
||||||
|
|
||||||
|
local f = io.popen("xrandr -q --verbose","r")
|
||||||
|
c=f:read("*a")
|
||||||
|
f:close()
|
||||||
|
local line = (c:match("\n("..disp:gsub("%p","%%%1") .. ".-)\n"))
|
||||||
|
print(line)
|
||||||
|
local orientation = line:match("%S+ %S+ %S+ %S+ (%S+) ")
|
||||||
|
|
||||||
|
local f = io.popen("xinput --list","r")
|
||||||
|
local xin=f:read("*a"):lower()
|
||||||
|
f:close()
|
||||||
|
--⎜ ↳ Elan Touchscreen id=6 [slave pointer (2)]
|
||||||
|
local touchscreen = (xin:match("touch.*screen%s-id=(%d+)"))
|
||||||
|
|
||||||
|
print(orientation)
|
||||||
|
print(nextLeft(orientation))
|
||||||
|
print(nextRight(orientation))
|
||||||
|
local newRot = nextRight(orientation)
|
||||||
|
if direction == "left" then
|
||||||
|
newRot = nextLeft(orientation)
|
||||||
|
end
|
||||||
|
print(string.format("xrandr --output %s --rotate %s",disp,newRot))
|
||||||
|
os.execute(string.format("xrandr --output %s --rotate %s",disp,newRot))
|
||||||
|
print(string.format("xinput set-prop %s 'Coordinate Transformation Matrix' %s",touchscreen,ctms[newRot]))
|
||||||
|
os.execute(string.format("xinput set-prop %s 'Coordinate Transformation Matrix' %s",touchscreen,ctms[newRot]))
|
Loading…
Reference in New Issue
Block a user