Added a prototype of an xfce-like preset

This commit is contained in:
Yessiest 2022-03-22 23:56:19 +04:00
parent e6e79af052
commit 20007c10bb
8 changed files with 614 additions and 34 deletions

View File

@ -49,56 +49,31 @@ awful.screen.connect_for_each_screen(function(s)
s.mytasklist = require("core.widgets.tasklist")(s) s.mytasklist = require("core.widgets.tasklist")(s)
-- Create the wibox -- Create the wibox
s.mywibox = awful.wibar({ s.mywibox = awful.wibar({
position = "top", position = "bottom",
screen = s, screen = s,
bg = beautiful.topbar_bg, bg = beautiful.topbar_bg,
border_width = 1,
border_color = beautiful.bg_normal
}) })
-- Add screen lock -- Add screen lock
require("widgets.lock")({screen = s, obscure = true}) require("widgets.lock")({screen = s, obscure = true})
require("widgets.unitybar")(s,{
top_widgets = {
require("widgets.polytasklist")({
vertical = true,
stretch = false,
--constraint = 180,
names = false,
margins = 5
})(s),
},
bottom_widgets = {
require("widgets.polylauncher")({vertical = true})
}
})
-- 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,
{
{
require("core.widgets.menu_launcher"), require("core.widgets.menu_launcher"),
widget = wibox.container.place, require("widgets.polylauncher")({vertical = false}),
halign = "center"
},
bg = "#26262633",
widget = wibox.container.background,
forced_width = require("beautiful.xresources").apply_dpi(61),
},
--require("widgets.polylauncher")({vertical = false}),
--s.mytaglist,
s.mypromptbox, s.mypromptbox,
require("widgets.wintitle")({}),
spacing = 3 spacing = 3
}, },
-- Middle widget -- Middle widget
{ {
--[[require("widgets.polytasklist")({ require("widgets.polytasklist")({
vertical = false,
stretch = false,
constraint = 180, constraint = 180,
names = true, names = true,
margins = 5 margins = 5
})(s),]] })(s),
layout = wibox.layout.fixed.horizontal layout = wibox.layout.fixed.horizontal
}, },
{ -- Right widgets { -- Right widgets
@ -121,7 +96,6 @@ awful.screen.connect_for_each_screen(function(s)
percentage = true, percentage = true,
}), }),
wibox.widget.textclock(), wibox.widget.textclock(),
require("widgets.username")({}),
s.mylayoutbox, s.mylayoutbox,
spacing = 4 spacing = 4
}, },

View File

@ -0,0 +1,130 @@
local beautiful = require("beautiful")
local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
-- {{{ Wibar
-- Create a wibox for each screen and add it
local function set_wallpaper(s)
-- Wallpaper
if beautiful.wallpaper then
local wallpaper = beautiful.wallpaper
-- If wallpaper is a function, call it with the screen
if type(wallpaper) == "function" then
wallpaper = wallpaper(s)
end
gears.wallpaper.maximized(wallpaper, s, true)
end
end
-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
screen.connect_signal("property::geometry", set_wallpaper)
-- {{{ Non-widget modules
-- The following modules are not exactly widgets, however they are part of the ui.
-- Load the keybindings list
require("core.widgets.hotkeys_popup")
-- Load the menubar
require("core.widgets.menubar")
-- }}}
awful.screen.connect_for_each_screen(function(s)
-- Wallpaper
set_wallpaper(s)
-- Each screen has its own tag table.
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
-- Create a promptbox for each screen
s.mypromptbox = require("core.widgets.prompt")()
-- Create an imagebox widget which will contain an icon indicating which layout we're using.
-- Create the taglist
s.mytaglist = require("core.widgets.taglist")(s)
-- We need one layoutbox per screen.
s.mylayoutbox = require("core.widgets.layout_box")(s)
-- Create a tasklist widget
s.mytasklist = require("core.widgets.tasklist")(s)
-- Create the wibox
s.mywibox = awful.wibar({
position = "top",
screen = s,
bg = beautiful.topbar_bg,
})
-- Add screen lock
require("widgets.lock")({screen = s, obscure = true})
require("widgets.unitybar")(s,{
top_widgets = {
require("widgets.polytasklist")({
vertical = true,
stretch = false,
--constraint = 180,
names = false,
margins = 5
})(s),
},
bottom_widgets = {
require("widgets.polylauncher")({vertical = true})
}
})
-- Add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
{ -- Left widgets
layout = wibox.layout.fixed.horizontal,
{
{
require("core.widgets.menu_launcher"),
widget = wibox.container.place,
halign = "center"
},
bg = "#26262633",
widget = wibox.container.background,
forced_width = require("beautiful.xresources").apply_dpi(61),
},
--require("widgets.polylauncher")({vertical = false}),
--s.mytaglist,
s.mypromptbox,
require("widgets.wintitle")({}),
spacing = 3
},
-- Middle widget
{
--[[require("widgets.polytasklist")({
vertical = false,
stretch = false,
constraint = 180,
names = true,
margins = 5
})(s),]]
layout = wibox.layout.fixed.horizontal
},
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
awful.widget.keyboardlayout(),
require("widgets.drawer")({
wibox.widget.systray(),
vertical = false
}),
require("widgets.wallpapers")({
screen = s,
path = os.getenv("HOME").."/Pictures/Wallpapers/",
}),
require("widgets.mailbox")({
screen = s,
}),
--wibox.widget.systray(),
require("widgets.volume")({}),
require("widgets.battery")({
percentage = true,
}),
wibox.widget.textclock(),
require("widgets.username")({}),
s.mylayoutbox,
spacing = 4
},
}
end)
-- }}}

View File

@ -0,0 +1,155 @@
local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
local menu = require("widgets.polymenu")
local move_screentags = {}
local toggle_screentags = {}
awful.screen.connect_for_each_screen(function(s)
local move_tags = {}
local toggle_tags = {}
for _,tag in pairs(s.tags) do
table.insert(move_tags,{
tag.name,
function()
if client.focus then
client.focus:tags({tag})
end
end
})
table.insert(toggle_tags,{
tag.name,
function()
if client.focus then
local tags = client.focus:tags()
for k,v in pairs(tags) do
if v == tag then
table.remove(tags,k)
client.focus:tags(tags)
return
end
end
table.insert(tags,tag)
client.focus:tags(tags)
end
end
})
end
table.insert(move_screentags,{
"Screen "..tostring(s.index),
move_tags
})
table.insert(toggle_screentags,{
"Screen "..tostring(s.index),
toggle_tags
})
end)
local controls_widget = wibox.widget {
forced_width = 72,
forced_height = 24,
layout = wibox.layout.fixed.horizontal,
}
-- To conserve memory we keep one menu at a time
local menu_widget = menu({
before = {
controls_widget
},
after = {
require("widgets.client-volume")({})
},
items = {
{ "Move to tag" ,
move_screentags
},
{ "Toggle on tag",
toggle_screentags
},
{ "Stop task",
function()
awful.spawn("kill "..tostring(c.pid))
end
},
{ "Kill task",
function()
awful.spawn("kill -s KILL "..tostring(c.pid))
end
},
{ "Debug info",
{
before = {
require("widgets.window-debug")()
}
}
}
},
vertical = true
})
return function(c)
local buttons = gears.table.join(
awful.button({ }, 1, function()
c:emit_signal("request::activate", "titlebar", {raise = true})
awful.mouse.client.move(c)
end),
awful.button({ }, 3, function()
c:emit_signal("request::activate", "titlebar", {raise = true})
awful.mouse.client.resize(c)
end)
)
c.menu_button = awful.titlebar.widget.iconwidget(c)
-- A little trick we do to conserve memory and cpu usage on regenerating
-- buttons is we pop up a menu in the location of the icon
-- and insert buttons into the controls widget layout.
c.hidden_floatingbutton = awful.titlebar.widget.floatingbutton(c)
c.hidden_stickybutton = awful.titlebar.widget.stickybutton(c)
c.hidden_ontopbutton = awful.titlebar.widget.ontopbutton(c)
c.menu_button:connect_signal("button::press", function()
menu_widget.toggle()
if controls_widget then
controls_widget:reset()
controls_widget:add(c.hidden_floatingbutton)
controls_widget:add(c.hidden_stickybutton)
controls_widget:add(c.hidden_ontopbutton)
end
c:emit_signal("request::activate", "titlebar", {raise = true})
end)
c:connect_signal("unfocus",function()
if menu_widget.visible then
menu_widget.toggle(0,0)
end
end)
return awful.titlebar(c) : setup {
{ -- Left
c.menu_button,
layout = wibox.layout.fixed.horizontal
},
{ -- Middle
awful.titlebar.widget.titlewidget(c),
buttons = buttons,
layout = wibox.layout.flex.horizontal
},
{ -- Right
{
{
awful.titlebar.widget.maximizedbutton(c),
awful.titlebar.widget.minimizebutton (c),
awful.titlebar.widget.closebutton (c),
layout = wibox.layout.fixed.horizontal(),
widget = wibox.container.margin,
margins = 3
},
widget = wibox.container.background,
shape = gears.shape.rounded_bar,
bg = {
type = "linear",
from = { 0, 15 },
to = { 0, 0},
stops = { { 0, "#5d5d5955"} , {1, "39383555"} }
},
},
widget = wibox.container.margin,
margins = 2
},
spacing = 10,
layout = wibox.layout.align.horizontal,
}
end

View File

@ -0,0 +1,31 @@
local awful = require("awful")
local gears = require("gears")
-- {{{ Variable definitions
global = {}
global.awesome_dir = os.getenv("HOME").."/.config/awesome/"
global.config_dir = os.getenv("HOME").."/.awesome/"
global.themes_dir = os.getenv("HOME").."/.config/awesome/themes/"
global.theme = global.awesome_dir .. "themes/carbon/theme.lua"
global.terminal = "xterm"
global.editor = os.getenv("EDITOR") or "vim"
global.editor_cmd = global.terminal .. " -e ".. global.editor
global.modkey = "Mod4"
awful.layout.layouts = {
awful.layout.suit.floating,
awful.layout.suit.tile,
awful.layout.suit.tile.left,
awful.layout.suit.tile.bottom,
awful.layout.suit.tile.top,
awful.layout.suit.fair,
awful.layout.suit.fair.horizontal,
awful.layout.suit.spiral,
awful.layout.suit.spiral.dwindle,
awful.layout.suit.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier,
awful.layout.suit.corner.nw,
-- awful.layout.suit.corner.ne,
-- awful.layout.suit.corner.sw,
-- awful.layout.suit.corner.se,
}
-- }}}

View File

@ -0,0 +1,104 @@
local beautiful = require("beautiful")
local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
-- {{{ Wibar
-- Create a wibox for each screen and add it
local function set_wallpaper(s)
-- Wallpaper
if beautiful.wallpaper then
local wallpaper = beautiful.wallpaper
-- If wallpaper is a function, call it with the screen
if type(wallpaper) == "function" then
wallpaper = wallpaper(s)
end
gears.wallpaper.maximized(wallpaper, s, true)
end
end
-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
screen.connect_signal("property::geometry", set_wallpaper)
-- {{{ Non-widget modules
-- The following modules are not exactly widgets, however they are part of the ui.
-- Load the keybindings list
require("core.widgets.hotkeys_popup")
-- Load the menubar
require("core.widgets.menubar")
-- }}}
awful.screen.connect_for_each_screen(function(s)
-- Wallpaper
set_wallpaper(s)
-- Each screen has its own tag table.
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
-- Create a promptbox for each screen
s.mypromptbox = require("core.widgets.prompt")()
-- Create an imagebox widget which will contain an icon indicating which layout we're using.
-- Create the taglist
s.mytaglist = require("core.widgets.taglist")(s)
-- We need one layoutbox per screen.
s.mylayoutbox = require("core.widgets.layout_box")(s)
-- Create a tasklist widget
s.mytasklist = require("core.widgets.tasklist")(s)
-- Create the wibox
s.mywibox = awful.wibar({
position = "bottom",
screen = s,
bg = beautiful.topbar_bg,
border_width = 1,
border_color = beautiful.bg_normal
})
-- Add screen lock
require("widgets.lock")({screen = s, obscure = true})
-- Add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
{ -- Left widgets
layout = wibox.layout.fixed.horizontal,
require("core.widgets.menu_launcher"),
require("widgets.polylauncher")({vertical = false}),
s.mypromptbox,
spacing = 3
},
-- Middle widget
{
require("widgets.polytasklist")({
constraint = 180,
names = true,
margins = 5
})(s),
layout = wibox.layout.fixed.horizontal
},
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
awful.widget.keyboardlayout(),
require("widgets.drawer")({
wibox.widget.systray(),
vertical = false
}),
require("widgets.wallpapers")({
screen = s,
path = os.getenv("HOME").."/Pictures/Wallpapers/",
}),
require("widgets.mailbox")({
screen = s,
}),
--wibox.widget.systray(),
require("widgets.volume")({}),
require("widgets.battery")({
percentage = true,
}),
wibox.widget.textclock(),
s.mylayoutbox,
spacing = 4
},
}
end)
-- }}}

View File

@ -0,0 +1,155 @@
local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
local menu = require("widgets.polymenu")
local move_screentags = {}
local toggle_screentags = {}
awful.screen.connect_for_each_screen(function(s)
local move_tags = {}
local toggle_tags = {}
for _,tag in pairs(s.tags) do
table.insert(move_tags,{
tag.name,
function()
if client.focus then
client.focus:tags({tag})
end
end
})
table.insert(toggle_tags,{
tag.name,
function()
if client.focus then
local tags = client.focus:tags()
for k,v in pairs(tags) do
if v == tag then
table.remove(tags,k)
client.focus:tags(tags)
return
end
end
table.insert(tags,tag)
client.focus:tags(tags)
end
end
})
end
table.insert(move_screentags,{
"Screen "..tostring(s.index),
move_tags
})
table.insert(toggle_screentags,{
"Screen "..tostring(s.index),
toggle_tags
})
end)
local controls_widget = wibox.widget {
forced_width = 72,
forced_height = 24,
layout = wibox.layout.fixed.horizontal,
}
-- To conserve memory we keep one menu at a time
local menu_widget = menu({
before = {
controls_widget
},
after = {
require("widgets.client-volume")({})
},
items = {
{ "Move to tag" ,
move_screentags
},
{ "Toggle on tag",
toggle_screentags
},
{ "Stop task",
function()
awful.spawn("kill "..tostring(c.pid))
end
},
{ "Kill task",
function()
awful.spawn("kill -s KILL "..tostring(c.pid))
end
},
{ "Debug info",
{
before = {
require("widgets.window-debug")()
}
}
}
},
vertical = true
})
return function(c)
local buttons = gears.table.join(
awful.button({ }, 1, function()
c:emit_signal("request::activate", "titlebar", {raise = true})
awful.mouse.client.move(c)
end),
awful.button({ }, 3, function()
c:emit_signal("request::activate", "titlebar", {raise = true})
awful.mouse.client.resize(c)
end)
)
c.menu_button = awful.titlebar.widget.iconwidget(c)
-- A little trick we do to conserve memory and cpu usage on regenerating
-- buttons is we pop up a menu in the location of the icon
-- and insert buttons into the controls widget layout.
c.hidden_floatingbutton = awful.titlebar.widget.floatingbutton(c)
c.hidden_stickybutton = awful.titlebar.widget.stickybutton(c)
c.hidden_ontopbutton = awful.titlebar.widget.ontopbutton(c)
c.menu_button:connect_signal("button::press", function()
menu_widget.toggle()
if controls_widget then
controls_widget:reset()
controls_widget:add(c.hidden_floatingbutton)
controls_widget:add(c.hidden_stickybutton)
controls_widget:add(c.hidden_ontopbutton)
end
c:emit_signal("request::activate", "titlebar", {raise = true})
end)
c:connect_signal("unfocus",function()
if menu_widget.visible then
menu_widget.toggle(0,0)
end
end)
return awful.titlebar(c) : setup {
{ -- Left
c.menu_button,
layout = wibox.layout.fixed.horizontal
},
{ -- Middle
awful.titlebar.widget.titlewidget(c),
buttons = buttons,
layout = wibox.layout.flex.horizontal
},
{ -- Right
{
{
awful.titlebar.widget.maximizedbutton(c),
awful.titlebar.widget.minimizebutton (c),
awful.titlebar.widget.closebutton (c),
layout = wibox.layout.fixed.horizontal(),
widget = wibox.container.margin,
margins = 3
},
widget = wibox.container.background,
shape = gears.shape.rounded_bar,
bg = {
type = "linear",
from = { 0, 15 },
to = { 0, 0},
stops = { { 0, "#5d5d5955"} , {1, "39383555"} }
},
},
widget = wibox.container.margin,
margins = 2
},
spacing = 10,
layout = wibox.layout.align.horizontal,
}
end

View File

@ -0,0 +1,31 @@
local awful = require("awful")
local gears = require("gears")
-- {{{ Variable definitions
global = {}
global.awesome_dir = os.getenv("HOME").."/.config/awesome/"
global.config_dir = os.getenv("HOME").."/.awesome/"
global.themes_dir = os.getenv("HOME").."/.config/awesome/themes/"
global.theme = global.awesome_dir .. "themes/carbon/theme.lua"
global.terminal = "xterm"
global.editor = os.getenv("EDITOR") or "vim"
global.editor_cmd = global.terminal .. " -e ".. global.editor
global.modkey = "Mod4"
awful.layout.layouts = {
awful.layout.suit.floating,
awful.layout.suit.tile,
awful.layout.suit.tile.left,
awful.layout.suit.tile.bottom,
awful.layout.suit.tile.top,
awful.layout.suit.fair,
awful.layout.suit.fair.horizontal,
awful.layout.suit.spiral,
awful.layout.suit.spiral.dwindle,
awful.layout.suit.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier,
awful.layout.suit.corner.nw,
-- awful.layout.suit.corner.ne,
-- awful.layout.suit.corner.sw,
-- awful.layout.suit.corner.se,
}
-- }}}

View File

@ -28,7 +28,7 @@ local dpi = xresources.apply_dpi
local theme = {} local theme = {}
-- {{{ Color definitions -- {{{ Color definitions
-- These variables define a fallback state for all widgets to use. -- These variables define a fallback state for all widgets to use.
theme.font = "sans 8" theme.font = "sans 9"
theme.name = "carbon" theme.name = "carbon"
theme.bg_normal = "#19191D" theme.bg_normal = "#19191D"