Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/lua
- function NightModeExtreme()
- return {
- apply = function(self)
- os.execute("sct 1500")
- os.execute("brightnessctl set 1%")
- end,
- }
- end
- function NightModeNormal()
- return {
- apply = function(self)
- os.execute("sct 3000")
- os.execute("brightnessctl set 1%")
- end,
- }
- end
- function NormalMode()
- return {
- applyWithBrightnessAt = function(self, brightness)
- os.execute("sct 6500")
- os.execute("brightnessctl set " .. brightness .. "%")
- end,
- }
- end
- function AvailableModes(modes)
- return {
- apply = function(self, modeRequest)
- if modeRequest == "Extreme Night Mode" then
- modes.NightModes[2]:apply()
- elseif modeRequest == "Normal Night Mode" then
- modes.NightModes[1]:apply()
- elseif type(modeRequest) == "table" and modeRequest.Mode == "Normal Mode" then
- modes.NormalModes[1]:applyWithBrightnessAt(modeRequest.Brightness)
- end
- end,
- }
- end
- function DisplayMode(acceptableDisplayModes)
- return {
- providedByUser = function(self)
- local userDisplayMode = self:displayModeRequestedByUser()
- local displayModes = self:displayModes()
- return self:displayModeChosenByUser(displayModes, userDisplayMode)
- end,
- displayModeRequestedByUser = function(self)
- local handle = io.popen("echo '' | dmenu -p \"displayMode:\"")
- local input = handle:read("*a")
- handle:close()
- return input:gsub("\n$", "")
- end,
- displayModes = function(self)
- return {
- { nn = "Normal Night Mode" },
- { ne = "Extreme Night Mode" },
- { n18 = "NightMode, 18" },
- { d80 = "Normal Mode, 80" },
- }
- end,
- displayModeChosenByUser = function(self, displayModes, userInputFromDmenu)
- for i, mode in ipairs(displayModes) do
- for key, value in pairs(mode) do
- if key == userInputFromDmenu then
- return value
- end
- end
- end
- if string.sub(userInputFromDmenu, 1, 1) == "d" then
- return "Normal Mode " .. string.sub(userInputFromDmenu, 2)
- elseif string.sub(userInputFromDmenu, 1, 1) == "n" then
- return "Night Mode " .. string.sub(userInputFromDmenu, 2)
- end
- return nil
- end,
- }
- end
- function PrimaryDisplay(availableModes)
- return {
- changeAccordingTo = function(self, userMode)
- self:activateUserChosenDisplay(userMode)
- end,
- activateUserChosenDisplay = function(self, userMode)
- local userInput = userMode:providedByUser()
- if userInput == "Extreme Night Mode" then
- availableModes:apply(userInput)
- elseif userInput == "Normal Night Mode" then
- availableModes:apply(userInput)
- elseif string.sub(userInput, 1, 11) == "Normal Mode" then
- local brightnessValue = tonumber(string.sub(userInput, 13))
- availableModes:apply({ Mode = "Normal Mode", Brightness = brightnessValue })
- elseif string.sub(userInput, 1, 10) == "Night Mode" then
- local warmthValue = tonumber(string.sub(userInput, 12)) * 100
- availableModes:apply({ Mode = "Night Mode", Warmth = warmthValue })
- end
- end,
- }
- end
- local modes = {
- NightModes = {
- NightModeNormal(),
- NightModeExtreme(),
- },
- NormalModes = {
- NormalMode(),
- },
- }
- local availableModes = AvailableModes(modes)
- local displayMode = DisplayMode()
- local primaryDisplay = PrimaryDisplay(availableModes)
- primaryDisplay:changeAccordingTo(displayMode)
- os.exit(0)
Advertisement
Add Comment
Please, Sign In to add comment