You are not logged in.
I am using Xfce with startxfce4 from LightDM, but with awesome replacing xfwm4. When I used xfwm4, Xfce instantly started. However, when I use awesome, it takes up to 15 and 25 seconds for Xfce4-panel and Xfdesktop to display, respectively. A very strange occurrence is that, when most applications are started, both Xfce4-panel and Xfdesktop instantly start as well. For example, when a terminal is started, Xfce4-panel and Xfdesktop instantly start no matter how long I have been waiting since login. However, when the xfce4-appfinder is started, neither of them start. I would like to know if there is a way to use awesome with Xfce in which the panel and desktop immediately start on login.
/etc/xdg/xfce4/xfce-perchannel-xml/xfce4-session.conf
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-session" version="1.0">
<property name="general" type="empty">
<property name="FailsafeSessionName" type="string" value="Failsafe"/>
<property name="LockCommand" type="string" value=""/>
</property>
<property name="sessions" type="empty">
<property name="Failsafe" type="empty">
<property name="IsFailsafe" type="bool" value="true"/>
<property name="Count" type="int" value="5"/>
<property name="Client0_Command" type="array">
<value type="string" value="awesome"/>
</property>
<property name="Client0_Priority" type="int" value="15"/>
<property name="Client0_PerScreen" type="bool" value="false"/>
<property name="Client1_Command" type="array">
<value type="string" value="xfsettingsd"/>
<value type="string" value="--disable-wm-check"/>
</property>
<property name="Client1_Priority" type="int" value="20"/>
<property name="Client1_PerScreen" type="bool" value="false"/>
<property name="Client2_Command" type="array">
<value type="string" value="xfce4-panel"/>
<value type="string" value="--disable-wm-check"/>
</property>
<property name="Client2_Priority" type="int" value="25"/>
<property name="Client2_PerScreen" type="bool" value="false"/>
<property name="Client3_Command" type="array">
<value type="string" value="Thunar"/>
<value type="string" value="--daemon"/>
</property>
<property name="Client3_Priority" type="int" value="30"/>
<property name="Client3_PerScreen" type="bool" value="false"/>
<property name="Client4_Command" type="array">
<value type="string" value="xfdesktop"/>
<value type="string" value="--disable-wm-check"/>
</property>
<property name="Client4_Priority" type="int" value="35"/>
<property name="Client4_PerScreen" type="bool" value="false"/>
</property>
</property>~/.config/awesome/rc.lua
pcall(require, "luarocks.loader")
local awful = require("awful")
local gears = require("gears")
local beautiful = require("beautiful")
beautiful.init(gears.filesystem.get_configuration_dir() .. "theme/theme.lua")
require("awful.autofocus")
-- Configurable stuff
modkey = "Mod1" -- 'Round these parts, we use left alt
terminal = "xfce4-terminal"
launcher = "xfce4-appfinder --disable-server"
screenshot = "xfce4-screenshooter -r"
background_dir = "$HOME/Pictures/backgrounds"
configdir = gears.filesystem.get_configuration_dir()
-- Autostarts
--awful.spawn("picom") -- Compositor
--awful.spawn("mpris-proxy") -- Proxy for headphone media control
--awful.spawn("/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1") -- GTK policykit
--awful.spawn.with_shell(configdir .. "reverse_scroll.sh") -- I like MacOS scroll, ok?
--awful.spawn.with_shell(configdir .. "vulkan.sh") -- Vulkan ICD file patching
-- Keybinds
globalkeys = gears.table.join(
-- Main keys
awful.key({modkey, "Shift"}, "e", function() awful.spawn("xfce4-session-logout") end,
{description = "Quit XFCE (and by extension awesome)", group = "awesome"}),
awful.key({modkey}, "Return", function() awful.spawn(terminal) end,
{description = "Open a terminal", group = "launcher"}),
awful.key({modkey}, "d", function() awful.spawn(launcher) end,
{description = "Open a launcher", group = "launcher"}),
awful.key({modkey, "Shift"}, "r", awesome.restart,
{description = "Reload awesome", group = "awesome"}),
awful.key({}, "Print", function() awful.spawn(screenshot) end,
{description = "Take a screenshot", group = "launcher"}),
-- Media keys
awful.key({}, "XF86AudioRaiseVolume", function() awful.spawn("pactl set-sink-volume @DEFAULT_SINK@ +5%") end,
{description = "Raise the volume", group = "media"}),
awful.key({}, "XF86AudioLowerVolume", function() awful.spawn("pactl set-sink-volume @DEFAULT_SINK@ -5%") end,
{description = "Lower the volume", group = "media"}),
awful.key({}, "XF86AudioMute", function() awful.spawn("pactl set-sink-mute @DEFAULT_SINK@ toggle") end,
{description = "Mute/unmute the speaker", group = "media"}),
awful.key({}, "XF86AudioPlay", function() awful.spawn("playerctl play") end,
{description = "Play audio", group = "media"}),
awful.key({}, "XF86AudioPause", function() awful.spawn("playerctl pause") end,
{description = "Pause audio", group = "media"})
)
clientkeys = gears.table.join(
awful.key({modkey, "Shift"}, "q", function(c) c:kill() end,
{description = "Close a window", group = "client"}),
awful.key({modkey, "Shift"}, "space", awful.client.floating.toggle,
{description = "Toggle floating", group = "client"}),
awful.key({modkey}, "f", function(c)
c.fullscreen = not c.fullscreen
c.raise()
end,
{description = "Toggle fullscreen", group = "client"})
)
-- Stuff about tags
function get_tag(screen, tagnum)
local tag = screen.tags[tagnum]
if not tag then
local tag_amount = #screen.tags
while tag_amount < tagnum do
tag = awful.tag.add(tagname, {screen = screen, index = tag_amount, layout = awful.layout.layouts[1]})
tag_amount = tag_amount + 1
end
end
return tag
end
--[[
function clean_tags(screen)
local to_delete = {}
for _, t in pairs(screen.tags) do
if not t.selected and #t:clients() == 0 then
to_delete[t] = true
end
end
for t in pairs(to_delete) do
t:delete()
end
end
--]]
-- Tile by default, floating optional
awful.layout.layouts = {
awful.layout.suit.tile,
awful.layout.suit.floating
}
function make_base_tags(screen)
awful.tag({"1", "2", "3", "4", "5", "6", "7", "8", "9"}, screen, awful.layout.layouts[1])
end
awful.screen.connect_for_each_screen(make_base_tags)
--clean_tags(awful.screen.focused())
for i = 1, 9 do
globalkeys = gears.table.join(globalkeys,
-- View
awful.key({modkey}, "#" .. i + 9, -- No idea how this works, honestly don't want to know
function ()
local screen = awful.screen.focused()
local tag = get_tag(screen, i)
tag:view_only()
--clean_tags(screen)
end,
{description = "View tag #"..i, group = "tag"}),
-- Move to tag
awful.key({modkey, "Shift"}, "#" .. i + 9,
function ()
if client.focus then
local screen = client.focus.screen
local tag = get_tag(screen, i)
client.focus:move_to_tag(tag)
end
--clean_tags(screen)
end,
{description = "Move to tag #"..i, group = "tag"})
)
end
-- Base awful.rules.rules
awful.rules.rules = {
{
rule = {},
properties = {
focus = awful.client.focus.filter,
raise = true
}
},
{
rule = {},
except_any = {name = {"Application Finder", "xfce4-panel"}, class = {"Xfdesktop"}},
properties = {
border_width = beautiful.border_width,
border_color = beautiful.border_normal,
keys = clientkeys
}
},
{
rule_any = {name = {"Application Finder"}}, -- Make sure we don't have a weird launcher
properties = {
focus = true,
floating = true,
ontop = true,
raise = true,
keys = nil
}
},
{
rule_any = {
class = {"Xfdesktop"},
name = {"xfce4-panel"}
},
properties = {
sticky = true,
keys = nil
}
},
}
root.keys(globalkeys)
-- Uncomment if not using xfce4-session
--awful.spawn("xfdesktop --sm-client-disable -D")
--awful.spawn("xfce4-panel --sm-client-disable -d")
-- External files that would make this file way too large
require("signals")~/.config/awesome/signals.lua
-- Idk how signals work so here's some code I copied from the default rc.lua
local awful = require("awful")
local beautiful = require("beautiful")
local gears = require("gears")
local wibox = require("wibox")
beautiful.init(gears.filesystem.get_configuration_dir() .. "theme/theme.lua")
-- Focus follows mouse
client.connect_signal("mouse::enter", function(c)
c:emit_signal("request::activate", "mouse_enter", {raise = false})
end)
-- Update border color when focused
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)Offline